{"version":3,"sources":["webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/_variables.ts","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/benchmarker/benchmarker-routing.module.ts","webpack:///./src/app/benchmarker/benchmarker.component.html","webpack:///./src/app/benchmarker/benchmarker.component.scss","webpack:///./src/app/benchmarker/benchmarker.component.ts","webpack:///./src/app/benchmarker/benchmarker.module.ts","webpack:///./src/app/benchmarker/landing/landing.component.html","webpack:///./src/app/benchmarker/landing/landing.component.scss","webpack:///./src/app/benchmarker/landing/landing.component.ts","webpack:///./src/app/benchmarker/tier-tree/tier-tree.component.html","webpack:///./src/app/benchmarker/tier-tree/tier-tree.component.scss","webpack:///./src/app/benchmarker/tier-tree/tier-tree.component.ts","webpack:///./src/app/collection/collection-routing.module.ts","webpack:///./src/app/collection/collection.component.html","webpack:///./src/app/collection/collection.component.scss","webpack:///./src/app/collection/collection.component.ts","webpack:///./src/app/collection/collection.module.ts","webpack:///./src/app/contact/contact-info.ts","webpack:///./src/app/contact/contact-routing.module.ts","webpack:///./src/app/contact/contact.component.html","webpack:///./src/app/contact/contact.component.scss","webpack:///./src/app/contact/contact.component.ts","webpack:///./src/app/contact/contact.module.ts","webpack:///./src/app/dashboard/dashboard-routing.module.ts","webpack:///./src/app/dashboard/dashboard.component.html","webpack:///./src/app/dashboard/dashboard.component.scss","webpack:///./src/app/dashboard/dashboard.component.ts","webpack:///./src/app/dashboard/dashboard.module.ts","webpack:///./src/app/data-collection/data-collection-routing.module.ts","webpack:///./src/app/data-collection/data-collection.component.html","webpack:///./src/app/data-collection/data-collection.component.scss","webpack:///./src/app/data-collection/data-collection.component.ts","webpack:///./src/app/data-collection/data-collection.module.ts","webpack:///./src/app/data-collection/dynamic-survey/dynamic-survey.component.html","webpack:///./src/app/data-collection/dynamic-survey/dynamic-survey.component.scss","webpack:///./src/app/data-collection/dynamic-survey/dynamic-survey.component.ts","webpack:///./src/app/data-validation/data-validation-routing.module.ts","webpack:///./src/app/data-validation/data-validation.component.html","webpack:///./src/app/data-validation/data-validation.component.scss","webpack:///./src/app/data-validation/data-validation.component.ts","webpack:///./src/app/data-validation/data-validation.module.ts","webpack:///./src/app/events/event-ics.ts","webpack:///./src/app/events/events-routing.module.ts","webpack:///./src/app/events/events.component.html","webpack:///./src/app/events/events.component.scss","webpack:///./src/app/events/events.component.ts","webpack:///./src/app/events/events.module.ts","webpack:///./src/app/forum/forum-routing.module.ts","webpack:///./src/app/forum/forum.component.html","webpack:///./src/app/forum/forum.component.scss","webpack:///./src/app/forum/forum.component.ts","webpack:///./src/app/forum/forum.module.ts","webpack:///./src/app/help/help-routing.module.ts","webpack:///./src/app/help/help-videos.ts","webpack:///./src/app/help/help.component.html","webpack:///./src/app/help/help.component.scss","webpack:///./src/app/help/help.component.ts","webpack:///./src/app/help/help.module.ts","webpack:///./src/app/home/home-routing.module.ts","webpack:///./src/app/home/home.component.html","webpack:///./src/app/home/home.component.scss","webpack:///./src/app/home/home.component.ts","webpack:///./src/app/home/home.module.ts","webpack:///./src/app/home/old-home/old-home-routing.module.ts","webpack:///./src/app/home/old-home/old-home.component.html","webpack:///./src/app/home/old-home/old-home.component.scss","webpack:///./src/app/home/old-home/old-home.component.ts","webpack:///./src/app/home/old-home/old-home.module.ts","webpack:///./src/app/home/old-home/old-project-table/old-project-table.component.html","webpack:///./src/app/home/old-home/old-project-table/old-project-table.component.scss","webpack:///./src/app/home/old-home/old-project-table/old-project-table.component.ts","webpack:///./src/app/home/project-table/project-table-card/project-table-card.component.html","webpack:///./src/app/home/project-table/project-table-card/project-table-card.component.scss","webpack:///./src/app/home/project-table/project-table-card/project-table-card.component.ts","webpack:///./src/app/home/project-table/project-table.component.html","webpack:///./src/app/home/project-table/project-table.component.scss","webpack:///./src/app/home/project-table/project-table.component.ts","webpack:///./src/app/home/sidebar/sidebar-section/sidebar-section.component.html","webpack:///./src/app/home/sidebar/sidebar-section/sidebar-section.component.scss","webpack:///./src/app/home/sidebar/sidebar-section/sidebar-section.component.ts","webpack:///./src/app/home/sidebar/sidebar.component.html","webpack:///./src/app/home/sidebar/sidebar.component.scss","webpack:///./src/app/home/sidebar/sidebar.component.ts","webpack:///./src/app/landing/landing-routing.module.ts","webpack:///./src/app/landing/landing.component.html","webpack:///./src/app/landing/landing.component.scss","webpack:///./src/app/landing/landing.component.ts","webpack:///./src/app/landing/landing.module.ts","webpack:///./src/app/login/login-errors/field-error-display.component.html","webpack:///./src/app/login/login-errors/field-error-display.component.scss","webpack:///./src/app/login/login-errors/field-error-display.component.ts","webpack:///./src/app/login/login-routing.module.ts","webpack:///./src/app/login/login.component.html","webpack:///./src/app/login/login.component.scss","webpack:///./src/app/login/login.component.ts","webpack:///./src/app/login/login.module.ts","webpack:///./src/app/membership/membership-routing.module.ts","webpack:///./src/app/membership/membership.component.html","webpack:///./src/app/membership/membership.component.scss","webpack:///./src/app/membership/membership.component.ts","webpack:///./src/app/membership/membership.module.ts","webpack:///./src/app/non-members-event-registration-form/non-members-event-registration-form-routing.module.ts","webpack:///./src/app/non-members-event-registration-form/non-members-event-registration-form.component.html","webpack:///./src/app/non-members-event-registration-form/non-members-event-registration-form.component.scss","webpack:///./src/app/non-members-event-registration-form/non-members-event-registration-form.component.ts","webpack:///./src/app/non-members-event-registration-form/non-members-event-registration-form.module.ts","webpack:///./src/app/not-found/not-found-routing.module.ts","webpack:///./src/app/not-found/not-found.component.html","webpack:///./src/app/not-found/not-found.component.scss","webpack:///./src/app/not-found/not-found.component.ts","webpack:///./src/app/not-found/not-found.module.ts","webpack:///./src/app/outputs-validation/outputs-validation-routing.module.ts","webpack:///./src/app/outputs-validation/outputs-validation.component.html","webpack:///./src/app/outputs-validation/outputs-validation.component.scss","webpack:///./src/app/outputs-validation/outputs-validation.component.ts","webpack:///./src/app/outputs-validation/outputs-validation.module.ts","webpack:///./src/app/outputs-validation/outputs-validation.service.ts","webpack:///./src/app/outputs-validation/outputs-validation.ts","webpack:///./src/app/outputs/active-admin/active-admin.component.html","webpack:///./src/app/outputs/active-admin/active-admin.component.scss","webpack:///./src/app/outputs/active-admin/active-admin.component.ts","webpack:///./src/app/outputs/edit-report/edit-report.component.html","webpack:///./src/app/outputs/edit-report/edit-report.component.scss","webpack:///./src/app/outputs/edit-report/edit-report.component.ts","webpack:///./src/app/outputs/edit-tier/edit-tier.component.html","webpack:///./src/app/outputs/edit-tier/edit-tier.component.scss","webpack:///./src/app/outputs/edit-tier/edit-tier.component.ts","webpack:///./src/app/outputs/outputs-display/outputs-display-options/outputs-display-options.component.html","webpack:///./src/app/outputs/outputs-display/outputs-display-options/outputs-display-options.component.scss","webpack:///./src/app/outputs/outputs-display/outputs-display-options/outputs-display-options.component.ts","webpack:///./src/app/outputs/outputs-display/outputs-display.component.html","webpack:///./src/app/outputs/outputs-display/outputs-display.component.scss","webpack:///./src/app/outputs/outputs-display/outputs-display.component.ts","webpack:///./src/app/outputs/outputs-routing.module.ts","webpack:///./src/app/outputs/outputs.component.html","webpack:///./src/app/outputs/outputs.component.scss","webpack:///./src/app/outputs/outputs.component.ts","webpack:///./src/app/outputs/outputs.module.ts","webpack:///./src/app/profile/profile-routing.module.ts","webpack:///./src/app/profile/profile.component.html","webpack:///./src/app/profile/profile.component.scss","webpack:///./src/app/profile/profile.component.ts","webpack:///./src/app/profile/profile.module.ts","webpack:///./src/app/project-detail/project-detail-routing.module.ts","webpack:///./src/app/project-detail/project-detail.component.html","webpack:///./src/app/project-detail/project-detail.component.scss","webpack:///./src/app/project-detail/project-detail.component.ts","webpack:///./src/app/project-detail/project-detail.module.ts","webpack:///./src/app/project-overview/project-overview-routing.module.ts","webpack:///./src/app/project-overview/project-overview.component.html","webpack:///./src/app/project-overview/project-overview.component.scss","webpack:///./src/app/project-overview/project-overview.component.ts","webpack:///./src/app/project-overview/project-overview.module.ts","webpack:///./src/app/project-registration/pr-address/pr-address.component.html","webpack:///./src/app/project-registration/pr-address/pr-address.component.scss","webpack:///./src/app/project-registration/pr-address/pr-address.component.ts","webpack:///./src/app/project-registration/pr-deputy-project-lead/pr-deputy-project-lead.component.html","webpack:///./src/app/project-registration/pr-deputy-project-lead/pr-deputy-project-lead.component.scss","webpack:///./src/app/project-registration/pr-deputy-project-lead/pr-deputy-project-lead.component.ts","webpack:///./src/app/project-registration/pr-project-lead/pr-project-lead.component.html","webpack:///./src/app/project-registration/pr-project-lead/pr-project-lead.component.scss","webpack:///./src/app/project-registration/pr-project-lead/pr-project-lead.component.ts","webpack:///./src/app/project-registration/pr-service/pr-service.component.html","webpack:///./src/app/project-registration/pr-service/pr-service.component.scss","webpack:///./src/app/project-registration/pr-service/pr-service.component.ts","webpack:///./src/app/project-registration/pr-submission-group/pr-submission-group.component.html","webpack:///./src/app/project-registration/pr-submission-group/pr-submission-group.component.scss","webpack:///./src/app/project-registration/pr-submission-group/pr-submission-group.component.ts","webpack:///./src/app/project-registration/pr-submission/pr-submission.component.html","webpack:///./src/app/project-registration/pr-submission/pr-submission.component.scss","webpack:///./src/app/project-registration/pr-submission/pr-submission.component.ts","webpack:///./src/app/project-registration/project-registration-routing.module.ts","webpack:///./src/app/project-registration/project-registration.component.html","webpack:///./src/app/project-registration/project-registration.component.scss","webpack:///./src/app/project-registration/project-registration.component.ts","webpack:///./src/app/project-registration/project-registration.module.ts","webpack:///./src/app/project/block/block.component.html","webpack:///./src/app/project/block/block.component.scss","webpack:///./src/app/project/block/block.component.ts","webpack:///./src/app/project/modal/modal.component.html","webpack:///./src/app/project/modal/modal.component.scss","webpack:///./src/app/project/modal/modal.component.ts","webpack:///./src/app/project/project-routing.module.ts","webpack:///./src/app/project/project.component.html","webpack:///./src/app/project/project.component.scss","webpack:///./src/app/project/project.component.ts","webpack:///./src/app/project/project.module.ts","webpack:///./src/app/project/section/section.component.html","webpack:///./src/app/project/section/section.component.scss","webpack:///./src/app/project/section/section.component.ts","webpack:///./src/app/request/request-routing.module.ts","webpack:///./src/app/request/request.component.html","webpack:///./src/app/request/request.component.scss","webpack:///./src/app/request/request.component.ts","webpack:///./src/app/request/request.module.ts","webpack:///./src/app/reset-password/reset-password-confirm/reset-password-confirm.component.html","webpack:///./src/app/reset-password/reset-password-confirm/reset-password-confirm.component.scss","webpack:///./src/app/reset-password/reset-password-confirm/reset-password-confirm.component.ts","webpack:///./src/app/reset-password/reset-password-routing.module.ts","webpack:///./src/app/reset-password/reset-password.component.html","webpack:///./src/app/reset-password/reset-password.component.scss","webpack:///./src/app/reset-password/reset-password.component.ts","webpack:///./src/app/reset-password/reset-password.module.ts","webpack:///./src/app/resources/resources-routing.module.ts","webpack:///./src/app/resources/resources.component.html","webpack:///./src/app/resources/resources.component.scss","webpack:///./src/app/resources/resources.component.ts","webpack:///./src/app/resources/resources.module.ts","webpack:///./src/app/shared/csv-download/csv-download.component.html","webpack:///./src/app/shared/csv-download/csv-download.component.scss","webpack:///./src/app/shared/csv-download/csv-download.component.ts","webpack:///./src/app/shared/csv-download/csv-download.module.ts","webpack:///./src/app/shared/document-panel/document-panel.component.html","webpack:///./src/app/shared/document-panel/document-panel.component.scss","webpack:///./src/app/shared/document-panel/document-panel.component.ts","webpack:///./src/app/shared/document-panel/document-panel.module.ts","webpack:///./src/app/shared/info-panel/info-panel.component.html","webpack:///./src/app/shared/info-panel/info-panel.component.scss","webpack:///./src/app/shared/info-panel/info-panel.component.ts","webpack:///./src/app/shared/info-panel/info-panel.module.ts","webpack:///./src/app/shared/popup-modal/popup-modal.component.html","webpack:///./src/app/shared/popup-modal/popup-modal.component.scss","webpack:///./src/app/shared/popup-modal/popup-modal.component.ts","webpack:///./src/app/shared/popup-modal/popup-modal.module.ts","webpack:///./src/app/user-administration/user-administration-routing.module.ts","webpack:///./src/app/user-administration/user-administration.component.html","webpack:///./src/app/user-administration/user-administration.component.scss","webpack:///./src/app/user-administration/user-administration.component.ts","webpack:///./src/app/user-administration/user-administration.module.ts","webpack:///./src/app/user-check/user-check-routing.module.ts","webpack:///./src/app/user-check/user-check.component.html","webpack:///./src/app/user-check/user-check.component.scss","webpack:///./src/app/user-check/user-check.component.ts","webpack:///./src/app/user-check/user-check.module.ts","webpack:///./src/app/utilities/classes/csv/csv-download.ts","webpack:///./src/app/utilities/classes/dynamic-info-panel/dynamic-info-panel.ts","webpack:///./src/app/utilities/classes/event/event.ts","webpack:///./src/app/utilities/classes/products/products.ts","webpack:///./src/app/utilities/classes/question/question-base.ts","webpack:///./src/app/utilities/classes/question/question-date.ts","webpack:///./src/app/utilities/classes/question/question-dropdown.ts","webpack:///./src/app/utilities/classes/question/question-narrative.ts","webpack:///./src/app/utilities/classes/question/question-number.ts","webpack:///./src/app/utilities/classes/question/question-popup.ts","webpack:///./src/app/utilities/classes/question/question-radio.ts","webpack:///./src/app/utilities/classes/question/question-textbox.ts","webpack:///./src/app/utilities/classes/question/question-time.ts","webpack:///./src/app/utilities/classes/user/user.ts","webpack:///./src/app/utilities/constants/constants.ts","webpack:///./src/app/utilities/directives/clickElsewhereDirective.ts","webpack:///./src/app/utilities/directives/only-number.ts","webpack:///./src/app/utilities/ics/data.service.ts","webpack:///./src/app/utilities/ics/format.service.ts","webpack:///./src/app/utilities/pipes/highlight.pipe.ts","webpack:///./src/app/utilities/pipes/org.search.pipe.ts","webpack:///./src/app/utilities/pipes/reverse.pipe.ts","webpack:///./src/app/utilities/pipes/safe-pipe.module.ts","webpack:///./src/app/utilities/pipes/safe.pipe.ts","webpack:///./src/app/utilities/pipes/search.pipe.ts","webpack:///./src/app/utilities/services/auth-guard.service.ts","webpack:///./src/app/utilities/services/auth.service.ts","webpack:///./src/app/utilities/services/data.service.ts","webpack:///./src/app/utilities/services/error.service.ts","webpack:///./src/app/utilities/services/google-analytics.service.ts","webpack:///./src/app/utilities/services/html.service.ts","webpack:///./src/app/utilities/services/ics.service.ts","webpack:///./src/app/utilities/services/ken.service.ts","webpack:///./src/app/utilities/services/loader.interceptor.ts","webpack:///./src/app/utilities/services/loader.service.ts","webpack:///./src/app/utilities/services/member.service.ts","webpack:///./src/app/utilities/services/nonMember.service.ts","webpack:///./src/app/utilities/services/question-control.service.ts","webpack:///./src/app/utilities/services/question.service.ts","webpack:///./src/app/utilities/services/validation.service.ts","webpack:///./src/app/utilities/services/window.service.ts","webpack:///./src/app/utilities/validation/email-matcher.ts","webpack:///./src/app/utilities/validation/forbidden-name.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\tif(!__webpack_require__.o(map, req)) {\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 map[req];\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\";","export class OutputsColor {\r\n // Only Outputs are using these global Colours\r\n default = ['rgba(198,43,44,1)', 'rgba(255,151,0,1)', 'rgba(157,38,176,1)', 'rgba(233,31,99,1)', 'rgba(13,181,124,1)', 'rgba(128,0,0,1)',\r\n 'rgba(215,145,0,1)', 'rgba(0,255,0,1)', 'rgba(0,128,0,1)', 'rgba(0,255,255,1)', 'rgba(32, 29, 224)', 'rgba(204, 93, 8)', 'rgba(242, 231, 27)',\r\n 'rgba(68, 18, 142)', 'rgba(200, 162, 214)', 'rgba(44,48,66)', 'rgba(160,32,107)', 'rgba(107, 82, 55)', 'rgba(65, 145, 117)', 'rgba(49, 117, 50)'];\r\n\r\n red: string = '#C62B2C'; \r\n green: string = '#01C953'; \r\n blue: string = '#0000D0'; \r\n grey: string = \"#D3D3D3\"; \r\n chartBlue: string = \"#7cb5ec\";\r\n\r\n pieColors = ['#005EB8', '#F75C03', '#8F2D56', '#D90368', '#F1C40F', '#A4036F', '#00A6FB', '#173753', '#FC440F', '#29335C', '#D00000', '#F18F01'];\r\n pieColorBlind = ['#E69F00', '#56B4E9', '#009E73', '#F0E442', '#0072B2', '#D55E00', '#CC79A7', '#671616', '#1A1667', '#A500BB', '#1100BB', '#67BB00'];\r\n colorBlindRed = '#DCBE27';\r\n colorBlindchartBlue = '#88CCEE';\r\n colorBlindGreen = '#117733'; \r\n }\r\n\r\n export class ProjectColor {\r\n // Only Projects are using these global Colours\r\n colors = [\r\n 'rgba(198,43,44,1)', 'rgba(255,151,0,1)', 'rgba(157,38,176,1)', 'rgba(233,31,99,1)', 'rgba(13,181,124,1)', 'rgba(128,0,0,1)',\r\n 'rgba(255,165,0,1)', 'rgba(0,255,0,1)', 'rgba(0,128,0,1)', 'rgba(0,255,255,1)'\r\n ]\r\n \r\n subColors = [\r\n {color: 'rgba(198,43,44,1)', subColors: ['rgba(198,43,44,1)','rgba(198,43,44,0.5)','rgba(198,43,44,0.1)'] },\r\n {color: 'rgba(255,151,0,1)', subColors: ['rgba(255,151,0,1)','rgba(255,151,0,0.5)','rgba(255,151,0,0.1)'] },\r\n {color: 'rgba(157,38,176,1)', subColors: ['rgba(157,38,176,1)','rgba(157,38,176,0.5)','rgba(157,38,176,0.1)'] },\r\n {color: 'rgba(233,31,99,1)', subColors: ['rgba(233,31,99,1)','rgba(233,31,99,0.5)','rgba(233,31,99,0.1)'] },\r\n {color: 'rgba(13,181,124,1)', subColors: ['rgba(13,181,124,1)','rgba(13,181,124,0.5)','rgba(13,181,124,0.1)'] },\r\n {color: 'rgba(128,0,0,1)', subColors: ['rgba(128,0,0,1)','rgba(128,0,0,0.5)','rgba(128,0,0,0.1)'] },\r\n {color: 'rgba(255,165,0,1)', subColors: ['rgba(255,165,0,1)','rgba(255,165,0,0.5)','rgba(255,165,0,0.1)'] },\r\n {color: 'rgba(0,255,0,1)', subColors: ['rgba(0,255,0,1)','rgba(0,255,0,0.5)','rgba(0,255,0,0.1)'] },\r\n {color: 'rgba(0,128,0,1)', subColors: ['rgba(0,128,0,1)','rgba(0,128,0,0.5)','rgba(0,128,0,0.1)'] },\r\n {color: 'rgba(0,255,255,1)', subColors: ['rgba(0,255,255,1)','rgba(0,255,255,0.5)','rgba(0,255,255,0.1)'] }\r\n ]\r\n \r\n setColour = ['#003087', '#005EB8', '#0072CE', '#41B6E6', '#00A9CE', '#231f20', '#425563', '#768692'];\r\n primaryBarColour = '#003087';\r\n secondaryBarColour = '#005EB8';\r\n nationalMeanColour = '#009639';\r\n nationalMedianColour = '#78BE20';\r\n colourCollection = ['#003087', '#005EB8', '#0072CE', '#41B6E6', '#00A9CE', '#231f20', '#425563', '#768692'];\r\n colourBlindCollection = ['#0072B2', '#009E73', '#E69F00', '#CC79A7', '#D55E00', '#F0E442', '#56B4E9', '#768692']; \r\n }","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { NotFoundComponent } from './not-found/not-found.component';\r\n\r\nconst appRoutes: Routes = [\r\n { path: '', redirectTo: '/home', pathMatch: 'full' },\r\n { path: '**', component: NotFoundComponent }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forRoot(appRoutes, { useHash: Boolean(history.pushState) === false })\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class AppRoutingModule {}","module.exports = \"
\\r\\n

\\r\\n Your browser is not fully supported.\\r\\n

\\r\\n Click here for more information and links to alternative browsers.\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n You don't have any notifications.\\r\\n
\\r\\n
\\r\\n Mark all as read\\r\\n
\\r\\n
\\r\\n

\\r\\n {{ n.typeTitle }}\\r\\n

\\r\\n

\\r\\n {{ n.typeBody }}\\r\\n

\\r\\n \\r\\n Go to {{ n.descriptor }}\\r\\n \\r\\n \\r\\n Mark as {{ n.dismissedDt ? \\\"unread\\\" : \\\"read\\\" }}\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"NHSBN\\r\\n

Member Programme Launch Event

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

\\r\\n Register for our 2025 Member Programme Launch event and learn how to maximise your membership!
\\r\\n Register here.\\r\\n

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

Annual Members Survey

\\r\\n

\\r\\n

Spare 5 minutes to enhance your membership experience!

\\r\\n

\\r\\n \\r\\n Complete our annual members survey now!\\r\\n \\r\\n

\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\"","module.exports = \".navbar {\\n position: relative;\\n padding-top: 5px;\\n padding-bottom: 3px;\\n border: none;\\n min-height: 60px;\\n margin-bottom: 0; }\\n\\n.navbar .active {\\n color: #005EB8; }\\n\\n.navbar li {\\n padding-top: 2px; }\\n\\n.navbar-brand img {\\n height: 50px; }\\n\\n.navbar-brand {\\n padding: 5px 10px; }\\n\\n.navbar,\\n.navbar-btn,\\n.dropdown-item {\\n font-size: 17px; }\\n\\n.navbar-btn {\\n margin-left: 0.5em; }\\n\\n.navbar-collapse {\\n border-top: none; }\\n\\n.navbar-default {\\n background: white; }\\n\\n#basic-link:focus,\\n#basic-link:hover,\\n#basic-link:active,\\n#basic-link:visited {\\n background-color: white; }\\n\\n.dropdown-menu {\\n position: absolute;\\n z-index: 10;\\n background: white;\\n font-size: 15px;\\n border: 1px solid #ccc;\\n border-radius: 5px;\\n margin-top: -1px;\\n max-height: 200px;\\n overflow-y: auto;\\n margin-top: 0.5em; }\\n\\nStrong {\\n color: #005EB8; }\\n\\n.caret {\\n color: #005EB8; }\\n\\n.dropdown-menu:empty {\\n border: none; }\\n\\n.dropdown-menu li {\\n padding: 2px 7px; }\\n\\n.dropdown-menu li:hover {\\n background-color: #ebf5ff;\\n cursor: pointer; }\\n\\n.dropdown-menu li:hover a:hover {\\n background-color: #ebf5ff; }\\n\\nhr {\\n margin-top: 3px;\\n margin-bottom: 3px;\\n border: 0;\\n border-top: 1px solid #eeeeee; }\\n\\n.logout {\\n font-weight: 600;\\n color: #005EB8 !important; }\\n\\n.logout:hover {\\n cursor: pointer; }\\n\\n.colored-border {\\n height: 5px;\\n margin-bottom: 2em;\\n background: #005eb8;\\n /* For browsers that do not support gradients */\\n /* For Safari 5.1 to 6.0 */\\n /* For Opera 11.1 to 12.0 */\\n /* For Firefox 3.6 to 15 */\\n background: linear-gradient(to right, #e94910, #fcc000, #0083e7, #dedc00);\\n /* Standard syntax */ }\\n\\n#detectIE {\\n position: fixed;\\n bottom: 10px;\\n width: 60%;\\n text-align: center;\\n margin-left: 20%;\\n font-size: 17px; }\\n\\n#detectIE a {\\n color: #dc3545; }\\n\\n@media screen and (min-width: 768px) {\\n .navbar {\\n border-radius: 0; } }\\n\\n@media screen and (max-width: 768px) {\\n #detectIE {\\n width: 100%;\\n margin: 0;\\n bottom: 0; }\\n .dropdown-menu li a.dropdown-item {\\n color: black; } }\\n\\n.support {\\n position: fixed;\\n bottom: 1.5em;\\n left: 1.5em;\\n background-color: #fdbc30;\\n padding: 1em;\\n z-index: 1000;\\n width: 25%;\\n border-radius: 5px; }\\n\\n.support h4 {\\n font-weight: 600; }\\n\\n.support a,\\n .support h4 {\\n color: rgba(0, 0, 0, 0.75);\\n margin: 0;\\n padding: 5px; }\\n\\n.notifications-nav:hover {\\n cursor: pointer; }\\n\\n.notifications-badge {\\n background-color: #da291c; }\\n\\n#notifications {\\n position: absolute;\\n right: 0;\\n margin: 0 1em;\\n top: 4.25em;\\n background-color: #f2f2f2;\\n padding: 0.5em;\\n border-radius: 4px;\\n border: 1px solid #ccc;\\n z-index: 10000;\\n box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);\\n max-height: 500px;\\n max-width: 550px;\\n overflow-y: scroll; }\\n\\n.no-notifications {\\n width: 500px;\\n padding: 1em;\\n text-align: center;\\n color: #768692; }\\n\\n.notification {\\n background-color: white;\\n border: 1px solid #ccc;\\n border-radius: 4px;\\n padding: 1em;\\n margin: 0.5em; }\\n\\n.notification.-read {\\n background-color: transparent; }\\n\\n.notification:hover {\\n border-color: #005EB8;\\n cursor: pointer; }\\n\\n.notification.-read:hover {\\n border-color: #aaa; }\\n\\n.notification p {\\n margin: 0 0 0.25em 0; }\\n\\n.notification span {\\n color: #005EB8;\\n margin-right: 1em; }\\n\\n.notification.-read span {\\n color: #ccc; }\\n\\n.notification span:hover {\\n color: #00376c;\\n cursor: pointer; }\\n\\n.notification p:first-of-type {\\n color: #005EB8;\\n margin-bottom: 0.5em;\\n font-weight: 600; }\\n\\n.notification.-read p {\\n color: #ccc; }\\n\\n.notification i {\\n margin-right: 0.5em; }\\n\\n.notification-actions {\\n margin-left: 0.5em;\\n margin-bottom: 0.75em;\\n margin-top: 0.5em; }\\n\\n.notification-actions span {\\n color: #005EB8; }\\n\\n.notification-actions span:hover {\\n color: #00376c;\\n cursor: pointer; }\\n\\n@media print {\\n .no-print {\\n display: none; } }\\n\\n.custom-modal {\\n position: fixed;\\n left: 50%;\\n -webkit-transform: translate(-50%, 0);\\n transform: translate(-50%, 0);\\n top: 5vh;\\n padding: 1em 1em 1em 1em;\\n border-radius: 4px;\\n box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1), 0 2px 2px rgba(0, 0, 0, 0.1);\\n z-index: 10000;\\n background-color: #005EB8;\\n -ms-overflow-style: none;\\n scrollbar-width: none;\\n cursor: auto;\\n color: white; }\\n\\n.custom-modal h3 {\\n color: white; }\\n\\n.fa-lightbulb-exclamation {\\n margin-left: 15px;\\n float: right;\\n color: white;\\n position: relative;\\n top: -25px; }\\n\\n.popup {\\n position: fixed;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.5);\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n z-index: 9999;\\n opacity: 0;\\n transition: opacity 0.3s ease;\\n opacity: 1; }\\n\\n.popup-content {\\n background-color: #f8f9fa;\\n padding: 20px;\\n border-radius: 5px;\\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\\n position: relative;\\n width: 50%;\\n max-width: 600px; }\\n\\n.popup-header {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n border-bottom: 1px solid #ddd;\\n padding-bottom: 10px;\\n margin-bottom: 5px; }\\n\\n.popup-header img {\\n height: 40px;\\n margin-right: 10px; }\\n\\n.popup-header h2 {\\n flex-grow: 1;\\n margin: 0;\\n font-size: 1.5em; }\\n\\n.top-align {\\n vertical-align: top; }\\n\\n.close-btn {\\n font-size: 30px;\\n cursor: pointer;\\n color: #aaa;\\n transition: color 0.3s ease; }\\n\\n.close-btn:hover {\\n color: #000; }\\n\\n.close-btn:before {\\n content: '\\\\00d7';\\n font-size: 30px; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXGFwcFxcYXBwLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcX3ZhcmlhYmxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBO0VBQ0Usa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsWUFBWTtFQUNaLGdCQUFnQjtFQUNoQixnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxjQ1ZnQixFQUFBOztBRGFsQjtFQUNFLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLFlBQVksRUFBQTs7QUFHZDtFQUNFLGlCQUFpQixFQUFBOztBQUduQjs7O0VBR0UsZUFBZSxFQUFBOztBQUdqQjtFQUNFLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLGlCQUFpQixFQUFBOztBQUduQjs7OztFQUlFLHVCQUF1QixFQUFBOztBQUd6QjtFQUNFLGtCQUFrQjtFQUNsQixXQUFXO0VBQ1gsaUJBQWlCO0VBQ2pCLGVBQWU7RUFDZixzQkFBc0I7RUFDdEIsa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQixpQkFBaUI7RUFDakIsZ0JBQWdCO0VBQ2hCLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGNDaEVnQixFQUFBOztBRG1FbEI7RUFDRSxjQ3BFZ0IsRUFBQTs7QUR1RWxCO0VBQ0UsWUFBWSxFQUFBOztBQUdkO0VBQ0UsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0UseUJBQXlCO0VBQ3pCLGVBQWUsRUFBQTs7QUFGakI7SUFJSSx5QkFBeUIsRUFBQTs7QUFJN0I7RUFDRSxlQUFlO0VBQ2Ysa0JBQWtCO0VBQ2xCLFNBQVM7RUFDVCw2QkFBNkIsRUFBQTs7QUFHL0I7RUFDRSxnQkFBZ0I7RUFDaEIseUJBQTJCLEVBQUE7O0FBRzdCO0VBQ0UsZUFBZSxF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QkFBbUI7RUFDbkIsOEJBQThCO0VBQzlCLDZCQUE2QjtFQUM3QixvQkFBb0I7RUFDcEIsa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsWUFBWTtFQUNaLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLFlBQVk7RUFDWixTQUFTO0VBQ1QsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0UsbUJBQW1CLEVBQUE7O0FBR3JCO0VBQ0UsZUFBZTtFQUNmLGVBQWU7RUFDZixXQUFXO0VBQ1gsMkJBQTJCLEVBQUE7O0FBSjdCO0lBT0ksV0FBVyxFQUFBOztBQVBmO0lBV0ksZ0JBQWdCO0lBQ2hCLGVBQWUsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgXCIuLi92YXJpYWJsZXNcIjtcclxuXHJcbi8vIE5hdmJhclxyXG4ubmF2YmFyIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgcGFkZGluZy10b3A6IDVweDtcclxuICBwYWRkaW5nLWJvdHRvbTogM3B4O1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBtaW4taGVpZ2h0OiA2MHB4O1xyXG4gIG1hcmdpbi1ib3R0b206IDA7XHJcbn1cclxuXHJcbi5uYXZiYXIgLmFjdGl2ZSB7XHJcbiAgY29sb3I6ICRuaHMtYmx1ZTtcclxufVxyXG5cclxuLm5hdmJhciBsaSB7XHJcbiAgcGFkZGluZy10b3A6IDJweDtcclxufVxyXG5cclxuLm5hdmJhci1icmFuZCBpbWcge1xyXG4gIGhlaWdodDogNTBweDtcclxufVxyXG5cclxuLm5hdmJhci1icmFuZCB7XHJcbiAgcGFkZGluZzogNXB4IDEwcHg7XHJcbn1cclxuXHJcbi5uYXZiYXIsXHJcbi5uYXZiYXItYnRuLFxyXG4uZHJvcGRvd24taXRlbSB7XHJcbiAgZm9udC1zaXplOiAxN3B4O1xyXG59XHJcblxyXG4ubmF2YmFyLWJ0biB7XHJcbiAgbWFyZ2luLWxlZnQ6IDAuNWVtO1xyXG59XHJcblxyXG4ubmF2YmFyLWNvbGxhcHNlIHtcclxuICBib3JkZXItdG9wOiBub25lO1xyXG59XHJcblxyXG4ubmF2YmFyLWRlZmF1bHQge1xyXG4gIGJhY2tncm91bmQ6IHdoaXRlO1xyXG59XHJcblxyXG4jYmFzaWMtbGluazpmb2N1cyxcclxuI2Jhc2ljLWxpbms6aG92ZXIsXHJcbiNiYXNpYy1saW5rOmFjdGl2ZSxcclxuI2Jhc2ljLWxpbms6dmlzaXRlZCB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbi5kcm9wZG93bi1tZW51IHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgei1pbmRleDogMTA7XHJcbiAgYmFja2dyb3VuZDogd2hpdGU7XHJcbiAgZm9udC1zaXplOiAxNXB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIG1hcmdpbi10b3A6IC0xcHg7XHJcbiAgbWF4LWhlaWdodDogMjAwcHg7XHJcbiAgb3ZlcmZsb3cteTogYXV0bztcclxuICBtYXJnaW4tdG9wOiAwLjVlbTtcclxufVxyXG5cclxuU3Ryb25nIHtcclxuICBjb2xvcjogJG5ocy1ibHVlO1xyXG59XHJcblxyXG4uY2FyZXQge1xyXG4gIGNvbG9yOiAkbmhzLWJsdWU7XHJcbn1cclxuXHJcbi5kcm9wZG93bi1tZW51OmVtcHR5IHtcclxuICBib3JkZXI6IG5vbmU7XHJcbn1cclxuXHJcbi5kcm9wZG93bi1tZW51IGxpIHtcclxuICBwYWRkaW5nOiAycHggN3B4O1xyXG59XHJcblxyXG4uZHJvcGRvd24tbWVudSBsaTpob3ZlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ViZjVmZjtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgJiBhOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlYmY1ZmY7XHJcbiAgfVxyXG59XHJcblxyXG5ociB7XHJcbiAgbWFyZ2luLXRvcDogM3B4O1xyXG4gIG1hcmdpbi1ib3R0b206IDNweDtcclxuICBib3JkZXI6IDA7XHJcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlZWVlZWU7XHJcbn1cclxuXHJcbi5sb2dvdXQge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgY29sb3I6ICRuaHMtYmx1ZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ubG9nb3V0OmhvdmVyIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5jb2xvcmVkLWJvcmRlciB7XHJcbiAgaGVpZ2h0OiA1cHg7XHJcbiAgbWFyZ2luLWJvdHRvbTogMmVtO1xyXG4gIGJhY2tncm91bmQ6ICMwMDVlYjg7IC8qIEZvciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IGdyYWRpZW50cyAqL1xyXG4gIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KFxyXG4gICAgbGVmdCxcclxuICAgICNlOTQ5MTAsXHJcbiAgICAjZmNjMDAwLFxyXG4gICAgIzAwODNlNyxcclxuICAgICNkZWRjMDBcclxuICApOyAvKiBGb3IgU2FmYXJpIDUuMSB0byA2LjAgKi9cclxuICBiYWNrZ3JvdW5kOiAtby1saW5lYXItZ3JhZGllbnQoXHJcbiAgICByaWdodCxcclxuICAgICNlOTQ5MTAsXHJcbiAgICAjZmNjMDAwLFxyXG4gICAgIzAwODNlNyxcclxuICAgICNkZWRjMDBcclxuICApOyAvKiBGb3IgT3BlcmEgMTEuMSB0byAxMi4wICovXHJcbiAgYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQoXHJcbiAgICByaWdodCxcclxuICAgICNlOTQ5MTAsXHJcbiAgICAjZmNjMDAwLFxyXG4gICAgIzAwODNlNyxcclxuICAgICNkZWRjMDBcclxuICApOyAvKiBGb3IgRmlyZWZveCAzLjYgdG8gMTUgKi9cclxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXHJcbiAgICB0byByaWdodCxcclxuICAgICNlOTQ5MTAsXHJcbiAgICAjZmNjMDAwLFxyXG4gICAgIzAwODNlNyxcclxuICAgICNkZWRjMDBcclxuICApOyAvKiBTdGFuZGFyZCBzeW50YXggKi9cclxufVxyXG5cclxuI2RldGVjdElFIHtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgYm90dG9tOiAxMHB4O1xyXG4gIHdpZHRoOiA2MCU7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIG1hcmdpbi1sZWZ0OiAyMCU7XHJcbiAgZm9udC1zaXplOiAxN3B4O1xyXG59XHJcblxyXG4jZGV0ZWN0SUUgYSB7XHJcbiAgY29sb3I6ICNkYzM1NDU7XHJcbn1cclxuXHJcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XHJcbiAgLm5hdmJhciB7XHJcbiAgICBib3JkZXItcmFkaXVzOiAwO1xyXG4gIH1cclxufVxyXG5cclxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcclxuICAjZGV0ZWN0SUUge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBib3R0b206IDA7XHJcbiAgfVxyXG4gIC5kcm9wZG93bi1tZW51IGxpIGEuZHJvcGRvd24taXRlbSB7XHJcbiAgICBjb2xvcjogYmxhY2s7XHJcbiAgfVxyXG59XHJcblxyXG4uc3VwcG9ydCB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJvdHRvbTogMS41ZW07XHJcbiAgbGVmdDogMS41ZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZkYmMzMDtcclxuICBwYWRkaW5nOiAxZW07XHJcbiAgei1pbmRleDogMTAwMDtcclxuICB3aWR0aDogMjUlO1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICAmIGg0IHtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgfVxyXG4gICYgYSxcclxuICBoNCB7XHJcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjc1KTtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBhZGRpbmc6IDVweDtcclxuICB9XHJcbn1cclxuXHJcbi8vIE5vdGlmaWNhdGlvbnNcclxuXHJcbi5ub3RpZmljYXRpb25zLW5hdjpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4ubm90aWZpY2F0aW9ucy1iYWRnZSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RhMjkxYztcclxufVxyXG5cclxuI25vdGlmaWNhdGlvbnMge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICByaWdodDogMDtcclxuICBtYXJnaW46IDAgMWVtO1xyXG4gIHRvcDogNC4yNWVtO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7XHJcbiAgcGFkZGluZzogMC41ZW07XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgei1pbmRleDogMTAwMDA7XHJcbiAgYm94LXNoYWRvdzogMCAxNHB4IDI4cHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgMCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjIyKTtcclxuICBtYXgtaGVpZ2h0OiA1MDBweDtcclxuICBtYXgtd2lkdGg6IDU1MHB4O1xyXG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcclxufVxyXG5cclxuLm5vLW5vdGlmaWNhdGlvbnMge1xyXG4gIHdpZHRoOiA1MDBweDtcclxuICBwYWRkaW5nOiAxZW07XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIGNvbG9yOiAkbmhzLWdyZXk7XHJcbn1cclxuXHJcbi5ub3RpZmljYXRpb24ge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gIHBhZGRpbmc6IDFlbTtcclxuICBtYXJnaW46IDAuNWVtO1xyXG59XHJcblxyXG4ubm90aWZpY2F0aW9uLi1yZWFkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxufVxyXG5cclxuLm5vdGlmaWNhdGlvbjpob3ZlciB7XHJcbiAgYm9yZGVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4ubm90aWZpY2F0aW9uLi1yZWFkOmhvdmVyIHtcclxuICBib3JkZXItY29sb3I6ICNhYWE7XHJcbn1cclxuXHJcbi5ub3RpZmljYXRpb24gcCB7XHJcbiAgbWFyZ2luOiAwIDAgMC4yNWVtIDA7XHJcbn1cclxuXHJcbi5ub3RpZmljYXRpb24gc3BhbiB7XHJcbiAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICBtYXJnaW4tcmlnaHQ6IDFlbTtcclxufVxyXG5cclxuLm5vdGlmaWNhdGlvbi4tcmVhZCBzcGFuIHtcclxuICBjb2xvcjogI2NjYztcclxufVxyXG5cclxuLm5vdGlmaWNhdGlvbiBzcGFuOmhvdmVyIHtcclxuICBjb2xvcjogIzAwMzc2YztcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5ub3RpZmljYXRpb24gcDpmaXJzdC1vZi10eXBlIHtcclxuICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi5ub3RpZmljYXRpb24uLXJlYWQgcCB7XHJcbiAgY29sb3I6ICNjY2M7XHJcbn1cclxuXHJcbi5ub3RpZmljYXRpb24gaSB7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufVxyXG5cclxuLm5vdGlmaWNhdGlvbi1hY3Rpb25zIHtcclxuICBtYXJnaW4tbGVmdDogMC41ZW07XHJcbiAgbWFyZ2luLWJvdHRvbTogMC43NWVtO1xyXG4gIG1hcmdpbi10b3A6IDAuNWVtO1xyXG59XHJcblxyXG4ubm90aWZpY2F0aW9uLWFjdGlvbnMgc3BhbiB7XHJcbiAgY29sb3I6ICRuaHMtYmx1ZTtcclxufVxyXG5cclxuLm5vdGlmaWNhdGlvbi1hY3Rpb25zIHNwYW46aG92ZXIge1xyXG4gIGNvbG9yOiAjMDAzNzZjO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLy8gUHJpbnQgc3R5bGVzXHJcblxyXG5AbWVkaWEgcHJpbnQge1xyXG4gIC5uby1wcmludCB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxufVxyXG5cclxuLy8gdGVtcCBwb3AtdXAgbW9kYWxcclxuLmN1c3RvbS1tb2RhbCB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGxlZnQ6IDUwJTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAwKTtcclxuICB0b3A6IDV2aDtcclxuICBwYWRkaW5nOiAxZW0gMWVtIDFlbSAxZW07XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gIGJveC1zaGFkb3c6IDAgMnB4IDJweCByZ2JhKDAsMCwwLDAuMSksIDAgMnB4IDJweCByZ2JhKDAsMCwwLDAuMSk7XHJcbiAgei1pbmRleDogMTAwMDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNUVCODtcclxuICAtbXMtb3ZlcmZsb3ctc3R5bGU6IG5vbmU7XHJcbiAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xyXG4gIGN1cnNvcjogYXV0bztcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgJiBoMyB7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgfVxyXG59XHJcblxyXG4uZmEtbGlnaHRidWxiLWV4Y2xhbWF0aW9uIHtcclxuICBtYXJnaW4tbGVmdDogMTVweDtcclxuICBmbG9hdDogcmlnaHQ7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB0b3A6IC0yNXB4O1xyXG59XHJcblxyXG4ucG9wdXAge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICB6LWluZGV4OiA5OTk5O1xyXG4gIG9wYWNpdHk6IDA7XHJcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7XHJcbiAgb3BhY2l0eTogMTtcclxufVxyXG5cclxuLnBvcHVwLWNvbnRlbnQge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XHJcbiAgcGFkZGluZzogMjBweDtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgYm94LXNoYWRvdzogMCAycHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHdpZHRoOiA1MCU7XHJcbiAgbWF4LXdpZHRoOiA2MDBweDtcclxufVxyXG5cclxuLnBvcHVwLWhlYWRlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcclxuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcclxuICBtYXJnaW4tYm90dG9tOiA1cHg7XHJcbn1cclxuXHJcbi5wb3B1cC1oZWFkZXIgaW1nIHtcclxuICBoZWlnaHQ6IDQwcHg7XHJcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG59XHJcblxyXG4ucG9wdXAtaGVhZGVyIGgyIHtcclxuICBmbGV4LWdyb3c6IDE7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGZvbnQtc2l6ZTogMS41ZW07XHJcbn1cclxuXHJcbi50b3AtYWxpZ24ge1xyXG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XHJcbn1cclxuXHJcbi5jbG9zZS1idG4ge1xyXG4gIGZvbnQtc2l6ZTogMzBweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgY29sb3I6ICNhYWE7XHJcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4zcyBlYXNlO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIGNvbG9yOiAjMDAwO1xyXG4gIH1cclxuXHJcbiAgJjpiZWZvcmUge1xyXG4gICAgY29udGVudDogJ1xcMDBkNyc7XHJcbiAgICBmb250LXNpemU6IDMwcHg7XHJcbiAgfVxyXG59IiwiJGljb24tZm9udC1wYXRoOiAnLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC1zYXNzL2Fzc2V0cy9mb250cy9ib290c3RyYXAvJztcclxuXHJcbi8vIEN1c3RvbSB2YXJpYWJsZXNcclxuJG5ocy1ibHVlOiAjMDA1RUI4O1xyXG4kbmhzLWRhcmstYmx1ZTogIzAwNDQ4NTtcclxuJG5ocy1ncmV5OiAjNzY4NjkyO1xyXG4kbmhzLWZhZGVkLWJsdWU6ICNGMkY3RkI7XHJcbiRhY3RpdmUtYWRtaW4teWVsbG93OiAjRkRCQzMwO1xyXG4kYWN0aXZlLWFkbWluLWRhcmt5ZWxsb3c6ICNFNTk5MDA7XHJcbiBcclxuLy8gQm9vdHN0cmFwIHZhcmlhYmxlc1xyXG4kdGV4dC1jb2xvcjogYmxhY2s7XHJcbiRib3JkZXItcmFkaXVzLWJhc2U6IDA7XHJcbiRib3JkZXItcmFkaXVzLXNtYWxsOiAwO1xyXG4kYnJhbmQtcHJpbWFyeTogJG5ocy1ibHVlO1xyXG4kYnJhbmQtc3VjY2VzczogZ3JlZW47XHJcbiRsaW5rLWhvdmVyLWRlY29yYXRpb246IG5vbmU7XHJcbiRmb250LXNpemUtaDQ6IDE3cHg7XHJcbiRuYXZiYXItbWFyZ2luLWJvdHRvbTogMDtcclxuJG5hdmJhci1oZWlnaHQ6IDYwcHg7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWNvbG9yOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1iZzogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtYm9yZGVyLWNvbG9yOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1pY29uLWJhci1iZzogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaG92ZXItYmc6IHdoaXRlO1xyXG5cclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1iZzogJG5ocy1ibHVlO1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWNvbG9yOiB3aGl0ZTtcclxuJG5hdi1waWxscy1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kdGFibGUtYmctaG92ZXI6ICRuaHMtZmFkZWQtYmx1ZTtcclxuJGhlYWRpbmdzLXNtYWxsLWNvbG9yOiAkbmhzLWdyZXk7Il19 */\"","import { ChangeDetectorRef, Component } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { NgcCookieConsentService } from \"ngx-cookieconsent\";\r\nimport { environment } from \"environments/environment\";\r\nimport { User } from \"./utilities/classes/user/user\";\r\n\r\nimport { AuthService } from \"./utilities/services/auth.service\";\r\nimport { MemberService } from \"./utilities/services/member.service\";\r\n\r\nimport { OrderByPipe } from \"ngx-pipes\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"app-root\",\r\n templateUrl: \"./app.component.html\",\r\n styleUrls: [\"./app.component.scss\"],\r\n})\r\nexport class AppComponent {\r\n date = new Date();\r\n isCollapsed = true;\r\n user: User;\r\n userName: String;\r\n isPopupVisible: boolean = true;\r\n\r\n // Notifications\r\n showNotifications: boolean = false;\r\n checkedNotifications: boolean = false;\r\n notifications = [];\r\n unreadNotifications = [];\r\n popupModalOpen: boolean = true;\r\n constructor(\r\n public auth: AuthService,\r\n public router: Router,\r\n public orderBy: OrderByPipe,\r\n private ccService: NgcCookieConsentService,\r\n private memberService: MemberService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.setModal();\r\n if (sessionStorage.getItem(\"eventPopup\") == \"N\") {\r\n this.isPopupVisible = false;\r\n } else {\r\n this.isPopupVisible = true;\r\n }\r\n }\r\n\r\n closePopup() {\r\n this.isPopupVisible = false;\r\n sessionStorage.setItem(\"eventPopup\", \"N\");\r\n }\r\n\r\n getUserDetails() {\r\n this.memberService.User().subscribe((u) => {\r\n this.user = u.data;\r\n this.userName = this.user.fullName;\r\n const fullName = this.userName.split(\" \");\r\n this.userName = fullName.shift() + \" \" + fullName.pop().charAt(0);\r\n this.userName.toUpperCase();\r\n });\r\n }\r\n\r\n getNotifications(event) {\r\n let landing = Object.keys(event).includes(\"statusLogin\"), // Proxy for /landing\r\n storedNotifications = sessionStorage.getItem(\"notifications\") || null;\r\n if (!landing && !storedNotifications) {\r\n this.memberService.getNotifications().subscribe(\r\n (r) => {\r\n this.notifications = this.formatNotifications(r.data.notifications);\r\n this.getUserDetails();\r\n },\r\n (e) => {\r\n console.log(e);\r\n }\r\n );\r\n } else if (storedNotifications) {\r\n var parsedNotifications = JSON.parse(storedNotifications);\r\n this.notifications = this.formatNotifications(parsedNotifications);\r\n this.getUserDetails();\r\n }\r\n }\r\n\r\n formatNotifications(data) {\r\n data.forEach((d) => {\r\n if (d.dismissedDt === null) {\r\n d.order = 1;\r\n } else {\r\n d.order = 2;\r\n }\r\n });\r\n data = this.orderBy.transform(data, [\"order\", \"notificationId\"]);\r\n this.unreadNotifications = data.filter((n) => n.dismissedDt === null);\r\n sessionStorage.setItem(\"notifications\", JSON.stringify(data));\r\n return data;\r\n }\r\n\r\n dismissNotification(notificationId, status) {\r\n let dismissed;\r\n if (status === null) {\r\n dismissed = { dismissed: \"Y\" };\r\n } else {\r\n dismissed = { dismissed: \"N\" };\r\n }\r\n this.memberService.dismissNotification(notificationId, dismissed).subscribe(\r\n (r) => {\r\n let dateTime = new Date(),\r\n notification = this.notifications.filter(\r\n (n) => n.notificationId === notificationId\r\n )[0];\r\n\r\n if (notification.dismissedDt) {\r\n notification.dismissedDt = null;\r\n } else {\r\n notification.dismissedDt = dateTime;\r\n }\r\n\r\n this.notifications = this.formatNotifications(this.notifications);\r\n },\r\n (e) => {\r\n console.log(e);\r\n }\r\n );\r\n }\r\n\r\n dismissAllNotifications() {\r\n this.unreadNotifications.forEach((n) => {\r\n this.dismissNotification(n.notificationId, n.dismissedDt);\r\n });\r\n }\r\n\r\n navNotification(linkUrl) {\r\n if (linkUrl) {\r\n this.router.navigate([linkUrl]);\r\n this.showNotifications = false;\r\n }\r\n }\r\n\r\n logout() {\r\n localStorage.removeItem(\"id_token\");\r\n sessionStorage.removeItem(\"savedTiers\");\r\n sessionStorage.removeItem(\"user\");\r\n sessionStorage.removeItem(\"notifications\");\r\n this.router.navigate([\"/landing\"]);\r\n }\r\n\r\n setModal() {\r\n if(sessionStorage.getItem(\"popup\") !== \"visible\") {\r\n this.popupModalOpen = false;\r\n } else {\r\n sessionStorage.setItem(\"popup\", \"visible\");\r\n this.popupModalOpen = true;\r\n }\r\n\r\n if(sessionStorage.getItem(\"popup\") == null){\r\n sessionStorage.setItem(\"popup\", \"visible\");\r\n this.popupModalOpen = true;\r\n }\r\n }\r\n\r\n closeModal() {\r\n sessionStorage.setItem(\"popup\", \"hidden\");\r\n this.popupModalOpen = false;\r\n }\r\n\r\n onHidden(): void { }\r\n\r\n onShown(): void { }\r\n\r\n isOpenChange(): void { }\r\n}\r\n","import { BrowserModule } from \"@angular/platform-browser\";\r\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from \"@angular/common/http\";\r\nimport { environment } from \"environments/environment\";\r\n\r\nimport { JwtModule } from \"@auth0/angular-jwt\";\r\nimport { ResponsiveModule } from \"ngx-responsive\";\r\nimport { NgPipesModule } from \"ngx-pipes\";\r\n\r\nimport { AppComponent } from \"./app.component\";\r\nimport { AppRoutingModule } from \"./app-routing.module\";\r\nimport { LandingModule } from \"./landing/landing.module\";\r\nimport { LoginModule } from \"./login/login.module\";\r\nimport { HomeModule } from \"./home/home.module\";\r\nimport { EventsModule } from \"./events/events.module\";\r\nimport { MembershipModule } from \"./membership/membership.module\";\r\nimport { ProjectOverviewModule } from \"./project-overview/project-overview.module\";\r\nimport { DataCollectionModule } from \"./data-collection/data-collection.module\";\r\nimport { OutputsModule } from \"./outputs/outputs.module\";\r\nimport { UserAdministrationModule } from \"./user-administration/user-administration.module\";\r\nimport { ProfileModule } from \"./profile/profile.module\";\r\nimport { ResetPasswordModule } from \"./reset-password/reset-password.module\";\r\nimport { ProjectRegistrationModule } from \"./project-registration/project-registration.module\";\r\nimport { HelpModule } from \"./help/help.module\";\r\nimport { DashboardModule } from \"./dashboard/dashboard.module\";\r\nimport { NotFoundModule } from \"./not-found/not-found.module\";\r\nimport { ForumModule } from \"./forum/forum.module\";\r\nimport { RequestModule } from \"./request/request.module\";\r\nimport { BenchmarkerModule } from \"./benchmarker/benchmarker.module\";\r\nimport { ContactModule } from \"./contact/contact.module\";\r\n\r\nimport { MemberService } from \"./utilities/services/member.service\";\r\nimport { AuthService } from \"./utilities/services/auth.service\";\r\nimport { AuthGuardService } from \"./utilities/services/auth-guard.service\";\r\nimport { ErrorService } from \"./utilities/services/error.service\";\r\nimport { HtmlService } from \"./utilities/services/html.service\";\r\nimport { DataService } from \"./utilities/services/data.service\";\r\nimport { SafePipeModule } from \"./utilities/pipes/safe-pipe.module\";\r\nimport { WINDOW_PROVIDERS } from \"./utilities/services/window.service\";\r\nimport { LoaderService } from \"./utilities/services/loader.service\";\r\nimport { LoaderInterceptor } from \"./utilities/services/loader.interceptor\";\r\nimport { NgcCookieConsentModule, NgcCookieConsentConfig } from \"ngx-cookieconsent\";\r\nimport { BsDropdownModule } from \"ngx-bootstrap/dropdown\";\r\nimport { CollapseModule } from \"ngx-bootstrap/collapse\";\r\nimport { Angular2CsvModule } from \"angular2-csv\";\r\nimport { CollectionModule } from \"./collection/collection.module\";\r\nimport { ProjectModule } from \"./project/project.module\";\r\nimport { CsvDownloadModule } from \"./shared/csv-download/csv-download.module\";\r\nimport { UserCheckModule } from \"./user-check/user-check.module\";\r\nimport { OutputsValidationModule } from \"./outputs-validation/outputs-validation.module\";\r\nimport { InfoPanelModule } from \"./shared/info-panel/info-panel.module\";\r\nimport { DataValidationModule } from \"./data-validation/data-validation.module\";\r\nimport { OldHomeModule } from \"./home/old-home/old-home.module\";\r\nimport { ResourcesModule } from \"./resources/resources.module\";\r\nimport { NonMemberService } from \"./utilities/services/nonMember.service\";\r\nimport { NonMembersEventRegistrationFormModule } from './non-members-event-registration-form/non-members-event-registration-form.module';\r\n\r\nconst cookieConfig: NgcCookieConsentConfig = {\r\n cookie: {\r\n domain: environment.domain,\r\n },\r\n position: \"bottom\",\r\n theme: \"classic\",\r\n palette: {\r\n popup: {\r\n background: \"#005eb8\",\r\n text: \"#ffffff\",\r\n link: \"#ffffff\",\r\n },\r\n button: {\r\n background: \"#005eb8\",\r\n text: \"#ffffff\",\r\n border: \"#ffffff\",\r\n },\r\n },\r\n type: \"info\",\r\n content: {\r\n message:\r\n \"We use cookies to help us improve, promote, and protect our services. By continuing to use the site, you agree to our\",\r\n dismiss: \"Continue\",\r\n deny: \"Block Cookies\",\r\n link: \"Privacy Policy\",\r\n href: \"https://www.nhsbenchmarking.nhs.uk/terms-and-privacy\",\r\n },\r\n};\r\n\r\nexport function tokenGetter() {\r\n return localStorage.getItem(\"id_token\");\r\n}\r\n\r\n@NgModule({\r\n declarations: [AppComponent],\r\n imports: [\r\n BrowserAnimationsModule,\r\n BrowserModule,\r\n ReactiveFormsModule,\r\n HttpClientModule,\r\n NgPipesModule,\r\n LandingModule,\r\n LoginModule,\r\n OldHomeModule,\r\n HomeModule,\r\n EventsModule,\r\n MembershipModule,\r\n ProjectOverviewModule,\r\n DataCollectionModule,\r\n OutputsModule,\r\n OutputsValidationModule,\r\n ProfileModule,\r\n UserAdministrationModule,\r\n ResetPasswordModule,\r\n ProjectRegistrationModule,\r\n HelpModule,\r\n ResourcesModule,\r\n UserCheckModule,\r\n DashboardModule,\r\n ForumModule,\r\n RequestModule,\r\n NotFoundModule,\r\n BenchmarkerModule,\r\n CollectionModule,\r\n ProjectModule,\r\n ContactModule,\r\n DataValidationModule,\r\n NonMembersEventRegistrationFormModule,\r\n JwtModule.forRoot({\r\n config: {\r\n tokenGetter: tokenGetter,\r\n },\r\n }),\r\n SafePipeModule,\r\n ResponsiveModule.forRoot(),\r\n AppRoutingModule,\r\n NgcCookieConsentModule.forRoot(cookieConfig),\r\n BsDropdownModule.forRoot(),\r\n CollapseModule.forRoot(),\r\n Angular2CsvModule,\r\n CsvDownloadModule,\r\n InfoPanelModule,\r\n ],\r\n providers: [\r\n MemberService,\r\n NonMemberService,\r\n AuthService,\r\n AuthGuardService,\r\n ErrorService,\r\n HtmlService,\r\n DataService,\r\n WINDOW_PROVIDERS,\r\n LoaderService,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: LoaderInterceptor,\r\n multi: true,\r\n },\r\n ],\r\n bootstrap: [AppComponent],\r\n})\r\nexport class AppModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { BenchmarkerComponent } from './benchmarker.component'\r\n\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service'\r\n\r\nconst benchmarkerRoutes: Routes = [\r\n { path: 'benchmarker', component: BenchmarkerComponent, canActivate: [AuthGuardService] },\r\n { path: 'ics', component: BenchmarkerComponent, canActivate: [AuthGuardService] },\r\n { path: 'national-indicators', component: BenchmarkerComponent, canActivate: [AuthGuardService] }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(benchmarkerRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class BenchmarkerRoutingModule { }","module.exports = \"
\\r\\n\\r\\n\\r\\n
\\r\\n Loading data. Please wait...\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
1\\\">\\r\\n
\\r\\n
\\r\\n \\r\\n {{ s.tierNameMap.join(' > ') }}\\r\\n
\\r\\n {{ s.searchName }}
\\r\\n \\r\\n Tags: {{ s.tierTags?.join(', ') }}\\r\\n \\r\\n
\\r\\n
\\r\\n SECONDARY\\r\\n
\\r\\n
\\r\\n
1 && (search | filterBy: ['searchName', 'reportId']: query).length == 0\\\">\\r\\n
\\r\\n There are no results for this search.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ t1.tierName }}
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n

Welcome to the National Indicators

\\r\\n

\\r\\n The National Indicators dataset is curated in collaboration with Network members and other stakeholders and draws from a range of publicly available data sources. The aim of the dataset is to support healthcare leaders in developing strategic planning and delivering the goals of the NHS Long Term Plan.\\r\\n

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Error: {{ error }}\\r\\n
Remove secondary metric and return to primary only.
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{ errorInline }} Click here to dismiss.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n This indicator has been retired and will no longer receive updates to the data.\\r\\n

\\r\\n

\\r\\n {{ primary_details_saved ? primary_details_saved.reportName : details.reportName }}\\r\\n
vs. {{ secondaryDetails.reportName }}
\\r\\n

\\r\\n

{{ independentCategory.categoryName }}

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n {{ s.tierName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{ d.periodName }}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n {{ d.periodName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n {{ categoryTypes[0] }}\\r\\n

\\r\\n
\\r\\n \\r\\n {{ c.categoryName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
Current Default
\\r\\n
\\r\\n {{ preferences.selected_default.organisationName }}\\r\\n
\\r\\n
\\r\\n Click here to change your default organisation and custom group.\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n Your current default organisation is not in this view\\r\\n
\\r\\n
\\r\\n Click here to select a different default organisation.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Select a Default\\r\\n
\\r\\n
\\r\\n Click here to select a default organisation. This can be any organisation on the current indicator. By selecting a default organisation, you will be able to see Nearest Neighbour and regional groups.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n Nearest Neighbours\\r\\n
\\r\\n
\\r\\n Highlight the top ten organisations that are statistically similar to your selected organisation.\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n Default ICB\\r\\n
\\r\\n
\\r\\n Highlight the organisations that fall within the same ICB area as the default organisation.\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n Region\\r\\n
\\r\\n
\\r\\n Highlight the organisations within the same NHS England region are your selected organisation.\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n Custom Group\\r\\n
\\r\\n
\\r\\n Highlight the organisations within your custom group for this organisation type\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Create a Custom Group\\r\\n
\\r\\n
\\r\\n Click here to select organisations on the current indicator to compare against the national mean.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Filter\\r\\n
\\r\\n
\\r\\n Update the view to only show the highlighted organisations.\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Stack by {{ categoryTypes[0] }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
1415 && !secondaryDetails\\\" class=\\\"display-inline position-relative mr-2\\\">\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n {{ bookmarked }}\\r\\n {{ bookmarked }}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Bar Chart (.png)\\r\\n
\\r\\n
\\r\\n Time Series Chart (.png)\\r\\n
\\r\\n
\\r\\n Scatter Chart (.png)\\r\\n
\\r\\n
\\r\\n Stacked Column Chart (.png)\\r\\n
\\r\\n
\\r\\n Data Table (.csv)\\r\\n
\\r\\n
\\r\\n Highest/Lowest Table (.csv)\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n R2 = {{ r2Value | number: '1.0-3' }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Primary\\r\\n
\\r\\n {{ primary_details_saved.organisationType }} • {{ primary_data_saved[0].periodName }}\\r\\n
\\r\\n
{{ primary_details_saved.reportName }}
\\r\\n
\\r\\n
\\r\\n \\r\\n Show at {{ details.aggregation ? primary_details_saved.organisationType : 'ICB' }} level\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Secondary\\r\\n
\\r\\n {{ secondaryDetails.organisationType }} • {{ secondaryData[0].periodName }}\\r\\n
\\r\\n
{{ secondaryDetails.reportName }}
\\r\\n
\\r\\n
\\r\\n \\r\\n Show at {{ details.aggregation ? secondaryDetails.organisationType : 'ICB' }} level\\r\\n \\r\\n \\r\\n Remove Secondary\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
×
\\r\\n
Results Stacked by {{ selectedSeries.categoryTypeName }}
\\r\\n
\\r\\n
\\r\\n

National average

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

Selected organisations

\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n {{ hover.organisationName }}
\\r\\n {{ hover.submissionResult | number: '1.2-2' }}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n No map for this indicator ({{ details.mapUrl }})\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Flagged Aggregations: {{ selected.flaggedAggregations.length }} of the ICB areas on this view do not include all constituent areas because of missing data. Click here for more details.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n You are now viewing the data at an ICB level. Data for this period has been aggregated to the current, 2022/23 ICB areas. Click any area on the chart or map to see its constituent areas.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Data for this period has been sourced at an ICB level.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n

Time Series

\\r\\n \\r\\n
\\r\\n
\\r\\n National Mean\\r\\n Organisation Value\\r\\n Group Mean\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n National means are not aggregated. {{ details.organisationType }} level mean values shown above.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n

Averages Table

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Period\\r\\n National Mean (%)\\r\\n \\r\\n Organisation Value (%)\\r\\n \\r\\n Group Mean (%)\\r\\n
{{ s.periodName }}{{ s.mean | number: '1.2-2' }}{{ s.defaultResult | number: '1.2-2' }}{{ s.groupMean | number: '1.2-2' }}
\\r\\n \\r\\n \\r\\n \\r\\n

Highest and Lowest Values for {{ period.periodName }}

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
AreaHighest ValueLowest Value
National\\r\\n {{ highestLowest.national.highest.organisationOnsCode }}:\\r\\n {{ highestLowest.national.highest.organisationName }}
\\r\\n Value: {{ highestLowest.national.highest.submissionResult | number: '1.2-2' }}\\r\\n
\\r\\n {{ highestLowest.national.lowest.organisationOnsCode }}:\\r\\n {{ highestLowest.national.lowest.organisationName }}
\\r\\n Value: {{ highestLowest.national.lowest.submissionResult | number: '1.2-2' }}\\r\\n
Group\\r\\n {{ highestLowestGroup.highest.organisationOnsCode }}:\\r\\n {{ highestLowestGroup.highest.organisationName }}
\\r\\n Value: {{ highestLowestGroup.highest.submissionResult | number: '1.2-2' }}\\r\\n
\\r\\n {{ highestLowestGroup.lowest.organisationOnsCode }}:\\r\\n {{ highestLowestGroup.lowest.organisationName }}
\\r\\n Value: {{ highestLowestGroup.lowest.submissionResult | number: '1.2-2' }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n

Data Table

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Code\\r\\n \\r\\n \\r\\n Name\\r\\n \\r\\n \\r\\n Value (%)\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
{{ p.organisationOnsCode }}\\r\\n {{ p.organisationName }}\\r\\n \\r\\n \\r\\n {{ p.submissionResult | number: '1.2-2' }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n

Preferences

\\r\\n

\\r\\n Set your default organisation using the selector below. This will determine the Nearest Neighbours and Region organisations on highlighting.\\r\\n

\\r\\n\\r\\n
\\r\\n \\r\\n Clear Custom Group\\r\\n \\r\\n \\r\\n Remove Default\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ p.organisationName }} ({{ p.organisationOnsCode }})\\r\\n
\\r\\n
\\r\\n \\r\\n Current Default\\r\\n \\r\\n \\r\\n Set as Default\\r\\n \\r\\n \\r\\n Remove from Custom Group\\r\\n \\r\\n \\r\\n Add to Custom Group\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n

Flagged Aggregations

\\r\\n

\\r\\n The following {{ selected.flaggedAggregations.length }} ICB areas do not include all constituent areas because of missing data.\\r\\n

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
CodeNameValue
{{ c.organisationOnsCode }}{{ c.organisationName }}{{ c.submissionResult | number: '1.2-2' }}
\\r\\n
\\r\\n
\\r\\n All the data available at the Local Authority or Clinical Commissioning Group level is aggregated to form the ICB area. Any LA or CCG areas without data for the period are still included in the aggregation, and therefore can cause lower than expected values.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n

\\r\\n Constituent Areas\\r\\n

\\r\\n

\\r\\n These are the constituent areas for {{ constituents.organisationName }} ({{ constituents.organisationOnsCode }}). For details on how the aggregated values are calculated, see the explanation section below.\\r\\n

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
CodeNameValue{{ details.aggregationType === 'Factor' ? 'Factor' : 'Proportion' }}
{{ c.childOnsCode }}{{ c.childName }}{{ c.result | number: '1.2-2' }}{{ details.aggregationType === 'Factor' ? (c.factor | number: '1.2-2') : (c.proportion | number: '1.2-2') }}
\\r\\n
\\r\\n
\\r\\n

Aggregation Definitions

\\r\\n
\\r\\n Raw data from source\\r\\n
\\r\\n
\\r\\n CCG: Data has been summed to provide an aggregate figure for the ICB.\\r\\n
\\r\\n
\\r\\n Local Authority: Data has been apportioned based on local authority population associated with their ICBs. For example, where a local authority is associated with two ICBs, with 60% of its population in one ICB and 40% in another ICB, these proportions are applied to the raw data. ICB outputs are calculated as the sum of all their associated component parts. This apportionment is applied uniformly to numerator and denominator. Population figures were sourced at a lower layer super output area level from the Office for National Statistics, based on 2017 mid-year population estimates. Lower layer super output areas were then mapped to ICBs, based on Office for National Statistics information.\\r\\n
\\r\\n
\\r\\n Calculated data from source\\r\\n
\\r\\n
\\r\\n CCG: ICB outputs, where CCG data is provided calculated at source, use a weighted average formula. Weightings are calculated using the CCG registered population in April as a percentage of the total ICB population. Weightings are then applied to the source data. The output presented at ICB level is the sum of the weighted CCG data. Defunct CCGs use registered population from their most recent year of existence.\\r\\n
\\r\\n
\\r\\n Local Authority: ICB outputs, where local authority data is provided calculated at source, use a weighted average formula. Weightings are calculated using the local authority population sourced at a lower layer super output area level from the Office for National Statistics, based on 2017 mid-year population estimates, as a percentage of the total ICB population. Lower layer super output areas were then mapped to ICBs, based on Office for National Statistics information. Weightings are then applied to the source data. The output presented at ICB level is the sum of the weighted local authority data.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n

Bookmarks

\\r\\n

Below is a list of your saved indicators. Click to return to the indicators with your saved configuration.

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

\\r\\n You do not have any saved bookmarks. You can bookmark an indicator by clicking 'Bookmark' above the map on any indicator page.\\r\\n

\\r\\n

\\r\\n \\r\\n {{ bookmark.tier.searchName }}\\r\\n Aggregated
\\r\\n \\r\\n {{ bookmark.tier.tierNameMap.join(' > ') }}\\r\\n \\r\\n

\\r\\n \\r\\n Remove Bookmark\\r\\n \\r\\n

\\r\\n
\\r\\n
\"","module.exports = \".display-inline {\\n display: inline-block !important; }\\n\\n.position-relative {\\n position: relative !important; }\\n\\n.mt-1 {\\n margin-top: 0.25em !important; }\\n\\n.mt-2 {\\n margin-top: 0.5em !important; }\\n\\n.mt-3 {\\n margin-top: 0.75em !important; }\\n\\n.mt-4 {\\n margin-top: 1.5em !important; }\\n\\n.mt-5 {\\n margin-top: 1.75em !important; }\\n\\n.mr-1 {\\n margin-right: 0.25em !important; }\\n\\n.mr-2 {\\n margin-right: 0.5em !important; }\\n\\n.mr-3 {\\n margin-right: 0.75em !important; }\\n\\n.mr-4 {\\n margin-right: 1.5em !important; }\\n\\n.mr-5 {\\n margin-right: 1.75em !important; }\\n\\n.mb-1 {\\n margin-bottom: 0.25em !important; }\\n\\n.mb-2 {\\n margin-bottom: 0.5em !important; }\\n\\n.mb-3 {\\n margin-bottom: 0.75em !important; }\\n\\n.mb-4 {\\n margin-bottom: 1.5em !important; }\\n\\n.mb-5 {\\n margin-bottom: 1.75em !important; }\\n\\n.ml-1 {\\n margin-left: 0.25em !important; }\\n\\n.ml-2 {\\n margin-left: 0.5em !important; }\\n\\n.ml-3 {\\n margin-left: 0.75em !important; }\\n\\n.ml-4 {\\n margin-left: 1.5em !important; }\\n\\n.ml-5 {\\n margin-left: 1.75em !important; }\\n\\n.p-2 {\\n padding: 0.5em !important; }\\n\\n.w-25 {\\n width: 25vw; }\\n\\n.btn {\\n border-radius: 3px !important; }\\n\\n.btn-outline-dark {\\n background-color: white;\\n border: 1px solid black; }\\n\\n.btn-dark {\\n background-color: black;\\n border: 1px solid black;\\n color: white; }\\n\\n.form-control {\\n font-size: 14px !important; }\\n\\n.font-weight-bold {\\n font-weight: bold !important; }\\n\\n.btn:focus {\\n outline: none !important; }\\n\\n.bg-light {\\n background-color: #F3F3F3 !important; }\\n\\n.border {\\n border: 1px solid #ccc;\\n border-radius: 3px; }\\n\\n.cursor:hover {\\n cursor: pointer; }\\n\\nh3 {\\n line-height: 1.35em; }\\n\\n.loading {\\n position: fixed;\\n margin-top: 10vh;\\n left: 50%;\\n -webkit-transform: translateX(-50%);\\n transform: translateX(-50%);\\n z-index: 150;\\n background-color: green;\\n color: white;\\n padding: 0.5em 2em;\\n font-size: 16px;\\n border-radius: 4px; }\\n\\n.alert-error-inline {\\n margin-top: 2em;\\n margin-bottom: 0em; }\\n\\n#selector {\\n background-color: #005EB8;\\n margin-top: -2em;\\n padding: 0.4em 0; }\\n\\n#selector .btn {\\n background-color: #004485; }\\n\\n#selector .form-control {\\n border: none;\\n background-color: #004485;\\n color: white;\\n box-shadow: none;\\n border-radius: 3px; }\\n\\n#selector .form-control:focus {\\n outline: none !important; }\\n\\n#selector .form-control::-webkit-input-placeholder {\\n /* Chrome, Firefox, Opera, Safari 10.1+ */\\n color: rgba(255, 255, 255, 0.5);\\n opacity: 1;\\n /* Firefox */ }\\n\\n#selector .form-control:-ms-input-placeholder {\\n /* Chrome, Firefox, Opera, Safari 10.1+ */\\n color: rgba(255, 255, 255, 0.5);\\n opacity: 1;\\n /* Firefox */ }\\n\\n#selector .form-control::-ms-input-placeholder {\\n /* Chrome, Firefox, Opera, Safari 10.1+ */\\n color: rgba(255, 255, 255, 0.5);\\n opacity: 1;\\n /* Firefox */ }\\n\\n#selector .form-control::placeholder {\\n /* Chrome, Firefox, Opera, Safari 10.1+ */\\n color: rgba(255, 255, 255, 0.5);\\n opacity: 1;\\n /* Firefox */ }\\n\\n#selector .form-control:-ms-input-placeholder {\\n /* Internet Explorer 10-11 */\\n color: rgba(255, 255, 255, 0.5); }\\n\\n#selector .form-control::-ms-input-placeholder {\\n /* Microsoft Edge */\\n color: rgba(255, 255, 255, 0.5); }\\n\\n.search-icon {\\n position: absolute;\\n top: 10px;\\n left: 10px;\\n z-index: 10;\\n color: white; }\\n\\n.search-input {\\n padding-left: 2.5em; }\\n\\n.tier-float {\\n display: inline-block;\\n width: 14.275%;\\n margin-top: 0.5em;\\n padding: 0.25%;\\n line-height: 1.5em; }\\n\\n.tier-top {\\n font-size: 14px;\\n text-align: center;\\n padding: 6px 12px;\\n width: 100%;\\n background-color: #efefef;\\n white-space: nowrap;\\n overflow-x: hidden;\\n border-radius: 3px; }\\n\\n.tier-top.active {\\n background-color: #005EB8;\\n color: white; }\\n\\n.tier-top:hover {\\n cursor: pointer; }\\n\\n.tier-spacer {\\n margin: 0.75em 0;\\n line-height: 1em; }\\n\\n.menu-bg {\\n position: fixed;\\n top: 0;\\n left: 0;\\n width: 100vw;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.05);\\n z-index: 5; }\\n\\n.menu {\\n position: absolute;\\n margin-top: 0.5em;\\n padding: 1em;\\n background-color: white;\\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\\n z-index: 100;\\n width: 500px;\\n max-width: 90vw;\\n max-height: 60vh;\\n overflow-y: scroll;\\n -ms-overflow-style: none;\\n scrollbar-width: none;\\n font-size: 1em; }\\n\\n.menu.-right {\\n right: 1em; }\\n\\n.menu.-tiers {\\n max-width: 42%; }\\n\\n.menu-sm {\\n width: 300px; }\\n\\n.menu::-webkit-scrollbar {\\n display: none; }\\n\\n.menu::-webkit-scrollbar {\\n display: none; }\\n\\n.menu span:hover,\\n.menu .selector:hover {\\n color: #005EB8;\\n cursor: pointer; }\\n\\n.table-search {\\n width: 90%;\\n border: none;\\n background: none; }\\n\\n.table-search:focus {\\n border: none;\\n outline: none; }\\n\\n.table-sm th,\\n.table-sm td {\\n padding-top: 4px;\\n padding-bottom: 4px; }\\n\\n#barChart {\\n display: block;\\n width: 100%;\\n height: 400px; }\\n\\nmgl-map {\\n height: 400px;\\n width: 100%;\\n border-radius: 4px; }\\n\\n.scatter {\\n position: relative;\\n border: 1px solid #DEE2E6;\\n border-radius: 4px;\\n padding: 1em; }\\n\\n.scatter .close {\\n position: absolute;\\n top: 0.5em;\\n right: 1em;\\n color: #CCCCCC;\\n opacity: 1; }\\n\\n.scatter .close:hover {\\n cursor: pointer;\\n color: #005EB8; }\\n\\n#hover {\\n position: absolute;\\n background-color: black;\\n color: white;\\n padding: 0.25em 0.5em;\\n border-radius: 3px;\\n z-index: 1000;\\n font-size: 12px; }\\n\\n.active span {\\n color: #005EB8; }\\n\\n.switcher {\\n padding: 0.75em 1em;\\n border: 1px solid #DEE2E6;\\n border-radius: 4px;\\n min-height: 105px;\\n color: #DEE2E6; }\\n\\n.switcher h5 {\\n color: #DEE2E6; }\\n\\n.switcher small {\\n font-weight: bold;\\n text-transform: uppercase;\\n padding-bottom: 0.5em;\\n color: #CCCCCC; }\\n\\n.switcher.active {\\n color: black;\\n border-color: black; }\\n\\n.switcher.active h5 {\\n color: black; }\\n\\n.switcher:hover {\\n cursor: pointer;\\n background-color: #F8F9FA; }\\n\\n.btn-toggle:hover,\\n.btn-stack:hover {\\n cursor: pointer;\\n color: #005EB8; }\\n\\n.btn-toggle.disabled {\\n color: #CCCCCC; }\\n\\n.btn-white {\\n color: #005EB8;\\n background-color: transparent;\\n font-weight: bold; }\\n\\n.btn-white:hover {\\n cursor: pointer;\\n opacity: 0.8; }\\n\\n.card-toggle h6 {\\n margin-top: 0; }\\n\\n.card-toggle:hover {\\n cursor: pointer;\\n border-color: #005EB8 !important; }\\n\\n.card-toggle:hover h6 {\\n color: #005EB8; }\\n\\n.custom-modal {\\n position: fixed;\\n left: 50%;\\n -webkit-transform: translate(-50%, 0);\\n transform: translate(-50%, 0);\\n top: 20vh;\\n padding: 1.5em 2em 4em 1.5em;\\n border: 1px solid #CCC;\\n border-radius: 4px;\\n box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.22);\\n z-index: 10000;\\n background-color: white;\\n height: 60vh;\\n width: 50vw;\\n overflow-y: scroll;\\n -ms-overflow-style: none;\\n scrollbar-width: none; }\\n\\n.custom-modal::-webkit-scrollbar {\\n display: none; }\\n\\n.custom-modal h3 {\\n margin-top: 0; }\\n\\n.preference {\\n border: 1px solid #ccc;\\n padding: 0.75em;\\n margin-bottom: 1em;\\n border-radius: 4px; }\\n\\n.preference .title {\\n margin-bottom: 0.5em; }\\n\\n.preference .actions span {\\n font-size: 0.8em; }\\n\\n.preference .actions span:hover {\\n cursor: pointer;\\n opacity: 0.8; }\\n\\n#preferenceActions {\\n position: fixed;\\n left: 50%;\\n -webkit-transform: translate(-50%, 0);\\n transform: translate(-50%, 0);\\n bottom: 20vh;\\n width: 50vw;\\n padding: 1em 1em;\\n background-color: #F8F9FA;\\n border-top: 1px solid #CCC;\\n border-bottom-left-radius: 4px;\\n border-bottom-right-radius: 4px;\\n z-index: 10001; }\\n\\n.-ribbon-right {\\n float: right; }\\n\\n#selectorMobile {\\n display: none;\\n margin-top: -1em;\\n margin-bottom: -2em; }\\n\\n#copyClipboard {\\n width: 10px;\\n border: none;\\n background-color: transparent;\\n color: transparent; }\\n\\n#copyClipboard:focus {\\n outline: none !important; }\\n\\n.fa-low-vision {\\n padding-right: 3px; }\\n\\n.fa-check-circle {\\n color: green !important;\\n padding-right: 3px; }\\n\\n@media only screen and (max-width: 650px) {\\n #selectorMobile {\\n display: block; }\\n #selectorDesktop {\\n display: none; }\\n .-ribbon-right {\\n display: none !important; } }\\n\\n@media only screen and (max-width: 750px) {\\n .custom-modal, #preferenceActions {\\n left: 2vw;\\n width: 96vw;\\n -webkit-transform: none;\\n transform: none; } }\\n\\n@media only screen and (max-width: 767px) {\\n #barChart {\\n height: 300px; } }\\n\\n#activeAdmin {\\n background-color: #FDBC30;\\n padding: 0.5em; }\\n\\n.admin-secondary {\\n margin-top: -0.5em;\\n margin-bottom: 1em; }\\n\\n.alert-active-admin {\\n background-color: #FDBC30;\\n border-color: #E59900; }\\n\\n.text-active-admin {\\n color: #FDBC30 !important; }\\n\\n.bg-active-admin {\\n background-color: #FDBC30; }\\n\\n.label-active-admin {\\n background-color: #FDBC30;\\n color: #E59900;\\n border-color: #E59900;\\n margin-bottom: 1em; }\\n\\n.label-active-admin:hover {\\n color: black !important; }\\n\\n.welcome {\\n margin-top: 2em;\\n margin-bottom: 4em; }\\n\\n.welcome h1 {\\n margin-top: 0; }\\n\\n.welcome iframe {\\n border: 1px solid #005EB8; }\\n\\n#icsWelcome {\\n background-image: url(\\\"/assets/images/ics-welcome.jpeg\\\");\\n background-repeat: no-repeat;\\n background-size: cover;\\n background-position: center; }\\n\\n#feedbackButton {\\n position: fixed;\\n z-index: 1000;\\n bottom: 1em;\\n right: 1em; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvYmVuY2htYXJrZXIvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXGFwcFxcYmVuY2htYXJrZXJcXGJlbmNobWFya2VyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9iZW5jaG1hcmtlci9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcX3ZhcmlhYmxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBO0VBQ0ksZ0NBQWdDLEVBQUE7O0FBR3BDO0VBQ0ksNkJBQTZCLEVBQUE7O0FBR2pDO0VBQVEsNkJBQThCLEVBQUE7O0FBQ3RDO0VBQVEsNEJBQTZCLEVBQUE7O0FBQ3JDO0VBQVEsNkJBQThCLEVBQUE7O0FBQ3RDO0VBQVEsNEJBQTZCLEVBQUE7O0FBQ3JDO0VBQVEsNkJBQThCLEVBQUE7O0FBRXRDO0VBQVEsK0JBQWdDLEVBQUE7O0FBQ3hDO0VBQVEsOEJBQStCLEVBQUE7O0FBQ3ZDO0VBQVEsK0JBQWdDLEVBQUE7O0FBQ3hDO0VBQVEsOEJBQStCLEVBQUE7O0FBQ3ZDO0VBQVEsK0JBQWdDLEVBQUE7O0FBRXhDO0VBQVEsZ0NBQWlDLEVBQUE7O0FBQ3pDO0VBQVEsK0JBQWdDLEVBQUE7O0FBQ3hDO0VBQVEsZ0NBQWlDLEVBQUE7O0FBQ3pDO0VBQVEsK0JBQWdDLEVBQUE7O0FBQ3hDO0VBQVEsZ0NBQWlDLEVBQUE7O0FBRXpDO0VBQVEsOEJBQStCLEVBQUE7O0FBQ3ZDO0VBQVEsNkJBQThCLEVBQUE7O0FBQ3RDO0VBQVEsOEJBQStCLEVBQUE7O0FBQ3ZDO0VBQVEsNkJBQThCLEVBQUE7O0FBQ3RDO0VBQVEsOEJBQStCLEVBQUE7O0FBRXZDO0VBQ0kseUJBQXlCLEVBQUE7O0FBRzdCO0VBQVEsV0FBWSxFQUFBOztBQUVwQjtFQUNJLDZCQUE2QixFQUFBOztBQUdqQztFQUNJLHVCQUF1QjtFQUN2Qix1QkFBdUIsRUFBQTs7QUFHM0I7RUFDSSx1QkFBdUI7RUFD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RzFDO0VBQ0kseUJDamV5QixFQUFBOztBRG9lN0I7RUFDSSx5QkNyZXlCO0VEc2V6QixjQ3JlNkI7RURzZTdCLHFCQ3RlNkI7RUR1ZTdCLGtCQUFrQixFQUFBOztBQUp0QjtJQU1RLHVCQUF1QixFQUFBOztBQU0vQjtFQUNJLGVBQWU7RUFDZixrQkFBa0IsRUFBQTs7QUFGdEI7SUFJUSxhQUFhLEVBQUE7O0FBSnJCO0lBT1EseUJDM2ZVLEVBQUE7O0FEK2ZsQjtFQUNJLHdEQUF3RDtFQUN4RCw0QkFBNEI7RUFDNUIsc0JBQXNCO0VBQ3RCLDJCQUEyQixFQUFBOztBQUcvQjtFQUNJLGVBQWU7RUFDZixhQUFhO0VBQ2IsV0FBVztFQUNYLFVBQVUsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2JlbmNobWFya2VyL2JlbmNobWFya2VyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vdmFyaWFibGVzJztcclxuXHJcbi8vIEJPT1RTVFJBUCA0IENMQVNTRVNcclxuXHJcbi5kaXNwbGF5LWlubGluZSB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDtcclxufVxyXG5cclxuLnBvc2l0aW9uLXJlbGF0aXZlIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ubXQtMSB7IG1hcmdpbi10b3A6IDAuMjVlbSAhaW1wb3J0YW50IH1cclxuLm10LTIgeyBtYXJnaW4tdG9wOiAwLjVlbSAhaW1wb3J0YW50IH1cclxuLm10LTMgeyBtYXJnaW4tdG9wOiAwLjc1ZW0gIWltcG9ydGFudCB9XHJcbi5tdC00IHsgbWFyZ2luLXRvcDogMS41ZW0gIWltcG9ydGFudCB9XHJcbi5tdC01IHsgbWFyZ2luLXRvcDogMS43NWVtICFpbXBvcnRhbnQgfVxyXG5cclxuLm1yLTEgeyBtYXJnaW4tcmlnaHQ6IDAuMjVlbSAhaW1wb3J0YW50IH1cclxuLm1yLTIgeyBtYXJnaW4tcmlnaHQ6IDAuNWVtICFpbXBvcnRhbnQgfVxyXG4ubXItMyB7IG1hcmdpbi1yaWdodDogMC43NWVtICFpbXBvcnRhbnQgfVxyXG4ubXItNCB7IG1hcmdpbi1yaWdodDogMS41ZW0gIWltcG9ydGFudCB9XHJcbi5tci01IHsgbWFyZ2luLXJpZ2h0OiAxLjc1ZW0gIWltcG9ydGFudCB9XHJcblxyXG4ubWItMSB7IG1hcmdpbi1ib3R0b206IDAuMjVlbSAhaW1wb3J0YW50IH1cclxuLm1iLTIgeyBtYXJnaW4tYm90dG9tOiAwLjVlbSAhaW1wb3J0YW50IH1cclxuLm1iLTMgeyBtYXJnaW4tYm90dG9tOiAwLjc1ZW0gIWltcG9ydGFudCB9XHJcbi5tYi00IHsgbWFyZ2luLWJvdHRvbTogMS41ZW0gIWltcG9ydGFudCB9XHJcbi5tYi01IHsgbWFyZ2luLWJvdHRvbTogMS43NWVtICFpbXBvcnRhbnQgfVxyXG5cclxuLm1sLTEgeyBtYXJnaW4tbGVmdDogMC4yNWVtICFpbXBvcnRhbnQgfVxyXG4ubWwtMiB7IG1hcmdpbi1sZWZ0OiAwLjVlbSAhaW1wb3J0YW50IH1cclxuLm1sLTMgeyBtYXJnaW4tbGVmdDogMC43NWVtICFpbXBvcnRhbnQgfVxyXG4ubWwtNCB7IG1hcmdpbi1sZWZ0OiAxLjVlbSAhaW1wb3J0YW50IH1cclxuLm1sLTUgeyBtYXJnaW4tbGVmdDogMS43NWVtICFpbXBvcnRhbnQgfVxyXG5cclxuLnAtMiB7XHJcbiAgICBwYWRkaW5nOiAwLjVlbSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4udy0yNSB7IHdpZHRoOiAyNXZ3IH1cclxuXHJcbi5idG4ge1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5idG4tb3V0bGluZS1kYXJrIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7XHJcbn1cclxuXHJcbi5idG4tZGFyayB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrO1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG59XHJcblxyXG4uZm9ybS1jb250cm9sIHsgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQgfVxyXG5cclxuLmZvbnQtd2VpZ2h0LWJvbGQgeyBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50IH1cclxuXHJcbi5idG46Zm9jdXMgeyBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQgfVxyXG5cclxuLmJnLWxpZ2h0IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNGM0YzRjMgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmJvcmRlciB7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG59XHJcblxyXG4uY3Vyc29yOmhvdmVyIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuaDMge1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuMzVlbTtcclxufVxyXG5cclxuLy8gQ3VzdG9tIFN0eWxlc1xyXG5cclxuLmxvYWRpbmcge1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgbWFyZ2luLXRvcDogMTB2aDtcclxuICAgIGxlZnQ6IDUwJTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcclxuICAgIHotaW5kZXg6IDE1MDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRicmFuZC1zdWNjZXNzO1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgcGFkZGluZzogMC41ZW0gMmVtO1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG59XHJcblxyXG4uYWxlcnQtZXJyb3ItaW5saW5lIHtcclxuICAgIG1hcmdpbi10b3A6IDJlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDBlbTtcclxufVxyXG5cclxuI3NlbGVjdG9yIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDVFQjg7XHJcbiAgICBtYXJnaW4tdG9wOiAtMmVtO1xyXG4gICAgcGFkZGluZzogMC40ZW0gMDtcclxufVxyXG5cclxuI3NlbGVjdG9yIC5idG4ge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDQ4NTtcclxufVxyXG5cclxuI3NlbGVjdG9yIC5mb3JtLWNvbnRyb2wge1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDQ4NTtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgICAmOmZvY3VzIHtcclxuICAgICAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgICAmOjpwbGFjZWhvbGRlciB7IC8qIENocm9tZSwgRmlyZWZveCwgT3BlcmEsIFNhZmFyaSAxMC4xKyAqL1xyXG4gICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XHJcbiAgICAgICAgb3BhY2l0eTogMTsgLyogRmlyZWZveCAqL1xyXG4gICAgfVxyXG4gICAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyAvKiBJbnRlcm5ldCBFeHBsb3JlciAxMC0xMSAqL1xyXG4gICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XHJcbiAgICB9XHJcbiAgICAmOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyAvKiBNaWNyb3NvZnQgRWRnZSAqL1xyXG4gICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5zZWFyY2gtaWNvbiB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDEwcHg7XHJcbiAgICBsZWZ0OiAxMHB4O1xyXG4gICAgei1pbmRleDogMTA7XHJcbiAgICBjb2xvcjogd2hpdGVcclxufVxyXG5cclxuLnNlYXJjaC1pbnB1dCB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDIuNWVtO1xyXG59XHJcblxyXG4udGllci1mbG9hdCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB3aWR0aDogMTQuMjc1JTtcclxuICAgIG1hcmdpbi10b3A6IDAuNWVtO1xyXG4gICAgcGFkZGluZzogMC4yNSU7XHJcbiAgICBsaW5lLWhlaWdodDogMS41ZW07XHJcbn1cclxuXHJcbi50aWVyLXRvcCB7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBwYWRkaW5nOiA2cHggMTJweDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzOSwgMjM5LCAyMzkpO1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxufVxyXG5cclxuLnRpZXItdG9wLmFjdGl2ZSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA1RUI4IDtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxufVxyXG5cclxuLnRpZXItdG9wOmhvdmVyIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLnRpZXItc3BhY2VyIHtcclxuICAgIG1hcmdpbjogMC43NWVtIDA7XHJcbiAgICBsaW5lLWhlaWdodDogMWVtO1xyXG59XHJcblxyXG4ubWVudS1iZyB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDEwMHZ3O1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwLjA1KTtcclxuICAgIHotaW5kZXg6IDU7XHJcbn1cclxuXHJcbi5tZW51IHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIG1hcmdpbi10b3A6IDAuNWVtO1xyXG4gICAgcGFkZGluZzogMWVtO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICBib3gtc2hhZG93OiAwIC41cmVtIDFyZW0gcmdiYSgwLDAsMCwuMTUpICFpbXBvcnRhbnQ7XHJcbiAgICB6LWluZGV4OiAxMDA7XHJcbiAgICB3aWR0aDogNTAwcHg7XHJcbiAgICBtYXgtd2lkdGg6IDkwdnc7XHJcbiAgICBtYXgtaGVpZ2h0OiA2MHZoO1xyXG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xyXG4gICAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xyXG4gICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xyXG4gICAgZm9udC1zaXplOiAxZW07XHJcbn1cclxuXHJcbi5tZW51Li1yaWdodCB7XHJcbiAgICByaWdodDogMWVtO1xyXG59XHJcblxyXG4ubWVudS4tdGllcnMge1xyXG4gICAgbWF4LXdpZHRoOiA0MiU7XHJcbn1cclxuXHJcbi5tZW51LXNtIHtcclxuICAgIHdpZHRoOiAzMDBweDtcclxufVxyXG5cclxuLm1lbnU6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbi5tZW51Ojotd2Via2l0LXNjcm9sbGJhciB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4ubWVudSBzcGFuOmhvdmVyLFxyXG4ubWVudSAuc2VsZWN0b3I6aG92ZXIge1xyXG4gICAgY29sb3I6ICMwMDVFQjg7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi50YWJsZS1zZWFyY2gge1xyXG4gICAgd2lkdGg6IDkwJTtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbn1cclxuXHJcbi50YWJsZS1zZWFyY2g6Zm9jdXMge1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxufVxyXG5cclxuLnRhYmxlLXNtIHRoLFxyXG4udGFibGUtc20gdGQge1xyXG4gICAgcGFkZGluZy10b3A6IDRweDtcclxuICAgIHBhZGRpbmctYm90dG9tOiA0cHg7XHJcbn1cclxuXHJcbiNiYXJDaGFydCB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiA0MDBweDtcclxufVxyXG5cclxubWdsLW1hcCB7XHJcbiAgICBoZWlnaHQ6IDQwMHB4O1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbn1cclxuXHJcbi5zY2F0dGVyIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNERUUyRTY7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICBwYWRkaW5nOiAxZW07XHJcbn1cclxuXHJcbi5zY2F0dGVyIC5jbG9zZSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDAuNWVtO1xyXG4gICAgcmlnaHQ6IDFlbTtcclxuICAgIGNvbG9yOiAjQ0NDQ0NDO1xyXG4gICAgb3BhY2l0eTogMTtcclxuICAgICY6aG92ZXIge1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBjb2xvcjogIzAwNUVCODtcclxuICAgIH1cclxufVxyXG5cclxuI2hvdmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgcGFkZGluZzogMC4yNWVtIDAuNWVtO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgei1pbmRleDogMTAwMDtcclxuICAgIGZvbnQtc2l6ZTogMTJweDtcclxufVxyXG5cclxuLmFjdGl2ZSBzcGFuIHtcclxuICAgIGNvbG9yOiAjMDA1RUI4O1xyXG59XHJcblxyXG4uc3dpdGNoZXIge1xyXG4gICAgcGFkZGluZzogMC43NWVtIDFlbTtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNERUUyRTY7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICBtaW4taGVpZ2h0OiAxMDVweDtcclxuICAgIGNvbG9yOiAjREVFMkU2O1xyXG4gICAgJiBoNSB7XHJcbiAgICAgICAgY29sb3I6ICNERUUyRTY7XHJcbiAgICB9XHJcbiAgICAmIHNtYWxsIHtcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwLjVlbTtcclxuICAgICAgICBjb2xvcjogI0NDQ0NDQztcclxuICAgIH1cclxufVxyXG5cclxuLnN3aXRjaGVyLmFjdGl2ZSB7XHJcbiAgICBjb2xvcjogYmxhY2s7XHJcbiAgICBib3JkZXItY29sb3I6IGJsYWNrO1xyXG4gICAgJiBoNSB7XHJcbiAgICAgICAgY29sb3I6IGJsYWNrO1xyXG4gICAgfVxyXG59XHJcblxyXG4uc3dpdGNoZXI6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0Y4RjlGQTtcclxufVxyXG5cclxuLmJ0bi10b2dnbGU6aG92ZXIsXHJcbi5idG4tc3RhY2s6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgY29sb3I6ICMwMDVFQjg7XHJcbn1cclxuXHJcbi5idG4tdG9nZ2xlLmRpc2FibGVkIHtcclxuICAgIGNvbG9yOiAjQ0NDQ0NDO1xyXG59XHJcblxyXG4uYnRuLXdoaXRlIHtcclxuICAgIGNvbG9yOiAjMDA1RUI4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICY6aG92ZXIge1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBvcGFjaXR5OiAwLjg7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5jYXJkLXRvZ2dsZSBoNiB7XHJcbiAgICBtYXJnaW4tdG9wOiAwO1xyXG59XHJcblxyXG4uY2FyZC10b2dnbGU6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAjMDA1RUI4ICFpbXBvcnRhbnQ7XHJcbiAgICAmIGg2IHtcclxuICAgICAgICBjb2xvcjogIzAwNUVCODtcclxuICAgIH1cclxufVxyXG5cclxuLmN1c3RvbS1tb2RhbCB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAwKTtcclxuICAgIHRvcDogMjB2aDtcclxuICAgIHBhZGRpbmc6IDEuNWVtIDJlbSA0ZW0gMS41ZW07XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjQ0NDO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgYm94LXNoYWRvdzogMCAxOXB4IDM4cHggcmdiYSgwLDAsMCwwLjMwKSwgMCAxNXB4IDEycHggcmdiYSgwLDAsMCwwLjIyKTtcclxuICAgIHotaW5kZXg6IDEwMDAwO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICBoZWlnaHQ6IDYwdmg7XHJcbiAgICB3aWR0aDogNTB2dztcclxuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcclxuICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTtcclxuICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTtcclxufVxyXG5cclxuLmN1c3RvbS1tb2RhbDo6LXdlYmtpdC1zY3JvbGxiYXIge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLmN1c3RvbS1tb2RhbCBoMyB7XHJcbiAgICBtYXJnaW4tdG9wOiAwO1xyXG59XHJcblxyXG4ucHJlZmVyZW5jZSB7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gICAgcGFkZGluZzogMC43NWVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG59XHJcblxyXG4ucHJlZmVyZW5jZSAudGl0bGUge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XHJcbn1cclxuXHJcbi5wcmVmZXJlbmNlIC5hY3Rpb25zIHNwYW4ge1xyXG4gICAgZm9udC1zaXplOiAwLjhlbTtcclxuICAgICY6aG92ZXIge1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBvcGFjaXR5OiAwLjg7XHJcbiAgICB9IFxyXG59XHJcblxyXG4jcHJlZmVyZW5jZUFjdGlvbnMge1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgbGVmdDogNTAlO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCk7XHJcbiAgICBib3R0b206IDIwdmg7XHJcbiAgICB3aWR0aDogNTB2dztcclxuICAgIHBhZGRpbmc6IDFlbSAxZW07XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjhGOUZBO1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNDQ0M7XHJcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAgNHB4O1xyXG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDtcclxuICAgIHotaW5kZXg6IDEwMDAxO1xyXG59XHJcblxyXG4uLXJpYmJvbi1yaWdodCB7XHJcbiAgICBmbG9hdDogcmlnaHQ7XHJcbn1cclxuXHJcbiNzZWxlY3Rvck1vYmlsZSB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgbWFyZ2luLXRvcDogLTFlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IC0yZW07XHJcbn1cclxuXHJcbiNjb3B5Q2xpcGJvYXJkIHtcclxuICAgIHdpZHRoOiAxMHB4O1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAmOmZvY3VzIHtcclxuICAgICAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5mYS1sb3ctdmlzaW9uIHtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDNweDtcclxufVxyXG5cclxuLmZhLWNoZWNrLWNpcmNsZSB7XHJcbiAgICBjb2xvcjogZ3JlZW4gIWltcG9ydGFudDtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDNweDtcclxufVxyXG5cclxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NTBweCkge1xyXG4gICAgI3NlbGVjdG9yTW9iaWxlIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuICAgICNzZWxlY3RvckRlc2t0b3Age1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbiAgICAuLXJpYmJvbi1yaWdodCB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG59XHJcblxyXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc1MHB4KSB7XHJcbiAgICAuY3VzdG9tLW1vZGFsLCAjcHJlZmVyZW5jZUFjdGlvbnMge1xyXG4gICAgICAgIGxlZnQ6IDJ2dztcclxuICAgICAgICB3aWR0aDogOTZ2dztcclxuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcclxuICAgICNiYXJDaGFydCB7XHJcbiAgICAgICAgaGVpZ2h0OiAzMDBweDtcclxuICAgIH1cclxufVxyXG5cclxuLy8gQWN0aXZlIEFkbWluXHJcblxyXG4jYWN0aXZlQWRtaW4ge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFjdGl2ZS1hZG1pbi15ZWxsb3c7XHJcbiAgICBwYWRkaW5nOiAwLjVlbTtcclxufVxyXG5cclxuLmFkbWluLXNlY29uZGFyeSB7XHJcbiAgICBtYXJnaW4tdG9wOiAtMC41ZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XHJcbn1cclxuXHJcbi5hbGVydC1hY3RpdmUtYWRtaW4ge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFjdGl2ZS1hZG1pbi15ZWxsb3c7XHJcbiAgICBib3JkZXItY29sb3I6ICRhY3RpdmUtYWRtaW4tZGFya3llbGxvdztcclxufVxyXG5cclxuLnRleHQtYWN0aXZlLWFkbWluIHtcclxuICAgIGNvbG9yOiAkYWN0aXZlLWFkbWluLXllbGxvdyAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uYmctYWN0aXZlLWFkbWluIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY3RpdmUtYWRtaW4teWVsbG93O1xyXG59XHJcblxyXG4ubGFiZWwtYWN0aXZlLWFkbWluIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY3RpdmUtYWRtaW4teWVsbG93O1xyXG4gICAgY29sb3I6ICRhY3RpdmUtYWRtaW4tZGFya3llbGxvdztcclxuICAgIGJvcmRlci1jb2xvcjogJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgICAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIFdlbGNvbWVcclxuXHJcbi53ZWxjb21lIHtcclxuICAgIG1hcmdpbi10b3A6IDJlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDRlbTtcclxuICAgICYgaDEge1xyXG4gICAgICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICB9XHJcbiAgICAmIGlmcmFtZSB7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJG5ocy1ibHVlO1xyXG4gICAgfVxyXG59XHJcblxyXG4jaWNzV2VsY29tZSB7XHJcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9hc3NldHMvaW1hZ2VzL2ljcy13ZWxjb21lLmpwZWcnKTtcclxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xyXG59XHJcblxyXG4jZmVlZGJhY2tCdXR0b24ge1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgei1pbmRleDogMTAwMDtcclxuICAgIGJvdHRvbTogMWVtO1xyXG4gICAgcmlnaHQ6IDFlbTtcclxufSIsIiRpY29uLWZvbnQtcGF0aDogJy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAtc2Fzcy9hc3NldHMvZm9udHMvYm9vdHN0cmFwLyc7XHJcblxyXG4vLyBDdXN0b20gdmFyaWFibGVzXHJcbiRuaHMtYmx1ZTogIzAwNUVCODtcclxuJG5ocy1kYXJrLWJsdWU6ICMwMDQ0ODU7XHJcbiRuaHMtZ3JleTogIzc2ODY5MjtcclxuJG5ocy1mYWRlZC1ibHVlOiAjRjJGN0ZCO1xyXG4kYWN0aXZlLWFkbWluLXllbGxvdzogI0ZEQkMzMDtcclxuJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93OiAjRTU5OTAwO1xyXG4gXHJcbi8vIEJvb3RzdHJhcCB2YXJpYWJsZXNcclxuJHRleHQtY29sb3I6IGJsYWNrO1xyXG4kYm9yZGVyLXJhZGl1cy1iYXNlOiAwO1xyXG4kYm9yZGVyLXJhZGl1cy1zbWFsbDogMDtcclxuJGJyYW5kLXByaW1hcnk6ICRuaHMtYmx1ZTtcclxuJGJyYW5kLXN1Y2Nlc3M6IGdyZWVuO1xyXG4kbGluay1ob3Zlci1kZWNvcmF0aW9uOiBub25lO1xyXG4kZm9udC1zaXplLWg0OiAxN3B4O1xyXG4kbmF2YmFyLW1hcmdpbi1ib3R0b206IDA7XHJcbiRuYXZiYXItaGVpZ2h0OiA2MHB4O1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtYmc6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWJvcmRlci1jb2xvcjogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaWNvbi1iYXItYmc6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOiB3aGl0ZTtcclxuXHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc6ICRuaHMtYmx1ZTtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1jb2xvcjogd2hpdGU7XHJcbiRuYXYtcGlsbHMtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJHRhYmxlLWJnLWhvdmVyOiAkbmhzLWZhZGVkLWJsdWU7XHJcbiRoZWFkaW5ncy1zbWFsbC1jb2xvcjogJG5ocy1ncmV5OyJdfQ== */\"","import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\nimport { MemberService } from 'app/utilities/services/member.service';\r\nimport { DataService } from '../utilities/ics/data.service';\r\nimport { FormatService } from '../utilities/ics/format.service';\r\n\r\nimport { Map } from 'mapbox-gl';\r\nimport extent from 'turf-extent';\r\n\r\nimport { FilterByPipe, OrderByPipe } from 'ngx-pipes';\r\nimport { DynamicInfoPanel } from 'app/utilities/classes/dynamic-info-panel/dynamic-info-panel';\r\n\r\ndeclare global {\r\n interface Navigator {\r\n msSaveBlob: (blob: any, defaultName?: string) => boolean\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'app-benchmarker',\r\n templateUrl: './benchmarker.component.html',\r\n styleUrls: ['./benchmarker.component.scss'],\r\n providers: [ FilterByPipe, OrderByPipe ]\r\n})\r\nexport class BenchmarkerComponent implements OnInit {\r\n\r\n projectId: number = 39;\r\n subscriptions = [];\r\n tiers; tierId; domainId; topTierRight: boolean = false;\r\n search; query; count: number = -1;\r\n details; relationships; aggregatable: boolean = false;\r\n data; data_raw; seriesData;\r\n primary_details_saved; primary_data_saved; data_saved;\r\n periods; period;\r\n selected;\r\n averages;\r\n categories = []; seriesCategory: number; selectedSeries;\r\n independentCategory; \r\n user; admin: boolean = false;\r\n drop = { \r\n any: false, \r\n tiers: false,\r\n menu: false, \r\n period: false, \r\n category: false, \r\n highlight: false, \r\n secondary: false, \r\n series: false, \r\n preferences: false,\r\n constituents: false,\r\n flagged: false,\r\n info: false,\r\n export: false,\r\n bookmarks: false\r\n };\r\n error: string; errorInline: string;\r\n constituents: any; constituentsDetails: boolean = false;\r\n\r\n // Preferences\r\n preferences;\r\n organisations;\r\n currentDefault;\r\n\r\n // Secondary\r\n secondary; secondaryDetails; secondaryData;\r\n r2Value;\r\n\r\n stackable: boolean = false;\r\n highlightable: boolean = false;\r\n highlighted: string;\r\n highlights: any;\r\n filtered: boolean = false;\r\n\r\n loading: boolean = false;\r\n\r\n // Charts\r\n chartBarOptions; chartBar: any;\r\n chartLineOptions; chartLine: any;\r\n chartScatterOptions; chartScatter: any;\r\n chartStackedColumnOptions; chartStackedColumn: any;\r\n chartNationalStackedColumnOptions;\r\n colors: any = [\r\n \"#e03616\",\"#f1a208\",\"#00a878\",\"#111b54\",\"#a01a7d\",\"#09c2de\",\r\n \"#f39886\",\"#fbd281\",\"#54ffcf\",\"#566adc\",\"#e873c9\",\"#78e8f9\",\r\n \"#6f1c0b\",\"#795204\",\"#00543c\",\"#090e2a\",\"#4f0d3d\",\"#05606e\" \r\n ];\r\n\r\n map: Map;\r\n mapDetails; mapDefault;\r\n mapOptions;\r\n hover; mouseX; mouseY;\r\n point;\r\n noMapbox: boolean = false;\r\n\r\n copied: boolean = false;\r\n bookmarked: string;\r\n\r\n params: string;\r\n\r\n // Tables\r\n columnOrder: string = '+';\r\n highestLowest: any;\r\n highestLowestGroup: any;\r\n infoPanel: DynamicInfoPanel;\r\n\r\n colorBlindnessEnabled: boolean = false;\r\n nationalMeanColour = '#28A745';\r\n organisationValueColour = '#E03616';\r\n\r\n // Downloads\r\n @ViewChild('dlMap') dlMap: ElementRef;\r\n @ViewChild('dlCanvas') dlCanvas: ElementRef;\r\n @ViewChild('dlLink') dlLink: ElementRef;\r\n\r\n // Video\r\n videoURL = this.sanitizer.bypassSecurityTrustResourceUrl('https://www.youtube.com/embed/Tktw9-LvlM8?controls=0');\r\n\r\n constructor(\r\n private memberService: MemberService,\r\n private dataService: DataService,\r\n private formatService: FormatService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private http: HttpClient,\r\n private filterBy: FilterByPipe,\r\n private orderBy: OrderByPipe,\r\n private sanitizer: DomSanitizer\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.getUserDetails();\r\n this.getPreferences();\r\n this.params = this.router.url;\r\n\r\n // Set loading\r\n this.loading = true;\r\n }\r\n\r\n public onInfoPanelClick = (info: string): void => {\r\n this.toggleDrop(info);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe();\r\n }\r\n\r\n // GETS\r\n\r\n getUserDetails() {\r\n this.memberService.User().subscribe(\r\n u => { \r\n this.user = u.data;\r\n if (this.user && this.user.isAdmin && this.user.isAdmin == 'Y') {\r\n this.admin = true;\r\n }\r\n }\r\n );\r\n }\r\n\r\n getPreferences(refresh?: boolean) {\r\n this.dataService.getPreferences().subscribe(\r\n r => {\r\n this.preferences = this.formatService.preferences(r.data.preferenceList);\r\n\r\n if (refresh !== true) {\r\n this.getTiers(this.projectId);\r\n }\r\n\r\n // TODO: Update search tiers and apply\r\n // this.getSearchTiers(this.projectId);\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n }\r\n\r\n getTiers(projectId) {\r\n this.dataService.getTiers(projectId).subscribe(\r\n r => { \r\n this.loading = false;\r\n this.tiers = r.data;\r\n this.search = this.formatService.tiers(r.data);\r\n\r\n // Check for report params\r\n let params = this.route.snapshot.queryParams;\r\n if (params.rep) {\r\n this.loading = true;\r\n this.getDetails(params.rep, null, params.per, params.cat);\r\n }\r\n\r\n // Check for old-style links\r\n if (params.p && !params.rep) {\r\n let matchingTiers = this.search.filter(s => s.reportId == params.p);\r\n if (matchingTiers.length == 1) {\r\n this.getDetails(matchingTiers[0].reportId + '-' + matchingTiers[0].searchTier);\r\n } else {\r\n this.loading = false;\r\n this.error = 'The report you are looking for has not been found. Please try using the search bar or navigation above.'\r\n }\r\n }\r\n\r\n // Remove old-style params\r\n this.router.navigate([], { queryParams: { d: null, s: null, p: null }, queryParamsHandling: 'merge' });\r\n\r\n },\r\n e => { \r\n console.log(e)\r\n }\r\n )\r\n }\r\n\r\n getSearchTiers(projectId) {\r\n this.dataService.getSearchTiers(projectId).subscribe(\r\n r => {\r\n console.log(r);\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n }\r\n\r\n getDetails(reportTier, secondary?, period?, categories?) {\r\n\r\n // Convert reportTier\r\n let reportId = +reportTier.split('-')[0];\r\n let tierId = +reportTier.split('-')[1];\r\n \r\n // Set tierId\r\n this.tierId = tierId;\r\n\r\n // Close menu dropdown\r\n this.toggleDrop('any');\r\n this.tiers.forEach(t => t.open = false);\r\n this.query = null;\r\n\r\n // Reset categories and start load\r\n // TODO: Move to reset()\r\n this.categories = [];\r\n this.loading = true;\r\n this.error = null;\r\n this.secondary = null;\r\n this.noMapbox = false;\r\n this.data_saved = null;\r\n this.seriesData = null;\r\n this.chartScatterOptions = null;\r\n this.secondaryDetails = null;\r\n this.chartScatterOptions = null;\r\n this.chartStackedColumnOptions = null;\r\n this.primary_details_saved = null;\r\n this.primary_data_saved = null;\r\n this.relationships = null;\r\n this.preferences.reportId = null;\r\n this.highlighted = null;\r\n this.highlights = null;\r\n this.filtered = null;\r\n this.independentCategory = null;\r\n this.copied = false;\r\n this.bookmarked = null;\r\n\r\n // Check for report/tier\r\n let tier = this.search.find(s => s.reportId == reportId && s.searchTier === tierId);\r\n if (reportId && tierId && tier) {\r\n \r\n // Set domain\r\n this.domainId = tier.t1_tierId ? tier.t1_tierId : null;\r\n\r\n // Set secondary selection\r\n if (tier && tier.children && tier.children.length) {\r\n this.secondary = this.orderBy.transform(tier.children, 'displaySequence');\r\n } else if (secondary && secondary.length) {\r\n this.secondary = this.orderBy.transform(secondary, 'displaySequence');\r\n }\r\n\r\n // Reset params if new report\r\n if (period === undefined || (secondary && secondary.length)) {\r\n this.router.navigate([], { queryParams: { cat: null, per: null, agg: null, sec: null }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n this.dataService.getDetails(reportId).subscribe(\r\n r => { \r\n // Set details\r\n this.details = this.formatService.details(r.data);\r\n\r\n // Save reportTier for future use\r\n this.details.reportTier = reportTier;\r\n\r\n let aggregatableTypes = ['LA', 'CCG'];\r\n if (aggregatableTypes.includes(this.details.organisationType)) {\r\n this.aggregatable = true;\r\n } else {\r\n this.aggregatable = false;\r\n }\r\n \r\n // Check set param categories or set all available categories\r\n if (categories) {\r\n let paramCats = categories.split('-');\r\n paramCats.forEach(c => {\r\n let matchingCategory = this.details.categories.find(dc => dc.categoryId === +c);\r\n if (matchingCategory) {\r\n this.selectCategory(matchingCategory);\r\n }\r\n });\r\n } else {\r\n if (this.details.options.includes('IC')) {\r\n this.selectCategory(this.details.categories[0]);\r\n } else {\r\n this.details.categories.forEach(c => { \r\n this.selectCategory(c);\r\n });\r\n }\r\n this.router.navigate([], { queryParams: { cat: null }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n // Check if data should be aggregated\r\n let params = this.route.snapshot.queryParams;\r\n if ((this.aggregatable && !params.agg) || params.agg == 'ics') {\r\n this.details.aggregation = 'ics';\r\n this.router.navigate([], { queryParams: { agg: 'ics' }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n // Get data\r\n this.getData(reportId, period, this.categories, null, this.tierId);\r\n this.infoPanel = new DynamicInfoPanel(this.details);\r\n this.infoPanel.info = this.drop.info;\r\n this.infoPanel.admin = true;\r\n this.infoPanel.tags = tier.tierTags;\r\n },\r\n e => { \r\n console.log(e)\r\n }\r\n ) \r\n\r\n } else {\r\n reportId = null;\r\n this.loading = false;\r\n this.error = 'The report you are looking for has not been found. Please try using the search bar or navigation above.'\r\n }\r\n\r\n }\r\n\r\n getData(reportId, period?, categories?, organisationId?, tierId?) {\r\n\r\n // Reset stacked bar\r\n this.removeStacked();\r\n\r\n // Check for secondary metric\r\n let params, secondary;\r\n \r\n if (this.secondary) {\r\n params = this.route.snapshot.queryParams;\r\n if (params.sec) {\r\n secondary = params.sec;\r\n }\r\n } else {\r\n // TODO: Move to reset()\r\n this.secondary = null;\r\n this.secondaryDetails = null;\r\n this.secondaryData = null;\r\n this.chartScatterOptions = null;\r\n this.router.navigate([], { queryParams: { sec: null }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n // Start load\r\n this.loading = true;\r\n this.unsubscribe();\r\n\r\n // Set categoryIds for API call\r\n let categoryIds;\r\n categories ? categoryIds = categories.map(c => c.categoryId) : null;\r\n\r\n this.subscriptions.push(\r\n this.dataService.getData(reportId, categoryIds, organisationId, tierId).subscribe(\r\n r => {\r\n\r\n // Get default\r\n let currentDefault = this.preferences['default_' + this.details.organisationType.toLowerCase()];\r\n this.currentDefault = currentDefault;\r\n\r\n // Set data\r\n this.data_raw = this.formatService.data(r.data);\r\n this.data = this.formatService.data(r.data, currentDefault ? currentDefault.preferenceItem : null);\r\n\r\n // Remove periods with no submission data (e.g. Wales-only data with England default)\r\n this.data_raw = this.data_raw.filter(data => data.submissions.length);\r\n this.data = this.data.filter(data => data.submissions.length);\r\n\r\n // Save primary information\r\n this.primary_details_saved = JSON.parse(JSON.stringify(this.details));\r\n this.primary_data_saved = JSON.parse(JSON.stringify(this.data_raw));\r\n\r\n // Check/set param period or set latest period\r\n if (period) {\r\n // Check period exists in current data set\r\n // Replace with latest if not available\r\n let findPeriod = this.data.find(p => p.periodId === +period);\r\n if (findPeriod) {\r\n this.period = findPeriod;\r\n } else {\r\n this.period = this.data[0];\r\n }\r\n } else {\r\n this.period = this.data[0];\r\n }\r\n\r\n if (this.data.length) {\r\n\r\n // Set current period data and averages\r\n this.selected = this.data.find(d => d.periodId === this.period.periodId);\r\n this.averages = this.formatService.averages(this.selected.submissions);\r\n\r\n // Add categories to params\r\n let categoryParams;\r\n categories ? categoryParams = categoryIds.join('-') : categoryParams = null;\r\n this.router.navigate([], { queryParams: { rep: this.details.reportTier, cat: categoryParams, per: this.period.periodId }, queryParamsHandling: 'merge' });\r\n\r\n // Aggregate data if required, or create chart/map\r\n if (this.details.aggregation) {\r\n this.getAggregation('ICS', categoryIds);\r\n } else {\r\n this.createBarChart(this.selected);\r\n this.createMap(this.selected, this.period, this.averages, this.details.aggregation ? this.details.aggregation : this.details.organisationType);\r\n }\r\n\r\n // Create time series\r\n this.createLineChart(this.data.reverse());\r\n\r\n } else {\r\n this.error = 'There is no data for this report. (Report ID: ' + this.details.reportId + ')';\r\n }\r\n \r\n },\r\n e => { \r\n console.log(e);\r\n },\r\n () => {\r\n // Check for secondary or aggregation\r\n if (secondary) {\r\n this.getSecondary(+secondary, null, this.currentDefault);\r\n } else {\r\n this.loading = false;\r\n } \r\n }\r\n )\r\n )\r\n }\r\n\r\n getAggregation(parentType, categoryIds) {\r\n this.loading = true;\r\n\r\n this.dataService.getRelationships(parentType + ' to ' + this.details.organisationType).subscribe(\r\n r => {\r\n\r\n // Get all relationships\r\n this.relationships = this.formatService.relationships(r.data.yearRelationshipList);\r\n\r\n // Get default\r\n let currentDefault = this.preferences['default_ics'];\r\n\r\n // Aggregate all areas\r\n let aggregations = this.formatService.aggregate(this.data, this.relationships, this.details.aggregationType, currentDefault ? currentDefault.preferenceItem : null, this.details);\r\n \r\n // Add aggregations to data\r\n this.data = aggregations;\r\n \r\n // Set aggregated data as selected\r\n this.data.forEach(d => {\r\n d.submissions = this.orderBy.transform(d.aggregated, '-submissionResult');\r\n });\r\n\r\n // Add ICS mean\r\n if (this.preferences.default_ics) {\r\n this.data.forEach(d => {\r\n let defaultOrg = d.submissions.find(s => s.organisationOnsCode === this.preferences.default_ics.preferenceItem);\r\n if (defaultOrg) {\r\n d.defaultResult = defaultOrg.submissionResult;\r\n }\r\n })\r\n }\r\n\r\n // Save aggregation type and param\r\n this.details.aggregation = parentType;\r\n this.router.navigate([], { queryParams: { agg: parentType.toLowerCase() }, queryParamsHandling: 'merge' });\r\n\r\n // Get linked ICS-only data\r\n if (this.details.linkedReportId) {\r\n this.getLinkedData(this.data, this.details.linkedReportId, parentType, categoryIds, null, null, currentDefault);\r\n } else {\r\n // or recreate chart and map\r\n this.createBarChart(this.selected);\r\n this.createLineChart(this.data.reverse());\r\n this.createMap(this.selected, this.period, this.averages, parentType);\r\n\r\n // Finish load\r\n this.loading = false;\r\n }\r\n\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n }\r\n\r\n getLinkedData(data, linkedReportId, parentType, categories?, organisationId?, tierId?, currentDefault?) {\r\n\r\n // Set categoryIds for API call\r\n let categoryIds;\r\n categories ? categoryIds = categories.map(c => c.categoryId) : null;\r\n\r\n // Get linked data\r\n this.subscriptions.push(\r\n this.dataService.getData(linkedReportId, categoryIds, organisationId, tierId).subscribe(\r\n r => {\r\n // Set data\r\n let linked_data: any = this.formatService.data(r.data, currentDefault ? currentDefault.preferenceItem : null);\r\n\r\n // Combine ICB and aggregated data, prioritising ICB data\r\n let combined_data = [];\r\n data.forEach(agg_data => {\r\n let icb_data = linked_data.find(linked => linked.periodId == agg_data.periodId);\r\n if (icb_data) { \r\n combined_data.push(icb_data);\r\n } else {\r\n combined_data.push(agg_data);\r\n }\r\n });\r\n \r\n // Set the combined data\r\n this.data = combined_data;\r\n\r\n // Get selected\r\n this.selected = this.data.find(d => d.periodId === this.period.periodId);\r\n this.averages = this.formatService.averages(this.selected.submissions);\r\n \r\n // Recreate chart and map\r\n this.createBarChart(this.selected);\r\n this.createLineChart(this.data.reverse());\r\n this.createMap(this.selected, this.period, this.averages, parentType);\r\n\r\n // Finish load\r\n this.loading = false;\r\n },\r\n e => { \r\n console.log('Error', e);\r\n }\r\n )\r\n )\r\n }\r\n\r\n getSecondary(reportId, tierId?, currentDefault?) {\r\n\r\n // Reset\r\n this.chartScatterOptions = null;\r\n this.error = null;\r\n this.r2Value = null;\r\n this.secondaryData = null;\r\n this.secondaryDetails = null;\r\n this.data_saved = null;\r\n this.data = JSON.parse(JSON.stringify(this.data_raw));\r\n\r\n // Close menu dropdown\r\n this.toggleDrop('any');\r\n\r\n // Start loading\r\n this.loading = true;\r\n\r\n this.dataService.getDetails(reportId).subscribe(\r\n r => { \r\n // Set secondary details\r\n this.secondaryDetails = this.formatService.details(r.data);\r\n this.secondaryDetails.reportId = reportId;\r\n\r\n // Aggregation check\r\n let allowableTypes = ['LA', 'CCG', 'ICS'];\r\n let primary = this.details.organisationType;\r\n let secondary = this.secondaryDetails.organisationType;\r\n\r\n if (allowableTypes.includes(primary) && allowableTypes.includes(secondary)) {\r\n // Get secondary data\r\n this.getSecondaryData(reportId, tierId, currentDefault);\r\n // Add to URL params\r\n this.router.navigate([], { queryParams: { sec: reportId }, queryParamsHandling: 'merge' });\r\n } else {\r\n this.errorInline = 'Only LA, CCG and ICS reports can be used for primary/secondary comparisons. Please select a different secondary metric.'\r\n this.loading = false;\r\n }\r\n \r\n },\r\n e => {\r\n console.log(e);\r\n this.errorInline = 'This report does not exist.'\r\n }\r\n )\r\n }\r\n\r\n getSecondaryData(reportId, tierId, currentDefault?) {\r\n this.dataService.getData(reportId, null, null, tierId).subscribe(\r\n r => {\r\n this.secondaryData = this.formatService.data(r.data, currentDefault ? currentDefault.preferenceItem : null);\r\n\r\n // Remove periods with no submission data (e.g. Wales-only data with England default)\r\n this.secondaryData = this.secondaryData.filter(data => data.submissions.length);\r\n\r\n // Check for different types and aggregate both\r\n let typeCheck = this.details.organisationType === this.secondaryDetails.organisationType ? true : false; \r\n\r\n if (this.secondaryData.length && !typeCheck) {\r\n \r\n let primaryAggregations, secondaryAggregations;\r\n\r\n this.dataService.getRelationships('ICS to ' + this.details.organisationType).subscribe(\r\n r => {\r\n\r\n // Get primary relationships and aggregations\r\n let relationships = this.formatService.relationships(r.data.yearRelationshipList);\r\n primaryAggregations = this.formatService.aggregate(this.data, relationships, this.details.aggregationType, null, this.details);\r\n\r\n this.dataService.getRelationships('ICS to ' + this.secondaryDetails.organisationType).subscribe(\r\n r => {\r\n\r\n // Get secondary relationships and aggregations\r\n let relationships = this.formatService.relationships(r.data.yearRelationshipList);\r\n secondaryAggregations = this.formatService.aggregate(this.secondaryData, relationships, this.details.aggregationType, null, this.details);\r\n\r\n // If primary or secondary is already ICS, override\r\n if (this.details.organisationType === 'ICS') {\r\n primaryAggregations.forEach(pa => {\r\n pa.aggregated = pa.submissions;\r\n });\r\n }\r\n if (this.secondaryDetails.organisationType === 'ICS') {\r\n secondaryAggregations.forEach(sa => {\r\n sa.aggregated = sa.submissions;\r\n });\r\n }\r\n\r\n // Match available dates: return primary and secondary dates\r\n primaryAggregations = this.formatService.periodMatch(primaryAggregations, secondaryAggregations, true)['data'];\r\n secondaryAggregations = this.formatService.periodMatch(primaryAggregations, secondaryAggregations, true)['secondaryData'];\r\n\r\n // Set the data (different organisation types) \r\n this.data = this.formatService.combineAggregated(primaryAggregations, secondaryAggregations);\r\n\r\n // Save a copy of details and data to local arrays\r\n // TODO: Move to format.service\r\n this.data_saved = JSON.parse(JSON.stringify({\r\n primaryData: this.primary_data_saved[0].submissions,\r\n secondaryData: this.secondaryData[0].submissions,\r\n primaryAggregated: this.orderBy.transform(this.data[0].primaryAggregated, '-submissionResult'),\r\n secondaryAggregated: this.orderBy.transform(this.data[0].secondaryAggregated, '-submissionResult'),\r\n }));\r\n\r\n this.selected = this.data[0];\r\n this.createScatterChart(this.selected, true);\r\n },\r\n e => {\r\n console.log(e);\r\n this.error = 'There has been an error retrieving data for the secondary report. (Report ID: ' + this.secondaryDetails.reportId + ')';\r\n }\r\n )\r\n },\r\n e => {\r\n console.log(e);\r\n this.error = 'There has been an error retrieving data for the primary report. (Report ID: ' + this.details.reportId + ')';\r\n }\r\n )\r\n } else if (this.secondaryData.length && typeCheck) {\r\n\r\n // TODO: Match available dates: return primary and secondary dates\r\n this.data = this.formatService.periodMatch(this.data, this.secondaryData, false)['data'];\r\n this.secondaryData = this.formatService.periodMatch(this.data, this.secondaryData, false)['secondaryData'];\r\n\r\n // Set the data (same organisation types)\r\n this.data = this.formatService.combine(this.data, this.secondaryData);\r\n\r\n // TODO: Move to format.service\r\n this.primary_details_saved = JSON.parse(JSON.stringify(this.details));\r\n this.primary_data_saved = JSON.parse(JSON.stringify(this.data));\r\n this.data_saved = JSON.parse(JSON.stringify({\r\n primaryData: this.data[0].submissions,\r\n secondaryData: this.secondaryData[0].submissions,\r\n }));\r\n\r\n this.selected = this.data[0];\r\n this.createScatterChart(this.selected, false);\r\n\r\n } else {\r\n this.error = 'There is no data for the secondary report. (Report ID: ' + this.secondaryDetails.reportId + ')';\r\n }\r\n },\r\n e => {\r\n console.log(e);\r\n this.error = 'There is no data for the secondary report. (Report ID: ' + this.secondaryDetails.reportId + ')';\r\n },\r\n () => {\r\n this.loading = false;\r\n }\r\n )\r\n }\r\n\r\n getSeries(categoryTypeId, period) {\r\n this.loading = true;\r\n this.toggleDrop('any');\r\n\r\n let categoryIds;\r\n // For independent categories, pass all categories\r\n // TODO: Check API for IC check; currently returning single series\r\n if (this.details.options.includes('IC')) {\r\n this.details.categories.length ? categoryIds = this.details.categories.map(c => c.categoryId) : null;\r\n } else {\r\n this.categories ? categoryIds = this.categories.map(c => c.categoryId) : null;\r\n }\r\n\r\n this.dataService.getSeriesData(this.details.reportId, this.tierId, categoryTypeId, categoryIds).subscribe(\r\n r => {\r\n\r\n if (r.data.availableDates.length) {\r\n\r\n // Get base level series data\r\n let seriesData: any = this.formatService.seriesData(r.data, this.categories, categoryTypeId);\r\n\r\n // Aggregate series data, if necessary\r\n if (this.details.aggregation) {\r\n let aggregatedSeriesData: any = this.formatService.aggregateSeries(seriesData, this.relationships, this.categories, categoryTypeId, this.details.aggregationType);\r\n let selected = aggregatedSeriesData.find(d => d.periodId === period.periodId);\r\n this.createStackedColumn(selected.aggregatedCategories, selected.aggregatedSeries);\r\n this.seriesData = aggregatedSeriesData;\r\n } else {\r\n if (this.highlights) {\r\n seriesData = this.formatService.highlightSeries(seriesData, this.categories, categoryTypeId, this.highlights);\r\n let selected = seriesData.find(d => d.periodId === period.periodId);\r\n this.createStackedColumn(selected.categories, selected.series);\r\n this.seriesData = seriesData;\r\n } else {\r\n this.errorInline = 'Series data is not available for the filters selected.';\r\n this.loading = false;\r\n }\r\n }\r\n\r\n // Set selected categories\r\n this.selectedSeries = this.categories.find(c => c.categoryTypeId === categoryTypeId);\r\n\r\n // Create national stacked column\r\n let currentPeriod = this.seriesData.find(sd => sd.periodId == this.period.periodId);\r\n let series = [];\r\n currentPeriod.mean.forEach(m => {\r\n series.push({\r\n name: m.categoryName,\r\n data: [ m.result ]\r\n })\r\n })\r\n this.createNationalStackedColumn(series);\r\n\r\n // Complete load\r\n this.loading = false;\r\n\r\n } else {\r\n this.errorInline = 'Series data is not available for this category type.';\r\n this.loading = false;\r\n }\r\n\r\n },\r\n e => {\r\n console.log(e);\r\n this.errorInline = 'Series data is not available for this category type.';\r\n },\r\n () => {\r\n this.loading = false;\r\n }\r\n )\r\n }\r\n\r\n // SELECTS\r\n\r\n selectPeriod(period) {\r\n // Set current period data\r\n this.selected = this.data.find(d => d.periodId === period.periodId);\r\n\r\n // Set averages\r\n this.averages = this.formatService.averages(this.selected.submissions);\r\n\r\n // Create chart and map\r\n this.createBarChart(this.selected);\r\n this.createMap(this.selected, period, this.averages, this.details.aggregation ? this.details.aggregation : this.details.organisationType);\r\n\r\n // Redraw stacked bar chart\r\n if (this.seriesData) {\r\n let selected = this.seriesData.find(d => d.periodId === period.periodId);\r\n\r\n let categories, series;\r\n if (this.details.aggregation) {\r\n categories = selected.aggregatedCategories;\r\n series = selected.aggregatedSeries;\r\n } else {\r\n categories = selected.categories;\r\n series = selected.series;\r\n }\r\n\r\n this.createStackedColumn(categories, series);\r\n }\r\n\r\n this.filtered = false;\r\n // Select period and add to params\r\n this.period = this.data.find(d => d.periodId === period.periodId);\r\n this.router.navigate([], { queryParams: { per: period.periodId }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n selectCategory(category) {\r\n let index = this.categories.indexOf(category);\r\n if (this.details.options.includes('IC')) {\r\n this.categories = [];\r\n this.details.categories.forEach(c => {\r\n c.selected = false;\r\n })\r\n }\r\n if (category && index < 0) {\r\n category.selected = true;\r\n this.categories.push(category);\r\n } else if (category) {\r\n category.selected = false;\r\n this.categories = this.categories.filter(c => c.categoryId !== category.categoryId);\r\n }\r\n if (this.details.options.includes('IC')) {\r\n this.independentCategory = this.categories[0];\r\n } else {\r\n this.independentCategory = null;\r\n }\r\n }\r\n\r\n selectAll() {\r\n if (!this.details.options.includes('IC')) {\r\n this.categories = [];\r\n this.details.categories.forEach(c => { \r\n c.selected = true;\r\n this.categories.push(c);\r\n });\r\n }\r\n }\r\n\r\n selectArea(type, event) {\r\n // Get matching area, if aggregated\r\n if (this.details.aggregation && this.selected.aggregatedData && event) {\r\n\r\n // Get onsCode\r\n let onsCode;\r\n if (type === 'map') {\r\n onsCode = event.features[0].properties.onsCode;\r\n } else if (type === 'chart') {\r\n onsCode = event.point.category;\r\n } else if (type === 'scatter') {\r\n onsCode = event.point.code;\r\n } else {\r\n onsCode = event;\r\n }\r\n\r\n // Get area from selected data\r\n let area = onsCode ? this.selected.submissions.find(s => s.organisationOnsCode === onsCode) : null;\r\n if (area) {\r\n this.constituents = area;\r\n this.toggleDrop('constituents');\r\n }\r\n\r\n }\r\n }\r\n\r\n selectDefault(item: any) {\r\n\r\n let currentDefault = this.preferences.selected_default;\r\n\r\n // If current default, remove it\r\n if (currentDefault) {\r\n this.dataService.removePreference(currentDefault.preferenceId).subscribe(\r\n r => {\r\n // Remove from submissions\r\n let currentSubmission = this.selected.submissions.find(s => s.organisationOnsCode == currentDefault.preferenceItem);\r\n if (currentSubmission) { \r\n currentSubmission.preferenceDefault = null;\r\n }\r\n\r\n // Remove from organisations\r\n let currentOrganisation = this.organisations.find(s => s.organisationOnsCode == currentDefault.preferenceItem);\r\n currentOrganisation.preferenceDefault = null;\r\n this.preferences.selected_default = null;\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n }\r\n\r\n // Add new default and replace locally\r\n let type = this.details.aggregation ? this.details.aggregation.toLowerCase() : this.details.organisationType.toLowerCase();\r\n\r\n let postPreference = {\r\n preferenceName: 'default_' + type,\r\n preferenceItem: item.organisationOnsCode\r\n }\r\n\r\n this.dataService.setPreference(postPreference).subscribe(\r\n r => {\r\n let preferenceId = r.data.newPreferenceId;\r\n item.preferenceDefault = preferenceId;\r\n this.preferences.selected_default = {\r\n preferenceId: preferenceId,\r\n preferenceName: postPreference.preferenceName,\r\n preferenceItem: postPreference.preferenceItem\r\n };\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n\r\n }\r\n\r\n // CREATE\r\n\r\n createBarChart(data) {\r\n this.chartBarOptions = {\r\n chart: {\r\n animation: false,\r\n style: { fontFamily: '\"Helvetica Neue\", Arial, sans-serif' },\r\n backgroundColor: '#FFFFFF',\r\n events: {\r\n load: ((e) => { \r\n this.chartBar = e.target;\r\n })\r\n },\r\n },\r\n colors: [''],\r\n tooltip: {\r\n enabled: false\r\n },\r\n title: {\r\n text: ''\r\n },\r\n exporting: { \r\n enabled: false,\r\n chartOptions: {\r\n title: {\r\n text: this.details.reportName\r\n },\r\n subtitle: {\r\n text: this.independentCategory ? this.independentCategory.categoryName : ''\r\n }\r\n }\r\n },\r\n legend: { enabled: false },\r\n credits: { enabled: false },\r\n xAxis: {\r\n labels: { enabled: false },\r\n categories: data.submissions.map(s => s.organisationOnsCode),\r\n gridLineColor: '#EEF1F8'\r\n },\r\n yAxis: {\r\n gridLineColor: '#EEF1F8',\r\n title: {\r\n text: null\r\n },\r\n allowDecimals: false,\r\n plotLines: [{\r\n color: '#00A878',\r\n value: data.mean,\r\n width: 2,\r\n zIndex: 5\r\n }],\r\n labels: {\r\n formatter: ((e) => {\r\n if (this.details.formatModifier === 'P') {\r\n return e.value + '%'\r\n } else {\r\n return e.value\r\n }\r\n })\r\n }\r\n },\r\n plotOptions: {\r\n series: {\r\n animation: false,\r\n marker: {\r\n enabled: false\r\n },\r\n point: {\r\n events: {\r\n mouseOver: e => {\r\n this.toggleHover('chart', e);\r\n },\r\n mouseOut: e => {\r\n this.toggleHover('chart', e);\r\n },\r\n click: e => {\r\n this.selectArea('chart', e);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: 'column',\r\n name: 'Organisations',\r\n color: '#005EB8',\r\n data: data.submissions.map(s => { return { \r\n y: s.submissionResult,\r\n color: s.color ? s.color : null\r\n }}),\r\n states: {\r\n hover: {\r\n color: '#F5A623'\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n // Allow stackable\r\n if (this.details.categories.length && data.submissions.length < 100 && !this.details.options.includes('IC') && this.details.organisationType !== 'Ambulance') {\r\n this.stackable = true;\r\n } else {\r\n this.stackable = false;\r\n }\r\n // Set available preferences\r\n if (this.details.aggregation || ['LA', 'CCG', 'ICS'].includes(this.details.organisationType)) {\r\n this.highlightable = true;\r\n this.preferences = this.formatService.updatePreferences(this.preferences, this.details.aggregation ? this.details.aggregation : this.details.organisationType, data.submissions);\r\n } else {\r\n this.highlightable = false;\r\n }\r\n // Set highest/lowest values for selected period\r\n this.highestLowest = {\r\n national: {\r\n highest: data.submissions[0],\r\n lowest: data.submissions[data.submissions.length - 1]\r\n },\r\n group: null\r\n }\r\n }\r\n\r\n createLineChart(data: any) {\r\n\r\n // Order by periodFrom\r\n data = this.orderBy.transform(data, 'periodFrom');\r\n\r\n this.chartLineOptions = {\r\n chart: {\r\n animation: false,\r\n style: { fontFamily: '\"Helvetica Neue\", Arial, sans-serif' },\r\n backgroundColor: '#FFFFFF',\r\n events: {\r\n load: ((e) => { \r\n this.chartLine = e.target;\r\n })\r\n },\r\n },\r\n colors: [''],\r\n tooltip: {\r\n useHTML: true,\r\n backgroundColor: '#000000',\r\n borderWidth: 0,\r\n shadow: false,\r\n headerFormat: '
{point.x}
',\r\n pointFormat: '',\r\n footerFormat: '
{series.name}:{point.y}
',\r\n valueDecimals: 2,\r\n style: { color: '#FFFFFF' },\r\n shared: true\r\n },\r\n title: {\r\n text: ''\r\n },\r\n exporting: { \r\n enabled: false,\r\n chartOptions: {\r\n title: {\r\n text: this.details.reportName\r\n },\r\n subtitle: {\r\n text: this.independentCategory ? this.independentCategory.categoryName : ''\r\n }\r\n }\r\n },\r\n legend: { enabled: false },\r\n credits: { enabled: false },\r\n xAxis: {\r\n categories: data.map(d => d.periodName),\r\n gridLineColor: '#EEF1F8'\r\n },\r\n yAxis: {\r\n gridLineColor: '#EEF1F8',\r\n title: {\r\n text: null\r\n },\r\n allowDecimals: false,\r\n labels: {\r\n formatter: ((e) => {\r\n if (this.details.formatModifier === 'P') {\r\n return e.value + '%'\r\n } else {\r\n return e.value\r\n }\r\n })\r\n }\r\n },\r\n plotOptions: {\r\n series: {\r\n animation: false,\r\n marker: {\r\n enabled: false\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: 'line',\r\n name: 'National Mean',\r\n color: this.nationalMeanColour,\r\n data: data.map(d => d.mean),\r\n marker: { enabled: true },\r\n states: {\r\n hover: {\r\n color: '#F5A623'\r\n }\r\n }\r\n },\r\n {\r\n type: 'line',\r\n name: 'Organisation Value',\r\n color: this.organisationValueColour,\r\n data: data.map(d => d.defaultResult),\r\n marker: { enabled: true },\r\n states: {\r\n hover: {\r\n color: '#F5A623'\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n\r\n createScatterChart(data, aggregated) {\r\n let scatterData: any = [ { name: 'Combined Data', data: [] } ],\r\n minX, maxX;\r\n\r\n // Set default ONS code for highlight\r\n let organisationType, defaultOnsCode;\r\n \r\n if (aggregated) {\r\n organisationType = 'ics';\r\n } else {\r\n organisationType = this.details.organisationType.toLowerCase();\r\n }\r\n\r\n if (this.preferences['default_' + organisationType]) { \r\n defaultOnsCode = this.preferences['default_' + organisationType].preferenceItem\r\n }\r\n\r\n // Build data\r\n data.combined.forEach(s => {\r\n scatterData[0].data.push({\r\n name: s.organisationName,\r\n code: s.organisationOnsCode,\r\n x: s.submissionResult,\r\n y: s.secondaryResult,\r\n color: s.color ? s.color : (s.organisationOnsCode == defaultOnsCode ? '#E03616' : '#005EB8')\r\n })\r\n });\r\n\r\n if (scatterData[0].data.length) {\r\n // Set min/max on x-axis\r\n minX = scatterData[0].data.map(s => s.x).reduce((a, b) => Math.min(a, b));\r\n maxX = scatterData[0].data.map(s => s.x).reduce((a, b) => Math.max(a, b));\r\n\r\n this.chartScatterOptions = {\r\n title: { text: '' },\r\n exporting: { \r\n enabled: false,\r\n chartOptions: {\r\n title: {\r\n text: this.details.reportName\r\n },\r\n subtitle: {\r\n text: this.independentCategory ? this.independentCategory.categoryName : ''\r\n }\r\n }\r\n },\r\n legend: { enabled: false },\r\n credits: { enabled: false },\r\n tooltip: {\r\n useHTML: true,\r\n backgroundColor: '#000000',\r\n borderWidth: 0,\r\n valueDecimals: 2,\r\n shadow: false,\r\n headerFormat: '
',\r\n pointFormat: '
{point.name}
{point.code}
{point.x:.0f}
{point.y:.0f}
',\r\n footerFormat: '
',\r\n style: { color: '#FFFFFF' },\r\n shared: true\r\n },\r\n chart: {\r\n type: 'scatter',\r\n zoomType: 'xy',\r\n animation: false,\r\n style: { fontFamily: '\"Helvetica Neue\", Arial, sans-serif' },\r\n backgroundColor: '#FFFFFF',\r\n events: {\r\n load: ((e) => { \r\n this.chartScatter = e.target;\r\n this.rSquared();\r\n this.regression();\r\n })\r\n },\r\n },\r\n yAxis: {\r\n gridLineColor: '#EEF1F8',\r\n title: {\r\n text: this.secondaryDetails.reportName,\r\n margin: 20\r\n },\r\n },\r\n xAxis: {\r\n title: {\r\n text: this.details.reportName,\r\n margin: 20\r\n },\r\n min: minX,\r\n max: maxX\r\n },\r\n plotOptions: {\r\n series: {\r\n point: {\r\n events: {\r\n // click: e => {\r\n // this.selectArea('scatter', e);\r\n // }\r\n }\r\n }\r\n }\r\n },\r\n series: scatterData\r\n }\r\n\r\n // Show primary data by default\r\n this.toggleSelected('primary', aggregated); \r\n } else {\r\n this.error = 'It has not been possible to show this Theme with the default organisation selected.'\r\n }\r\n }\r\n\r\n createStackedColumn(categories, series) {\r\n\r\n series = this.orderBy.transform(series, 'name');\r\n\r\n this.chartStackedColumnOptions = {\r\n title: { text: '' },\r\n exporting: { \r\n enabled: false,\r\n chartOptions: {\r\n title: {\r\n text: this.details.reportName\r\n },\r\n subtitle: {\r\n text: this.independentCategory ? this.independentCategory.categoryName : ''\r\n }\r\n }\r\n },\r\n credits: { enabled: false },\r\n colors: this.colors,\r\n tooltip: {\r\n useHTML: true,\r\n backgroundColor: '#000000',\r\n borderWidth: 0,\r\n shadow: false,\r\n headerFormat: '
{point.x}
',\r\n pointFormat: '',\r\n footerFormat: '
{series.name}:{point.y}
',\r\n valueDecimals: 2,\r\n style: { color: '#FFFFFF' },\r\n shared: true\r\n },\r\n chart: {\r\n type: 'column',\r\n animation: false,\r\n style: { fontFamily: '\"Helvetica Neue\", Arial, sans-serif' },\r\n backgroundColor: '#FFFFFF',\r\n events: {\r\n load: ((e) => { \r\n this.chartStackedColumn = e.target;\r\n })\r\n },\r\n },\r\n yAxis: {\r\n gridLineColor: '#EEF1F8',\r\n title: {\r\n enabled: false\r\n },\r\n labels: {\r\n formatter: ((e) => {\r\n return e.value + '%'\r\n })\r\n }\r\n },\r\n xAxis: {\r\n categories: categories,\r\n labels: {\r\n enabled: false\r\n }\r\n },\r\n legend: {\r\n align: 'right'\r\n },\r\n plotOptions: {\r\n column: {\r\n stacking: 'percent'\r\n }\r\n },\r\n series: series\r\n }\r\n }\r\n\r\n createNationalStackedColumn(series) {\r\n\r\n series = this.orderBy.transform(series, 'name');\r\n\r\n this.chartNationalStackedColumnOptions = {\r\n title: { text: '' },\r\n exporting: { \r\n enabled: false,\r\n chartOptions: {\r\n title: {\r\n text: this.details.reportName\r\n },\r\n subtitle: {\r\n text: this.independentCategory ? this.independentCategory.categoryName : ''\r\n }\r\n }\r\n },\r\n credits: { enabled: false },\r\n colors: this.colors,\r\n tooltip: {\r\n useHTML: true,\r\n backgroundColor: '#000000',\r\n borderWidth: 0,\r\n shadow: false,\r\n headerFormat: '
National
',\r\n pointFormat: '',\r\n footerFormat: '
{series.name}:{point.y}
',\r\n valueDecimals: 2,\r\n style: { color: '#FFFFFF' },\r\n shared: true\r\n },\r\n chart: {\r\n type: 'column',\r\n animation: false,\r\n style: { fontFamily: '\"Helvetica Neue\", Arial, sans-serif' },\r\n backgroundColor: '#FFFFFF',\r\n events: {\r\n load: ((e) => { \r\n this.chartStackedColumn = e.target;\r\n })\r\n },\r\n },\r\n yAxis: {\r\n gridLineColor: '#EEF1F8',\r\n title: {\r\n text: this.details.reportName,\r\n margin: 20\r\n },\r\n labels: {\r\n formatter: ((e) => {\r\n return e.value + '%'\r\n })\r\n }\r\n },\r\n xAxis: {\r\n labels: {\r\n enabled: false\r\n }\r\n },\r\n legend: {\r\n enabled: false\r\n },\r\n plotOptions: {\r\n column: {\r\n stacking: 'percent'\r\n }\r\n },\r\n series: series\r\n }\r\n }\r\n\r\n createMap(results, period, averages?, type?) {\r\n\r\n this.map = null;\r\n this.mapOptions = null;\r\n this.point = null;\r\n this.details.mapUrl = null;\r\n type = type.toLowerCase();\r\n\r\n // TODO: Move newUrl to format.map (including overrides)\r\n let newYear;\r\n let newUrl;\r\n \r\n if (results.periodFy >= 2425) {\r\n newYear = '_24'\r\n } else if (results.periodFy < 2021 && (type === 'ccg' || type === 'la')) {\r\n newYear = ''\r\n }\r\n else {\r\n newYear = '_' + results.periodFy.toString().substring(0, 2);\r\n }\r\n \r\n // CAMHS override\r\n if (this.details.options.includes('CM')) {\r\n type = 'camhs'\r\n }\r\n\r\n // QOF 19/20 override\r\n if (this.details.reportName.substring(0,3) == 'QOF' && results.periodFy == 1920) {\r\n newYear = '_20'\r\n }\r\n\r\n // QOF 20/21 override\r\n if (this.details.reportName.substring(0,3) == 'QOF' && results.periodFy == 2021) {\r\n newYear = '_21'\r\n }\r\n\r\n // QOF 21/22 override\r\n if (this.details.reportName.substring(0,3) == 'QOF' && results.periodFy == 2122) {\r\n newYear = '_22'\r\n }\r\n\r\n let periods = this.orderBy.transform(this.data, 'periodFy');\r\n // Use map one year beyond data period (latest period only)\r\n if (this.details.options.includes('YP1') && periods[periods.length-1].periodFy == results.periodFy) {\r\n let yearPlus1 = results.periodFy + 101;\r\n if (yearPlus1 < 2021 && (type === 'ccg' || type === 'la')) {\r\n newYear = '_' + (yearPlus1 + 202).toString().substring(0,2);\r\n } else {\r\n newYear = '_' + yearPlus1.toString().substring(0,2);\r\n }\r\n }\r\n // Use map one year behind data period (latest period only)\r\n if (this.details.options.includes('YM1') && periods[periods.length-1].periodFy == results.periodFy) {\r\n let yearMinus1 = results.periodFy - 101;\r\n if (yearMinus1 < 2021 && (type === 'ccg' || type === 'la')) {\r\n newYear = ''\r\n } else {\r\n newYear = '_' + yearMinus1.toString().substring(0,2);\r\n }\r\n }\r\n\r\n // CCG/sub-ICB override for April-June 2022 (intermediary data period)\r\n if (['Apr-22','May-22','Jun-22'].includes(period.periodName) && (type == 'ccg' || type == 'ics')) {\r\n newYear = '_21'\r\n }\r\n\r\n // Create URL\r\n newUrl = 'assets/maps/map_' + type + newYear + '.json';\r\n\r\n // ICS URL override\r\n if (type === 'ics' && period.aggregatedData) {\r\n newUrl = 'assets/maps/map_ics_24.json'\r\n }\r\n\r\n // ICS archive override\r\n if (this.details.options.includes('IA')) {\r\n newUrl = 'assets/maps/map_ics_archive.json'\r\n }\r\n\r\n // Local Authority Region override\r\n if (type === 'lar') {\r\n newUrl = 'assets/maps/map_lar_19.json'\r\n }\r\n\r\n // Add map URL to details\r\n this.details.mapUrl = newUrl;\r\n this.infoPanel.mapUrl = this.details.mapUrl;\r\n\r\n if (newUrl) {\r\n this.http.get(newUrl).subscribe(\r\n (geojson: any) => {\r\n \r\n // Add value to matching geojson feature (if available)\r\n geojson.features.forEach(g => {\r\n let organisation = results.submissions.filter(c => c.organisationOnsCode === g.properties.onsCode)[0];\r\n if (organisation) {\r\n organisation.mapArea = true;\r\n g.properties.value = organisation.submissionResult || null;\r\n }\r\n });\r\n\r\n // Limit to just organisations with values\r\n let values: any = {\r\n type: \"FeatureCollection\",\r\n features: geojson.features.filter(f => f.properties.value)\r\n }\r\n \r\n // Add comparisons counts to details\r\n this.details.noMapAreas = values.features.length;\r\n this.details.noResults = results.submissions.length;\r\n this.infoPanel.mapUrl = this.details.mapUrl;\r\n this.infoPanel.noMapAreas = this.details.noMapAreas;\r\n this.infoPanel.noResults = this.details.noResults;\r\n\r\n // Set bounds\r\n let bounds = extent(values);\r\n \r\n // Set fill color based on averages\r\n let fillColor;\r\n const stops = [ averages.min, averages.quartile25, averages.median, averages.quartile75 ];\r\n let duplicates = checkForDuplicates(stops);\r\n\r\n // Duplicate check\r\n function checkForDuplicates(array) {\r\n return new Set(array).size !== array.length;\r\n }\r\n\r\n // Set colors\r\n if (duplicates) {\r\n fillColor = '#0D5EB8'\r\n } else {\r\n fillColor = [\r\n 'interpolate',\r\n ['exponential', 0],\r\n ['get', 'value'],\r\n averages.min, '#C2D7ED',\r\n averages.quartile25, '#86AED8',\r\n averages.median, '#4A87CA',\r\n averages.quartile75, '#0D5EB8'\r\n ]\r\n }\r\n\r\n // Set default\r\n let defaultOrganisation = results.submissions.find(s => s.color === '#E03616');\r\n let defaultOnsCode = defaultOrganisation ? defaultOrganisation.organisationOnsCode : '';\r\n \r\n // Build Mapbox map\r\n this.mapOptions = {\r\n style: 'mapbox://styles/dhughesbmc/ck49sb7ni05c51cn4axz029os',\r\n bounds: bounds,\r\n boundsOptions: {\r\n padding: { top: 20, bottom: 20, left: 20, right: 20 }\r\n },\r\n type: 'fill',\r\n logoPosition: 'top-right',\r\n paint: {\r\n 'fill-color': fillColor,\r\n 'fill-outline-color': '#FFFFFF',\r\n 'fill-opacity': 0.75\r\n },\r\n hover: {\r\n 'line-color': '#f5a63a',\r\n 'line-width': 2\r\n },\r\n source: {\r\n type: 'geojson',\r\n data: values\r\n },\r\n default: {\r\n 'line-color': '#e03616',\r\n 'line-width': 2\r\n },\r\n defaultFilter: ['==', 'onsCode', defaultOnsCode],\r\n filter: ['==', 'onsCode', '']\r\n }\r\n \r\n },\r\n e => {\r\n console.log('No map', e);\r\n this.mapOptions = null;\r\n this.noMapbox = true;\r\n }\r\n );\r\n } else {\r\n console.log('No map');\r\n this.noMapbox = true;\r\n }\r\n \r\n }\r\n\r\n createPreferences() {\r\n\r\n let group = this.preferences.selected_group;\r\n\r\n let organisationType = this.details.organisationType === 'LA' ? 'Local Authority' : this.details.organisationType;\r\n this.dataService.getOrganisations(this.details.aggregation ? this.details.aggregation : organisationType).subscribe(\r\n r => {\r\n this.organisations = r.data.organisationList;\r\n \r\n // Add to organisations list\r\n this.organisations.forEach(d => {\r\n if (this.preferences.selected_default && d.organisationOnsCode === this.preferences.selected_default.preferenceItem) {\r\n d.preferenceDefault = this.preferences.selected_default.preferenceId;\r\n }\r\n if (group) {\r\n let findPreference = group.find(g => g.preferenceItem === d.organisationOnsCode);\r\n if (findPreference) {\r\n d.preferenceGroup = findPreference.preferenceId;\r\n }\r\n }\r\n })\r\n\r\n // Add to current submissions\r\n this.selected.submissions.forEach(d => {\r\n if (this.preferences.selected_default && d.organisationOnsCode === this.preferences.selected_default.preferenceItem) {\r\n d.preferenceDefault = this.preferences.selected_default.preferenceId;\r\n }\r\n if (group) {\r\n let findPreference = group.find(g => g.preferenceItem === d.organisationOnsCode);\r\n if (findPreference) {\r\n d.preferenceGroup = findPreference.preferenceId;\r\n }\r\n }\r\n });\r\n\r\n },\r\n e => {\r\n console.log(e);\r\n this.errorInline = 'There has been an error retrieving your preferences. Please try refreshing the page.'\r\n }\r\n )\r\n\r\n // TODO: Save to sessionStorage by type\r\n\r\n }\r\n\r\n // TOGGLES\r\n\r\n toggleHighlight(type: string) {\r\n\r\n let highlights;\r\n\r\n if (this.filtered === true) {\r\n this.toggleFilter('off');\r\n }\r\n\r\n // Neighbour\r\n if (type === 'neighbour') {\r\n this.dataService.getNeighbours(this.preferences.selected_default.organisationId).subscribe(\r\n r => {\r\n let neighbourOrganisations: any = this.formatService.neighbours(r.data.neighbourYears);\r\n highlights = neighbourOrganisations.map(o => o.organisationOnsCode);\r\n this.highlight(type, highlights);\r\n },\r\n e => {\r\n console.log(e);\r\n this.errorInline = 'There has been an error retrieving the neighbour organisations.'\r\n }\r\n )\r\n }\r\n\r\n // Region\r\n if (type === 'region') {\r\n let organisationType = this.details.organisationType === 'LA' ? 'Local Authority' : this.details.organisationType;\r\n this.dataService.getOrganisations(this.details.aggregation ? this.details.aggregation : organisationType).subscribe(\r\n r => {\r\n let organisations = r.data.organisationList;\r\n if (organisations) {\r\n let regionOrganisations: any = this.formatService.regions(r.data.organisationList, this.preferences.selected_default.preferenceItem);\r\n highlights = regionOrganisations.map(o => o.organisationOnsCode);\r\n this.highlight(type, highlights);\r\n } else {\r\n this.errorInline = 'There is no region set for your default organisation.'\r\n }\r\n },\r\n e => {\r\n console.log(e);\r\n this.errorInline = 'There has been an error retrieving the region organisations.'\r\n }\r\n )\r\n }\r\n\r\n // ICS\r\n if (type === 'ics') {\r\n this.dataService.getRelationships('ICS to ' + this.details.organisationType).subscribe(\r\n r => {\r\n let relationships: any = this.formatService.relationships(r.data.yearRelationshipList);\r\n let currentPeriod = relationships.find(r => r.periodFy == this.period.periodFy);\r\n let defaultIcs, highlights;\r\n if (currentPeriod) {\r\n defaultIcs = currentPeriod.relationships.filter(cp => cp.childOnsCode == this.preferences.selected_default.preferenceItem)[0].parentOnsCode\r\n }\r\n if (defaultIcs) {\r\n highlights = currentPeriod.relationships.filter(cp => cp.parentOnsCode == defaultIcs);\r\n highlights = highlights.map(o => o.childOnsCode);\r\n }\r\n if (highlights != undefined) {\r\n this.highlight(type, highlights);\r\n } else {\r\n this.errorInline = 'It has not been possible to highlight the ICS for your current default organisation.'\r\n }\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n }\r\n\r\n // Custom Group\r\n if (type === 'custom_group') {\r\n highlights = this.preferences.selected_group.map(g => g.preferenceItem);\r\n this.highlight(type, highlights);\r\n }\r\n\r\n }\r\n\r\n highlight(type, highlights) {\r\n\r\n let arrayName = this.secondaryDetails ? 'combined' : 'submissions';\r\n\r\n let timeSeriesChart = this.chartLine;\r\n this.point = null;\r\n\r\n // If highlighted, reset colours to original values\r\n if (type === this.highlighted) {\r\n\r\n this.highlighted = null;\r\n this.highlights = null;\r\n\r\n this.data.forEach(d => {\r\n d[arrayName].forEach(s => {\r\n s.color = '#005EB8'\r\n });\r\n });\r\n\r\n if (!this.secondaryDetails) {\r\n let seriesIndex = timeSeriesChart.series.findIndex(s => s.name === 'Group Mean');\r\n if (timeSeriesChart.series[seriesIndex]) {\r\n timeSeriesChart.series[seriesIndex].remove();\r\n };\r\n }\r\n\r\n this.highestLowestGroup = null;\r\n\r\n } else {\r\n\r\n let group;\r\n\r\n this.data.forEach(d => {\r\n d[arrayName].forEach(s => {\r\n if (highlights && highlights.includes(s.organisationOnsCode)) {\r\n s.color = '#005EB8';\r\n s.highlighted = true;\r\n } else {\r\n s.color = '#CEDFF0';\r\n s.highlighted = false;\r\n }\r\n });\r\n });\r\n\r\n // Set group averages for each period\r\n this.data.forEach(d => {\r\n group = d[arrayName].filter(s => s.highlighted);\r\n if (group.length) {\r\n let groupAverages: any = this.formatService.averages(group);\r\n d.groupMean = groupAverages.mean;\r\n }\r\n });\r\n\r\n // Add to time series\r\n if (group.length && !this.secondaryDetails) {\r\n timeSeriesChart.addSeries({\r\n type: 'line',\r\n name: 'Group Mean',\r\n color: '#005EB8',\r\n data: this.data.map(d => d.groupMean),\r\n marker: { enabled: true },\r\n states: {\r\n hover: {\r\n color: '#F5A623'\r\n }\r\n }\r\n }, true);\r\n }\r\n\r\n // TODO: Add group average line to bar chart (addPlotLine not working)\r\n\r\n // Save highlights for seriesData\r\n this.highlighted = type;\r\n this.highlights = highlights;\r\n\r\n }\r\n\r\n // Always set default back to red\r\n if (this.preferences.selected_default) {\r\n this.data.forEach(d => {\r\n let defaultOrg = d[arrayName].find(s => s.organisationOnsCode === this.preferences.selected_default.preferenceItem);\r\n if (defaultOrg) {\r\n defaultOrg.color = '#E03616';\r\n defaultOrg.highlighted = true;\r\n }\r\n })\r\n }\r\n\r\n // Add highest and lowest for group for selected period\r\n let group = this.selected.submissions.filter(s => s.highlighted);\r\n this.highestLowestGroup = {\r\n highest: group[0],\r\n lowest: group[group.length - 1]\r\n }\r\n\r\n // Redraw bar chart\r\n this.createBarChart(this.selected);\r\n\r\n // Redraw scatter chart, if visible\r\n if (this.secondaryDetails) {\r\n this.createScatterChart(this.selected, false);\r\n }\r\n\r\n }\r\n\r\n toggleFilter(toggle: string) {\r\n\r\n if (toggle === 'on') {\r\n // TOGGLE ON\r\n this.filtered = true;\r\n // 1. Create copy of submissions (allSubmissions);\r\n this.selected.allSubmissions = JSON.parse(JSON.stringify(this.selected.submissions));\r\n // 2. Make submissions = highlighted\r\n let highlighted = this.selected.submissions.filter(s => s.highlighted == true);\r\n this.selected.submissions = highlighted;\r\n // 3. Recreate bar chart\r\n this.createBarChart(this.selected);\r\n this.createMap(this.selected, this.period, this.averages, this.details.aggregation ? this.details.aggregation : this.details.organisationType);\r\n }\r\n\r\n if (toggle === 'off') {\r\n this.filtered = false;\r\n // TOGGLE OFF\r\n // 1. Revert submissions back to allSubmissions\r\n this.selected.submissions = this.selected.allSubmissions;\r\n // 3. Recreate bar chart\r\n this.createBarChart(this.selected);\r\n // 4. Recreate map (standard zoom)\r\n this.createMap(this.selected, this.period, this.averages, this.details.aggregation ? this.details.aggregation : this.details.organisationType);\r\n }\r\n\r\n }\r\n\r\n // TODO: Incorporate this, or not?\r\n toggleOrganisationHighlighting() {\r\n\r\n let highlights = this.selected.submissions.filter(s => s.highlighted == true);\r\n\r\n highlights.forEach((h, i) => {\r\n if (h.color !== '#E03616') {\r\n h.color = this.colors[i];\r\n }\r\n })\r\n\r\n // Redraw bar chart\r\n this.createBarChart(this.selected);\r\n\r\n }\r\n\r\n // TODO: toggleCountry(E, W) {}\r\n\r\n toggleDrop(type) {\r\n if (this.drop.preferences && type === 'any') {\r\n Object.keys(this.drop).forEach(d => this.drop[d] = false);\r\n this.getPreferences(true);\r\n this.getData(this.details.reportId, this.period.periodId, this.categories); \r\n } else {\r\n if (type === 'any') {\r\n Object.keys(this.drop).forEach(d => this.drop[d] = false);\r\n this.tiers.forEach(t => t.open = false);\r\n } else {\r\n this.drop[type] = true;\r\n this.drop.any = true;\r\n }\r\n }\r\n if(this.infoPanel)\r\n this.infoPanel.info = this.drop.info;\r\n }\r\n \r\n toggleTier(tier, index) {\r\n if (tier.open) {\r\n tier.open = false;\r\n this.toggleDrop('any');\r\n } else {\r\n this.toggleDrop('tiers');\r\n this.tiers.forEach(t => t.open = false);\r\n tier.open = true;\r\n }\r\n if (index > 4) {\r\n this.topTierRight = true;\r\n } else {\r\n this.topTierRight = false;\r\n }\r\n } \r\n\r\n toggleHover(type, event?) {\r\n\r\n let chart = this.chartBar;\r\n \r\n // Define codes and points\r\n let onsCode, organisation, points, point;\r\n\r\n // Reset points\r\n if (this.mapOptions && this.chartBarOptions) {\r\n this.mapOptions.filter = ['==', 'onsCode', ''];\r\n this.point ? this.point.setState('normal') : null;\r\n points = chart.series[0] ? chart.series[0]['points'] : null;\r\n }\r\n\r\n if (event != undefined) {\r\n\r\n // Find onsCode of hover\r\n if (points && type === 'map' && event) {\r\n onsCode = event.features[0].properties.onsCode;\r\n this.mouseX = event.originalEvent.clientX;\r\n this.mouseY = event.originalEvent.clientY - 100;\r\n } else if (type === 'chart' && event) {\r\n onsCode = event.target.category;\r\n this.mouseX = event.target.tooltipPos[0];\r\n this.mouseY = event.target.plotY + 200;\r\n } else {\r\n this.mapOptions.filter = ['==', 'onsCode', ''];\r\n this.hover = null;\r\n }\r\n\r\n // Define point and states\r\n if (points && this.mapOptions && this.chartBarOptions && onsCode) {\r\n organisation = this.selected.submissions.find(s => s.organisationOnsCode === onsCode);\r\n point = points.find(p => p['category'] === onsCode);\r\n this.mapOptions.filter = onsCode ? ['==', 'onsCode', onsCode] : this.mapOptions.filter;\r\n this.hover = organisation ? organisation : null;\r\n this.point = point;\r\n point.setState('hover');\r\n }\r\n\r\n if (points && type === 'chart' && event.type === 'mouseOut') {\r\n this.mapOptions.filter = ['==', 'onsCode', ''];\r\n this.hover = null;\r\n }\r\n } else {\r\n this.hover = null;\r\n }\r\n\r\n }\r\n\r\n toggleAggregation() {\r\n // TODO: Set dynamically based on organisationType\r\n let parentType = 'ICS';\r\n \r\n // Remove filters first\r\n this.filtered = false;\r\n if (this.selected.allSubmissions) {\r\n this.selected.submissions = this.selected.allSubmissions;\r\n }\r\n\r\n // Remove highlighting\r\n let chart = this.chartLine;\r\n let seriesIndex = chart.series.findIndex(s => s.name === 'Group Mean');\r\n if (seriesIndex > -1) {\r\n chart.series[seriesIndex].remove();\r\n }\r\n this.highlighted = null;\r\n\r\n // Remove stacked\r\n this.removeStacked();\r\n\r\n if (this.details.aggregation) {\r\n // Reset series data\r\n this.seriesData = null;\r\n this.chartStackedColumnOptions = null;\r\n this.seriesCategory = null;\r\n // Get data\r\n this.getData(this.details.reportId, this.period.periodId, this.categories, null, this.tierId);\r\n this.details.aggregation = null;\r\n this.router.navigate([], { queryParams: { agg: 'off' }, queryParamsHandling: 'merge' });\r\n } else {\r\n this.getAggregation(parentType, this.categories);\r\n }\r\n }\r\n\r\n toggleSelected(metric: string, aggregated: boolean) { \r\n let details, data, selected, averages;\r\n\r\n if (metric == 'primary' && aggregated == false) {\r\n details = this.primary_details_saved;\r\n details.aggregation = null;\r\n data = this.primary_data_saved;\r\n data[0].submissions = this.data_saved.primaryData;\r\n }\r\n\r\n if (metric == 'secondary' && aggregated == false) {\r\n details = this.secondaryDetails;\r\n details.aggregation = null;\r\n data = this.secondaryData;\r\n data[0].submissions = this.data_saved.secondaryData;\r\n }\r\n\r\n if (metric == 'primary' && aggregated == true) {\r\n details = this.primary_details_saved;\r\n details.aggregation = 'ICS';\r\n data = this.primary_data_saved;\r\n data[0].submissions = this.data_saved.primaryAggregated;\r\n }\r\n\r\n if (metric == 'secondary' && aggregated == true) {\r\n details = this.secondaryDetails;\r\n details.aggregation = 'ICS';\r\n data = this.secondaryData;\r\n data[0].submissions = this.data_saved.secondaryAggregated; \r\n }\r\n\r\n selected = data[0];\r\n averages = this.formatService.averages(selected.submissions);\r\n\r\n // Set \r\n this.details = details;\r\n this.data = data;\r\n this.selected = selected;\r\n this.averages = averages;\r\n this.createBarChart(this.selected);\r\n this.createMap(this.selected, this.period, this.averages, this.details.aggregation ? this.details.aggregation : this.details.organisationType);\r\n this.createLineChart(this.data.reverse());\r\n\r\n }\r\n\r\n // UTILITIES\r\n\r\n deleteGroupItem(item: any) {\r\n this.dataService.removePreference(item.preferenceGroup).subscribe(\r\n r => {\r\n // Remove from submission list\r\n item.preferenceGroup = null;\r\n\r\n // Remove from preferences\r\n let preferenceIndex = this.preferences.selected_group.findIndex(p => p.preferenceId === item.preferenceGroup);\r\n this.preferences.selected_group.splice(preferenceIndex, 1);\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n }\r\n\r\n addGroupItem(item: any) {\r\n\r\n // Define type\r\n let type = this.details.aggregation ? this.details.aggregation.toLowerCase() : this.details.organisationType.toLowerCase();\r\n\r\n // Create API POST body\r\n let postPreference = {\r\n preferenceName: 'custom_group_' + type,\r\n preferenceItem: item.organisationOnsCode\r\n }\r\n\r\n this.dataService.setPreference(postPreference).subscribe(\r\n r => {\r\n let preferenceId = r.data.newPreferenceId\r\n\r\n // Create preference to add to local array\r\n item.preferenceGroup = preferenceId;\r\n\r\n // Create a group if not already created\r\n if (!this.preferences.selected_group) {\r\n this.preferences.selected_group = [];\r\n }\r\n\r\n // Create API POST body\r\n this.preferences.selected_group.push({\r\n preferenceId: item.preferenceGroup,\r\n preferenceName: postPreference.preferenceName,\r\n preferenceItem: postPreference.preferenceItem\r\n })\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n }\r\n\r\n openBookmarks() {\r\n \r\n // Add tier name to bookmarks via tierId, set URL and check aggregation\r\n if (this.preferences.bookmark) {\r\n this.preferences.bookmark.forEach(b => {\r\n let matchTier = this.search.find(s => s.searchTier == +b.preferenceItem);\r\n if (matchTier) {\r\n b.tier = matchTier;\r\n b.url = b.preferenceParameters;\r\n b.aggregated = b.preferenceParameters.includes('agg=');\r\n }\r\n });\r\n }\r\n\r\n // Open modal\r\n this.toggleDrop('bookmarks');\r\n }\r\n\r\n addBookmark() {\r\n\r\n let postPreference = {\r\n preferenceName: 'bookmark',\r\n preferenceItem: this.tierId.toString(),\r\n preferenceParameters: this.router.url\r\n }\r\n\r\n this.dataService.setPreference(postPreference).subscribe(\r\n r => {\r\n if (!this.preferences.bookmark) {\r\n this.preferences.bookmark = [];\r\n }\r\n postPreference['preferenceId'] = r.data.newPreferenceId;\r\n this.preferences.bookmark.push(\r\n postPreference\r\n )\r\n this.bookmarked = 'Bookmarked';\r\n },\r\n e => {\r\n console.log(e);\r\n this.bookmarked = 'Already bookmarked';\r\n }\r\n )\r\n }\r\n\r\n removeBookmark(item) {\r\n if (confirm(\"Are you sure you want to delete this bookmark?\")) {\r\n this.dataService.removePreference(item.preferenceId).subscribe(\r\n r => {\r\n // Remove from preferences\r\n let preferenceIndex = this.preferences.bookmark.findIndex(p => p.preferenceId === item.preferenceId);\r\n this.preferences.bookmark.splice(preferenceIndex, 1);\r\n this.bookmarked = null;\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n }\r\n }\r\n\r\n clearCustomGroup() {\r\n if (confirm(\"Are you sure to clear all organisations from your custom group?\")) {\r\n let customGroup = this.organisations.filter(o => o.preferenceGroup);\r\n customGroup.forEach(cg => {\r\n this.deleteGroupItem(cg);\r\n })\r\n }\r\n }\r\n\r\n removeDefault() {\r\n\r\n let currentDefault = this.preferences.selected_default;\r\n\r\n // If current default, remove it\r\n if (currentDefault) {\r\n this.dataService.removePreference(currentDefault.preferenceId).subscribe(\r\n r => {\r\n let currentSubmission = this.selected.submissions.find(s => s.organisationOnsCode == currentDefault.preferenceItem);\r\n if (currentSubmission) {\r\n currentSubmission.preferenceDefault = null;\r\n }\r\n let currentOrganisation = this.organisations.find(s => s.organisationOnsCode == currentDefault.preferenceItem);\r\n if (currentOrganisation) {\r\n currentOrganisation.preferenceDefault = null;\r\n }\r\n this.preferences.selected_default = null;\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n }\r\n }\r\n\r\n removeStacked() {\r\n this.chartStackedColumn = null;\r\n this.chartStackedColumnOptions = null;\r\n this.seriesCategory = null;\r\n }\r\n\r\n reorderTable(column: string) {\r\n this.columnOrder == '+' ? this.columnOrder = '-' : this.columnOrder = '+';\r\n this.selected.submissions = this.orderBy.transform(this.selected.submissions, this.columnOrder + column);\r\n }\r\n\r\n keydown(event, query) {\r\n\r\n // Get search results\r\n let search = this.filterBy.transform(this.search, ['searchName'], query);\r\n let keycode = event.keyCode;\r\n\r\n // Navigate by keyboard\r\n if (keycode == 40 && query !== undefined && this.count < (search.length - 1) && search.length > 0) {\r\n // Down\r\n this.count = this.count + 1;\r\n search.forEach(s => s.active = false);\r\n search[this.count].active = true;\r\n } else if (keycode === 38 && query !== undefined && this.count > 0 && search.length > 0) {\r\n // Up\r\n this.count = this.count - 1;\r\n search.forEach(s => s.active = false);\r\n search[this.count].active = true;\r\n } else if (keycode === 13) {\r\n // Enter\r\n if (search.length > 0) {\r\n if (this.count == -1) { this.count = 0 };\r\n let tier = search[this.count];\r\n this.getDetails(tier.reportId + '-' + tier.searchTier, tier.childrenTiers);\r\n this.count = -1;\r\n }\r\n } else if (keycode == 27) {\r\n // Escape\r\n this.toggleDrop('any');\r\n this.count = -1;\r\n }\r\n }\r\n\r\n unsubscribe() {\r\n this.subscriptions.forEach(s => {\r\n s.unsubscribe();\r\n });\r\n }\r\n\r\n rSquared() {\r\n\r\n let temp = [];\r\n let themeData = [];\r\n \r\n this.chartScatter.series[0].data.forEach(p => {\r\n // Add values to themeData\r\n themeData.push({\r\n name: p['options'].name,\r\n x: p['options'].x,\r\n y: p['options'].y\r\n });\r\n // Add values to temp array\r\n temp.push({\r\n valueY: p.y,\r\n valueX: p.x\r\n // Alternative: rounded values\r\n // valueY: p.y ? Math.floor(p.y) : p.y,\r\n // valueX: p.x ? Math.floor(p.x) : p.x\r\n })\r\n });\r\n\r\n // Remove null values\r\n temp = temp.filter(d => d.valueX != null && d.valueY != null);\r\n\r\n // Calculate means and rData\r\n let meanY = temp.map(t => t.valueY).reduce((a, b) => a + b, 0) / temp.length, // y values\r\n meanX = temp.map(t => t.valueX).reduce((a, b) => a + b, 0) / temp.length, // x values\r\n rData = [];\r\n\r\n // Calculate differences\r\n temp.forEach(function(p, i) {\r\n rData.push({\r\n diffY: p.valueY - meanY,\r\n diffX: p.valueX - meanX,\r\n diffXY: (p.valueX - meanX) * (p.valueY - meanY),\r\n diffXX: (p.valueX - meanX) * (p.valueX - meanX),\r\n diffYY: (p.valueY - meanY) * (p.valueY - meanY)\r\n })\r\n });\r\n \r\n // Numerator (sum of XY differences)\r\n let num = rData.map(d => d.diffXY).reduce((a, b) => a + b, 0);\r\n\r\n // Denominator (square-root of sum of YY differences multiplied by sum of XX differences)\r\n let denom = rData.map(d => d.diffYY).reduce((a, b) => a + b, 0) * rData.map(d => d.diffXX).reduce((a, b) => a + b, 0);\r\n denom = Math.sqrt(denom);\r\n\r\n // R-value (numerator divided by denominator)\r\n let rValue = num / denom;\r\n\r\n // R-squared\r\n this.r2Value = (rValue * rValue).toFixed(4);\r\n\r\n }\r\n\r\n regression() {\r\n\r\n let data = this.chartScatter.series[0].data.filter(d => d.x != null && d.y != null),\r\n values_x = data.map(d => d.x),\r\n values_y = data.map(d => d.y);\r\n\r\n var sum_x = 0;\r\n var sum_y = 0;\r\n var sum_xy = 0;\r\n var sum_xx = 0;\r\n var count = 0;\r\n var x = 0;\r\n var y = 0;\r\n var values_length = values_x.length;\r\n\r\n if (values_length != values_y.length) {\r\n throw new Error('The parameters values_x and values_y need to have same length.');\r\n }\r\n\r\n if (values_length === 0) {\r\n return [ [], [] ];\r\n }\r\n\r\n for (var v = 0; v < values_length; v++) {\r\n x = values_x[v];\r\n y = values_y[v];\r\n sum_x += x;\r\n sum_y += y;\r\n sum_xx += x*x;\r\n sum_xy += x*y;\r\n count++;\r\n }\r\n\r\n var m = (count*sum_xy - sum_x*sum_y) / (count*sum_xx - sum_x*sum_x);\r\n var b = (sum_y/count) - (m*sum_x)/count;\r\n\r\n var result = [];\r\n\r\n for (var v = 0; v < values_length; v++) {\r\n x = values_x[v];\r\n y = x * m + b;\r\n result.push([x, y]);\r\n }\r\n\r\n result = result.sort((a,b) => a[0] - b[0]);\r\n\r\n // Add line to chart\r\n this.chartScatter.addSeries({\r\n type: 'line',\r\n name: 'regression',\r\n data: result,\r\n color: '#DA291C',\r\n enableMouseTracking: false,\r\n marker: {\r\n enabled: false\r\n }\r\n })\r\n }\r\n\r\n copyClipboard(inputElement){\r\n inputElement.select();\r\n document.execCommand('copy');\r\n inputElement.setSelectionRange(0, 0);\r\n this.copied = true;\r\n }\r\n\r\n export(type: any) {\r\n this.params = this.router.url;\r\n type.exportChart(null, {\r\n credits: { enabled: true, text: 'https://members.nhsbenchmarking.nhs.uk' + this.params },\r\n chart: {\r\n spacingBottom: 60, \r\n events: {\r\n load: ((e) => { }),\r\n render: function() {\r\n var chart = this,\r\n width = chart.chartWidth - 600,\r\n height = chart.chartHeight - 40;\r\n chart.renderer.image('https://s3.eu-west-2.amazonaws.com/nhsbn-static/Other/2022/nhsbn-logo.png', width, height, 144, 35).add();\r\n }\r\n }\r\n },\r\n type: 'application/pdf',\r\n filename: 'icsb-' + this.details.reportId + '-' + type.renderTo.id\r\n });\r\n }\r\n\r\n exportCSV(type: string) {\r\n\r\n let data;\r\n let extension = '-data';\r\n\r\n if (type == 'highestLowest') {\r\n // Format data\r\n data = Object.keys(this.highestLowest.national).map((key) => {\r\n return [ key + '_national', this.highestLowest.national[key].organisationOnsCode, this.highestLowest.national[key].organisationName.replace(/,/g, \" \"), this.highestLowest.national[key].submissionResult ]\r\n });\r\n if (this.highestLowestGroup) {\r\n Object.keys(this.highestLowestGroup).forEach((key) => {\r\n data.push([ key + '_group', this.highestLowestGroup[key].organisationOnsCode, this.highestLowestGroup[key].organisationName.replace(/,/g, \" \"), this.highestLowestGroup[key].submissionResult ])\r\n });\r\n }\r\n // Add row header\r\n data.unshift(['data', 'code', 'name', 'value']);\r\n extension = '-highlow-values'\r\n } else {\r\n // Format submissions\r\n data = this.selected.submissions.map(s => { \r\n return [ s.organisationOnsCode, s.organisationName.replace(/,/g, \" \"), s.submissionResult ]\r\n })\r\n // Add row header\r\n data.unshift(['code', 'name', 'value']);\r\n }\r\n\r\n // https://stackoverflow.com/a/29304414\r\n var csvContent = '';\r\n data.forEach(function(infoArray, index) {\r\n let dataString = infoArray.join(',');\r\n csvContent += index < data.length ? dataString + '\\n' : dataString;\r\n });\r\n\r\n var download = function(content, fileName, mimeType) {\r\n var a = document.createElement('a');\r\n mimeType = mimeType || 'application/octet-stream';\r\n\r\n if (navigator.msSaveBlob) {\r\n navigator.msSaveBlob(new Blob([content], {\r\n type: mimeType\r\n }), fileName);\r\n } else if (URL && 'download' in a) {\r\n a.href = URL.createObjectURL(new Blob([content], {\r\n type: mimeType\r\n }));\r\n a.setAttribute('download', fileName);\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n } else {\r\n location.href = 'data:application/octet-stream,' + encodeURIComponent(content);\r\n }\r\n }\r\n\r\n download(csvContent, 'icsb-' + this.details.reportId + extension + '.csv', 'text/csv;encoding:utf-8');\r\n\r\n }\r\n\r\n navHome() {\r\n this.unsubscribe();\r\n this.router.navigate(['/home']);\r\n }\r\n\r\n navWelcome() {\r\n this.unsubscribe();\r\n this.router.navigate(['/benchmarker']);\r\n // TODO: Needs simplifying and moving to reset()\r\n this.categories = [];\r\n this.loading = false;\r\n this.details = null;\r\n this.data = null;\r\n this.secondaryData = null;\r\n this.error = null;\r\n this.secondary = null;\r\n this.noMapbox = false;\r\n this.data_saved = null;\r\n this.seriesData = null;\r\n this.chartScatterOptions = null;\r\n this.secondaryDetails = null;\r\n this.chartScatterOptions = null;\r\n this.chartStackedColumnOptions = null;\r\n this.primary_details_saved = null;\r\n this.primary_data_saved = null;\r\n this.relationships = null;\r\n this.preferences.reportId = null;\r\n this.highlighted = null;\r\n this.highlights = null;\r\n this.filtered = null;\r\n this.independentCategory = null;\r\n this.copied = false;\r\n this.domainId = null;\r\n }\r\n\r\n removeVideo() {\r\n this.videoURL = this.sanitizer.bypassSecurityTrustResourceUrl('https://www.youtube.com/embed/Tktw9-LvlM8?controls=0');\r\n }\r\n\r\n enableColorBlindness() {\r\n if(this.colorBlindnessEnabled == false){\r\n this.nationalMeanColour = '#0c11a6';\r\n // this.organisationValueColour = '#882255';\r\n this.colorBlindnessEnabled = true;\r\n } else {\r\n this.nationalMeanColour = '#28A745';\r\n this.organisationValueColour = '#E03616';\r\n this.colorBlindnessEnabled = false;\r\n }\r\n this.getTiers(this.projectId);\r\n }\r\n\r\n linkToFeedbackForm() {\r\n let airtableFormUrl = 'https://airtable.com/shro8tKYNltABl5BK?prefill_Source%20URL=';\r\n let currentUrl = 'https://members.nhsbenchmarking.nhs.uk' + this.router.url;\r\n window.open(airtableFormUrl + encodeURIComponent(currentUrl), '_blank');\r\n }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { BenchmarkerComponent } from './benchmarker.component';\r\nimport { BenchmarkerRoutingModule } from './benchmarker-routing.module';\r\n\r\nimport { NgxMapboxGLModule } from 'ngx-mapbox-gl';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgPipesModule, OrderByPipe, GroupByPipe } from 'ngx-pipes';\r\nimport { Ng2HighchartsModule } from 'ng2-highcharts';\r\nimport { TreeModule } from 'angular-tree-component';\r\nimport { ModalModule } from 'ngx-bootstrap';\r\n\r\n// Services\r\nimport { DataService } from 'app/utilities/ics/data.service';\r\nimport { FormatService } from 'app/utilities/ics/format.service';\r\nimport { InfoPanelModule } from 'app/shared/info-panel/info-panel.module';\r\nimport { LandingComponent } from './landing/landing.component';\r\nimport { TierTreeComponent } from './tier-tree/tier-tree.component';\r\n\r\n\r\n// Thousands separator\r\nwindow['Highcharts'].setOptions({\r\n lang: {\r\n thousandsSep: ','\r\n }\r\n});\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n InfoPanelModule,\r\n BenchmarkerRoutingModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgPipesModule,\r\n Ng2HighchartsModule,\r\n TreeModule,\r\n ModalModule,\r\n NgxMapboxGLModule.withConfig({\r\n accessToken: 'pk.eyJ1IjoiZGh1Z2hlc2JtYyIsImEiOiJjazQ5bXAxYW8wNmM2M2ZwY3N2aTR4emU3In0.7rhqvNQKGZ_ciuuxVAdV3A'\r\n })\r\n ],\r\n declarations: [\r\n BenchmarkerComponent,\r\n LandingComponent,\r\n TierTreeComponent\r\n ],\r\n providers: [\r\n DataService,\r\n FormatService,\r\n GroupByPipe,\r\n OrderByPipe\r\n ]\r\n})\r\nexport class BenchmarkerModule {}","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
{{ selectedTier.tierName }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
Tag: {{ selectedTag }} ({{ tiersWithTag.length }})
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n {{ tier.tierNameMap.join(' > ') }}\\r\\n
\\r\\n {{ tier.searchName }}
\\r\\n \\r\\n Tags: {{ tier.tierTags?.join(', ') }}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

\\r\\n \\r\\n Themes\\r\\n

\\r\\n

\\r\\n Indicators grouped into themes with the option of adding secondary, comparator metrics to view correlations.\\r\\n

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

{{ tier.tierName }}

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

\\r\\n \\r\\n Domains\\r\\n

\\r\\n

\\r\\n Indicators grouped by domains. Click an indicator group to open.\\r\\n

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

{{ tier.tierName }}

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

\\r\\n \\r\\n Tags\\r\\n

\\r\\n

\\r\\n Indicators grouped by tags. Click a tag to see all indicators with that tag.\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n 2\\\">\\r\\n
\\r\\n

{{ tag }}

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

{{ tag }}

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

\\r\\n {{ showAllTags ? 'Show less tags' : 'Show all ' + tags.length + ' tags' }}\\r\\n

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

\\r\\n \\r\\n Latest Updates\\r\\n

\\r\\n

\\r\\n The latest news and changes to the National Indicators.\\r\\n

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

Data from the following monthly data collections have been updated to December 2024:

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

Data from the following monthly data collections have been updated to November 2024:

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

Data from the following monthly data collections have been updated to October 2024:

\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","module.exports = \".mb-2 {\\n margin-bottom: 0.5em !important; }\\n\\n.mb-3 {\\n margin-bottom: 1.0em !important; }\\n\\n.mr-1 {\\n margin-right: 0.25em !important; }\\n\\n.modal-content {\\n max-height: 70vh;\\n overflow-y: scroll; }\\n\\n.modal-link {\\n text-decoration: underline; }\\n\\n.modal-link:hover,\\n.modal-link:focus,\\n.modal-link:active {\\n color: black;\\n cursor: pointer; }\\n\\n.tier-name:hover {\\n cursor: pointer;\\n color: #005EB8; }\\n\\n::ng-deep .node-wrapper:hover {\\n color: #005EB8; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvYmVuY2htYXJrZXIvbGFuZGluZy9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxiZW5jaG1hcmtlclxcbGFuZGluZ1xcbGFuZGluZy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUFRLCtCQUFnQyxFQUFBOztBQUN4QztFQUFRLCtCQUFnQyxFQUFBOztBQUV4QztFQUFRLCtCQUFnQyxFQUFBOztBQUV4QztFQUNJLGdCQUFnQjtFQUNoQixrQkFBa0IsRUFBQTs7QUFHdEI7RUFDSSwwQkFBMEIsRUFBQTs7QUFHOUI7OztFQUdJLFlBQVk7RUFDWixlQUFlLEVBQUE7O0FBR25CO0VBQ0ksZUFBZTtFQUNmLGNBQWMsRUFBQTs7QUFHbEI7RUFDSSxjQUFjLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9iZW5jaG1hcmtlci9sYW5kaW5nL2xhbmRpbmcuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIubWItMiB7IG1hcmdpbi1ib3R0b206IDAuNWVtICFpbXBvcnRhbnQgfVxyXG4ubWItMyB7IG1hcmdpbi1ib3R0b206IDEuMGVtICFpbXBvcnRhbnQgfVxyXG5cclxuLm1yLTEgeyBtYXJnaW4tcmlnaHQ6IDAuMjVlbSAhaW1wb3J0YW50IH1cclxuXHJcbi5tb2RhbC1jb250ZW50IHtcclxuICAgIG1heC1oZWlnaHQ6IDcwdmg7XHJcbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XHJcbn1cclxuXHJcbi5tb2RhbC1saW5rIHtcclxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG59XHJcblxyXG4ubW9kYWwtbGluazpob3ZlcixcclxuLm1vZGFsLWxpbms6Zm9jdXMsXHJcbi5tb2RhbC1saW5rOmFjdGl2ZSB7XHJcbiAgICBjb2xvcjogYmxhY2s7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi50aWVyLW5hbWU6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgY29sb3I6ICMwMDVFQjg7XHJcbn1cclxuXHJcbjo6bmctZGVlcCAubm9kZS13cmFwcGVyOmhvdmVyIHtcclxuICAgIGNvbG9yOiAjMDA1RUI4O1xyXG59Il19 */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormatService } from 'app/utilities/ics/format.service';\r\n\r\nexport interface Tier {\r\n tierId: number\r\n tierName: string\r\n displaySequence: number\r\n reportId: number\r\n isVisible: string\r\n tierTypeId: number\r\n tierTypeName: string\r\n childrenTiers: Tier[]\r\n tierTags: string[]\r\n name: string\r\n id: number\r\n hasChildren?: boolean\r\n children?: Tier[]\r\n}\r\n\r\nexport interface SearchTier {\r\n t1_tierId: number\r\n t1_tierName: string\r\n t2_tierId: number\r\n t2_tierName: string\r\n t2_isVisible: string\r\n t3_tierId?: number\r\n t3_tierName?: string\r\n t3_isVisible?: string\r\n t4_tierId?: number\r\n t4_tierName?: string\r\n t4_isVisible?: string\r\n t4_children?: ChildSearchTier[]\r\n t5_tierId?: number\r\n t5_tierName?: string\r\n t5_isVisible?: string\r\n t5_children?: ChildSearchTier[]\r\n reportId: number\r\n tierTags: string[]\r\n tierIdMap: number[]\r\n tierNameMap: string[]\r\n searchName: string\r\n searchTier: number\r\n children?: ChildSearchTier[]\r\n}\r\n\r\nexport interface ChildSearchTier {\r\n tierId: number\r\n tierName: string\r\n displaySequence: number\r\n reportId: number\r\n isVisible: string\r\n tierTypeId: number\r\n tierTypeName: string\r\n childrenTiers: any[]\r\n tierTags: string[]\r\n}\r\n\r\n@Component({\r\n selector: 'app-landing',\r\n templateUrl: './landing.component.html',\r\n styleUrls: ['./landing.component.scss']\r\n})\r\nexport class LandingComponent implements OnInit {\r\n\r\n @Input() public apiTiers: Tier[];\r\n @Input() public searchTiers: SearchTier[];\r\n @Output() public reportTier: EventEmitter = new EventEmitter();\r\n\r\n public domains: Tier[];\r\n public themes: Tier[];\r\n public selectedTier: Tier;\r\n public tags: String[];\r\n public selectedTag: string;\r\n public tiersWithTag: SearchTier[];\r\n public showAllTags: boolean = false;\r\n\r\n // Tag search\r\n public tagQuery: string = '';\r\n get filteredTags(): String[] {\r\n if (!this.tagQuery || this.tagQuery.length <= 2) {\r\n return this.tags;\r\n }\r\n const lowerCaseQuery = this.tagQuery.toLowerCase();\r\n return this.tags.filter(tag => tag.toLowerCase().includes(lowerCaseQuery));\r\n }\r\n\r\n constructor(\r\n private formatService: FormatService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.defineDomainsAndThemes(this.apiTiers);\r\n this.defineTags()\r\n }\r\n\r\n private defineDomainsAndThemes(tiers: Tier[]): void {\r\n // Define high-level domains\r\n this.domains = tiers;\r\n // Pull out Themes (if exist)\r\n let themesTier = tiers.find(tier => tier.tierName == 'Themes');\r\n if (themesTier) {\r\n this.themes = themesTier.childrenTiers;\r\n };\r\n }\r\n\r\n private defineTags(): void {\r\n this.tags = this.formatService.tags(this.searchTiers);\r\n }\r\n\r\n public getChildrenTiers(tier: Tier): void {\r\n this.selectedTier = tier;\r\n }\r\n\r\n public getTags(tag: string): void {\r\n this.selectedTag = tag;\r\n this.tiersWithTag = this.searchTiers.filter(data => \r\n data.tierTags && data.tierTags.includes(tag)\r\n );\r\n }\r\n\r\n public closeModal(): void {\r\n this.selectedTag = null;\r\n this.selectedTier = null;\r\n this.tiersWithTag = [];\r\n }\r\n\r\n}\r\n","module.exports = \"\\r\\n
\\r\\n Expand all | \\r\\n Collapse all | \\r\\n Clear search\\r\\n
\\r\\n
\\r\\n \\r\\n
\"","module.exports = \".mt-1 {\\n margin-top: 0.25em !important; }\\n\\n.mt-2 {\\n margin-top: 0.5em !important; }\\n\\n.mb-3 {\\n margin-bottom: 0.75em !important; }\\n\\n.mr-1 {\\n margin-right: 0.25em !important; }\\n\\n.actions span:hover {\\n cursor: pointer; }\\n\\n::ng-deep .node-wrapper:hover {\\n color: #005EB8; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvYmVuY2htYXJrZXIvdGllci10cmVlL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxhcHBcXGJlbmNobWFya2VyXFx0aWVyLXRyZWVcXHRpZXItdHJlZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUFRLDZCQUE4QixFQUFBOztBQUN0QztFQUFRLDRCQUE2QixFQUFBOztBQUVyQztFQUFRLGdDQUFpQyxFQUFBOztBQUV6QztFQUFRLCtCQUFnQyxFQUFBOztBQUV4QztFQUNJLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxjQUFjLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9iZW5jaG1hcmtlci90aWVyLXRyZWUvdGllci10cmVlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLm10LTEgeyBtYXJnaW4tdG9wOiAwLjI1ZW0gIWltcG9ydGFudCB9XHJcbi5tdC0yIHsgbWFyZ2luLXRvcDogMC41ZW0gIWltcG9ydGFudCB9XHJcblxyXG4ubWItMyB7IG1hcmdpbi1ib3R0b206IDAuNzVlbSAhaW1wb3J0YW50IH1cclxuXHJcbi5tci0xIHsgbWFyZ2luLXJpZ2h0OiAwLjI1ZW0gIWltcG9ydGFudCB9XHJcblxyXG4uYWN0aW9ucyBzcGFuOmhvdmVyIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuOjpuZy1kZWVwIC5ub2RlLXdyYXBwZXI6aG92ZXIge1xyXG4gICAgY29sb3I6ICMwMDVFQjg7XHJcbn0iXX0= */\"","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { TREE_ACTIONS, ITreeOptions } from 'angular-tree-component';\r\n\r\nexport interface Tier {\r\n tierId: number,\r\n tierName: string,\r\n displaySequence: number,\r\n reportId: number,\r\n isVisible: string,\r\n tierTypeId: number,\r\n tierTypeName: string,\r\n childrenTiers: Tier[],\r\n tierTags: string[],\r\n name: string,\r\n id: number,\r\n hasChildren?: boolean,\r\n children?: Tier[]\r\n}\r\n\r\n@Component({\r\n selector: 'app-tier-tree',\r\n templateUrl: './tier-tree.component.html',\r\n styleUrls: ['./tier-tree.component.scss']\r\n})\r\nexport class TierTreeComponent implements OnInit {\r\n\r\n @Input() public apiTiers: Tier[];\r\n @Output() public reportTier: EventEmitter = new EventEmitter();\r\n\r\n public tiers: Tier[];\r\n\r\n @ViewChild('tree') tree;\r\n\r\n options: ITreeOptions = {\r\n displayField: 'tierName',\r\n idField: 'tierId',\r\n hasChildrenField: 'hasChildren',\r\n actionMapping: {\r\n mouse: { click: (tree, node, $event) => {\r\n if (node.hasChildren) { \r\n TREE_ACTIONS.TOGGLE_EXPANDED(tree, node, $event);\r\n } \r\n else {\r\n TREE_ACTIONS.ACTIVATE(tree, node, $event);\r\n this.reportTier.emit(node.data.reportId + '-' + node.data.tierId);\r\n }\r\n }}\r\n }\r\n }\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.tiers = this.updateTiers(this.apiTiers, 'childrenTiers', 'children');\r\n }\r\n\r\n private updateTiers(data: any, oldKey: string, newKey: string): Tier[] {\r\n if (Array.isArray(data)) {\r\n data.forEach(item => this.updateTiers(item, oldKey, newKey));\r\n } else if (typeof data === 'object' && data !== null) {\r\n if (data.hasOwnProperty(oldKey)) {\r\n // Add hasChildrenField defined in options\r\n if (data.childrenTiers.length && data.reportId == null) {\r\n data.hasChildren = true;\r\n } else {\r\n data.hasChildren = false;\r\n // Remove secondary tiers\r\n delete data.childrenTiers;\r\n }\r\n // Replace API key\r\n data[newKey] = data[oldKey];\r\n }\r\n // Recursive to update all nested tiers\r\n Object.values(data).forEach(value => this.updateTiers(value, oldKey, newKey));\r\n }\r\n return data;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { CollectionComponent } from './collection.component'\r\n\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service'\r\n\r\nconst collectionRoutes: Routes = [\r\n { path: 'collection/:projectId', redirectTo: 'project/:projectId/collection', pathMatch: 'full' },\r\n { path: 'project/:projectId/collection', component: CollectionComponent, canActivate: [AuthGuardService] }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(collectionRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class CollectionRoutingModule { }","module.exports = \"\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n

There has been an error loading the data collection.

\\r\\n

{{ error }}

\\r\\n

Click here to exit the page.

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

Loading data collection page...

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
Back
\\r\\n
\\r\\n
\\r\\n \\r\\n
1\\\">\\r\\n
\\r\\n
\\r\\n

Select the organisation for which you would like to submit data.

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ o.organisationName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n

Data Collection

\\r\\n

{{ projectName }}

\\r\\n

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

Your browser is not supported.

\\r\\n

\\r\\n Click here for more information and links to alternative browsers.\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
Select period
\\r\\n
\\r\\n
{{ selectedProjectDate ? selectedProjectDate.dateName : 'Select a period...' }}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ date.dateName }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
Select submission
\\r\\n
\\r\\n
{{ selectedSubmission.submissionCode}}: {{ selectedSubmission.submissionName }}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ sub.submissionCode }}: {{ sub.submissionName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n Please select the submission and data collection period for which you would like to enter data using the selectors above.\\r\\n

\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n Loading questions. Please wait...\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

Copy and Paste from Excel beta

\\r\\n

\\r\\n You can copy responses from the data collection specification into this online page. Click Show Paste Area to continue, or click 'Guidance' for a step-by-step guide. Please remember to check and save the responses once they have been added to the form.\\r\\n

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

\\r\\n You are currently viewing the data collection page for {{ csvDate }}. Please make sure you include this column from the Excel spreadsheet.\\r\\n

\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n There are errors on the data collection form below. You will not be able to save until these errors are cleared.\\r\\n
\\r\\n
\\r\\n Please be aware of the following issues:\\r\\n
    \\r\\n
  • {{ error }}
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
Copy and Paste Guidance
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Step 1: Copy from Excel

\\r\\n

\\r\\n Open the Excel spreadsheet containing the responses. For both response sheets (Community MH Services and Inpatient MH Services) and select the 'Ref' and month columns from, and including, the row headers down to the end of the collection tables in each sheet and copy the contents using CTRL+C.\\r\\n

\\r\\n

\\r\\n Open the Excel spreadsheet containing the monthly responses and select the 'Ref' and all date columns, including the row headers, down to the end of the collection table (cells D6:Q46) and copy the contents using CTRL+C.\\r\\n

\\r\\n

\\r\\n Please ensure all validation errors are cleared from the Excel spreadsheet before copying the contents.\\r\\n

\\r\\n
\\r\\n
\\r\\n \\\"Copy\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Step 2: Paste into Paste Area

\\r\\n

\\r\\n Select the month that you wish to enter data for. The copy and paste function will only upload the data within the column that matches the period selected. \\r\\n

\\r\\n

\\r\\n Close this modal and select Show Paste Area. Click inside the box that says \\\"Paste cells here...\\\" and paste from the Excel cells using CTRL+V. The codes and responses should then show in the box without the table formatting.\\r\\n

\\r\\n

\\r\\n Finally, click Add to Form to populate the form with the data. If data is added successfully, the button will change to added. Should there be any errors, these will show beneath the box and the relevant question(s). The system will automatically select the responses for the data collection period.\\r\\n

\\r\\n

\\r\\n This will need to be done for both Community MH Services and Inpatient MH Services, and the data will be added to the form below.\\r\\n

\\r\\n
\\r\\n
\\r\\n \\\"Copy\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Step 3: Check and Save

\\r\\n

\\r\\n Please check that the responses have been added correctly. Once you are happy that the data is correct, click Save at the bottom of the page.\\r\\n

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

\\r\\n Data Collection Closed\\r\\n

\\r\\n

\\r\\n Data collection for the selected period closed on {{ collectionCloseDate | date: 'EEEE d MMMM y' }}. You can still view the data submitted in a read-only format, but any changes will need to be made by contacting the project team.\\r\\n

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

{{ group[0] }}

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

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

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ subGroup[0] }}
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n

{{ q.code }}

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

\\r\\n {{ q.label }}\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
%
\\r\\n
\\r\\n
Calculate total
\\r\\n
\\r\\n
\\r\\n
\\r\\n The response must be a whole number (no decimal places)\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n The response must be a number with no more than {{ q.decimalPlaces }} {{ 'decimal place' | makePluralString: q.decimalPlaces }}.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n The minimum value for this field is {{ q.rangeMin }}.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n The maximum value for this field is {{ q.rangeMax }}.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n Click 'Save' below to save your responses. This data collection period can be accessed and edited up to {{ collectionCloseDate | date: 'EEEE d MMMM y' }}.\\r\\n

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

\\r\\n Saving data. Please wait...\\r\\n

\\r\\n

\\r\\n All data is saved and up-to-date.\\r\\n

\\r\\n

\\r\\n There are errors on the data collection form above. You will not be able to save until these errors are cleared.\\r\\n

\\r\\n

\\r\\n There has been an error whilst trying to save. Please contact the Support Team. ({{ error }})\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\"","module.exports = \".ml-05 {\\n margin-left: 0.5em; }\\n\\n.mr-05 {\\n margin-right: 0.5em; }\\n\\n.mt-05 {\\n margin-right: 0.5em; }\\n\\n.loading-data {\\n text-align: center;\\n margin-top: 30vh;\\n margin-bottom: 30vh;\\n margin-left: 15%;\\n color: #005EB8;\\n font-weight: 500;\\n width: 70%; }\\n\\n.loading-data p:first-of-type {\\n font-size: 2em; }\\n\\n.loading-data.error {\\n color: #757575; }\\n\\n.background {\\n background-color: #F3F3F3;\\n border-radius: 3px;\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n padding-top: 1em;\\n padding-bottom: 1em;\\n position: relative; }\\n\\n.loading-questions {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 40%;\\n margin-left: 30%;\\n background-color: #005EB8;\\n color: white;\\n padding: 1em;\\n margin-top: 0.5em;\\n border-radius: 4px;\\n font-size: 17px;\\n text-align: center; }\\n\\nsection {\\n background-color: white;\\n border: 1px solid #ccc;\\n padding: 2em;\\n border-radius: 3px;\\n margin-top: 1em;\\n margin-bottom: 1em; }\\n\\n#intro {\\n margin-top: 2em;\\n margin-bottom: 1em;\\n padding-bottom: 1em;\\n border-bottom: 1px solid #ccc; }\\n\\n#intro h1 {\\n margin-top: 0;\\n margin-bottom: 0.25em;\\n font-weight: 700; }\\n\\n#intro h2 {\\n color: #005EB8;\\n margin-top: 0;\\n margin-bottom: 0.5em;\\n font-weight: 700; }\\n\\n#instructions {\\n margin-top: 10vh;\\n margin-bottom: 10vh;\\n color: #768692; }\\n\\nsection h3 {\\n margin-top: 0;\\n margin-bottom: 0; }\\n\\nsection h3:hover {\\n cursor: pointer;\\n color: black; }\\n\\n.menu-background {\\n position: fixed;\\n background-color: rgba(0, 0, 0, 0.01);\\n top: -1em;\\n height: 100vh;\\n width: 100vw;\\n z-index: 100; }\\n\\n.muted {\\n color: #768692; }\\n\\n.button {\\n display: inline-block;\\n padding: 0.5em 0.75em;\\n border: 1px solid #CCCCCC;\\n border-radius: 3px;\\n font-size: 16px;\\n background-color: white;\\n outline: none; }\\n\\n.selections .button {\\n white-space: nowrap;\\n overflow: hidden !important;\\n text-overflow: ellipsis;\\n max-width: 100%; }\\n\\n.button:hover {\\n cursor: pointer;\\n border-color: #005EB8;\\n color: #005EB8; }\\n\\n.button.button-activeadmin {\\n background-color: #FDBC30;\\n border-color: black;\\n color: black; }\\n\\n.button.button-transparent {\\n background-color: transparent;\\n border-color: transparent; }\\n\\n.button.button-selected {\\n background-color: #005EB8;\\n border-color: #005EB8;\\n color: white; }\\n\\n.button.button-selected:hover {\\n cursor: pointer;\\n background-color: #003087; }\\n\\n.button.button-success {\\n background-color: #009639;\\n border-color: #009639;\\n color: white; }\\n\\n.button.button-success:hover {\\n cursor: pointer;\\n background-color: #006747; }\\n\\n#selectorBar .button,\\n#selectorBar .button:focus {\\n display: inline-block;\\n padding: 0.5em 0.75em;\\n border: 1px solid #CCCCCC;\\n border-radius: 3px;\\n font-size: 16px;\\n background-color: white;\\n outline: none; }\\n\\n#selectorBar .button:disabled {\\n color: #CCCCCC;\\n border-color: #CCCCCC; }\\n\\n#selectorBar .button:disabled:hover {\\n color: #CCCCCC;\\n border-color: #CCCCCC;\\n cursor: wait; }\\n\\n#selectorBar .button:hover {\\n cursor: pointer;\\n border-color: #005EB8; }\\n\\n#selectorBar {\\n background-color: #005EB8;\\n padding-top: 0.5em;\\n padding-bottom: 0.5em;\\n border-radius: 3px;\\n margin-top: -1.5em; }\\n\\n#selectorBar .button:not(.button-input) {\\n font-size: 14px;\\n border: none;\\n background-color: #004485;\\n color: white; }\\n\\n#selectorBar .route {\\n font-size: 14px;\\n color: #CCCCCC;\\n margin-top: 0.1em; }\\n\\n#selectorBar .route:not(.-delete) i {\\n margin: 0 0.5em; }\\n\\n#selectorBar .route.-delete:hover {\\n color: #DA291C; }\\n\\n#ribbonBar {\\n margin-bottom: 1em; }\\n\\n#ribbonBar h5 {\\n margin: 0.5em 0;\\n font-size: 10px;\\n font-weight: 600;\\n color: #768692;\\n text-transform: uppercase; }\\n\\n#ribbonBar .tier-toggle {\\n background-color: #004485;\\n border-color: #004485;\\n border-radius: 3px;\\n color: white;\\n padding: 0.5em 0.75em 0.25em 0.75em;\\n font-size: 14px;\\n max-width: 100%; }\\n\\n#ribbonBar .tier-toggle:hover {\\n cursor: pointer; }\\n\\n#ribbonBar .tier-toggle div {\\n display: inline-block;\\n width: 90%;\\n white-space: nowrap;\\n overflow: hidden !important;\\n text-overflow: ellipsis; }\\n\\n#ribbonBar .tier-toggle i {\\n font-size: 14px;\\n color: white;\\n margin-top: 0.35em;\\n float: right; }\\n\\n.selector-container {\\n padding: 0.5em;\\n border: 1px solid #CCCCCC;\\n border-radius: 3px;\\n margin-bottom: 0.5em; }\\n\\n.selector-container.-selected {\\n color: #005EB8;\\n border-color: #005EB8; }\\n\\n.selector-container:hover {\\n cursor: pointer;\\n border-color: #005EB8; }\\n\\n.selector-container i {\\n margin-right: 0.5em; }\\n\\n.menu-container {\\n position: relative; }\\n\\n.menu-select {\\n position: absolute;\\n top: 0;\\n left: 0;\\n z-index: 200;\\n background-color: white;\\n margin-top: 0.5em;\\n width: 100%;\\n max-width: 500px;\\n max-height: 400px;\\n border: 1px solid #CCCCCC;\\n border-radius: 3px;\\n font-size: 16px;\\n text-align: left;\\n overflow-x: hidden;\\n padding: 0.25em 0;\\n box-shadow: 0 14px 28px rgba(0, 0, 0, 0.1), 0 10px 10px rgba(0, 0, 0, 0.1); }\\n\\n.menu-select.-right {\\n left: auto;\\n right: 0; }\\n\\n.menu-select.-dark {\\n background-color: black;\\n color: white;\\n width: 50%; }\\n\\n.menu-select.-dark p {\\n margin-bottom: 0; }\\n\\n.menu-select .tier {\\n padding: 0.25em 0.5em; }\\n\\n.menu-select .tier:hover {\\n background-color: #F3F3F3;\\n cursor: pointer; }\\n\\n.menu-select .tier.-selected {\\n color: #005EB8; }\\n\\n.menu-select .menu-context {\\n padding: 1em 2em; }\\n\\n.menu-select .menu-context h3 {\\n margin: 0.5em 0; }\\n\\n.menu-select .btn {\\n margin-bottom: 1em;\\n border-radius: 3px; }\\n\\n.periods {\\n margin: 1em 0; }\\n\\nsection .form-group {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n padding: 0.5em 1em;\\n border-radius: 3px; }\\n\\n.first {\\n margin-top: 1.5em !important; }\\n\\nsection .form-group:hover {\\n background-color: #F3F3F3; }\\n\\nsection .form-group .code {\\n color: #768692; }\\n\\nsection .form-group label {\\n font-weight: normal;\\n margin-bottom: 0; }\\n\\nsection .help {\\n font-size: 13px;\\n margin-top: 0.5em;\\n color: #768692; }\\n\\nsection i {\\n color: #768692; }\\n\\nsection i:hover {\\n cursor: pointer;\\n color: black; }\\n\\n.form-actions {\\n margin-top: 1em;\\n margin-bottom: 3em; }\\n\\n.form-actions .message {\\n margin-top: 0.75em; }\\n\\n.selections h4 {\\n font-weight: 700; }\\n\\n.highlight-admin {\\n color: #FDBC30 !important;\\n font-weight: 700; }\\n\\n.activeAdmin-toggle {\\n margin-top: 1em;\\n background-color: #FDBC30;\\n padding: 0.5em 1em;\\n border: 1px solid #E59900;\\n border-radius: 3px;\\n font-weight: 700;\\n font-size: 17px; }\\n\\n.activeAdmin-toggle:hover {\\n cursor: pointer;\\n background-color: #E59900; }\\n\\n.activeAdmin {\\n margin-top: 1em;\\n background-color: #FDBC30;\\n border: 1px solid #E59900;\\n padding: 1em; }\\n\\n.activeAdmin h4 {\\n margin-top: 0;\\n font-weight: 600; }\\n\\n.activeAdmin .form-control {\\n font-family: monospace;\\n background-color: transparent;\\n border-color: #E59900;\\n color: black;\\n white-space: nowrap;\\n overflow-x: scroll; }\\n\\n.activeAdmin .form-control::-webkit-input-placeholder {\\n color: #E59900;\\n opacity: 1; }\\n\\n.activeAdmin .form-control:-ms-input-placeholder {\\n color: #E59900;\\n opacity: 1; }\\n\\n.activeAdmin .form-control::-ms-input-placeholder {\\n color: #E59900;\\n opacity: 1; }\\n\\n.activeAdmin .form-control::placeholder {\\n color: #E59900;\\n opacity: 1; }\\n\\n.activeAdmin .form-control::-ms-input-placeholder {\\n color: #E59900; }\\n\\n.activeAdmin .form-control::-ms-input-placeholder {\\n color: #E59900; }\\n\\n.no-subgroup .subgroup-header {\\n display: none; }\\n\\nsection .no-subgroup .form-group {\\n padding-left: 0; }\\n\\nsection .no-subgroup .form-group:hover {\\n background-color: transparent;\\n cursor: default; }\\n\\n.subgroup {\\n border: 1px solid #005EB8;\\n border-radius: 3px;\\n padding: 1em 0.5em;\\n margin-top: 1em; }\\n\\n.subgroup .subgroup-header {\\n background-color: #005EB8;\\n color: white;\\n font-weight: 700;\\n padding: 3px 6px;\\n border-radius: 3px;\\n display: inline-block;\\n margin-left: 0.5em; }\\n\\n.question-error {\\n background-color: #DA291C;\\n color: white;\\n margin-top: 1em;\\n padding: 6px 12px;\\n border-radius: 3px; }\\n\\n#excelImport p,\\n#collectionClosed p,\\n#wrongBrowser p {\\n margin-top: 1em;\\n margin-bottom: 0; }\\n\\n#excelImport .badge-success {\\n background-color: green !important; }\\n\\n#excelImport textarea {\\n margin: 1em 0; }\\n\\n#excelImport i {\\n color: inherit; }\\n\\n#excelImport, #collectionClosed {\\n background-color: transparent; }\\n\\n#excelImport div.csvErrors {\\n margin-top: 1em;\\n color: #DA291C; }\\n\\n.img-guidance {\\n width: 100%;\\n border: 1px solid black;\\n border-radius: 3px;\\n margin-bottom: 1em; }\\n\\n#excelImport .csvErrors,\\n#excelImport .csvErrors ul {\\n font-size: 17px;\\n padding-left: 0.8; }\\n\\n#collectionClosed h3,\\n#wrongBrowser h3,\\n#wrongBrowser a {\\n color: #DA291C; }\\n\\n#collectionClosed,\\n#wrongBrowser {\\n border-color: #DA291C; }\\n\\n.autosum {\\n background-color: #AE2573;\\n color: white;\\n border-radius: 3px;\\n padding: 3px 4px 2px 4px;\\n text-transform: uppercase;\\n font-weight: 700;\\n font-size: 11px;\\n margin-top: 0.5em;\\n display: inline-block; }\\n\\n.autosum:hover {\\n cursor: pointer;\\n background-color: #7C2855; }\\n\\n.autosum i {\\n color: white;\\n margin-right: 0.5em; }\\n\\n.narrative {\\n margin: -1em;\\n color: #768692; }\\n\\n#activeAdmin {\\n position: fixed;\\n bottom: 0;\\n width: 100%;\\n background-color: #FDBC30;\\n border-top: 1px solid #E59900;\\n padding: 1em;\\n z-index: 10000; }\\n\\n#activeAdminBar {\\n position: fixed;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n padding: 0.5em 0.25em;\\n background-color: #fdbc30;\\n z-index: 10; }\\n\\n#activeAdminBar .btn-default {\\n background-color: #fdbc30;\\n border-color: transparent;\\n color: black;\\n border-radius: 4px;\\n font-weight: 600;\\n margin: 0 0.25em; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29sbGVjdGlvbi9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxjb2xsZWN0aW9uXFxjb2xsZWN0aW9uLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb2xsZWN0aW9uL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxfdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSxrQkFBa0IsRUFBQTs7QUFHdEI7RUFDSSxtQkFBbUIsRUFBQTs7QUFHdkI7RUFDSSxtQkFBbUIsRUFBQTs7QUFHdkI7RUFDSSxrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQixnQkFBZ0I7RUFDaEIsY0NoQmM7RURpQmQsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTs7QUFHZDtFQUNJLGNBQWMsRUFBQTs7QUFHbEI7RUFDSSxjQUFjLEVBQUE7O0FBR2xCO0VBQ0kseUJBQXlCO0VBQ3pCLGtCQUFrQjtFQUNsQixpQkFBaUI7RUFDakIsb0JBQW9CO0VBQ3BCLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksa0JBQWtCO0VBQ2xCLE1BQU07RUFDTixPQUFPO0VBQ1AsVUFBVTtFQUNWLGdCQUFnQjtFQUNoQix5QkM3Q2M7RUQ4Q2QsWUFBWTtFQUNaLFlBQVk7RUFDWixpQkFBaUI7RUFDakIsa0JBQWtCO0VBQ2xCLGVBQWU7RUFDZixrQkFBa0IsRUFBQTs7QUFHdEI7RUFDSSx1QkFBdUI7RUFDdkIsc0JBQXNCO0VBQ3RCLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsZUFBZTtFQUNmLGtCQUFrQixFQUFBOztBQUd0QjtFQUNJLGVBQWU7RUFDZixrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQ25CLDZCQUE2QixFQUFBOztBQUdqQztFQUNJLGFBQWE7RUFDYixxQkFBcUI7RUFDckIsZ0JBQWdCLEVBQUE7O0FBR3BC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Qjs7RUFFSSxlQUFlO0VBQ2YsaUJBQWlCLEVBQUE7O0FBR3JCOzs7RUFHSSxjQUFjLEVBQUE7O0FBR2xCOztFQUVJLHFCQUFxQixFQUFBOztBQUd6QjtFQUNJLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLHdCQUF3QjtFQUN4Qix5QkFBeUI7RUFDekIsZ0JBQWdCO0VBQ2hCLGVBQWU7RUFDZixpQkFBaUI7RUFDakIscUJBQXFCLEVBQUE7O0FBR3pCO0VBQ0ksZUFBZTtFQUNmLHlCQUF5QixFQUFBOztBQUc3QjtFQUNJLFlBQVk7RUFDWixtQkFBbUIsRUFBQTs7QUFHdkI7RUFDSSxZQUFZO0VBQ1osY0M1akJjLEVBQUE7O0FEK2pCbEI7RUFDSSxlQUFlO0VBQ2YsU0FBUztFQUNULFdBQVc7RUFDWCx5QkNqa0J5QjtFRGtrQnpCLDZCQ2prQjZCO0VEa2tCN0IsWUFBWTtFQUNaLGNBQWMsRUFBQTs7QUFHbEI7RUFDQyxlQUFlO0VBQ2YsU0FBUztFQUNULE9BQU87RUFDUCxXQUFXO0VBQ1gscUJBQXFCO0VBQ3JCLHlCQUF5QjtFQUN6QixXQUFXLEVBQUE7O0FBR1o7RUFDQyx5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2hCLGdCQUFnQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvY29sbGVjdGlvbi9jb2xsZWN0aW9uLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vdmFyaWFibGVzJztcclxuXHJcbi5tbC0wNSB7XHJcbiAgICBtYXJnaW4tbGVmdDogMC41ZW07XHJcbn1cclxuXHJcbi5tci0wNSB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59XHJcblxyXG4ubXQtMDUge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufVxyXG5cclxuLmxvYWRpbmctZGF0YSB7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBtYXJnaW4tdG9wOiAzMHZoO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMzB2aDtcclxuICAgIG1hcmdpbi1sZWZ0OiAxNSU7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgIHdpZHRoOiA3MCU7XHJcbn1cclxuXHJcbi5sb2FkaW5nLWRhdGEgcDpmaXJzdC1vZi10eXBlIHtcclxuICAgIGZvbnQtc2l6ZTogMmVtO1xyXG59XHJcblxyXG4ubG9hZGluZy1kYXRhLmVycm9yIHtcclxuICAgIGNvbG9yOiAjNzU3NTc1O1xyXG59XHJcblxyXG4uYmFja2dyb3VuZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGM0YzO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgbWFyZ2luLXRvcDogMC41ZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxuICAgIHBhZGRpbmctdG9wOiAxZW07XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMWVtO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcblxyXG4ubG9hZGluZy1xdWVzdGlvbnMge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiA0MCU7XHJcbiAgICBtYXJnaW4tbGVmdDogMzAlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgcGFkZGluZzogMWVtO1xyXG4gICAgbWFyZ2luLXRvcDogMC41ZW07XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICBmb250LXNpemU6IDE3cHg7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbn1cclxuXHJcbnNlY3Rpb24ge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gICAgcGFkZGluZzogMmVtO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgbWFyZ2luLXRvcDogMWVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xyXG59XHJcblxyXG4jaW50cm8ge1xyXG4gICAgbWFyZ2luLXRvcDogMmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xyXG4gICAgcGFkZGluZy1ib3R0b206IDFlbTtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjO1xyXG59XHJcblxyXG4jaW50cm8gaDEge1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuMjVlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbn1cclxuXHJcbiNpbnRybyBoMiB7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcclxufVxyXG5cclxuI2luc3RydWN0aW9ucyB7XHJcbiAgICBtYXJnaW4tdG9wOiAxMHZoO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMTB2aDtcclxuICAgIGNvbG9yOiAkbmhzLWdyZXk7XHJcbn1cclxuXHJcbnNlY3Rpb24gaDMge1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbn1cclxuXHJcbnNlY3Rpb24gaDM6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgY29sb3I6IGJsYWNrO1xyXG59XHJcblxyXG4ubWVudS1iYWNrZ3JvdW5kIHtcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsMC4wMSk7XHJcbiAgICB0b3A6IC0xZW07XHJcbiAgICBoZWlnaHQ6IDEwMHZoO1xyXG4gICAgd2lkdGg6IDEwMHZ3O1xyXG4gICAgei1pbmRleDogMTAwO1xyXG59XHJcblxyXG4ubXV0ZWQge1xyXG4gICAgY29sb3I6ICRuaHMtZ3JleTtcclxufVxyXG5cclxuLmJ1dHRvbiB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBwYWRkaW5nOiAwLjVlbSAwLjc1ZW07XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjQ0NDQ0NDO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICBvdXRsaW5lOiBub25lO1xyXG59XHJcblxyXG4uc2VsZWN0aW9ucyAuYnV0dG9uIHtcclxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XHJcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmJ1dHRvbjpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBib3JkZXItY29sb3I6ICRuaHMtYmx1ZTtcclxuICAgIGNvbG9yOiAkbmhzLWJsdWU7XHJcbn1cclxuXHJcbi5idXR0b24uYnV0dG9uLWFjdGl2ZWFkbWluIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY3RpdmUtYWRtaW4teWVsbG93O1xyXG4gICAgYm9yZGVyLWNvbG9yOiBibGFjaztcclxuICAgIGNvbG9yOiBibGFjaztcclxufVxyXG5cclxuLmJ1dHRvbi5idXR0b24tdHJhbnNwYXJlbnQge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG59XHJcblxyXG4uYnV0dG9uLmJ1dHRvbi1zZWxlY3RlZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgICBib3JkZXItY29sb3I6ICRuaHMtYmx1ZTtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxufVxyXG5cclxuLmJ1dHRvbi5idXR0b24tc2VsZWN0ZWQ6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMzA4NztcclxufVxyXG5cclxuLmJ1dHRvbi5idXR0b24tc3VjY2VzcyB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5NjM5O1xyXG4gICAgYm9yZGVyLWNvbG9yOiAjMDA5NjM5O1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG59XHJcblxyXG4uYnV0dG9uLmJ1dHRvbi1zdWNjZXNzOmhvdmVyIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDY3NDdcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idXR0b24sXHJcbiNzZWxlY3RvckJhciAuYnV0dG9uOmZvY3VzICB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBwYWRkaW5nOiAwLjVlbSAwLjc1ZW07XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjQ0NDQ0NDO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICBvdXRsaW5lOiBub25lO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ1dHRvbjpkaXNhYmxlZCB7XHJcbiAgICBjb2xvcjogI0NDQ0NDQztcclxuICAgIGJvcmRlci1jb2xvcjogI0NDQ0NDQztcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idXR0b246ZGlzYWJsZWQ6aG92ZXIge1xyXG4gICAgY29sb3I6ICNDQ0NDQ0M7XHJcbiAgICBib3JkZXItY29sb3I6ICNDQ0NDQ0M7XHJcbiAgICBjdXJzb3I6IHdhaXQ7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuYnV0dG9uOmhvdmVyIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGJvcmRlci1jb2xvcjogJG5ocy1ibHVlO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgcGFkZGluZy10b3A6IDAuNWVtO1xyXG4gICAgcGFkZGluZy1ib3R0b206IDAuNWVtO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgbWFyZ2luLXRvcDogLTEuNWVtO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ1dHRvbjpub3QoLmJ1dHRvbi1pbnB1dCkge1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDQ4NTtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5yb3V0ZSB7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICBjb2xvcjogI0NDQ0NDQztcclxuICAgIG1hcmdpbi10b3A6IDAuMWVtO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLnJvdXRlOm5vdCguLWRlbGV0ZSkgaSB7XHJcbiAgICBtYXJnaW46IDAgMC41ZW07XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAucm91dGUuLWRlbGV0ZTpob3ZlciB7XHJcbiAgICBjb2xvcjogI0RBMjkxQztcclxufVxyXG5cclxuI3JpYmJvbkJhciB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XHJcbn1cclxuXHJcbiNyaWJib25CYXIgaDUge1xyXG4gICAgbWFyZ2luOiAwLjVlbSAwO1xyXG4gICAgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIGNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG59XHJcblxyXG4jcmliYm9uQmFyIC50aWVyLXRvZ2dsZSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0NDg1O1xyXG4gICAgYm9yZGVyLWNvbG9yOiAjMDA0NDg1O1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgcGFkZGluZzogMC41ZW0gMC43NWVtIDAuMjVlbSAwLjc1ZW07XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbiNyaWJib25CYXIgLnRpZXItdG9nZ2xlOmhvdmVyIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuI3JpYmJvbkJhciAudGllci10b2dnbGUgZGl2IHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHdpZHRoOiA5MCU7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xyXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbn1cclxuXHJcbiNyaWJib25CYXIgLnRpZXItdG9nZ2xlIGkge1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgbWFyZ2luLXRvcDogMC4zNWVtO1xyXG4gICAgZmxvYXQ6IHJpZ2h0O1xyXG59XHJcblxyXG4uc2VsZWN0b3ItY29udGFpbmVyIHtcclxuICAgIHBhZGRpbmc6IDAuNWVtO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0NDQ0NDQztcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG59XHJcblxyXG4uc2VsZWN0b3ItY29udGFpbmVyLi1zZWxlY3RlZCB7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbn1cclxuXHJcbi5zZWxlY3Rvci1jb250YWluZXI6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbn1cclxuXHJcbi5zZWxlY3Rvci1jb250YWluZXIgaSB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59XHJcblxyXG4ubWVudS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcblxyXG4ubWVudS1zZWxlY3Qge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHotaW5kZXg6IDIwMDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgbWFyZ2luLXRvcDogMC41ZW07XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1heC13aWR0aDogNTAwcHg7XHJcbiAgICBtYXgtaGVpZ2h0OiA0MDBweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xyXG4gICAgcGFkZGluZzogMC4yNWVtIDA7XHJcbiAgICBib3gtc2hhZG93OiAwIDE0cHggMjhweCByZ2JhKDAsMCwwLDAuMSksIDAgMTBweCAxMHB4IHJnYmEoMCwwLDAsMC4xKTtcclxufVxyXG5cclxuLm1lbnUtc2VsZWN0Li1yaWdodCB7XHJcbiAgICBsZWZ0OiBhdXRvO1xyXG4gICAgcmlnaHQ6IDA7XHJcbn1cclxuXHJcbi5tZW51LXNlbGVjdC4tZGFyayB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIHdpZHRoOiA1MCU7XHJcbn1cclxuXHJcbi5tZW51LXNlbGVjdC4tZGFyayBwIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbn1cclxuXHJcbi5tZW51LXNlbGVjdCAudGllciB7XHJcbiAgICBwYWRkaW5nOiAwLjI1ZW0gMC41ZW07XHJcbn1cclxuXHJcbi5tZW51LXNlbGVjdCAudGllcjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGM0YzO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4ubWVudS1zZWxlY3QgLnRpZXIuLXNlbGVjdGVkIHtcclxuICAgIGNvbG9yOiAkbmhzLWJsdWU7XHJcbn1cclxuXHJcbi5tZW51LXNlbGVjdCAubWVudS1jb250ZXh0IHtcclxuICAgIHBhZGRpbmc6IDFlbSAyZW07XHJcbn1cclxuXHJcbi5tZW51LXNlbGVjdCAubWVudS1jb250ZXh0IGgzIHtcclxuICAgIG1hcmdpbjogMC41ZW0gMDtcclxufVxyXG5cclxuLm1lbnUtc2VsZWN0IC5idG4ge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG59XHJcblxyXG4ucGVyaW9kcyB7XHJcbiAgICBtYXJnaW46IDFlbSAwO1xyXG59XHJcblxyXG5zZWN0aW9uIC5mb3JtLWdyb3VwIHtcclxuICAgIG1hcmdpbi10b3A6IDAuNWVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XHJcbiAgICBwYWRkaW5nOiAwLjVlbSAxZW07XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbn1cclxuXHJcbi5maXJzdCB7XHJcbiAgICBtYXJnaW4tdG9wOiAxLjVlbSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5zZWN0aW9uIC5mb3JtLWdyb3VwOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNGM0YzRjM7XHJcbn1cclxuXHJcbnNlY3Rpb24gLmZvcm0tZ3JvdXAgLmNvZGUge1xyXG4gICAgY29sb3I6ICRuaHMtZ3JleTtcclxufVxyXG5cclxuc2VjdGlvbiAuZm9ybS1ncm91cCBsYWJlbCB7XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxufVxyXG5cclxuc2VjdGlvbiAuaGVscCB7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjVlbTtcclxuICAgIGNvbG9yOiAkbmhzLWdyZXk7XHJcbn1cclxuXHJcbnNlY3Rpb24gaSB7XHJcbiAgICBjb2xvcjogJG5ocy1ncmV5O1xyXG59XHJcblxyXG5zZWN0aW9uIGk6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgY29sb3I6IGJsYWNrO1xyXG59XHJcblxyXG4uZm9ybS1hY3Rpb25zIHtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDNlbTtcclxufVxyXG5cclxuLmZvcm0tYWN0aW9ucyAubWVzc2FnZSB7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjc1ZW07XHJcbn1cclxuXHJcbi5zZWxlY3Rpb25zIGg0IHtcclxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbn1cclxuXHJcbi5oaWdobGlnaHQtYWRtaW4ge1xyXG4gICAgY29sb3I6ICRhY3RpdmUtYWRtaW4teWVsbG93ICFpbXBvcnRhbnQ7XHJcbiAgICBmb250LXdlaWdodDogNzAwO1xyXG59XHJcblxyXG4uYWN0aXZlQWRtaW4tdG9nZ2xlIHtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY3RpdmUtYWRtaW4teWVsbG93O1xyXG4gICAgcGFkZGluZzogMC41ZW0gMWVtO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93O1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgIGZvbnQtc2l6ZTogMTdweDtcclxufVxyXG5cclxuLmFjdGl2ZUFkbWluLXRvZ2dsZTpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWN0aXZlLWFkbWluLWRhcmt5ZWxsb3c7XHJcbn1cclxuXHJcbi5hY3RpdmVBZG1pbiB7XHJcbiAgICBtYXJnaW4tdG9wOiAxZW07XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWN0aXZlLWFkbWluLXllbGxvdztcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRhY3RpdmUtYWRtaW4tZGFya3llbGxvdztcclxuICAgIHBhZGRpbmc6IDFlbTtcclxufVxyXG5cclxuLmFjdGl2ZUFkbWluIGg0IHtcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG59XHJcblxyXG4uYWN0aXZlQWRtaW4gLmZvcm0tY29udHJvbCB7XHJcbiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXItY29sb3I6ICRhY3RpdmUtYWRtaW4tZGFya3llbGxvdztcclxuICAgIGNvbG9yOiBibGFjaztcclxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICBvdmVyZmxvdy14OiBzY3JvbGw7XHJcbn1cclxuXHJcbi5hY3RpdmVBZG1pbiAuZm9ybS1jb250cm9sOjpwbGFjZWhvbGRlciB7XHJcbiAgICBjb2xvcjogJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93O1xyXG4gICAgb3BhY2l0eTogMTtcclxufVxyXG4gIFxyXG4uYWN0aXZlQWRtaW4gLmZvcm0tY29udHJvbDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcclxuICAgIGNvbG9yOiAkYWN0aXZlLWFkbWluLWRhcmt5ZWxsb3c7XHJcbn1cclxuXHJcbi5hY3RpdmVBZG1pbiAuZm9ybS1jb250cm9sOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xyXG4gICAgY29sb3I6ICRhY3RpdmUtYWRtaW4tZGFya3llbGxvdztcclxufVxyXG5cclxuLm5vLXN1Ymdyb3VwIC5zdWJncm91cC1oZWFkZXIge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuc2VjdGlvbiAubm8tc3ViZ3JvdXAgLmZvcm0tZ3JvdXAge1xyXG4gICAgcGFkZGluZy1sZWZ0OiAwO1xyXG59XHJcblxyXG5zZWN0aW9uIC5uby1zdWJncm91cCAuZm9ybS1ncm91cDpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIGN1cnNvcjogZGVmYXVsdDtcclxufVxyXG5cclxuLnN1Ymdyb3VwIHtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRuaHMtYmx1ZTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgIHBhZGRpbmc6IDFlbSAwLjVlbTtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxufVxyXG5cclxuLnN1Ymdyb3VwIC5zdWJncm91cC1oZWFkZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgIHBhZGRpbmc6IDNweCA2cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBtYXJnaW4tbGVmdDogMC41ZW07XHJcbn1cclxuXHJcbi5xdWVzdGlvbi1lcnJvciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjREEyOTFDO1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgbWFyZ2luLXRvcDogMWVtO1xyXG4gICAgcGFkZGluZzogNnB4IDEycHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbn1cclxuXHJcbiNleGNlbEltcG9ydCBwLFxyXG4jY29sbGVjdGlvbkNsb3NlZCBwLFxyXG4jd3JvbmdCcm93c2VyIHAge1xyXG4gICAgbWFyZ2luLXRvcDogMWVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxufVxyXG5cclxuI2V4Y2VsSW1wb3J0IC5iYWRnZS1zdWNjZXNzIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbiNleGNlbEltcG9ydCB0ZXh0YXJlYSB7XHJcbiAgICBtYXJnaW46IDFlbSAwO1xyXG59XHJcblxyXG4jZXhjZWxJbXBvcnQgaSB7XHJcbiAgICBjb2xvcjogaW5oZXJpdDtcclxufVxyXG5cclxuI2V4Y2VsSW1wb3J0LCAjY29sbGVjdGlvbkNsb3NlZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxufVxyXG5cclxuI2V4Y2VsSW1wb3J0IGRpdi5jc3ZFcnJvcnMge1xyXG4gICAgbWFyZ2luLXRvcDogMWVtO1xyXG4gICAgY29sb3I6ICNEQTI5MUM7XHJcbn1cclxuXHJcbi5pbWctZ3VpZGFuY2Uge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjaztcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcclxufVxyXG5cclxuI2V4Y2VsSW1wb3J0IC5jc3ZFcnJvcnMsXHJcbiNleGNlbEltcG9ydCAuY3N2RXJyb3JzIHVsIHtcclxuICAgIGZvbnQtc2l6ZTogMTdweDtcclxuICAgIHBhZGRpbmctbGVmdDogMC44O1xyXG59XHJcblxyXG4jY29sbGVjdGlvbkNsb3NlZCBoMyxcclxuI3dyb25nQnJvd3NlciBoMyxcclxuI3dyb25nQnJvd3NlciBhIHtcclxuICAgIGNvbG9yOiAjREEyOTFDO1xyXG59XHJcblxyXG4jY29sbGVjdGlvbkNsb3NlZCxcclxuI3dyb25nQnJvd3NlciB7XHJcbiAgICBib3JkZXItY29sb3I6ICNEQTI5MUM7XHJcbn1cclxuXHJcbi5hdXRvc3VtIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNBRTI1NzM7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgICBwYWRkaW5nOiAzcHggNHB4IDJweCA0cHg7XHJcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgIGZvbnQtc2l6ZTogMTFweDtcclxuICAgIG1hcmdpbi10b3A6IDAuNWVtO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG59XHJcblxyXG4uYXV0b3N1bTpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjN0MyODU1O1xyXG59XHJcblxyXG4uYXV0b3N1bSBpIHtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIG1hcmdpbi1yaWdodDogMC41ZW07XHJcbn1cclxuXHJcbi5uYXJyYXRpdmUge1xyXG4gICAgbWFyZ2luOiAtMWVtO1xyXG4gICAgY29sb3I6ICRuaHMtZ3JleTtcclxufVxyXG5cclxuI2FjdGl2ZUFkbWluIHtcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFjdGl2ZS1hZG1pbi15ZWxsb3c7XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93O1xyXG4gICAgcGFkZGluZzogMWVtO1xyXG4gICAgei1pbmRleDogMTAwMDA7XHJcbn1cclxuXHJcbiNhY3RpdmVBZG1pbkJhciB7XHJcblx0cG9zaXRpb246IGZpeGVkO1xyXG5cdGJvdHRvbTogMDtcclxuXHRsZWZ0OiAwO1xyXG5cdHdpZHRoOiAxMDAlO1xyXG5cdHBhZGRpbmc6IDAuNWVtIDAuMjVlbTtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRiYzMwO1xyXG5cdHotaW5kZXg6IDEwO1xyXG59XHJcblxyXG4jYWN0aXZlQWRtaW5CYXIgLmJ0bi1kZWZhdWx0IHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRiYzMwO1xyXG5cdGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcblx0Y29sb3I6IGJsYWNrO1xyXG5cdGJvcmRlci1yYWRpdXM6IDRweDtcclxuXHRmb250LXdlaWdodDogNjAwO1xyXG5cdG1hcmdpbjogMCAwLjI1ZW07XHJcbn0iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiXX0= */\"","import { Component, OnInit, HostListener, ViewChild } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\n\r\n// Services\r\nimport { Meta, Title } from '@angular/platform-browser';\r\nimport { IcsService } from 'app/utilities/services/ics.service';\r\nimport { MemberService } from 'app/utilities/services/member.service';\r\n\r\n// Pipes\r\nimport { SumPipe, MakePluralStringPipe } from 'ngx-pipes';\r\nimport { ModalDirective } from 'ngx-bootstrap';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-collection',\r\n templateUrl: './collection.component.html',\r\n styleUrls: ['./collection.component.scss']\r\n})\r\nexport class CollectionComponent implements OnInit {\r\n\r\n @ViewChild('guidanceModal') public guidanceModal:ModalDirective;\r\n\r\n subscriptions = [];\r\n projectId; projectName; projectDetails;\r\n activeAdmin; csvErrors; csvSuccess: boolean = false;\r\n\r\n menuSelect = [\r\n { name: 'organisations', open: false },\r\n { name: 'dates', open: false },\r\n { name: 'submissions', open: false }\r\n ]\r\n\r\n error; errorSave;\r\n collection;\r\n collectionClosed: boolean = false;\r\n collectionOverride: boolean = false;\r\n collectionCloseDate: any;\r\n organisations; selectedOrganisation;\r\n submissions; selectedSubmission;\r\n dates; selectedDate; \r\n selectedGroup;\r\n\r\n projectDates; selectedProjectDate; csvDate;\r\n hiddenYear: boolean = false;\r\n\r\n collectionForm: FormGroup;\r\n questions; loadingQuestions: boolean = false;\r\n\r\n saving: boolean = false;\r\n\r\n metaTitle: string = 'Data Collection | NHS Benchmarking Network';\r\n\r\n constructor(\r\n private titleService: Title,\r\n private meta: Meta,\r\n private icsService: IcsService,\r\n private memberService: MemberService,\r\n public route: ActivatedRoute,\r\n public router: Router,\r\n public sum: SumPipe,\r\n public pluralise: MakePluralStringPipe,\r\n public date: DatePipe\r\n ) {\r\n this.projectId = +this.route.snapshot.paramMap.get('projectId');\r\n }\r\n\r\n ngOnInit() { \r\n this.titleService.setTitle(this.metaTitle);\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n this.getSubmissions(this.projectId);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe();\r\n }\r\n\r\n getSubmissions(projectId) {\r\n this.subscriptions.push(\r\n this.icsService.submissions(projectId).subscribe(\r\n r => {\r\n\r\n // Set project name\r\n this.projectName = r.data.projectDetails.projectName;\r\n this.projectDetails = r.data.projectDetails;\r\n\r\n // Set admin user\r\n let user = JSON.parse(sessionStorage.getItem('user'));\r\n this.activeAdmin = user && user.isAdmin && user.isAdmin === 'Y' ? true : false;\r\n\r\n // Get saved organisation\r\n let savedOrganisation = JSON.parse(sessionStorage.getItem('organisationId'));\r\n\r\n // Set project dates\r\n this.projectDates = this.formatDates(r.data.projectDates);\r\n this.selectedProjectDate = this.projectDates[0];\r\n\r\n // Save all collection data\r\n this.collection = r.data;\r\n\r\n // Get organisation\r\n this.organisations = r.data.userOrganisations;\r\n if (this.organisations.length > 0) {\r\n let selectedOrganisation;\r\n if (savedOrganisation) {\r\n selectedOrganisation = this.organisations.filter(o => o.externalOrganisationId === +savedOrganisation)[0];\r\n if (selectedOrganisation) {\r\n this.selectedOrganisation = selectedOrganisation;\r\n this.setSubmissions(selectedOrganisation);\r\n } else {\r\n this.selectedOrganisation = this.organisations[0];\r\n this.setSubmissions(this.selectedOrganisation);\r\n }\r\n } else {\r\n this.selectedOrganisation = this.organisations[0];\r\n this.setSubmissions(this.selectedOrganisation);\r\n }\r\n } else {\r\n this.error = \"You do not have the necessary permissions to view this data collection page. Please contact the Support Team.\"\r\n }\r\n\r\n },\r\n e => {\r\n console.log(e);\r\n this.error = \"There has been an error retrieving the data collection page. Please try refreshing the page, then contact the Support Team.\"\r\n }\r\n )\r\n )\r\n }\r\n\r\n getCollection(projectId, selectedDate, submissionId) {\r\n this.loadingQuestions = true;\r\n this.selectedProjectDate = selectedDate;\r\n this.csvSuccess = false;\r\n this.csvDate = this.date.transform(this.selectedProjectDate.dateFrom, 'MMM-yy');\r\n this.subscriptions.push(\r\n this.icsService.collection(projectId, selectedDate.dateId, submissionId).subscribe(\r\n r => {\r\n\r\n let collectionDates = this.collection.projectDates.filter(c => c.dateId === selectedDate.dateId)[0];\r\n\r\n if (collectionDates.activeAdmin) {\r\n this.hiddenYear = true;\r\n } else {\r\n this.hiddenYear = false;\r\n }\r\n\r\n let collectionEnd;\r\n \r\n if (collectionDates.extendedCollectionEnd) {\r\n collectionEnd = collectionDates.extendedCollectionEnd;\r\n } else {\r\n collectionEnd = collectionDates.collectionEnd\r\n }\r\n \r\n this.collectionCloseDate = new Date(collectionEnd);\r\n let timeNow = new Date(Date.now());\r\n let diff = this.collectionCloseDate.getTime() - timeNow.getTime();\r\n \r\n if (diff < 0) {\r\n if (this.activeAdmin) {\r\n this.collectionOverride = true;\r\n this.collectionClosed = false;\r\n } else {\r\n this.collectionClosed = true;\r\n }\r\n } else {\r\n this.collectionOverride = false;\r\n this.collectionClosed = false;\r\n } \r\n\r\n let groups = r.data.dataItemGroups,\r\n categories = r.data.dataItemCategories;\r\n if (groups.length > 0) {\r\n this.setQuestions(groups, categories);\r\n } else {\r\n this.error = \"There are no questions set for this project or time period yet. Please contact the Support Team\";\r\n this.loadingQuestions = false;\r\n }\r\n },\r\n e => {\r\n console.log(e);\r\n this.error = \"There has been an error retrieving the data collection page. Please try refreshing the page, then contact the Support Team.\";\r\n this.loadingQuestions = false;\r\n }\r\n )\r\n )\r\n }\r\n\r\n setSubmissions(organisation) {\r\n this.submissions = organisation.submissionList;\r\n let urlSubmission = +this.route.snapshot.queryParams.submission;\r\n if (urlSubmission) {\r\n this.selectedSubmission = this.selectedOrganisation.submissionList.filter(s => s.submissionId === urlSubmission)[0];\r\n } else {\r\n this.selectedSubmission = this.selectedOrganisation.submissionList[0];\r\n }\r\n this.dates = this.collection.projectDates.reverse();\r\n let urlDate = +this.route.snapshot.queryParams.date;\r\n if (urlDate) {\r\n this.selectedProjectDate = this.projectDates.filter(d => d.dateId === urlDate)[0];\r\n if (this.selectedSubmission) {\r\n this.getCollection(this.projectId, this.selectedProjectDate, this.selectedSubmission.submissionId);\r\n } else {\r\n this.selectOrganisation(organisation);\r\n }\r\n } else {\r\n this.getCollection(this.projectId, this.selectedProjectDate, this.selectedSubmission.submissionId);\r\n }\r\n }\r\n\r\n setQuestions(groups, categories) {\r\n this.questions = this.formatQuestions(groups, categories);\r\n let questionGroup = {}; \r\n this.questions.forEach(q => {\r\n if (q.response !== null) {\r\n questionGroup[q.id] = new FormControl({ value: q.response, disabled: this.collectionClosed }, [\r\n q.decimalPlaces === null ? Validators.pattern(\"^[+-]?[0-9]*$\") : Validators.pattern('^[+-]?[0-9]*(?:\\.[0-9]{0,' + q.decimalPlaces + '})?$'),\r\n Validators.min(q.rangeMin),\r\n Validators.max(q.rangeMax)\r\n ]);\r\n } else {\r\n questionGroup[q.id] = new FormControl({ value: '', disabled: this.collectionClosed }, [\r\n q.decimalPlaces === null ? Validators.pattern(\"^[+-]?[0-9]*$\") : Validators.pattern('^[+-]?[0-9]*(?:\\.[0-9]{0,' + q.decimalPlaces + '})?$'),\r\n Validators.min(q.rangeMin),\r\n Validators.max(q.rangeMax)\r\n ]);\r\n }\r\n });\r\n this.collectionForm = new FormGroup(questionGroup);\r\n this.router.navigate([], { queryParams: { submission: this.selectedSubmission.submissionId, date: this.selectedProjectDate.dateId }, queryParamsHandling: 'merge' });\r\n this.loadingQuestions = false;\r\n this.onChanges();\r\n }\r\n\r\n onChanges(): void {\r\n this.collectionForm.valueChanges.subscribe(val => {\r\n Object.keys(val).forEach(key => {\r\n let question = this.questions.filter(q => q.id === +key)[0];\r\n let errors = this.collectionForm.controls[key].errors;\r\n question.errors = errors;\r\n });\r\n });\r\n }\r\n\r\n // UTILITIES\r\n\r\n selectOrganisation(organisation) {\r\n this.router.navigate([], { queryParams: { submission: null, date: null }, queryParamsHandling: 'merge' });\r\n this.selectedDate = null;\r\n this.questions = null;\r\n let findOrganisation = this.organisations.indexOf(organisation);\r\n this.selectedOrganisation = this.organisations[findOrganisation];\r\n this.submissions = organisation.submissionList;\r\n this.selectedSubmission = this.selectedOrganisation.submissionList[0];\r\n this.getCollection(this.projectId, this.selectedProjectDate, this.selectedSubmission.submissionId);\r\n }\r\n\r\n changeSubmission(submission) {\r\n this.selectedSubmission = submission;\r\n if (this.selectedProjectDate) {\r\n this.getCollection(this.projectId, this.selectedProjectDate, submission.submissionId);\r\n }\r\n }\r\n\r\n formatDates(dates) {\r\n let outputData = [],\r\n timeNow = new Date(Date.now());\r\n\r\n // Remove any dates without collection ends (hidden)\r\n dates = dates.filter(d => d.collectionEnd);\r\n\r\n // Set Active Admin state if data collection is\r\n // not yet open. collectionEnd date must be set\r\n dates.forEach(d => {\r\n if (d.collectionEnd) {\r\n let timeCollectionStart = new Date(d.collectionStart);\r\n let timeDiff = timeCollectionStart.getTime() - timeNow.getTime();\r\n if (timeDiff < 0) {\r\n d.activeAdmin = false;\r\n outputData.push(d);\r\n } else if (this.activeAdmin) {\r\n d.activeAdmin = true;\r\n outputData.push(d);\r\n }\r\n }\r\n });\r\n\r\n return outputData.reverse();\r\n }\r\n\r\n formatQuestions(groups, categories) {\r\n let output = [];\r\n\r\n groups.forEach(g => {\r\n if (g.dataItemList.length > 0) {\r\n g.dataItemList.forEach(dil => {\r\n let response;\r\n let category = categories.filter(c => c.dataItemId === dil.dataItemId);\r\n // Set response\r\n if (dil.responseList.length > 0) { \r\n response = dil.responseList[0];\r\n }\r\n // Set category name\r\n if (category.length > 0) {\r\n category = category[0].categoryName;\r\n } else {\r\n category = null;\r\n }\r\n output.push({\r\n groupId: g.dataItemGroupId,\r\n groupName: g.dataItemGroupName,\r\n categoryName: category,\r\n id: dil.dataItemId,\r\n code: dil.dataItemCode,\r\n type: \"number\",\r\n decimalPlaces: dil.decimalPlaces,\r\n label: dil.dataItemName,\r\n help: dil.dataDefinition,\r\n formatModifier: dil.formatModifier,\r\n rangeMax: dil.rangeMax,\r\n rangeMin: dil.rangeMin,\r\n showHelp: false,\r\n response: response ? response.responseValue : null,\r\n responseId: response ? response.responseId : null,\r\n visible: true,\r\n errors: null\r\n });\r\n })\r\n }\r\n })\r\n\r\n return output;\r\n }\r\n\r\n submit(){\r\n let responses = [];\r\n this.saving = true;\r\n\r\n Object.keys(this.collectionForm.controls).forEach(key => {\r\n let currentResponse = this.collectionForm.controls[key];\r\n\r\n if (currentResponse.dirty) {\r\n responses.push({\r\n dataItemId: +key,\r\n responseValue: currentResponse.value\r\n });\r\n }\r\n });\r\n\r\n if (responses.length > 0) {\r\n this.saveResponses(this.projectId, this.selectedProjectDate.dateId, this.selectedSubmission.submissionId, responses);\r\n } else {\r\n console.log('No changes to save.');\r\n this.saving = false;\r\n }\r\n }\r\n\r\n saveResponses(projectId, dateId, submissionId, responses) {\r\n this.icsService.saveResponses(projectId, dateId, submissionId, responses).subscribe(\r\n r => {\r\n this.collectionForm.markAsPristine();\r\n },\r\n e => {\r\n console.log(e);\r\n this.errorSave = e.error.message;\r\n },\r\n () => {\r\n this.saving = false;\r\n }\r\n )\r\n\r\n }\r\n\r\n fromCSV(id) {\r\n\r\n // Save errors\r\n this.csvErrors = [];\r\n this.csvSuccess = false;\r\n let csvErrors = [];\r\n\r\n // Get input text and month to match\r\n let input = ((document.getElementById(id) as HTMLInputElement).value);\r\n\r\n let inputMonth = this.csvDate;\r\n\r\n // Split into lines\r\n let lines = input.split('\\n');\r\n\r\n // Get header line and remove it\r\n const header = lines[0].split('\\t');\r\n lines = lines.slice(1);\r\n\r\n // Define month column; error if not present\r\n let monthIndex = header.indexOf(inputMonth);\r\n if (monthIndex < 0) {\r\n csvErrors.push('The response column is not specified within the pasted data.');\r\n } else {\r\n\r\n // Define reference column\r\n let refIndex = header.indexOf('Ref');\r\n if (refIndex < 0) {\r\n csvErrors.push('There is no reference column specified in the pasted data.')\r\n }\r\n\r\n // Define individual responses per line\r\n let responses = [];\r\n lines.forEach(line => {\r\n let responseLine = line.split('\\t');\r\n // Only add response if not blank\r\n if (responseLine[monthIndex] !== '') {\r\n responses.push({\r\n code: responseLine[refIndex],\r\n value: responseLine[monthIndex]\r\n });\r\n }\r\n });\r\n\r\n // Remove responses with no codes\r\n responses = responses.filter(r => r.code !== '');\r\n\r\n // TODO: Find differences between pasted responses\r\n // and form controls (.length?)\r\n\r\n // Add the question ID based on question code\r\n responses.forEach(r => {\r\n let question = this.questions.filter(q => q.code === r.code)[0];\r\n if (question) {\r\n r.id = question.id;\r\n } else {\r\n csvErrors.push('There is no question on this page with the code ' + r.code + '.')\r\n }\r\n });\r\n\r\n // Remove non-numeric characters (, %)\r\n responses.forEach(r => {\r\n r.value = r.value.replace(/,/g, '').replace(/%/g, '')\r\n });\r\n\r\n // Convert all strings to numbers\r\n responses.forEach(r => {\r\n r.value = +r.value\r\n });\r\n\r\n // Set the form values based on question ID\r\n responses.forEach(r => {\r\n let check = this.collectionForm.controls[r.id];\r\n if (check) {\r\n this.collectionForm.controls[r.id].setValue(r.value);\r\n this.collectionForm.controls[r.id].markAsDirty();\r\n } else {\r\n csvErrors.push('Error when trying to add ' + r.code + ' to the form.')\r\n }\r\n });\r\n\r\n }\r\n\r\n if (csvErrors.length > 0) {\r\n this.csvErrors = csvErrors;\r\n } else {\r\n this.csvSuccess = true;\r\n }\r\n\r\n }\r\n\r\n toggleMenu(index) {\r\n this.menuSelect[index].open = !this.menuSelect[index].open;\r\n }\r\n\r\n toggleGroup(group) {\r\n let questions = this.questions.filter(q => q.groupName === group[0]);\r\n if (questions[0].visible === true) {\r\n questions.forEach(q => q.visible = false);\r\n } else {\r\n questions.forEach(q => q.visible = true);\r\n }\r\n }\r\n \r\n toggleHelp(question) {\r\n let findQuestion = this.questions.indexOf(question),\r\n thisQuestion = this.questions[findQuestion];\r\n\r\n thisQuestion.showHelp = !thisQuestion.showHelp\r\n }\r\n\r\n unsubscribe() {\r\n this.subscriptions.forEach(s => {\r\n s.unsubscribe();\r\n });\r\n }\r\n\r\n navHome() {\r\n if (this.collectionForm && this.collectionForm.dirty) {\r\n if(confirm('Are you sure you want to exit this page with unsaved changes? You can save changes by scrolling to the bottom of the data collection page. Click \"OK\" to continue or \"Cancel\" to remain on the page')) {\r\n this.router.navigate(['/home']);\r\n this.unsubscribe();\r\n }\r\n } else {\r\n this.router.navigate(['/home']);\r\n this.unsubscribe();\r\n }\r\n }\r\n\r\n closeMenu() {\r\n this.menuSelect.forEach(s => { s.open = false; });\r\n }\r\n\r\n autoSum(question) {\r\n let categoryName = question.categoryName,\r\n groupName = question.groupName,\r\n category = this.questions.filter(q => q.categoryName === categoryName && q.groupName === groupName && q.formatModifier !== 'S'),\r\n values = [];\r\n\r\n if (category.length > 0) {\r\n category.forEach(c => {\r\n let control = this.collectionForm.controls[c.id];\r\n values.push(+control.value);\r\n });\r\n let total = this.sum.transform(values);\r\n this.collectionForm.controls[question.id].setValue(total);\r\n this.collectionForm.controls[question.id].markAsDirty();\r\n }\r\n\r\n }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { ResponsiveModule } from 'ngx-responsive';\r\n\r\nimport { CollectionComponent } from './collection.component';\r\nimport { CollectionRoutingModule } from './collection-routing.module';\r\n\r\nimport { Ng2HighchartsModule } from 'ng2-highcharts';\r\nimport { NgPipesModule, SumPipe, MakePluralStringPipe } from 'ngx-pipes';\r\nimport { SafePipeModule } from '../utilities/pipes/safe-pipe.module';\r\nimport { ModalModule } from \"ngx-bootstrap\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CollectionRoutingModule,\r\n Ng2HighchartsModule,\r\n NgPipesModule,\r\n SafePipeModule,\r\n ReactiveFormsModule,\r\n ResponsiveModule,\r\n ModalModule\r\n ],\r\n declarations: [\r\n CollectionComponent\r\n ],\r\n providers: [\r\n SumPipe,\r\n MakePluralStringPipe\r\n ]\r\n})\r\nexport class CollectionModule {}","export class contactInformation {\r\n static contact: Array = [\r\n {\r\n title: \"General enquiries\",\r\n phone: \"0161 521 0818\",\r\n email: \"enquiries@nhsbenchmarking.nhs.uk\",\r\n address: `NHS Benchmarking Network\r\n c/o 3000 Aviator Way\r\n Manchester Business Park\r\n Manchester\r\n M22 5TG`,\r\n },\r\n ];\r\n\r\n static acute: Array = [\r\n {\r\n title: \"Outpatients\",\r\n phone: \"0161 521 0923\",\r\n },\r\n {\r\n title: \"Pharmacy\",\r\n phone: \"0161 521 0930\",\r\n },\r\n {\r\n title: \"Emergency Care\",\r\n phone: \"0161 521 0934\",\r\n },\r\n {\r\n title: \"Managing Frailty\",\r\n phone: \"0161 521 0937\",\r\n },\r\n ];\r\n\r\n static acuteAndCommunity: Array = [\r\n {\r\n title: \"Therapies\",\r\n phone: \"0161 521 0943\",\r\n },\r\n {\r\n title: \"Virtual Wards\",\r\n phone: \"0161 521 0927\",\r\n },\r\n ];\r\n\r\n static community: Array = [\r\n\r\n {\r\n title: \"Intermediate Care\",\r\n phone: \"0161 521 0936\",\r\n },\r\n {\r\n title: \"District Nursing\",\r\n phone: \"0161 528 9527\",\r\n },\r\n {\r\n title: \"Healthy Child Programme\",\r\n phone: \"0161 521 0944\",\r\n },\r\n {\r\n title: \"Email\",\r\n email: \"nhsbn.cst@nhs.net\"\r\n }\r\n ];\r\n\r\n static mentalHealth: Array = [\r\n {\r\n title: \"CYP MH\",\r\n phone: \"0161 521 0949\",\r\n email: \"nhsbn.cypmh@nhs.net\"\r\n },\r\n {\r\n title: \"AOP MH\",\r\n email: \"nhsbn.mhadult@nhs.net\"\r\n },\r\n {\r\n title: \"Mental Health\",\r\n phone: \"0161 521 0952\",\r\n },\r\n {\r\n title: \"Learning Disabilities\",\r\n phone: \"0161 521 0954\",\r\n email: \"nhsbn.mhlda@nhs.net\"\r\n },\r\n {\r\n title: \"MHIndicators\",\r\n email: \"nhsbn.mhindicators@nhs.net\",\r\n },\r\n {\r\n title: \"Improvement Standards\",\r\n phone: \"0161 521 0956\",\r\n email: \"nhsbn.nhsildsupport@nhs.net\"\r\n },\r\n {\r\n title: \"Email\",\r\n email: \"nhsbn.mhindicators@nhs.net\"\r\n }\r\n ];\r\n static nationalAudits: Array = [\r\n {\r\n title: \"NACEL\",\r\n phone: \"0161 521 0866\",\r\n email: \"nhsbn.nacelsupport@nhs.net\"\r\n },\r\n {\r\n title: \"CVDPREVENT\",\r\n email: \"nhsbn.cvdprevent@nhs.net\"\r\n },\r\n ];\r\n\r\n static commissioning: Array = [\r\n {\r\n title: \"ICS Benchmarker\",\r\n phone: \"0161 521 0957\",\r\n },\r\n ];\r\n\r\n static getContactInfo() {\r\n return this.contact;\r\n }\r\n static getAcuteInfo() {\r\n return this.acute;\r\n }\r\n static getCommunityInfo() {\r\n return this.community;\r\n }\r\n static getMentalHealthInfo() {\r\n return this.mentalHealth;\r\n }\r\n static getNationalAuditsInfo() {\r\n return this.nationalAudits;\r\n }\r\n static getCommissioningInfo() {\r\n return this.commissioning;\r\n }\r\n static getacuteAndCommunity() {\r\n return this.acuteAndCommunity;\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { Routes, RouterModule } from \"@angular/router\";\r\nimport { ContactComponent } from \"./contact.component\";\r\n\r\nimport { AuthGuardService } from \"../utilities/services/auth-guard.service\";\r\n\r\nconst routes: Routes = [\r\n {\r\n path: \"contact\",\r\n component: ContactComponent,\r\n canActivate: [AuthGuardService],\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class ContactRoutingModule {}\r\n","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Back to Home\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

Contact

\\r\\n

\\r\\n You can contact the NHS Benchmarking Network at any time using the form\\r\\n here to the side. Please also feel free to contact each of the project\\r\\n teams using the telephone numbers provided. These will redirect you to MS\\r\\n Teams Phone.\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ contact.title }}
\\r\\n
{{ contact.phone }}
\\r\\n \\r\\n {{ contact.email }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Only use numbers\\r\\n
\\r\\n
\\r\\n
\\r\\n Subject*\\r\\n \\r\\n
\\r\\n
\\r\\n Organisation*\\r\\n \\r\\n
\\r\\n
\\r\\n Message*\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Request submitted

\\r\\n \\r\\n Submit another request \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"#selectorBar {\\n background-color: #005EB8;\\n margin-top: -2em; }\\n\\n#selectorBar .btn-back {\\n color: white;\\n font-size: 17px;\\n line-height: 2.5em; }\\n\\n#selectorBar .btn-back .fa {\\n margin-right: 5px; }\\n\\n#selectorBar .btn-back:hover {\\n cursor: pointer; }\\n\\n#selectorBar .form-group {\\n padding: 5px 0;\\n margin-bottom: 0;\\n background-color: #004485; }\\n\\n#selectorBar .form-control {\\n background-color: #004485;\\n color: white;\\n border: none; }\\n\\n#selectorBar .form-control:focus {\\n outline: none;\\n box-shadow: none; }\\n\\n#containerContact {\\n padding-bottom: 6em;\\n padding-top: 1em;\\n background-color: #f3f3f3;\\n min-height: 80vh;\\n min-height: 100%;\\n padding-bottom: 5em;\\n z-index: -1; }\\n\\n@media (min-width: 1260px) {\\n #containerContact {\\n padding-left: 15%;\\n padding-right: 15%; } }\\n\\nh1 {\\n font-weight: 600;\\n margin-top: 1em;\\n margin-bottom: 0.5em;\\n line-height: 1.25em; }\\n\\n.intro-p {\\n font-size: 1.2em; }\\n\\n.intro-small {\\n font-size: 1em; }\\n\\n.btn-request {\\n border: 1px solid #ccc;\\n border-radius: 5px; }\\n\\ninput,\\ntextarea,\\nselect {\\n border: 1px solid #ccc;\\n border-radius: 5px;\\n margin-bottom: 1.5em; }\\n\\n#contact {\\n margin-top: 3em; }\\n\\n.form-card {\\n background-color: white;\\n padding: 1.5em;\\n padding-left: 0.5em;\\n border: 1px solid #ccc;\\n border-radius: 5px;\\n position: relative; }\\n\\nlabel {\\n display: block; }\\n\\n.error-text-head {\\n color: red; }\\n\\n.error-text-body {\\n font-size: 1em; }\\n\\n.padding {\\n padding-bottom: 5px; }\\n\\n.contacts {\\n margin-top: 2em; }\\n\\n.contacts hr {\\n margin-top: 4px;\\n margin-bottom: 4px; }\\n\\n.text-center b {\\n float: right;\\n margin-top: 2em;\\n cursor: pointer;\\n text-decoration: underline; }\\n\\n::-webkit-scrollbar {\\n width: 5px;\\n height: 5px; }\\n\\n::-webkit-scrollbar-track {\\n background: #f1f1f1; }\\n\\n::-webkit-scrollbar-thumb {\\n background: #bec4c4; }\\n\\n::-webkit-scrollbar-thumb:hover {\\n background: #555; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29udGFjdC9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxjb250YWN0XFxjb250YWN0LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb250YWN0L0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxfdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDRSx5QkNEZ0I7RURFaEIsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0UsWUFBWTtFQUNaLGVBQWU7RUFDZixrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxpQkFBaUIsRUFBQTs7QUFHbkI7RUFDRSxlQUFlLEVBQUE7O0FBR2pCO0VBQ0UsY0FBYztFQUNkLGdCQUFnQjtFQUNoQix5QkFBeUIsRUFBQTs7QUFHM0I7RUFDRSx5QkFBeUI7RUFDekIsWUFBWTtFQUNaLFlBQVksRUFBQTs7QUFHZDtFQUNFLGFBQWE7RUFDYixnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxtQkFBbUI7RUFDbkIsZ0JBQWdCO0VBQ2hCLHlCQUF5QjtFQUN6QixnQkFBZ0I7RUFDaEIsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQixXQUFXLEVBQUE7O0FBR2I7RUFDRTtJQUNFLGlCQUFpQjtJQUNqQixrQkFBa0IsRUFBQSxFQUNuQjs7QUFHSDtFQUNFLGdCQUFnQjtFQUNoQixlQUFlO0VBQ2Ysb0JBQW9CO0VBQ3BCLG1CQUFtQixFQUFBOztBQUdyQjtFQUNFLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLGNBQWMsRUFBQTs7QUFHaEI7RUFDRSxzQkFBc0I7RUFDdEIsa0JBQWtCLEVBQUE7O0FBR3BCOzs7RUFHRSxzQkFBc0I7RUFDdEIsa0JBQWtCO0VBQ2xCLG9CQUFvQixFQUFBOztBQUd0QjtFQUNFLGVBQWUsRUFBQTs7QUFJakI7RUFDRSx1QkFBdUI7RUFDdkIsY0FBYztFQUNkLG1CQUFtQjtFQUNuQixzQkFBc0I7RUFDdEIsa0JBQWtCO0VBQ2xCLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLGNBQWMsRUFBQTs7QUFHaEI7RUFDRSxVQUFVLEVBQUE7O0FBR1o7RUFDRSxjQUFjLEVBQUE7O0FBR2hCO0VBQ0UsbUJBQW1CLEVBQUE7O0FBR3JCO0VBQ0UsZUFBZSxFQUFBOztBQURqQjtJQUdJLGVBQWU7SUFDZixrQkFBa0IsRUFBQTs7QUFJdEI7RUFDRSxZQUFZO0VBQ1osZUFBZTtFQUNmLGVBQWU7RUFDZiwwQkFBMEIsRUFBQTs7QUFHekI7RUFDQyxVQUFVO0VBQ1YsV0FBVyxFQUFBOztBQUVkO0VBQ0UsbUJBQW1CLEVBQUE7O0FBRXRCO0VBQ0csbUJBQW1CLEVBQUE7O0FBRXJCO0VBQ0csZ0JBQWdCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9jb250YWN0L2NvbnRhY3QuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IFwiLi4vLi4vdmFyaWFibGVzXCI7XHJcblxyXG4vLyBTZWxlY3RvckJhclxyXG4jc2VsZWN0b3JCYXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICRuaHMtYmx1ZTtcclxuICBtYXJnaW4tdG9wOiAtMmVtO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ0bi1iYWNrIHtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgZm9udC1zaXplOiAxN3B4O1xyXG4gIGxpbmUtaGVpZ2h0OiAyLjVlbTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idG4tYmFjayAuZmEge1xyXG4gIG1hcmdpbi1yaWdodDogNXB4O1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ0bi1iYWNrOmhvdmVyIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuZm9ybS1ncm91cCB7XHJcbiAgcGFkZGluZzogNXB4IDA7XHJcbiAgbWFyZ2luLWJvdHRvbTogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0NDg1O1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmZvcm0tY29udHJvbCB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDQ4NTtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgYm9yZGVyOiBub25lO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmZvcm0tY29udHJvbDpmb2N1cyB7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBib3gtc2hhZG93OiBub25lO1xyXG59XHJcblxyXG4jY29udGFpbmVyQ29udGFjdCB7XHJcbiAgcGFkZGluZy1ib3R0b206IDZlbTtcclxuICBwYWRkaW5nLXRvcDogMWVtO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7XHJcbiAgbWluLWhlaWdodDogODB2aDtcclxuICBtaW4taGVpZ2h0OiAxMDAlO1xyXG4gIHBhZGRpbmctYm90dG9tOiA1ZW07XHJcbiAgei1pbmRleDogLTE7XHJcbn1cclxuXHJcbkBtZWRpYSAobWluLXdpZHRoOiAxMjYwcHgpIHtcclxuICAjY29udGFpbmVyQ29udGFjdCB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDE1JTtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDE1JTtcclxuICB9XHJcbn1cclxuXHJcbmgxIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIG1hcmdpbi10b3A6IDFlbTtcclxuICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxuICBsaW5lLWhlaWdodDogMS4yNWVtO1xyXG59XHJcblxyXG4uaW50cm8tcCB7XHJcbiAgZm9udC1zaXplOiAxLjJlbTtcclxufVxyXG5cclxuLmludHJvLXNtYWxsIHtcclxuICBmb250LXNpemU6IDFlbTtcclxufVxyXG5cclxuLmJ0bi1yZXF1ZXN0IHtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxufVxyXG5cclxuaW5wdXQsXHJcbnRleHRhcmVhLFxyXG5zZWxlY3Qge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIG1hcmdpbi1ib3R0b206IDEuNWVtO1xyXG59XHJcblxyXG4jY29udGFjdCB7XHJcbiAgbWFyZ2luLXRvcDogM2VtO1xyXG59XHJcblxyXG4vLyBDYXJkIExheW91dFxyXG4uZm9ybS1jYXJkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICBwYWRkaW5nOiAxLjVlbTtcclxuICBwYWRkaW5nLWxlZnQ6IDAuNWVtO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxubGFiZWwge1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4uZXJyb3ItdGV4dC1oZWFkIHtcclxuICBjb2xvcjogcmVkO1xyXG59XHJcblxyXG4uZXJyb3ItdGV4dC1ib2R5IHtcclxuICBmb250LXNpemU6IDFlbTtcclxufVxyXG5cclxuLnBhZGRpbmcge1xyXG4gIHBhZGRpbmctYm90dG9tOiA1cHg7XHJcbn1cclxuXHJcbi5jb250YWN0cyB7XHJcbiAgbWFyZ2luLXRvcDogMmVtO1xyXG4gICYgaHIge1xyXG4gICAgbWFyZ2luLXRvcDogNHB4O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogNHB4O1xyXG4gIH1cclxufVxyXG5cclxuLnRleHQtY2VudGVyIGIge1xyXG4gIGZsb2F0OiByaWdodDsgXHJcbiAgbWFyZ2luLXRvcDogMmVtOyBcclxuICBjdXJzb3I6IHBvaW50ZXI7IFxyXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG59XHJcblxyXG4gICA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcclxuICAgIHdpZHRoOiA1cHg7XHJcbiAgICBoZWlnaHQ6IDVweDtcclxuIH1cclxuIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xyXG4gICBiYWNrZ3JvdW5kOiAjZjFmMWYxO1xyXG59XHJcbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xyXG4gICBiYWNrZ3JvdW5kOiAjYmVjNGM0O1xyXG59XHJcbiA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQ6ICM1NTU7XHJcbn0iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiXX0= */\"","import { Component, OnInit } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { Meta, Title } from \"@angular/platform-browser\";\r\nimport { FormGroup, FormControl, Validators } from \"@angular/forms\";\r\n\r\nimport { AuthService } from \"../utilities/services/auth.service\";\r\nimport { MemberService } from \"../utilities/services/member.service\";\r\nimport { User } from \"../utilities/classes/user/user\";\r\n\r\nimport { contactInformation } from \"./contact-info\";\r\nimport { DataService } from \"app/utilities/services/data.service\";\r\n\r\n@Component({\r\n selector: \"app-contact\",\r\n templateUrl: \"./contact.component.html\",\r\n styleUrls: [\"./contact.component.scss\"],\r\n})\r\nexport class ContactComponent implements OnInit {\r\n contactInfos: Array = contactInformation.getContactInfo();\r\n acuteInfos: Array = contactInformation.getAcuteInfo();\r\n communityInfos: Array = contactInformation.getCommunityInfo();\r\n acuteAndCommunityInfos: Array = contactInformation.getacuteAndCommunity();\r\n mentalHealthInfos: Array = contactInformation.getMentalHealthInfo();\r\n nationalAuditsInfos: Array = contactInformation.getNationalAuditsInfo();\r\n commissioningInfos: Array = contactInformation.getCommissioningInfo();\r\n contactOptions: Array = ['General', 'Acute', 'Acute and Community', 'Community', 'Mental Health', 'National Audits', 'Whole System']\r\n\r\n user: User;\r\n userName: String;\r\n userEmail: String;\r\n\r\n isDisplayed: Boolean = false;\r\n displayError: Boolean = false;\r\n\r\n profileForm: FormGroup;\r\n organisation: FormControl;\r\n phone: FormControl;\r\n subject: FormControl;\r\n message: FormControl;\r\n project: FormControl;\r\n flattenedProjects: any;\r\n formSubmitted: boolean = false;\r\n\r\n metaTitle: string = 'Contact | NHS Benchmarking Network';\r\n selectedContact: Array;\r\n\r\n constructor(\r\n public auth: AuthService,\r\n private memberService: MemberService,\r\n private titleService: Title,\r\n private meta: Meta,\r\n private dataService: DataService,\r\n private router: Router\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(this.metaTitle); // Set page title\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n this.getUserDetails();\r\n this.createFormControls();\r\n this.createForm();\r\n let selectedOrganisationId = this.dataService.getSelectedOrganisation();\r\n this.getProjects(selectedOrganisationId);\r\n this.selectedContact = this.contactInfos\r\n }\r\n\r\n getUserDetails() {\r\n this.memberService.User().subscribe((u) => {\r\n this.user = u.data;\r\n this.userName = this.user.fullName;\r\n this.userEmail = this.user.logonName;\r\n });\r\n }\r\n\r\n getProjects(organisationId) {\r\n this.memberService.ProjectAccess(organisationId).subscribe((u) => {\r\n let sectors = u.data;\r\n let projects = [];\r\n for(let key in sectors) {\r\n if(sectors.hasOwnProperty(key)) {\r\n projects.push(sectors[key].map(f => f.projectName))\r\n }\r\n }\r\n this.flattenedProjects = [].concat.apply([], projects);\r\n this.flattenedProjects.sort()\r\n\r\n });\r\n }\r\n\r\n createFormControls() {\r\n this.organisation = new FormControl(\"\", [\r\n Validators.required,\r\n Validators.minLength(1),\r\n ]);\r\n this.phone = new FormControl(\"\", [Validators.pattern(\"^[0-9]*$\")]);\r\n this.subject = new FormControl(\"\", [\r\n Validators.required,\r\n Validators.minLength(1),\r\n ]);\r\n this.message = new FormControl(\"\", [\r\n Validators.required,\r\n Validators.minLength(1),\r\n ]);\r\n this.project = new FormControl(\"\", [ ]);\r\n }\r\n\r\n createForm() {\r\n this.profileForm = new FormGroup({\r\n organisation: this.organisation,\r\n phone: this.phone,\r\n subject: this.subject,\r\n message: this.message,\r\n project: this.project,\r\n });\r\n }\r\n\r\n onSubmit() {\r\n this.formSubmitted = true;\r\n if (this.profileForm.valid) {\r\n this.submitContactDetails(\r\n this.profileForm.get(\"organisation\").value,\r\n this.profileForm.get(\"phone\").value,\r\n this.profileForm.get(\"subject\").value,\r\n this.profileForm.get(\"message\").value,\r\n this.profileForm.get(\"project\").value\r\n );\r\n this.profileForm.reset();\r\n }\r\n }\r\n\r\n submitContactDetails(organisation: String, phone: String, subject: String, message: String, project: String) {\r\n this.memberService.ContactForm(organisation, phone, subject, message, project).subscribe(\r\n (r) => {\r\n this.isDisplayed = true;\r\n this.displayError = false;\r\n },\r\n (e) => {\r\n this.isDisplayed = false;\r\n this.displayError = true;\r\n },\r\n () => {}\r\n );\r\n }\r\n\r\n navHome() {\r\n this.router.navigate([\"/home\"]);\r\n }\r\n\r\n getContacts(contact){\r\n switch (contact){\r\n case \"General\":\r\n this.selectedContact = this.contactInfos\r\n break;\r\n case \"Community\":\r\n this.selectedContact = this.communityInfos\r\n break;\r\n case \"Acute\":\r\n this.selectedContact = this.acuteInfos\r\n break;\r\n case \"Acute and Community\":\r\n this.selectedContact = this.acuteAndCommunityInfos\r\n break;\r\n case \"Mental Health\":\r\n this.selectedContact = this.mentalHealthInfos\r\n break;\r\n case \"National Audits\":\r\n this.selectedContact = this.nationalAuditsInfos\r\n break;\r\n case \"Whole System\":\r\n this.selectedContact = this.commissioningInfos\r\n break;\r\n }\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\n\r\nimport { ContactRoutingModule } from \"./contact-routing.module\";\r\nimport { ContactComponent } from \"./contact.component\";\r\n\r\nimport { AuthService } from \"../utilities/services/auth.service\";\r\nimport { AuthGuardService } from \"../utilities/services/auth-guard.service\";\r\n\r\nimport { CollapseModule } from \"ngx-bootstrap/collapse\";\r\n\r\n@NgModule({\r\n declarations: [ContactComponent],\r\n imports: [\r\n BrowserAnimationsModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n CommonModule,\r\n ContactRoutingModule,\r\n CollapseModule,\r\n ],\r\n providers: [AuthService, AuthGuardService],\r\n})\r\nexport class ContactModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { DashboardComponent } from './dashboard.component'\r\n\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service'\r\n\r\nconst dashboardRoutes: Routes = [\r\n // Bypass dashboard view for monthly-only projects\r\n { path: 'dashboard/29', redirectTo: 'project/29/dashboard', pathMatch: 'full' },\r\n { path: 'dashboard/41', redirectTo: 'project/41/dashboard', pathMatch: 'full' },\r\n { path: 'dashboard/42', redirectTo: 'project/42/dashboard', pathMatch: 'full' },\r\n { path: 'dashboard/52', redirectTo: 'project/52/dashboard', pathMatch: 'full' },\r\n // Standard path\r\n { path: 'dashboard/:projectId', component: DashboardComponent, canActivate: [AuthGuardService] }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(dashboardRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class DashboardRoutingModule { }","module.exports = \"
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Back to Home\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n {{ tourState ? 'Hide' : 'Show' }} Tour\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Select your organisation from the drop-down list to load submissions for the current year.

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

{{ projectInformation.projectName === 'NACEL' ? 'National Audit of Care at the End of Life (NACEL)' : projectInformation.projectName }}

\\r\\n

\\r\\n This page provides links to a range of outputs for the {{ projectInformation.projectName }} project, and shows a number of metrics curated by the Network Support Team. You can view the full toolkit by clicking on the green button, which will also show your organisation's position, if you participated. You can view the outputs of the project by downloading the infographics and reports below. Learn more...\\r\\n

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


District Nursing services have previously been benchmarked as part of the Community Services project, to view the data in the Community Services project please click here.

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


Adult therapy services were benchmarked as part of a wider Therapies project in 2023. To view the data in the 2023 Therapies project, please click here.

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

\\r\\n This page provides links to the individual dashboards within the {{ projectInformation.projectName }} project. The dashboards show monthly reporting of key activity and performance metrics across six acute projects. Learn more...\\r\\n

\\r\\n Access {{ currentCalendarYear }} Data & Improvement Tool\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n

\\r\\n Contact the project team on
\\r\\n {{ projectInformation.projectPhoneNo }}\\r\\n

\\r\\n {{ projectInformation.projectEmail }}\\r\\n
\\r\\n
\\r\\n

\\r\\n {{ p.role }}
\\r\\n {{ p.name }}\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n There are not currently any outputs for this project as the first round of data collection is still taking place. To take part in this project, please go back to the home page and click 'Register'.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Toolkit

\\r\\n

Click to download the available offline toolkits.

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

{{y}}

\\r\\n

\\r\\n {{a.documentName}}\\r\\n

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

View less...

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

Summary Findings

\\r\\n

Click to download a selection of summary reports and infographics from the project.

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

{{y}}

\\r\\n

\\r\\n {{a.documentName}}\\r\\n

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

Presentations

\\r\\n

Click to download presentations from our previous events.

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

{{y}}

\\r\\n

\\r\\n {{a.documentName}}\\r\\n

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

View less...

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

Case Studies

\\r\\n

Click to download a selection of case studies from the membership.

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

{{y}}

\\r\\n

\\r\\n {{a.documentName}}\\r\\n

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

View less...

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

\\r\\n Toolkit for February 2020\\r\\n \\r\\n
Round 4: 2022\\r\\n
\\r\\n

\\r\\n

\\r\\n The icons below summarise some of the latest findings of the project.\\r\\n

\\r\\n

\\r\\n The icons below summarise some of the latest findings of NACEL round four for Acute and Community inpatient providers in England and Wales.\\r\\n

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

214

\\r\\n

Hospital/Site Overviews

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

7,620

\\r\\n

Case Note Reviews

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

3,600

\\r\\n

Quality Surveys

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

Toolkit ({{ currentYear }})

\\r\\n

\\r\\n The icons below summarise some of the latest findings of the project. If you participated in the project in the toolkit's year, you can select a submission from the drop-down list and then compare your response to the sample average.\\r\\n

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

Click here to open the full toolkit and view all key metrics for this project.

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n 0\\\">\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Use this toggle to switch between the sample averages and the submission response.

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n 0 && availableServices[0].serviceItemId != null\\\">\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n Download Dashboard (.png)\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n

The dashboard is loading. Please wait...

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

You don't have the necessary permissions.

\\r\\n

You do not currently have access to these outputs. Please contact the support team to request access.

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n There are no responses for this submission and service.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Click on any of the metrics to go to the full chart in the toolkit for more details analysis.

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

Join the Network

\\r\\n

\\r\\n Subscribing members of the NHS Benchmarking Network can access:\\r\\n

\\r\\n
    \\r\\n
  • An interactive online toolkit, allowing members to benchmark their service across hundreds of metrics.
  • \\r\\n
  • A bespoke dashboard report outlining key metrics, and highlighting member reported positions.
  • \\r\\n
  • A high-level report outlining key messages nationally.
  • \\r\\n
  • A good practice compendium of information supplied by member participants.
  • \\r\\n
  • Free attendance at annual conferences, accessing presentations on project key findings, from national policy leads and members.
  • \\r\\n
  • Good practice case studies on how members use the benchmarking to improve service delivery.
  • \\r\\n
\\r\\n

\\r\\n Member organisations can also access a full library of historic project content covering the most material NHS activities delivered by commissioners and providers.\\r\\n

\\r\\n

\\r\\n For further information about membership subscription, please email enquiries@nhsbenchmarking.nhs.uk. \\r\\n

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

Acute Transformation Dashboard

\\r\\n

\\r\\n Click here to view the monthly outputs for this project, part of the Acute Transformation Dashboard.\\r\\n

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

SDEC Transformation Dashboard

\\r\\n

\\r\\n Click here to access monthly time series outputs, part of the SDEC Transformation Dashboard.\\r\\n

\\r\\n
\\r\\n
\\r\\n
0\\\">\\r\\n
\\r\\n

Forum

\\r\\n

\\r\\n See the latest related posts on our Forum:\\r\\n

\\r\\n

\\r\\n {{ f.requestTitle }}\\r\\n

\\r\\n

\\r\\n View more...\\r\\n

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

Member Project Reports

\\r\\n

Click to download reports for your organisation.

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

\\r\\n {{r.documentName}}\\r\\n

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

{{y}}

\\r\\n

\\r\\n {{a.documentName}}\\r\\n

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

Event Presentations

\\r\\n

\\r\\n You can now find presentations in the Events section of the Members' Area.\\r\\n

\\r\\n

\\r\\n Go to events...\\r\\n

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

Offline Toolkits

\\r\\n

Click to download the available offline toolkits.

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

\\r\\n {{r.documentName}}\\r\\n

\\r\\n

View more...

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

Download project-specific findings documents, presentations and case studies. Click 'View more...' to see previous years' documents.

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

{{y}}

\\r\\n

\\r\\n {{a.documentName}}\\r\\n

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

\\r\\n Summary Findings\\r\\n

\\r\\n

\\r\\n Click to download a selection of summary reports and infographics from the project.\\r\\n

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

\\r\\n {{r.documentName}}\\r\\n

\\r\\n

View more...

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

Download project-specific findings documents, presentations and case studies. Click 'View more...' to see previous years' documents.

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

{{y}}

\\r\\n

\\r\\n {{a.documentName}} \\r\\n

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

Presentations

\\r\\n

Click to download presentations from our previous events.

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

\\r\\n {{p.documentName}}\\r\\n

\\r\\n

View more...

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

{{y}}

\\r\\n

\\r\\n {{a.documentName}}\\r\\n

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

Case Studies

\\r\\n

Click to download a selection of case studies from the membership.

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

\\r\\n {{s.documentName}}\\r\\n

\\r\\n

View more...

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

{{y}}

\\r\\n

\\r\\n {{a.documentName}}\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\"","module.exports = \".dashboard-spinner {\\n padding-top: 25vh;\\n padding-bottom: 25vh;\\n min-height: 100%;\\n z-index: 1000;\\n width: 100%;\\n background-color: white;\\n opacity: 0.9;\\n position: absolute; }\\n\\n.dashboard-spinner p {\\n margin-top: 0.75em;\\n font-size: 20px;\\n font-weight: 600; }\\n\\n.tile-loading {\\n font-size: 1.5em;\\n text-align: center;\\n color: #005EB8;\\n font-weight: 600;\\n margin-top: 3em; }\\n\\n.tile-loading.-error {\\n color: #768692; }\\n\\n.tile-loading i {\\n font-size: 1.5em; }\\n\\n.tile-loading p {\\n margin-top: 0.5em; }\\n\\n#headerDashboard .btn {\\n margin-top: 1em; }\\n\\n@media (min-width: 1400px) {\\n #headerDashboard .container-fluid,\\n #contentDashboard .container-fluid {\\n margin: 0 10%; } }\\n\\nh1 {\\n margin-top: 0;\\n margin-bottom: 0.5em;\\n padding-top: 0;\\n font-weight: 600;\\n color: #005EB8; }\\n\\nh2 {\\n font-weight: 600;\\n font-size: 2em; }\\n\\nh2 small {\\n font-weight: 600;\\n color: #005EB8; }\\n\\nh3 {\\n color: black; }\\n\\n#headerDashboard {\\n padding: 3em 0;\\n border-bottom: 1px solid #ccc; }\\n\\n#contentDashboard {\\n padding: 3em 0;\\n background-color: #f3f3f3; }\\n\\n.content-section {\\n margin-bottom: 1em; }\\n\\n.content-section p {\\n margin-bottom: 0.4em; }\\n\\n.document-link {\\n font-weight: 600; }\\n\\n.vcenter {\\n display: inline-block;\\n vertical-align: middle;\\n float: none; }\\n\\n.toolkit-bar {\\n margin-bottom: 2em;\\n padding-bottom: 1.5em;\\n border-bottom: 1px solid #ccc; }\\n\\n.actions-bar {\\n margin-bottom: 0.5em; }\\n\\n.actions-bar .btn-group {\\n width: 100%;\\n font-size: 17px;\\n vertical-align: inherit; }\\n\\n.col-action {\\n display: inline-block;\\n width: 27.5%;\\n margin-right: 1em;\\n padding-bottom: 1em !important; }\\n\\n.col-action-wide {\\n display: inline-block;\\n width: 40%; }\\n\\n.col-action-wide p {\\n margin-top: 0.25em; }\\n\\n@media (max-width: 768px) {\\n .actions-bar .col-action {\\n display: block;\\n width: 100%; } }\\n\\n.col-action .btn-toggle,\\n.col-action .active:disabled {\\n width: 50%;\\n background-color: #eee;\\n font-weight: 400;\\n text-align: center;\\n padding: 5px 5px 3px 5px;\\n border: 1px solid #ccc;\\n color: #555;\\n overflow-x: hidden; }\\n\\n.col-action .btn-toggle:focus {\\n outline: none; }\\n\\n.col-action .btn-toggle:hover:disabled {\\n cursor: not-allowed; }\\n\\n.col-action .btn-toggle:first-of-type {\\n border-right: none; }\\n\\n.col-action .active {\\n background-color: white;\\n color: black; }\\n\\n.dashboard-tile-container {\\n background-color: white;\\n z-index: -10;\\n border-radius: 5px;\\n margin-bottom: 1em; }\\n\\n.dashboard-tile {\\n position: relative;\\n height: 200px;\\n border: 2px solid #ccc;\\n border-radius: 5px;\\n overflow: hidden;\\n z-index: 10; }\\n\\n.dashboard-tile p {\\n color: black !important; }\\n\\n.online:hover {\\n border-color: #005EB8;\\n cursor: pointer; }\\n\\n.disable-link .online:hover {\\n border-color: #ccc;\\n cursor: default; }\\n\\n#accessError {\\n margin-top: 1em;\\n margin-left: 1em;\\n margin-right: -4em;\\n border: 2px solid #ccc;\\n border-radius: 5px;\\n padding: 2em 1.5em 1em 1.5em; }\\n\\n#accessError h2 {\\n margin-top: 0;\\n color: #005EB8; }\\n\\n#accessError p {\\n font-size: 15px; }\\n\\n#accessError ul {\\n padding-left: 1.1em; }\\n\\n#accessError li {\\n font-size: 15px;\\n margin-bottom: 5px; }\\n\\n.dashboard-tile span {\\n font-size: 3.5em;\\n font-weight: 600;\\n line-height: 1em;\\n color: #005EB8; }\\n\\n.dashboard-tile h5 {\\n font-size: 2em; }\\n\\n.dashboard-tile span.no-response {\\n color: #ccc;\\n font-size: 2em;\\n line-height: 1.5em; }\\n\\n.dashboard-tile-icon {\\n position: absolute;\\n top: -0.25em;\\n right: -0.25em;\\n z-index: -1; }\\n\\n.dashboard-tile-icon i {\\n color: #005EB8;\\n opacity: 0.2;\\n font-size: 7.5em; }\\n\\n.dashboard-tile-content {\\n position: absolute;\\n left: 1.5em;\\n bottom: 1em;\\n padding-right: 2em; }\\n\\n.dashboard-tile-content p {\\n font-size: 16px;\\n line-height: 20px;\\n margin-bottom: 0; }\\n\\n@media (max-width: 1475px) {\\n .dashboard-tile span {\\n font-size: 2.5em; }\\n .dashboard-tile-content p {\\n font-size: 15px;\\n line-height: 19px; } }\\n\\n@media (max-width: 1200px) {\\n .dashboard-tile span {\\n font-size: 2em; }\\n .dashboard-tile-content p {\\n font-size: 14px;\\n line-height: 18px; } }\\n\\n@media (max-width: 768px) {\\n .dashboard-tile span {\\n font-size: 3.5em; }\\n .dashboard-tile-content p {\\n font-size: 16px;\\n line-height: 20px; } }\\n\\n#selectorBar {\\n background-color: #005EB8;\\n margin-top: -2em; }\\n\\n#selectorBar .btn-back {\\n color: white;\\n font-size: 17px;\\n line-height: 2.5em; }\\n\\n#selectorBar .btn-back .fa {\\n margin-right: 5px; }\\n\\n#selectorBar .btn-back:hover {\\n cursor: pointer; }\\n\\n#selectorBar .form-group {\\n padding: 5px 0;\\n margin-bottom: 0;\\n background-color: #004485; }\\n\\n#selectorBar .form-control {\\n background-color: #004485;\\n color: white;\\n border: none; }\\n\\n.form-group {\\n margin-bottom: 0; }\\n\\n.form-control,\\n.form-control:focus {\\n outline: none;\\n box-shadow: none; }\\n\\n.managers p:last-of-type {\\n margin-bottom: 0; }\\n\\n.switch .btn-default {\\n background-color: transparent;\\n color: #ccc; }\\n\\n.switch .btn-default:hover {\\n color: black; }\\n\\n.switch .btn-default:focus,\\n.switch .btn-default:active,\\nselect:focus {\\n outline: none;\\n box-shadow: none; }\\n\\n.switch .active {\\n background-color: white;\\n box-shadow: none;\\n color: black; }\\n\\n.view-more:hover {\\n cursor: pointer; }\\n\\n.full-list {\\n height: 800px;\\n overflow-y: scroll; }\\n\\n.no-dashboard {\\n margin-top: 2em;\\n color: #768692;\\n width: 100%;\\n text-align: center; }\\n\\n.no-dashboard h3 {\\n color: #768692; }\\n\\n.tour-container {\\n position: absolute;\\n padding-top: 5px;\\n width: 300px;\\n z-index: 100; }\\n\\n.tour-content {\\n background-color: rgba(0, 0, 0, 0.85);\\n color: white;\\n padding: 1.5em;\\n border-radius: 6px;\\n text-align: left; }\\n\\n.tour-content button {\\n background-color: white;\\n color: black;\\n font-weight: 600;\\n padding: 5px 10px;\\n border-radius: 4px; }\\n\\n.arrow-up {\\n width: 0;\\n height: 0;\\n border-left: 10px solid transparent;\\n border-right: 10px solid transparent;\\n border-bottom: 10px solid rgba(0, 0, 0, 0.85);\\n margin: 0 auto; }\\n\\n.arrow-down {\\n width: 0;\\n height: 0;\\n border-left: 10px solid transparent;\\n border-right: 10px solid transparent;\\n border-top: 10px solid rgba(0, 0, 0, 0.85);\\n margin: 0 auto; }\\n\\n#tourStep5 {\\n margin-top: -13em; }\\n\\n.link {\\n color: #005EB8; }\\n\\n.link:hover {\\n color: black;\\n cursor: pointer; }\\n\\n#forum {\\n border: 2px solid #005EB8;\\n color: #005EB8;\\n padding: 1.5em;\\n margin-bottom: 1em;\\n border-radius: 5px; }\\n\\n#forum h2 {\\n color: #005EB8;\\n margin-top: 0; }\\n\\n#forum h2 i {\\n margin-right: 0.5em; }\\n\\n#forum p {\\n margin: 0;\\n line-height: 1.2em;\\n color: black; }\\n\\n#forum .forum-link {\\n margin: 0.5em 0;\\n font-weight: 600;\\n color: #005EB8; }\\n\\n#forum .forum-link:last-of-type {\\n font-weight: 400;\\n margin-bottom: 0; }\\n\\n#forum .forum-link:hover {\\n cursor: pointer;\\n color: #00376c; }\\n\\n#atdLink {\\n background-color: #005EB8;\\n color: white;\\n padding: 1.5em;\\n margin-bottom: 1em;\\n border-radius: 5px; }\\n\\n#atdLink h2 {\\n margin-top: 0;\\n margin-bottom: 0.25em;\\n color: white; }\\n\\n#atdLink p {\\n color: white;\\n margin-bottom: 0; }\\n\\n#atdLink:hover {\\n cursor: pointer; }\\n\\n#nacelSummary .col-sm-4 {\\n padding-top: 2em;\\n text-align: center;\\n color: #005EB8; }\\n\\n#nacelSummary i {\\n font-size: 2.5em; }\\n\\n#nacelSummary h4 {\\n color: #005EB8;\\n margin-bottom: 5px;\\n font-size: 2em;\\n font-weight: 600; }\\n\\n#nacelSummary p {\\n font-weight: 600; }\\n\\n.dashboard-tile span.final-value i {\\n font-style: normal; }\\n\\n.dashboard-tile span.final-value-loading {\\n color: #768692;\\n font-size: 2em;\\n line-height: 2em; }\\n\\n#waiting {\\n background-color: #005EB8;\\n color: white;\\n padding: 0.5em 1em;\\n margin-top: 1em;\\n font-size: 17px; }\\n\\n.no-outputs {\\n margin: 15vh 0;\\n font-size: 1.25em;\\n color: #768692; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZGFzaGJvYXJkL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxhcHBcXGRhc2hib2FyZFxcZGFzaGJvYXJkLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9kYXNoYm9hcmQvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNFLGlCQUFpQjtFQUNqQixvQkFBb0I7RUFDcEIsZ0JBQWdCO0VBQ2hCLGFBQWE7RUFDYixXQUFXO0VBQ1gsdUJBQXVCO0VBQ3ZCLFlBQVk7RUFDWixrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxrQkFBa0I7RUFDbEIsZUFBZTtFQUNmLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLGdCQUFnQjtFQUNoQixrQkFBa0I7RUFDbEIsY0NuQmdCO0VEb0JoQixnQkFBZ0I7RUFDaEIsZUFBZSxFQUFBOztBQUdqQjtFQUNFLGNDdkJnQixFQUFBOztBRDBCbEI7RUFDRSxnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxpQkFBaUIsRUFBQTs7QUFHbkI7RUFDRSxlQUFlLEVBQUE7O0FBR2pCO0VBQ0U7O0lBRUksYUFBYSxFQUFBLEVBQ2hCOztBQUdIO0VBQ0UsYUFBYTtFQUNiLG9CQUFvQjtFQUNwQixjQUFjO0VBQ2QsZ0JBQWdCO0VBQ2hCLGNDcERnQixFQUFBOztBRHVEbEI7RUFDRSxnQkFBZ0I7RUFDaEIsY0FBYyxFQUFBOztBQUdoQjtFQUNFLGdCQUFnQjtFQUNoQixjQzlEZ0IsRUFBQTs7QURpRWxCO0VBQ0UsWUFBWSxFQUFBOztBQUdkO0VBQ0UsY0FBYztFQUNkLDZCQUE2QixFQUFBOztBQUcvQjtFQUNFLGNBQWM7RUFDZCx5QkFBeUIsRUFBQTs7QUFHM0I7RUFDRSxrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxvQkFBb0IsRUFBQTs7QUFHdEI7RUFDRSxnQkFBZ0IsRUFBQTs7QUFH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QUFZLEVBQUE7O0FBR2Q7RUFDRSxlQUFlO0VBQ2YsZ0JBQWdCO0VBQ2hCLGNDamRnQixFQUFBOztBRG9kbEI7RUFDRSxnQkFBZ0I7RUFDaEIsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0UsZUFBZTtFQUNmLGNBQWMsRUFBQTs7QUFHaEI7RUFDRSx5QkMvZGdCO0VEZ2VoQixZQUFZO0VBQ1osY0FBYztFQUNkLGtCQUFrQjtFQUNsQixrQkFBa0IsRUFBQTs7QUFMcEI7SUFPSSxhQUFhO0lBQ2IscUJBQXFCO0lBQ3JCLFlBQVksRUFBQTs7QUFUaEI7SUFZSSxZQUFZO0lBQ1osZ0JBQWdCLEVBQUE7O0FBSXBCO0VBQ0UsZUFBZSxFQUFBOztBQUdqQjtFQUNFLGdCQUFnQjtFQUNoQixrQkFBa0I7RUFDbEIsY0N0ZmdCLEVBQUE7O0FEeWZsQjtFQUNFLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLGNDOWZnQjtFRCtmaEIsa0JBQWtCO0VBQ2xCLGNBQWM7RUFDZCxnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxnQkFBZ0IsRUFBQTs7QUFLbEI7RUFDRSxrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxjQzdnQmdCO0VEOGdCaEIsY0FBYztFQUNkLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLHlCQ3JoQmdCO0VEc2hCaEIsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsZUFBZSxFQUFBOztBQUdqQjtFQUNFLGNBQWM7RUFDZCxpQkFBaUI7RUFDakIsY0M3aEJnQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvZGFzaGJvYXJkL2Rhc2hib2FyZC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uL3ZhcmlhYmxlcyc7XHJcblxyXG4uZGFzaGJvYXJkLXNwaW5uZXIge1xyXG4gIHBhZGRpbmctdG9wOiAyNXZoO1xyXG4gIHBhZGRpbmctYm90dG9tOiAyNXZoO1xyXG4gIG1pbi1oZWlnaHQ6IDEwMCU7XHJcbiAgei1pbmRleDogMTAwMDtcclxuICB3aWR0aDogMTAwJTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICBvcGFjaXR5OiAwLjk7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG59XHJcblxyXG4uZGFzaGJvYXJkLXNwaW5uZXIgcCB7XHJcbiAgbWFyZ2luLXRvcDogMC43NWVtO1xyXG4gIGZvbnQtc2l6ZTogMjBweDtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG59XHJcblxyXG4udGlsZS1sb2FkaW5nIHtcclxuICBmb250LXNpemU6IDEuNWVtO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgbWFyZ2luLXRvcDogM2VtO1xyXG59XHJcblxyXG4udGlsZS1sb2FkaW5nLi1lcnJvciB7XHJcbiAgY29sb3I6ICRuaHMtZ3JleTtcclxufVxyXG5cclxuLnRpbGUtbG9hZGluZyBpIHtcclxuICBmb250LXNpemU6IDEuNWVtO1xyXG59XHJcblxyXG4udGlsZS1sb2FkaW5nIHAge1xyXG4gIG1hcmdpbi10b3A6IDAuNWVtO1xyXG59XHJcblxyXG4jaGVhZGVyRGFzaGJvYXJkIC5idG4ge1xyXG4gIG1hcmdpbi10b3A6IDFlbTtcclxufVxyXG5cclxuQG1lZGlhIChtaW4td2lkdGg6IDE0MDBweCkge1xyXG4gICNoZWFkZXJEYXNoYm9hcmQgLmNvbnRhaW5lci1mbHVpZCxcclxuICAjY29udGVudERhc2hib2FyZCAuY29udGFpbmVyLWZsdWlkIHtcclxuICAgICAgbWFyZ2luOiAwIDEwJTtcclxuICB9XHJcbn1cclxuXHJcbmgxIHtcclxuICBtYXJnaW4tdG9wOiAwO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG4gIHBhZGRpbmctdG9wOiAwO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgY29sb3I6ICRuaHMtYmx1ZTtcclxufVxyXG5cclxuaDIge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1zaXplOiAyZW07XHJcbn1cclxuXHJcbmgyIHNtYWxsIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGNvbG9yOiAkbmhzLWJsdWU7XHJcbn1cclxuXHJcbmgzIHtcclxuICBjb2xvcjogYmxhY2s7XHJcbn1cclxuXHJcbiNoZWFkZXJEYXNoYm9hcmQge1xyXG4gIHBhZGRpbmc6IDNlbSAwO1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjO1xyXG59XHJcblxyXG4jY29udGVudERhc2hib2FyZCB7XHJcbiAgcGFkZGluZzogM2VtIDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMztcclxufVxyXG5cclxuLmNvbnRlbnQtc2VjdGlvbiB7XHJcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xyXG59XHJcblxyXG4uY29udGVudC1zZWN0aW9uIHAgeyBcclxuICBtYXJnaW4tYm90dG9tOiAwLjRlbTtcclxufVxyXG5cclxuLmRvY3VtZW50LWxpbmsge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi52Y2VudGVyIHtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICBmbG9hdDogbm9uZTtcclxufVxyXG5cclxuLnRvb2xraXQtYmFyIHtcclxuICBtYXJnaW4tYm90dG9tOiAyZW07XHJcbiAgcGFkZGluZy1ib3R0b206IDEuNWVtO1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjO1xyXG59XHJcblxyXG4uYWN0aW9ucy1iYXIge1xyXG4gIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG59XHJcblxyXG4uYWN0aW9ucy1iYXIgLmJ0bi1ncm91cCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgZm9udC1zaXplOiAxN3B4O1xyXG4gIHZlcnRpY2FsLWFsaWduOiBpbmhlcml0O1xyXG59XHJcblxyXG4uY29sLWFjdGlvbiB7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHdpZHRoOiAyNy41JTtcclxuICBtYXJnaW4tcmlnaHQ6IDFlbTtcclxuICBwYWRkaW5nLWJvdHRvbTogMWVtICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5jb2wtYWN0aW9uLXdpZGUge1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB3aWR0aDogNDAlO1xyXG59XHJcblxyXG4uY29sLWFjdGlvbi13aWRlIHAge1xyXG4gIG1hcmdpbi10b3A6IDAuMjVlbTtcclxufVxyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XHJcbiAgLmFjdGlvbnMtYmFyIC5jb2wtYWN0aW9uIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgfVxyXG59XHJcblxyXG4uY29sLWFjdGlvbiAuYnRuLXRvZ2dsZSxcclxuLmNvbC1hY3Rpb24gLmFjdGl2ZTpkaXNhYmxlZCB7XHJcbiAgd2lkdGg6IDUwJTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIHBhZGRpbmc6IDVweCA1cHggM3B4IDVweDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGNvbG9yOiAjNTU1O1xyXG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcclxufVxyXG5cclxuLmNvbC1hY3Rpb24gLmJ0bi10b2dnbGU6Zm9jdXMge1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbn1cclxuXHJcbi5jb2wtYWN0aW9uIC5idG4tdG9nZ2xlOmhvdmVyOmRpc2FibGVkIHtcclxuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG59XHJcblxyXG4uY29sLWFjdGlvbiAuYnRuLXRvZ2dsZTpmaXJzdC1vZi10eXBlIHtcclxuICBib3JkZXItcmlnaHQ6IG5vbmVcclxufVxyXG5cclxuLmNvbC1hY3Rpb24gLmFjdGl2ZSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgY29sb3I6IGJsYWNrO1xyXG59XHJcblxyXG4vLyBEYXNoYm9hcmQgVGlsZXNcclxuXHJcbi5kYXNoYm9hcmQtdGlsZS1jb250YWluZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3IgOndoaXRlO1xyXG4gIHotaW5kZXg6IC0xMDtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xyXG59XHJcblxyXG4uZGFzaGJvYXJkLXRpbGUge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgXHJcbiAgaGVpZ2h0OiAyMDBweDsgXHJcbiAgYm9yZGVyOiAycHggc29saWQgI2NjYztcclxuICBib3JkZXItcmFkaXVzOiA1cHg7IFxyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgei1pbmRleDogMTA7XHJcbn1cclxuXHJcbi5kYXNoYm9hcmQtdGlsZSBwIHtcclxuICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcclxufVxyXG5cclxuLm9ubGluZTpob3ZlciB7XHJcbiAgYm9yZGVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uZGlzYWJsZS1saW5rIC5vbmxpbmU6aG92ZXIge1xyXG4gIGJvcmRlci1jb2xvcjogI2NjYztcclxuICBjdXJzb3I6IGRlZmF1bHQ7XHJcbn1cclxuXHJcbiNhY2Nlc3NFcnJvciB7XHJcbiAgbWFyZ2luLXRvcDogMWVtO1xyXG4gIG1hcmdpbi1sZWZ0OiAxZW07XHJcbiAgbWFyZ2luLXJpZ2h0OiAtNGVtO1xyXG4gIGJvcmRlcjogMnB4IHNvbGlkICNjY2M7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIHBhZGRpbmc6IDJlbSAxLjVlbSAxZW0gMS41ZW07XHJcbn1cclxuXHJcbiNhY2Nlc3NFcnJvciBoMiB7XHJcbiAgbWFyZ2luLXRvcDogMDtcclxuICBjb2xvcjogJG5ocy1ibHVlO1xyXG59XHJcblxyXG4jYWNjZXNzRXJyb3IgcCB7XHJcbiAgZm9udC1zaXplOiAxNXB4O1xyXG59XHJcblxyXG4jYWNjZXNzRXJyb3IgdWwge1xyXG4gIHBhZGRpbmctbGVmdDogMS4xZW07XHJcbn1cclxuXHJcbiNhY2Nlc3NFcnJvciBsaSB7XHJcbiAgZm9udC1zaXplOiAxNXB4O1xyXG4gIG1hcmdpbi1ib3R0b206IDVweDtcclxufVxyXG5cclxuLmRhc2hib2FyZC10aWxlIHNwYW4ge1xyXG4gIGZvbnQtc2l6ZTogMy41ZW07XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBsaW5lLWhlaWdodDogMWVtO1xyXG4gIGNvbG9yOiAkbmhzLWJsdWU7XHJcbn1cclxuXHJcbi5kYXNoYm9hcmQtdGlsZSBoNSB7XHJcbiAgZm9udC1zaXplOiAyZW07XHJcbn1cclxuXHJcbi5kYXNoYm9hcmQtdGlsZSBzcGFuLm5vLXJlc3BvbnNlIHtcclxuICBjb2xvcjogI2NjYztcclxuICBmb250LXNpemU6IDJlbTtcclxuICBsaW5lLWhlaWdodDogMS41ZW07XHJcbn1cclxuXHJcbi5kYXNoYm9hcmQtdGlsZS1pY29uIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7IFxyXG4gIHRvcDogLTAuMjVlbTsgXHJcbiAgcmlnaHQ6IC0wLjI1ZW07IFxyXG4gIHotaW5kZXg6IC0xO1xyXG59XHJcblxyXG4uZGFzaGJvYXJkLXRpbGUtaWNvbiBpIHtcclxuICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gIG9wYWNpdHk6IDAuMjtcclxuICBmb250LXNpemU6IDcuNWVtO1xyXG59XHJcblxyXG4uZGFzaGJvYXJkLXRpbGUtY29udGVudCB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIGxlZnQ6IDEuNWVtO1xyXG4gIGJvdHRvbTogMWVtO1xyXG4gIHBhZGRpbmctcmlnaHQ6IDJlbTtcclxufVxyXG5cclxuLmRhc2hib2FyZC10aWxlLWNvbnRlbnQgcCB7XHJcbiAgZm9udC1zaXplOiAxNnB4O1xyXG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xyXG4gIG1hcmdpbi1ib3R0b206IDA7XHJcbn1cclxuXHJcbkBtZWRpYSAobWF4LXdpZHRoOiAxNDc1cHgpIHtcclxuICAuZGFzaGJvYXJkLXRpbGUgc3BhbiB7IFxyXG4gICAgZm9udC1zaXplOiAyLjVlbTtcclxuICB9XHJcbiAgLmRhc2hib2FyZC10aWxlLWNvbnRlbnQgcCB7XHJcbiAgICBmb250LXNpemU6IDE1cHg7XHJcbiAgICBsaW5lLWhlaWdodDogMTlweDtcclxuICB9XHJcbn1cclxuXHJcbkBtZWRpYSAobWF4LXdpZHRoOiAxMjAwcHgpIHtcclxuICAuZGFzaGJvYXJkLXRpbGUgc3BhbiB7IFxyXG4gICAgZm9udC1zaXplOiAyZW07XHJcbiAgfVxyXG4gIC5kYXNoYm9hcmQtdGlsZS1jb250ZW50IHAge1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDE4cHg7XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcclxuICAuZGFzaGJvYXJkLXRpbGUgc3BhbiB7IFxyXG4gICAgZm9udC1zaXplOiAzLjVlbTtcclxuICB9XHJcbiAgLmRhc2hib2FyZC10aWxlLWNvbnRlbnQgcCB7XHJcbiAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICBsaW5lLWhlaWdodDogMjBweDtcclxuICB9XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1ibHVlO1xyXG4gIG1hcmdpbi10b3A6IC0yZW07XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuYnRuLWJhY2sge1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBmb250LXNpemU6IDE3cHg7XHJcbiAgbGluZS1oZWlnaHQ6IDIuNWVtO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ0bi1iYWNrIC5mYSB7XHJcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuYnRuLWJhY2s6aG92ZXIge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5mb3JtLWdyb3VwIHtcclxuICBwYWRkaW5nOiA1cHggMDtcclxuICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDQ0ODU7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuZm9ybS1jb250cm9sIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0NDg1O1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBib3JkZXI6IG5vbmU7XHJcbn1cclxuXHJcbi5mb3JtLWdyb3VwIHtcclxuICBtYXJnaW4tYm90dG9tOiAwO1xyXG59XHJcblxyXG4uZm9ybS1jb250cm9sLFxyXG4uZm9ybS1jb250cm9sOmZvY3VzIHtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbi5tYW5hZ2VycyBwOmxhc3Qtb2YtdHlwZSB7XHJcbiAgbWFyZ2luLWJvdHRvbTogMDtcclxufVxyXG5cclxuLnN3aXRjaCAuYnRuLWRlZmF1bHQge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gIGNvbG9yOiAjY2NjO1xyXG59XHJcblxyXG4uc3dpdGNoIC5idG4tZGVmYXVsdDpob3ZlciB7XHJcbiAgY29sb3I6IGJsYWNrO1xyXG59XHJcblxyXG4uc3dpdGNoIC5idG4tZGVmYXVsdDpmb2N1cyxcclxuLnN3aXRjaCAuYnRuLWRlZmF1bHQ6YWN0aXZlLFxyXG5zZWxlY3Q6Zm9jdXMge1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuLnN3aXRjaCAuYWN0aXZlIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICBib3gtc2hhZG93OiBub25lO1xyXG4gIGNvbG9yOiBibGFjaztcclxufVxyXG5cclxuLnZpZXctbW9yZTpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uZnVsbC1saXN0IHtcclxuICBoZWlnaHQ6IDgwMHB4O1xyXG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcclxufVxyXG5cclxuLm5vLWRhc2hib2FyZCB7XHJcbiAgbWFyZ2luLXRvcDogMmVtO1xyXG4gIGNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG59XHJcblxyXG4ubm8tZGFzaGJvYXJkIGgzIHtcclxuICBjb2xvcjogJG5ocy1ncmV5O1xyXG59XHJcblxyXG4vLyBUb3VyIFxyXG5cclxuLnRvdXItY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgcGFkZGluZy10b3A6IDVweDtcclxuICB3aWR0aDogMzAwcHg7XHJcbiAgei1pbmRleDogMTAwO1xyXG59XHJcblxyXG4udG91ci1jb250ZW50IHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODUpO1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBwYWRkaW5nOiAxLjVlbTtcclxuICBib3JkZXItcmFkaXVzOiA2cHg7XHJcbiAgdGV4dC1hbGlnbjogbGVmdDtcclxufVxyXG5cclxuLnRvdXItY29udGVudCBidXR0b24ge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gIGNvbG9yOiBibGFjaztcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIHBhZGRpbmc6IDVweCAxMHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcclxufVxyXG5cclxuLmFycm93LXVwIHtcclxuICB3aWR0aDogMDsgXHJcbiAgaGVpZ2h0OiAwOyBcclxuICBib3JkZXItbGVmdDogMTBweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuICBib3JkZXItcmlnaHQ6IDEwcHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgYm9yZGVyLWJvdHRvbTogMTBweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuODUpO1xyXG4gIG1hcmdpbjogMCBhdXRvO1xyXG59XHJcblxyXG4uYXJyb3ctZG93biB7XHJcbiAgd2lkdGg6IDA7IFxyXG4gIGhlaWdodDogMDsgXHJcbiAgYm9yZGVyLWxlZnQ6IDEwcHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgYm9yZGVyLXJpZ2h0OiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50O1xyXG4gIGJvcmRlci10b3A6IDEwcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjg1KTtcclxuICBtYXJnaW46IDAgYXV0bztcclxufVxyXG5cclxuI3RvdXJTdGVwNSB7XHJcbiAgbWFyZ2luLXRvcDogLTEzZW07XHJcbn1cclxuXHJcbi5saW5rIHtcclxuICBjb2xvcjogJG5ocy1ibHVlO1xyXG59XHJcblxyXG4ubGluazpob3ZlciB7XHJcbiAgY29sb3I6IGJsYWNrO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuI2ZvcnVtIHtcclxuICBib3JkZXI6IDJweCBzb2xpZCAkbmhzLWJsdWU7XHJcbiAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICBwYWRkaW5nOiAxLjVlbTtcclxuICBtYXJnaW4tYm90dG9tOiAxZW07XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG59XHJcblxyXG4jZm9ydW0gaDIge1xyXG4gIGNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgbWFyZ2luLXRvcDogMDtcclxuICAmIGkge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxuICB9XHJcbn1cclxuXHJcbiNmb3J1bSBwIHtcclxuICBtYXJnaW46IDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuMmVtO1xyXG4gIGNvbG9yOiBibGFjaztcclxufVxyXG5cclxuI2ZvcnVtIC5mb3J1bS1saW5rIHtcclxuICBtYXJnaW46IDAuNWVtIDA7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBjb2xvcjogJG5ocy1ibHVlO1xyXG59XHJcblxyXG4jZm9ydW0gLmZvcnVtLWxpbms6bGFzdC1vZi10eXBlIHtcclxuICBmb250LXdlaWdodDogNDAwO1xyXG4gIG1hcmdpbi1ib3R0b206IDA7XHJcbn1cclxuXHJcbiNmb3J1bSAuZm9ydW0tbGluazpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGNvbG9yOiAjMDAzNzZjO1xyXG59XHJcblxyXG4jYXRkTGluayB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1ibHVlO1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBwYWRkaW5nOiAxLjVlbTtcclxuICBtYXJnaW4tYm90dG9tOiAxZW07XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gICYgaDIge1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuMjVlbTtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICB9XHJcbiAgJiBwIHtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgfVxyXG59XHJcblxyXG4jYXRkTGluazpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4jbmFjZWxTdW1tYXJ5IC5jb2wtc20tNCB7XHJcbiAgcGFkZGluZy10b3A6IDJlbTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgY29sb3I6ICRuaHMtYmx1ZTtcclxufVxyXG5cclxuI25hY2VsU3VtbWFyeSBpIHtcclxuICBmb250LXNpemU6IDIuNWVtO1xyXG59XHJcblxyXG4jbmFjZWxTdW1tYXJ5IGg0IHtcclxuICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gIG1hcmdpbi1ib3R0b206IDVweDtcclxuICBmb250LXNpemU6IDJlbTtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG59XHJcblxyXG4jbmFjZWxTdW1tYXJ5IHAge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi8vIDIwMjAgQWRkaXRpb25zXHJcblxyXG4uZGFzaGJvYXJkLXRpbGUgc3Bhbi5maW5hbC12YWx1ZSBpIHtcclxuICBmb250LXN0eWxlOiBub3JtYWw7XHJcbn1cclxuXHJcbi5kYXNoYm9hcmQtdGlsZSBzcGFuLmZpbmFsLXZhbHVlLWxvYWRpbmcge1xyXG4gIGNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgZm9udC1zaXplOiAyZW07XHJcbiAgbGluZS1oZWlnaHQ6IDJlbTtcclxufVxyXG5cclxuI3dhaXRpbmcge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICRuaHMtYmx1ZTtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgcGFkZGluZzogMC41ZW0gMWVtO1xyXG4gIG1hcmdpbi10b3A6IDFlbTtcclxuICBmb250LXNpemU6IDE3cHg7XHJcbn1cclxuXHJcbi5uby1vdXRwdXRzIHtcclxuICBtYXJnaW46IDE1dmggMDtcclxuICBmb250LXNpemU6IDEuMjVlbTtcclxuICBjb2xvcjogJG5ocy1ncmV5O1xyXG59IiwiJGljb24tZm9udC1wYXRoOiAnLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC1zYXNzL2Fzc2V0cy9mb250cy9ib290c3RyYXAvJztcclxuXHJcbi8vIEN1c3RvbSB2YXJpYWJsZXNcclxuJG5ocy1ibHVlOiAjMDA1RUI4O1xyXG4kbmhzLWRhcmstYmx1ZTogIzAwNDQ4NTtcclxuJG5ocy1ncmV5OiAjNzY4NjkyO1xyXG4kbmhzLWZhZGVkLWJsdWU6ICNGMkY3RkI7XHJcbiRhY3RpdmUtYWRtaW4teWVsbG93OiAjRkRCQzMwO1xyXG4kYWN0aXZlLWFkbWluLWRhcmt5ZWxsb3c6ICNFNTk5MDA7XHJcbiBcclxuLy8gQm9vdHN0cmFwIHZhcmlhYmxlc1xyXG4kdGV4dC1jb2xvcjogYmxhY2s7XHJcbiRib3JkZXItcmFkaXVzLWJhc2U6IDA7XHJcbiRib3JkZXItcmFkaXVzLXNtYWxsOiAwO1xyXG4kYnJhbmQtcHJpbWFyeTogJG5ocy1ibHVlO1xyXG4kYnJhbmQtc3VjY2VzczogZ3JlZW47XHJcbiRsaW5rLWhvdmVyLWRlY29yYXRpb246IG5vbmU7XHJcbiRmb250LXNpemUtaDQ6IDE3cHg7XHJcbiRuYXZiYXItbWFyZ2luLWJvdHRvbTogMDtcclxuJG5hdmJhci1oZWlnaHQ6IDYwcHg7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWNvbG9yOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1iZzogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtYm9yZGVyLWNvbG9yOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1pY29uLWJhci1iZzogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaG92ZXItYmc6IHdoaXRlO1xyXG5cclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1iZzogJG5ocy1ibHVlO1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWNvbG9yOiB3aGl0ZTtcclxuJG5hdi1waWxscy1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kdGFibGUtYmctaG92ZXI6ICRuaHMtZmFkZWQtYmx1ZTtcclxuJGhlYWRpbmdzLXNtYWxsLWNvbG9yOiAkbmhzLWdyZXk7Il19 */\"","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { Meta, Title } from '@angular/platform-browser';\r\n\r\nimport { DataService } from '../utilities/services/data.service'\r\nimport { MemberService } from '../utilities/services/member.service';\r\nimport { HtmlService } from '../utilities/services/html.service';\r\nimport { LoaderService } from '../utilities/services/loader.service';\r\nimport { KenService } from '../utilities/services/ken.service';\r\n\r\nimport { ProjectInformation } from '../utilities/classes/project/project-information';\r\nimport html2canvas from 'html2canvas';\r\n\r\n@Component({\r\n selector: 'app-project',\r\n templateUrl: './dashboard.component.html',\r\n styleUrls: ['./dashboard.component.scss']\r\n})\r\nexport class DashboardComponent implements OnInit {\r\n projectInformation: ProjectInformation;\r\n projectTimetableVisible: boolean = true;\r\n awsDocuments: Object;\r\n\r\n projectId;\r\n organisationExists;\r\n currentYear: number;\r\n projectOverview;\r\n currentNatSub;\r\n offline: boolean = false;\r\n\r\n // Documents section toggles\r\n reportsInitial; presentationsInitial; studiesInitial; toolkitInitial; bespokesInitial;\r\n toggleState: number = 1;\r\n shortSection = true;\r\n longBespoke = false;\r\n longReports = false;\r\n longPresentations = false;\r\n longStudies = false;\r\n longToolkit = false;\r\n openDocumentModal: boolean = false;\r\n currentCalendarYear: number;\r\n\r\n // Tour\r\n tourState = false;\r\n tourStep = 1;\r\n loadCount = 0;\r\n\r\n // Errors\r\n dataError: boolean = false;\r\n organisationError: boolean = false;\r\n acuteError: boolean = false;\r\n accessError: boolean = false;\r\n permissionsError: boolean = false;\r\n\r\n availableYearSubmissions: any; submissionYear: number;\r\n availableOrganisations = []; availableSubmissions = []; availableServices = [];\r\n selectedOrganisation; selectedSubmission; selectedService: number;\r\n forumRequests = [];\r\n subscriptions = [];\r\n\r\n // Metrics\r\n metricValues = [];\r\n metricList;\r\n counter: number;\r\n toolkitOpened: boolean = false;\r\n loadFinished: boolean = false;\r\n combinedTotal: number;\r\n\r\n // ATD\r\n subProjectsList: { projectId: number, projectFa: string; projectName: string, lastUpdated: string; }[];\r\n isSubProject: boolean = false;\r\n isAtd: boolean = false;\r\n\r\n // Export Dashboard\r\n @ViewChild('dashboard') dashboard: ElementRef;\r\n @ViewChild('canvas') canvas: ElementRef;\r\n @ViewChild('downloadLink') downloadLink: ElementRef;\r\n selectedSubmissionName: string;\r\n selectedServiceName: string;\r\n\r\n metaTitle: string = 'Dashboard | NHS Benchmarking Network';\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private memberService: MemberService,\r\n private dataService: DataService,\r\n private htmlService: HtmlService,\r\n private titleService: Title,\r\n private meta: Meta,\r\n public loaderService: LoaderService,\r\n public kenService: KenService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n window.scrollTo(0, 0);\r\n this.titleService.setTitle(this.metaTitle);\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n this.projectId = +this.route.snapshot.paramMap.get('projectId');\r\n this.currentNatSub = 'National';\r\n this.getProjectInformation(this.projectId);\r\n this.currentCalendarYear = new Date().getFullYear()\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe();\r\n }\r\n\r\n getProjectInformation(projectId: number) {\r\n this.memberService.ProjectInformation(projectId).subscribe(\r\n p => {\r\n this.projectInformation = p.data;\r\n\r\n // Online vs offline outputs\r\n if (p.data.outputsAvailable === 'Y' && p.data.outputsOnline !== 'N') {\r\n this.getOverview(this.projectId);\r\n } else {\r\n this.offline = true;\r\n this.getDashboardMetrics(this.projectId, null, this.currentYear);\r\n }\r\n\r\n // Set user's document access\r\n if (p.data.hasDocumentAccess) {\r\n this.selectedOrganisation = this.dataService.getSelectedOrganisation();\r\n this.getProjectRequests(this.projectId);\r\n this.getAWSDocuments(this.projectId, this.selectedOrganisation);\r\n } else {\r\n this.accessError = true;\r\n }\r\n\r\n // TODO: Needs a database definition or switch to static projectId, if necessary\r\n this.isAtd = this.projectInformation.projectName == 'Acute Transformation Dashboard';\r\n\r\n // ATD sub-projects\r\n this.subProjectsList = [\r\n { projectId: 38, projectFa: 'far fa-briefcase-medical', projectName: 'Acute Therapies', lastUpdated: 'December 2022' },\r\n { projectId: 6, projectFa: 'far fa-hospital-symbol', projectName: 'Emergency Care', lastUpdated: 'December 2022' },\r\n { projectId: 35, projectFa: 'far fa-bed-alt', projectName: 'Managing Frailty in the Acute Setting', lastUpdated: 'December 2022' },\r\n { projectId: 5, projectFa: 'far fa-user-md', projectName: 'Operating Theatres', lastUpdated: 'December 2022' },\r\n { projectId: 31, projectFa: 'far fa-clock', projectName: 'Outpatients', lastUpdated: 'December 2022' },\r\n { projectId: 4, projectFa: 'far fa-skeleton', projectName: 'Radiology', lastUpdated: 'March 2022' }\r\n ]\r\n\r\n // ATD sub project with metrics\r\n let subProject = this.subProjectsList.find(s => s.projectId == projectId);\r\n if (subProject && subProject.lastUpdated) {\r\n this.isSubProject = true\r\n }\r\n\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n );\r\n }\r\n\r\n getProjectRequests(projectId: number) {\r\n this.kenService.getProjectRequests(projectId).subscribe(\r\n r => {\r\n let filteredFormRequests = r.data.filter(d => d.isVisible === 'Y');\r\n this.forumRequests = filteredFormRequests.slice(0,3);\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n };\r\n\r\n getOverview(projectId: number) {\r\n this.memberService.ProjectOverviewOrganisations(projectId).subscribe(\r\n a => {\r\n if (a.data.viewOutputsOrganisationList.length > 0) {\r\n this.availableOrganisations = a.data.viewOutputsOrganisationList;\r\n this.getOrganisation();\r\n } \r\n else {\r\n this.organisationError = true;\r\n this.getDashboardMetrics(this.projectId, this.selectedService, this.currentYear, null);\r\n }\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n };\r\n\r\n getOrganisation() {\r\n let selectedOrganisation = this.dataService.getSelectedOrganisation();\r\n let organisationExists = this.availableOrganisations.map(o => o.organisationId).includes(selectedOrganisation);\r\n if (organisationExists) {\r\n this.selectedOrganisation = selectedOrganisation;\r\n }\r\n else { \r\n this.selectedOrganisation = this.availableOrganisations[0].organisationId;\r\n }\r\n\r\n // Get documents\r\n this.getAWSDocuments(this.projectId, this.selectedOrganisation);\r\n\r\n // Get submissions\r\n this.getSubmissionsList(this.projectId, this.selectedOrganisation);\r\n }\r\n\r\n getSubmissionsList(projectId, organisationId) {\r\n this.memberService.ProjectOverviewSubmissions(projectId, organisationId).subscribe(\r\n success => {\r\n this.availableYearSubmissions = success.data.submissionData[0].years;\r\n this.getDashboardMetrics(projectId);\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n );\r\n }\r\n\r\n getDashboardMetrics(projectId, serviceItemId?, year?, submissionId?) {\r\n \r\n // Reset\r\n this.metricList = [];\r\n this.toolkitOpened = false;\r\n this.loadFinished = false;\r\n this.combinedTotal = null;\r\n \r\n this.memberService.DashboardMetrics(projectId, serviceItemId, year).subscribe(\r\n success => {\r\n\r\n // Set national metrics\r\n this.counter = 0;\r\n this.metricList = success.data.metricList;\r\n\r\n // Set selected year\r\n this.currentYear = success.data.selectedYear;\r\n\r\n // Get submissions list\r\n if (this.availableYearSubmissions) {\r\n let currentYearCheck = this.availableYearSubmissions.find(submission => submission.year == this.currentYear);\r\n this.availableSubmissions = currentYearCheck ? currentYearCheck.submissions : [];\r\n }\r\n\r\n // Set selected submission\r\n if(submissionId) {\r\n this.availableSubmissions.forEach(k => {\r\n if(k.submissionId == this.selectedSubmission) {\r\n this.selectedSubmissionName = k.submissionName\r\n this.selectedSubmission = k.submissionId\r\n }\r\n });\r\n } else {\r\n this.selectedSubmission = this.availableSubmissions.length ? this.availableSubmissions[0].submissionId : null;\r\n this.selectedSubmissionName = this.availableSubmissions.length ? this.availableSubmissions[0].submissionName : null;\r\n }\r\n\r\n\r\n if (this.metricList.length === 0) {\r\n this.dataError = true;\r\n } else {\r\n let metricIdList = this.metricList.map(m => m.metricId);\r\n metricIdList.forEach(m => {\r\n this.getMetricValue(m, submissionId);\r\n });\r\n }\r\n\r\n if (submissionId) {\r\n this.selectedSubmission = submissionId;\r\n } else if (this.selectedSubmission) {\r\n this.selectedSubmission = this.selectedSubmission;\r\n } else {\r\n this.selectedSubmission = this.availableSubmissions.length ? this.availableSubmissions[0].submissionId : null;\r\n }\r\n\r\n // Get services list\r\n if(this.currentNatSub === 'National') {\r\n this.availableServices = success.data.availableYearServices[this.currentYear];\r\n } else {\r\n this.setSelectedService();\r\n }\r\n\r\n // Set selected service\r\n if (serviceItemId) {\r\n this.selectedService = serviceItemId;\r\n } else {\r\n this.selectedService = success.data.selectedService;\r\n }\r\n\r\n if(this.availableServices) {\r\n this.availableServices.forEach(k => {\r\n if(k.serviceItemId == this.selectedService) {\r\n this.selectedServiceName = k.serviceItemName\r\n }\r\n });\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n this.permissionsError = true;\r\n }\r\n )\r\n }\r\n\r\n setSelectedService() {\r\n let submission = this.availableYearSubmissions[0].submissions.filter(k => k.submissionId == this.selectedSubmission)\r\n this.availableServices = submission[0].services;\r\n\r\n if(this.availableServices.length > 0) {\r\n this.selectedService = this.availableServices[0].serviceItemId;\r\n }\r\n }\r\n\r\n getMetricValue(metricId, submissionId?) {\r\n this.subscriptions.push(\r\n this.memberService.DashboardMetric(metricId, submissionId).subscribe(\r\n r => {\r\n let value = r.data.metric.metricValue,\r\n metric = this.metricList.filter(m => m.metricId === metricId)[0],\r\n prefix = metric.prefix,\r\n suffix = metric.suffix;\r\n\r\n if (value) {\r\n metric.value = value;\r\n metric.finalValue = this.formatValue(prefix, value, suffix);\r\n } else {\r\n if(metric.showZero == 'Y') {\r\n metric.finalValue = this.formatValue(prefix, value, suffix);\r\n } else {\r\n metric.value = 0;\r\n metric.finalValue = 'n/a';\r\n }\r\n }\r\n },\r\n e => {\r\n console.log(e);\r\n },\r\n () => {\r\n if (this.counter === this.metricList.length - 1) {\r\n this.loadFinished = true;\r\n this.combinedTotal = this.metricList.map(ml => ml.value).reduce((acc, cur) => acc + cur, 0);\r\n } else {\r\n this.counter = this.counter + 1;\r\n }\r\n }\r\n )\r\n )\r\n }\r\n\r\n formatValue(prefix, value, suffix) {\r\n let newValue, newSuffix;\r\n // Turn 10,000 to 10k\r\n if (value >= 1000 && value <= 1000000) { \r\n newValue = value / 1000; \r\n newSuffix = 'k'; \r\n } \r\n // Turn 1,000,000 to 1m\r\n else if (value >= 1000000) { \r\n newValue = value / 1000000; \r\n newSuffix = 'm'; \r\n } \r\n else { \r\n newValue = value; \r\n newSuffix = suffix;\r\n }\r\n // If over 100, limit to zero DP\r\n if ((prefix === '£' || suffix === '%') && value > 10) {\r\n newValue = newValue.toFixed(0);\r\n }\r\n else if (newValue > 100) {\r\n newValue = newValue.toFixed(0);\r\n }\r\n else if (typeof(value) === 'string' ) {\r\n newValue = value;\r\n }\r\n else {\r\n newValue = newValue.toFixed(1);\r\n }\r\n return prefix + newValue + newSuffix;\r\n }\r\n\r\n changeOrganisation(organisationId) {\r\n this.natSubToggle('National');\r\n this.dataService.setSelectedOrganisation(organisationId);\r\n this.selectedOrganisation = organisationId;\r\n this.dataError = false;\r\n this.organisationError = false;\r\n this.getSubmissionsList(this.projectId, organisationId);\r\n this.getAWSDocuments(this.projectId, this.selectedOrganisation);\r\n }\r\n\r\n changeSubmission(submissionId) {\r\n this.currentNatSub = 'Submission';\r\n this.selectedSubmission = submissionId;\r\n this.setSelectedService();\r\n this.getDashboardMetrics(this.projectId, this.selectedService, this.currentYear, submissionId);\r\n }\r\n\r\n changeService(serviceItemId) {\r\n if (this.currentNatSub == 'National') {\r\n this.getDashboardMetrics(this.projectId, serviceItemId, this.currentYear);\r\n } else {\r\n this.getDashboardMetrics(this.projectId, serviceItemId, this.currentYear, this.selectedSubmission);\r\n }\r\n }\r\n\r\n downloadDashboard(){\r\n let fileName: string;\r\n if(this.selectedServiceName) {\r\n fileName = `${this.selectedSubmissionName}(${this.selectedServiceName})`\r\n } else {\r\n fileName = this.selectedSubmissionName\r\n }\r\n\r\n html2canvas(this.dashboard.nativeElement).then(canvas => {\r\n this.canvas.nativeElement.src = canvas.toDataURL();\r\n this.downloadLink.nativeElement.href = canvas.toDataURL('image/png');\r\n this.downloadLink.nativeElement.download = fileName;\r\n this.downloadLink.nativeElement.click();\r\n });\r\n }\r\n\r\n getAWSDocuments(projectId: number, organisationId?: number) {\r\n this.memberService.AWSDocuments(projectId, organisationId).subscribe(\r\n a => {\r\n this.awsDocuments = this.hideNonVisibleDocuments(a.data);\r\n // TODO: API call to retrieve top-3 separately\r\n if (this.awsDocuments['Bespoke']) {\r\n let bespokesYear = this.htmlService.keys(this.awsDocuments['Bespoke']).reverse()[0];\r\n this.bespokesInitial = this.awsDocuments['Bespoke'][bespokesYear].slice(0,3);\r\n }\r\n if (this.awsDocuments['Report']) {\r\n let reportsYear = this.htmlService.keys(this.awsDocuments['Report']).reverse()[0];\r\n this.reportsInitial = this.awsDocuments['Report'][reportsYear].slice(0,3);\r\n }\r\n if (this.awsDocuments['Presentation']) {\r\n let presentationsYear = this.htmlService.keys(this.awsDocuments['Presentation']).reverse()[0];\r\n this.presentationsInitial = this.awsDocuments['Presentation'][presentationsYear].slice(0,3);\r\n }\r\n if (this.awsDocuments['CaseStudy']) {\r\n let studiesYear = this.htmlService.keys(this.awsDocuments['CaseStudy']).reverse()[0];\r\n this.studiesInitial = this.awsDocuments['CaseStudy'][studiesYear].slice(0,3);\r\n }\r\n if (this.awsDocuments['Toolkit']) {\r\n let toolkitYear = this.htmlService.keys(this.awsDocuments['Toolkit']).reverse()[0];\r\n this.toolkitInitial = this.awsDocuments['Toolkit'][toolkitYear].slice(0,3);\r\n }\r\n // Open bespoke report modal, is URL specifies\r\n this.route.queryParams.subscribe(params => {\r\n if (params.bespokes) {\r\n this.openDocumentModal = true;\r\n } else {\r\n this.router.navigate([], { queryParams: { bespokes: null } });\r\n }\r\n });\r\n },\r\n error => {\r\n console.log(error);\r\n this.accessError = true;\r\n }\r\n );\r\n }\r\n\r\n hideNonVisibleDocuments(data) {\r\n for (const mainKey in data) {\r\n // Loop through the main keys like 'Bespoke', 'CaseStudy', etc.\r\n const yearData = data[mainKey];\r\n for (const year in yearData) {\r\n // Loop through each year's array\r\n yearData[year] = yearData[year].filter(item => item.isVisible == 'Y');\r\n // Remove the year key if its array is empty\r\n if (yearData[year].length === 0) {\r\n delete yearData[year];\r\n }\r\n } \r\n }\r\n return data;\r\n }\r\n\r\n getSelectedDocument(documentId: number) {\r\n this.memberService.AWSSelectedDocument(documentId, this.selectedOrganisation).subscribe(\r\n a => { window.open(a.data.documentUrl) }\r\n );\r\n }\r\n\r\n toggleSection(section) {\r\n if (this.toggleState == 2) {\r\n this.shortSection = true;\r\n this.longBespoke = false;\r\n this.longReports = false;\r\n this.longPresentations = false;\r\n this.longStudies = false;\r\n this.longToolkit = false;\r\n this.toggleState = 1\r\n }\r\n else {\r\n this.shortSection = false;\r\n this.longBespoke = (section == 'bespokes' ? true : false)\r\n this.longReports = (section == 'reports' ? true : false)\r\n this.longPresentations = (section == 'presentations' ? true : false)\r\n this.longStudies = (section == 'studies' ? true : false)\r\n this.longToolkit = (section == 'toolkit' ? true : false)\r\n this.toggleState = 2;\r\n } \r\n }\r\n\r\n toggleTour() {\r\n if (this.tourState) {\r\n this.tourState = false;\r\n this.tourStep = 1;\r\n }\r\n else {\r\n this.tourState = true;\r\n }\r\n }\r\n\r\n stepTour() {\r\n this.tourStep = this.tourStep + 1;\r\n }\r\n\r\n natSubToggle(message) {\r\n this.toolkitOpened = true;\r\n if (message === 'National') {\r\n this.getDashboardMetrics(this.projectId, this.selectedService, this.currentYear);\r\n } else {\r\n this.setSelectedService();\r\n this.getDashboardMetrics(this.projectId, this.selectedService, this.currentYear, this.selectedSubmission);\r\n }\r\n this.currentNatSub = message;\r\n }\r\n\r\n unsubscribe() {\r\n this.subscriptions.forEach(s => {\r\n s.unsubscribe();\r\n });\r\n }\r\n\r\n navHome() {\r\n this.router.navigate(['/home']);\r\n }\r\n\r\n navProjectDetail(projectId: number) {\r\n this.router.navigate(['/project-detail', projectId]);\r\n }\r\n\r\n navOutputs(projectId: number) {\r\n this.router.navigate(['/outputs', projectId]);\r\n }\r\n\r\n navChart(projectId: number, tierId: number, optionId: number) {\r\n if (tierId) {\r\n this.router.navigate(['/outputs', projectId], { queryParams: { tier: tierId, option: optionId } });\r\n }\r\n }\r\n\r\n navForum(projectName) {\r\n this.router.navigate(['/forum'], { queryParams: { project: projectName, ref: 'dashboard' } });\r\n }\r\n\r\n navRequest(requestId) {\r\n this.router.navigate([]).then(result => { window.open('/request/' + requestId, '_blank'); });\r\n }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { TabsModule } from 'ngx-bootstrap';\r\nimport { ButtonsModule } from 'ngx-bootstrap/buttons';\r\n\r\nimport { DashboardComponent } from './dashboard.component';\r\nimport { DashboardRoutingModule } from './dashboard-routing.module';\r\n\r\nimport { SafePipeModule } from '../utilities/pipes/safe-pipe.module';\r\nimport { DocumentPanelModule } from 'app/shared/document-panel/document-panel.module';\r\n\r\n@NgModule({\r\n imports: [ \r\n CommonModule, \r\n TabsModule.forRoot(),\r\n SafePipeModule,\r\n DashboardRoutingModule,\r\n FormsModule,\r\n ButtonsModule.forRoot(),\r\n DocumentPanelModule\r\n ],\r\n declarations: [ DashboardComponent ]\r\n})\r\nexport class DashboardModule {}","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { DataCollectionComponent } from './data-collection.component'\r\n\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service'\r\n\r\nconst datacollectionRoutes: Routes = [\r\n { path: 'data-collection/:type/:submissionId/:year', component: DataCollectionComponent, canActivate: [AuthGuardService] },\r\n { path: 'data-collection/:type/:submissionId/:year/:serviceItemId', component: DataCollectionComponent, canActivate: [AuthGuardService] }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(datacollectionRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class DataCollectionRoutingModule { }","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Back to Project Overview\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

There are no questions set for this part of data collection.

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n Questions\\r\\n \\r\\n
0 && projectId !== 34\\\">\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n {{g.groupName}}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Help\\r\\n \\r\\n

\\r\\n Do not forget to save the section before moving on. You can complete the sections in any order.\\r\\n Partially completed questions can be returned to as necessary. \\r\\n

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

If you require any assistance please contact any of the people below.

\\r\\n \\r\\n
0\\\">\\r\\n
\\r\\n
\\r\\n \\r\\n

{{p.role}}

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

\\r\\n {{p.name}}
\\r\\n {{p.email}}
\\r\\n {{p.phoneNo}}\\r\\n

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

\\r\\n {{submissionDetails.projectName}}\\r\\n \\r\\n {{submissionDetails.submissionName}}\\r\\n \\r\\n \\r\\n {{submissionDetails.serviceName}}\\r\\n \\r\\n \\r\\n \\r\\n {{caseNoteReviewCode | slice:5:15}}\\r\\n \\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n This data collection page is read-only to users.
Only amend and save responses if absolutely necessary.\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n

\\r\\n Loading questions...\\r\\n

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

Your browser is not supported.

\\r\\n Click here for more information and links to alternative browsers.\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ e }}\\r\\n
\\r\\n
\\r\\n\\r\\n
0\\\" class=\\\"hint -warn\\\">\\r\\n
    \\r\\n
  • \\r\\n {{ q.questionText }}\\r\\n
  • \\r\\n
\\r\\n
\\r\\n The change made to the question above will delete responses already provided in the data collection. Only click 'Save' if you are certain this change is required.\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n Your progress has been saved.\\r\\n
\\r\\n
\\r\\n Click 'Save' before continuing.\\r\\n
\\r\\n \\r\\n
\\r\\n You must complete all questions in this section before you can save the data.\\r\\n
\\r\\n
\\r\\n Click 'Save' before continuing.\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Nested Question ID (for tech team use only): {{ editingQuestionSelection.questionId }}

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

This is not editable

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

10 characters max.

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

1500 characters max.

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

2048 characters max.

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

\\r\\n Link this question to another question to provide a data definition or provide separate data definition wording (limited to 50 characters).\\r\\n

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

\\r\\n If you need to change the minimum/maximum values for date/time questions, please contact the IT Team.\\r\\n

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

\\r\\n Available Placeholders
\\r\\n Click on a placeholder below to copy to clipboard\\r\\n

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

{{ p.example }}*|{{ p.name }}|*

\\r\\n
\\r\\n
\\r\\n {{ copiedMessage }}\\r\\n
\\r\\n
\\r\\n \\r\\n Placeholders\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"#selectorBar {\\n background-color: #005EB8;\\n margin-top: -2em; }\\n\\n#selectorBar .btn-back {\\n color: white;\\n font-size: 17px;\\n line-height: 2.5em; }\\n\\n#selectorBar .btn-back .fa {\\n margin-right: 5px; }\\n\\n#selectorBar .btn-back:hover {\\n cursor: pointer; }\\n\\n#containerCollection {\\n padding-top: 3em;\\n padding-bottom: 3em;\\n background-color: #F8F9F9;\\n min-height: 70vh; }\\n\\n#containerCollection button span {\\n opacity: 0;\\n margin-left: -1em; }\\n\\n#containerCollection button.is-loading span {\\n opacity: 1;\\n margin-left: 0.25em; }\\n\\n.list-group a:hover {\\n cursor: pointer; }\\n\\n.tab-pane {\\n padding-top: 1em;\\n font-size: 17px;\\n line-height: 25px;\\n color: black !important;\\n font-weight: 400; }\\n\\n.help-text {\\n padding: 5px; }\\n\\n.questions-heading {\\n padding: 0.75em 1.5em 0.5em 1.5em;\\n margin-bottom: 1em;\\n background-color: #005EB8; }\\n\\n.questions-heading h4 {\\n font-weight: 600;\\n color: white;\\n padding: 0;\\n line-height: 1.3em; }\\n\\n.questions-heading h4 .fa {\\n margin: 0 0.5em; }\\n\\n.question-actions {\\n padding: 1em 0; }\\n\\n.question-actions .btn {\\n margin-right: 0.5em; }\\n\\n.progress-saved {\\n color: green;\\n font-weight: 600; }\\n\\n.progress-not-saved {\\n color: #768692;\\n font-weight: 600; }\\n\\n.question-count-label {\\n color: #005EB8;\\n font-weight: 600;\\n margin-top: 1em;\\n float: right; }\\n\\n@media (max-width: 550px) {\\n .question-count-label {\\n float: none; } }\\n\\n#questions {\\n background-color: white;\\n padding: 2em 1.5em;\\n border-radius: 4px;\\n border: 1px solid #ccc; }\\n\\n.wrong-browser {\\n background-color: #fdbc30;\\n padding: 1em;\\n width: 50%;\\n margin-top: 3em;\\n margin-left: 25%;\\n border-radius: 5px;\\n text-align: center; }\\n\\n.wrong-browser h4 {\\n font-weight: 600; }\\n\\n.wrong-browser a, .wrong-browser h4 {\\n color: rgba(0, 0, 0, 0.75);\\n margin: 0;\\n padding: 5px; }\\n\\n.btn-success .btn-loading span {\\n margin-left: 0.25em; }\\n\\n.page-header {\\n margin-bottom: 2em; }\\n\\n.page-header h1 {\\n font-weight: 600; }\\n\\n.question-group-header {\\n padding: 0.5em 1em;\\n margin-top: 1em;\\n margin-bottom: 1em;\\n font-size: 21px;\\n font-weight: 600;\\n background-color: white;\\n border: 1px solid #ccc;\\n border-radius: 4px; }\\n\\n.question-group-header:hover {\\n border-color: #768692;\\n cursor: pointer; }\\n\\n.question-group-header.active {\\n background-color: white;\\n border-color: #CCC;\\n color: black;\\n margin-bottom: 0;\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0; }\\n\\n.hint {\\n padding: 0.5em 1.5em;\\n font-weight: 500;\\n margin-top: -1em;\\n margin-bottom: 1em;\\n margin-left: -0.5em;\\n margin-right: -0.5em;\\n border-top-left-radius: 4px;\\n border-top-right-radius: 4px; }\\n\\n.-disabled {\\n background-color: #EEEEEE;\\n color: #555555; }\\n\\n.-warn {\\n background-color: #FFEAB6;\\n color: #654F28;\\n margin: 0.5em;\\n border-radius: 0; }\\n\\n.-warn ul {\\n font-weight: 600;\\n list-style: none;\\n padding-left: 0; }\\n\\n.-warn ul, .-warn div {\\n margin: 0.25em 0; }\\n\\n.-error {\\n margin: 0.5em;\\n border-radius: 0;\\n background-color: #8A1538;\\n color: white; }\\n\\n.hint i {\\n margin-right: 0.5em; }\\n\\ninput {\\n box-shadow: none; }\\n\\ninput:disabled {\\n background-color: none; }\\n\\n.prefix {\\n color: #768692;\\n margin-right: 0.5em; }\\n\\n#questionEditForm {\\n position: fixed;\\n bottom: 0;\\n right: 0;\\n margin: 1em;\\n padding: 1em;\\n background-color: #F2F2F2;\\n border: 1px solid #CCCCCC;\\n border-radius: 4px;\\n z-index: 10000;\\n box-shadow: 0 0 25px rgba(0, 0, 0, 0.4), 0 10px 10px rgba(0, 0, 0, 0.4);\\n width: 100%;\\n max-width: 550px; }\\n\\n#questionEditForm .form-actions .btn {\\n margin-right: 0.5em; }\\n\\n#questionEditForm .btn-admin {\\n background-color: white;\\n font-weight: 600;\\n border-radius: 4px; }\\n\\n#questionEditForm .btn-admin:hover {\\n background-color: #F3F3F3; }\\n\\n#questionEditForm .btn-admin.-primary {\\n background-color: #FDBC30; }\\n\\n#questionEditForm .btn-admin.-help {\\n float: right;\\n font-weight: 400;\\n color: #768692;\\n background-color: transparent;\\n margin-right: 0;\\n outline: none; }\\n\\n#questionEditForm .btn-admin.-help.-active {\\n background-color: black;\\n color: white; }\\n\\n#questionEditForm .btn-admin.-primary:hover {\\n background-color: #E59900;\\n color: black; }\\n\\n#questionEditForm .datetime-warning {\\n font-style: italic;\\n margin-bottom: 1em; }\\n\\n#questionEditForm .help-block {\\n font-size: 14px;\\n color: #768692; }\\n\\n#placeholderHelp {\\n z-index: 1000;\\n background-color: rgba(0, 0, 0, 0.95);\\n border-radius: 4px;\\n color: white;\\n padding: 1em;\\n position: absolute;\\n bottom: 4em;\\n right: 1em; }\\n\\n#placeholderHelp p {\\n font-size: 14px; }\\n\\n#placeholderHelp span {\\n margin-right: 0.5em;\\n padding: 2px 4px;\\n border-radius: 2px;\\n background-color: white;\\n color: black;\\n font-weight: 600; }\\n\\n.placeholder i {\\n opacity: 0.5;\\n margin: 0 2px;\\n font-style: normal; }\\n\\n.placeholder:hover {\\n cursor: pointer; }\\n\\n.placeholder-copied {\\n background-color: green;\\n padding: 0.25em;\\n font-weight: bold;\\n margin-top: 0.5em;\\n border-radius: 3px; }\\n\\n#readOnly {\\n background-color: #E59900;\\n padding: 0.5em 1em;\\n border-radius: 4px;\\n margin-bottom: 1em; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZGF0YS1jb2xsZWN0aW9uL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxhcHBcXGRhdGEtY29sbGVjdGlvblxcZGF0YS1jb2xsZWN0aW9uLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9kYXRhLWNvbGxlY3Rpb24vQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNFLHlCQ0FnQjtFRENoQixnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxZQUFZO0VBQ1osZUFBZTtFQUNmLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGVBQWUsRUFBQTs7QUFHakI7RUFDRSxnQkFBZ0I7RUFDaEIsbUJBQW1CO0VBQ25CLHlCQUF5QjtFQUN6QixnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxVQUFVO0VBQ1YsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsVUFBVTtFQUNWLG1CQUFtQixFQUFBOztBQUdyQjtFQUNFLGVBQWUsRUFBQTs7QUFHakI7RUFDRSxnQkFBZ0I7RUFDaEIsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQix1QkFBdUI7RUFDdkIsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0UsWUFBWSxFQUFBOztBQUdkO0VBQ0UsaUNBQWlDO0VBQ2pDLGtCQUFrQjtFQUNsQix5QkN0RGdCLEVBQUE7O0FEeURsQjtFQUNFLGdCQUFnQjtFQUNoQixZQUFZO0VBQ1osVUFBVTtFQUNWLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLGVBQWUsRUFBQTs7QUFHakI7RUFDRSxjQUFjLEVBQUE7O0FBR2hCO0VBQ0UsbUJBQW1CLEVBQUE7O0FBR3JCO0VBQ0UsWUFBWTtFQUNaLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLGNDaEZnQjtFRGlGaEIsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0UsY0N2RmdC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QWUsRUFBQTs7QUFHakI7RUFDRSx1QkFBdUI7RUFDdkIsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixpQkFBaUI7RUFDakIsa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UseUJBQXlCO0VBQ3pCLGtCQUFrQjtFQUNsQixrQkFBa0I7RUFDbEIsa0JBQWtCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9kYXRhLWNvbGxlY3Rpb24vZGF0YS1jb2xsZWN0aW9uLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vdmFyaWFibGVzJztcclxuXHJcbiNzZWxlY3RvckJhciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1ibHVlO1xyXG4gIG1hcmdpbi10b3A6IC0yZW07XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuYnRuLWJhY2sge1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBmb250LXNpemU6IDE3cHg7XHJcbiAgbGluZS1oZWlnaHQ6IDIuNWVtO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ0bi1iYWNrIC5mYSB7XHJcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuYnRuLWJhY2s6aG92ZXIge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuI2NvbnRhaW5lckNvbGxlY3Rpb24ge1xyXG4gIHBhZGRpbmctdG9wOiAzZW07XHJcbiAgcGFkZGluZy1ib3R0b206IDNlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjhGOUY5O1xyXG4gIG1pbi1oZWlnaHQ6IDcwdmg7XHJcbn1cclxuXHJcbiNjb250YWluZXJDb2xsZWN0aW9uIGJ1dHRvbiBzcGFuIHtcclxuICBvcGFjaXR5OiAwO1xyXG4gIG1hcmdpbi1sZWZ0OiAtMWVtO1xyXG59XHJcblxyXG4jY29udGFpbmVyQ29sbGVjdGlvbiBidXR0b24uaXMtbG9hZGluZyBzcGFuIHtcclxuICBvcGFjaXR5OiAxO1xyXG4gIG1hcmdpbi1sZWZ0OiAwLjI1ZW07XHJcbn1cclxuXHJcbi5saXN0LWdyb3VwIGE6aG92ZXIge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLnRhYi1wYW5lIHtcclxuICBwYWRkaW5nLXRvcDogMWVtO1xyXG4gIGZvbnQtc2l6ZTogMTdweDtcclxuICBsaW5lLWhlaWdodDogMjVweDtcclxuICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcclxuICBmb250LXdlaWdodDogNDAwO1xyXG59XHJcblxyXG4uaGVscC10ZXh0IHtcclxuICBwYWRkaW5nOiA1cHg7XHJcbn1cclxuXHJcbi5xdWVzdGlvbnMtaGVhZGluZyB7XHJcbiAgcGFkZGluZzogMC43NWVtIDEuNWVtIDAuNWVtIDEuNWVtO1xyXG4gIG1hcmdpbi1ib3R0b206IDFlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWJsdWU7XHJcbn1cclxuXHJcbi5xdWVzdGlvbnMtaGVhZGluZyBoNCB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgcGFkZGluZzogMDtcclxuICBsaW5lLWhlaWdodDogMS4zZW07XHJcbn1cclxuXHJcbi5xdWVzdGlvbnMtaGVhZGluZyBoNCAuZmEge1xyXG4gIG1hcmdpbjogMCAwLjVlbTtcclxufVxyXG5cclxuLnF1ZXN0aW9uLWFjdGlvbnMge1xyXG4gIHBhZGRpbmc6IDFlbSAwO1xyXG59XHJcblxyXG4ucXVlc3Rpb24tYWN0aW9ucyAuYnRuIHtcclxuICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59XHJcblxyXG4ucHJvZ3Jlc3Mtc2F2ZWQge1xyXG4gIGNvbG9yOiBncmVlbjtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG59XHJcblxyXG4ucHJvZ3Jlc3Mtbm90LXNhdmVkIHtcclxuICBjb2xvcjogJG5ocy1ncmV5O1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi5xdWVzdGlvbi1jb3VudC1sYWJlbCB7XHJcbiAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIG1hcmdpbi10b3A6IDFlbTtcclxuICBmbG9hdDogcmlnaHQ7XHJcbn1cclxuXHJcbkBtZWRpYSAobWF4LXdpZHRoOiA1NTBweCkge1xyXG4gIC5xdWVzdGlvbi1jb3VudC1sYWJlbCB7XHJcbiAgICBmbG9hdDogbm9uZTtcclxuICB9XHJcbn1cclxuXHJcbiNxdWVzdGlvbnMge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gIHBhZGRpbmc6IDJlbSAxLjVlbTtcclxuICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxufVxyXG5cclxuLndyb25nLWJyb3dzZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZGJjMzA7XHJcbiAgcGFkZGluZzogMWVtO1xyXG4gIHdpZHRoOiA1MCU7XHJcbiAgbWFyZ2luLXRvcDogM2VtO1xyXG4gIG1hcmdpbi1sZWZ0OiAyNSU7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAmIGg0IHtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgfVxyXG4gICYgYSwgaDQge1xyXG4gICAgY29sb3I6IHJnYmEoMCwwLDAsMC43NSk7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiA1cHhcclxuICB9XHJcbn1cclxuXHJcbi5idG4tc3VjY2VzcyAuYnRuLWxvYWRpbmcgc3BhbiB7XHJcbiAgbWFyZ2luLWxlZnQ6IDAuMjVlbTtcclxufVxyXG5cclxuLy8gMjAyMCBBZGRpdGlvbnNcclxuXHJcbi5wYWdlLWhlYWRlciB7XHJcbiAgbWFyZ2luLWJvdHRvbTogMmVtO1xyXG59XHJcblxyXG4ucGFnZS1oZWFkZXIgaDEge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi5xdWVzdGlvbi1ncm91cC1oZWFkZXIge1xyXG4gIHBhZGRpbmc6IDAuNWVtIDFlbTtcclxuICBtYXJnaW4tdG9wOiAxZW07XHJcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xyXG4gIGZvbnQtc2l6ZTogMjFweDtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG59XHJcblxyXG4ucXVlc3Rpb24tZ3JvdXAtaGVhZGVyOmhvdmVyIHtcclxuICBib3JkZXItY29sb3I6ICRuaHMtZ3JleTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5xdWVzdGlvbi1ncm91cC1oZWFkZXIuYWN0aXZlIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICBib3JkZXItY29sb3I6ICNDQ0M7XHJcbiAgY29sb3I6IGJsYWNrO1xyXG4gIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcclxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcclxufVxyXG5cclxuLmhpbnQge1xyXG4gIHBhZGRpbmc6IDAuNWVtIDEuNWVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgbWFyZ2luLXRvcDogLTFlbTtcclxuICBtYXJnaW4tYm90dG9tOiAxZW07XHJcbiAgbWFyZ2luLWxlZnQ6IC0wLjVlbTtcclxuICBtYXJnaW4tcmlnaHQ6IC0wLjVlbTtcclxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XHJcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcclxufVxyXG5cclxuLi1kaXNhYmxlZCB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0VFRUVFRTtcclxuICBjb2xvcjogIzU1NTU1NTtcclxufVxyXG5cclxuLi13YXJuIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZFQUI2O1xyXG4gIGNvbG9yOiAjNjU0RjI4O1xyXG4gIG1hcmdpbjogMC41ZW07XHJcbiAgYm9yZGVyLXJhZGl1czogMDtcclxufVxyXG5cclxuLi13YXJuIHVsIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgcGFkZGluZy1sZWZ0OiAwO1xyXG59XHJcblxyXG4uLXdhcm4gdWwsIC4td2FybiBkaXYge1xyXG4gIG1hcmdpbjogMC4yNWVtIDA7XHJcbn1cclxuXHJcbi4tZXJyb3Ige1xyXG4gIG1hcmdpbjogMC41ZW07XHJcbiAgYm9yZGVyLXJhZGl1czogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEExNTM4O1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxufVxyXG5cclxuLmhpbnQgaSB7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufVxyXG5cclxuaW5wdXQge1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbmlucHV0OmRpc2FibGVkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiBub25lO1xyXG59XHJcblxyXG4ucHJlZml4IHtcclxuICBjb2xvcjogJG5ocy1ncmV5O1xyXG4gIG1hcmdpbi1yaWdodDogMC41ZW07XHJcbn1cclxuXHJcbi8vIEFjdGl2ZSBBZG1pblxyXG5cclxuI3F1ZXN0aW9uRWRpdEZvcm0ge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICBib3R0b206IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgbWFyZ2luOiAxZW07XHJcbiAgcGFkZGluZzogMWVtO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNGMkYyRjI7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI0NDQ0NDQztcclxuICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgei1pbmRleDogMTAwMDA7XHJcbiAgYm94LXNoYWRvdzogMCAwIDI1cHggcmdiYSgwLCAwLCAwLCAwLjQpLCAwIDEwcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuNCk7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWF4LXdpZHRoOiA1NTBweDtcclxufVxyXG5cclxuI3F1ZXN0aW9uRWRpdEZvcm0gLmZvcm0tYWN0aW9ucyAuYnRuIHtcclxuICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59XHJcblxyXG4jcXVlc3Rpb25FZGl0Rm9ybSAuYnRuLWFkbWluIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcclxufVxyXG5cclxuI3F1ZXN0aW9uRWRpdEZvcm0gLmJ0bi1hZG1pbjpob3ZlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjNGMztcclxufVxyXG5cclxuI3F1ZXN0aW9uRWRpdEZvcm0gLmJ0bi1hZG1pbi4tcHJpbWFyeSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZEQkMzMDtcclxufVxyXG5cclxuI3F1ZXN0aW9uRWRpdEZvcm0gLmJ0bi1hZG1pbi4taGVscCB7XHJcbiAgZmxvYXQ6IHJpZ2h0O1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgY29sb3I6ICRuaHMtZ3JleTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgb3V0bGluZTogbm9uZTtcclxufVxyXG5cclxuI3F1ZXN0aW9uRWRpdEZvcm0gLmJ0bi1hZG1pbi4taGVscC4tYWN0aXZlIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcclxuICBjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbiNxdWVzdGlvbkVkaXRGb3JtIC5idG4tYWRtaW4uLXByaW1hcnk6aG92ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNFNTk5MDA7XHJcbiAgY29sb3I6IGJsYWNrO1xyXG59XHJcblxyXG4jcXVlc3Rpb25FZGl0Rm9ybSAuZGF0ZXRpbWUtd2FybmluZyB7XHJcbiAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gIG1hcmdpbi1ib3R0b206IDFlbTtcclxufVxyXG5cclxuI3F1ZXN0aW9uRWRpdEZvcm0gLmhlbHAtYmxvY2sge1xyXG4gIGZvbnQtc2l6ZTogMTRweDtcclxuICBjb2xvcjogJG5ocy1ncmV5O1xyXG59XHJcblxyXG4jcGxhY2Vob2xkZXJIZWxwIHtcclxuICB6LWluZGV4OiAxMDAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsMC45NSk7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBwYWRkaW5nOiAxZW07XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIGJvdHRvbTogNGVtO1xyXG4gIHJpZ2h0OiAxZW07XHJcbn1cclxuXHJcbiNwbGFjZWhvbGRlckhlbHAgcCB7XHJcbiAgZm9udC1zaXplOiAxNHB4O1xyXG59XHJcblxyXG4jcGxhY2Vob2xkZXJIZWxwIHNwYW4ge1xyXG4gIG1hcmdpbi1yaWdodDogMC41ZW07XHJcbiAgcGFkZGluZzogMnB4IDRweDtcclxuICBib3JkZXItcmFkaXVzOiAycHg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgY29sb3I6IGJsYWNrO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi5wbGFjZWhvbGRlciBpIHtcclxuICBvcGFjaXR5OiAwLjU7XHJcbiAgbWFyZ2luOiAwIDJweDtcclxuICBmb250LXN0eWxlOiBub3JtYWw7XHJcbn1cclxuXHJcbi5wbGFjZWhvbGRlcjpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4ucGxhY2Vob2xkZXItY29waWVkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjtcclxuICBwYWRkaW5nOiAwLjI1ZW07XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgbWFyZ2luLXRvcDogMC41ZW07XHJcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG59XHJcblxyXG4jcmVhZE9ubHkge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNFNTk5MDA7XHJcbiAgcGFkZGluZzogMC41ZW0gMWVtO1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICBtYXJnaW4tYm90dG9tOiAxZW07XHJcbn0iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiXX0= */\"","import { Component, OnInit, ViewEncapsulation, HostListener, Inject } from '@angular/core';\r\nimport { FormGroup, FormBuilder } from '@angular/forms'\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { Meta, Title } from '@angular/platform-browser';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Angular2PromiseButtonModule } from 'angular2-promise-buttons/dist';\r\n\r\nimport { QuestionService } from '../utilities/services/question.service';\r\nimport { QuestionControlService } from '../utilities/services/question-control.service';\r\nimport { MemberService } from '../utilities/services/member.service';\r\nimport { LoaderService } from '../utilities/services/loader.service';\r\n\r\nimport { UniquePipe } from 'ngx-pipes';\r\nimport { Constants } from 'app/utilities/constants/constants';\r\n\r\n@Component({\r\n templateUrl: './data-collection.component.html',\r\n styleUrls: ['./data-collection.component.scss'],\r\n encapsulation: ViewEncapsulation.None, // Button spinner (child-elements)\r\n})\r\nexport class DataCollectionComponent implements OnInit {\r\n questions; contextQuestions;\r\n submissionDetails; currentQuestionGroup;\r\n outerForm: FormGroup;\r\n windowHeight: number = window.innerHeight - 300;\r\n\r\n type: string; submissionId: number; projectId: number; year: number; serviceItemId: number; \r\n caseNoteReviewCode: string; selectedCaseCodeId: number; caseNoteParam: boolean;\r\n cnr = []; page; year_half;\r\n questionGroups: any;\r\n questionTotal = []; questionTotalCount: number;\r\n\r\n dataReliabilityCode: boolean;\r\n nacelError: boolean = false;\r\n nacelErrors = [];\r\n\r\n qualificationAnswered: boolean = false;\r\n peerGroupId; conditionTypeId;\r\n parentQuestions = [];\r\n\r\n currentQuestionGroupSequence;\r\n upperQuestionGroups;\r\n lowerQuestionGroups;\r\n questionsOpen: boolean;\r\n noQuestions: boolean = false;\r\n\r\n linkedQuestion;\r\n\r\n // Question edit (Active Admin)\r\n adminOnly: boolean = false;\r\n isAdmin: boolean;\r\n questionForm: FormGroup;\r\n editingQuestionSelection: any;\r\n editingQuestion: boolean = false;\r\n modifierType: string;\r\n placeholderHelp: boolean = false;\r\n placeholders = Constants.placeholders;\r\n shortYear: number;\r\n copiedMessage: string;\r\n questionsEdited: number = 0;\r\n updatedOuterForm: boolean = false;\r\n\r\n metaTitle: string = 'Data Collection | NHS Benchmarking Network';\r\n\r\n processLoading: boolean = false;\r\n\r\n constructor(\r\n private memberService: MemberService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private questionService: QuestionService,\r\n private questionControlService: QuestionControlService,\r\n private fb: FormBuilder,\r\n private toastr: ToastrService,\r\n public unique: UniquePipe,\r\n private newSpinner: Angular2PromiseButtonModule, // Button spinner\r\n public loaderService: LoaderService, // Loader\r\n private httpService: HttpClient, // Loader\r\n private titleService: Title, // Set page titles\r\n private meta: Meta,\r\n ) {\r\n this.type = this.route.snapshot.paramMap.get('type');\r\n this.year = +this.route.snapshot.paramMap.get('year');\r\n this.submissionId = +this.route.snapshot.paramMap.get('submissionId');\r\n this.page = this.route.snapshot.queryParams['page'];\r\n this.year_half = this.route.snapshot.queryParams['year_half'];\r\n\r\n if (this.route.snapshot.paramMap.get('serviceItemId')) {\r\n this.serviceItemId = +this.route.snapshot.paramMap.get('serviceItemId');\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n window.scrollTo(0, 0);\r\n this.titleService.setTitle(this.metaTitle);\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n this.getSubmissionDetails();\r\n }\r\n\r\n getSubmissionDetails() {\r\n this.memberService.SubmissionDetails(this.submissionId, this.serviceItemId).subscribe(\r\n d => {\r\n this.submissionDetails = d.data;\r\n this.projectId = d.data.projectId;\r\n\r\n if (this.type == 'd') {\r\n this.type = 'c'\r\n this.dataReliabilityCode = true;\r\n }\r\n \r\n this.getQuestionGroups(d.data.projectId, this.year, this.type, this.submissionId, this.serviceItemId);\r\n },\r\n e => {\r\n if (e.error.error.message.includes('does not have sufficient roles')) {\r\n this.toastr.error('You do not have sufficient permissions to respond to this data collection.');\r\n this.router.navigate(['/home']);\r\n };\r\n }\r\n );\r\n }\r\n\r\n getQuestionGroups(projectId: number, year: number, type: string, submissionId?: number, serviceItemId?: number) {\r\n this.memberService.QuestionGroups(projectId, year, type, submissionId, serviceItemId).subscribe(\r\n d => {\r\n let peerGroupId = this.submissionDetails.registrationPeerGroupId ? this.submissionDetails.registrationPeerGroupId : null;\r\n let allGroups = d.data;\r\n let questionGroups = [];\r\n allGroups.forEach(g => {\r\n // Condition Type 7: Remove question groups based on peer group ID\r\n if (g.conditionType !== 7 || (g.conditionType === 7 && peerGroupId >= g.conditionMin && peerGroupId <= g.conditionMax)) {\r\n questionGroups.push(g)\r\n }\r\n // Condition Type 8: Remove question groups based on organisation type ID\r\n let organisationTypeId = this.submissionDetails.organisationTypeId || null;\r\n if (g.conditionType == 8 && organisationTypeId !== g.conditionMin) {\r\n questionGroups = questionGroups.filter(grp => grp.conditionType !== 8);\r\n }\r\n });\r\n\r\n // Set question groups and remove any that should not show\r\n this.questionGroups = questionGroups.filter(q => q.conditionValue !== 'N');\r\n\r\n if (this.questionGroups.length) {\r\n this.currentQuestionGroup = this.questionGroups[0].groupId;\r\n this.currentQuestionGroupSequence = this.questionGroups[0].displaySequence;\r\n this.questionsOpen = true;\r\n \r\n if (type == 'cac' || type == 'cmh') {\r\n this.getCNR(projectId, submissionId, type);\r\n }\r\n else {\r\n // Set group if in param\r\n if (this.route.snapshot.queryParams['group']) {\r\n let currentGroup = +this.route.snapshot.queryParams['group'];\r\n this.route.fragment.subscribe((fragment: string) => {\r\n this.linkedQuestion = fragment;\r\n })\r\n // Checks group exists in questionGroups\r\n if (this.questionGroups.map(q => q.groupId).indexOf(currentGroup) > -1) {\r\n this.currentQuestionGroup = currentGroup;\r\n this.currentQuestionGroupSequence = this.questionGroups.filter(g => g.groupId === currentGroup)[0].displaySequence;\r\n this.getQuestions(projectId, submissionId, currentGroup, serviceItemId);\r\n } else {\r\n this.toastr.error('This question group does not exist.');\r\n this.router.navigate(['/project-overview', projectId], { queryParams: { submission: this.submissionId, service: this.serviceItemId, page: this.page } });\r\n }\r\n } else {\r\n this.currentQuestionGroupSequence = this.questionGroups[0].displaySequence;\r\n this.getQuestions(projectId, submissionId, this.questionGroups[0].groupId, serviceItemId);\r\n }\r\n }\r\n \r\n // Set upper and lower groups for ordering\r\n this.upperQuestionGroups = this.questionGroups.filter(g => g.displaySequence <= this.currentQuestionGroupSequence);\r\n this.lowerQuestionGroups = this.questionGroups.filter(g => g.displaySequence > this.currentQuestionGroupSequence);\r\n } else {\r\n this.noQuestions = true;\r\n }\r\n\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n );\r\n }\r\n\r\n getCNR(projectId: number, submissionId: number, type: string) {\r\n this.cnr = [];\r\n this.memberService.CNRCodes(submissionId).subscribe(\r\n d => {\r\n if (!this.dataReliabilityCode) {\r\n this.cnr = d.data.caseNoteCodes;\r\n }\r\n else {\r\n this.cnr = d.data.reliabilityCaseCodes;\r\n }\r\n\r\n if (this.route.snapshot.queryParams['case']) {\r\n this.caseNoteReviewCode = this.route.snapshot.queryParams['case'];\r\n this.caseNoteParam = true;\r\n } else {\r\n this.caseNoteReviewCode = this.cnr[0].caseCode;\r\n }\r\n\r\n this.selectedCaseCodeId = this.cnr.filter(c => c.caseCode === this.caseNoteReviewCode)[0].caseCodeId;\r\n\r\n // Set group if in param\r\n if (this.route.snapshot.queryParams['group']) {\r\n let currentGroup = this.route.snapshot.queryParams['group'];\r\n this.currentQuestionGroup = currentGroup;\r\n this.getQuestions(projectId, submissionId, currentGroup, null, this.caseNoteReviewCode);\r\n } else {\r\n this.getQuestions(projectId, submissionId, this.questionGroups[0].groupId, this.serviceItemId, this.caseNoteReviewCode);\r\n }\r\n }\r\n )\r\n }\r\n\r\n getQuestions(projectId: number, submissionId: number, groupId: number, serviceItemId?: number, caseNoteReviewCode?: string) {\r\n this.memberService.Questions(projectId, submissionId, groupId, serviceItemId, caseNoteReviewCode).subscribe(\r\n d => {\r\n this.questions = this.questionService.getQuestionDetails(d.data);\r\n this.contextQuestions = d.data.questions.map(q => { return { questionId: q.questionId, questionText: q.questionText } });\r\n\r\n // Active Admin overrides\r\n let currentDate = new Date();\r\n let currentYear = currentDate.getFullYear();\r\n this.shortYear = +this.year.toString().slice(-2);\r\n\r\n this.memberService.User().subscribe(\r\n success => {\r\n let user = success.data;\r\n\r\n // Question editing (current year)\r\n if (user) {\r\n if ((this.year === currentYear || this.year + 1 === currentYear) && user.isAdmin === 'Y') {\r\n this.isAdmin = true;\r\n } else {\r\n this.isAdmin = false\r\n }\r\n }\r\n\r\n // let calculatedMonth = new Date().getMonth();\r\n\r\n // Read-only override\r\n let readOnly\r\n // if(this.year_half == 1 && calculatedMonth <= 5 && this.projectId == 34) {\r\n // readOnly = 'N';\r\n // d.data.readOnly = readOnly;\r\n // } else if(this.year_half == 2 && calculatedMonth > 5 && this.projectId == 34) {\r\n // readOnly = 'N';\r\n // d.data.readOnly = readOnly;\r\n // } else if(this.projectId == 34 && this.year_half) {\r\n // readOnly = 'Y';\r\n // d.data.readOnly = readOnly;\r\n // } else {\r\n // readOnly = d.data.readOnly;\r\n // }\r\n\r\n readOnly = d.data.readOnly;\r\n\r\n\r\n if (readOnly === 'Y' && user.isAdmin === 'Y') {\r\n this.adminOnly = true;\r\n } else {\r\n this.adminOnly = false\r\n }\r\n\r\n },\r\n error => {\r\n console.log(error);\r\n },\r\n () => {\r\n if (this.type === 'h') {\r\n let qualification = this.questions.question.filter(q => q.questionResponseType);\r\n let noQuestions = this.questions.questionCount;\r\n let noResponses = qualification.filter(q => q.responses[0].value).length;\r\n \r\n if (noQuestions === noResponses) {\r\n // All qualifications questions ('H') answered? If so, disable\r\n this.qualificationAnswered = true;\r\n this.outerForm = this.questionControlService.toFormGroup(this.questions.question, 'Y');\r\n } \r\n else {\r\n this.outerForm = this.questionControlService.toFormGroup(this.questions.question, d.data.readOnly);\r\n }\r\n }\r\n else {\r\n this.outerForm = this.questionControlService.toFormGroup(this.questions.question, d.data.readOnly);\r\n this.questionsOpen = true;\r\n // this.scrollToElement(this.currentQuestionGroup);\r\n }\r\n\r\n this.planDoValidation = false;\r\n // NACEL date/time validation\r\n let currentQuestionGroup = this.questionGroups.filter(g => g.groupId == this.currentQuestionGroup)[0];\r\n // Plan & do 1\r\n if(currentQuestionGroup.groupId == 1421 || currentQuestionGroup.groupId == 1820) {\r\n this.planDoValidation = true;\r\n }\r\n if (currentQuestionGroup && currentQuestionGroup.conditionType) {\r\n this.conditionTypeId = currentQuestionGroup.conditionType;\r\n } else {\r\n this.conditionTypeId = 0;\r\n }\r\n if (this.conditionTypeId === 6) {\r\n this.peerGroupId = this.submissionDetails.registrationPeerGroupId;\r\n }\r\n this.updatedOuterForm = true;\r\n }\r\n )\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n );\r\n }\r\n planDoValidation: boolean = false;\r\n saveQuestionData(questionData, submissionId: number, serviceItemId: number, caseNoteReviewCode?: string) {\r\n this.memberService.SaveQuestionData(questionData, submissionId, serviceItemId, caseNoteReviewCode).subscribe(\r\n s => {\r\n if (s[\"success\"]) {\r\n //this.toastr.success('Data has saved successfully', 'Data Collection');\r\n this.outerForm.markAsPristine();\r\n }\r\n this.processLoading = false;\r\n }, \r\n e => {\r\n this.toastr.error('There has been an issue trying to save the data, please contact the project co-ordinator. (In the help button at the top left of the screen.)', 'Data Collection');\r\n this.processLoading = false;\r\n }\r\n );\r\n }\r\n\r\n changeGroup(groupId: number, groupName: string) {\r\n this.nacelErrors = [];\r\n this.parentQuestions = [];\r\n this.updatedOuterForm = false;\r\n if (this.outerForm.dirty) {\r\n if (confirm(\"You may have unsaved changes. Click 'OK' if you are happy to continue without saving.\")) {\r\n this.loadQuestions(groupId)\r\n }\r\n } else {\r\n this.loadQuestions(groupId)\r\n }\r\n // Set upper and lower groups for ordering\r\n this.questionsOpen = true;\r\n this.currentQuestionGroupSequence = this.questionGroups.filter(g => g.groupId === groupId)[0].displaySequence;\r\n this.upperQuestionGroups = this.questionGroups.filter(g => g.displaySequence <= this.currentQuestionGroupSequence);\r\n this.lowerQuestionGroups = this.questionGroups.filter(g => g.displaySequence > this.currentQuestionGroupSequence);\r\n }\r\n\r\n loadQuestions(groupId: number) {\r\n this.currentQuestionGroup = groupId;\r\n this.questions = [];\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n queryParams: { group: groupId }, queryParamsHandling: 'merge'\r\n });\r\n this.getQuestions(this.projectId, this.submissionId, groupId, this.serviceItemId, this.caseNoteReviewCode);\r\n }\r\n\r\n cnrSelectionChange(caseCodeId: number) {\r\n this.selectedCaseCodeId = caseCodeId;\r\n this.caseNoteReviewCode = this.cnr.find(c => c.caseCodeId == caseCodeId).caseCode;\r\n this.currentQuestionGroup = this.questionGroups[0].groupName;\r\n this.questions = [];\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n queryParams: { case: this.caseNoteReviewCode }, queryParamsHandling: 'merge'\r\n });\r\n this.getQuestions(this.projectId, this.submissionId, this.questionGroups[0].groupId, null, this.caseNoteReviewCode);\r\n }\r\n\r\n navProjectOverview(projectId) {\r\n if (this.outerForm && this.outerForm.dirty) {\r\n if (confirm(\"You may have unsaved changes. Click 'OK' if you are happy to continue without saving.\")) {\r\n this.router.navigate(['/project-overview', projectId], { queryParams: { submission: this.submissionId, service: this.serviceItemId, page: this.page } });\r\n }\r\n }\r\n else {\r\n this.router.navigate(['/project-overview', projectId], { queryParams: { submission: this.submissionId, service: this.serviceItemId, page: this.page } });\r\n }\r\n }\r\n \r\n questionCounts(question: string) {\r\n let questionParts = question.split('.');\r\n\r\n if (questionParts[1] == 'add' && this.questionTotal.indexOf(questionParts[0]) == -1) {\r\n this.questionTotal.push(questionParts[0]);\r\n }\r\n else if (questionParts[1] == 'remove' && this.questionTotal.indexOf(questionParts[0]) != -1) {\r\n this.questionTotal.splice(this.questionTotal.indexOf(questionParts[0]), 1);\r\n }\r\n else if (questionParts[1] == 'reset') {\r\n this.questionTotal = [];\r\n }\r\n\r\n this.questionCount();\r\n }\r\n\r\n questionCount() {\r\n let uniqueList: Set = new Set(this.questionTotal.map(a => a.split('-')[0]));\r\n\r\n this.questionTotalCount = uniqueList.size;\r\n\r\n // Counts how many changes have been made to the inputs\r\n if(this.outerForm.dirty) {\r\n this.questionsEdited++;\r\n } \r\n\r\n // Auto-save when the User has made 100 changes to the questions.\r\n if(this.questionsEdited == 100 && this.outerForm.dirty) {\r\n this.onSubmit();\r\n this.questionsEdited = 0;\r\n this.toastr.success(\"Progress has been saved.\");\r\n }\r\n }\r\n\r\n questionTotals() {\r\n this.questions.questionCount--;\r\n }\r\n\r\n datesTimesError(event, message) {\r\n this.nacelError = event;\r\n }\r\n\r\n nacelValidations(event) {\r\n this.nacelErrors = event;\r\n }\r\n\r\n parentChange(event) {\r\n let questionId = event.question.questionId,\r\n questionText = event.question.questionText,\r\n serviceItemId = this.serviceItemId || 0,\r\n caseCodeId;\r\n \r\n if (this.selectedCaseCodeId) {\r\n caseCodeId = this.selectedCaseCodeId\r\n }\r\n\r\n if (event.existingValue !== event.changedValue) {\r\n this.memberService.childResponseCount(questionId, this.submissionId, serviceItemId, caseCodeId).subscribe(\r\n r => { \r\n if (r.data.parentQuestions[0] && r.data.parentQuestions[0].responseCount > 0) {\r\n this.parentQuestions.push({\r\n questionId: questionId,\r\n questionText: questionText\r\n });\r\n this.parentQuestions = this.unique.transform(this.parentQuestions);\r\n }\r\n },\r\n e => { \r\n console.log(e) \r\n }\r\n )\r\n } else if (event.existingValue === event.changedValue) {\r\n this.parentQuestions = this.parentQuestions.filter(p => p.questionText !== questionText); \r\n }\r\n }\r\n\r\n onSubmit() {\r\n if(this.processLoading) return;\r\n\r\n this.processLoading = true;\r\n let saveData = [];\r\n\r\n Object.keys(this.outerForm.controls).forEach(key => {\r\n let currentControl = this.outerForm.controls[key];\r\n\r\n if (currentControl.dirty) {\r\n let detail = key.split('-');\r\n\r\n //Remove time from date to prevent issues with locality\r\n if (detail[2] == 'date') {\r\n let date = currentControl.value;\r\n let dateArray = date ? date.toString().split(\" \") : null;\r\n let dateValue = date ? (dateArray[2] + \" \" + dateArray[1] + \" \" + dateArray[3]) : null; \r\n\r\n saveData.push({ questionId: detail[0], questionPart: detail[1], questionType: detail[2], value: dateValue })\r\n }\r\n else {\r\n saveData.push({ questionId: detail[0], questionPart: detail[1], questionType: detail[2], value: currentControl.value })\r\n } \r\n }\r\n });\r\n\r\n if (saveData.length > 0) { \r\n this.saveQuestionData(saveData, this.submissionId, this.serviceItemId, this.caseNoteReviewCode);\r\n }\r\n\r\n // Purge condition type 2 responses\r\n let questionData = {\r\n parentIds: this.parentQuestions.map(p => p.questionId),\r\n submissionId: this.submissionId,\r\n serviceItemId: this.serviceItemId || 0\r\n }\r\n\r\n if (this.selectedCaseCodeId) {\r\n questionData['caseCodeId'] = this.selectedCaseCodeId;\r\n }\r\n\r\n if (this.parentQuestions.length) {\r\n this.memberService.purgeResponsesForParent(questionData).subscribe(\r\n r => { console.log('Responses to conditional questions have been removed.') },\r\n e => { console.log(e) }\r\n )\r\n }\r\n\r\n this.parentQuestions = [];\r\n \r\n // New spinner\r\n this.newSpinner = new Promise((resolve, reject) => {\r\n setTimeout(resolve, 2000);\r\n });\r\n }\r\n\r\n scrollToElement(element) {\r\n let group = document.getElementById(this.currentQuestionGroup);\r\n group.scrollIntoView({behavior: \"smooth\", block: \"start\", inline: \"start\"});\r\n }\r\n\r\n closeGroup() {\r\n this.questionsOpen = false;\r\n this.currentQuestionGroup = null;\r\n this.currentQuestionGroupSequence = null;\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n queryParams: { group: null }, queryParamsHandling: 'merge'\r\n });\r\n }\r\n\r\n // Question editing (Active Admin)\r\n\r\n editQuestion(event) {\r\n this.modifierType = event.modifierType;\r\n this.buildQuestionEditForm(event.modifierType);\r\n \r\n if (event.modifierType.includes('popup')) {\r\n this.questionForm.setValue({\r\n questionId: event.questionId,\r\n questionText: event.rawQuestionText,\r\n questionHelp: event.questionHelp,\r\n rangeMin: event.rangeMin || null,\r\n rangeMax: event.rangeMax || null,\r\n decPlaces: event.decimalPlaces || null,\r\n formatModifier: event.formatModifier,\r\n parentQuestionId: event.parentQuestionId || \"\",\r\n dataDefinition: event.dataDefinition || \"\"\r\n });\r\n } else {\r\n this.questionForm.setValue({\r\n questionId: event.questionId,\r\n questionPrefix: event.questionPrefix,\r\n questionText: event.rawQuestionText,\r\n questionHelp: event.questionHelp,\r\n rangeMin: event.rangeMin || null,\r\n rangeMax: event.rangeMax || null,\r\n decPlaces: event.decimalPlaces || null,\r\n formatModifier: event.formatModifier,\r\n parentQuestionId: event.parentQuestionId || \"\",\r\n dataDefinition: event.dataDefinition || \"\"\r\n });\r\n }\r\n\r\n this.editingQuestionSelection = event;\r\n this.editingQuestion = true;\r\n }\r\n\r\n buildQuestionEditForm(type) {\r\n if (type.includes('popup')) {\r\n this.questionForm = this.fb.group({ \r\n questionId: ['', []],\r\n questionText: ['', []],\r\n questionHelp: ['', []],\r\n rangeMin: ['', []],\r\n rangeMax: ['', []],\r\n decPlaces: ['', []],\r\n formatModifier: ['', []],\r\n parentQuestionId: ['', []],\r\n dataDefinition: ['', []]\r\n });\r\n } else {\r\n this.questionForm = this.fb.group({ \r\n questionId: ['', []],\r\n questionPrefix: ['', []],\r\n questionText: ['', []],\r\n questionHelp: ['', []],\r\n rangeMin: ['', []],\r\n rangeMax: ['', []],\r\n decPlaces: ['', []],\r\n formatModifier: ['', []],\r\n parentQuestionId: ['', []],\r\n dataDefinition: ['', []]\r\n // showHeadings: ['', []],\r\n });\r\n }\r\n }\r\n\r\n submitForm() {\r\n \r\n let parentId;\r\n if (this.questionForm.value.parentQuestionId === \"\") {\r\n parentId = null;\r\n } else {\r\n parentId = this.questionForm.value.parentQuestionId;\r\n }\r\n\r\n let newQuestion = {\r\n questionId: this.questionForm.value.questionId,\r\n questionPrefix: this.questionForm.value.questionPrefix,\r\n questionText: this.questionForm.value.questionText,\r\n questionHelp: this.questionForm.value.questionHelp,\r\n rangeMin: this.questionForm.value.rangeMin,\r\n rangeMax: this.questionForm.value.rangeMax,\r\n decPlaces: this.questionForm.value.decPlaces,\r\n formatModifier: this.questionForm.value.formatModifier,\r\n parentQuestionId: parentId,\r\n dataDefinition: this.questionForm.value.dataDefinition\r\n };\r\n this.memberService.modifyQuestion(newQuestion).subscribe(\r\n r => {\r\n this.editingQuestion = false;\r\n this.loadQuestions(this.currentQuestionGroup);\r\n this.toastr.success(\"The question details have been successfully updated.\");\r\n },\r\n e => {\r\n console.log(e);\r\n this.toastr.error(\"There has been an error whilst trying to edit the question details. Please discuss with IT Team.\");\r\n }\r\n );\r\n }\r\n\r\n copyToClipboard(id: string) {\r\n var range = document.createRange();\r\n range.selectNode(document.getElementById(id));\r\n window.getSelection().removeAllRanges();\r\n window.getSelection().addRange(range);\r\n document.execCommand('copy');\r\n window.getSelection().removeAllRanges();\r\n this.copiedMessage = 'Copied to clipboard'\r\n }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { Angular2PromiseButtonModule } from 'angular2-promise-buttons/dist';\r\nimport { CustomFormsModule } from 'ng2-validation'\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { TabsModule, PopoverModule, AccordionModule, BsDatepickerModule } from 'ngx-bootstrap';\r\nimport { ResponsiveModule } from 'ngx-responsive';\r\n\r\nimport { DataCollectionComponent } from './data-collection.component';\r\nimport { DataCollectionRoutingModule } from './data-collection-routing.module';\r\nimport { DynamicSurveyComponent } from './dynamic-survey/dynamic-survey.component';\r\n\r\nimport { QuestionService } from '../utilities/services/question.service';\r\nimport { QuestionControlService } from '../utilities/services/question-control.service';\r\nimport { SafePipeModule } from '../utilities/pipes/safe-pipe.module'\r\nimport { OnlyNumber } from '../utilities/directives/only-number'\r\n\r\n@NgModule({\r\n imports: [ \r\n CommonModule,\r\n CustomFormsModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n ToastrModule.forRoot({\r\n timeOut: 5000,\r\n preventDuplicates: true\r\n }),\r\n AccordionModule.forRoot(),\r\n TabsModule.forRoot(),\r\n PopoverModule.forRoot(),\r\n BsDatepickerModule.forRoot(),\r\n Angular2PromiseButtonModule.forRoot({\r\n spinnerTpl: '',\r\n disableBtn: true, \r\n btnLoadingClass: 'is-loading',\r\n handleCurrentBtnOnly: false\r\n }),\r\n SafePipeModule,\r\n DataCollectionRoutingModule,\r\n ResponsiveModule\r\n ],\r\n providers: [ \r\n QuestionService,\r\n QuestionControlService \r\n ],\r\n declarations: [ \r\n DataCollectionComponent, \r\n DynamicSurveyComponent,\r\n OnlyNumber\r\n ]\r\n})\r\nexport class DataCollectionModule {}","module.exports = \"
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n ?\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{ conditionalQuestionWarning }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n Text questions have a max length of 4000 characters.\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n ?\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{ conditionalQuestionWarning }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n This question has a minimum date value of {{question.rangeMin}}, please enter a date after this time.\\r\\n
\\r\\n\\r\\n
\\r\\n This question has a maximum date value of {{question.rangeMax}}, please enter a date before this time.\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n ?\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{ conditionalQuestionWarning }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n The format for this question is HH:MM. The answer requires : e.g. 17:00.\\r\\n
\\r\\n
\\r\\n
\\r\\n ?\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{ conditionalQuestionWarning }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
0 && question.showHeadings == 'Y'\\\" class=\\\"column-heading\\\">\\r\\n {{question.questionHeading[i]?.headingText || '-'}}\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n The format for this question is HH:MM. The answer requires : e.g. 17:00.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ?\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{ conditionalQuestionWarning }}\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n ?\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ?\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
0 && question.showHeadings == 'Y'\\\" class=\\\"column-heading\\\">\\r\\n {{question.questionHeading[i]?.headingText || '-'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ?\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{ conditionalQuestionWarning }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
0 && question.showHeadings == 'Y'\\\" class=\\\"column-heading\\\">\\r\\n {{question.questionHeading[0]?.headingText || '-'}}\\r\\n
\\r\\n\\r\\n
\\r\\n £\\r\\n \\r\\n %\\r\\n
\\r\\n\\r\\n
\\r\\n {{minValueText}} ({{question.rangeMin}})\\r\\n
\\r\\n
\\r\\n {{maxValueText}} ({{question.rangeMax}})\\r\\n
\\r\\n
\\r\\n {{decimalText}} ({{question.decimalPlaces == null ? 10 : question.decimalPlaces}})\\r\\n
\\r\\n
\\r\\n
\\r\\n ?\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{ conditionalQuestionWarning }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
0 && question.showHeadings == 'Y'\\\" class=\\\"column-heading -hidden\\\">-
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
0 && question.showHeadings == 'Y'\\\" class=\\\"column-heading\\\">\\r\\n {{question.questionHeading[i]?.headingText || '-'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n |\\r\\n
\\r\\n £\\r\\n \\r\\n %\\r\\n
\\r\\n\\r\\n
\\r\\n {{minValueText}} ({{question.rangeMin}})\\r\\n
\\r\\n
\\r\\n {{maxValueText}} ({{question.rangeMax}})\\r\\n
\\r\\n
\\r\\n {{decimalText}} ({{question.decimalPlaces == null ? 10 : question.decimalPlaces}})\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ?\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n This group has been disabled due to an answer given for a previous question.\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n ?\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
0 && question.showHeadings == 'Y'\\\" class=\\\"column-heading\\\">\\r\\n {{question.questionHeading[0]?.headingText || '-'}}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n

{{question.popupDescriptionText}}

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
0 && popup.showHeadings == 'Y'\\\" class=\\\"column-heading\\\">\\r\\n {{popup.headings[0]?.headingText || '-'}}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n £\\r\\n \\r\\n %\\r\\n
\\r\\n\\r\\n
\\r\\n {{minValueText}} ({{popup.rangeMin}})\\r\\n
\\r\\n
\\r\\n {{maxValueText}} ({{popup.rangeMax}})\\r\\n
\\r\\n
\\r\\n {{decimalText}} ({{popup.decimalPlaces == null ? 10 : popup.decimalPlaces}})\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n This question has a minimum date value of {{ projectId === 34 ? '01/04/2019' : popup.rangeMin | date:'shortDate'}}, please enter a date after this time.\\r\\n
\\r\\n\\r\\n
\\r\\n This question has a maximum date value of {{ projectId === 34 ? '31/05/2019' : popup.rangeMax | date:'shortDate'}}, please enter a date before this time.\\r\\n
\\r\\n\\r\\n
\\r\\n {{ dateOutOfBounds1 }}\\r\\n
\\r\\n\\r\\n
\\r\\n {{ dateOutOfBounds2 }}\\r\\n
\\r\\n\\r\\n
\\r\\n {{ dateOutOfBounds3 }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n The format for this question is HH:MM. The answer requires : e.g. 17:00.\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n ?\\r\\n
\\r\\n\\r\\n
0\\\">\\r\\n
\\r\\n
{{ d }}
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
0 && popup.showHeadings == 'Y'\\\" class=\\\"column-heading\\\">\\r\\n {{popup.headings[0]?.headingText || '-'}}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
0 && popup.showHeadings == 'Y'\\\" class=\\\"column-heading\\\">\\r\\n {{popup.headings[1]?.headingText || '-'}}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n ?\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
0 && popup.showHeadings == 'Y'\\\" class=\\\"column-heading -hidden\\\">-
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
0 && popup.showHeadings == 'Y'\\\" class=\\\"column-heading\\\">\\r\\n {{popup.headings[0]?.headingText || '-'}}\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n The format for this question is HH:MM. The answer requires : e.g. 17:00.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
0 && popup.showHeadings == 'Y'\\\" class=\\\"column-heading\\\">\\r\\n {{popup.headings[1]?.headingText || '-'}}\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n The format for this question is HH:MM. The answer requires : e.g. 17:00.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ?\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
0 && popup.showHeadings == 'Y'\\\" class=\\\"column-heading -hidden\\\">-
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
0 && popup.showHeadings == 'Y'\\\" class=\\\"column-heading\\\">\\r\\n {{popup.headings[0]?.headingText || '-'}}\\r\\n
\\r\\n\\r\\n
\\r\\n £\\r\\n \\r\\n %\\r\\n
\\r\\n\\r\\n
\\r\\n {{minValueText}} ({{popup.rangeMin}})\\r\\n
\\r\\n
\\r\\n {{maxValueText}} ({{popup.rangeMax}})\\r\\n
\\r\\n
\\r\\n {{decimalText}} ({{popup.decimalPlaces == null ? 10 : popup.decimalPlaces}})\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
0 && popup.showHeadings == 'Y'\\\" class=\\\"column-heading\\\">\\r\\n {{popup.headings[1]?.headingText || '-'}}\\r\\n
\\r\\n\\r\\n
\\r\\n £\\r\\n \\r\\n %\\r\\n
\\r\\n\\r\\n
\\r\\n {{minValueText}} ({{popup.rangeMin}})\\r\\n
\\r\\n
\\r\\n {{maxValueText}} ({{popup.rangeMax}})\\r\\n
\\r\\n
\\r\\n {{decimalText}} ({{popup.decimalPlaces == null ? 10 : popup.decimalPlaces}})\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ?\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
0 && popup.showHeadings == 'Y'\\\" class=\\\"column-heading\\\">\\r\\n {{popup.headings[j]?.headingText || '-'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
0 && popup.showHeadings == 'Y'\\\" class=\\\"column-heading\\\">\\r\\n {{popup.headings[j]?.headingText || '-'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
0 && popup.showHeadings == 'Y'\\\" class=\\\"column-heading\\\">\\r\\n {{popup.headings[j]?.headingText || '-'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n £\\r\\n \\r\\n %\\r\\n
\\r\\n\\r\\n
\\r\\n {{minValueText}} ({{popup.rangeMin}})\\r\\n
\\r\\n
\\r\\n {{maxValueText}} ({{popup.rangeMax}})\\r\\n
\\r\\n
\\r\\n {{decimalText}} ({{popup.decimalPlaces == null ? 10 : popup.decimalPlaces}})\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n £\\r\\n \\r\\n %\\r\\n
\\r\\n\\r\\n
\\r\\n {{minValueText}} ({{popup.rangeMin}})\\r\\n
\\r\\n
\\r\\n {{maxValueText}} ({{popup.rangeMax}})\\r\\n
\\r\\n
\\r\\n {{decimalText}} ({{popup.decimalPlaces == null ? 10 : popup.decimalPlaces}})\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n £\\r\\n \\r\\n %\\r\\n
\\r\\n\\r\\n
\\r\\n {{minValueText}} ({{popup.rangeMin}})\\r\\n
\\r\\n
\\r\\n {{maxValueText}} ({{popup.rangeMax}})\\r\\n
\\r\\n
\\r\\n {{decimalText}} ({{popup.decimalPlaces == null ? 10 : popup.decimalPlaces}})\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n ?\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n {{ showPopup ? 'hide' : 'show' }} group\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"input[type=number]::-webkit-inner-spin-button,\\ninput[type=number]::-webkit-outer-spin-button {\\n -webkit-appearance: none;\\n margin: 0; }\\n\\ninput[type=number] {\\n -moz-appearance: textfield; }\\n\\n.test-class {\\n padding: 10px;\\n margin: 15px 0;\\n background-color: #ebf1ff; }\\n\\ntextarea {\\n resize: vertical; }\\n\\nlabel {\\n font-weight: 400; }\\n\\n.fullTitle {\\n font-weight: 700;\\n font-size: 1.5em;\\n color: #005EB8; }\\n\\n.boldTitle {\\n font-weight: 700; }\\n\\n.subtotalDivider {\\n margin-bottom: 4em; }\\n\\n.italicTitle {\\n font-style: italic; }\\n\\n.medium {\\n height: 100px;\\n min-height: 100px; }\\n\\n.large {\\n height: 200px;\\n min-height: 200px; }\\n\\n#questionForm .intro {\\n padding: 0 0.4em; }\\n\\n#questionForm .form-group {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em; }\\n\\n#questionForm .form-group .title {\\n font-weight: 500; }\\n\\n#questionForm .question {\\n background-color: #f2f7fb;\\n padding: 1em 0.5em;\\n border-radius: 4px; }\\n\\n.question-mark-help {\\n font-size: 0.75em;\\n font-style: normal;\\n font-weight: bold;\\n padding: 2px 4px;\\n border-radius: 50%;\\n background-color: #768692;\\n color: white; }\\n\\n.question-mark-help:hover {\\n cursor: pointer;\\n background-color: black; }\\n\\n.question-mark-help:focus {\\n outline: none;\\n background-color: black; }\\n\\n.question.-popup {\\n border: 1px solid #768692;\\n background-color: #f2f7fb; }\\n\\n#questionForm .question .control-label {\\n text-align: left;\\n font-weight: 400; }\\n\\n#questionForm .intro label {\\n margin-top: 5px; }\\n\\n.panel {\\n box-shadow: none; }\\n\\n.panel-heading {\\n padding: 0 !important; }\\n\\n.panel-group {\\n margin-bottom: 0px !important; }\\n\\n.popup-hr {\\n margin-top: 15px !important;\\n margin-bottom: 20px !important; }\\n\\n.fa {\\n padding-top: 3px; }\\n\\n.alert {\\n margin-bottom: 0px;\\n margin-top: 0.5em;\\n padding: 0.5em; }\\n\\n.accordion-space {\\n margin-top: 0.5em; }\\n\\n/deep/ .panel-default:not(.panel-login) {\\n background-color: #F2F7FB;\\n border: 2px solid #768692;\\n margin-bottom: 1em; }\\n\\n/deep/ .panel-default:not(.panel-login) > .panel-heading {\\n padding: 0.5em;\\n background-color: #768692;\\n border: 2px solid #768692;\\n color: white;\\n font-weight: 600; }\\n\\n/deep/ .panel-default:not(.panel-login) > .panel-heading i {\\n margin-left: 0.5em; }\\n\\n/deep/ .panel-default:not(.panel-login) .panel-body {\\n padding: 0.5em; }\\n\\n/* LD QUESTIONS */\\n\\n.ld-question {\\n border: 2px dashed #ddd;\\n padding: 4em 2em;\\n margin: 3em 0;\\n background: white;\\n font-size: 18px;\\n color: black; }\\n\\n.ld-question h2 {\\n font-size: 2em;\\n margin-top: 0;\\n font-weight: 700; }\\n\\n.ld-question h3 {\\n font-size: 1.5em;\\n margin-bottom: 2em; }\\n\\n.ld-question-title {\\n text-align: center; }\\n\\n/* Slider and Output */\\n\\n.slider {\\n position: relative;\\n float: left;\\n margin-top: 3em;\\n width: 60%; }\\n\\n.output {\\n position: absolute;\\n font-size: 4em;\\n margin-top: -1.35em; }\\n\\n.fa-icon {\\n position: relative;\\n float: left;\\n font-weight: 600;\\n color: #000;\\n text-align: center;\\n width: 20%;\\n font-size: 1.25em; }\\n\\n.fa-icon span {\\n font-size: 3em;\\n vertical-align: middle;\\n padding: 0 0.25em;\\n margin-bottom: 0.25em; }\\n\\n.fa-sad-tear {\\n color: #4481e3; }\\n\\n.fa-frown {\\n color: #b9b155; }\\n\\n.fa-meh {\\n color: #f4c80d; }\\n\\n.fa-smile {\\n color: #dadd28; }\\n\\n.fa-grin-alt {\\n color: #b4ec50; }\\n\\n/* Range Input */\\n\\n.ld-question input[type=range] {\\n -webkit-appearance: none;\\n background: none; }\\n\\n/* Range Input: Track */\\n\\n.ld-question input[type=range]::-webkit-slider-runnable-track {\\n height: 5px;\\n background: #ddd;\\n border: none;\\n border-radius: 3px; }\\n\\n.ld-question input[type=range]::-ms-track {\\n height: 5px;\\n background: #ddd;\\n border: none;\\n border-radius: 3px;\\n margin: 1.5em 0; }\\n\\n.ld-question input[type=range]::-moz-range-track {\\n height: 5px;\\n background: #ddd;\\n border: none;\\n border-radius: 3px; }\\n\\n/* Range Input: Thumb */\\n\\n.ld-question input[type=range]::-webkit-slider-thumb {\\n -webkit-appearance: none;\\n border: 3px solid white;\\n height: 37px;\\n width: 37px;\\n border-radius: 50%;\\n background: #768691;\\n margin-top: -15px;\\n position: relative;\\n cursor: pointer; }\\n\\n.ld-question input[type=range]::-ms-thumb {\\n -webkit-appearance: none;\\n border: 3px solid white;\\n height: 37px;\\n width: 37px;\\n border-radius: 50%;\\n margin-top: 3px;\\n background: #768691;\\n position: relative;\\n cursor: pointer; }\\n\\n.ld-question input[type=range]::-moz-range-thumb {\\n -webkit-appearance: none;\\n border: 3px solid white;\\n height: 37px;\\n width: 37px;\\n border-radius: 50%;\\n background: #768691;\\n margin-top: -15px;\\n position: relative;\\n cursor: pointer; }\\n\\n/* Range Input: Focus */\\n\\n.ld-question input[type=range]:focus::-webkit-slider-thumb {\\n background: #0d5eb8; }\\n\\n.ld-question input[type=range]:focus::-ms-thumb {\\n background: #0d5eb8; }\\n\\n.ld-question input[type=range]:focus::-moz-range-thumb {\\n background: #0d5eb8; }\\n\\n.ld-question input[type=range]:focus {\\n outline: none; }\\n\\n.ld-question input[type=range]:focus::-webkit-slider-runnable-track {\\n background: #768691; }\\n\\n.ld-question input[type=range]:focus::-ms-track {\\n background: #768691; }\\n\\n.ld-question input[type=range]:focus::-moz-range-track {\\n background: #768691; }\\n\\n/* Yes/No */\\n\\n.btn-input {\\n outline: 0;\\n border: none;\\n border-radius: 10px;\\n font-size: 3em;\\n height: 100px;\\n width: 100px;\\n margin: 0 0.5em;\\n color: black;\\n border: 5px solid #768691; }\\n\\n.ld-question .yes {\\n background: rgba(179, 236, 80, 0.8); }\\n\\n.ld-question .no {\\n background: rgba(241, 135, 135, 0.8); }\\n\\n.btn-input:focus,\\n.btn-input:hover,\\n.btn-img:focus,\\n.btn-img:hover {\\n border: 5px solid black;\\n outline: none;\\n cursor: pointer; }\\n\\n.ld-question .active {\\n background: #0d5eb8;\\n color: white; }\\n\\n.btn-img {\\n width: 150px;\\n height: 150px;\\n background-repeat: no-repeat;\\n background-size: cover;\\n background-position: center;\\n background-color: white;\\n margin: 0 0.5em;\\n border: 5px solid #768691;\\n border-radius: 10px; }\\n\\n.active-img {\\n border: 5px solid #0d5eb8; }\\n\\n.active-img::after {\\n content: \\\"\\\";\\n position: relative;\\n display: block;\\n top: -75;\\n right: -120;\\n width: 30px;\\n height: 30px;\\n border-radius: 50%;\\n background: #0d5eb8; }\\n\\n.condition-disabled {\\n background-color: #FBFBFB !important;\\n border: 1px solid #EEEEEE; }\\n\\n.condition-hidden {\\n display: none !important; }\\n\\n.condition-disabled label {\\n color: #555555; }\\n\\n.datesTimesErrors {\\n position: fixed;\\n width: 50%;\\n right: 1em;\\n bottom: 1em;\\n background-color: red;\\n font-weight: 600;\\n color: white;\\n padding: 1em;\\n border-radius: 5px;\\n z-index: 10000;\\n font-size: 17px;\\n line-height: 20px; }\\n\\n.row-autosum {\\n margin-top: 0.5em;\\n padding-top: 0.5em !important;\\n border-top-style: double;\\n border-top-color: #768692; }\\n\\n.popup-title {\\n font-size: 17px;\\n font-weight: 600; }\\n\\n.popup-question {\\n padding-top: 2px;\\n padding-bottom: 2px; }\\n\\n.description-text {\\n color: #768692;\\n margin-bottom: 0.5em; }\\n\\n.show-hide {\\n text-align: center;\\n margin-top: -0.5em;\\n margin-bottom: 1em; }\\n\\n.show-hide div {\\n text-transform: uppercase;\\n font-size: 11px;\\n font-weight: 600;\\n background-color: #768692;\\n color: white;\\n letter-spacing: 0.5px;\\n padding: 3px;\\n display: inline-block;\\n text-align: center;\\n width: 200px;\\n outline: 1px solid #768692; }\\n\\n.show-hide span {\\n margin-right: 0.5em; }\\n\\n.show-hide div:hover {\\n color: black;\\n cursor: pointer; }\\n\\n.column-heading {\\n font-weight: 600;\\n text-align: center;\\n margin-bottom: 0.5em;\\n color: #768692; }\\n\\n.column-heading.-hidden {\\n visibility: hidden;\\n margin-bottom: 0; }\\n\\n.hint.-support {\\n margin-left: 0;\\n margin-right: 0em;\\n margin-top: 0.5em;\\n border-radius: 0;\\n background-color: #8A1538;\\n color: white; }\\n\\n.-popup-disabled {\\n display: none; }\\n\\n.disabled-popup {\\n background-color: #FBFBFB !important;\\n color: #555555 !important; }\\n\\n.disabled-popup > .-popup-disabled,\\n.popup-disabled {\\n display: block;\\n padding: 0.5em 1.5em;\\n font-weight: 500;\\n margin-top: -1em;\\n margin-bottom: 1em;\\n margin-left: -0.5em;\\n margin-right: -0.5em;\\n border-top-left-radius: 4px;\\n border-top-right-radius: 4px;\\n background-color: #EEEEEE;\\n color: black;\\n border: 1px solid #EEEEEE; }\\n\\n.admin-edit {\\n margin-left: 0.5em;\\n color: #FDBC30; }\\n\\n.admin-edit:hover {\\n color: black;\\n cursor: pointer; }\\n\\n.linked-question {\\n background-color: rgba(253, 188, 48, 0.5) !important; }\\n\\n.import {\\n padding-top: 0.25em;\\n font-size: 0.75em;\\n color: #654F28;\\n font-weight: bold; }\\n\\n.import i {\\n margin-right: 0.25em; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZGF0YS1jb2xsZWN0aW9uL2R5bmFtaWMtc3VydmV5L0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxhcHBcXGRhdGEtY29sbGVjdGlvblxcZHluYW1pYy1zdXJ2ZXlcXGR5bmFtaWMtc3VydmV5LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9kYXRhLWNvbGxlY3Rpb24vZHluYW1pYy1zdXJ2ZXkvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7RUFFRSx3QkFBd0I7RUFDeEIsU0FBUyxFQUFBOztBQUdYO0VBQ0UsMEJBQXlCLEVBQUE7O0FBRzNCO0VBQ0UsYUFBYTtFQUNiLGNBQWM7RUFDZCx5QkFBcUMsRUFBQTs7QUFHdkM7RUFDRSxnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxnQkFBZ0I7RUFDaEIsZ0JBQWdCO0VBQ2hCLGNDMUJnQixFQUFBOztBRDZCbEI7RUFDRSxnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxhQUFhO0VBQ2IsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsYUFBYTtFQUNiLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLGlCQUFpQjtFQUNqQixvQkFBb0IsRUFBQTs7QUFHdEI7RUFDRSxnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSx5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLGlCQUFpQjtFQUNqQixrQkFBa0I7RUFDbEIsaUJBQWlCO0VBQ2pCLGdCQUFnQjtFQUNoQixrQkFBa0I7RUFDbEIseUJDMUVnQjtFRDJFaEIsWUFBWSxFQUFBOztBQUdkO0VBQ0UsZUFBZTtF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QjtJQU1JLG9CQUFvQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvZGF0YS1jb2xsZWN0aW9uL2R5bmFtaWMtc3VydmV5L2R5bmFtaWMtc3VydmV5LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vdmFyaWFibGVzJztcclxuXHJcbmlucHV0W3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiwgXHJcbmlucHV0W3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XHJcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuaW5wdXRbdHlwZT1udW1iZXJdIHtcclxuICAtbW96LWFwcGVhcmFuY2U6dGV4dGZpZWxkO1xyXG59XHJcblxyXG4udGVzdC1jbGFzcyB7XHJcbiAgcGFkZGluZzogMTBweDtcclxuICBtYXJnaW46IDE1cHggMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMjIwLCAxMDAlLCA5NiUpO1xyXG59XHJcblxyXG50ZXh0YXJlYSB7XHJcbiAgcmVzaXplOiB2ZXJ0aWNhbDtcclxufVxyXG5cclxubGFiZWwge1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbn1cclxuXHJcbi5mdWxsVGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgZm9udC1zaXplOiAxLjVlbTtcclxuICBjb2xvcjogJG5ocy1ibHVlO1xyXG59XHJcblxyXG4uYm9sZFRpdGxlIHtcclxuICBmb250LXdlaWdodDogNzAwO1xyXG59XHJcblxyXG4uc3VidG90YWxEaXZpZGVyIHtcclxuICBtYXJnaW4tYm90dG9tOiA0ZW07XHJcbn1cclxuXHJcbi5pdGFsaWNUaXRsZSB7XHJcbiAgZm9udC1zdHlsZTogaXRhbGljO1xyXG59XHJcblxyXG4ubWVkaXVtIHtcclxuICBoZWlnaHQ6IDEwMHB4O1xyXG4gIG1pbi1oZWlnaHQ6IDEwMHB4O1xyXG59XHJcblxyXG4ubGFyZ2Uge1xyXG4gIGhlaWdodDogMjAwcHg7XHJcbiAgbWluLWhlaWdodDogMjAwcHg7XHJcbn1cclxuXHJcbiNxdWVzdGlvbkZvcm0gLmludHJvIHtcclxuICBwYWRkaW5nOiAwIDAuNGVtO1xyXG59XHJcblxyXG4jcXVlc3Rpb25Gb3JtIC5mb3JtLWdyb3VwIHtcclxuICBtYXJnaW4tdG9wOiAwLjVlbTtcclxuICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxufVxyXG5cclxuI3F1ZXN0aW9uRm9ybSAuZm9ybS1ncm91cCAudGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbn1cclxuXHJcbiNxdWVzdGlvbkZvcm0gLnF1ZXN0aW9uIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmN2ZiO1xyXG4gIHBhZGRpbmc6IDFlbSAwLjVlbTtcclxuICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbn1cclxuXHJcbi5xdWVzdGlvbi1tYXJrLWhlbHAge1xyXG4gIGZvbnQtc2l6ZTogMC43NWVtO1xyXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxuICBmb250LXdlaWdodDogYm9sZDtcclxuICBwYWRkaW5nOiAycHggNHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG59XHJcblxyXG4ucXVlc3Rpb24tbWFyay1oZWxwOmhvdmVyIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XHJcbn1cclxuXHJcbi5xdWVzdGlvbi1tYXJrLWhlbHA6Zm9jdXMge1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XHJcbn1cclxuXHJcbi5xdWVzdGlvbi4tcG9wdXAge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRuaHMtZ3JleTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmN2ZiO1xyXG59XHJcblxyXG4jcXVlc3Rpb25Gb3JtIC5xdWVzdGlvbiAuY29udHJvbC1sYWJlbCB7XHJcbiAgdGV4dC1hbGlnbjogbGVmdDtcclxuICBmb250LXdlaWdodDogNDAwO1xyXG59XHJcblxyXG4jcXVlc3Rpb25Gb3JtIC5pbnRybyBsYWJlbCB7XHJcbiAgbWFyZ2luLXRvcDogNXB4O1xyXG59XHJcblxyXG4ucGFuZWwge1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbi5wYW5lbC1oZWFkaW5nIHtcclxuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5wYW5lbC1ncm91cCB7XHJcbiAgbWFyZ2luLWJvdHRvbTogMHB4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5wb3B1cC1ociB7XHJcbiAgbWFyZ2luLXRvcDogMTVweCAhaW1wb3J0YW50O1xyXG4gIG1hcmdpbi1ib3R0b206IDIwcHggIWltcG9ydGFudDtcclxufVxyXG5cclxuLmZhIHtcclxuICBwYWRkaW5nLXRvcDogM3B4O1xyXG59XHJcblxyXG4uYWxlcnQge1xyXG4gIG1hcmdpbi1ib3R0b206IDBweDtcclxuICBtYXJnaW4tdG9wOiAwLjVlbTtcclxuICBwYWRkaW5nOiAwLjVlbTtcclxufVxyXG5cclxuLmFjY29yZGlvbi1zcGFjZSB7XHJcbiAgbWFyZ2luLXRvcDogMC41ZW07XHJcbn1cclxuXHJcbi9kZWVwLyAucGFuZWwtZGVmYXVsdDpub3QoLnBhbmVsLWxvZ2luKSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0YyRjdGQjtcclxuICBib3JkZXI6IDJweCBzb2xpZCAkbmhzLWdyZXk7XHJcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xyXG59XHJcblxyXG4vZGVlcC8gLnBhbmVsLWRlZmF1bHQ6bm90KC5wYW5lbC1sb2dpbikgPiAucGFuZWwtaGVhZGluZyB7XHJcbiAgcGFkZGluZzogMC41ZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1ncmV5O1xyXG4gIGJvcmRlcjogMnB4IHNvbGlkICRuaHMtZ3JleTtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuL2RlZXAvIC5wYW5lbC1kZWZhdWx0Om5vdCgucGFuZWwtbG9naW4pPiAucGFuZWwtaGVhZGluZyBpIHtcclxuICBtYXJnaW4tbGVmdDogMC41ZW07XHJcbn1cclxuXHJcbi9kZWVwLyAucGFuZWwtZGVmYXVsdDpub3QoLnBhbmVsLWxvZ2luKSAucGFuZWwtYm9keSB7XHJcbiAgcGFkZGluZzogMC41ZW07XHJcbn1cclxuXHJcbi8qIExEIFFVRVNUSU9OUyAqL1xyXG5cclxuLmxkLXF1ZXN0aW9uIHtcclxuICBib3JkZXI6IDJweCBkYXNoZWQgI2RkZDtcclxuICBwYWRkaW5nOiA0ZW0gMmVtO1xyXG4gIG1hcmdpbjogM2VtIDA7XHJcbiAgYmFja2dyb3VuZDogd2hpdGU7XHJcbiAgZm9udC1zaXplOiAxOHB4O1xyXG4gIGNvbG9yOiBibGFjaztcclxufVxyXG4ubGQtcXVlc3Rpb24gaDIge1xyXG4gIGZvbnQtc2l6ZTogMmVtO1xyXG4gIG1hcmdpbi10b3A6IDA7XHJcbiAgZm9udC13ZWlnaHQ6IDcwMDtcclxufVxyXG4ubGQtcXVlc3Rpb24gaDMge1xyXG4gIGZvbnQtc2l6ZTogMS41ZW07XHJcbiAgbWFyZ2luLWJvdHRvbTogMmVtO1xyXG59XHJcbi5sZC1xdWVzdGlvbi10aXRsZSB7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG59XHJcblxyXG4vKiBTbGlkZXIgYW5kIE91dHB1dCAqL1xyXG4uc2xpZGVyIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZmxvYXQ6IGxlZnQ7XHJcbiAgbWFyZ2luLXRvcDogM2VtO1xyXG4gIHdpZHRoOiA2MCU7XHJcbn1cclxuLm91dHB1dCB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIGZvbnQtc2l6ZTogNGVtO1xyXG4gIG1hcmdpbi10b3A6IC0xLjM1ZW07XHJcbn1cclxuLmZhLWljb24ge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBmbG9hdDogbGVmdDtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGNvbG9yOiAjMDAwO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICB3aWR0aDogMjAlO1xyXG4gIGZvbnQtc2l6ZTogMS4yNWVtO1xyXG59XHJcbi5mYS1pY29uIHNwYW4ge1xyXG4gIGZvbnQtc2l6ZTogM2VtO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgcGFkZGluZzogMCAwLjI1ZW07XHJcbiAgbWFyZ2luLWJvdHRvbTogMC4yNWVtO1xyXG59XHJcbi5mYS1zYWQtdGVhciB7XHJcbiAgY29sb3I6ICM0NDgxZTM7XHJcbn1cclxuLmZhLWZyb3duIHtcclxuICBjb2xvcjogI2I5YjE1NTtcclxufVxyXG4uZmEtbWVoIHtcclxuICBjb2xvcjogI2Y0YzgwZDtcclxufVxyXG4uZmEtc21pbGUge1xyXG4gIGNvbG9yOiAjZGFkZDI4O1xyXG59XHJcbi5mYS1ncmluLWFsdCB7XHJcbiAgY29sb3I6ICNiNGVjNTA7XHJcbn1cclxuXHJcbi8qIFJhbmdlIElucHV0ICovXHJcbi5sZC1xdWVzdGlvbiBpbnB1dFt0eXBlPXJhbmdlXXtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgYmFja2dyb3VuZDogbm9uZTtcclxufVxyXG5cclxuLyogUmFuZ2UgSW5wdXQ6IFRyYWNrICovXHJcbi5sZC1xdWVzdGlvbiBpbnB1dFt0eXBlPXJhbmdlXTo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xyXG4gIGhlaWdodDogNXB4O1xyXG4gIGJhY2tncm91bmQ6ICNkZGQ7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGJvcmRlci1yYWRpdXM6IDNweDtcclxufVxyXG4ubGQtcXVlc3Rpb24gaW5wdXRbdHlwZT1yYW5nZV06Oi1tcy10cmFjayB7XHJcbiAgaGVpZ2h0OiA1cHg7XHJcbiAgYmFja2dyb3VuZDogI2RkZDtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gIG1hcmdpbjogMS41ZW0gMDtcclxufVxyXG4ubGQtcXVlc3Rpb24gaW5wdXRbdHlwZT1yYW5nZV06Oi1tb3otcmFuZ2UtdHJhY2sge1xyXG4gIGhlaWdodDogNXB4O1xyXG4gIGJhY2tncm91bmQ6ICNkZGQ7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGJvcmRlci1yYWRpdXM6IDNweDtcclxufVxyXG5cclxuLyogUmFuZ2UgSW5wdXQ6IFRodW1iICovXHJcbi5sZC1xdWVzdGlvbiBpbnB1dFt0eXBlPXJhbmdlXTo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcclxuICBib3JkZXI6IDNweCBzb2xpZCB3aGl0ZTtcclxuICBoZWlnaHQ6IDM3cHg7XHJcbiAgd2lkdGg6IDM3cHg7XHJcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gIGJhY2tncm91bmQ6ICM3Njg2OTE7XHJcbiAgbWFyZ2luLXRvcDogLTE1cHg7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG4ubGQtcXVlc3Rpb24gaW5wdXRbdHlwZT1yYW5nZV06Oi1tcy10aHVtYiB7XHJcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG4gIGJvcmRlcjogM3B4IHNvbGlkIHdoaXRlO1xyXG4gIGhlaWdodDogMzdweDtcclxuICB3aWR0aDogMzdweDtcclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgbWFyZ2luLXRvcDogM3B4O1xyXG4gIGJhY2tncm91bmQ6ICM3Njg2OTE7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG4ubGQtcXVlc3Rpb24gaW5wdXRbdHlwZT1yYW5nZV06Oi1tb3otcmFuZ2UtdGh1bWIge1xyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcclxuICBib3JkZXI6IDNweCBzb2xpZCB3aGl0ZTtcclxuICBoZWlnaHQ6IDM3cHg7XHJcbiAgd2lkdGg6IDM3cHg7XHJcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gIGJhY2tncm91bmQ6ICM3Njg2OTE7XHJcbiAgbWFyZ2luLXRvcDogLTE1cHg7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLyogUmFuZ2UgSW5wdXQ6IEZvY3VzICovXHJcbi5sZC1xdWVzdGlvbiBpbnB1dFt0eXBlPXJhbmdlXTpmb2N1czo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xyXG4gIGJhY2tncm91bmQ6ICMwZDVlYjg7XHJcbn1cclxuLmxkLXF1ZXN0aW9uIGlucHV0W3R5cGU9cmFuZ2VdOmZvY3VzOjotbXMtdGh1bWIge1xyXG4gIGJhY2tncm91bmQ6ICMwZDVlYjg7XHJcbn1cclxuLmxkLXF1ZXN0aW9uIGlucHV0W3R5cGU9cmFuZ2VdOmZvY3VzOjotbW96LXJhbmdlLXRodW1iIHtcclxuICBiYWNrZ3JvdW5kOiAjMGQ1ZWI4O1xyXG59XHJcbi5sZC1xdWVzdGlvbiBpbnB1dFt0eXBlPXJhbmdlXTpmb2N1cyB7XHJcbiAgb3V0bGluZTogbm9uZTtcclxufVxyXG4ubGQtcXVlc3Rpb24gaW5wdXRbdHlwZT1yYW5nZV06Zm9jdXM6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHtcclxuICBiYWNrZ3JvdW5kOiAjNzY4NjkxO1xyXG59XHJcbi5sZC1xdWVzdGlvbiBpbnB1dFt0eXBlPXJhbmdlXTpmb2N1czo6LW1zLXRyYWNrIHtcclxuICBiYWNrZ3JvdW5kOiAjNzY4NjkxO1xyXG59XHJcbi5sZC1xdWVzdGlvbiBpbnB1dFt0eXBlPXJhbmdlXTpmb2N1czo6LW1vei1yYW5nZS10cmFjayB7XHJcbiAgYmFja2dyb3VuZDogIzc2ODY5MTtcclxufVxyXG5cclxuLyogWWVzL05vICovXHJcblxyXG4uYnRuLWlucHV0IHtcclxuICBvdXRsaW5lOiAwO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBib3JkZXItcmFkaXVzOiAxMHB4O1xyXG4gIGZvbnQtc2l6ZTogM2VtO1xyXG4gIGhlaWdodDogMTAwcHg7XHJcbiAgd2lkdGg6IDEwMHB4O1xyXG4gIG1hcmdpbjogMCAwLjVlbTtcclxuICBjb2xvcjogYmxhY2s7XHJcbiAgYm9yZGVyOiA1cHggc29saWQgIzc2ODY5MTtcclxufVxyXG5cclxuLmxkLXF1ZXN0aW9uIC55ZXMge1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMTc5LCAyMzYsIDgwLCAwLjgpO1xyXG59XHJcblxyXG4ubGQtcXVlc3Rpb24gLm5vIHtcclxuICBiYWNrZ3JvdW5kOiByZ2JhKDI0MSwgMTM1LCAxMzUsIDAuOCk7XHJcbn1cclxuXHJcbi5idG4taW5wdXQ6Zm9jdXMsXHJcbi5idG4taW5wdXQ6aG92ZXIsXHJcbi5idG4taW1nOmZvY3VzLFxyXG4uYnRuLWltZzpob3ZlciB7XHJcbiAgYm9yZGVyOiA1cHggc29saWQgYmxhY2s7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5sZC1xdWVzdGlvbiAuYWN0aXZlIHtcclxuICBiYWNrZ3JvdW5kOiAjMGQ1ZWI4O1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxufVxyXG5cclxuLmJ0bi1pbWcge1xyXG4gIHdpZHRoOiAxNTBweDtcclxuICBoZWlnaHQ6IDE1MHB4O1xyXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgbWFyZ2luOiAwIDAuNWVtO1xyXG4gIGJvcmRlcjogNXB4IHNvbGlkICM3Njg2OTE7XHJcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcclxufVxyXG5cclxuLmFjdGl2ZS1pbWcge1xyXG4gIGJvcmRlcjogNXB4IHNvbGlkICMwZDVlYjg7XHJcbn1cclxuXHJcbi5hY3RpdmUtaW1nOjphZnRlciB7XHJcbiAgY29udGVudDogXCJcIjtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgdG9wOiAtNzU7XHJcbiAgcmlnaHQ6IC0xMjA7XHJcbiAgd2lkdGg6IDMwcHg7XHJcbiAgaGVpZ2h0OiAzMHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICBiYWNrZ3JvdW5kOiAjMGQ1ZWI4O1xyXG59XHJcblxyXG4uY29uZGl0aW9uLWRpc2FibGVkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJGQkZCICFpbXBvcnRhbnQ7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI0VFRUVFRTtcclxufVxyXG5cclxuLmNvbmRpdGlvbi1oaWRkZW4ge1xyXG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmNvbmRpdGlvbi1kaXNhYmxlZCBsYWJlbCB7XHJcbiAgY29sb3I6ICM1NTU1NTU7XHJcbn1cclxuXHJcbi5kYXRlc1RpbWVzRXJyb3JzIHtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgd2lkdGg6IDUwJTtcclxuICByaWdodDogMWVtO1xyXG4gIGJvdHRvbTogMWVtO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJlZDtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBwYWRkaW5nOiAxZW07XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIHotaW5kZXg6IDEwMDAwO1xyXG4gIGZvbnQtc2l6ZTogMTdweDtcclxuICBsaW5lLWhlaWdodDogMjBweDtcclxufVxyXG5cclxuLy8gMjAyMCBBZGRpdGlvbnNcclxuXHJcbi5yb3ctYXV0b3N1bSB7XHJcbiAgbWFyZ2luLXRvcDogMC41ZW07XHJcbiAgcGFkZGluZy10b3A6IDAuNWVtICFpbXBvcnRhbnQ7XHJcbiAgYm9yZGVyLXRvcC1zdHlsZTogZG91YmxlO1xyXG4gIGJvcmRlci10b3AtY29sb3I6ICRuaHMtZ3JleTtcclxufVxyXG5cclxuLnBvcHVwLXRpdGxlIHtcclxuICBmb250LXNpemU6IDE3cHg7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuLnBvcHVwLXF1ZXN0aW9uIHtcclxuICBwYWRkaW5nLXRvcDogMnB4O1xyXG4gIHBhZGRpbmctYm90dG9tOiAycHg7XHJcbn1cclxuXHJcbi5kZXNjcmlwdGlvbi10ZXh0IHtcclxuICBjb2xvcjogJG5ocy1ncmV5O1xyXG4gIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG59XHJcblxyXG4uc2hvdy1oaWRlIHtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgbWFyZ2luLXRvcDogLTAuNWVtO1xyXG4gIG1hcmdpbi1ib3R0b206IDFlbTtcclxufVxyXG5cclxuLnNob3ctaGlkZSBkaXYge1xyXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbiAgZm9udC1zaXplOiAxMXB4O1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1ncmV5O1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBsZXR0ZXItc3BhY2luZzogMC41cHg7XHJcbiAgcGFkZGluZzogM3B4O1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgd2lkdGg6IDIwMHB4O1xyXG4gIG91dGxpbmU6IDFweCBzb2xpZCAkbmhzLWdyZXk7XHJcbn1cclxuXHJcbi5zaG93LWhpZGUgc3BhbiB7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufVxyXG5cclxuLnNob3ctaGlkZSBkaXY6aG92ZXIge1xyXG4gIGNvbG9yOiBibGFjaztcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi8vIC52Y2VudGVyIHtcclxuLy8gICBmbG9hdDogbGVmdDtcclxuLy8gfVxyXG5cclxuLmNvbHVtbi1oZWFkaW5nIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxuICBjb2xvcjogJG5ocy1ncmV5XHJcbn1cclxuXHJcbi5jb2x1bW4taGVhZGluZy4taGlkZGVuIHtcclxuICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgbWFyZ2luLWJvdHRvbTogMDtcclxufVxyXG5cclxuLmhpbnQuLXN1cHBvcnQge1xyXG4gIG1hcmdpbi1sZWZ0OiAwO1xyXG4gIG1hcmdpbi1yaWdodDogMGVtO1xyXG4gIG1hcmdpbi10b3A6IDAuNWVtO1xyXG4gIGJvcmRlci1yYWRpdXM6IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhBMTUzODtcclxuICBjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbi4tcG9wdXAtZGlzYWJsZWQge1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbi5kaXNhYmxlZC1wb3B1cCB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZCRkJGQiAhaW1wb3J0YW50O1xyXG4gIGNvbG9yOiAjNTU1NTU1ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5kaXNhYmxlZC1wb3B1cCA+IC4tcG9wdXAtZGlzYWJsZWQsXHJcbi5wb3B1cC1kaXNhYmxlZCB7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgcGFkZGluZzogMC41ZW0gMS41ZW07XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBtYXJnaW4tdG9wOiAtMWVtO1xyXG4gIG1hcmdpbi1ib3R0b206IDFlbTtcclxuICBtYXJnaW4tbGVmdDogLTAuNWVtO1xyXG4gIG1hcmdpbi1yaWdodDogLTAuNWVtO1xyXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDtcclxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4O1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNFRUVFRUU7XHJcbiAgY29sb3I6IGJsYWNrO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNFRUVFRUU7XHJcbn1cclxuXHJcbi8vIEFjdGl2ZSBBZG1pblxyXG5cclxuLmFkbWluLWVkaXQge1xyXG4gIG1hcmdpbi1sZWZ0OiAwLjVlbTtcclxuICBjb2xvcjogI0ZEQkMzMDtcclxufVxyXG5cclxuLmFkbWluLWVkaXQ6aG92ZXIge1xyXG4gIGNvbG9yOiBibGFjaztcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5saW5rZWQtcXVlc3Rpb24ge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjUzLCAxODgsIDQ4LCAwLjUpICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5pbXBvcnQge1xyXG4gIHBhZGRpbmctdG9wOiAwLjI1ZW07XHJcbiAgZm9udC1zaXplOiAwLjc1ZW07XHJcbiAgY29sb3I6ICM2NTRGMjg7XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgJiBpIHtcclxuICAgIG1hcmdpbi1yaWdodDogMC4yNWVtO1xyXG4gIH1cclxufSIsIiRpY29uLWZvbnQtcGF0aDogJy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAtc2Fzcy9hc3NldHMvZm9udHMvYm9vdHN0cmFwLyc7XHJcblxyXG4vLyBDdXN0b20gdmFyaWFibGVzXHJcbiRuaHMtYmx1ZTogIzAwNUVCODtcclxuJG5ocy1kYXJrLWJsdWU6ICMwMDQ0ODU7XHJcbiRuaHMtZ3JleTogIzc2ODY5MjtcclxuJG5ocy1mYWRlZC1ibHVlOiAjRjJGN0ZCO1xyXG4kYWN0aXZlLWFkbWluLXllbGxvdzogI0ZEQkMzMDtcclxuJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93OiAjRTU5OTAwO1xyXG4gXHJcbi8vIEJvb3RzdHJhcCB2YXJpYWJsZXNcclxuJHRleHQtY29sb3I6IGJsYWNrO1xyXG4kYm9yZGVyLXJhZGl1cy1iYXNlOiAwO1xyXG4kYm9yZGVyLXJhZGl1cy1zbWFsbDogMDtcclxuJGJyYW5kLXByaW1hcnk6ICRuaHMtYmx1ZTtcclxuJGJyYW5kLXN1Y2Nlc3M6IGdyZWVuO1xyXG4kbGluay1ob3Zlci1kZWNvcmF0aW9uOiBub25lO1xyXG4kZm9udC1zaXplLWg0OiAxN3B4O1xyXG4kbmF2YmFyLW1hcmdpbi1ib3R0b206IDA7XHJcbiRuYXZiYXItaGVpZ2h0OiA2MHB4O1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtYmc6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWJvcmRlci1jb2xvcjogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaWNvbi1iYXItYmc6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOiB3aGl0ZTtcclxuXHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc6ICRuaHMtYmx1ZTtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1jb2xvcjogd2hpdGU7XHJcbiRuYXYtcGlsbHMtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJHRhYmxlLWJnLWhvdmVyOiAkbmhzLWZhZGVkLWJsdWU7XHJcbiRoZWFkaW5ncy1zbWFsbC1jb2xvcjogJG5ocy1ncmV5OyJdfQ== */\"","import { Component, Input, Output, EventEmitter, AfterContentInit, OnDestroy, ChangeDetectionStrategy } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\nimport { QuestionBase } from '../../utilities/classes/question/question-base';\r\n\r\nimport * as moment from 'moment';\r\nimport 'moment/min/locales';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-dynamic-survey',\r\n templateUrl: './dynamic-survey.component.html',\r\n styleUrls: ['./dynamic-survey.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DynamicSurveyComponent implements AfterContentInit, OnDestroy {\r\n @Input() question: QuestionBase;\r\n @Input() innerForm: FormGroup;\r\n @Input() projectId;\r\n @Input() peerGroupId;\r\n @Input() isAdmin;\r\n @Input() linkedQuestion;\r\n \r\n @Output() questionCountEmitter: EventEmitter = new EventEmitter();\r\n @Output() questionTotalEmitter: EventEmitter = new EventEmitter();\r\n @Output() datesTimesEmitter: EventEmitter = new EventEmitter();\r\n @Output() parentChangeEmitter: EventEmitter = new EventEmitter();\r\n @Output() nacelValidations: EventEmitter = new EventEmitter();\r\n @Output() editQuestion: EventEmitter = new EventEmitter();\r\n\r\n minValueText: string = 'You have exceeded the minimum value of this question';\r\n maxValueText: string = 'You have exceeded the maximum value of this question';\r\n decimalText: string = 'The limit of decimal places has been exceeded';\r\n conditionalQuestionWarning: string = 'This question has been disabled due to an answer given for a previous question.';\r\n conditionalParentWarning: string = 'Changing the response to this question could change responses to subsequent questions.';\r\n firstLoad: boolean = false;\r\n dateOutOfBounds1: string = \"\";\r\n dateOutOfBounds2: string = \"\";\r\n dateOutOfBounds3: string = \"\";\r\n conditionQuestion: boolean = false;\r\n conditionQuestionHide: boolean = false;\r\n conditionHidden: boolean = false;\r\n isOpen: boolean = false;\r\n showPopup: boolean = true;\r\n popupHidden: boolean = false;\r\n year: number;\r\n datesTimes = [];\r\n datesTimesErrors = [];\r\n group: number;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n ) {\r\n this.year = +this.route.snapshot.paramMap.get('year');\r\n this.group = +this.route.snapshot.queryParams.group;\r\n }\r\n\r\n ngAfterContentInit() {\r\n if (!this.firstLoad) {\r\n let questionConditions = this.question.conditionQuestions,\r\n responses = this.question.responses;\r\n\r\n if (questionConditions.length > 0) {\r\n if (questionConditions[0].conditionQuestionId) {\r\n let questionDisable: boolean = true;\r\n\r\n for (let index = 0; index < responses.length; index++) {\r\n let id = responses[index].uniqueId;\r\n let question = this.innerForm.controls[id];\r\n\r\n //Check if there is a value from the API, if not then we need to determine what the value is for the parent as it will be on the same page\r\n if (questionConditions[0].conditionQuestionValue || questionConditions[0].conditionType == 2 || questionConditions[0].conditionType == 4) {\r\n //Use parent values to disable question\r\n if (questionConditions[0].conditionType != 4) {\r\n if (questionConditions[0].parentConditionMin >= questionConditions[0].conditionQuestionValue && questionConditions[0].parentConditionMax <= questionConditions[0].conditionQuestionValue) {\r\n questionDisable = false;\r\n }\r\n }\r\n else {\r\n if (questionConditions[0].conditionMin > questionConditions[0].conditionQuestionValue || !questionConditions[0].hasOwnProperty('conditionQuestionValue')) {\r\n this.conditionHidden = true;\r\n this.totalEmit();\r\n }\r\n }\r\n }\r\n else {\r\n let parentQuestionKey;\r\n let parentQuestionValue;\r\n\r\n //Get parent from list of questions in angular form\r\n for (const key in this.innerForm.controls) {\r\n if (this.innerForm.controls.hasOwnProperty(key)) {\r\n const element = this.innerForm.controls[key];\r\n\r\n if (+key.split('-')[0] == questionConditions[0].conditionQuestionId) {\r\n parentQuestionKey = key;\r\n parentQuestionValue = element.value;\r\n }\r\n }\r\n }\r\n\r\n //Handle YN questions differently - they are not stored in the DB and need extra logic to manage\r\n if (parentQuestionKey) {\r\n if (parentQuestionKey.split('-')[2] == 'yn') {\r\n if (parentQuestionValue == 'Y') {\r\n parentQuestionValue = 1;\r\n }\r\n else if (parentQuestionValue == 'N') {\r\n parentQuestionValue = 2;\r\n }\r\n else {\r\n parentQuestionValue = 3;\r\n }\r\n }\r\n }\r\n\r\n //Enable question if criteria match\r\n if (parentQuestionValue >= questionConditions[0].parentConditionMin && parentQuestionValue <= questionConditions[0].parentConditionMax) {\r\n questionDisable = false;\r\n } else {\r\n this.popupHidden = true;\r\n }\r\n }\r\n\r\n if (questionDisable && questionConditions[0].conditionType !== 4) {\r\n if (questionConditions[0].conditionType == 2) {\r\n\r\n // Set parent value, accounting for YN\r\n let parentValue;\r\n if (questionConditions[0].conditionQuestionValue == 'Y') { parentValue = 1 }\r\n else if (questionConditions[0].conditionQuestionValue == 'N') { parentValue = 2 }\r\n else if (questionConditions[0].conditionQuestionValue == '-') { parentValue = 3 }\r\n else { parentValue = questionConditions[0].conditionQuestionValue }\r\n\r\n // Parent value must MATCH both conditions (i.e. can only be one value)\r\n // TODO: Improve flexibility to allow more than one value >= and <=\r\n if (parentValue === questionConditions[0].parentConditionMin && parentValue === questionConditions[0].parentConditionMax) {\r\n questionDisable = false;\r\n } else {\r\n this.conditionQuestion = true;\r\n this.popupHidden = true;\r\n this.showPopup = false;\r\n if (this.question.formatModifier === 'H') { this.conditionQuestionHide = true; };\r\n question.disable();\r\n }\r\n }\r\n else {\r\n question.disable();\r\n }\r\n }\r\n\r\n }\r\n } // conditionalQuestion\r\n }\r\n\r\n //This is intentionally forcing a change to the questions after Angular loads. Angular does not like this.\r\n if (this.question.responses) { \r\n this.question.responses.forEach((element, index) => {\r\n if(this.innerForm.controls[this.question.responses[index].uniqueId]) {\r\n if (this.innerForm.controls[this.question.responses[index].uniqueId].errors) {\r\n this.innerForm.controls[this.question.responses[index].uniqueId].markAsTouched();\r\n }\r\n }\r\n if(this.innerForm.controls[this.question.responses[index].uniqueId]) {\r\n if (this.innerForm.controls[this.question.responses[index].uniqueId].value || this.innerForm.controls[this.question.responses[index].uniqueId].value == 0) {\r\n this.countEmit(this.question.responses[index].uniqueId, 'add');\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.firstLoad = true;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.countEmit('reset', 'reset');\r\n }\r\n\r\n autoSum(currentQuestion: string, questionValue: number, autoSumCheck: string, itemGroup: number, decimalPlaces: number) {\r\n let classBreakdown = currentQuestion.split('-');\r\n let questions = document.getElementsByClassName(classBreakdown[0]);\r\n let total = [+questionValue];\r\n let finalTotal = [];\r\n\r\n if (this.innerForm.controls[currentQuestion].dirty && this.innerForm.controls[currentQuestion].touched) {\r\n //Summable field should always come last....this will need to be modified on the chance this is not the case\r\n for (let index = 0; index < questions.length; index++) {\r\n let element = questions[index];\r\n let currentClass = element.classList.contains('item-group-' + itemGroup);\r\n let autoSumClass = element.classList.contains('autosum');\r\n\r\n //Add each value related to item group into total array that isnt an autosum field\r\n if (currentClass) {\r\n if (!autoSumClass && element.id !== currentQuestion) {\r\n total.push(+this.innerForm.controls[element.id].value);\r\n }\r\n }\r\n\r\n //If question is autoSum and we arent currently editing an autoSum quesiton, then set total\r\n if (autoSumClass) {\r\n if (currentClass && autoSumCheck != 'Y') {\r\n let calc = total.reduce((a, b) => a + b);\r\n\r\n if (decimalPlaces) {\r\n calc = +calc.toFixed(decimalPlaces);\r\n } else {\r\n calc = +calc.toFixed(2);\r\n }\r\n\r\n this.innerForm.controls[element.id].patchValue(calc);\r\n this.innerForm.controls[element.id].markAsDirty();\r\n }\r\n\r\n if (!element.classList.contains('item-group-0')) {\r\n finalTotal.push(+this.innerForm.controls[element.id].value);\r\n }\r\n\r\n //Perform calculation for overall total unless total is being edited manually\r\n if (element.classList.contains('item-group-0') && !currentClass) {\r\n let calc: number = finalTotal.reduce((a, b) => a + b);\r\n\r\n if (decimalPlaces) {\r\n calc = +calc.toFixed(decimalPlaces);\r\n }\r\n \r\n this.innerForm.controls[element.id].patchValue(calc);\r\n this.innerForm.controls[element.id].markAsDirty();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n numericPaste(currentQuestion, event) {\r\n if (event.srcElement['value'] !== '') {\r\n var pastedValue = event.srcElement['value'].toString();\r\n pastedValue = pastedValue.replace(/\\,/g,'');\r\n pastedValue = Number(pastedValue);\r\n this.innerForm.get(currentQuestion).setValue(pastedValue);\r\n }\r\n }\r\n\r\n nacelValidate(question, value) { \r\n if(this.projectId == 88) {\r\n\r\n // NACEL date/time validation for 2020 onwards (date/times outside of nested)\r\n // NB: conditionType must be set to 6 on question group\r\n \r\n // Define empty values, errors and validations\r\n let currentId = question.questionId + '-1-' + question.questionType,\r\n values = [],\r\n errors = [],\r\n validations = {\r\n adm: null,\r\n admPlus4: null,\r\n arr: null,\r\n rec: null,\r\n dea: null,\r\n unrec: null\r\n };\r\n\r\n // Populate from questions in group\r\n Object.keys(this.innerForm.value).forEach(key => {\r\n values.push({\r\n questionIdNo: +key.substring(0,5),\r\n questionId: key,\r\n questionType: key.split('-')[2],\r\n value: this.innerForm.value[key]\r\n });\r\n });\r\n\r\n // Remove non-date/time values\r\n values = values.filter(v => v.questionType == 'date' || v.questionType == 'time');\r\n // Define number of questions\r\n length = values.length;\r\n\r\n // Create moment.js values\r\n values.forEach(v => {\r\n if (v.questionType === 'date' && v.value) {\r\n v.value = moment(v.value).locale('en-gb').format('LL');\r\n } else if (v.questionType === 'time' && v.value) {\r\n v.value = moment(v.value, ['h:m', 'H:m']).format('HH:mm');\r\n } else if (v.questionType === 'time') {\r\n v.value = moment('00:00', ['h:m', 'H:m']).format('HH:mm');\r\n }\r\n });\r\n\r\n // Create default values\r\n if (question.questionType === 'date' && value) {\r\n value = moment(value).locale('en-gb').format('LL');\r\n } else if (question.questionType === 'time' && value) {\r\n value = moment(value, ['h:m', 'H:m']).format('HH:mm');\r\n } else if (question.questionType === 'time') {\r\n value = moment('00:00', ['h:m', 'H:m']).format('HH:mm');\r\n };\r\n\r\n // Get selected/current value\r\n if (values.filter(v => v.questionId === currentId)[0]) {\r\n values.filter(v => v.questionId === currentId)[0].value = value;\r\n }\r\n\r\n // Populate admission date/time and +4hrs after admission\r\n if (values[0].value && values[1].value) {\r\n let admDate = moment(values[0].value + ' ' + values[1].value, 'D MMMM YYYY H:mm');\r\n validations.adm = moment(admDate).locale('en-gb');\r\n validations.admPlus4 = moment(admDate).add(4, 'hours').locale('en-gb');\r\n }\r\n \r\n // Populate recognition date/time\r\n if (length === 6 && values[2].value && values[3].value) {\r\n let recDate = moment(values[2].value + ' ' + values[3].value, 'D MMMM YYYY H:mm');\r\n validations.rec = moment(recDate).locale('en-gb');\r\n }\r\n \r\n // Populate death date/time\r\n if (length === 6 && values[4].value && values[5].value) {\r\n let deaDate = moment(values[4].value + ' ' + values[5].value, 'D MMMM YYYY H:mm');\r\n validations.dea = moment(deaDate).locale('en-gb');\r\n } else if (length === 4 && values[2].value && values[3].value) {\r\n let deaDate = moment(values[2].value + ' ' + values[3].value, 'D MMMM YYYY H:mm');\r\n validations.dea = moment(deaDate).locale('en-gb');\r\n }\r\n\r\n // Non-consecutive date/time errors\r\n if (validations.adm && validations.rec && validations.adm.isAfter(validations.rec)) {\r\n errors.push('Date / time of recognition cannot be before date / time of admission.');\r\n }\r\n if (validations.rec && validations.dea && validations.rec.isAfter(validations.dea)) {\r\n errors.push('Date / time of death cannot be before date / time of recognition.');\r\n }\r\n if (validations.adm && validations.dea && validations.adm.isAfter(validations.dea)) {\r\n errors.push('Date / time of death cannot be before date / time of admission.');\r\n }\r\n // Check for deaths within 4 hours of admission\r\n if (validations.dea && validations.admPlus4 && validations.dea.isBefore(validations.admPlus4)) {\r\n errors.push('Date / time of death must be at least 4 hours after date / time of admission.');\r\n }\r\n\r\n this.nacelValidations.emit(errors);\r\n\r\n } else {\r\n if (this.projectId == 34 || this.projectId == 86) {\r\n\r\n // Plan & do\r\n if(this.group == 1421) {\r\n // NACEL date/time validation for 2020 onwards (date/times outside of nested)\r\n // NB: conditionType must be set to 6 on question group\r\n \r\n // Define empty values, errors and validations\r\n let currentId = question.questionId + '-1-' + question.questionType,\r\n values = [],\r\n errors = [],\r\n validations = {\r\n ref: null,\r\n rev: null\r\n };\r\n \r\n // Populate from questions in group\r\n Object.keys(this.innerForm.value).forEach(key => {\r\n values.push({\r\n questionIdNo: +key.substring(0,5),\r\n questionId: key,\r\n questionType: key.split('-')[2],\r\n value: this.innerForm.value[key]\r\n });\r\n });\r\n \r\n // Remove non-date/time values\r\n values = values.filter(v => v.questionType == 'date' || v.questionType == 'time');\r\n \r\n // Define number of questions\r\n length = values.length;\r\n \r\n // Create moment.js values\r\n values.forEach(v => {\r\n if (v.questionType === 'date' && v.value) {\r\n v.value = moment(v.value).locale('en-gb').format('LL');\r\n } else if (v.questionType === 'time' && v.value) {\r\n v.value = moment(v.value, ['h:m', 'H:m']).format('HH:mm');\r\n } else if (v.questionType === 'time') {\r\n v.value = moment('00:00', ['h:m', 'H:m']).format('HH:mm');\r\n }\r\n });\r\n \r\n // Create default values\r\n if (question.questionType === 'date' && value) {\r\n value = moment(value).locale('en-gb').format('LL');\r\n } else if (question.questionType === 'time' && value) {\r\n value = moment(value, ['h:m', 'H:m']).format('HH:mm');\r\n } else if (question.questionType === 'time') {\r\n value = moment('00:00', ['h:m', 'H:m']).format('HH:mm');\r\n };\r\n \r\n // Get selected/current value\r\n if (values.filter(v => v.questionId === currentId)[0]) {\r\n values.filter(v => v.questionId === currentId)[0].value = value;\r\n }\r\n \r\n // Populate arrival date/time and +4hrs after admission\r\n if (values[0].value && values[1].value) {\r\n let admDate = moment(values[0].value + ' ' + values[1].value, 'D MMMM YYYY H:mm');\r\n validations.ref = moment(admDate).locale('en-gb');\r\n }\r\n \r\n // Populate admission date/time and +4hrs after admission\r\n if (values[2].value && values[3].value) {\r\n let admDate = moment(values[2].value + ' ' + values[3].value, 'D MMMM YYYY H:mm');\r\n validations.rev = moment(admDate).locale('en-gb');\r\n }\r\n \r\n // Non-consecutive date/time errors\r\n if (validations.rev && validations.ref && validations.rev.isBefore(validations.ref)) {\r\n errors.push('Date / time of referral must be before date / time of review.');\r\n }\r\n \r\n this.nacelValidations.emit(errors);\r\n }\r\n else {\r\n \r\n // NACEL date/time validation for 2020 onwards (date/times outside of nested)\r\n // NB: conditionType must be set to 6 on question group\r\n \r\n // Define empty values, errors and validations\r\n let currentId = question.questionId + '-1-' + question.questionType,\r\n values = [],\r\n errors = [],\r\n validations = {\r\n adm: null,\r\n admPlus4: null,\r\n arr: null,\r\n rec: null,\r\n dea: null,\r\n unrec: null\r\n };\r\n \r\n // Populate from questions in group\r\n Object.keys(this.innerForm.value).forEach(key => {\r\n values.push({\r\n questionIdNo: +key.substring(0,5),\r\n questionId: key,\r\n questionType: key.split('-')[2],\r\n value: this.innerForm.value[key]\r\n });\r\n });\r\n \r\n // Remove non-date/time values\r\n values = values.filter(v => v.questionType == 'date' || v.questionType == 'time');\r\n \r\n // Specific logic to handle disabled questions.\r\n if(values.length == 4 && values.some(obj => obj.questionIdNo !== 15053)) {\r\n values.unshift({}, {});\r\n values.splice(4, 0, {}, {});\r\n }\r\n \r\n if(values.length == 6 && values.some(obj => obj.questionIdNo == 15053)) {\r\n values.splice(4, 0, {}, {});\r\n }\r\n \r\n if(values.length < 7 && values.some(obj => obj.questionIdNo !== 15053)) {\r\n values.unshift({}, {});\r\n }\r\n // Define number of questions\r\n length = values.length;\r\n \r\n // Create moment.js values\r\n values.forEach(v => {\r\n if (v.questionType === 'date' && v.value) {\r\n v.value = moment(v.value).locale('en-gb').format('LL');\r\n } else if (v.questionType === 'time' && v.value) {\r\n v.value = moment(v.value, ['h:m', 'H:m']).format('HH:mm');\r\n } else if (v.questionType === 'time') {\r\n v.value = moment('00:00', ['h:m', 'H:m']).format('HH:mm');\r\n }\r\n });\r\n \r\n // Create default values\r\n if (question.questionType === 'date' && value) {\r\n value = moment(value).locale('en-gb').format('LL');\r\n } else if (question.questionType === 'time' && value) {\r\n value = moment(value, ['h:m', 'H:m']).format('HH:mm');\r\n } else if (question.questionType === 'time') {\r\n value = moment('00:00', ['h:m', 'H:m']).format('HH:mm');\r\n };\r\n \r\n // Get selected/current value\r\n if (values.filter(v => v.questionId === currentId)[0]) {\r\n values.filter(v => v.questionId === currentId)[0].value = value;\r\n }\r\n \r\n // Populate arrival date/time and +4hrs after admission\r\n if (values[0].value && values[1].value) {\r\n let admDate = moment(values[0].value + ' ' + values[1].value, 'D MMMM YYYY H:mm');\r\n validations.arr = moment(admDate).locale('en-gb');\r\n }\r\n \r\n // Populate admission date/time and +4hrs after admission\r\n if (values[2].value && values[3].value) {\r\n let admDate = moment(values[2].value + ' ' + values[3].value, 'D MMMM YYYY H:mm');\r\n validations.adm = moment(admDate).locale('en-gb');\r\n validations.admPlus4 = moment(admDate).add(4, 'hours').locale('en-gb');\r\n }\r\n \r\n // Populate recognition date/time\r\n if (length === 8 && values[4].value && values[5].value) {\r\n let recDate = moment(values[4].value + ' ' + values[5].value, 'D MMMM YYYY H:mm');\r\n validations.rec = moment(recDate).locale('en-gb');\r\n }\r\n \r\n // Populate death date/time\r\n if (length === 8 && values[6].value && values[7].value) {\r\n let deaDate = moment(values[6].value + ' ' + values[7].value, 'D MMMM YYYY H:mm');\r\n validations.dea = moment(deaDate).locale('en-gb');\r\n } else if (length === 4 && values[3].value && values[4].value) {\r\n let deaDate = moment(values[3].value + ' ' + values[4].value, 'D MMMM YYYY H:mm');\r\n validations.dea = moment(deaDate).locale('en-gb');\r\n }\r\n \r\n // Non-consecutive date/time errors\r\n if (validations.adm && validations.rec && validations.adm.isAfter(validations.rec)) {\r\n errors.push('Date / time of recognition cannot be before date / time of admission.');\r\n }\r\n if (validations.rec && validations.dea && validations.rec.isAfter(validations.dea)) {\r\n errors.push('Date / time of death cannot be before date / time of recognition.');\r\n }\r\n if (validations.adm && validations.dea && validations.adm.isAfter(validations.dea)) {\r\n errors.push('Date / time of death cannot be before date / time of admission.');\r\n }\r\n // Check for deaths within 4 hours of admission\r\n if (validations.dea && validations.admPlus4 && validations.dea.isBefore(validations.admPlus4)) {\r\n errors.push('Date / time of death must be at least 4 hours after date / time of admission.');\r\n }\r\n \r\n // Check for arrival is before admission\r\n if (validations.adm && validations.arr && validations.adm.isBefore(validations.arr)) {\r\n errors.push('Date / time of arrival must be before date/time of final admission.');\r\n }\r\n \r\n // if (validations.dea) {\r\n // if (validations.dea.isSameOrAfter('2024-07-01 00:00') && validations.dea.isSameOrBefore('2024-12-31 23:59')) {\r\n // console.log('Within audit period')\r\n // } else if (validations.dea === null) {\r\n // console.log('No date / time of death')\r\n // } else {\r\n // errors.push('Date / time of death must be between 1st July and 31st December 2024');\r\n // }\r\n // }\r\n \r\n this.nacelValidations.emit(errors);\r\n }\r\n }\r\n }\r\n }\r\n\r\n nacelDateTime(currentQuestion, value) {\r\n let question = this.innerForm.controls[currentQuestion]\r\n if ( question.dirty || question.touched ) {\r\n this.datesTimes = [];\r\n this.question.popupQuestions.forEach((e) => {\r\n if (e.questionType === 'DT') {\r\n let questionPart = e.questionPart;\r\n let dateId = this.question.questionId + '-' + questionPart + '-date'\r\n let timeId = this.question.questionId + '-' + (+questionPart + 1) + '-time'\r\n let time = document.getElementById(timeId)['value']\r\n var timeTokens = time.split(':');\r\n let date;\r\n if (dateId === currentQuestion) {\r\n date = question.value\r\n this.datesTimes.push({\r\n date: new Date(Date.UTC(value.getUTCFullYear(), value.getUTCMonth(), value.getUTCDate(), timeTokens[0], timeTokens[1])),\r\n integer: new Date(Date.UTC(value.getUTCFullYear(), value.getUTCMonth(), value.getUTCDate(), timeTokens[0], timeTokens[1])).getTime()\r\n })\r\n } else {\r\n date = document.getElementById(dateId)['value']\r\n var dateTokens = date.split('/');\r\n let day = dateTokens[0]; let month = dateTokens[1]; let year = dateTokens[2];\r\n this.datesTimes.push({\r\n date: new Date(year, month-1, day, timeTokens[0], timeTokens[1]),\r\n integer: new Date(year, month-1, day, timeTokens[0], timeTokens[1]).getTime()\r\n })\r\n }\r\n }\r\n });\r\n let admission = this.datesTimes[0].integer;\r\n let admissionPlus4 = admission + 1.44e+7;\r\n let recognition = this.datesTimes[1].integer;\r\n let death = this.datesTimes[2].integer;\r\n this.datesTimesErrors = [];\r\n this.datesTimesEmitter.emit(false);\r\n if (admission > recognition) {\r\n this.datesTimesEmitter.emit(true);\r\n this.datesTimesErrors.push(\r\n 'Date and time of admission cannot be after date and time of recognition.'\r\n )\r\n }\r\n if (recognition > death) {\r\n this.datesTimesEmitter.emit(true);\r\n this.datesTimesErrors.push(\r\n 'Date and time of recognition cannot be after date and time of death.'\r\n )\r\n }\r\n if (admission > death) {\r\n this.datesTimesEmitter.emit(true);\r\n this.datesTimesErrors.push(\r\n 'Date and time of admission cannot be after date and time of death.'\r\n )\r\n }\r\n if (admissionPlus4 > death) {\r\n this.datesTimesEmitter.emit(true);\r\n this.datesTimesErrors.push(\r\n 'Time of death cannot be within 4 hours of time of admission.'\r\n )\r\n }\r\n }\r\n }\r\n\r\n dateTimeCalc(currentQuestion: string, questionEvent) {\r\n\r\n // NACEL date/time validation for 2019 and earlier (date/times inside of nested)\r\n // TODO: Should be made defunct\r\n\r\n let cQuestion = this.innerForm.controls[currentQuestion]\r\n let classBreakdown = currentQuestion.split('-');\r\n let questions = document.getElementsByClassName(classBreakdown[0]);\r\n \r\n if (cQuestion.dirty || (cQuestion.touched && classBreakdown[2] == 'date')) {\r\n let dateArray = [], timeArray = [], dateTimeCalcQuestions = [];\r\n let dateQuestions = {}, timeQuestions = {}\r\n\r\n for (let index = 0; index < questions.length; index++) {\r\n let element = questions[index];\r\n let dateTimeCalcClass = element.classList.contains('dateTimeCalc');\r\n \r\n if (element.id.split('-')[2] == 'date') {\r\n if (dateTimeCalcClass) {\r\n dateTimeCalcQuestions.push(element.id);\r\n }\r\n else {\r\n let newDate;\r\n\r\n if (currentQuestion == element.id) {\r\n if (questionEvent) {\r\n newDate = new Date(Date.UTC(questionEvent.getUTCFullYear(), questionEvent.getUTCMonth(), questionEvent.getUTCDate())).getTime();\r\n }\r\n else {\r\n newDate = null;\r\n } \r\n }\r\n else {\r\n let formDate = this.innerForm.controls[element.id].value;\r\n\r\n if (formDate) {\r\n newDate = new Date(Date.UTC(formDate.getUTCFullYear(), formDate.getUTCMonth(), formDate.getUTCDate())).getTime();\r\n }\r\n else {\r\n newDate = null;\r\n }\r\n }\r\n\r\n dateQuestions[dateArray.length] = { dateQuestionId: element.id, value: newDate };\r\n dateArray.push(element.id);\r\n }\r\n }\r\n\r\n if (element.id.split('-')[2] == 'time') {\r\n timeQuestions[timeArray.length] = { timeQuestionId: element.id, value: currentQuestion == element.id ? questionEvent : this.innerForm.controls[element.id].value };\r\n timeArray.push(element.id);\r\n }\r\n }\r\n\r\n this.dateTimeComparison(1, dateQuestions[0].value, timeQuestions[0].value, dateQuestions[1].value, timeQuestions[1].value, dateTimeCalcQuestions[0], \"Recognition of death cannot come before date of admission\");\r\n this.dateTimeComparison(2, dateQuestions[1].value, timeQuestions[1].value, dateQuestions[2].value, timeQuestions[2].value, dateTimeCalcQuestions[1], \"Date of admission cannot come before date of death\");\r\n this.dateTimeComparison(3, dateQuestions[0].value, timeQuestions[0].value, dateQuestions[2].value, timeQuestions[2].value, dateTimeCalcQuestions[2], \"Recognition of death cannot come before date of death\");\r\n }\r\n }\r\n\r\n dateTimeComparison(dateOrder, date1, time1, date2, time2, calculationQuestion, errorMessage) {\r\n if (date1 && date2) {\r\n //Both dates must exist for necessary processing\r\n if (date1 > date2) {\r\n //Date one is greater than date two, dates are out of alignment\r\n this.innerForm.controls[calculationQuestion].setValue(\"False\");\r\n\r\n if (dateOrder == 1) {\r\n this.innerForm.controls[calculationQuestion].setErrors({ 'dateOutOfBounds1' : true });\r\n this.dateOutOfBounds1 = errorMessage \r\n }\r\n\r\n if (dateOrder == 2) {\r\n this.innerForm.controls[calculationQuestion].setErrors({ 'dateOutOfBounds2' : true });\r\n this.dateOutOfBounds2 = errorMessage \r\n }\r\n\r\n if (dateOrder == 3) {\r\n this.innerForm.controls[calculationQuestion].setErrors({ 'dateOutOfBounds3' : true });\r\n this.dateOutOfBounds3 = errorMessage \r\n }\r\n }\r\n else if (date1 == date2) {\r\n //Dates are the same so then check times\r\n if (time1 && time2) {\r\n //Both times have to exist for check, if there is only one time no comparison is made, even if this would put the dates out of alignment\r\n if (time1 <= time2) {\r\n if (dateOrder == 3) {\r\n let startTime = time1.split(\":\");\r\n let endTime = time2.split(\":\");\r\n\r\n let startTimeMinutes: number = +startTime[0] * 60 + +startTime[1];\r\n let endTimeMinutes: number = +endTime[0] * 60 + +endTime[1];\r\n\r\n if (endTimeMinutes - startTimeMinutes <= 240) {\r\n //Times are within 4 hour threshold\r\n let timeError = \"Time of death cannot be within 4 hours of time of admission.\"\r\n\r\n this.innerForm.controls[calculationQuestion].setValue(\"False\"); \r\n this.innerForm.controls[calculationQuestion].setErrors({ 'dateOutOfBounds3' : true });\r\n this.dateOutOfBounds3 = timeError \r\n }\r\n else {\r\n //Time is outside 4 hour threshold\r\n this.innerForm.controls[calculationQuestion].setValue(\"True\");\r\n this.innerForm.controls[calculationQuestion].setErrors(null);\r\n\r\n if (dateOrder == 1) { this.dateOutOfBounds1 = null }\r\n if (dateOrder == 2) { this.dateOutOfBounds2 = null }\r\n }\r\n }\r\n else {\r\n //Time one is smaller that time two, dates are aligned correctly\r\n this.innerForm.controls[calculationQuestion].setValue(\"True\");\r\n this.innerForm.controls[calculationQuestion].setErrors(null);\r\n\r\n if (dateOrder == 1) { this.dateOutOfBounds1 = null }\r\n if (dateOrder == 2) { this.dateOutOfBounds2 = null }\r\n if (dateOrder == 3) { this.dateOutOfBounds3 = null }\r\n }\r\n }\r\n else {\r\n //Dates are not aligned\r\n this.innerForm.controls[calculationQuestion].setValue(\"False\");\r\n\r\n if (dateOrder == 1) {\r\n this.innerForm.controls[calculationQuestion].setErrors({ 'dateOutOfBounds1' : true });\r\n this.dateOutOfBounds1 = errorMessage \r\n }\r\n \r\n if (dateOrder == 2) {\r\n this.innerForm.controls[calculationQuestion].setErrors({ 'dateOutOfBounds2' : true });\r\n this.dateOutOfBounds2 = errorMessage \r\n }\r\n \r\n if (dateOrder == 3) {\r\n this.innerForm.controls[calculationQuestion].setErrors({ 'dateOutOfBounds3' : true });\r\n this.dateOutOfBounds3 = errorMessage \r\n }\r\n }\r\n }\r\n else {\r\n //Dates are aligned correctly\r\n this.innerForm.controls[calculationQuestion].setValue(\"True\");\r\n this.innerForm.controls[calculationQuestion].setErrors(null);\r\n\r\n if (dateOrder == 1) { this.dateOutOfBounds1 = null }\r\n if (dateOrder == 2) { this.dateOutOfBounds2 = null }\r\n if (dateOrder == 3) { this.dateOutOfBounds3 = null }\r\n }\r\n }\r\n else {\r\n //Dates are aligned correctly\r\n this.innerForm.controls[calculationQuestion].setValue(\"True\");\r\n this.innerForm.controls[calculationQuestion].setErrors(null);\r\n\r\n if (dateOrder == 1) { this.dateOutOfBounds1 = null }\r\n if (dateOrder == 2) { this.dateOutOfBounds2 = null }\r\n if (dateOrder == 3) { this.dateOutOfBounds3 = null }\r\n }\r\n }\r\n else {\r\n //Remove all calculations as missing dates\r\n this.innerForm.controls[calculationQuestion].setValue(null);\r\n this.innerForm.controls[calculationQuestion].setErrors(null);\r\n\r\n if (dateOrder == 1) { this.dateOutOfBounds1 = null }\r\n if (dateOrder == 2) { this.dateOutOfBounds2 = null }\r\n if (dateOrder == 3) { this.dateOutOfBounds3 = null }\r\n }\r\n }\r\n\r\n questionCount(currentQuestion: string, value) {\r\n let cQuestion = this.innerForm.controls[currentQuestion];\r\n\r\n if(currentQuestion.split('-')[2] == 'date') {\r\n this.innerForm.controls[currentQuestion].clearValidators();\r\n } \r\n\r\n //Date questions are checked based on the touched critera - the datepicker doesnt update the form in the same method as other questions\r\n if ((cQuestion.dirty || (cQuestion.touched && currentQuestion.split('-')[2] == 'date')) && value) {\r\n this.countEmit(currentQuestion, 'add');\r\n }\r\n else if (cQuestion.dirty && !value) {\r\n this.countEmit(currentQuestion, 'remove');\r\n }\r\n }\r\n\r\n parentCheck(question, value) {\r\n let conditionType;\r\n if (question.conditionQuestions[0]) {\r\n conditionType = question.conditionQuestions[0].conditionType;\r\n }\r\n \r\n if (question.isParent === true && conditionType == 2) {\r\n let changedValue = +value.split(': ')[1],\r\n existingValue = +question.responses[0].value;\r\n this.parentChangeEmitter.emit({ question: question, changedValue: changedValue, existingValue: existingValue });\r\n }\r\n }\r\n\r\n countEmit(question: string, state: string) {\r\n this.questionCountEmitter.emit(question + '.' + state);\r\n }\r\n\r\n totalEmit() {\r\n this.questionTotalEmitter.emit();\r\n }\r\n\r\n updateStatus(event) {\r\n if (event.path[0].classList.contains(\"panel-heading\") || event.path[1].classList.contains(\"accordion-toggle\") || event.path[2].classList.contains(\"accordion-toggle\") || event.path[3].classList.contains(\"accordion-toggle\")) {\r\n this.isOpen = !this.isOpen;\r\n }\r\n }\r\n\r\n updateChildQuestion(event, value) {\r\n if (this.question.conditionQuestions.length > 0) {\r\n let questions = document.getElementsByClassName(\"parentId-\" + event.split('-')[0]),\r\n popupQuestions = document.getElementsByClassName(\"popupId-\" + event.split('-')[0]);\r\n\r\n if (this.question.questionType == 'dropdown' && this.question.conditionQuestions[0].conditionType == 1) {\r\n let response = value.split(':')[1].trim();\r\n\r\n if (this.question.questionResponseType == 'YN') {\r\n let ynresponse = this.question.options.filter(a => a.optionId == response)[0].displaySequence;\r\n\r\n if (ynresponse >= this.question.conditionQuestions[0].conditionMin && ynresponse <= this.question.conditionQuestions[0].conditionMax) {\r\n this.enableQuestions(questions);\r\n this.enablePopupQuestions(popupQuestions);\r\n }\r\n else {\r\n this.disableQuestions(questions);\r\n this.disablePopupQuestions(popupQuestions);\r\n }\r\n }\r\n else {\r\n if (response >= this.question.conditionQuestions[0].conditionMin && response <= this.question.conditionQuestions[0].conditionMax) {\r\n this.enableQuestions(questions);\r\n this.enablePopupQuestions(popupQuestions);\r\n }\r\n else {\r\n this.disableQuestions(questions);\r\n this.disablePopupQuestions(popupQuestions);\r\n }\r\n }\r\n }\r\n\r\n if (this.question.questionType == 'N1' && this.question.conditionQuestions[0].conditionType == 1 && (+value || +value == 0)) {\r\n if (+value >= this.question.conditionQuestions[0].conditionMin && +value <= this.question.conditionQuestions[0].conditionMax) {\r\n this.enableQuestions(questions);\r\n }\r\n else {\r\n this.disableQuestions(questions);\r\n }\r\n }\r\n }\r\n }\r\n\r\n disableQuestions(questions) {\r\n for (let index = 0; index < questions.length; index++) {\r\n const element = questions[index];\r\n \r\n this.innerForm.controls[element.id].disable();\r\n this.innerForm.controls[element.id].setValue(null);\r\n this.innerForm.controls[element.id].markAsDirty();\r\n }\r\n }\r\n \r\n disablePopupQuestions(questions) {\r\n for (let index = 0; index < questions.length; index++) {\r\n const element = questions[index];\r\n element.className = element.className + ' disabled-popup'; \r\n }\r\n }\r\n\r\n enableQuestions(questions) {\r\n for (let index = 0; index < questions.length; index++) {\r\n const element = questions[index];\r\n \r\n this.innerForm.controls[element.id].enable();\r\n }\r\n }\r\n\r\n enablePopupQuestions(questions) {\r\n for (let index = 0; index < questions.length; index++) {\r\n const element = questions[index];\r\n element.className = element.className.replace(' disabled-popup', '');\r\n }\r\n }\r\n\r\n // Question Editing (Active Admin)\r\n openEdit(question) {\r\n this.editQuestion.emit(question);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { AuthGuardService } from 'app/utilities/services/auth-guard.service';\r\nimport { DataValidationComponent } from './data-validation.component';\r\n\r\nconst dataValidationRoutes: Routes = [\r\n { path: 'validation/:projectId/:year', component: DataValidationComponent, canActivate: [AuthGuardService] }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(dataValidationRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class DataValidationRoutingModule { }","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Back to Project Overview\\r\\n \\r\\n
\\r\\n
1\\\">\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

\\r\\n Loading validations...\\r\\n

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

Validation Points

\\r\\n

{{ projectOverview.projectName }}

\\r\\n

\\r\\n
\\r\\n The list below shows the validation points for the {{ projectOverview.projectName }}.
\\r\\n
\\r\\n To review the responses, click on the question text; this will take you to the relevant data collection\\r\\n page. If you are happy that the response is correct and does not require update, select ‘Confirmed’. There is also\\r\\n a chat that can be used to communicate with the {{ projectOverview.projectName }} team.
\\r\\n
\\r\\n All changes to the validation points listed will be communicated to the project team automatically, but if\\r\\n you need any support contact them directly.\\r\\n

\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ submissionName }}
\\r\\n Q: {{ displayQuestionText }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n \\\"avatar\\\"\\r\\n {{ data.sent_at | date: 'MMM d, y h:mm a' }}\\r\\n {{ data.username }}\\r\\n
    \\r\\n
    \\r\\n
    \\r\\n {{ data.message }}\\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
0\\\">\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Status\\r\\n \\r\\n Last updated\\r\\n Submission & Service\\r\\n \\r\\n Question & ResponseToolkitChatConfirmedAction
\\r\\n

You currently don't have any validation points

\\r\\n
\\r\\n \\r\\n {{ item.status || \\\"Pending\\\" | uppercase }}\\r\\n \\r\\n \\r\\n {{ item.lastUpdated }} \\r\\n \\r\\n {{ item.submissionName }}
\\r\\n {{ item.serviceItemName || \\\"—\\\" }}\\r\\n
\\r\\n
\\r\\n \\r\\n {{ item.displayQuestionText | slice:0:30 }}{{ item.displayQuestionText.length > 30 ? '...' : '' }}\\r\\n
\\r\\n
\\r\\n {{ item.response || \\\"—\\\" }}\\r\\n
\\r\\n —\\r\\n \\r\\n \\r\\n {{ item.tierId ? \\\"View Chart\\\" : \\\"N/A\\\"}}\\r\\n \\r\\n \\r\\n \\r\\n Open Chat\\r\\n New\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n N/A\\r\\n \\r\\n \\r\\n Expand\\r\\n \\r\\n
\\r\\n Comment\\r\\n \\r\\n {{ item.validationDescription | slice:0:150 }}{{ item.validationDescription.length > 150 ? '...' : '' }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"#selectorBar {\\n background-color: #005EB8;\\n margin-top: -2em; }\\n\\n#selectorBar .btn-back {\\n color: white;\\n font-size: 17px;\\n line-height: 2.5em; }\\n\\n#selectorBar .btn-back .fa {\\n margin-right: 5px; }\\n\\n#selectorBar .btn-back:hover {\\n cursor: pointer; }\\n\\n#selectorBar .form-group {\\n padding: 5px 0;\\n margin-bottom: 0;\\n background-color: #004485; }\\n\\n#containerProfile {\\n min-height: 45em;\\n padding-bottom: 6em;\\n background-color: #f3f3f3; }\\n\\ntextarea {\\n resize: none; }\\n\\n.question {\\n color: #005EB8; }\\n\\n.question:hover {\\n text-decoration: underline;\\n cursor: pointer; }\\n\\nth {\\n vertical-align: middle !important; }\\n\\n.view-card {\\n margin-top: 1.5em;\\n background-color: white;\\n padding-bottom: 2em;\\n padding-top: 2em;\\n padding-left: 2em;\\n padding-right: 2em;\\n border: 1px solid #ccc;\\n border-radius: 5px;\\n position: relative; }\\n\\n.confirmed {\\n background-color: green;\\n color: white;\\n padding: 2px;\\n border: 2px solid green;\\n border-radius: 7px; }\\n\\n.fas:hover {\\n cursor: pointer; }\\n\\n.form-controls {\\n background-color: #004485;\\n border-radius: 5px;\\n color: white;\\n border: none; }\\n\\n.form-controls,\\n.form-controls:focus {\\n outline: none;\\n box-shadow: none;\\n padding: 5px; }\\n\\n.form-controls:hover,\\n .form-controls:focus:hover {\\n cursor: pointer; }\\n\\n#selectorBar {\\n background-color: #005EB8;\\n margin-top: -2em; }\\n\\n#selectorBar .btn-back {\\n color: white;\\n font-size: 17px;\\n line-height: 2.5em; }\\n\\n#selectorBar .btn-back .fa {\\n margin-right: 5px; }\\n\\n#selectorBar .btn-back:hover {\\n cursor: pointer; }\\n\\n#selectorBar .form-group {\\n padding: 5px 0;\\n margin-bottom: 0;\\n background-color: #004485; }\\n\\n#selectorBar .form-control {\\n background-color: #004485;\\n color: white;\\n border: none; }\\n\\n.text-truncate {\\n display: inline-block;\\n max-width: 150px;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis; }\\n\\n.fa-times {\\n color: red;\\n margin-top: 3px;\\n margin-left: 5px;\\n float: left; }\\n\\n.comment-title {\\n vertical-align: top;\\n font-size: x-small;\\n padding-right: 10px; }\\n\\n.comment-text {\\n font-weight: 400;\\n display: inline-block; }\\n\\n.fa-check {\\n color: green;\\n margin-top: 3px;\\n margin-right: 5px;\\n float: right; }\\n\\n.fa-check-square {\\n color: gray; }\\n\\n.updated {\\n background-color: orangered;\\n color: white;\\n padding: 2px;\\n border: 2px solid orangered;\\n border-radius: 7px; }\\n\\n.fa-sort-alpha-down {\\n margin-left: 3px;\\n line-height: inherit !important; }\\n\\n.fa-sort-alpha-down.grayed-out {\\n color: gray; }\\n\\nh1 {\\n margin-bottom: 0px !important; }\\n\\nh3 {\\n margin-top: 0px !important; }\\n\\nlabel, .form-control {\\n font-size: 16px !important; }\\n\\n.line {\\n border-right: 2px solid #ddd; }\\n\\n.fa-check-square:hover {\\n color: green;\\n cursor: pointer; }\\n\\n.pending {\\n background-color: #005EB8;\\n color: white;\\n padding: 2px;\\n border: 2px solid #005EB8;\\n border-radius: 7px; }\\n\\n.text {\\n display: inline-block;\\n vertical-align: middle; }\\n\\n.card {\\n background: #fff;\\n transition: .5s;\\n border: 0;\\n border-radius: .55rem;\\n position: relative;\\n width: 100%; }\\n\\n.chat .chat-header {\\n padding: 15px 20px;\\n border-bottom: 2px solid #f4f7f6; }\\n\\n.chat .chat-header img {\\n float: left;\\n border-radius: 40px;\\n width: 40px; }\\n\\n.chat .chat-header .chat-about {\\n float: left;\\n padding-left: 10px; }\\n\\n.chat .chat-history {\\n padding: 20px;\\n border-bottom: 2px solid #fff; }\\n\\n.chat .chat-history ul {\\n padding: 0; }\\n\\n.chat .chat-history ul li {\\n list-style: none;\\n margin-bottom: 30px; }\\n\\n.chat .chat-history ul li:last-child {\\n margin-bottom: 0px; }\\n\\n.chat .chat-history .message-data {\\n margin-bottom: 15px; }\\n\\n.chat .chat-history .message-data img {\\n border-radius: 40px;\\n width: 40px; }\\n\\n.chat .chat-history .message-data-time {\\n color: #434651;\\n padding-left: 6px; }\\n\\n.chat .chat-history .message {\\n color: #444;\\n padding: 18px 20px;\\n line-height: 26px;\\n font-size: 16px;\\n border-radius: 7px;\\n display: inline-block;\\n position: relative; }\\n\\n.chat .chat-history .my-message {\\n background: #efefef; }\\n\\n.chat .chat-history .my-message {\\n background: #efefef; }\\n\\n.search-input {\\n border-radius: 5px; }\\n\\n.chat .chat-history .other-message {\\n background: #e8f1f3;\\n text-align: right; }\\n\\n.message-admin {\\n padding: 3px;\\n border-radius: 5px;\\n background: #e8f1f3;\\n border-bottom-color: #e8f1f3; }\\n\\n.chat .chat-message {\\n padding: 20px; }\\n\\n.float-right {\\n float: right; }\\n\\ntbody:nth-child(even) {\\n background-color: #f9f9f9; }\\n\\ntbody {\\n border-bottom: 2px solid #ddd; }\\n\\n.clearfix:after {\\n visibility: hidden;\\n font-size: 0;\\n content: \\\" \\\";\\n clear: both;\\n height: 0; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZGF0YS12YWxpZGF0aW9uL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxhcHBcXGRhdGEtdmFsaWRhdGlvblxcZGF0YS12YWxpZGF0aW9uLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9kYXRhLXZhbGlkYXRpb24vQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNFLHlCQ0RnQjtFREVoQixnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxZQUFZO0VBQ1osZUFBZTtFQUNmLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGVBQWUsRUFBQTs7QUFHakI7RUFDRSxjQUFjO0VBQ2QsZ0JBQWdCO0VBQ2hCLHlCQUF5QixFQUFBOztBQUczQjtFQUNFLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIseUJBQXlCLEVBQUE7O0FBRzNCO0VBQ0UsWUFBWSxFQUFBOztBQUdkO0VBQ0UsY0FBYyxFQUFBOztBQURoQjtJQUdNLDBCQUEwQjtJQUMxQixlQUFlLEVBQUE7O0FBSXJCO0VBQ0UsaUNBQWlDLEVBQUE7O0FBSW5DO0VBQ0UsaUJBQWlCO0VBQ2pCLHVCQUF1QjtFQUN2QixtQkFBbUI7RUFDbkIsZ0JBQWdCO0VBQ2hCLGlCQUFpQjtFQUNqQixrQkFBa0I7RUFDbEIsc0JBQXNCO0VBQ3RCLGtCQUFrQjtFQUNsQixrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSx1QkFBdUI7RUFDdkIsWUFBWTtFQUNaLFlBQVk7RUFDWix1QkFBdUI7RUFDdkIsa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsZUFBZSxFQUFBOztBQUdqQjtFQUNFLHlCQUF5QjtFQUN6QixrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLFlBQVksRUFBQTs7QUFHZDs7RUFFRSxhQUFhO0VBQ2IsZ0JBQWdCO0VBQ2hCLFlBQVksRUFBQTs7QUFKZDs7SUFNSSxlQUFlLEVBQUE7O0FBSW5CO0VBQ0UseUJDMUZnQjtFRDJGaEIsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0UsWUFBWTtFQUNaLGVBQWU7RUFDZixrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxpQkFBaUIsRUFBQTs7QUFHbkI7RUFDRSxlQUFlLEVBQUE7O0FBR2pCO0VBQ0UsY0FBYztFQUNkLGdCQUFnQjtFQUNoQix5QkFBeUIsRUFBQTs7QUFHM0I7RUFDRSx5QkFBeUI7RUFDekIsWUFBWTtFQUNaLFlBQVksRUFBQTs7QUFHZDtFQUNFLHFCQUFxQjtFQUNyQixnQkFBZ0I7RUFDaEIsbUJBQW1CO0VBQ25CLGdCQUFnQjtFQUNoQix1QkFBdUIsRUFBQTs7QUFHekI7RUFDRSxVQUFVO0VBQ1YsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQixXQUFXLEVBQUE7O0FBR2I7RUFDRSxtQkFBbUI7RUFDbkIsa0JBQWtCO0VBQ2xCLG1CQUFtQixFQUFBOztBQUdyQjtFQUNFLGdCQUFnQjtFQUNoQixxQkFBcUIsRUFBQTs7QUFHdkI7RUFDRSxZQUFZO0VBQ1osZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixZQUFZLEVBQUE7O0FBR2Q7RUFDRSxXQUFXLEVBQUE7O0FBR2I7RUFDRSwyQkFBMkI7RUFDM0IsWUFBWTtFQUNaLFlBQVk7RUFDWiwyQkFBMkI7RUFDM0Isa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsZ0JBQWdCO0VBQ2hCLCtCQUErQixFQUFBOztBQUZqQztJQUlNLFdBQVcsRUFBQTs7QUFJakI7RUFDRSw2QkFBNkIsRUFBQTs7QUFHL0I7RUFDRSwwQkFBMEIsRUFBQTs7QUFHNUI7RUFDRSwwQkFBMEIsRUFBQTs7QUFHNUI7RUFDRSw0QkFBNEIsRUFBQTs7QUFHOUI7RUFDRSxZQUFZO0VBQ1osZUFBZSxFQUFBOztBQUdqQjtFQUNFLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1osWUFBWTtFQUNaLHlCQUF5QjtFQUN6QixrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxxQkFBcUI7RUFDckIsc0JBQXNCLEVBQUE7O0FBY3hCO0VBQ0ksZ0JBQWdCO0VBQ2hCLGVBQWU7RUFDZixTQUFTO0VBQ1QscUJBQXFCO0VBQ3JCLGtCQUFrQjtFQUNsQixXQUFXLEVBQUE7O0FBSWY7RUFDSSxrQkFBa0I7RUFDbEIsZ0NBQ0osRUFBQTs7QUFFQTtFQUNJLFdBQVc7RUFDWCxtQkFBbUI7RUFDbkIsV0FDSixFQUFBOztBQUVBO0VBQ0ksV0FBVztFQUNYLGtCQUNKLEVBQUE7O0FBRUE7RUFDSSxhQUFhO0VBQ2IsNkJBQ0osRUFBQTs7QUFFQTtFQUNJLFVBQ0osRUFBQTs7QUFFQTtFQUNJLGdCQUFnQjtFQUNoQixtQkFDSixFQUFBOztBQUVBO0VBQ0ksa0JBQ0osRUFBQTs7QUFFQTtFQUNJLG1CQUNKLEVBQUE7O0FBRUE7RUFDSSxtQkFBbUI7RUFDbkIsV0FDSixFQUFBOztBQUVBO0VBQ0ksY0FBYztFQUNkLGlCQUNKLEVBQUE7O0FBRUE7RUFDSSxXQUFXO0VBQ1gsa0JBQWtCO0VBQ2xCLGlCQUFpQjtFQUNqQixlQUFlO0VBQ2Ysa0JBQWtCO0VBQ2xCLHFCQUFxQjtFQUNyQixrQkFDSixFQUFBOztBQUVBO0VBQ0ksbUJBQ0osRUFBQTs7QUFFQTtFQUNFLG1CQUNGLEVBQUE7O0FBRUE7RUFDRSxrQkFBa0IsRUFBQTs7QUFJcEI7RUFDSSxtQkFBbUI7RUFDbkIsaUJBQ0osRUFBQTs7QUFFQTtFQUNFLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQ25CLDRCQUE0QixFQUFBOztBQUc5QjtFQUNJLGFBQ0osRUFBQTs7QUFFQTtFQUNJLFlBQ0osRUFBQTs7QUFFQTtFQUNFLHlCQUF5QixFQUFBOztBQUczQjtFQUNFLDZCQUE2QixFQUFBOztBQUcvQjtFQUNJLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osWUFBWTtFQUNaLFdBQVc7RUFDWCxTQUNKLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9kYXRhLXZhbGlkYXRpb24vZGF0YS12YWxpZGF0aW9uLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcIi4uLy4uL3ZhcmlhYmxlc1wiO1xyXG5cclxuLy8gU2VsZWN0b3JCYXJcclxuI3NlbGVjdG9yQmFyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgbWFyZ2luLXRvcDogLTJlbTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idG4tYmFjayB7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGZvbnQtc2l6ZTogMTdweDtcclxuICBsaW5lLWhlaWdodDogMi41ZW07XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuYnRuLWJhY2sgLmZhIHtcclxuICBtYXJnaW4tcmlnaHQ6IDVweDtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idG4tYmFjazpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmZvcm0tZ3JvdXAge1xyXG4gIHBhZGRpbmc6IDVweCAwO1xyXG4gIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDQ4NTtcclxufVxyXG5cclxuI2NvbnRhaW5lclByb2ZpbGUge1xyXG4gIG1pbi1oZWlnaHQ6IDQ1ZW07XHJcbiAgcGFkZGluZy1ib3R0b206IDZlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzO1xyXG59XHJcblxyXG50ZXh0YXJlYSB7XHJcbiAgcmVzaXplOiBub25lO1xyXG59XHJcblxyXG4ucXVlc3Rpb24ge1xyXG4gIGNvbG9yOiAjMDA1RUI4O1xyXG4gICY6aG92ZXIge1xyXG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIH1cclxufVxyXG5cclxudGgge1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLy8gQ2FyZCBMYXlvdXRcclxuLnZpZXctY2FyZCB7XHJcbiAgbWFyZ2luLXRvcDogMS41ZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgcGFkZGluZy1ib3R0b206IDJlbTtcclxuICBwYWRkaW5nLXRvcDogMmVtO1xyXG4gIHBhZGRpbmctbGVmdDogMmVtO1xyXG4gIHBhZGRpbmctcmlnaHQ6IDJlbTtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5jb25maXJtZWQge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IGdyZWVuO1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBwYWRkaW5nOiAycHg7XHJcbiAgYm9yZGVyOiAycHggc29saWQgZ3JlZW47XHJcbiAgYm9yZGVyLXJhZGl1czogN3B4O1xyXG59XHJcblxyXG4uZmFzOmhvdmVyIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5mb3JtLWNvbnRyb2xzIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0NDg1O1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgYm9yZGVyOiBub25lO1xyXG59XHJcblxyXG4uZm9ybS1jb250cm9scyxcclxuLmZvcm0tY29udHJvbHM6Zm9jdXMge1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgYm94LXNoYWRvdzogbm9uZTtcclxuICBwYWRkaW5nOiA1cHg7XHJcbiAgJjpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgfVxyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICRuaHMtYmx1ZTtcclxuICBtYXJnaW4tdG9wOiAtMmVtO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ0bi1iYWNrIHtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgZm9udC1zaXplOiAxN3B4O1xyXG4gIGxpbmUtaGVpZ2h0OiAyLjVlbTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idG4tYmFjayAuZmEge1xyXG4gIG1hcmdpbi1yaWdodDogNXB4O1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ0bi1iYWNrOmhvdmVyIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuZm9ybS1ncm91cCB7XHJcbiAgcGFkZGluZzogNXB4IDA7XHJcbiAgbWFyZ2luLWJvdHRvbTogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0NDg1O1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmZvcm0tY29udHJvbCB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDQ4NTtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgYm9yZGVyOiBub25lO1xyXG59XHJcblxyXG4udGV4dC10cnVuY2F0ZSB7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIG1heC13aWR0aDogMTUwcHg7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG59XHJcblxyXG4uZmEtdGltZXMge1xyXG4gIGNvbG9yOiByZWQ7XHJcbiAgbWFyZ2luLXRvcDogM3B4OyBcclxuICBtYXJnaW4tbGVmdDogNXB4OyBcclxuICBmbG9hdDogbGVmdDtcclxufVxyXG5cclxuLmNvbW1lbnQtdGl0bGUge1xyXG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7IFxyXG4gIGZvbnQtc2l6ZTogeC1zbWFsbDsgXHJcbiAgcGFkZGluZy1yaWdodDogMTBweDtcclxufVxyXG5cclxuLmNvbW1lbnQtdGV4dCB7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbn1cclxuXHJcbi5mYS1jaGVjayB7XHJcbiAgY29sb3I6IGdyZWVuO1xyXG4gIG1hcmdpbi10b3A6IDNweDtcclxuICBtYXJnaW4tcmlnaHQ6IDVweDsgXHJcbiAgZmxvYXQ6IHJpZ2h0O1xyXG59XHJcblxyXG4uZmEtY2hlY2stc3F1YXJlIHtcclxuICBjb2xvcjogZ3JheTtcclxufVxyXG5cclxuLnVwZGF0ZWQge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IG9yYW5nZXJlZDtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgcGFkZGluZzogMnB4O1xyXG4gIGJvcmRlcjogMnB4IHNvbGlkIG9yYW5nZXJlZDtcclxuICBib3JkZXItcmFkaXVzOiA3cHg7XHJcbn1cclxuXHJcbi5mYS1zb3J0LWFscGhhLWRvd24ge1xyXG4gIG1hcmdpbi1sZWZ0OiAzcHg7XHJcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQgIWltcG9ydGFudDtcclxuICAmLmdyYXllZC1vdXQge1xyXG4gICAgICBjb2xvcjogZ3JheTtcclxuICB9XHJcbn1cclxuXHJcbmgxIHtcclxuICBtYXJnaW4tYm90dG9tOiAwcHggIWltcG9ydGFudDtcclxufVxyXG5cclxuaDMge1xyXG4gIG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5sYWJlbCwgLmZvcm0tY29udHJvbCB7XHJcbiAgZm9udC1zaXplOiAxNnB4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5saW5lIHtcclxuICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjZGRkO1xyXG59XHJcblxyXG4uZmEtY2hlY2stc3F1YXJlOmhvdmVye1xyXG4gIGNvbG9yOiBncmVlbjtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5wZW5kaW5nIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA1RUI4O1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBwYWRkaW5nOiAycHg7XHJcbiAgYm9yZGVyOiAycHggc29saWQgIzAwNUVCODtcclxuICBib3JkZXItcmFkaXVzOiA3cHg7XHJcbn1cclxuXHJcbi50ZXh0IHtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxufVxyXG5cclxuXHJcbi8vIGh0bWwubm8tc2Nyb2xsIHtcclxuLy8gICBvdmVyZmxvdzogaGlkZGVuO1xyXG4vLyB9XHJcblxyXG4vLyBib2R5e1xyXG4vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjdmNjtcclxuLy8gfVxyXG5cclxuLy8gYm9keSB7IG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsgfVxyXG5cclxuLmNhcmQge1xyXG4gICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgIHRyYW5zaXRpb246IC41cztcclxuICAgIGJvcmRlcjogMDtcclxuICAgIGJvcmRlci1yYWRpdXM6IC41NXJlbTtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG5cclxuLmNoYXQgLmNoYXQtaGVhZGVyIHtcclxuICAgIHBhZGRpbmc6IDE1cHggMjBweDtcclxuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZjRmN2Y2XHJcbn1cclxuXHJcbi5jaGF0IC5jaGF0LWhlYWRlciBpbWcge1xyXG4gICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0MHB4O1xyXG4gICAgd2lkdGg6IDQwcHhcclxufVxyXG5cclxuLmNoYXQgLmNoYXQtaGVhZGVyIC5jaGF0LWFib3V0IHtcclxuICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4XHJcbn1cclxuXHJcbi5jaGF0IC5jaGF0LWhpc3Rvcnkge1xyXG4gICAgcGFkZGluZzogMjBweDtcclxuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZmZmXHJcbn1cclxuXHJcbi5jaGF0IC5jaGF0LWhpc3RvcnkgdWwge1xyXG4gICAgcGFkZGluZzogMFxyXG59XHJcblxyXG4uY2hhdCAuY2hhdC1oaXN0b3J5IHVsIGxpIHtcclxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4XHJcbn1cclxuXHJcbi5jaGF0IC5jaGF0LWhpc3RvcnkgdWwgbGk6bGFzdC1jaGlsZCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwcHhcclxufVxyXG5cclxuLmNoYXQgLmNoYXQtaGlzdG9yeSAubWVzc2FnZS1kYXRhIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDE1cHhcclxufVxyXG5cclxuLmNoYXQgLmNoYXQtaGlzdG9yeSAubWVzc2FnZS1kYXRhIGltZyB7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0MHB4O1xyXG4gICAgd2lkdGg6IDQwcHhcclxufVxyXG5cclxuLmNoYXQgLmNoYXQtaGlzdG9yeSAubWVzc2FnZS1kYXRhLXRpbWUge1xyXG4gICAgY29sb3I6ICM0MzQ2NTE7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDZweFxyXG59XHJcblxyXG4uY2hhdCAuY2hhdC1oaXN0b3J5IC5tZXNzYWdlIHtcclxuICAgIGNvbG9yOiAjNDQ0O1xyXG4gICAgcGFkZGluZzogMThweCAyMHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDI2cHg7XHJcbiAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiA3cHg7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmVcclxufVxyXG5cclxuLmNoYXQgLmNoYXQtaGlzdG9yeSAubXktbWVzc2FnZSB7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZWZlZmVmXHJcbn1cclxuXHJcbi5jaGF0IC5jaGF0LWhpc3RvcnkgLm15LW1lc3NhZ2Uge1xyXG4gIGJhY2tncm91bmQ6ICNlZmVmZWZcclxufVxyXG5cclxuLnNlYXJjaC1pbnB1dCB7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4OyBcclxufVxyXG5cclxuXHJcbi5jaGF0IC5jaGF0LWhpc3RvcnkgLm90aGVyLW1lc3NhZ2Uge1xyXG4gICAgYmFja2dyb3VuZDogI2U4ZjFmMztcclxuICAgIHRleHQtYWxpZ246IHJpZ2h0XHJcbn1cclxuXHJcbi5tZXNzYWdlLWFkbWluIHtcclxuICBwYWRkaW5nOiAzcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4OyBcclxuICBiYWNrZ3JvdW5kOiAjZThmMWYzO1xyXG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICNlOGYxZjM7XHJcbn1cclxuXHJcbi5jaGF0IC5jaGF0LW1lc3NhZ2Uge1xyXG4gICAgcGFkZGluZzogMjBweFxyXG59XHJcblxyXG4uZmxvYXQtcmlnaHQge1xyXG4gICAgZmxvYXQ6IHJpZ2h0XHJcbn1cclxuXHJcbnRib2R5Om50aC1jaGlsZChldmVuKSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcclxufVxyXG5cclxudGJvZHkge1xyXG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZGRkO1xyXG59XHJcblxyXG4uY2xlYXJmaXg6YWZ0ZXIge1xyXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gICAgZm9udC1zaXplOiAwO1xyXG4gICAgY29udGVudDogXCIgXCI7XHJcbiAgICBjbGVhcjogYm90aDtcclxuICAgIGhlaWdodDogMFxyXG59IiwiJGljb24tZm9udC1wYXRoOiAnLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC1zYXNzL2Fzc2V0cy9mb250cy9ib290c3RyYXAvJztcclxuXHJcbi8vIEN1c3RvbSB2YXJpYWJsZXNcclxuJG5ocy1ibHVlOiAjMDA1RUI4O1xyXG4kbmhzLWRhcmstYmx1ZTogIzAwNDQ4NTtcclxuJG5ocy1ncmV5OiAjNzY4NjkyO1xyXG4kbmhzLWZhZGVkLWJsdWU6ICNGMkY3RkI7XHJcbiRhY3RpdmUtYWRtaW4teWVsbG93OiAjRkRCQzMwO1xyXG4kYWN0aXZlLWFkbWluLWRhcmt5ZWxsb3c6ICNFNTk5MDA7XHJcbiBcclxuLy8gQm9vdHN0cmFwIHZhcmlhYmxlc1xyXG4kdGV4dC1jb2xvcjogYmxhY2s7XHJcbiRib3JkZXItcmFkaXVzLWJhc2U6IDA7XHJcbiRib3JkZXItcmFkaXVzLXNtYWxsOiAwO1xyXG4kYnJhbmQtcHJpbWFyeTogJG5ocy1ibHVlO1xyXG4kYnJhbmQtc3VjY2VzczogZ3JlZW47XHJcbiRsaW5rLWhvdmVyLWRlY29yYXRpb246IG5vbmU7XHJcbiRmb250LXNpemUtaDQ6IDE3cHg7XHJcbiRuYXZiYXItbWFyZ2luLWJvdHRvbTogMDtcclxuJG5hdmJhci1oZWlnaHQ6IDYwcHg7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWNvbG9yOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1iZzogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtYm9yZGVyLWNvbG9yOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1pY29uLWJhci1iZzogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaG92ZXItYmc6IHdoaXRlO1xyXG5cclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1iZzogJG5ocy1ibHVlO1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWNvbG9yOiB3aGl0ZTtcclxuJG5hdi1waWxscy1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kdGFibGUtYmctaG92ZXI6ICRuaHMtZmFkZWQtYmx1ZTtcclxuJGhlYWRpbmdzLXNtYWxsLWNvbG9yOiAkbmhzLWdyZXk7Il19 */\"","import { Component, ElementRef, HostListener, OnInit, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { OutputValidationService } from 'app/outputs-validation/outputs-validation.service';\r\nimport { CsvDownload } from 'app/utilities/classes/csv/csv-download';\r\nimport { ProjectOverviewList } from 'app/utilities/classes/project/project-overview-list';\r\nimport { ProjectOverviewValidate } from 'app/utilities/classes/project/project-overview-validate';\r\nimport { DataService } from 'app/utilities/services/data.service';\r\nimport { MemberService } from 'app/utilities/services/member.service';\r\nimport { environment } from 'environments/environment';\r\nimport * as moment from 'moment';\r\n\r\n@Component({\r\n selector: 'app-data-validation',\r\n templateUrl: './data-validation.component.html',\r\n styleUrls: ['./data-validation.component.scss']\r\n})\r\nexport class DataValidationComponent implements OnInit {\r\n @HostListener('window:focus') onFocus() {\r\n this.validations(this.organisationId);\r\n }\r\n\r\n public data: any;\r\n public sourceOfTruth: any;\r\n public year: number;\r\n public project: string;\r\n public projectId: number;\r\n public statusSorted: boolean = false;\r\n public submissionSorted: boolean = false;\r\n public organisationId: number;\r\n public projectOverview: ProjectOverviewValidate;\r\n public subFilterData: Array = [];\r\n public organisationList: Array;\r\n public serviceFilterData: Array = [];\r\n public selectedSubmission: Array = [];\r\n public selectedOrg: number;\r\n public selectedFilter: string;\r\n public extractData: any;\r\n public selectedValidationResponseId: number;\r\n public comment: string;\r\n public organisationDetails: any;\r\n public chatHistory: any;\r\n public selectedValidationId: number = null;\r\n public submissionName: string;\r\n public displayQuestionText: string;\r\n public selectedValidation: any;\r\n public tabsOpen: any = [];\r\n public showComments: boolean = false;\r\n public hasWhitespace: boolean = false;\r\n\r\n public csvSettings: CsvDownload = {\r\n fileName: 'validations',\r\n buttonText: 'Download (.csv)',\r\n buttonStyle: 'btn btn-primary',\r\n icon: '',\r\n headers: ['Status', 'Question', 'Question Link', 'Toolkit', 'Submission', 'Service', 'Response', 'Notes', 'Comments'],\r\n keys: ['status', 'displayQuestionText', 'collectionLink', 'reportLink', 'submissionName', 'serviceItemName', 'responses', 'userNote', 'validationDescriptions'],\r\n styling: true\r\n }\r\n\r\n @ViewChild('myArea') myTextArea: ElementRef;\r\n \r\n constructor(\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private dataService: DataService,\r\n private memberService: MemberService,\r\n private outputValidationService: OutputValidationService\r\n ) { \r\n this.projectId = parseInt(route.snapshot.paramMap.get('projectId'));\r\n this.year = parseInt(route.snapshot.paramMap.get('year'));\r\n }\r\n\r\n ngOnInit() {\r\n this.organisationId = JSON.parse(sessionStorage.getItem('organisationId'));\r\n this.organisationDetails = JSON.parse(sessionStorage.getItem('organisation'));\r\n if(this.organisationId == null) {\r\n this.getOrganisationsByUser();\r\n } else {\r\n this.router.navigate([], { queryParams: { id: this.organisationId }, queryParamsHandling: 'merge' });\r\n this.getProjectOverview(this.projectId);\r\n this.getTiers(this.projectId, this.year);\r\n }\r\n }\r\n\r\n getChatHistory(validationId: number, selectedResponseId: number, data) {\r\n this.chatHistory = null;\r\n this.selectedValidationResponseId = selectedResponseId;\r\n this.selectedValidationId = validationId;\r\n this.submissionName = this.selectedValidation.submissionName\r\n this.displayQuestionText = this.selectedValidation.displayQuestionText\r\n\r\n this.memberService.ValidationConversationHistory(validationId).subscribe(\r\n success => {\r\n this.chatHistory = success.result;\r\n this.chatHistory.reverse();\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n\r\n changeOrganisation(organisationId) {\r\n this.dataService.setSelectedOrganisation(organisationId);\r\n this.data = this.sourceOfTruth;\r\n this.extractData = this.data;\r\n this.serviceFilterData = [];\r\n this.selectedFilter = null;\r\n this.subFilterData = [];\r\n this.projectOverview = null;\r\n this.ngOnInit();\r\n }\r\n\r\n getProjectOverview(projectId: number) {\r\n this.memberService.ProjectOverviewOrganisations(projectId).subscribe(\r\n a => {\r\n this.projectOverview = a.data;\r\n this.organisationList = this.projectOverview.viewOutputsOrganisationList;\r\n this.selectedOrg = this.organisationId;\r\n this.validations(this.organisationId);\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n\r\n getOrganisationsByUser() {\r\n this.memberService.OrganisationsByUser().subscribe(\r\n o => { \r\n this.organisationId = o.data[0].organisationId;\r\n this.dataService.setOrganisation(o.data)\r\n this.dataService.setSelectedOrganisation(this.organisationId);\r\n this.router.navigate([], { queryParams: { id: this.organisationId }, queryParamsHandling: 'merge' });\r\n this.getProjectOverview(this.projectId);\r\n this.validations(this.organisationId);\r\n this.getTiers(this.projectId, this.year);\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n );\r\n }\r\n\r\n private validations(organisationId): void {\r\n this.outputValidationService.getValidations(this.projectId, this.year, organisationId).subscribe(\r\n success => {\r\n this.data = success.data.validations;\r\n this.data.forEach(vld => {\r\n \r\n // Add status depending on response updates\r\n if ((vld.status !== 'validated' && vld.status !== 'confirmed' && vld.status !== 'accepted') && (vld.createdAt > vld.lastUpdated || !vld.lastUpdated)) { vld.status = 'pending' };\r\n if (vld.status !== 'validated' && (vld.questionId && vld.createdAt < vld.lastUpdated)) { vld.status = 'updated' };\r\n if (vld.responseDeleted == 'Y') { vld.status = 'deleted' }\r\n if(this.subFilterData.indexOf(vld.submissionName) === -1) {\r\n this.subFilterData.push(vld.submissionName);\r\n }\r\n vld.showComment = false\r\n this.tabsOpen.push({validationId: vld.validationId, tabOpen: false})\r\n if(vld.lastUpdated) {\r\n vld.lastUpdated = moment(vld.lastUpdated).format('lll');\r\n } else {\r\n vld.lastUpdated = 'N/A'\r\n }\r\n })\r\n this.data = this.setAvailableResponses(this.data, this.year);\r\n\r\n this.data = this.data.filter(value => {\r\n return !value.status.includes('validated') && !value.status.includes('accepted');\r\n });\r\n\r\n this.data.sort((a, b) => {\r\n const order = { 'Y': 1, 'N': 2, null: 3 };\r\n return order[a.alertUser] - order[b.alertUser];\r\n });\r\n\r\n if(this.showComments) {\r\n this.data.forEach(item => item.showComment = true)\r\n }\r\n\r\n if(this.tabsOpen) {\r\n this.tabsOpen.forEach(tab => {\r\n this.data.filter(data => {\r\n if(data.validationId == tab.validationId && tab.tabOpen == true) {\r\n data.showComment = true;\r\n }\r\n })\r\n })\r\n }\r\n\r\n this.sourceOfTruth = this.data;\r\n this.extractData = this.data;\r\n if(this.projectOverview) {\r\n this.createExtract();\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n },\r\n () => {\r\n if(this.selectedFilter) {\r\n this.setSubmissionFilter(this.selectedFilter);\r\n }\r\n }\r\n )\r\n }\r\n\r\n expandOpen(validation, value) {\r\n this.tabsOpen.filter(data => {\r\n if(data.validationId == validation.validationId) {\r\n data.tabOpen = value;\r\n }\r\n })\r\n\r\n return value;\r\n }\r\n\r\n showAllComments(value) {\r\n this.showComments = value;\r\n this.data.forEach(item => item.showComment = value)\r\n this.tabsOpen.forEach(item => item.tabOpen = value)\r\n }\r\n\r\n\r\n liveOrTestUrl() {\r\n let url: string;\r\n // Check environment\r\n if (environment.production) {\r\n url = 'https://members.nhsbenchmarking.nhs.uk/'\r\n } else {\r\n url = 'http://membertest.bmchealth.co.uk/'\r\n }\r\n\r\n return url\r\n }\r\n\r\n createExtract() {\r\n let url: string = this.liveOrTestUrl();\r\n this.csvSettings.fileName = this.projectOverview.projectName;\r\n this.extractData.forEach(validation => {\r\n if(validation.questionGroupLevel) {\r\n if (validation.serviceItemId > 0) {\r\n url + 'data-collection/'\r\n + validation.questionGroupLevel + '/' \r\n + validation.submissionId + '/' \r\n + validation.validationYear + '/' \r\n + validation.serviceItemId + '?group=' \r\n + validation.questionGroupId + '#'\r\n + validation.questionId;\r\n } else {\r\n url + 'data-collection/'\r\n + validation.questionGroupLevel + '/' \r\n + validation.submissionId + '/'\r\n + validation.validationYear + '?group=' \r\n + validation.questionGroupId + '#'\r\n + validation.questionId;\r\n }\r\n } else {\r\n url = \"Not Available\"\r\n }\r\n \r\n if(validation.tierId) {\r\n validation.reportLink = url + 'outputs/' + this.projectId + '?tier=' + validation.tierId + '&option=' + validation.optionId\r\n } else {\r\n validation.reportLink = \"Not Available\";\r\n }\r\n \r\n validation.collectionLink = url;\r\n validation.responses = !validation.response ? '-' : validation.response;\r\n validation.userNote = !validation.userNotes ? '-' : validation.userNotes;\r\n validation.validationDescriptions = !validation.validationDescription ? '-' : validation.validationDescription;\r\n })\r\n }\r\n\r\n checkWhitespace(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n if (input.value.startsWith(' ')) {\r\n this.hasWhitespace = true;\r\n input.value = '';\r\n this.comment = null;\r\n } else {\r\n this.hasWhitespace = false;\r\n }\r\n }\r\n\r\n setSubmissionFilter(org: string) {\r\n this.selectedFilter = org\r\n this.serviceFilterData = [];\r\n this.data = this.sourceOfTruth;\r\n this.data = this.data.filter(orgs => orgs.submissionName == org)\r\n\r\n this.data.forEach(item => {\r\n if(this.serviceFilterData.indexOf(item.serviceItemName) === -1) {\r\n this.serviceFilterData.push(item.serviceItemName);\r\n }\r\n })\r\n this.extractData = this.data;\r\n }\r\n\r\n setServiceFilter(service) {\r\n this.data = this.data.filter(serv => serv.serviceItemName == service)\r\n this.extractData = this.data;\r\n }\r\n\r\n public setAvailableResponses(responses: any, year: number): any {\r\n responses.forEach(resp => {\r\n let displayQuestionText;\r\n if (resp.nestedQuestionText) {\r\n displayQuestionText = `${ resp.questionText } | ${ resp.nestedQuestionText }`\r\n // Add heading text, if available\r\n if (resp.nestedQuestionHeadingText) { displayQuestionText = `${ resp.questionText } | ${ resp.nestedQuestionText } | ${ resp.nestedQuestionHeadingText }` }\r\n } else {\r\n displayQuestionText = resp.questionText;\r\n }\r\n resp.displayQuestionText = this.replacePlaceholder(displayQuestionText, year);\r\n });\r\n\r\n return responses;\r\n }\r\n\r\n public editValidationStatus(validationId: number, status: string, note: any, validationResponseId: number): void {\r\n let updatedValidation = {\r\n validationId: validationId,\r\n status: status\r\n }\r\n \r\n this.outputValidationService.editValidationStatus(updatedValidation).subscribe(\r\n success => {\r\n this.ngOnInit();\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n\r\n private getTiers(projectId: number, year: number): void {\r\n this.outputValidationService.getProjectTiers(projectId, year).subscribe(\r\n success => {\r\n this.project = success.data;\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n\r\n public editUserValidationNote(validationResponseId: number, note: any) {\r\n let updatedNote = {\r\n validationResponseId: this.selectedValidationResponseId,\r\n note: note\r\n }\r\n \r\n this.outputValidationService.editUserValidationNote(updatedNote).subscribe(\r\n success => {\r\n this.getChatHistory(this.selectedValidationId, this.selectedValidationResponseId, null);\r\n this.comment = null;\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n \r\n public dataCollectionLink(validation: any): void {\r\n let url: string;\r\n if (validation.serviceItemId > 0) {\r\n url = '/data-collection/' \r\n + validation.questionGroupLevel + '/' \r\n + validation.submissionId + '/' \r\n + validation.validationYear + '/' \r\n + validation.serviceItemId + '?group=' \r\n + validation.questionGroupId + '#'\r\n + validation.questionId;\r\n } else {\r\n url = '/data-collection/' \r\n + validation.questionGroupLevel + '/' \r\n + validation.submissionId + '/'\r\n + validation.validationYear + '?group=' \r\n + validation.questionGroupId + '#'\r\n + validation.questionId;\r\n }\r\n window.open(url, '_blank');\r\n }\r\n\r\n public outputsLink(validation) {\r\n let url: string = this.liveOrTestUrl();\r\n url = url + 'outputs/' + this.projectId + '?tier=' + validation.tierId + '&option=' + validation.optionId\r\n window.open(url, '_blank');\r\n }\r\n\r\n public sortByStatus(sorted, column) {\r\n if(!sorted) {\r\n this.data.sort((a, b) => a[column].localeCompare(b[column]));\r\n } else {\r\n this.data.sort((a, b) => b[column].localeCompare(a[column]));\r\n }\r\n if(column == 'status') {\r\n this.statusSorted = !sorted;\r\n } else {\r\n this.submissionSorted = !sorted;\r\n }\r\n this.extractData = this.data;\r\n }\r\n\r\n public replacePlaceholder(text, year): string {\r\n if (text == null) { return text; }\r\n\r\n if (text.indexOf(\"|SINGLE_YEAR_CURRENT|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_CURRENT\\|\\*/g, year.toString());\r\n }\r\n if (text.indexOf(\"|SINGLE_YEAR_NEXT|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_NEXT\\|\\*/g, (year + 1).toString());\r\n }\r\n if (text.indexOf(\"|SINGLE_YEAR_PREVIOUS|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_PREVIOUS\\|\\*/g, (year - 1).toString());\r\n }\r\n if (text.indexOf(\"|SINGLE_YEAR_MINUS_2|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_MINUS_2\\|\\*/g, (year - 2).toString());\r\n }\r\n if (text.indexOf(\"|SINGLE_YEAR_MINUS_3|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_MINUS_3\\|\\*/g, (year - 3).toString());\r\n }\r\n if (text.indexOf(\"|DOUBLE_YEAR_NEXT|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_NEXT\\|\\*/g, (year).toString() + \"/\" + (year + 1).toString().substring(2, 4));\r\n } \r\n if (text.indexOf(\"|DOUBLE_YEAR_CURRENT|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_CURRENT\\|\\*/g, (year - 1).toString() + \"/\" + (year).toString().substring(2, 4));\r\n } \r\n if (text.indexOf(\"|DOUBLE_YEAR_PREVIOUS|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_PREVIOUS\\|\\*/g, (year - 2).toString() + \"/\" + (year - 1).toString().substring(2, 4));\r\n }\r\n if (text.indexOf(\"|DOUBLE_YEAR_MINUS_2|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_MINUS_2\\|\\*/g, (year - 3).toString() + \"/\" + (year - 2).toString().substring(2, 4));\r\n }\r\n if (text.indexOf(\"|DOUBLE_YEAR_MINUS_3|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_MINUS_3\\|\\*/g, (year - 4).toString() + \"/\" + (year - 3).toString().substring(2, 4));\r\n }\r\n text = text.replace(/ /g, \"\");\r\n return text;\r\n }\r\n\r\n navProjectdetail() {\r\n this.router.navigate([`/project-overview/${this.projectId}`]);\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms'\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { NgPipesModule } from 'ngx-pipes';\r\nimport { Ng2HighchartsModule } from 'ng2-highcharts';\r\nimport { CsvDownloadModule } from 'app/shared/csv-download/csv-download.module';\r\nimport { ModalModule, TooltipModule } from 'ngx-bootstrap';\r\nimport { DataValidationComponent } from './data-validation.component';\r\nimport { DataValidationRoutingModule } from './data-validation-routing.module';\r\n\r\n@NgModule({\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n CommonModule,\r\n DataValidationRoutingModule,\r\n NgPipesModule,\r\n Ng2HighchartsModule,\r\n ModalModule.forRoot(),\r\n CsvDownloadModule,\r\n TooltipModule\r\n ],\r\n providers: [\r\n ],\r\n declarations: [ \r\n DataValidationComponent\r\n ]\r\n})\r\nexport class DataValidationModule {}","\r\nexport type ParsedEvent = {\r\n id: number,\r\n timestamp: Date,\r\n start: string,\r\n end: string,\r\n title: string,\r\n description: string,\r\n location: string,\r\n meetingId: string,\r\n meetingPasscode: string,\r\n meetingUrl: string\r\n}\r\n\r\nexport class EventICS {\r\n parsedEvent: ParsedEvent;\r\n constructor(parsedEvent: ParsedEvent) {\r\n this.parsedEvent = parsedEvent;\r\n }\r\n\r\n foldLine(line: string): string {\r\n const maxLineLength = 75;\r\n let foldedLine = '';\r\n\r\n while (line.length > maxLineLength) {\r\n foldedLine += line.substring(0, maxLineLength) + '\\r\\n ';\r\n line = line.substring(maxLineLength);\r\n }\r\n foldedLine += line;\r\n\r\n return foldedLine;\r\n }\r\n\r\n ics(): string {\r\n const description = `DESCRIPTION;ENCODING=QUOTED-PRINTABLE:=0D=0A________________________________________________________________________________Microsoft Teams meeting.=0D=0AJoin on your computer, mobile app or room device.=0D=0A${this.parsedEvent.meetingUrl}`;\r\n const xAltDesc = `X-ALT-DESC;FMTTYPE=text/html;ENCODING=QUOTED-PRINTABLE:${this.parsedEvent.description}

________________________________________________________________________________

Microsoft Teams Meeting

Join on your computer, mobile app or room device
Click here to join the meeting

Meeting ID: ${this.parsedEvent.meetingId}
Passcode: ${this.parsedEvent.meetingPasscode}

Download Teams|Join on the web

________________________________________________________________________________`\r\n\r\n return `BEGIN:VCALENDAR\r\nVERSION:2.0\r\nMETHOD:REQUEST\r\nX-MS-OLK-FORCEINSPECTOROPEN:TRUE\r\nPRODID:-//Oedgal//BMC_Scheduler//EN\r\nBEGIN:VEVENT\r\nTRANSP:OPAQUE\r\nUID:${this.parsedEvent.id}-${this.parsedEvent.start}@nhsbenchmarking.nhs.uk\r\nDTSTAMP:${this.parsedEvent.timestamp}\r\nDTSTART;TZID=GMT Standard Time:${this.parsedEvent.start}\r\nDTEND;TZID=GMT Standard Time:${this.parsedEvent.end}\r\nORGANIZER;CN=\"NHS Benchmarking\":mailto:noreply@nhsbenchmarking.nhs.uk\r\nSUMMARY:${this.parsedEvent.title}\r\nLOCATION:Microsoft Teams Meeting\r\n${this.foldLine(description)}\r\n${this.foldLine(xAltDesc)}\r\nX-MICROSOFT-CDO-BUSYSTATUS:BUSY\r\nX-MICROSOFT-CDO-IMPORTANCE:1\r\nX-MICROSOFT-DISALLOW-COUNTER:FALSE\r\nX-MS-OLK-AUTOFILLLOCATION:FALSE\r\nX-MS-OLK-CONFTYPE:0\r\nBEGIN:VALARM\r\nACTION:DISPLAY\r\nDESCRIPTION:Reminder\r\nEND:VALARM\r\nEND:VEVENT\r\nEND:VCALENDAR`;\r\n }\r\n\r\n downloadICSFile() {\r\n const icsContent = this.ics();\r\n const blob = new Blob([icsContent], { type: 'text/calendar;charset=utf-8' });\r\n const url = URL.createObjectURL(blob);\r\n\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.download = 'event.ics';\r\n document.body.appendChild(link);\r\n link.click();\r\n\r\n // Cleanup\r\n document.body.removeChild(link);\r\n URL.revokeObjectURL(url);\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { EventsComponent } from './events.component'\r\n\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service'\r\n\r\nconst eventsRoutes: Routes = [\r\n { path: 'events', component: EventsComponent, canActivate: [AuthGuardService] }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(eventsRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class EventsRoutingModule { }","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Back to Home\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n

Events

\\r\\n

\\r\\n If you wish to make a provisional booking for yourself or a colleague,\\r\\n please select an event and click on the green\\r\\n Register button.\\r\\n

\\r\\n

\\r\\n If you have any questions or require further information, please contact the\\r\\n Support Team\\r\\n on 0161 521 0818.\\r\\n

\\r\\n

\\r\\n Please note that NHS Benchmarking Network will be photographing throughout\\r\\n the events, which may be posted on our social media channels and used in\\r\\n promotional materials.\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"{{ q.content }}\\\"
\\r\\n — Feedback from {{ q.category }} event from\\r\\n {{ q.year }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

\\r\\n Loading events. Please wait...\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ i }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ i }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n {{ hideShowCategories ? \\\"Close\\\" : \\\"Filter by Category\\\" }}\\r\\n \\r\\n \\r\\n {{ hideShowRegions ? \\\"Close\\\" : \\\"Filter by Region\\\" }}\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Results are filtered to {{ filter }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Events are filtered to show one event \\r\\n
\\r\\n\\r\\n \\r\\n {{\\r\\n searchText\\r\\n ? \\\"There are no events matching this search.\\\"\\r\\n : \\\"There are currently no upcoming events.\\\"\\r\\n }}\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Click here to toggle past events. Past events include links to\\r\\n presentations and other documents.
\\r\\n You can also use the search bar above to search for specific events,\\r\\n past and future.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ event.eventDt | date: \\\"dd\\\" }}
\\r\\n {{ event.eventDt | date: \\\"MMM\\\" }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n •\\r\\n {{ event.projectCategoryName }}\\r\\n \\r\\n \\r\\n •\\r\\n {{ event.regionName }}\\r\\n \\r\\n

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

\\r\\n

\\r\\n This event took place on {{ event.eventDt | date: \\\"d MMMM y\\\" }}.\\r\\n


\\r\\n

\\r\\n This event took place on {{ event.eventDt | date: \\\"d MMMM y\\\" }}.\\r\\n

\\r\\n

\\r\\n Tags:\\r\\n {{ tag }}\\r\\n

\\r\\n\\r\\n
\\r\\n \\r\\n Register\\r\\n \\r\\n \\r\\n Register\\r\\n \\r\\n \\r\\n 0\\\"\\r\\n (click)=\\\"getDocuments(event)\\\"\\r\\n [class]=\\\"\\r\\n event.showDocuments ? 'btn btn-default' : 'btn btn-primary'\\r\\n \\\"\\r\\n >\\r\\n {{ event.showDocuments ? \\\"Hide\\\" : \\\"Show\\\" }}\\r\\n {{ getDocumentCount(event) }} \\r\\n {{ \\\"document\\\" | makePluralString: getDocumentCount(event) }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ doc.documentName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n Registration Form
\\r\\n {{ eventTitle }}\\r\\n

\\r\\n \\r\\n ×\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n This organisation is not a member of the Network. To register for\\r\\n this event, please contact\\r\\n enquiries or 0161 521 0818.\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ formErrors.delegateName }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ formErrors.delegateJob }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n {{ formErrors.delegateEmail }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n {{ formErrors.delegateNumber }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n @\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n {{ formErrors.delegateTwitter }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n {{ formErrors.delegateDiet }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n {{ formErrors.delegateAllergies }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n {{ formErrors.delegateAccess }}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Register\\r\\n \\r\\n \\r\\n Cancel\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n

\\r\\n \\r\\n You have registered successfully\\r\\n

\\r\\n

Thank you for registering for the event. If you would like to change details of your booking, or cancel your place, please email enquiries@nhsbenchmarking.nhs.uk. The MS Teams webinar link will be sent to you on the morning of the event.

\\r\\n \\r\\n Add to Calendar\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\"","module.exports = \"/* Universal Styles */\\n.loading-overview {\\n margin-top: 25vh; }\\n.loading-overview p {\\n margin-top: 0.75em;\\n font-size: 20px;\\n font-weight: 600;\\n color: #005EB8;\\n text-align: center; }\\n#containerForum {\\n padding-top: 1em;\\n background-color: #F3F3F3;\\n min-height: 80vh;\\n min-height: 100%;\\n padding-bottom: 5em;\\n z-index: -1; }\\n#selectorBar {\\n background-color: #005EB8;\\n margin-top: -2em; }\\n#selectorBar .btn-back {\\n color: white;\\n font-size: 17px;\\n line-height: 2.5em; }\\n#selectorBar .btn-back .fa {\\n margin-right: 5px; }\\n#selectorBar .btn-back:hover {\\n cursor: pointer; }\\n#selectorBar .form-group {\\n padding: 5px 0;\\n margin-bottom: 0;\\n background-color: #004485; }\\n#selectorBar .form-control {\\n background-color: #004485;\\n color: white;\\n border: none; }\\n#selectorBar .form-control:focus {\\n outline: none;\\n box-shadow: none; }\\n@media (max-width: 991px) {\\n .row .col-md-4 > .pull-right {\\n float: none !important; } }\\n@media (min-width: 1300px) {\\n #containerForum {\\n padding-left: 15%;\\n padding-right: 15%; } }\\n/* Forum-specific style */\\nh1 {\\n font-weight: 600;\\n margin-top: 1em;\\n margin-bottom: 0.5em;\\n line-height: 1.25em; }\\n.intro-p {\\n font-size: 1.2em; }\\n.btn-request {\\n margin-top: 1em;\\n margin-bottom: 1.5em; }\\n.btn-request .fal {\\n margin-right: 10px; }\\n#search {\\n margin-top: 3em;\\n padding-bottom: 1em; }\\n#searchIcon {\\n position: absolute;\\n padding: 1.1em; }\\n#search .form-group {\\n margin-bottom: 0; }\\n#search .form-control {\\n border-color: #768692;\\n box-shadow: none;\\n padding-top: 1.25em;\\n padding-bottom: 1.25em; }\\n#search .btn {\\n margin-right: 0.25em;\\n margin-bottom: 0.25em; }\\n#search .form-control {\\n padding-left: 2.5em; }\\n.filter {\\n padding: 1em;\\n background-color: #768692;\\n transition: all .5s ease-in-out; }\\n.filter .btn {\\n border-color: #768692;\\n padding: 1px 6px; }\\n.filter-showing {\\n margin-top: 1em;\\n background-color: #768692;\\n color: white;\\n padding: 1em;\\n border-radius: 4px; }\\n.filter-showing i {\\n margin-left: 0.5em; }\\n.filter-showing i:hover {\\n color: black;\\n cursor: pointer; }\\n#options {\\n margin-top: 0.5em; }\\n#options .btn-sm {\\n margin-right: 0.5em; }\\n#options .btn i {\\n margin-right: 0.5em; }\\n.group-header {\\n margin-top: 2em;\\n margin-bottom: 1em;\\n font-size: 1.5em;\\n font-weight: 600; }\\n.no-matches {\\n margin: 15em 0;\\n color: #768692;\\n font-weight: 600;\\n text-align: center; }\\n.request {\\n margin-top: 1.5em;\\n background-color: white;\\n padding: 2em;\\n border: 1px solid #ccc;\\n border-radius: 5px;\\n position: relative; }\\n.request.past {\\n background-color: transparent; }\\n.request-collapsed .request-header h3 {\\n font-size: 1.25em;\\n margin-bottom: 0.75em; }\\n.request.past,\\n.request.past .request-header h3 {\\n color: gray !important; }\\n.request .edit {\\n position: absolute;\\n top: 0;\\n right: 0;\\n background-color: #fdbc30;\\n padding: 0.25em 0.5em;\\n border-radius: 0 4px 0 4px;\\n font-weight: 600;\\n font-size: 1.25em; }\\n.request .edit:hover {\\n background-color: #e59900;\\n cursor: pointer; }\\n.request-header h3 {\\n margin-top: 0.25em;\\n margin-bottom: 0.25em; }\\n.request-header h3 i {\\n color: #ccc;\\n font-size: 0.75em;\\n margin-left: 0.25em; }\\n.request-header h3:hover {\\n cursor: pointer; }\\n.request-header h3:hover i {\\n color: #005EB8; }\\n.copyInput {\\n display: none !important; }\\n@media (min-width: 768px) {\\n .title-correction {\\n margin-left: -5%; } }\\n.request-body {\\n margin-top: 1em;\\n padding-top: 1em;\\n border-top: 1px solid #ccc; }\\n.request-body p {\\n margin-bottom: 0; }\\n.request-body p .read-more:hover {\\n cursor: pointer;\\n color: black; }\\n.request-body .text-primary {\\n margin-left: 0.25em; }\\n.request-meta {\\n margin-bottom: 0;\\n color: #768692;\\n font-size: 14px; }\\n.request-tags {\\n margin-top: 1em;\\n color: #768692;\\n font-size: 14px; }\\n.request-tags .tag {\\n color: #005EB8;\\n margin-right: 0.5em; }\\n.request-tags .tag:hover {\\n color: black;\\n cursor: pointer; }\\n.event-actions {\\n margin-top: 1em; }\\n.document {\\n font-weight: 600;\\n color: #005EB8;\\n margin: 0.5em 0; }\\n.document .far {\\n margin-right: 0.25em; }\\n.document:hover {\\n cursor: pointer;\\n color: black; }\\n.date-block {\\n width: 60px;\\n border-radius: 3px;\\n color: #768692;\\n background-color: #F3F3F3;\\n border: 1px solid #CCC;\\n font-weight: 600;\\n text-align: center;\\n padding: 0.5em 0; }\\n.date-block .day {\\n line-height: 1em;\\n font-size: 1.5em; }\\n.date-block .month {\\n line-height: 1em;\\n text-transform: uppercase; }\\n.form-actions .btn {\\n margin-right: 0.5em; }\\n.quotes .panel-body span {\\n font-size: 0.8em;\\n color: #768692;\\n line-height: 0.5em; }\\n.hint {\\n border: 1px solid #768692;\\n color: #768692;\\n margin: 1em 0;\\n padding: 0.5em 1em;\\n font-weight: 500; }\\n.hint:hover {\\n border-color: #005EB8;\\n color: #005EB8;\\n cursor: pointer; }\\n.hint i {\\n margin: 0.25em;\\n font-size: 2em; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZXZlbnRzL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxhcHBcXGV2ZW50c1xcZXZlbnRzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9ldmVudHMvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxxQkFBQTtBQUVBO0VBQ0UsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDRSxrQkFBa0I7RUFDbEIsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQixjQ1RnQjtFRFVoQixrQkFBa0IsRUFBQTtBQUdwQjtFQUNFLGdCQUFnQjtFQUNoQix5QkFBeUI7RUFDekIsZ0JBQWdCO0VBQ2hCLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsV0FBVyxFQUFBO0FBR2I7RUFDRSx5QkN2QmdCO0VEd0JoQixnQkFBZ0IsRUFBQTtBQUdsQjtFQUNFLFlBQVk7RUFDWixlQUFlO0VBQ2Ysa0JBQWtCLEVBQUE7QUFHcEI7RUFDRSxpQkFBaUIsRUFBQTtBQUduQjtFQUNFLGVBQWUsRUFBQTtBQUdqQjtFQUNFLGNBQWM7RUFDZCxnQkFBZ0I7RUFDaEIseUJBQXlCLEVBQUE7QUFHM0I7RUFDRSx5QkFBeUI7RUFDekIsWUFBWTtFQUNaLFlBQVksRUFBQTtBQUdkO0VBQ0UsYUFBYTtFQUNiLGdCQUFnQixFQUFBO0FBR2xCO0VBQ0k7SUFDSSxzQkFBc0IsRUFBQSxFQUN6QjtBQUdMO0VBQ0k7SUFDSSxpQkFBaUI7SUFDakIsa0JBQWtCLEVBQUEsRUFDckI7QUFHTCx5QkFBQTtBQUVBO0VBQ0ksZ0JBQWdCO0VBQ2hCLGVBQWU7RUFDZixvQkFBb0I7RUFDcEIsbUJBQW1CLEVBQUE7QUFHdkI7RUFDSSxnQkFBZ0IsRUFBQTtBQUdwQjtFQUNJLGVBQWU7RUFDZixvQkFBb0IsRUFBQTtBQUd4QjtFQUNJLGtCQUFrQixFQUFBO0FBR3RCO0VBQ0ks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O0FBR3BCO0VBQ0kscUJDeFZjO0VEeVZkLGNDelZjO0VEMFZkLGVBQWUsRUFBQTtBQUduQjtFQUNJLGNBQWM7RUFDZCxjQUFjLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9ldmVudHMvZXZlbnRzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vdmFyaWFibGVzJztcclxuXHJcbi8qIFVuaXZlcnNhbCBTdHlsZXMgKi9cclxuXHJcbi5sb2FkaW5nLW92ZXJ2aWV3IHtcclxuICBtYXJnaW4tdG9wOiAyNXZoO1xyXG59XHJcblxyXG4ubG9hZGluZy1vdmVydmlldyBwIHtcclxuICBtYXJnaW4tdG9wOiAwLjc1ZW07XHJcbiAgZm9udC1zaXplOiAyMHB4O1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbn1cclxuXHJcbiNjb250YWluZXJGb3J1bSB7XHJcbiAgcGFkZGluZy10b3A6IDFlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGM0YzO1xyXG4gIG1pbi1oZWlnaHQ6IDgwdmg7XHJcbiAgbWluLWhlaWdodDogMTAwJTtcclxuICBwYWRkaW5nLWJvdHRvbTogNWVtO1xyXG4gIHotaW5kZXg6IC0xO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICRuaHMtYmx1ZTtcclxuICBtYXJnaW4tdG9wOiAtMmVtO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ0bi1iYWNrIHtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgZm9udC1zaXplOiAxN3B4O1xyXG4gIGxpbmUtaGVpZ2h0OiAyLjVlbTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idG4tYmFjayAuZmEge1xyXG4gIG1hcmdpbi1yaWdodDogNXB4O1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ0bi1iYWNrOmhvdmVyIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuZm9ybS1ncm91cCB7XHJcbiAgcGFkZGluZzogNXB4IDA7XHJcbiAgbWFyZ2luLWJvdHRvbTogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0NDg1O1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmZvcm0tY29udHJvbCB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDQ4NTtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgYm9yZGVyOiBub25lO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmZvcm0tY29udHJvbDpmb2N1cyB7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBib3gtc2hhZG93OiBub25lO1xyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHtcclxuICAgIC5yb3cgLmNvbC1tZC00ID4gLnB1bGwtcmlnaHQge1xyXG4gICAgICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBtZWRpYSAobWluLXdpZHRoOiAxMzAwcHgpIHtcclxuICAgICNjb250YWluZXJGb3J1bSB7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNSU7XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTUlO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKiBGb3J1bS1zcGVjaWZpYyBzdHlsZSAqL1xyXG5cclxuaDEge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuMjVlbTtcclxufVxyXG5cclxuLmludHJvLXAge1xyXG4gICAgZm9udC1zaXplOiAxLjJlbTtcclxufVxyXG5cclxuLmJ0bi1yZXF1ZXN0IHtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDEuNWVtO1xyXG59XHJcblxyXG4uYnRuLXJlcXVlc3QgLmZhbCB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbn1cclxuXHJcbiNzZWFyY2gge1xyXG4gICAgbWFyZ2luLXRvcDogM2VtO1xyXG4gICAgcGFkZGluZy1ib3R0b206IDFlbTtcclxufVxyXG5cclxuI3NlYXJjaEljb24ge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgcGFkZGluZzogMS4xZW07XHJcbn1cclxuXHJcbiNzZWFyY2ggLmZvcm0tZ3JvdXAge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxufVxyXG5cclxuI3NlYXJjaCAuZm9ybS1jb250cm9sIHtcclxuICAgIGJvcmRlci1jb2xvcjogJG5ocy1ncmV5O1xyXG4gICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgIHBhZGRpbmctdG9wOiAxLjI1ZW07XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMS4yNWVtO1xyXG59XHJcblxyXG4jc2VhcmNoIC5idG4ge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjI1ZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjI1ZW1cclxufVxyXG5cclxuI3NlYXJjaCAuZm9ybS1jb250cm9sIHtcclxuICAgIHBhZGRpbmctbGVmdDogMi41ZW07XHJcbn1cclxuXHJcbi5maWx0ZXIge1xyXG4gICAgcGFkZGluZzogMWVtO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1ncmV5O1xyXG4gICAgdHJhbnNpdGlvbjogYWxsIC41cyBlYXNlLWluLW91dDtcclxufVxyXG5cclxuLmZpbHRlciAuYnRuIHtcclxuICAgIGJvcmRlci1jb2xvcjogJG5ocy1ncmV5O1xyXG4gICAgcGFkZGluZzogMXB4IDZweDtcclxufVxyXG5cclxuLmZpbHRlci1zaG93aW5nIHtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRuaHMtZ3JleTtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIHBhZGRpbmc6IDFlbTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxufVxyXG5cclxuLmZpbHRlci1zaG93aW5nIGkge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDAuNWVtO1xyXG59XHJcblxyXG4uZmlsdGVyLXNob3dpbmcgaTpob3ZlciB7XHJcbiAgICBjb2xvcjogYmxhY2s7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbiNvcHRpb25zIHtcclxuICAgIG1hcmdpbi10b3A6IDAuNWVtO1xyXG59XHJcblxyXG4jb3B0aW9ucyAuYnRuLXNtIHtcclxuICAgIG1hcmdpbi1yaWdodDogMC41ZW07XHJcbn1cclxuXHJcbiNvcHRpb25zIC5idG4gaSB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59XHJcblxyXG4uZ3JvdXAtaGVhZGVyIHtcclxuICAgIG1hcmdpbi10b3A6IDJlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcclxuICAgIGZvbnQtc2l6ZTogMS41ZW07XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG59XHJcblxyXG4ubm8tbWF0Y2hlcyB7XHJcbiAgICBtYXJnaW46IDE1ZW0gMDtcclxuICAgIGNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG59XHJcblxyXG4ucmVxdWVzdCB7XHJcbiAgICBtYXJnaW4tdG9wOiAxLjVlbTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgcGFkZGluZzogMmVtO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLnJlcXVlc3QucGFzdCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxufVxyXG5cclxuLnJlcXVlc3QtY29sbGFwc2VkIC5yZXF1ZXN0LWhlYWRlciBoMyB7XHJcbiAgICBmb250LXNpemU6IDEuMjVlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuNzVlbTtcclxufVxyXG5cclxuLnJlcXVlc3QucGFzdCxcclxuLnJlcXVlc3QucGFzdCAucmVxdWVzdC1oZWFkZXIgaDMge1xyXG4gICAgY29sb3I6IGdyYXkgIWltcG9ydGFudDtcclxufVxyXG5cclxuLnJlcXVlc3QgLmVkaXQge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRiYzMwO1xyXG4gICAgcGFkZGluZzogMC4yNWVtIDAuNWVtO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMCA0cHggMCA0cHg7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgZm9udC1zaXplOiAxLjI1ZW07XHJcbn1cclxuXHJcbi5yZXF1ZXN0IC5lZGl0OmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlNTk5MDA7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5yZXF1ZXN0LWhlYWRlciBoMyB7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjI1ZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjI1ZW07XHJcbn1cclxuXHJcbi5yZXF1ZXN0LWhlYWRlciBoMyBpIHtcclxuICAgIGNvbG9yOiAjY2NjO1xyXG4gICAgZm9udC1zaXplOiAwLjc1ZW07XHJcbiAgICBtYXJnaW4tbGVmdDogMC4yNWVtO1xyXG59XHJcblxyXG4ucmVxdWVzdC1oZWFkZXIgaDM6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgJiBpIHtcclxuICAgICAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgfVxyXG59XHJcblxyXG4uY29weUlucHV0IHtcclxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG5cclxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XHJcbiAgICAudGl0bGUtY29ycmVjdGlvbiB7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC01JTtcclxuICAgIH1cclxufVxyXG5cclxuLnJlcXVlc3QtYm9keSB7XHJcbiAgICBtYXJnaW4tdG9wOiAxZW07XHJcbiAgICBwYWRkaW5nLXRvcDogMWVtO1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjY2M7XHJcbn1cclxuXHJcbi5yZXF1ZXN0LWJvZHkgcCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG59XHJcblxyXG4ucmVxdWVzdC1ib2R5IHAgLnJlYWQtbW9yZTpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBjb2xvcjogYmxhY2s7XHJcbn1cclxuXHJcbi5yZXF1ZXN0LWJvZHkgLnRleHQtcHJpbWFyeSB7XHJcbiAgICBtYXJnaW4tbGVmdDogMC4yNWVtO1xyXG59XHJcblxyXG4ucmVxdWVzdC1tZXRhIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICBjb2xvcjogJG5ocy1ncmV5O1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG59XHJcblxyXG4ucmVxdWVzdC10YWdzIHtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxuICAgIGNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbn1cclxuXHJcbi5yZXF1ZXN0LXRhZ3MgLnRhZyB7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufVxyXG5cclxuLnJlcXVlc3QtdGFncyAudGFnOmhvdmVyIHtcclxuICAgIGNvbG9yOiBibGFjaztcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmV2ZW50LWFjdGlvbnMge1xyXG4gICAgbWFyZ2luLXRvcDogMWVtO1xyXG59XHJcblxyXG4uZG9jdW1lbnQge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIGNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgICBtYXJnaW46IDAuNWVtIDA7XHJcbn1cclxuXHJcbi5kb2N1bWVudCAuZmFyIHtcclxuICAgIG1hcmdpbi1yaWdodDogMC4yNWVtO1xyXG59XHJcblxyXG4uZG9jdW1lbnQ6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgY29sb3I6IGJsYWNrO1xyXG59XHJcblxyXG4uZGF0ZS1ibG9jayB7XHJcbiAgICB3aWR0aDogNjBweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgIGNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGM0YzO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0NDQztcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBwYWRkaW5nOiAwLjVlbSAwO1xyXG59XHJcblxyXG4uZGF0ZS1ibG9jayAuZGF5IHtcclxuICAgIGxpbmUtaGVpZ2h0OiAxZW07XHJcbiAgICBmb250LXNpemU6IDEuNWVtO1xyXG59XHJcblxyXG4uZGF0ZS1ibG9jayAubW9udGgge1xyXG4gICAgbGluZS1oZWlnaHQ6IDFlbTtcclxuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbn1cclxuXHJcbi5mb3JtLWFjdGlvbnMgLmJ0biB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59XHJcblxyXG4ucXVvdGVzIC5wYW5lbC1ib2R5IHNwYW4ge1xyXG4gICAgZm9udC1zaXplOiAwLjhlbTtcclxuICAgIGNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgICBsaW5lLWhlaWdodDogMC41ZW07XHJcbn1cclxuXHJcbi5oaW50IHtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRuaHMtZ3JleTtcclxuICAgIGNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgICBtYXJnaW46IDFlbSAwO1xyXG4gICAgcGFkZGluZzogMC41ZW0gMWVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcclxufVxyXG5cclxuLmhpbnQ6aG92ZXIge1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uaGludCBpIHtcclxuICAgIG1hcmdpbjogMC4yNWVtO1xyXG4gICAgZm9udC1zaXplOiAyZW07XHJcbn0iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiXX0= */\"","import { Component, OnInit, ViewChild, HostListener, Inject } from '@angular/core';\r\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\r\nimport { Meta, Title, DOCUMENT } from '@angular/platform-browser';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ModalDirective } from 'ngx-bootstrap';\r\nimport { UniquePipe, FlattenPipe, MakePluralStringPipe, OrderByPipe } from 'ngx-pipes';\r\n\r\nimport { Event } from '../utilities/classes/event/event'\r\nimport { EventRegistration } from '../utilities/classes/event/event-registration'\r\nimport { MemberService } from '../utilities/services/member.service'\r\nimport { ErrorService } from '../utilities/services/error.service';\r\nimport { WINDOW } from \"../utilities/services/window.service\";\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { EventICS, ParsedEvent } from './event-ics';\r\n\r\n@Component({\r\n selector: 'app-events',\r\n templateUrl: './events.component.html',\r\n styleUrls: ['./events.component.scss'],\r\n providers: [ MakePluralStringPipe, OrderByPipe ]\r\n})\r\n\r\nexport class EventsComponent implements OnInit {\r\n @ViewChild('lgModal') public lgModal:ModalDirective;\r\n eventList: Event[]; filteredEvents: Event[];\r\n currentEvent: number; currentOrganisation: number;\r\n orgList: any[];\r\n eventId: number;\r\n eventTitle: string;\r\n eventRegistration: FormGroup;\r\n girft: boolean = false;\r\n orgSelection: boolean = false;\r\n isOnline: boolean = false;\r\n registered: boolean = false;\r\n public navIsFixed: boolean = false;\r\n public width: number;\r\n\r\n filter;\r\n categories; regions;\r\n hideShowCategories: boolean = false;\r\n hideShowRegions: boolean = false;\r\n showingPastEvents: boolean = false;\r\n documents;\r\n linkedEvent;\r\n\r\n quotes; selectedQuotes = [];\r\n metaTitle: string = 'Events | NHS Benchmarking Network';\r\n \r\n constructor(\r\n public unique: UniquePipe,\r\n public flatten: FlattenPipe,\r\n public pluralize: MakePluralStringPipe,\r\n public order: OrderByPipe,\r\n private MemberService: MemberService,\r\n private errorService: ErrorService,\r\n private http: HttpClient,\r\n public fb: FormBuilder,\r\n private toastr: ToastrService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private titleService: Title,\r\n private meta: Meta,\r\n @Inject(DOCUMENT) private document: Document,\r\n @Inject(WINDOW) private window\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(this.metaTitle);\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n this.getUserRegions();\r\n this.getQuotes();\r\n }\r\n\r\n getQuotes() {\r\n this.http.get('/assets/static/quotes.json').subscribe(\r\n r => {\r\n this.quotes = r;\r\n this.selectQuotes(this.quotes);\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n }\r\n\r\n selectQuotes(quotes) {\r\n var indices = [];\r\n while (indices.length < 3) {\r\n var r = Math.floor(Math.random() * (quotes.length - 1)) + 1;\r\n if (indices.indexOf(r) === -1) { indices.push(r) };\r\n }\r\n indices.forEach(ind => {\r\n this.selectedQuotes.push(quotes[ind]);\r\n });\r\n }\r\n\r\n selectOrganisation() {\r\n let selectedOrganisation = this.eventRegistration.get('orgSelect').value;\r\n\r\n this.MemberService.OrganisationProducts(selectedOrganisation).subscribe(\r\n r => { \r\n this.girft = false; \r\n let nhsbn = r.data.filter(n => n.productId === 1 && n.membershipStatusId === 5);\r\n\r\n if (nhsbn.length > 0) {\r\n this.girft = true;\r\n }\r\n\r\n this.orgSelection = true;\r\n }\r\n );\r\n }\r\n\r\n getEventList(regions?) {\r\n this.MemberService.Events().subscribe(\r\n r => { \r\n this.eventList = this.formatEvents(r.data);\r\n\r\n // Filter events to user's regions only\r\n if (regions) {\r\n this.eventList = this.eventList.filter(e => regions.includes(e.regionId) || !e.regionId)\r\n }\r\n\r\n this.categories = this.setCategories(r.data);\r\n this.regions = this.setRegions(r.data);\r\n this.filteredEvents = this.eventList.filter(e => e.when === 'future');\r\n\r\n if (this.route.snapshot.queryParams['category']) {\r\n this.filter = this.route.snapshot.queryParams['category'];\r\n this.filteredEvents = this.eventList.filter(r => r.projectCategoryName.includes(this.filter));\r\n this.showingPastEvents = true;\r\n }\r\n if (this.route.snapshot.queryParams['region']) {\r\n this.filter = this.route.snapshot.queryParams['region'];\r\n this.filteredEvents = this.eventList.filter(r => r.regionName === this.filter);\r\n this.showingPastEvents = true;\r\n }\r\n if (this.route.snapshot.queryParams['tag']) {\r\n this.filter = this.route.snapshot.queryParams['tag'];\r\n this.filteredEvents = this.eventList.filter(r => r.requestTags.includes(this.filter));\r\n this.showingPastEvents = true;\r\n }\r\n if (this.route.snapshot.queryParams['event']) {\r\n this.linkedEvent = +this.route.snapshot.queryParams['event'];\r\n this.filteredEvents = this.eventList.filter(r => r.eventId === this.linkedEvent);\r\n this.showingPastEvents = true;\r\n }\r\n\r\n },\r\n e => {\r\n console.log(e);\r\n },\r\n () => {\r\n let params = this.route.snapshot.queryParams;\r\n if (params.id) {\r\n this.showModal(null, params.id);\r\n }\r\n }\r\n );\r\n }\r\n\r\n getUserRegions() {\r\n let user = JSON.parse(sessionStorage.getItem('user'));\r\n let regions = [];\r\n\r\n if (user) {\r\n Object.keys(user.roles).forEach(key => {\r\n user.roles[key].forEach(r => {\r\n regions.push(r.regionId)\r\n })\r\n });\r\n regions = this.unique.transform(regions);\r\n this.getEventList(regions);\r\n } else {\r\n this.getEventList();\r\n } \r\n }\r\n\r\n getOrganisationsByUser() {\r\n this.MemberService.OrganisationsByUser().subscribe(\r\n o => { \r\n this.orgList = o.data;\r\n }\r\n );\r\n }\r\n\r\n registerEvent() {\r\n let data = this.eventRegistration.value;\r\n\r\n let eventDetails: EventRegistration = {\r\n organisationId: data.orgSelect,\r\n delegateName: data.delegateName,\r\n delegateEmail: data.delegateEmail,\r\n delegateJobTitle: data.delegateJob,\r\n delegateContactNo: data.delegateNumber,\r\n twitterHandle: data.delegateTwitter,\r\n dietaryRequirements: data.delegateDiet,\r\n accessRequirements: data.delegateAccess,\r\n dietaryDetails: data.delegateAllergies,\r\n delegateList: data.delegateList\r\n }\r\n\r\n this.MemberService.RegisterEvent(this.eventId, eventDetails).subscribe(\r\n s => {\r\n this.registered = true; \r\n this.orgSelection = false;\r\n },\r\n e => {\r\n console.log(e)\r\n this.toastr.error(this.errorService.getErrorMessage(e.error.error.statusCode));\r\n this.lgModal.hide();\r\n if (!e.error.error.message) {\r\n this.toastr.error('There has been an error whilst trying to register for this event. Please contact the Support Team.');\r\n this.lgModal.hide();\r\n }\r\n }\r\n );\r\n }\r\n\r\n cancelEvent() {\r\n this.lgModal.hide(); \r\n\r\n this.orgSelection = false; \r\n this.registered = false; \r\n this.isOnline = false;\r\n }\r\n \r\n hideModal() {\r\n this.orgSelection = false;\r\n this.router.navigate([], { queryParams: { id: null }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n showModal(eventName: string, eventId: number) {\r\n if(!eventName) {\r\n eventName = this.filteredEvents.filter(event => event.eventId == eventId)[0].eventName\r\n }\r\n\r\n this.buildEventForm();\r\n\r\n this.eventRegistration.controls['delegateDiet'].setValue('N');\r\n this.eventRegistration.controls['delegateList'].setValue('Y');\r\n\r\n if (this.eventList.filter(e => e.eventId == eventId)[0].isOnline === 'Y') {\r\n // Hide dietary and access requirements\r\n this.isOnline = true;\r\n };\r\n\r\n this.lgModal.show();\r\n this.eventRegistration.controls['orgSelect'].setValue(0);\r\n this.eventTitle = eventName;\r\n this.eventId = eventId;\r\n\r\n this.router.navigate([], { queryParams: { id: eventId }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n downloadIcs(eventId) {\r\n let now = new Date()\r\n let event = this.eventList.filter(e => e.eventId == eventId)[0];\r\n let endDate = null;\r\n if (event.eventEndDt) { \r\n endDate = event.eventEndDt.toString().split(/[ -.: ]+/).join('') \r\n }\r\n let parsedEvent: ParsedEvent = {\r\n id: eventId,\r\n timestamp: now,\r\n start: event.eventDt.toString().split(/[ -.: ]+/).join(''),\r\n end: endDate,\r\n title: event.eventName,\r\n description: event.eventDescription.replace(/[\\r\\n]/g, ''),\r\n location: event.eventLocation,\r\n meetingId: event.meetingId,\r\n meetingPasscode: event.meetingPasscode,\r\n meetingUrl: event.meetingUrl\r\n }\r\n \r\n const icsEvent: EventICS = new EventICS(parsedEvent);\r\n icsEvent.downloadICSFile();\r\n } \r\n \r\n @HostListener(\"window:scroll\", [])\r\n onWindowScroll() {\r\n let number = this.window.pageYOffset || this.document.documentElement.scrollTop || this.document.body.scrollTop || 0;\r\n let width = document.getElementById('sidebar').clientWidth;\r\n if (number > 80) {\r\n this.navIsFixed = true;\r\n this.width = width - 65;\r\n } else if (this.navIsFixed && number < 10) {\r\n this.navIsFixed = false;\r\n }\r\n }\r\n\r\n buildEventForm() {\r\n this.eventRegistration = this.fb.group({\r\n \"orgSelect\":[\"\"],\r\n \"delegateName\":[\"\", [Validators.required, Validators.maxLength(60)]],\r\n \"delegateEmail\":[\"\", [Validators.required, Validators.email, Validators.maxLength(60)]],\r\n \"delegateJob\":[\"\", [Validators.required, Validators.maxLength(60)]],\r\n \"delegateNumber\":[\"\", [Validators.required, Validators.maxLength(20)]],\r\n \"delegateTwitter\":[\"\", Validators.maxLength(30)],\r\n \"delegateDiet\":[\"\"],\r\n \"delegateAllergies\":[\"\", Validators.maxLength(60)],\r\n \"delegateAccess\":[\"\", [Validators.maxLength(60)]],\r\n \"delegateList\":[\"\"]\r\n })\r\n\r\n this.eventRegistration.valueChanges\r\n .subscribe(data => this.onValueChanged(data));\r\n\r\n this.onValueChanged(); \r\n }\r\n\r\n onValueChanged(data?: any) {\r\n if (!this.eventRegistration) { return; }\r\n const form = this.eventRegistration;\r\n\r\n for (const field in this.formErrors) {\r\n // clear previous error message (if any)\r\n this.formErrors[field] = '';\r\n const control = form.get(field);\r\n\r\n if (control && control.dirty && !control.valid) {\r\n const messages = this.validationMessages[field];\r\n\r\n for (const key in control.errors) {\r\n this.formErrors[field] += messages[key] + ' ';\r\n }\r\n }\r\n }\r\n }\r\n\r\n formErrors = {\r\n 'orgSelect': '',\r\n 'delegateName': '',\r\n 'delegateEmail': '',\r\n 'delegateJob': '',\r\n 'delegateNumber': '',\r\n 'delegateTwitter': '',\r\n 'delegateDiet': '',\r\n 'delegateAllergies': '',\r\n 'delegateAccess': '',\r\n 'delegateList': ''\r\n }\r\n\r\n validationMessages = {\r\n 'delegateName': {\r\n 'required': 'Delegate Name is required.',\r\n 'maxlength': 'Delegate Name cannot be longer than 60 characters.'\r\n },\r\n 'delegateEmail': {\r\n 'required': 'Delegate Email Address is required.',\r\n 'maxlength': 'Delegate Email Address cannot be longer than 60 characters.',\r\n 'email': 'Delegate Email Address is not valid.'\r\n },\r\n 'delegateJob': {\r\n 'required': 'Job Title is required.',\r\n 'maxlength': 'Job Title cannot be longer than 60 characters.'\r\n },\r\n 'delegateNumber': {\r\n 'required': 'Phone Number is required.',\r\n 'maxlength': 'Phone Number cannot be longer than 20 characters.'\r\n },\r\n 'delegateTwitter': {\r\n 'required': 'Twitter Handle is required.',\r\n 'maxlength': 'Twitter Handle cannot be longer than 30 characters.'\r\n },\r\n 'delegateDiet': {\r\n 'required': 'Diet selection required.'\r\n },\r\n 'delegateAllergies': {\r\n 'maxlength': 'Allergy Information cannot be longer than 60 characters.'\r\n },\r\n 'delegateAccess': {\r\n 'maxlength': 'Access Information cannot be longer than 60 characters.'\r\n }\r\n }\r\n\r\n formatEvents(events) {\r\n let currentDate = new Date();\r\n\r\n events.forEach(ev => {\r\n // Format tags\r\n let requestTags;\r\n if (ev.requestTags === null) {\r\n requestTags = '';\r\n } else {\r\n requestTags = ev.requestTags.split(', ');\r\n }\r\n ev.requestTags = requestTags;\r\n // Set when: past or future\r\n let eventDate = new Date(ev.eventDt);\r\n if (eventDate >= currentDate) {\r\n ev.when = 'future';\r\n } else {\r\n ev.when = 'past';\r\n }\r\n });\r\n\r\n // Order future events in chronological order\r\n // and past events in reverse chronological order\r\n let future = this.order.transform(events.filter(e => e.when === 'future'), 'eventDt');\r\n let past = this.order.transform(events.filter(e => e.when === 'past'), '-eventDt');\r\n events = future.concat(past);\r\n\r\n return events;\r\n }\r\n\r\n setCategories(events) {\r\n let categories = events.map(r => r.projectCategoryName);\r\n categories = this.unique.transform(categories);\r\n categories = this.flatten.transform(categories);\r\n return categories;\r\n }\r\n\r\n setRegions(events) {\r\n let regions = events.map(r => r.regionName);\r\n regions = this.unique.transform(regions);\r\n regions = this.flatten.transform(regions);\r\n return regions;\r\n }\r\n\r\n togglePast() {\r\n this.showingPastEvents = !this.showingPastEvents;\r\n if (this.showingPastEvents) {\r\n this.filteredEvents = this.eventList.filter(e => e.when === 'past');\r\n } else {\r\n this.filteredEvents = this.eventList.filter(e => e.when === 'future');\r\n this.clearFilter();\r\n }\r\n }\r\n\r\n filterByCategory(filter) {\r\n this.filter = filter;\r\n this.showingPastEvents = true;\r\n this.filteredEvents = this.eventList.filter(r => r.projectCategoryName.includes(this.filter));\r\n this.router.navigate([], { relativeTo: this.route, queryParams: { category: filter }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n filterByRegion(filter) {\r\n this.filter = filter;\r\n this.showingPastEvents = true;\r\n this.filteredEvents = this.eventList.filter(r => r.regionName === filter);\r\n this.router.navigate([], { relativeTo: this.route, queryParams: { region: filter }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n filterByTag(filter) {\r\n this.filter = filter;\r\n this.showingPastEvents = true;\r\n this.filteredEvents = this.eventList.filter(r => r.requestTags.includes(filter));\r\n this.router.navigate([], { relativeTo: this.route, queryParams: { tag: filter }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n clearFilter() {\r\n this.filter = null;\r\n this.linkedEvent = null;\r\n this.filteredEvents = this.eventList;\r\n this.hideShowCategories = false;\r\n this.hideShowRegions = false;\r\n this.router.navigate([], { relativeTo: this.route, queryParams: { category: null, event: null, tag: null, region: null }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n getDocuments(event) {\r\n if (event.showDocuments && event.documents) {\r\n event.showDocuments = false;\r\n } else if (!event.showDocuments && event.documents) {\r\n event.showDocuments = true;\r\n } else {\r\n this.MemberService.eventDocuments(event.eventId).subscribe(\r\n r => {\r\n let findEvent = this.eventList.indexOf(event),\r\n currentEvent = this.eventList[findEvent];\r\n currentEvent['documents'] = this.formatDocuments(r.data)[0];\r\n currentEvent['showDocuments'] = true;\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n );\r\n }\r\n }\r\n\r\n getDocumentCount(event) {\r\n let newDocumentCount: number = event.documentCount;\r\n if (event.documents) {\r\n event.documents.forEach((document) => {\r\n if (document.isVisible === \"N\") {\r\n newDocumentCount -= 1;\r\n }\r\n });\r\n }\r\n return newDocumentCount;\r\n }\r\n\r\n formatDocuments(documents) {\r\n let output = [];\r\n Object.keys(documents).map(key => {\r\n Object.keys(documents[key]).map(docs => {\r\n output.push(documents[key][docs]);\r\n });\r\n return output;\r\n })\r\n return output;\r\n }\r\n\r\n getDocument(documentId: number) {\r\n this.MemberService.AWSSelectedDocument(documentId).subscribe(\r\n a => { window.open(a.data.documentUrl) }\r\n );\r\n }\r\n\r\n copyLink(val: string){\r\n const selBox = document.createElement('textarea');\r\n selBox.style.position = 'fixed';\r\n selBox.style.left = '0';\r\n selBox.style.top = '0';\r\n selBox.style.opacity = '0';\r\n selBox.value = val;\r\n document.body.appendChild(selBox);\r\n selBox.focus();\r\n selBox.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(selBox);\r\n this.toastr.success('Event link copied to clipboard.');\r\n }\r\n\r\n navHome() {\r\n this.router.navigate(['/home']);\r\n }\r\n\r\n};","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { ModalModule } from 'ngx-bootstrap';\r\n\r\nimport { EventsComponent } from './events.component';\r\nimport { EventsRoutingModule } from './events-routing.module';\r\n\r\nimport { SafePipeModule } from '../utilities/pipes/safe-pipe.module'\r\nimport { NgPipesModule } from 'ngx-pipes';\r\n\r\n@NgModule({\r\n imports: [ \r\n CommonModule, \r\n FormsModule,\r\n ReactiveFormsModule,\r\n ToastrModule.forRoot(),\r\n ModalModule.forRoot(),\r\n SafePipeModule,\r\n EventsRoutingModule,\r\n NgPipesModule\r\n ],\r\n declarations: [ \r\n EventsComponent \r\n ]\r\n})\r\nexport class EventsModule {}","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { ForumComponent } from './forum.component'\r\n\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service'\r\n\r\nconst outputsRoutes: Routes = [\r\n { path: 'forum', component: ForumComponent, canActivate: [AuthGuardService] }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(outputsRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class ForumRoutingModule { }","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Back to Home\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n

Forum

\\r\\n

\\r\\n We have now moved our Forum over to the NHSFutures platform. You can access our extensive range of sector forums and register for NHSFutures via the below button. \\r\\n \\r\\n NHSBN NHSFutures Workspace\\r\\n \\r\\n

\\r\\n The NHSBN Forum will remain accessible to members to review past entries and network with the submitters. All new discussions will take place on our NHSFutures workspace, and we encourage you to join the discussions on there.\\r\\n If you have any questions, please get in touch.\\r\\n

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

Loading requests. Please wait...

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ i }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ i }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ i }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n There are no requests matching this search.\\r\\n
\\r\\n\\r\\n
\\r\\n Results are filtered to {{ filter }} \\r\\n
\\r\\n\\r\\n
\\r\\n
0\\\" class=\\\"group-header\\\">\\r\\n {{ group[0] }}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n

\\r\\n

\\r\\n \\r\\n {{ req.projectName.join(', ') }}\\r\\n •\\r\\n \\r\\n {{ req.requestDate | date: 'd MMMM y' }}\\r\\n 0\\\">\\r\\n •\\r\\n {{ req.commentCount }} {{ 'response' | makePluralString: req.commentCount }}\\r\\n \\r\\n

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

\\r\\n \\r\\n Read more \\r\\n

\\r\\n

\\r\\n Tags: {{ tag }}\\r\\n

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

{{ editingRequest ? 'Edit' : 'Add a new' }} request

\\r\\n

Use the form below to {{ editingRequest ? 'edit this' : 'add a new' }} request on the forum.

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

Add as comma separated list, e.g. workforce, activity, finance

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"/* Universal Styles */\\n.loading-overview {\\n margin-top: 25vh; }\\n.loading-overview p {\\n margin-top: 0.75em;\\n font-size: 20px;\\n font-weight: 600;\\n color: #005EB8;\\n text-align: center; }\\n#containerForum {\\n padding-top: 1em;\\n background-color: #F3F3F3;\\n min-height: 80vh;\\n min-height: 100%;\\n padding-bottom: 5em;\\n z-index: -1; }\\n#selectorBar {\\n background-color: #005EB8;\\n margin-top: -2em; }\\n#selectorBar .btn-back {\\n color: white;\\n font-size: 17px;\\n line-height: 2.5em; }\\n#selectorBar .btn-back .fa {\\n margin-right: 5px; }\\n#selectorBar .btn-back:hover {\\n cursor: pointer; }\\n#selectorBar .form-group {\\n padding: 5px 0;\\n margin-bottom: 0;\\n background-color: #004485; }\\n#selectorBar .form-control {\\n background-color: #004485;\\n color: white;\\n border: none; }\\n#selectorBar .form-control:focus {\\n outline: none;\\n box-shadow: none; }\\n@media (max-width: 991px) {\\n .row .col-md-4 > .pull-right {\\n float: none !important; } }\\n@media (min-width: 1300px) {\\n #containerForum {\\n padding-left: 15%;\\n padding-right: 15%; } }\\n/* Forum-specific style */\\nh1 {\\n font-weight: 600;\\n margin-top: 1em;\\n margin-bottom: 0.5em;\\n line-height: 1.25em; }\\n.intro-p {\\n font-size: 1.2em; }\\n.btn-request {\\n margin-top: 1em;\\n margin-bottom: 1.5em; }\\n.btn-request .fal {\\n margin-right: 10px; }\\n#search {\\n margin-top: 3em;\\n padding-bottom: 1em; }\\n#searchIcon {\\n position: absolute;\\n padding: 1.1em; }\\n#search .form-group {\\n margin-bottom: 0; }\\n#search .form-control {\\n border-color: #768692;\\n box-shadow: none;\\n padding-top: 1.25em;\\n padding-bottom: 1.25em; }\\n#search .btn {\\n margin-right: 0.25em;\\n margin-bottom: 0.25em; }\\n#search .form-control {\\n padding-left: 2.5em; }\\n.filter {\\n padding: 1em;\\n background-color: #768692;\\n transition: all .5s ease-in-out; }\\n.filter .btn {\\n border-color: #768692;\\n padding: 1px 6px; }\\n.filter-showing {\\n margin-top: 1em;\\n background-color: #768692;\\n color: white;\\n padding: 1em;\\n border-radius: 4px; }\\n.filter-showing i {\\n margin-left: 0.5em; }\\n.filter-showing i:hover {\\n color: black;\\n cursor: pointer; }\\n#options {\\n margin-top: 0.5em; }\\n#options .btn-sm {\\n margin-right: 0.5em; }\\n#options .btn i {\\n margin-right: 0.5em; }\\n.group-header {\\n margin-top: 2em;\\n margin-bottom: 1em;\\n font-size: 1.5em;\\n font-weight: 600; }\\n.no-matches {\\n margin-top: 5em;\\n color: #ccc;\\n text-align: center; }\\n.request {\\n margin-top: 1.5em;\\n background-color: white;\\n padding: 2em;\\n border: 1px solid #ccc;\\n border-radius: 5px;\\n position: relative; }\\n.request-collapsed .request-header h3 {\\n font-size: 1.25em;\\n margin-bottom: 0.75em; }\\n.request-collapsed .request-header h3:hover {\\n cursor: pointer;\\n color: black; }\\n.request .edit {\\n position: absolute;\\n top: 0;\\n right: 0;\\n background-color: #fdbc30;\\n padding: 0.25em 0.5em;\\n border-radius: 0 4px 0 4px;\\n font-weight: 600;\\n font-size: 1.25em; }\\n.request .edit:hover {\\n background-color: #e59900;\\n cursor: pointer; }\\n.request-header h3 {\\n margin-top: 0;\\n margin-bottom: 0.25em; }\\n.request-header h3:hover {\\n cursor: pointer;\\n color: black; }\\n.request-body {\\n margin-top: 1em;\\n padding-top: 1em;\\n border-top: 1px solid #ccc; }\\n.request-body p {\\n margin-bottom: 0; }\\n.request-body p .read-more:hover {\\n cursor: pointer;\\n color: black; }\\n.request-body .text-primary {\\n margin-left: 0.25em; }\\n.request-meta {\\n margin-bottom: 0;\\n color: #768692;\\n font-size: 14px; }\\n.request-tags {\\n margin-top: 1em;\\n color: #768692;\\n font-size: 14px; }\\n.request-tags .tag {\\n color: #005EB8;\\n margin-right: 0.5em; }\\n.request-tags .tag:hover {\\n color: black;\\n cursor: pointer; }\\n/deep/ mark {\\n padding: 0;\\n background-color: #fdbc30; }\\n/deep/ .angular-editor-toolbar-set {\\n font-size: 12px; }\\n/deep/ .angular-editor .angular-editor-wrapper .angular-editor-textarea {\\n background-color: white !important;\\n font-size: 17px; }\\n/deep/ .angular-editor-button[title=\\\"Insert Image\\\"],\\n/deep/ .angular-editor-button[title=\\\"HTML Code\\\"] {\\n display: none; }\\n/deep/ .select-font, /deep/ .block-label[for=\\\"fontSelector\\\"],\\n/deep/ .select-font-size, /deep/ .block-label[for=\\\"select-font-size\\\"],\\n/deep/ .select-heading, /deep/ .block-label[for=\\\"heading\\\"] {\\n display: none; }\\n#activeAdminBar {\\n position: fixed;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n padding: 0.5em 0.25em;\\n background-color: #fdbc30;\\n z-index: 10; }\\n#activeAdminBar.top {\\n position: static;\\n height: 48px; }\\n#activeAdminBar .btn-default {\\n background-color: #fdbc30;\\n border-color: transparent;\\n color: black;\\n border-radius: 4px;\\n font-weight: 600;\\n margin: 0 0.25em; }\\n#activeAdminBar .btn-default:hover {\\n background-color: #e59900; }\\n#activeAdminBar .btn-default:last-of-type {\\n float: right; }\\n#activeAdminBar .btn-default:focus {\\n outline-color: black; }\\n#activeAdminBar i {\\n margin-right: 0.25em; }\\n#newRequest {\\n margin: 3em 0; }\\n#newRequest .btn {\\n margin-right: 0.5em; }\\n#newRequest .form-actions {\\n margin-top: 1em; }\\n#newRequest .project-selector {\\n padding: 4px 8px;\\n border: 1px solid #ccc;\\n background-color: #F8F9F9;\\n margin-right: 0.25em;\\n line-height: 2em;\\n white-space: nowrap;\\n display: block; }\\n#newRequest .project-selector:hover {\\n background-color: #005EB8;\\n color: white; }\\n#newRequest .help-block {\\n color: #768692;\\n font-size: 14px; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZm9ydW0vQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXGFwcFxcZm9ydW1cXGZvcnVtLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9mb3J1bS9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcX3ZhcmlhYmxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLHFCQUFBO0FBRUE7RUFDRSxnQkFBZ0IsRUFBQTtBQUdsQjtFQUNFLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsZ0JBQWdCO0VBQ2hCLGNDVGdCO0VEVWhCLGtCQUFrQixFQUFBO0FBR3BCO0VBQ0UsZ0JBQWdCO0VBQ2hCLHlCQUF5QjtFQUN6QixnQkFBZ0I7RUFDaEIsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQixXQUFXLEVBQUE7QUFHYjtFQUNFLHlCQ3ZCZ0I7RUR3QmhCLGdCQUFnQixFQUFBO0FBR2xCO0VBQ0UsWUFBWTtFQUNaLGVBQWU7RUFDZixrQkFBa0IsRUFBQTtBQUdwQjtFQUNFLGlCQUFpQixFQUFBO0FBR25CO0VBQ0UsZUFBZSxFQUFBO0FBR2pCO0VBQ0UsY0FBYztFQUNkLGdCQUFnQjtFQUNoQix5QkFBeUIsRUFBQTtBQUczQjtFQUNFLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1osWUFBWSxFQUFBO0FBR2Q7RUFDRSxhQUFhO0VBQ2IsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDSTtJQUNJLHNCQUFzQixFQUFBLEVBQ3pCO0FBR0w7RUFDSTtJQUNJLGlCQUFpQjtJQUNqQixrQkFBa0IsRUFBQSxFQUNyQjtBQUdMLHlCQUFBO0FBRUE7RUFDSSxnQkFBZ0I7RUFDaEIsZUFBZTtFQUNmLG9CQUFvQjtFQUNwQixtQkFBbUIsRUFBQTtBQUd2QjtFQUNJLGdCQUFnQixFQUFBO0FBR3BCO0VBQ0ksZUFBZTtFQUNmLG9CQUFvQixFQUFBO0FBR3hCO0VBQ0ksa0JBQWtCLEVBQUE7QUFHdEI7RUFDSSxlQUFl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QUNJLHlCQ2xXYztFRG1XZCxZQUFZLEVBQUE7QUFHaEI7RUFDSSxjQ3JXYztFRHNXZCxlQUFlLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9mb3J1bS9mb3J1bS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uL3ZhcmlhYmxlcyc7XHJcblxyXG4vKiBVbml2ZXJzYWwgU3R5bGVzICovXHJcblxyXG4ubG9hZGluZy1vdmVydmlldyB7XHJcbiAgbWFyZ2luLXRvcDogMjV2aDtcclxufVxyXG5cclxuLmxvYWRpbmctb3ZlcnZpZXcgcCB7XHJcbiAgbWFyZ2luLXRvcDogMC43NWVtO1xyXG4gIGZvbnQtc2l6ZTogMjBweDtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG59XHJcblxyXG4jY29udGFpbmVyRm9ydW0ge1xyXG4gIHBhZGRpbmctdG9wOiAxZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjNGMztcclxuICBtaW4taGVpZ2h0OiA4MHZoO1xyXG4gIG1pbi1oZWlnaHQ6IDEwMCU7XHJcbiAgcGFkZGluZy1ib3R0b206IDVlbTtcclxuICB6LWluZGV4OiAtMTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgbWFyZ2luLXRvcDogLTJlbTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idG4tYmFjayB7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGZvbnQtc2l6ZTogMTdweDtcclxuICBsaW5lLWhlaWdodDogMi41ZW07XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuYnRuLWJhY2sgLmZhIHtcclxuICBtYXJnaW4tcmlnaHQ6IDVweDtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idG4tYmFjazpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmZvcm0tZ3JvdXAge1xyXG4gIHBhZGRpbmc6IDVweCAwO1xyXG4gIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDQ4NTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5mb3JtLWNvbnRyb2wge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDQ0ODU7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGJvcmRlcjogbm9uZTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5mb3JtLWNvbnRyb2w6Zm9jdXMge1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDk5MXB4KSB7XHJcbiAgICAucm93IC5jb2wtbWQtNCA+IC5wdWxsLXJpZ2h0IHtcclxuICAgICAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1pbi13aWR0aDogMTMwMHB4KSB7XHJcbiAgICAjY29udGFpbmVyRm9ydW0ge1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMTUlO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDE1JTtcclxuICAgIH1cclxufVxyXG5cclxuLyogRm9ydW0tc3BlY2lmaWMgc3R5bGUgKi9cclxuXHJcbmgxIHtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBtYXJnaW4tdG9wOiAxZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjI1ZW07XHJcbn1cclxuXHJcbi5pbnRyby1wIHtcclxuICAgIGZvbnQtc2l6ZTogMS4yZW07XHJcbn1cclxuXHJcbi5idG4tcmVxdWVzdCB7XHJcbiAgICBtYXJnaW4tdG9wOiAxZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVlbTtcclxufVxyXG5cclxuLmJ0bi1yZXF1ZXN0IC5mYWwge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG59XHJcblxyXG4jc2VhcmNoIHtcclxuICAgIG1hcmdpbi10b3A6IDNlbTtcclxuICAgIHBhZGRpbmctYm90dG9tOiAxZW07XHJcbn1cclxuXHJcbiNzZWFyY2hJY29uIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHBhZGRpbmc6IDEuMWVtO1xyXG59XHJcblxyXG4jc2VhcmNoIC5mb3JtLWdyb3VwIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbn1cclxuXHJcbiNzZWFyY2ggLmZvcm0tY29udHJvbCB7XHJcbiAgICBib3JkZXItY29sb3I6ICRuaHMtZ3JleTtcclxuICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICBwYWRkaW5nLXRvcDogMS4yNWVtO1xyXG4gICAgcGFkZGluZy1ib3R0b206IDEuMjVlbTtcclxufVxyXG5cclxuI3NlYXJjaCAuYnRuIHtcclxuICAgIG1hcmdpbi1yaWdodDogMC4yNWVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNWVtXHJcbn1cclxuXHJcbiNzZWFyY2ggLmZvcm0tY29udHJvbCB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDIuNWVtO1xyXG59XHJcblxyXG4uZmlsdGVyIHtcclxuICAgIHBhZGRpbmc6IDFlbTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRuaHMtZ3JleTtcclxuICAgIHRyYW5zaXRpb246IGFsbCAuNXMgZWFzZS1pbi1vdXQ7XHJcbn1cclxuXHJcbi5maWx0ZXIgLmJ0biB7XHJcbiAgICBib3JkZXItY29sb3I6ICRuaHMtZ3JleTtcclxuICAgIHBhZGRpbmc6IDFweCA2cHg7XHJcbn1cclxuXHJcbi5maWx0ZXItc2hvd2luZyB7XHJcbiAgICBtYXJnaW4tdG9wOiAxZW07XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgICBwYWRkaW5nOiAxZW07XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbn1cclxuXHJcbi5maWx0ZXItc2hvd2luZyBpIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAwLjVlbTtcclxufVxyXG5cclxuLmZpbHRlci1zaG93aW5nIGk6aG92ZXIge1xyXG4gICAgY29sb3I6IGJsYWNrO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4jb3B0aW9ucyB7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjVlbTtcclxufVxyXG5cclxuI29wdGlvbnMgLmJ0bi1zbSB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59XHJcblxyXG4jb3B0aW9ucyAuYnRuIGkge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufVxyXG5cclxuLmdyb3VwLWhlYWRlciB7XHJcbiAgICBtYXJnaW4tdG9wOiAyZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XHJcbiAgICBmb250LXNpemU6IDEuNWVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuLm5vLW1hdGNoZXMge1xyXG4gICAgbWFyZ2luLXRvcDogNWVtO1xyXG4gICAgY29sb3I6ICNjY2M7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbn1cclxuXHJcbi5yZXF1ZXN0IHtcclxuICAgIG1hcmdpbi10b3A6IDEuNWVtO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICBwYWRkaW5nOiAyZW07XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcblxyXG4ucmVxdWVzdC1jb2xsYXBzZWQgLnJlcXVlc3QtaGVhZGVyIGgzIHtcclxuICAgIGZvbnQtc2l6ZTogMS4yNWVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC43NWVtO1xyXG59XHJcblxyXG4ucmVxdWVzdC1jb2xsYXBzZWQgLnJlcXVlc3QtaGVhZGVyIGgzOmhvdmVyIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGNvbG9yOiBibGFjaztcclxufVxyXG5cclxuLnJlcXVlc3QgLmVkaXQge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRiYzMwO1xyXG4gICAgcGFkZGluZzogMC4yNWVtIDAuNWVtO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMCA0cHggMCA0cHg7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgZm9udC1zaXplOiAxLjI1ZW07XHJcbn1cclxuXHJcbi5yZXF1ZXN0IC5lZGl0OmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlNTk5MDA7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5yZXF1ZXN0LWhlYWRlciBoMyB7XHJcbiAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNWVtO1xyXG59XHJcblxyXG4ucmVxdWVzdC1oZWFkZXIgaDM6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgY29sb3I6IGJsYWNrO1xyXG59XHJcblxyXG4ucmVxdWVzdC1ib2R5IHtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxuICAgIHBhZGRpbmctdG9wOiAxZW07XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2NjYztcclxufVxyXG5cclxuLnJlcXVlc3QtYm9keSBwIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbn1cclxuXHJcbi5yZXF1ZXN0LWJvZHkgcCAucmVhZC1tb3JlOmhvdmVyIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGNvbG9yOiBibGFjaztcclxufVxyXG5cclxuLnJlcXVlc3QtYm9keSAudGV4dC1wcmltYXJ5IHtcclxuICAgIG1hcmdpbi1sZWZ0OiAwLjI1ZW07XHJcbn1cclxuXHJcbi5yZXF1ZXN0LW1ldGEge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICAgIGNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbn1cclxuXHJcbi5yZXF1ZXN0LXRhZ3Mge1xyXG4gICAgbWFyZ2luLXRvcDogMWVtO1xyXG4gICAgY29sb3I6ICRuaHMtZ3JleTtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxufVxyXG5cclxuLnJlcXVlc3QtdGFncyAudGFnIHtcclxuICAgIGNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59XHJcblxyXG4ucmVxdWVzdC10YWdzIC50YWc6aG92ZXIge1xyXG4gICAgY29sb3I6IGJsYWNrO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4vZGVlcC8gbWFyayB7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZkYmMzMDtcclxufVxyXG5cclxuL2RlZXAvIC5hbmd1bGFyLWVkaXRvci10b29sYmFyLXNldCB7XHJcbiAgICBmb250LXNpemU6IDEycHg7XHJcbn1cclxuXHJcbi9kZWVwLyAuYW5ndWxhci1lZGl0b3IgLmFuZ3VsYXItZWRpdG9yLXdyYXBwZXIgLmFuZ3VsYXItZWRpdG9yLXRleHRhcmVhIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XHJcbiAgICBmb250LXNpemU6IDE3cHg7XHJcbn1cclxuXHJcbi9kZWVwLyAuYW5ndWxhci1lZGl0b3ItYnV0dG9uW3RpdGxlPVwiSW5zZXJ0IEltYWdlXCJdLFxyXG4vZGVlcC8gLmFuZ3VsYXItZWRpdG9yLWJ1dHRvblt0aXRsZT1cIkhUTUwgQ29kZVwiXSB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4vZGVlcC8gLnNlbGVjdC1mb250LCAvZGVlcC8gLmJsb2NrLWxhYmVsW2Zvcj1cImZvbnRTZWxlY3RvclwiXSxcclxuL2RlZXAvIC5zZWxlY3QtZm9udC1zaXplLCAvZGVlcC8gLmJsb2NrLWxhYmVsW2Zvcj1cInNlbGVjdC1mb250LXNpemVcIl0sXHJcbi9kZWVwLyAuc2VsZWN0LWhlYWRpbmcsIC9kZWVwLyAuYmxvY2stbGFiZWxbZm9yPVwiaGVhZGluZ1wiXVxyXG4ge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLy8gQWN0aXZlQWRtaW5cclxuXHJcbiNhY3RpdmVBZG1pbkJhciB7XHJcblx0cG9zaXRpb246IGZpeGVkO1xyXG5cdGJvdHRvbTogMDtcclxuXHRsZWZ0OiAwO1xyXG5cdHdpZHRoOiAxMDAlO1xyXG5cdHBhZGRpbmc6IDAuNWVtIDAuMjVlbTtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRiYzMwO1xyXG5cdHotaW5kZXg6IDEwO1xyXG59XHJcblxyXG4jYWN0aXZlQWRtaW5CYXIudG9wIHtcclxuICAgIHBvc2l0aW9uOiBzdGF0aWM7XHJcbiAgICBoZWlnaHQ6IDQ4cHg7XHJcblxyXG59XHJcblxyXG4jYWN0aXZlQWRtaW5CYXIgLmJ0bi1kZWZhdWx0IHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRiYzMwO1xyXG5cdGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcblx0Y29sb3I6IGJsYWNrO1xyXG5cdGJvcmRlci1yYWRpdXM6IDRweDtcclxuXHRmb250LXdlaWdodDogNjAwO1xyXG4gICAgbWFyZ2luOiAwIDAuMjVlbTtcclxufVxyXG5cclxuI2FjdGl2ZUFkbWluQmFyIC5idG4tZGVmYXVsdDpob3ZlciB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogI2U1OTkwMDtcclxufVxyXG5cclxuI2FjdGl2ZUFkbWluQmFyIC5idG4tZGVmYXVsdDpsYXN0LW9mLXR5cGUge1xyXG5cdGZsb2F0OiByaWdodDtcclxufVxyXG5cclxuI2FjdGl2ZUFkbWluQmFyIC5idG4tZGVmYXVsdDpmb2N1cyB7XHJcblx0b3V0bGluZS1jb2xvcjogYmxhY2s7XHJcbn1cclxuXHJcbiNhY3RpdmVBZG1pbkJhciBpIHtcclxuXHRtYXJnaW4tcmlnaHQ6IDAuMjVlbTtcclxufVxyXG5cclxuI25ld1JlcXVlc3Qge1xyXG4gICAgbWFyZ2luOiAzZW0gMDtcclxufVxyXG5cclxuI25ld1JlcXVlc3QgLmJ0biB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59XHJcblxyXG4jbmV3UmVxdWVzdCAuZm9ybS1hY3Rpb25zIHtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxufVxyXG5cclxuI25ld1JlcXVlc3QgLnByb2plY3Qtc2VsZWN0b3Ige1xyXG4gICAgcGFkZGluZzogNHB4IDhweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjhGOUY5O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjI1ZW07XHJcbiAgICBsaW5lLWhlaWdodDogMmVtO1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4jbmV3UmVxdWVzdCAucHJvamVjdC1zZWxlY3Rvcjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbiNuZXdSZXF1ZXN0IC5oZWxwLWJsb2NrIHtcclxuICAgIGNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbn0iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiXX0= */\"","import { Component, HostListener, OnInit, Inject } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { Meta, Title, DOCUMENT } from '@angular/platform-browser';\r\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AngularEditorConfig } from '@kolkov/angular-editor';\r\n\r\nimport { UniquePipe, FlattenPipe } from 'ngx-pipes';\r\n\r\nimport { WINDOW } from \"../utilities/services/window.service\";\r\nimport { KenService } from '../utilities/services/ken.service';\r\nimport { DataService } from '../utilities/services/data.service';\r\n\r\n@Component({\r\n selector: 'app-forum',\r\n templateUrl: './forum.component.html',\r\n styleUrls: ['./forum.component.scss']\r\n})\r\nexport class ForumComponent implements OnInit {\r\n\r\n requests; filteredRequests;\r\n projects; allProjects; sectors; selectedProjects = [];\r\n tags;\r\n submitEmail = \"mailto:a.wright31@nhs.net?subject=Knowledge%20Exchange%20Forum&body=Name:%0AOrganisation:%0AJob title:%0AQuery:\"\r\n filter;\r\n hideShowProject: boolean = false;\r\n hideShowSector: boolean = false;\r\n hideShowTag: boolean = false;\r\n expanded: boolean = true;\r\n\r\n allCategories = [\r\n { id: 1, name: \"Community\" },\r\n { id: 2, name: \"Acute\" },\r\n { id: 3, name: \"Mental Health\" },\r\n { id: 4, name: \"Commissioning\" },\r\n { id: 5, name: \"All Sectors\" },\r\n { id: 6, name: \"NAIC\" },\r\n { id: 7, name: \"NACEL\" },\r\n { id: 8, name: \"NHSE & NHSI - Learning Disabilities\" }\r\n ]\r\n\r\n // Admin\r\n approvedUsers = [18546, 18572, 12335, 16676, 17986, 23115, 32175, 35407];\r\n currentUserApproved: boolean = false;\r\n request: boolean = false;\r\n selectedRequest;\r\n editingRequest: boolean = false;\r\n requestForm: FormGroup;\r\n editorConfig: AngularEditorConfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: '25rem',\r\n minHeight: '10rem',\r\n translate: 'no'\r\n };\r\n\r\n metaTitle: string = 'Knowledge Exchange Forum | NHS Benchmarking Network';\r\n\r\n public navIsFixed: boolean = false;\r\n public width: number;\r\n\r\n constructor(\r\n public unique: UniquePipe,\r\n public flatten: FlattenPipe,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private titleService: Title,\r\n private kenService: KenService,\r\n private dataService: DataService,\r\n private datePipe: DatePipe,\r\n private toastr: ToastrService,\r\n private fb: FormBuilder,\r\n private meta: Meta,\r\n @Inject(DOCUMENT) private document: Document,\r\n @Inject(WINDOW) private window\r\n ) {\r\n window.location.href = \"https://future.nhs.uk/BenchmarkingNetwork\";\r\n }\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(this.metaTitle);\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n\r\n this.getRequests();\r\n this.checkUser();\r\n }\r\n\r\n checkUser() {\r\n let currentUser = this.dataService.getUser().userId;\r\n if (this.approvedUsers.indexOf(currentUser) !== -1) {\r\n this.currentUserApproved = true;\r\n }\r\n }\r\n\r\n getProjects() {\r\n this.kenService.getProjects().subscribe(\r\n r => {\r\n let allLiveProjects = r.data.filter(d => d.isVisible === 'Y' || d.projectId == 50);\r\n this.allProjects = allLiveProjects.map(d => { return { id: d.projectId, name: d.projectName }});\r\n }\r\n )\r\n }\r\n\r\n getRequests() {\r\n this.kenService.getRequests().subscribe(\r\n r => {\r\n\r\n this.requests = this.cleanRequests(r.data);\r\n\r\n this.projects = this.setProjects(this.requests);\r\n this.tags = this.setTags(this.requests);\r\n this.sectors = this.unique.transform(this.requests.map(r => r.sectorName));\r\n\r\n if (this.route.snapshot.queryParams['project']) {\r\n this.filter = this.route.snapshot.queryParams['project'];\r\n this.filteredRequests = this.requests.filter(r => r.projectName.includes(this.filter))\r\n } \r\n else if (this.route.snapshot.queryParams['sector']) {\r\n this.filter = this.route.snapshot.queryParams['sector'];\r\n this.filteredRequests = this.requests.filter(r => r.sectorName === this.filter);\r\n } \r\n else if (this.route.snapshot.queryParams['tag']) {\r\n this.filter = this.route.snapshot.queryParams['tag'];\r\n this.filteredRequests = this.requests.filter(r => r.requestTags.includes(this.filter));\r\n } \r\n else {\r\n this.filteredRequests = this.requests;\r\n }\r\n\r\n if (this.filteredRequests.length == 0 && this.route.snapshot.queryParams['ref'] === 'dashboard') {\r\n this.clearFilter()\r\n }\r\n\r\n },\r\n e => { \r\n console.log(e) \r\n }\r\n );\r\n }\r\n\r\n setProjects(requests) {\r\n let allProjects = requests.map(r => r.projectName);\r\n allProjects = this.unique.transform(allProjects);\r\n allProjects = this.flatten.transform(allProjects);\r\n return allProjects;\r\n }\r\n\r\n setTags(requests) {\r\n let allTags = requests.map(r => r.requestTags);\r\n allTags = allTags.filter(t => t !== '');\r\n allTags = this.unique.transform(allTags);\r\n allTags = this.flatten.transform(allTags);\r\n return allTags;\r\n }\r\n\r\n selectProject(index, projectId) {\r\n if (this.selectedProjects.map(p => p.index).includes(index)) {\r\n this.selectedProjects = this.selectedProjects.filter(p => p.index !== index);\r\n }\r\n this.selectedProjects.push({ index: index, projectId: projectId });\r\n this.selectedProjects = this.unique.transform(this.selectedProjects.filter(p => p.projectId !== \"0\"), 'projectId');\r\n }\r\n\r\n cleanRequests(data) {\r\n // Retain only one serviceItemId\r\n let cleanedRequests = [];\r\n\r\n\r\n data.forEach((e) => {\r\n\r\n let requestTags;\r\n if (e.requestTags === null) {\r\n requestTags = '';\r\n } else {\r\n requestTags = e.requestTags.split(', ');\r\n }\r\n\r\n if (e.isVisible === 'Y') {\r\n cleanedRequests.push({\r\n kenRequestId: e.kenRequestId,\r\n projectId: e.projects.map(p => p.projectId),\r\n projectName: e.projects.map(p => p.projectName),\r\n allProjects: e.linkAllProjects,\r\n requestBody: e.requestBody,\r\n requestDate: e.requestDate,\r\n requestMonth: this.datePipe.transform(e.requestDate, 'MMMM y'),\r\n requestTitle: e.requestTitle,\r\n commentCount: e.commentCount,\r\n sectorName: e.sectorName,\r\n requestTags: requestTags,\r\n categoryId: e.sectorId,\r\n submittedBy: e.submittedBy\r\n });\r\n }\r\n });\r\n\r\n // If allProjects true, add 'All Projects' to projectName\r\n cleanedRequests.forEach(c => {\r\n if (c.allProjects === 'Y') {\r\n c.projectName.push('All Projects');\r\n }\r\n })\r\n\r\n return cleanedRequests\r\n }\r\n\r\n setRequest(state) {\r\n window.scrollTo(0,0);\r\n this.request = state;\r\n if (state == true) {\r\n this.getProjects();\r\n this.buildRequestForm();\r\n }\r\n }\r\n\r\n editRequest(requestId) {\r\n window.scrollTo(0,0);\r\n this.editingRequest = true;\r\n this.getProjects();\r\n this.buildRequestForm();\r\n this.selectedRequest = this.requests.filter(r => r.kenRequestId === requestId)[0];\r\n this.requestForm.setValue({\r\n requestTitle: this.selectedRequest.requestTitle,\r\n requestBody: this.selectedRequest.requestBody,\r\n requestDate: new Date(this.selectedRequest.requestDate).toISOString().slice(0,10),\r\n submittedBy: this.selectedRequest.submittedBy,\r\n categoryId: this.selectedRequest.categoryId,\r\n linkAllProjects: this.selectedRequest.allProjects === 'Y' ? 1 : 0, \r\n requestTags: this.selectedRequest.requestTags.length ? this.selectedRequest.requestTags.join(', ') : '',\r\n projectId1: this.selectedRequest.projectId[0] || 0,\r\n projectId2: this.selectedRequest.projectId[1] || 0,\r\n projectId3: this.selectedRequest.projectId[2] || 0\r\n });\r\n }\r\n\r\n buildRequestForm() {\r\n this.requestForm = this.fb.group({ \r\n //projectId: ['', [Validators.required, Validators.maxLength(5)]],\r\n requestTitle: ['', [Validators.required, Validators.maxLength(200)]],\r\n requestBody: ['', [Validators.required]],\r\n requestDate: ['', [Validators.required]],\r\n submittedBy: ['', [Validators.required]],\r\n categoryId: ['', []],\r\n linkAllProjects: ['', []],\r\n requestTags: ['', []],\r\n projectId1: ['', []],\r\n projectId2: ['', []],\r\n projectId3: ['', []]\r\n });\r\n }\r\n\r\n submitRequestForm(requestId?) {\r\n if (this.requestForm.value.requestTitle) {\r\n let request = { \r\n //projectId: this.requestForm.value.projectId,\r\n requestTitle: this.requestForm.value.requestTitle,\r\n requestBody: this.requestForm.value.requestBody,\r\n requestDate: this.requestForm.value.requestDate,\r\n submittedBy: this.requestForm.value.submittedBy,\r\n sectorId: this.requestForm.value.categoryId,\r\n linkAllProjects: this.requestForm.value.linkAllProjects ? 'Y' : 'N',\r\n requestTags: this.requestForm.value.requestTags\r\n };\r\n if (requestId) {\r\n this.submitEditedRequestForm(requestId, request);\r\n } else {\r\n this.addRequest(request);\r\n }\r\n }\r\n }\r\n\r\n submitEditedRequestForm(requestId, requestDetails) {\r\n // Remove projectIds, if exist\r\n if (this.selectedRequest.projectId.length > 0) {\r\n this.removeProjects(this.selectedRequest.kenRequestId, this.selectedRequest.projectId);\r\n }\r\n this.kenService.editRequest(requestId, requestDetails).subscribe(\r\n r => {\r\n this.submitProjects(this.selectedRequest.kenRequestId, this.selectedProjects.map(p => p.projectId));\r\n this.toastr.success(\"Your request has been successfully edited. Thank you.\");\r\n this.editingRequest = false;\r\n this.getRequests();\r\n this.selectedRequest = [];\r\n },\r\n e => {\r\n this.toastr.error(\"There has been an error whilst trying to edit the request. Please try again.\");\r\n }\r\n );\r\n }\r\n\r\n addRequest(request) {\r\n this.kenService.addRequest(request).subscribe(\r\n r => {\r\n let newRequestId = r.data.newRequestId;\r\n this.submitProjects(newRequestId, this.selectedProjects.map(p => p.projectId));\r\n this.toastr.success(\"Your request has been successfully submitted. Thank you.\");\r\n },\r\n e => {\r\n this.toastr.error(\"There has been an error whilst trying to submit your request. Please try again.\");\r\n }\r\n );\r\n }\r\n\r\n submitProjects(requestId, projectIds) {\r\n this.kenService.submitRequestProjects(requestId, projectIds).subscribe(\r\n r => {\r\n this.request = false;\r\n this.getRequests();\r\n },\r\n e => {\r\n this.toastr.error(\"There has been an error whilst trying to add projects to your request. Please discuss with IT Team.\");\r\n }\r\n );\r\n }\r\n\r\n removeProjects(requestId, projectIds) {\r\n this.kenService.removeRequestProjects(requestId, projectIds).subscribe(\r\n r => { },\r\n e => { console.log(e) }\r\n );\r\n }\r\n\r\n transformDate(date) {\r\n return this.datePipe.transform(date, 'MMMM y');\r\n }\r\n\r\n filterByProject(filter) {\r\n this.filter = filter;\r\n this.filteredRequests = this.requests.filter(r => r.projectName.includes(filter));\r\n this.router.navigate([], { relativeTo: this.route, queryParams: { project: filter }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n filterBySector(filter) {\r\n this.filter = filter;\r\n this.filteredRequests = this.requests.filter(r => r.sectorName === filter);\r\n this.router.navigate([], { relativeTo: this.route, queryParams: { sector: filter }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n filterByTag(filter) {\r\n this.filter = filter;\r\n this.filteredRequests = this.requests.filter(r => r.requestTags.includes(filter));\r\n this.router.navigate([], { relativeTo: this.route, queryParams: { tag: filter }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n clearFilter() {\r\n this.filter = null;\r\n this.filteredRequests = this.requests;\r\n this.hideShowSector = false;\r\n this.hideShowProject = false;\r\n this.hideShowTag = false;\r\n this.router.navigate([], { relativeTo: this.route, queryParams: { project: null, sector: null, tag: null }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n setExpandCollapse() {\r\n if (this.expanded == false) {\r\n this.expanded = true;\r\n } else {\r\n this.expanded = false;\r\n }\r\n }\r\n\r\n navHome() {\r\n this.router.navigate(['/home']);\r\n }\r\n\r\n navRequest(request) {\r\n this.router.navigate(['/request/' + request]);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { DatePipe, CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { ResponsiveModule } from 'ngx-responsive';\r\n\r\nimport { ForumComponent } from './forum.component';\r\nimport { ForumRoutingModule } from './forum-routing.module';\r\n\r\nimport { AuthService } from '../utilities/services/auth.service';\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service';\r\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\r\n\r\nimport { HighlightPipe } from '../utilities/pipes/highlight.pipe';\r\nimport { KenService } from 'app/utilities/services/ken.service';\r\nimport { NgPipesModule, FlattenPipe } from 'ngx-pipes';\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ResponsiveModule,\r\n ForumRoutingModule,\r\n CollapseModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgPipesModule,\r\n AngularEditorModule\r\n ],\r\n declarations: [\r\n ForumComponent,\r\n HighlightPipe\r\n ],\r\n providers: [\r\n AuthService,\r\n AuthGuardService,\r\n KenService,\r\n DatePipe,\r\n FlattenPipe\r\n ]\r\n})\r\nexport class ForumModule {}","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { HelpComponent } from './help.component'\r\n\r\nconst helpRoutes: Routes = [\r\n { path: 'help', component: HelpComponent }\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(helpRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\n\r\nexport class HelpRoutingModule { }","export class helpVideos {\r\n static videoBaseUrl = \"https://www.youtube.com/embed/\";\r\n static videos: Array = [\r\n {\r\n videoURL: helpVideos.videoBaseUrl + \"Q6oiiaSu88Q\",\r\n title: \"Community Services monthly dashboard\",\r\n info: `This tutorial video will lead you through the dashboard, \r\n covering both the toolkit and report. The video demonstrates \r\n each of the features, including downloadable content, selectors \r\n and search functions. This dashboard aims to track the impact of \r\n the Covid-19 pandemic on community services provision across the UK.`,\r\n },\r\n {\r\n videoURL: helpVideos.videoBaseUrl + \"JADuwMw7JeM\",\r\n title: \"Mental Health & Learning Disabilities monthly dashboard\",\r\n info: `This tutorial video explores the dashboard toolkit, \r\n highlighting Mental Health and CYPMH metrics. The video \r\n demonstrates many of the features, including accessing \r\n the metrics, selecting a service, and time series insights. \r\n This dashboard aims to support Mental Health providers to\r\n track the impact of Covid-19 on core service provision,\r\n along with the recovery process and digital service provision.`,\r\n },\r\n {\r\n videoURL: helpVideos.videoBaseUrl + \"2PRxxe95tvk\",\r\n title: \"Project toolkit: Pharmacy\",\r\n info: `This tutorial video demonstrates the main features \r\n of the project toolkit. We explore the search function, \r\n tree drop down, and multiple data views, using the Pharmacy \r\n project as an example. All online project toolkits follow a \r\n consistent format, so you can apply the tutorial instructions \r\n to the entire range of toolkits on the members’ area.`,\r\n },\r\n {\r\n videoURL: helpVideos.videoBaseUrl + \"Tktw9-LvlM8\",\r\n title: \"ICS Benchmarker toolkit\",\r\n info: `This tutorial video will lead you through the \r\n main features and components of the ICS Benchmarker, \r\n which has been developed to support local planning, \r\n service improvement, and system development. Divided \r\n into Domains, each report includes an interactive map, \r\n bar chart, data table and time series chart for you to \r\n utilise at executive or board level meetings. Discover \r\n your position against nearest neighbours, aggregate up \r\n to ICS from local authority level, and drill down \r\n into categories to extract optimal insights.`,\r\n },\r\n {\r\n videoURL: helpVideos.videoBaseUrl + \"VhQqQsIbtSs \",\r\n title: \"Members' Area\",\r\n info: `This tutorial video will provide you with an overview \r\n of the NHS Benchmarking Network's members' area.
\r\n It highlights key features and outlines the \r\n resources available to members.`,\r\n },\r\n ];\r\n static getVideos() {\r\n return this.videos;\r\n }\r\n}\r\n","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Back to Home\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n

Help

\\r\\n

\\r\\n Welcome to the NHS Benchmarking Network help page. If you have a question the\\r\\n that is not answered below, please contact\\r\\n Support Team.\\r\\n

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

Browser Compatibility

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

\\r\\n You are currently using Google Chrome.\\r\\n

\\r\\n

\\r\\n You are currently using Mozilla\\r\\n Firefox.\\r\\n

\\r\\n

\\r\\n You are currently using Safari.\\r\\n

\\r\\n

\\r\\n You are currently using Internet Explorer 9.\\r\\n

\\r\\n

\\r\\n You are currently using Internet Explorer 10.\\r\\n

\\r\\n

\\r\\n You are currently using Internet Explorer 11.\\r\\n

\\r\\n

\\r\\n You are currently using Edge.\\r\\n

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

\\r\\n Some important features of the Members' Area are not supported by older\\r\\n browsers, including Internet Explorer.\\r\\n

\\r\\n

\\r\\n We recommend that you use the latest version of Chrome, Firefox or Safari\\r\\n instead. You can download Chrome or Firefox by clicking the links below.\\r\\n If you have any issues with these browsers, please contact us and we will\\r\\n look into the issue.\\r\\n

\\r\\n \\r\\n
\\r\\n \\\"Google\\r\\n Google Chrome\\r\\n

Click here to download

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\\"Mozilla\\r\\n Mozilla Firefox\\r\\n

Click here to download

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

Members' Area User Guide

\\r\\n

\\r\\n If you are new to the NHS Benchmarking Network Members' Area, you can\\r\\n download the User Guide (as a PDF) by clicking on the button below.\\r\\n

\\r\\n Download Members' Area User Guide\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"NHSBN\\r\\n

\\r\\n The Benchmarking Network is the in-house benchmarking service of the NHS. The Network is hosted by\\r\\n East London Foundation Trust.\\r\\n

\\r\\n

© East London Foundation Trust {{ date | date: \\\"yyyy\\\" }}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \".dp-accordion-header {\\n font-size: 17px;\\n padding: 10px; }\\n\\nh1 {\\n font-weight: 600;\\n margin-top: 1em;\\n margin-bottom: 0.5em;\\n line-height: 1.25em; }\\n\\n.fa.fa-youtube-play {\\n font-size: 30px;\\n float: left;\\n padding-right: 30px;\\n color: #ff0000; }\\n\\n.fas.fa-bars {\\n font-size: 25px;\\n float: right;\\n color: #dddd; }\\n\\n#selectorBar {\\n background-color: #005EB8;\\n margin-top: -2em; }\\n\\n#selectorBar .btn-back {\\n color: white;\\n font-size: 17px;\\n line-height: 2.5em; }\\n\\n#selectorBar .btn-back .fa {\\n margin-right: 5px; }\\n\\n#selectorBar .btn-back:hover {\\n cursor: pointer; }\\n\\n#selectorBar .form-group {\\n padding: 5px 0;\\n margin-bottom: 0;\\n background-color: #004485; }\\n\\n#selectorBar .form-control {\\n background-color: #004485;\\n color: white;\\n border: none; }\\n\\n#selectorBar .form-control:focus {\\n outline: none;\\n box-shadow: none; }\\n\\n.navbar {\\n position: relative;\\n padding-top: 5px;\\n padding-bottom: 3px;\\n border: none;\\n min-height: 60px;\\n margin-bottom: 0; }\\n\\n.navbar .active {\\n color: #005EB8; }\\n\\n.navbar li {\\n padding-top: 2px; }\\n\\n.navbar-brand img {\\n height: 50px; }\\n\\n.navbar-brand {\\n padding: 5px 10px; }\\n\\n.navbar,\\n.navbar-btn,\\n.dropdown-item {\\n font-size: 17px; }\\n\\n.navbar-btn {\\n margin-left: 0.5em; }\\n\\n.navbar-collapse {\\n border-top: none; }\\n\\n.navbar-default {\\n background: white; }\\n\\n#basic-link:focus,\\n#basic-link:hover,\\n#basic-link:active,\\n#basic-link:visited {\\n background-color: white; }\\n\\n.dropdown-menu {\\n border-color: #005EB8;\\n background-color: #005EB8;\\n box-shadow: none;\\n padding: 0px;\\n border: 0px; }\\n\\n.dropdown-menu > li {\\n border-bottom: 1px white solid; }\\n\\n.dropdown-menu > li > a {\\n color: white; }\\n\\n.dropdown-menu > li > a:hover {\\n background-color: #004485;\\n color: white; }\\n\\n.logout {\\n font-weight: 600;\\n color: #005EB8 !important; }\\n\\n.logout:hover {\\n cursor: pointer; }\\n\\n.colored-border {\\n height: 5px;\\n margin-bottom: 2em;\\n background: #005eb8;\\n /* For browsers that do not support gradients */\\n /* For Safari 5.1 to 6.0 */\\n /* For Opera 11.1 to 12.0 */\\n /* For Firefox 3.6 to 15 */\\n background: linear-gradient(to right, #e94910, #fcc000, #0083e7, #dedc00);\\n /* Standard syntax */ }\\n\\n@media screen and (min-width: 768px) {\\n .navbar {\\n border-radius: 0; } }\\n\\n@media screen and (max-width: 768px) {\\n .dropdown-menu li a.dropdown-item {\\n color: black; } }\\n\\n@media screen and (max-width: 768px) {\\n .fa.fa-youtube-play,\\n .fas.fa-bars {\\n padding-top: 10px;\\n padding-bottom: 10px; } }\\n\\n#containerHelp {\\n padding-top: 1em;\\n background-color: #f3f3f3;\\n min-height: 80vh;\\n min-height: 100%;\\n padding-bottom: 5em;\\n z-index: -1; }\\n\\nhr {\\n margin: 3em 0; }\\n\\n.browser-detect p {\\n font-weight: 600; }\\n\\n.browser-detect span {\\n margin-right: 8px; }\\n\\n.browser-link {\\n background-color: #eee;\\n padding-top: 1.75em;\\n padding-bottom: 1em;\\n border-radius: 4px;\\n color: black;\\n width: 24%;\\n border: 1px solid #e1e1e8;\\n text-align: center;\\n display: inline-block;\\n margin-right: 1%;\\n margin-bottom: 1em; }\\n\\n.-not-allowed {\\n cursor: not-allowed; }\\n\\n.browser-link p {\\n font-size: 0.9em; }\\n\\n.browser-link:hover {\\n background-color: white; }\\n\\n.browser-link img {\\n display: block;\\n height: 75px;\\n margin: 0 auto 0.5em auto; }\\n\\n.browser-link small {\\n color: gray; }\\n\\n@media screen and (max-width: 768px) {\\n .browser-link {\\n width: 46%;\\n margin-right: 2%; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvaGVscC9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxoZWxwXFxoZWxwLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9oZWxwL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxfdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDRSxlQUFlO0VBQ2YsYUFBYSxFQUFBOztBQUdmO0VBQ0UsZ0JBQWdCO0VBQ2hCLGVBQWU7RUFDZixvQkFBb0I7RUFDcEIsbUJBQW1CLEVBQUE7O0FBR3JCO0VBQ0UsZUFBZTtFQUNmLFdBQVc7RUFDWCxtQkFBbUI7RUFDbkIsY0FBYyxFQUFBOztBQUdoQjtFQUNFLGVBQWU7RUFDZixZQUFZO0VBQ1osWUFBWSxFQUFBOztBQUlkO0VBQ0UseUJDMUJnQjtFRDJCaEIsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0UsWUFBWTtFQUNaLGVBQWU7RUFDZixrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxpQkFBaUIsRUFBQTs7QUFHbkI7RUFDRSxlQUFlLEVBQUE7O0FBR2pCO0VBQ0UsY0FBYztFQUNkLGdCQUFnQjtFQUNoQix5QkFBeUIsRUFBQTs7QUFHM0I7RUFDRSx5QkFBeUI7RUFDekIsWUFBWTtFQUNaLFlBQVksRUFBQTs7QUFHZDtFQUNFLGFBQWE7RUFDYixnQkFBZ0IsRUFBQTs7QUFJbEI7RUFDRSxrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQixZQUFZO0VBQ1osZ0JBQWdCO0VBQ2hCLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLGNDeEVnQixFQUFBOztBRDJFbEI7RUFDRSxnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxZQUFZLEVBQUE7O0FBR2Q7RUFDRSxpQkFBaUIsRUFBQTs7QUFHbkI7OztFQUdFLGVBQWUsRUFBQTs7QUFHakI7RUFDRSxrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxpQkFBaUIsRUFBQTs7QUFHbkI7Ozs7RUFJRSx1QkFBdUIsRUFBQTs7QUFHekI7RUFDRSxxQkNqSGdCO0VEa0hoQix5QkNsSGdCO0VEbUhoQixnQkFBZ0I7RUFDaEIsWUFBWTtFQUNaLFdBQVcsRUFBQTs7QUFHYjtFQUNFLDhCQUE4QixFQUFBOztBQUdoQztFQUNFLFlBQVksRUFBQTs7QUFHZDtFQUNFLHlCQUF5QjtFQUN6QixZQUFZLEVBQUE7O0FBR2Q7RUFDRSxnQkFBZ0I7RUFDaEIseUJBQTJCLEVBQUE7O0FBRzdCO0VBQ0UsZUFBZSxFQUFBOztBQUdqQjtFQUNFLFdBQVc7RUFDWCxrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQUUsK0NBQUE7RUFPbEIsMEJBQUE7RUFPQSwyQkFBQTtFQU9BLDBCQUFBO0VBQ0gseUVBTUM7RUFBRSxvQkFBQSxFQUFxQjs7QUFHMUI7RUFDRTtJQUNFLGdCQUFnQixFQUFBLEVBQ2pCOztBQUdIO0VBQ0U7SUFDRSxZQUFZLEVBQUEsRUFDYjs7QUFHSDtFQUNFOztJQUVFLGlCQUFpQjtJQUNqQixvQkFBb0IsRUFBQSxFQUNyQjs7QUFHSDtFQUNFLGdCQUFnQjtFQUNoQix5QkFBeUI7RUFDekIsZ0JBQWdCO0VBQ2hCLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsV0FBVyxFQUFBOztBQUdiO0VBQ0UsYUFBYSxFQUFBOztBQUdmO0VBQ0UsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0UsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0Usc0JBQXNCO0VBQ3RCLG1CQUFtQjtFQUNuQixtQkFBbUI7RUFDbkIsa0JBQWtCO0VBQ2xCLFlBQVk7RUFDWixVQUFVO0VBQ1YseUJBQXlCO0VBQ3pCLGtCQUFrQjtFQUNsQixxQkFBcUI7RUFDckIsZ0JBQWdCO0VBQ2hCLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLG1CQUFtQixFQUFBOztBQUdyQjtFQUNFLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLHVCQUF1QixFQUFBOztBQUd6QjtFQUNFLGNBQWM7RUFDZCxZQUFZO0VBQ1oseUJBQXlCLEVBQUE7O0FBRzNCO0VBQ0UsV0FBVyxFQUFBOztBQUdiO0VBQ0U7SUFDRSxVQUFVO0lBQ1YsZ0JBQWdCLEVBQUEsRUFDakIiLCJmaWxlIjoic3JjL2FwcC9oZWxwL2hlbHAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IFwiLi4vLi4vdmFyaWFibGVzXCI7XHJcblxyXG4uZHAtYWNjb3JkaW9uLWhlYWRlciB7XHJcbiAgZm9udC1zaXplOiAxN3B4O1xyXG4gIHBhZGRpbmc6IDEwcHg7XHJcbn1cclxuXHJcbmgxIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIG1hcmdpbi10b3A6IDFlbTtcclxuICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxuICBsaW5lLWhlaWdodDogMS4yNWVtO1xyXG59XHJcblxyXG4uZmEuZmEteW91dHViZS1wbGF5IHtcclxuICBmb250LXNpemU6IDMwcHg7XHJcbiAgZmxvYXQ6IGxlZnQ7XHJcbiAgcGFkZGluZy1yaWdodDogMzBweDtcclxuICBjb2xvcjogI2ZmMDAwMDtcclxufVxyXG5cclxuLmZhcy5mYS1iYXJzIHtcclxuICBmb250LXNpemU6IDI1cHg7XHJcbiAgZmxvYXQ6IHJpZ2h0O1xyXG4gIGNvbG9yOiAjZGRkZDtcclxufVxyXG5cclxuLy8gU2VsZWN0b3JCYXJcclxuI3NlbGVjdG9yQmFyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgbWFyZ2luLXRvcDogLTJlbTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idG4tYmFjayB7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGZvbnQtc2l6ZTogMTdweDtcclxuICBsaW5lLWhlaWdodDogMi41ZW07XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuYnRuLWJhY2sgLmZhIHtcclxuICBtYXJnaW4tcmlnaHQ6IDVweDtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idG4tYmFjazpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmZvcm0tZ3JvdXAge1xyXG4gIHBhZGRpbmc6IDVweCAwO1xyXG4gIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDQ4NTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5mb3JtLWNvbnRyb2wge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDQ0ODU7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGJvcmRlcjogbm9uZTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5mb3JtLWNvbnRyb2w6Zm9jdXMge1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuLy8gTmF2YmFyXHJcbi5uYXZiYXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBwYWRkaW5nLXRvcDogNXB4O1xyXG4gIHBhZGRpbmctYm90dG9tOiAzcHg7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIG1pbi1oZWlnaHQ6IDYwcHg7XHJcbiAgbWFyZ2luLWJvdHRvbTogMDtcclxufVxyXG5cclxuLm5hdmJhciAuYWN0aXZlIHtcclxuICBjb2xvcjogJG5ocy1ibHVlO1xyXG59XHJcblxyXG4ubmF2YmFyIGxpIHtcclxuICBwYWRkaW5nLXRvcDogMnB4O1xyXG59XHJcblxyXG4ubmF2YmFyLWJyYW5kIGltZyB7XHJcbiAgaGVpZ2h0OiA1MHB4O1xyXG59XHJcblxyXG4ubmF2YmFyLWJyYW5kIHtcclxuICBwYWRkaW5nOiA1cHggMTBweDtcclxufVxyXG5cclxuLm5hdmJhcixcclxuLm5hdmJhci1idG4sXHJcbi5kcm9wZG93bi1pdGVtIHtcclxuICBmb250LXNpemU6IDE3cHg7XHJcbn1cclxuXHJcbi5uYXZiYXItYnRuIHtcclxuICBtYXJnaW4tbGVmdDogMC41ZW07XHJcbn1cclxuXHJcbi5uYXZiYXItY29sbGFwc2Uge1xyXG4gIGJvcmRlci10b3A6IG5vbmU7XHJcbn1cclxuXHJcbi5uYXZiYXItZGVmYXVsdCB7XHJcbiAgYmFja2dyb3VuZDogd2hpdGU7XHJcbn1cclxuXHJcbiNiYXNpYy1saW5rOmZvY3VzLFxyXG4jYmFzaWMtbGluazpob3ZlcixcclxuI2Jhc2ljLWxpbms6YWN0aXZlLFxyXG4jYmFzaWMtbGluazp2aXNpdGVkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxufVxyXG5cclxuLmRyb3Bkb3duLW1lbnUge1xyXG4gIGJvcmRlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICRuaHMtYmx1ZTtcclxuICBib3gtc2hhZG93OiBub25lO1xyXG4gIHBhZGRpbmc6IDBweDtcclxuICBib3JkZXI6IDBweDtcclxufVxyXG5cclxuLmRyb3Bkb3duLW1lbnUgPiBsaSB7XHJcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHdoaXRlIHNvbGlkO1xyXG59XHJcblxyXG4uZHJvcGRvd24tbWVudSA+IGxpID4gYSB7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG59XHJcblxyXG4uZHJvcGRvd24tbWVudSA+IGxpID4gYTpob3ZlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDQ4NTtcclxuICBjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbi5sb2dvdXQge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgY29sb3I6ICRuaHMtYmx1ZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ubG9nb3V0OmhvdmVyIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5jb2xvcmVkLWJvcmRlciB7XHJcbiAgaGVpZ2h0OiA1cHg7XHJcbiAgbWFyZ2luLWJvdHRvbTogMmVtO1xyXG4gIGJhY2tncm91bmQ6ICMwMDVlYjg7IC8qIEZvciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IGdyYWRpZW50cyAqL1xyXG4gIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KFxyXG4gICAgbGVmdCxcclxuICAgICNlOTQ5MTAsXHJcbiAgICAjZmNjMDAwLFxyXG4gICAgIzAwODNlNyxcclxuICAgICNkZWRjMDBcclxuICApOyAvKiBGb3IgU2FmYXJpIDUuMSB0byA2LjAgKi9cclxuICBiYWNrZ3JvdW5kOiAtby1saW5lYXItZ3JhZGllbnQoXHJcbiAgICByaWdodCxcclxuICAgICNlOTQ5MTAsXHJcbiAgICAjZmNjMDAwLFxyXG4gICAgIzAwODNlNyxcclxuICAgICNkZWRjMDBcclxuICApOyAvKiBGb3IgT3BlcmEgMTEuMSB0byAxMi4wICovXHJcbiAgYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQoXHJcbiAgICByaWdodCxcclxuICAgICNlOTQ5MTAsXHJcbiAgICAjZmNjMDAwLFxyXG4gICAgIzAwODNlNyxcclxuICAgICNkZWRjMDBcclxuICApOyAvKiBGb3IgRmlyZWZveCAzLjYgdG8gMTUgKi9cclxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXHJcbiAgICB0byByaWdodCxcclxuICAgICNlOTQ5MTAsXHJcbiAgICAjZmNjMDAwLFxyXG4gICAgIzAwODNlNyxcclxuICAgICNkZWRjMDBcclxuICApOyAvKiBTdGFuZGFyZCBzeW50YXggKi9cclxufVxyXG5cclxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHtcclxuICAubmF2YmFyIHtcclxuICAgIGJvcmRlci1yYWRpdXM6IDA7XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xyXG4gIC5kcm9wZG93bi1tZW51IGxpIGEuZHJvcGRvd24taXRlbSB7XHJcbiAgICBjb2xvcjogYmxhY2s7XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xyXG4gIC5mYS5mYS15b3V0dWJlLXBsYXksXHJcbiAgLmZhcy5mYS1iYXJzIHtcclxuICAgIHBhZGRpbmctdG9wOiAxMHB4O1xyXG4gICAgcGFkZGluZy1ib3R0b206IDEwcHg7XHJcbiAgfVxyXG59XHJcblxyXG4jY29udGFpbmVySGVscCB7XHJcbiAgcGFkZGluZy10b3A6IDFlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzO1xyXG4gIG1pbi1oZWlnaHQ6IDgwdmg7XHJcbiAgbWluLWhlaWdodDogMTAwJTtcclxuICBwYWRkaW5nLWJvdHRvbTogNWVtO1xyXG4gIHotaW5kZXg6IC0xO1xyXG59XHJcblxyXG5ociB7XHJcbiAgbWFyZ2luOiAzZW0gMDtcclxufVxyXG5cclxuLmJyb3dzZXItZGV0ZWN0IHAge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi5icm93c2VyLWRldGVjdCBzcGFuIHtcclxuICBtYXJnaW4tcmlnaHQ6IDhweDtcclxufVxyXG5cclxuLmJyb3dzZXItbGluayB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcclxuICBwYWRkaW5nLXRvcDogMS43NWVtO1xyXG4gIHBhZGRpbmctYm90dG9tOiAxZW07XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gIGNvbG9yOiBibGFjaztcclxuICB3aWR0aDogMjQlO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNlMWUxZTg7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBtYXJnaW4tcmlnaHQ6IDElO1xyXG4gIG1hcmdpbi1ib3R0b206IDFlbTtcclxufVxyXG5cclxuLi1ub3QtYWxsb3dlZCB7XHJcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxufVxyXG5cclxuLmJyb3dzZXItbGluayBwIHtcclxuICBmb250LXNpemU6IDAuOWVtO1xyXG59XHJcblxyXG4uYnJvd3Nlci1saW5rOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxufVxyXG5cclxuLmJyb3dzZXItbGluayBpbWcge1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIGhlaWdodDogNzVweDtcclxuICBtYXJnaW46IDAgYXV0byAwLjVlbSBhdXRvO1xyXG59XHJcblxyXG4uYnJvd3Nlci1saW5rIHNtYWxsIHtcclxuICBjb2xvcjogZ3JheTtcclxufVxyXG5cclxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcclxuICAuYnJvd3Nlci1saW5rIHtcclxuICAgIHdpZHRoOiA0NiU7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xyXG4gIH1cclxufVxyXG4iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiXX0= */\"","import { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { Meta, Title } from \"@angular/platform-browser\";\r\nimport { Router } from \"@angular/router\";\r\nimport { AuthService } from \"../utilities/services/auth.service\";\r\nimport { helpVideos } from \"./help-videos\";\r\n\r\n@Component({\r\n templateUrl: \"./help.component.html\",\r\n styleUrls: [\"./help.component.scss\"],\r\n})\r\nexport class HelpComponent implements OnInit {\r\n date = new Date();\r\n isCollapsed = true;\r\n\r\n videos: Array = helpVideos.getVideos();\r\n\r\n oneAtATime: boolean = true;\r\n customClass = \"customClass\";\r\n\r\n metaTitle: string = 'Help | NHS Benchmarking Network';\r\n\r\n constructor(\r\n public auth: AuthService,\r\n private titleService: Title,\r\n private meta: Meta,\r\n private router: Router\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(this.metaTitle); // Set page title\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n }\r\n\r\n onHidden(): void {}\r\n\r\n onShown(): void {}\r\n\r\n isOpenChange(): void {}\r\n\r\n stopVideos() {\r\n var videos = document.querySelectorAll(\"iframe, video\");\r\n Array.prototype.forEach.call(videos, function (video) {\r\n if (video.tagName.toLowerCase() === \"video\") {\r\n video.pause();\r\n } else {\r\n var src = video.src;\r\n video.src = src;\r\n }\r\n });\r\n }\r\n\r\n navHome() {\r\n this.router.navigate([\"/home\"]);\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { ResponsiveModule } from \"ngx-responsive\";\r\nimport { AccordionModule } from \"ngx-bootstrap\";\r\n\r\nimport { HelpComponent } from \"./help.component\";\r\nimport { HelpRoutingModule } from \"./help-routing.module\";\r\n\r\nimport { AuthService } from \"../utilities/services/auth.service\";\r\nimport { AuthGuardService } from \"../utilities/services/auth-guard.service\";\r\nimport { CollapseModule } from \"ngx-bootstrap/collapse\";\r\nimport { SafePipeModule } from \"../utilities/pipes/safe-pipe.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ResponsiveModule,\r\n HelpRoutingModule,\r\n CollapseModule,\r\n SafePipeModule,\r\n AccordionModule.forRoot(),\r\n ],\r\n declarations: [HelpComponent],\r\n providers: [AuthService, AuthGuardService],\r\n})\r\nexport class HelpModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { HomeComponent } from './home.component'\r\n\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service'\r\n\r\nconst homeRoutes: Routes = [\r\n { path: 'home', component: HomeComponent, canActivate: [AuthGuardService] }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(homeRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class HomeRoutingModule { }","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ o.organisationName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n

Welcome to the Network Members' Area.

\\r\\n

\\r\\n You can find all the Network's projects listed on the home page. For\\r\\n your chosen Project, click on 'Project' to find tabs for Information,\\r\\n Online Toolkit, Offline Toolkit, Reports, Presentations and Case\\r\\n Studies.\\r\\n

\\r\\n

\\r\\n If you need any help, or have any comments or suggestions, please email\\r\\n enquiries.\\r\\n

\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\"","module.exports = \"#containerHome {\\n margin-bottom: 3em; }\\n\\n.welcome-message {\\n font-size: 17px;\\n margin: 2em 0; }\\n\\n.welcome-message h4 {\\n font-weight: 600; }\\n\\n.info-block {\\n margin-top: 1.2em;\\n padding: 0.75em 1em;\\n border-radius: 5px;\\n background-color: green; }\\n\\n.info-block a {\\n color: white; }\\n\\n.info-block .far {\\n margin-right: 0.5em; }\\n\\n.info-block.-danger {\\n margin-top: 1em;\\n margin-bottom: 2em;\\n background-color: #009639; }\\n\\n.fa-caret-right {\\n padding-left: 10px; }\\n\\n#selectorBar {\\n background-color: #005EB8;\\n margin-top: -2em;\\n margin-bottom: 3rem; }\\n\\n#selectorBar .btn-back {\\n color: white;\\n font-size: 17px;\\n line-height: 2.5em; }\\n\\n#selectorBar .btn-feedback {\\n color: white;\\n font-size: 17px;\\n line-height: 2.5em;\\n padding-left: 1.5em; }\\n\\n#selectorBar .btn-back .fa {\\n margin-right: 5px; }\\n\\n#selectorBar .btn-back:hover {\\n cursor: pointer; }\\n\\n#selectorBar .form-group {\\n padding: 5px 0;\\n margin-bottom: 0; }\\n\\n#selectorBar .form-control {\\n background-color: #004485;\\n color: white;\\n border: none;\\n border-radius: 5px; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvaG9tZS9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxob21lXFxob21lLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9ob21lL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxfdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDRSxrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxlQUFlO0VBQ2YsYUFBYSxFQUFBOztBQUdmO0VBQ0UsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0UsaUJBQWlCO0VBQ2pCLG1CQUFtQjtFQUNuQixrQkFBa0I7RUFDbEIsdUJBQXVCLEVBQUE7O0FBSnpCO0lBTUksWUFBWSxFQUFBOztBQU5oQjtJQVNJLG1CQUFtQixFQUFBOztBQUl2QjtFQUNFLGVBQWU7RUFDZixrQkFBa0I7RUFDbEIseUJBQXlCLEVBQUE7O0FBRzNCO0VBQ0Usa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UseUJDcENnQjtFRHFDaEIsZ0JBQWdCO0VBQ2hCLG1CQUFtQixFQUFBOztBQUdyQjtFQUNFLFlBQVk7RUFDWixlQUFlO0VBQ2Ysa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsWUFBWTtFQUNaLGVBQWU7RUFDZixrQkFBa0I7RUFDbEIsbUJBQW1CLEVBQUE7O0FBR3JCO0VBQ0UsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsZUFBZSxFQUFBOztBQUdqQjtFQUNFLGNBQWM7RUFDZCxnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSx5QkFBeUI7RUFDekIsWUFBWTtFQUNaLFlBQVk7RUFDWixrQkFBa0IsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2hvbWUvaG9tZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgXCIuLi8uLi92YXJpYWJsZXNcIjtcclxuXHJcbiNjb250YWluZXJIb21lIHtcclxuICBtYXJnaW4tYm90dG9tOiAzZW07XHJcbn1cclxuXHJcbi53ZWxjb21lLW1lc3NhZ2Uge1xyXG4gIGZvbnQtc2l6ZTogMTdweDtcclxuICBtYXJnaW46IDJlbSAwO1xyXG59XHJcblxyXG4ud2VsY29tZS1tZXNzYWdlIGg0IHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG59XHJcblxyXG4uaW5mby1ibG9jayB7XHJcbiAgbWFyZ2luLXRvcDogMS4yZW07XHJcbiAgcGFkZGluZzogMC43NWVtIDFlbTtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7IFxyXG4gIGJhY2tncm91bmQtY29sb3I6IGdyZWVuO1xyXG4gICYgYSB7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgfVxyXG4gICYgLmZhciB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG4gIH1cclxufVxyXG5cclxuLmluZm8tYmxvY2suLWRhbmdlciB7XHJcbiAgbWFyZ2luLXRvcDogMWVtO1xyXG4gIG1hcmdpbi1ib3R0b206IDJlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5NjM5O1xyXG59XHJcblxyXG4uZmEtY2FyZXQtcmlnaHQge1xyXG4gIHBhZGRpbmctbGVmdDogMTBweDtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgbWFyZ2luLXRvcDogLTJlbTtcclxuICBtYXJnaW4tYm90dG9tOiAzcmVtO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ0bi1iYWNrIHtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgZm9udC1zaXplOiAxN3B4O1xyXG4gIGxpbmUtaGVpZ2h0OiAyLjVlbTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idG4tZmVlZGJhY2sge1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBmb250LXNpemU6IDE3cHg7XHJcbiAgbGluZS1oZWlnaHQ6IDIuNWVtO1xyXG4gIHBhZGRpbmctbGVmdDogMS41ZW07XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuYnRuLWJhY2sgLmZhIHtcclxuICBtYXJnaW4tcmlnaHQ6IDVweDtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idG4tYmFjazpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmZvcm0tZ3JvdXAge1xyXG4gIHBhZGRpbmc6IDVweCAwO1xyXG4gIG1hcmdpbi1ib3R0b206IDA7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuZm9ybS1jb250cm9sIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0NDg1O1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG59XHJcbiIsIiRpY29uLWZvbnQtcGF0aDogJy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAtc2Fzcy9hc3NldHMvZm9udHMvYm9vdHN0cmFwLyc7XHJcblxyXG4vLyBDdXN0b20gdmFyaWFibGVzXHJcbiRuaHMtYmx1ZTogIzAwNUVCODtcclxuJG5ocy1kYXJrLWJsdWU6ICMwMDQ0ODU7XHJcbiRuaHMtZ3JleTogIzc2ODY5MjtcclxuJG5ocy1mYWRlZC1ibHVlOiAjRjJGN0ZCO1xyXG4kYWN0aXZlLWFkbWluLXllbGxvdzogI0ZEQkMzMDtcclxuJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93OiAjRTU5OTAwO1xyXG4gXHJcbi8vIEJvb3RzdHJhcCB2YXJpYWJsZXNcclxuJHRleHQtY29sb3I6IGJsYWNrO1xyXG4kYm9yZGVyLXJhZGl1cy1iYXNlOiAwO1xyXG4kYm9yZGVyLXJhZGl1cy1zbWFsbDogMDtcclxuJGJyYW5kLXByaW1hcnk6ICRuaHMtYmx1ZTtcclxuJGJyYW5kLXN1Y2Nlc3M6IGdyZWVuO1xyXG4kbGluay1ob3Zlci1kZWNvcmF0aW9uOiBub25lO1xyXG4kZm9udC1zaXplLWg0OiAxN3B4O1xyXG4kbmF2YmFyLW1hcmdpbi1ib3R0b206IDA7XHJcbiRuYXZiYXItaGVpZ2h0OiA2MHB4O1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtYmc6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWJvcmRlci1jb2xvcjogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaWNvbi1iYXItYmc6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOiB3aGl0ZTtcclxuXHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc6ICRuaHMtYmx1ZTtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1jb2xvcjogd2hpdGU7XHJcbiRuYXYtcGlsbHMtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJHRhYmxlLWJnLWhvdmVyOiAkbmhzLWZhZGVkLWJsdWU7XHJcbiRoZWFkaW5ncy1zbWFsbC1jb2xvcjogJG5ocy1ncmV5OyJdfQ== */\"","import { Component, OnInit } from '@angular/core';\r\nimport { Title, Meta } from '@angular/platform-browser';\r\nimport { MemberService } from '../utilities/services/member.service';\r\nimport { DataService } from '../utilities/services/data.service';\r\nimport { User } from '../utilities/classes/user/user';\r\nimport { Organisation } from '../utilities/classes/organisation/organisation';\r\nimport { Event } from '../utilities/classes/event/event'\r\nimport { OrderByPipe } from 'ngx-pipes';\r\nimport { KenService } from 'app/utilities/services/ken.service';\r\nimport { DatePipe } from '@angular/common';\r\nimport { Router } from '@angular/router';\r\nimport { IResourcesNonProjectDocuments } from 'app/utilities/models/resources/resources-nonProjectDocuments.vm';\r\nimport { GoogleAnalyticsService } from 'app/utilities/services/google-analytics.service';\r\n\r\n@Component({ \r\n templateUrl: './home.component.html',\r\n styleUrls: ['./home.component.scss']\r\n})\r\nexport class HomeComponent implements OnInit {\r\n public user: User = { \"userId\" : 0, \"fullName\" : \"\", \"logonName\" : \"\", \"jobTitle\" : \"\", \"phoneNo\" : \"\", \"lastLogon\" : new Date(), \"roles\": null, \"welcomeDialogDismissed\": \"Y\", \"mailchimpOptIn\": \"\", \"notificationOptIn\": \"\" };\r\n public organisation: Organisation[];\r\n public currentOrganisation: number;\r\n public welcomeMessage: boolean = false;\r\n public resourceList: Array;\r\n public yourReports: Array = [];\r\n public eventList: Array;\r\n public filteredEvents: Array;\r\n public filteredRequests: Array = [];\r\n public organisations: any;\r\n public metaTitle: string = 'Home | NHS Benchmarking Network';\r\n public currentYear = new Date().getFullYear();\r\n\r\n constructor(\r\n private memberService: MemberService,\r\n private dataService: DataService,\r\n private titleService: Title,\r\n private meta: Meta,\r\n public order: OrderByPipe,\r\n private datePipe: DatePipe,\r\n private kenService: KenService,\r\n public router: Router,\r\n private googleAnalyticsService: GoogleAnalyticsService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n if(sessionStorage.getItem(\"homepage\") == \"classicView\") {\r\n this.router.navigate([\"/classicView\"]);\r\n } else {\r\n this.titleService.setTitle(this.metaTitle);\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n this.getUserDetails();\r\n this.getOrganisationsByUser();\r\n this.getEventList();\r\n this.getRequests();\r\n }\r\n }\r\n \r\n getUserDetails() {\r\n this.memberService.User().subscribe(\r\n u => { \r\n this.user = u.data;\r\n this.dataService.setUser(u.data);\r\n\r\n if (this.user.welcomeDialogDismissed == 'N') {\r\n this.welcomeMessage = true;\r\n } \r\n }\r\n );\r\n }\r\n\r\n getOrganisationsByUser() {\r\n let currentOrg = this.dataService.getSelectedOrganisation();\r\n\r\n this.memberService.OrganisationsByUser().subscribe(\r\n o => { \r\n this.organisation = o.data,\r\n this.currentOrganisation = currentOrg ? currentOrg : this.organisation[0].organisationId,\r\n this.dataService.setOrganisation(o.data)\r\n this.dataService.setSelectedOrganisation(this.currentOrganisation);\r\n this.getResources(this.currentYear);\r\n }\r\n );\r\n }\r\n\r\n onOrgChange(message: number) {\r\n this.dataService.setSelectedOrganisation(message);\r\n this.currentOrganisation = message;\r\n this.getResources(this.currentYear);\r\n }\r\n\r\n dismissWelcomeMessage() {\r\n this.memberService.DismissWelcomeDialog({ welcomeDialogDismissed: 'Y' }).subscribe();\r\n this.welcomeMessage = false;\r\n }\r\n\r\n removeHiddenDocuments(arr) {\r\n return arr.reduce((acc, obj) => {\r\n if (obj.isVisible !== 'N') {\r\n for (const key in obj) {\r\n if (Array.isArray(obj[key])) {\r\n obj[key] = this.removeHiddenDocuments(obj[key]);\r\n }\r\n }\r\n acc.push(obj);\r\n }\r\n return acc;\r\n }, []);\r\n }\r\n\r\n getResources(year: number) {\r\n this.memberService.ResourceDocuments(year, this.currentOrganisation).subscribe(\r\n (success) => {\r\n this.resourceList = success.data['nonProjectDocuments'].reverse();\r\n success.data['projectDocuments'].forEach(sector => {\r\n sector.projects.forEach(project => {\r\n project.documents.forEach(document => {\r\n this.yourReports.push(document)\r\n })\r\n })\r\n })\r\n\r\n \r\n Array.prototype.push.apply(this.resourceList,this.yourReports);\r\n \r\n this.resourceList.sort(function(a, b) {\r\n let c: any = new Date(a.uploadTime);\r\n let d: any = new Date(b.uploadTime);\r\n return d-c;\r\n });\r\n this.resourceList = this.removeHiddenDocuments(this.resourceList);\r\n },\r\n (error) => {\r\n console.log(error)\r\n });\r\n }\r\n\r\n getEventList() {\r\n this.memberService.Events().subscribe(\r\n r => { \r\n this.eventList = this.formatEvents(r.data);\r\n this.filteredEvents = this.eventList.filter(e => e.when === 'future');\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n );\r\n }\r\n\r\n getRequests() {\r\n this.kenService.getRequests().subscribe(\r\n r => {\r\n this.filteredRequests = this.cleanRequests(r.data);\r\n this.filteredRequests.reverse()\r\n },\r\n e => { \r\n console.log(e) \r\n }\r\n );\r\n }\r\n\r\n classicView() {\r\n sessionStorage.setItem(\"homepage\", \"classicView\");\r\n this.googleAnalyticsService.classicViewLandingPage(\"Classic View\");\r\n }\r\n\r\n cleanRequests(data) {\r\n // Retain only one serviceItemId\r\n let cleanedRequests = [];\r\n\r\n data.forEach((e) => {\r\n\r\n let requestTags;\r\n if (e.requestTags === null) {\r\n requestTags = '';\r\n } else {\r\n requestTags = e.requestTags.split(', ');\r\n }\r\n\r\n if (e.isVisible === 'Y') {\r\n cleanedRequests.push({\r\n kenRequestId: e.kenRequestId,\r\n projectId: e.projects.map(p => p.projectId),\r\n projectName: e.projects.map(p => p.projectName),\r\n allProjects: e.linkAllProjects,\r\n requestBody: e.requestBody,\r\n requestDate: e.requestDate,\r\n requestMonth: this.datePipe.transform(e.requestDate, 'MMMM y'),\r\n requestTitle: e.requestTitle,\r\n commentCount: e.commentCount,\r\n sectorName: e.sectorName,\r\n requestTags: requestTags,\r\n categoryId: e.sectorId,\r\n submittedBy: e.submittedBy\r\n });\r\n }\r\n });\r\n\r\n // If allProjects true, add 'All Projects' to projectName\r\n cleanedRequests.forEach(c => {\r\n if (c.allProjects === 'Y') {\r\n c.projectName.push('All Projects');\r\n }\r\n })\r\n\r\n return cleanedRequests\r\n }\r\n\r\n\r\n formatEvents(events) {\r\n let currentDate = new Date();\r\n\r\n events.forEach(ev => {\r\n // Format tags\r\n let requestTags;\r\n if (ev.requestTags === null) {\r\n requestTags = '';\r\n } else {\r\n requestTags = ev.requestTags.split(', ');\r\n }\r\n ev.requestTags = requestTags;\r\n // Set when: past or future\r\n let eventDate = new Date(ev.eventDt);\r\n if (eventDate >= currentDate) {\r\n ev.when = 'future';\r\n } else {\r\n ev.when = 'past';\r\n }\r\n });\r\n\r\n // Order future events in chronological order\r\n // and past events in reverse chronological order\r\n let future = this.order.transform(events.filter(e => e.when === 'future'), 'eventDt');\r\n let past = this.order.transform(events.filter(e => e.when === 'past'), '-eventDt');\r\n events = future.concat(past);\r\n\r\n return events;\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { BsDropdownModule, ModalModule } from 'ngx-bootstrap';\r\n\r\nimport { HomeComponent } from './home.component';\r\nimport { ProjectTableComponent } from './project-table/project-table.component';\r\nimport { HomeRoutingModule } from './home-routing.module';\r\nimport { ProjectDetailModule } from '../project-detail/project-detail.module';\r\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\r\n\r\nimport { SafePipeModule } from '../utilities/pipes/safe-pipe.module'\r\nimport { ReversePipe } from '../utilities/pipes/reverse.pipe';\r\nimport { SidebarComponent } from './sidebar/sidebar.component';\r\nimport { OldHomeComponent } from './old-home/old-home.component';\r\nimport { OldProjectTableComponent } from './old-home/old-project-table/old-project-table.component';\r\nimport { NgPipesModule, OrderByPipe, UniquePipe } from 'ngx-pipes';\r\nimport { ProjectTableCardComponent } from './project-table/project-table-card/project-table-card.component';\r\nimport { SidebarSectionComponent } from './sidebar/sidebar-section/sidebar-section.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n BsDropdownModule.forRoot(),\r\n ModalModule.forRoot(),\r\n ProjectDetailModule,\r\n SafePipeModule,\r\n NgPipesModule,\r\n HomeRoutingModule,\r\n TooltipModule.forRoot()\r\n ],\r\n providers: [\r\n OrderByPipe,\r\n UniquePipe,\r\n ],\r\n declarations: [\r\n HomeComponent,\r\n ProjectTableComponent,\r\n ProjectTableCardComponent,\r\n ReversePipe,\r\n SidebarComponent,\r\n OldHomeComponent,\r\n OldProjectTableComponent,\r\n SidebarSectionComponent\r\n ]\r\n})\r\nexport class HomeModule {}","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { OldHomeComponent } from './old-home.component';\r\nimport { AuthGuardService } from 'app/utilities/services/auth-guard.service';\r\n\r\nconst oldHomeRoutes: Routes = [\r\n { path: 'classicView', component: OldHomeComponent, canActivate: [AuthGuardService] }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(oldHomeRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class OldHomeRoutingModule { }","module.exports = \"
\\r\\n \\r\\n
\\r\\n
\\r\\n

Welcome, {{ user.fullName }}

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

\\r\\n Welcome to our Members' Area. If you need any support, please contact the\\r\\n Support Team\\r\\n on 0161 521 0818.\\r\\n

\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n {{ o.organisationName }}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n

\\r\\n Logged in as {{ user.fullName }}
\\r\\n Your last logon was on {{ user.lastLogon | date }} at\\r\\n {{ user.lastLogon | date: \\\"shortTime\\\" }}.\\r\\n

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

Try our new home page!

\\r\\n

A new way to see your active projects, discover useful resources and events, and more...

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

Welcome to the Network Members' Area.

\\r\\n

\\r\\n You can find all the Network's projects listed on the home page. For\\r\\n your chosen Project, click on 'Project' to find tabs for Information,\\r\\n Online Toolkit, Offline Toolkit, Reports, Presentations and Case\\r\\n Studies.\\r\\n

\\r\\n

\\r\\n If you need any help, or have any comments or suggestions, please email\\r\\n Emma Pruce, or call Lucas on 0161\\r\\n 266 1855.\\r\\n

\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \"#containerHome {\\n margin-bottom: 3em; }\\n\\n.welcome-message {\\n font-size: 17px;\\n margin: 2em 0; }\\n\\n.welcome-message h4 {\\n font-weight: 600; }\\n\\n.calendar-container {\\n margin-top: 2em; }\\n\\n.newHome {\\n background-color: #AE2573;\\n color: white;\\n padding: 0.5em 0.75em;\\n font-weight: 500;\\n border-radius: 5px;\\n margin-top: 1em; }\\n\\n.newHome:hover {\\n cursor: pointer; }\\n\\n.calendar {\\n background-color: #768692;\\n padding: 0.5em 1em;\\n margin-top: 2em;\\n color: white;\\n text-align: center;\\n white-space: nowrap; }\\n\\n.calendar:hover {\\n background-color: #005EB8; }\\n\\n.calendar .fa {\\n margin-right: 8px; }\\n\\n.defunct {\\n color: #768692; }\\n\\n.info-block {\\n margin-top: 2em;\\n background-color: #005EB8;\\n padding: 0.75em 1em; }\\n\\n.info-block a {\\n color: white; }\\n\\n.info-block .far {\\n margin-right: 0.5em; }\\n\\n.info-block.-danger {\\n margin-top: 1em;\\n margin-bottom: 2em;\\n background-color: #009639; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvaG9tZS9vbGQtaG9tZS9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxob21lXFxvbGQtaG9tZVxcb2xkLWhvbWUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2hvbWUvb2xkLWhvbWUvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNJLGtCQUFrQixFQUFBOztBQUd0QjtFQUNJLGVBQWU7RUFDZixhQUFhLEVBQUE7O0FBR2pCO0VBQ0ksZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksZUFBZSxFQUFBOztBQUluQjtFQUNJLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1oscUJBQXFCO0VBQ3JCLGdCQUFnQjtFQUNoQixrQkFBa0I7RUFDbEIsZUFBZSxFQUFBOztBQU5uQjtJQVFRLGVBQWUsRUFBQTs7QUFJdkI7RUFDSSx5QkM1QmM7RUQ2QmQsa0JBQWtCO0VBQ2xCLGVBQWU7RUFDZixZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLG1CQUFtQixFQUFBOztBQUd2QjtFQUNJLHlCQ3ZDYyxFQUFBOztBRDBDbEI7RUFDSSxpQkFBaUIsRUFBQTs7QUFHckI7RUFDSSxjQzdDYyxFQUFBOztBRGdEbEI7RUFDSSxlQUFlO0VBQ2YseUJDcERjO0VEcURkLG1CQUFtQixFQUFBOztBQUh2QjtJQUtRLFlBQVksRUFBQTs7QUFMcEI7SUFRUSxtQkFBbUIsRUFBQTs7QUFJM0I7RUFDSSxlQUFlO0VBQ2Ysa0JBQWtCO0VBQ2xCLHlCQUF5QixFQUFBIiwiZmlsZSI6InNyYy9hcHAvaG9tZS9vbGQtaG9tZS9vbGQtaG9tZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL3ZhcmlhYmxlcyc7XHJcblxyXG4jY29udGFpbmVySG9tZSB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAzZW07XHJcbn1cclxuXHJcbi53ZWxjb21lLW1lc3NhZ2Uge1xyXG4gICAgZm9udC1zaXplOiAxN3B4O1xyXG4gICAgbWFyZ2luOiAyZW0gMDtcclxufVxyXG5cclxuLndlbGNvbWUtbWVzc2FnZSBoNCB7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG59XHJcblxyXG4uY2FsZW5kYXItY29udGFpbmVyIHtcclxuICAgIG1hcmdpbi10b3A6IDJlbTtcclxuICAgIFxyXG59XHJcblxyXG4ubmV3SG9tZSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQUUyNTczO1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgcGFkZGluZzogMC41ZW0gMC43NWVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxuICAgICY6aG92ZXIge1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIH1cclxufVxyXG5cclxuLmNhbGVuZGFyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRuaHMtZ3JleTtcclxuICAgIHBhZGRpbmc6IDAuNWVtIDFlbTtcclxuICAgIG1hcmdpbi10b3A6IDJlbTtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgXHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG59XHJcblxyXG4uY2FsZW5kYXI6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1ibHVlO1xyXG59XHJcblxyXG4uY2FsZW5kYXIgLmZhIHtcclxuICAgIG1hcmdpbi1yaWdodDogOHB4O1xyXG59XHJcblxyXG4uZGVmdW5jdCB7XHJcbiAgICBjb2xvcjogJG5ocy1ncmV5O1xyXG59XHJcblxyXG4uaW5mby1ibG9jayB7XHJcbiAgICBtYXJnaW4tdG9wOiAyZW07XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgICBwYWRkaW5nOiAwLjc1ZW0gMWVtO1xyXG4gICAgJiBhIHtcclxuICAgICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICB9XHJcbiAgICAmIC5mYXIge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMC41ZW07XHJcbiAgICB9XHJcbn1cclxuXHJcbi5pbmZvLWJsb2NrLi1kYW5nZXIge1xyXG4gICAgbWFyZ2luLXRvcDogMWVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMmVtO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwOTYzOTtcclxufSIsIiRpY29uLWZvbnQtcGF0aDogJy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAtc2Fzcy9hc3NldHMvZm9udHMvYm9vdHN0cmFwLyc7XHJcblxyXG4vLyBDdXN0b20gdmFyaWFibGVzXHJcbiRuaHMtYmx1ZTogIzAwNUVCODtcclxuJG5ocy1kYXJrLWJsdWU6ICMwMDQ0ODU7XHJcbiRuaHMtZ3JleTogIzc2ODY5MjtcclxuJG5ocy1mYWRlZC1ibHVlOiAjRjJGN0ZCO1xyXG4kYWN0aXZlLWFkbWluLXllbGxvdzogI0ZEQkMzMDtcclxuJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93OiAjRTU5OTAwO1xyXG4gXHJcbi8vIEJvb3RzdHJhcCB2YXJpYWJsZXNcclxuJHRleHQtY29sb3I6IGJsYWNrO1xyXG4kYm9yZGVyLXJhZGl1cy1iYXNlOiAwO1xyXG4kYm9yZGVyLXJhZGl1cy1zbWFsbDogMDtcclxuJGJyYW5kLXByaW1hcnk6ICRuaHMtYmx1ZTtcclxuJGJyYW5kLXN1Y2Nlc3M6IGdyZWVuO1xyXG4kbGluay1ob3Zlci1kZWNvcmF0aW9uOiBub25lO1xyXG4kZm9udC1zaXplLWg0OiAxN3B4O1xyXG4kbmF2YmFyLW1hcmdpbi1ib3R0b206IDA7XHJcbiRuYXZiYXItaGVpZ2h0OiA2MHB4O1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtYmc6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWJvcmRlci1jb2xvcjogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaWNvbi1iYXItYmc6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOiB3aGl0ZTtcclxuXHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc6ICRuaHMtYmx1ZTtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1jb2xvcjogd2hpdGU7XHJcbiRuYXYtcGlsbHMtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJHRhYmxlLWJnLWhvdmVyOiAkbmhzLWZhZGVkLWJsdWU7XHJcbiRoZWFkaW5ncy1zbWFsbC1jb2xvcjogJG5ocy1ncmV5OyJdfQ== */\"","import { Component, OnInit, HostListener, Inject } from '@angular/core';\r\nimport { Title, DOCUMENT, Meta } from '@angular/platform-browser';\r\nimport { Router } from '@angular/router';\r\nimport { Organisation } from 'app/utilities/classes/organisation/organisation';\r\nimport { User } from 'app/utilities/classes/user/user';\r\nimport { DataService } from 'app/utilities/services/data.service';\r\nimport { MemberService } from 'app/utilities/services/member.service';\r\nimport { WINDOW } from 'app/utilities/services/window.service';\r\n\r\n@Component({ \r\n templateUrl: './old-home.component.html',\r\n styleUrls: ['./old-home.component.scss']\r\n})\r\nexport class OldHomeComponent implements OnInit {\r\n user: User = { \"userId\" : 0, \"fullName\" : \"\", \"logonName\" : \"\", \"jobTitle\" : \"\", \"phoneNo\" : \"\", \"lastLogon\" : new Date(), \"roles\": null, \"welcomeDialogDismissed\": \"Y\", \"mailchimpOptIn\": \"\", \"notificationOptIn\": \"\" };\r\n organisation: Organisation[];\r\n currentOrganisation: number;\r\n welcomeMessage: boolean = false;\r\n\r\n public navIsFixed: boolean = false;\r\n public width: number;\r\n\r\n metaTitle: string = 'Home | NHS Benchmarking Network';\r\n\r\n constructor(\r\n private memberService: MemberService,\r\n private dataService: DataService,\r\n private titleService: Title,\r\n private meta: Meta,\r\n public router: Router,\r\n @Inject(DOCUMENT) private document: Document,\r\n @Inject(WINDOW) private window\r\n ) { }\r\n\r\n ngOnInit() {\r\n if(sessionStorage.getItem(\"homepage\") == \"classicView\") {\r\n this.titleService.setTitle(this.metaTitle);\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n this.getUserDetails();\r\n this.getOrganisationsByUser();\r\n } else {\r\n this.router.navigate([\"/home\"]);\r\n }\r\n }\r\n \r\n getUserDetails() {\r\n this.memberService.User().subscribe(\r\n u => { \r\n this.user = u.data;\r\n this.dataService.setUser(u.data);\r\n\r\n if (this.user.welcomeDialogDismissed == 'N') {\r\n this.welcomeMessage = true;\r\n } \r\n }\r\n );\r\n }\r\n\r\n getOrganisationsByUser() {\r\n let currentOrg = this.dataService.getSelectedOrganisation();\r\n\r\n this.memberService.OrganisationsByUser().subscribe(\r\n o => { \r\n this.organisation = o.data,\r\n this.currentOrganisation = currentOrg ? currentOrg : this.organisation[0].organisationId,\r\n this.dataService.setOrganisation(o.data)\r\n this.dataService.setSelectedOrganisation(this.currentOrganisation);\r\n }\r\n );\r\n }\r\n\r\n onOrgChange(message: number) {\r\n this.dataService.setSelectedOrganisation(message);\r\n \r\n this.currentOrganisation = message;\r\n }\r\n\r\n classicView() {\r\n sessionStorage.removeItem(\"homepage\");\r\n // sessionStorage.setItem(\"initialClassicView\", \"false\")\r\n }\r\n\r\n dismissWelcomeMessage() {\r\n this.memberService.DismissWelcomeDialog({ welcomeDialogDismissed: 'Y' }).subscribe();\r\n\r\n this.welcomeMessage = false;\r\n }\r\n\r\n @HostListener(\"window:scroll\", [])\r\n onWindowScroll() {\r\n let number = this.window.pageYOffset || this.document.documentElement.scrollTop || this.document.body.scrollTop || 0;\r\n let width = document.getElementById('sidebar').clientWidth;\r\n if (number > 80) {\r\n this.navIsFixed = true;\r\n this.width = width - 65;\r\n } else if (this.navIsFixed && number < 10) {\r\n this.navIsFixed = false;\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { BsDropdownModule, ModalModule, TooltipModule } from 'ngx-bootstrap';\r\nimport { OldHomeRoutingModule } from './old-home-routing.module';\r\nimport { ProjectDetailModule } from 'app/project-detail/project-detail.module';\r\nimport { SafePipeModule } from 'app/utilities/pipes/safe-pipe.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n BsDropdownModule.forRoot(),\r\n ModalModule.forRoot(),\r\n ProjectDetailModule,\r\n SafePipeModule,\r\n OldHomeRoutingModule,\r\n TooltipModule.forRoot()\r\n ],\r\n declarations: []\r\n})\r\nexport class OldHomeModule {}","module.exports = \"\\r\\n \\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n
0\\\">\\r\\n
\\r\\n \\r\\n {{ section.title }}\\r\\n
\\r\\n \\r\\n Scroll horizontally in table to view options\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n

\\r\\n \\r\\n {{ p.projectName }}\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n Register\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n Registration Initiated\\r\\n \\r\\n \\r\\n Registration Complete\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n Registration\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n Data Collection\\r\\n \\r\\n\\r\\n \\r\\n Data Collection\\r\\n \\r\\n \\r\\n \\r\\n Outputs\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n Historical Projects\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n Scroll horizontally in table to view options\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n

\\r\\n \\r\\n \\r\\n {{ p.projectName }}\\r\\n

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Outputs\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"/* -----------------------------\\r\\n NEW STYLES FOR /PROJECTS ONLY\\r\\n ----------------------------- */\\n.project-table {\\n background-color: white; }\\n.col {\\n vertical-align: middle !important; }\\n.col-title {\\n width: 60%; }\\n.col-sign-up {\\n width: 15%;\\n text-align: center; }\\n.col-outputs {\\n width: 10%;\\n text-align: center; }\\n.img-title {\\n margin-top: 2em;\\n margin-bottom: -1em;\\n height: 75px; }\\n.section-header {\\n margin: 1em 0; }\\n.section-header img {\\n height: 50px;\\n margin-right: 15px;\\n float: left;\\n vertical-align: middle; }\\n.section-header span {\\n line-height: 50px;\\n font-size: 1.5em;\\n font-weight: 600; }\\n.signed-up {\\n color: green;\\n font-weight: 600; }\\n.not-available {\\n color: #768692;\\n font-weight: 600; }\\n.col-btns span {\\n margin-left: 3px; }\\n.not-available:hover {\\n cursor: default; }\\n.community-services {\\n color: green;\\n font-weight: bold; }\\n.details-link .far {\\n color: #768692;\\n margin-right: 0.5em; }\\n.details-link:hover {\\n cursor: pointer; }\\n.details-link .far:hover {\\n color: #005EB8; }\\n.hideShow {\\n color: #768692; }\\n.-historical:hover {\\n cursor: pointer; }\\n.historical-logo {\\n height: 25px;\\n margin: -0.25em 0.5em 0 0.5em; }\\n.hideShow i {\\n margin-left: 1em; }\\n.new {\\n background-color: #009639;\\n color: white;\\n font-size: 0.8em;\\n font-weight: 600;\\n text-transform: uppercase;\\n margin-left: 0.25em;\\n padding: 0.2em 0.4em;\\n border-radius: 3px; }\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvaG9tZS9vbGQtaG9tZS9vbGQtcHJvamVjdC10YWJsZS9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxob21lXFxvbGQtaG9tZVxcb2xkLXByb2plY3QtdGFibGVcXG9sZC1wcm9qZWN0LXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9ob21lL29sZC1ob21lL29sZC1wcm9qZWN0LXRhYmxlL29sZC1wcm9qZWN0LXRhYmxlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9ob21lL29sZC1ob21lL29sZC1wcm9qZWN0LXRhYmxlL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxfdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O2tDQ0FrQztBRE1sQztFQUNFLHVCQUF1QixFQUFBO0FBR3pCO0VBQ0UsaUNBQWlDLEVBQUE7QUFHbkM7RUFDRSxVQUFVLEVBQUE7QUFHWjtFQUNFLFVBQVU7RUFDVixrQkFBa0IsRUFBQTtBQUdwQjtFQUNFLFVBQVU7RUFDVixrQkFBa0IsRUFBQTtBQUdwQjtFQUNFLGVBQWU7RUFDZixtQkFBbUI7RUFDbkIsWUFBWSxFQUFBO0FBSWQ7RUFDRSxhQUFhLEVBQUE7QUFHZjtFQUNFLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsV0FBVztFQUNYLHNCQUFzQixFQUFBO0FBR3hCO0VBQ0UsaUJBQWlCO0VBQ2pCLGdCQUFnQjtFQUNoQixnQkFBZ0IsRUFBQTtBQUdsQjtFQUNFLFlFeENtQjtFRnlDbkIsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDRSxjRXZEZ0I7RUZ3RGhCLGdCQUFnQixFQUFBO0FBR2xCO0VBQ0UsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDRSxlQUFlLEVBQUE7QUFHakI7RUFDRSxZQUFZO0VBQ1osaUJBQ0YsRUFBQTtBQUVBO0VBQ0UsY0V6RWdCO0VGMEVoQixtQkFBbUIsRUFBQTtBQUdyQjtFQUNFLGVBQWUsRUFBQTtBQUdqQjtFQUNFLGNFcEZnQixFQUFBO0FGdUZsQjtFQUNFLGNFdEZnQixFQUFBO0FGeUZsQjtFQUNFLGVBQWUsRUFBQTtBQUdqQjtFQUNFLFlBQVk7RUFDWiw2QkFBNkIsRUFBQTtBQUcvQjtFQUNFLGdCQUFnQixFQUFBO0FBR2xCO0VBQ0UseUJBQXlCO0VBQ3pCLFlBQVk7RUFDWixnQkFBZ0I7RUFDaEIsZ0JBQWdCO0VBQ2hCLHlCQUF5QjtFQUN6QixtQkFBbUI7RUFDbkIsb0JBQW9CO0VBQ3BCLGtCQUFrQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvaG9tZS9vbGQtaG9tZS9vbGQtcHJvamVjdC10YWJsZS9vbGQtcHJvamVjdC10YWJsZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uLy4uL3ZhcmlhYmxlcyc7XHJcblxyXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICBORVcgU1RZTEVTIEZPUiAvUFJPSkVDVFMgT05MWVxyXG4gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gXHJcbi8vIFByb2plY3RzIFRhYmxlXHJcblxyXG4ucHJvamVjdC10YWJsZSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbi5jb2wge1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUgIWltcG9ydGFudDtcclxufVxyXG4gXHJcbi5jb2wtdGl0bGUge1xyXG4gIHdpZHRoOiA2MCU7XHJcbn1cclxuIFxyXG4uY29sLXNpZ24tdXAge1xyXG4gIHdpZHRoOiAxNSU7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG59XHJcblxyXG4uY29sLW91dHB1dHMge1xyXG4gIHdpZHRoOiAxMCU7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG59XHJcbiBcclxuLmltZy10aXRsZSB7XHJcbiAgbWFyZ2luLXRvcDogMmVtO1xyXG4gIG1hcmdpbi1ib3R0b206IC0xZW07XHJcbiAgaGVpZ2h0OiA3NXB4O1xyXG59XHJcbiBcclxuLy8gU2VjdGlvbiBIZWFkZXIgXHJcbi5zZWN0aW9uLWhlYWRlciB7XHJcbiAgbWFyZ2luOiAxZW0gMDtcclxufVxyXG4gXHJcbi5zZWN0aW9uLWhlYWRlciBpbWcge1xyXG4gIGhlaWdodDogNTBweDtcclxuICBtYXJnaW4tcmlnaHQ6IDE1cHg7XHJcbiAgZmxvYXQ6IGxlZnQ7XHJcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxufVxyXG4gXHJcbi5zZWN0aW9uLWhlYWRlciBzcGFuIHtcclxuICBsaW5lLWhlaWdodDogNTBweDtcclxuICBmb250LXNpemU6IDEuNWVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuIFxyXG4uc2lnbmVkLXVwIHtcclxuICBjb2xvcjogJGJyYW5kLXN1Y2Nlc3M7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuLm5vdC1hdmFpbGFibGUge1xyXG4gIGNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuLmNvbC1idG5zIHNwYW4ge1xyXG4gIG1hcmdpbi1sZWZ0OiAzcHg7XHJcbn1cclxuXHJcbi5ub3QtYXZhaWxhYmxlOmhvdmVyIHtcclxuICBjdXJzb3I6IGRlZmF1bHQ7XHJcbn1cclxuXHJcbi5jb21tdW5pdHktc2VydmljZXMge1xyXG4gIGNvbG9yOiBncmVlbjtcclxuICBmb250LXdlaWdodDogYm9sZFxyXG59XHJcblxyXG4uZGV0YWlscy1saW5rIC5mYXIge1xyXG4gIGNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufVxyXG5cclxuLmRldGFpbHMtbGluazpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uZGV0YWlscy1saW5rIC5mYXI6aG92ZXIge1xyXG4gIGNvbG9yOiAkbmhzLWJsdWU7XHJcbn1cclxuXHJcbi5oaWRlU2hvdyB7XHJcbiAgY29sb3I6ICRuaHMtZ3JleTtcclxufVxyXG5cclxuLi1oaXN0b3JpY2FsOmhvdmVyIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5oaXN0b3JpY2FsLWxvZ28ge1xyXG4gIGhlaWdodDogMjVweDtcclxuICBtYXJnaW46IC0wLjI1ZW0gMC41ZW0gMCAwLjVlbTtcclxufVxyXG5cclxuLmhpZGVTaG93IGkge1xyXG4gIG1hcmdpbi1sZWZ0OiAxZW07XHJcbn1cclxuXHJcbi5uZXcge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDk2Mzk7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGZvbnQtc2l6ZTogMC44ZW07XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gIG1hcmdpbi1sZWZ0OiAwLjI1ZW07XHJcbiAgcGFkZGluZzogMC4yZW0gMC40ZW07XHJcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG59IiwiLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgTkVXIFNUWUxFUyBGT1IgL1BST0pFQ1RTIE9OTFlcclxuICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi5wcm9qZWN0LXRhYmxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IH1cblxuLmNvbCB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUgIWltcG9ydGFudDsgfVxuXG4uY29sLXRpdGxlIHtcbiAgd2lkdGg6IDYwJTsgfVxuXG4uY29sLXNpZ24tdXAge1xuICB3aWR0aDogMTUlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLmNvbC1vdXRwdXRzIHtcbiAgd2lkdGg6IDEwJTtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG5cbi5pbWctdGl0bGUge1xuICBtYXJnaW4tdG9wOiAyZW07XG4gIG1hcmdpbi1ib3R0b206IC0xZW07XG4gIGhlaWdodDogNzVweDsgfVxuXG4uc2VjdGlvbi1oZWFkZXIge1xuICBtYXJnaW46IDFlbSAwOyB9XG5cbi5zZWN0aW9uLWhlYWRlciBpbWcge1xuICBoZWlnaHQ6IDUwcHg7XG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLnNlY3Rpb24taGVhZGVyIHNwYW4ge1xuICBsaW5lLWhlaWdodDogNTBweDtcbiAgZm9udC1zaXplOiAxLjVlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDsgfVxuXG4uc2lnbmVkLXVwIHtcbiAgY29sb3I6IGdyZWVuO1xuICBmb250LXdlaWdodDogNjAwOyB9XG5cbi5ub3QtYXZhaWxhYmxlIHtcbiAgY29sb3I6ICM3Njg2OTI7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7IH1cblxuLmNvbC1idG5zIHNwYW4ge1xuICBtYXJnaW4tbGVmdDogM3B4OyB9XG5cbi5ub3QtYXZhaWxhYmxlOmhvdmVyIHtcbiAgY3Vyc29yOiBkZWZhdWx0OyB9XG5cbi5jb21tdW5pdHktc2VydmljZXMge1xuICBjb2xvcjogZ3JlZW47XG4gIGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi5kZXRhaWxzLWxpbmsgLmZhciB7XG4gIGNvbG9yOiAjNzY4NjkyO1xuICBtYXJnaW4tcmlnaHQ6IDAuNWVtOyB9XG5cbi5kZXRhaWxzLWxpbms6aG92ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7IH1cblxuLmRldGFpbHMtbGluayAuZmFyOmhvdmVyIHtcbiAgY29sb3I6ICMwMDVFQjg7IH1cblxuLmhpZGVTaG93IHtcbiAgY29sb3I6ICM3Njg2OTI7IH1cblxuLi1oaXN0b3JpY2FsOmhvdmVyIHtcbiAgY3Vyc29yOiBwb2ludGVyOyB9XG5cbi5oaXN0b3JpY2FsLWxvZ28ge1xuICBoZWlnaHQ6IDI1cHg7XG4gIG1hcmdpbjogLTAuMjVlbSAwLjVlbSAwIDAuNWVtOyB9XG5cbi5oaWRlU2hvdyBpIHtcbiAgbWFyZ2luLWxlZnQ6IDFlbTsgfVxuXG4ubmV3IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwOTYzOTtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LXNpemU6IDAuOGVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBtYXJnaW4tbGVmdDogMC4yNWVtO1xuICBwYWRkaW5nOiAwLjJlbSAwLjRlbTtcbiAgYm9yZGVyLXJhZGl1czogM3B4OyB9XG4iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiXX0= */\"","import { Component, Input, OnChanges } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { Project } from \"app/utilities/classes/project/project\";\r\nimport { LoaderService } from \"app/utilities/services/loader.service\";\r\nimport { MemberService } from \"app/utilities/services/member.service\";\r\n\r\n\r\ninterface Section {\r\n title: string;\r\n projects: Array;\r\n}\r\n\r\ntype ProjectApiResponse = {\r\n [key: string]: Array\r\n}\r\n\r\n@Component({\r\n selector: \"app-old-project-table\",\r\n templateUrl: \"./old-project-table.component.html\",\r\n styleUrls: [\"./old-project-table.component.scss\"],\r\n})\r\nexport class OldProjectTableComponent implements OnChanges {\r\n @Input() organisationSelection: number;\r\n\r\n sections: Array
= [];\r\n archived: Section;\r\n errorRegistrationNA: string =\r\n \"Registration is not currently available for this project\"; // Error codes: 2101, 2103\r\n errorDataCollectionNA: string =\r\n \"Data collection is not currently available for this project.\"; // 2102\r\n errorOrganisationAccess: string =\r\n \"Your organisation does not currently have access to this project. Please contact support.\"; // 2104, 2105, 2106\r\n errorUserAccess: string =\r\n \"You do not currently have access to this project. Please contact support.\"; // 2107, 2108, 2109\r\n\r\n hideShow: boolean = true;\r\n\r\n constructor(\r\n private memberService: MemberService,\r\n private router: Router,\r\n public loaderService: LoaderService\r\n ) {}\r\n\r\n ngOnChanges() {\r\n if (this.organisationSelection) {\r\n this.getProjectAccess();\r\n }\r\n }\r\n\r\n getProjectAccess() {\r\n this.memberService\r\n .ProjectAccess(this.organisationSelection)\r\n .subscribe((p) => {\r\n if (p.data) {\r\n this.sections = Object.entries(p.data as ProjectApiResponse).map(([sectionTitle, projects]) => {\r\n return {\r\n title: sectionTitle,\r\n projects: projects\r\n }\r\n })\r\n\r\n let i = this.sections.findIndex(\r\n (item) => item.title === \"Archived\"\r\n );\r\n\r\n if (i > -1) {\r\n this.archived = this.sections[i];\r\n this.sections.splice(i, 1);\r\n }\r\n }\r\n });\r\n }\r\n\r\n getRegistrationClosedTooltip(p: Project) {\r\n if (p.signUpErrorCode == 2101 || p.signUpErrorCode == 2103) {\r\n return this.errorRegistrationNA;\r\n }\r\n\r\n if (\r\n (p.signUpErrorCode > 2103 && p.signUpErrorCode < 2107) ||\r\n p.signUpErrorCode == 2110\r\n ) {\r\n return this.errorOrganisationAccess;\r\n }\r\n\r\n if (p.signUpErrorCode == 2107 || p.signUpErrorCode == 2108) {\r\n return this.errorUserAccess;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n getDataCollectionClosedTooltip(p: Project) {\r\n if (p.accessProjectErrorCode == 2102) {\r\n return this.errorDataCollectionNA;\r\n }\r\n\r\n if (p.accessProjectErrorCode > 2103 && p.accessProjectErrorCode < 2107) {\r\n return this.errorOrganisationAccess;\r\n }\r\n\r\n if (p.accessProjectErrorCode == 2107 || p.accessProjectErrorCode == 2109) {\r\n return this.errorUserAccess;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setHideShow() {\r\n this.hideShow = !this.hideShow;\r\n }\r\n\r\n navProjectDetail(projectId: number) {\r\n this.router.navigate([\"/project-detail\", projectId]);\r\n }\r\n\r\n navProjectOverview(projectId: number) {\r\n this.router.navigate([\"/project-overview\", projectId]);\r\n }\r\n\r\n navDashboard(projectId: number) {\r\n if (projectId == 39) {\r\n this.router.navigate([\"/ics\"]);\r\n } else {\r\n this.router.navigate([\"/dashboard\", projectId]);\r\n }\r\n }\r\n\r\n navProjectRegistration(projectId: number, organisationId: number) {\r\n this.router.navigate([\"/project-registration\", projectId, organisationId]);\r\n }\r\n}\r\n\r\n","module.exports = \"
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"NHSBN\\r\\n
\\r\\n {{ section.title }}
\\r\\n {{ p.projectName }}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Registered for {{ p.year }}/{{ (p.year + 1).toString() | slice:2:4 }}\\r\\n \\r\\n
 •
\\r\\n
\\r\\n {{ p.status }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"NHSBN\\r\\n
\\r\\n {{ p.categoryName }}
\\r\\n {{ p.projectName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \".community-services {\\n color: green;\\n font-weight: bold; }\\n\\n.details-link {\\n color: #383838;\\n font-size: 1.2em; }\\n\\n.details-link:hover {\\n cursor: pointer; }\\n\\n.details-link .far {\\n color: #768692;\\n margin-right: 0.5em;\\n font-size: small;\\n vertical-align: top; }\\n\\n.details-link .far:hover {\\n color: #005EB8; }\\n\\n.-historical:hover {\\n cursor: pointer; }\\n\\n.historical-logo {\\n height: 25px;\\n margin: -0.25em 0.5em 0 0.5em; }\\n\\n.Acute {\\n color: red;\\n font-size: smaller; }\\n\\n.Community {\\n color: blue;\\n font-size: smaller; }\\n\\n.Health {\\n color: green;\\n font-size: smaller; }\\n\\n.Workforce {\\n color: green;\\n font-size: smaller; }\\n\\n.NACEL {\\n color: #285910;\\n font-size: smaller; }\\n\\n.NHS {\\n color: gray;\\n font-size: smaller; }\\n\\n.South {\\n color: gray;\\n font-size: smaller; }\\n\\n.Monthly {\\n color: purple;\\n font-size: smaller; }\\n\\n.NAIC {\\n color: brown;\\n font-size: smaller; }\\n\\n.Commissioning {\\n color: #eded00;\\n font-size: smaller; }\\n\\n.All {\\n color: chocolate;\\n font-size: smaller; }\\n\\n.Multi-sector {\\n color: gray;\\n font-size: smaller; }\\n\\n.project-card {\\n border: 1px solid #CCCCCC;\\n border-radius: 5px;\\n padding: 4px;\\n margin-bottom: 15px; }\\n\\n.project-card:hover {\\n background-color: rgba(128, 128, 128, 0.082); }\\n\\n.registration {\\n text-decoration: underline; }\\n\\n.registration:hover {\\n cursor: pointer; }\\n\\nimg {\\n height: 50px;\\n margin-right: 15px;\\n float: left;\\n vertical-align: middle; }\\n\\n.project-list {\\n display: flex;\\n align-items: center;\\n justify-content: space-between; }\\n\\n@media screen and (max-width: 500px) {\\n .project-list {\\n display: flex;\\n align-items: normal;\\n justify-content: space-between;\\n flex-direction: column; } }\\n\\n.project-list .information {\\n padding: 3px;\\n display: flex;\\n align-items: center; }\\n\\n.project-list-buttons {\\n text-align: right;\\n padding: 3px;\\n font-size: 1.2em; }\\n\\n.project-list-buttons button {\\n width: 100%;\\n margin-top: 5px; }\\n\\n.archived-card {\\n border: 1px solid gray;\\n border-radius: 5px;\\n padding: 8px;\\n margin-bottom: 15px; }\\n\\n.archived-card .section {\\n display: flex;\\n align-items: center;\\n justify-content: space-between; }\\n\\n.archived-card .image-title {\\n padding: 3px;\\n display: flex;\\n align-items: center; }\\n\\n.archived-card .button {\\n padding: 3px;\\n text-align: right; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvaG9tZS9wcm9qZWN0LXRhYmxlL3Byb2plY3QtdGFibGUtY2FyZC9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxob21lXFxwcm9qZWN0LXRhYmxlXFxwcm9qZWN0LXRhYmxlLWNhcmRcXHByb2plY3QtdGFibGUtY2FyZC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvaG9tZS9wcm9qZWN0LXRhYmxlL3Byb2plY3QtdGFibGUtY2FyZC9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcX3ZhcmlhYmxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0UsWUFBWTtFQUNaLGlCQUNGLEVBQUE7O0FBRUE7RUFDRSxjQUFzQjtFQUN0QixnQkFBZ0IsRUFBQTs7QUFGbEI7SUFJSSxlQUFlLEVBQUE7O0FBSW5CO0VBQ0UsY0NYZ0I7RURZaEIsbUJBQW1CO0VBQ25CLGdCQUFnQjtFQUNoQixtQkFBbUIsRUFBQTs7QUFKckI7SUFNSSxjQ2xCYyxFQUFBOztBRHNCbEI7RUFDRSxlQUFlLEVBQUE7O0FBR2pCO0VBQ0UsWUFBWTtFQUNaLDZCQUE2QixFQUFBOztBQUcvQjtFQUNFLFVBQVU7RUFDVixrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxXQUFXO0VBQ1gsa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsWUFBWTtFQUNaLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLFlBQVk7RUFDWixrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxjQUFjO0VBQ2Qsa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsV0FBVztFQUNYLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLFdBQVc7RUFDWCxrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxhQUFhO0VBQ2Isa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsWUFBWTtFQUNaLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLGNBQWM7RUFDZCxrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxnQkFBZ0I7RUFDaEIsa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsV0FBVztFQUNYLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLHlCQUF5QjtFQUN6QixrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLG1CQUFtQixFQUFBOztBQUpyQjtJQU1JLDRDQUE0QyxFQUFBOztBQUloRDtFQUNFLDBCQUEwQixFQUFBOztBQUQ1QjtJQUdJLGVBQWUsRUFBQTs7QUFJbkI7RUFDRSxZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxzQkFBc0IsRUFBQTs7QUFHeEI7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLDhCQUE4QixFQUFBOztBQUdoQztFQUNFO0lBQ0UsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUEsRUFDdkI7O0FBR0g7RUFDRSxZQUFZO0VBQ1osYUFBYTtFQUNiLG1CQUFtQixFQUFBOztBQUdyQjtFQUNFLGlCQUFpQjtFQUNqQixZQUFZO0VBQ1osZ0JBQ0YsRUFBQTs7QUFFQTtFQUNFLFdBQVc7RUFDWCxlQUFlLEVBQUE7O0FBR2pCO0VBQ0Usc0JBQXNCO0VBQ3RCLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osbUJBQW1CLEVBQUE7O0FBR3JCO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQiw4QkFBOEIsRUFBQTs7QUFHaEM7RUFDRSxZQUFZO0VBQ1osYUFBYTtFQUNiLG1CQUFtQixFQUFBOztBQUdyQjtFQUNFLFlBQVk7RUFDWixpQkFBaUIsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2hvbWUvcHJvamVjdC10YWJsZS9wcm9qZWN0LXRhYmxlLWNhcmQvcHJvamVjdC10YWJsZS1jYXJkLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vLi4vdmFyaWFibGVzJztcclxuXHJcbi5jb21tdW5pdHktc2VydmljZXMge1xyXG4gIGNvbG9yOiBncmVlbjtcclxuICBmb250LXdlaWdodDogYm9sZFxyXG59XHJcblxyXG4uZGV0YWlscy1saW5rIHtcclxuICBjb2xvcjogcmdiKDU2LCA1NiwgNTYpO1xyXG4gIGZvbnQtc2l6ZTogMS4yZW07XHJcbiAgJjpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgfVxyXG59XHJcblxyXG4uZGV0YWlscy1saW5rIC5mYXIge1xyXG4gIGNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxuICBmb250LXNpemU6IHNtYWxsO1xyXG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XHJcbiAgJjpob3ZlciB7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gIH1cclxufVxyXG5cclxuLi1oaXN0b3JpY2FsOmhvdmVyIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5oaXN0b3JpY2FsLWxvZ28ge1xyXG4gIGhlaWdodDogMjVweDtcclxuICBtYXJnaW46IC0wLjI1ZW0gMC41ZW0gMCAwLjVlbTtcclxufVxyXG5cclxuLkFjdXRlIHtcclxuICBjb2xvcjogcmVkO1xyXG4gIGZvbnQtc2l6ZTogc21hbGxlcjtcclxufVxyXG5cclxuLkNvbW11bml0eSB7XHJcbiAgY29sb3I6IGJsdWU7XHJcbiAgZm9udC1zaXplOiBzbWFsbGVyO1xyXG59XHJcblxyXG4uSGVhbHRoIHtcclxuICBjb2xvcjogZ3JlZW47XHJcbiAgZm9udC1zaXplOiBzbWFsbGVyO1xyXG59XHJcblxyXG4uV29ya2ZvcmNlIHtcclxuICBjb2xvcjogZ3JlZW47XHJcbiAgZm9udC1zaXplOiBzbWFsbGVyO1xyXG59XHJcblxyXG4uTkFDRUwge1xyXG4gIGNvbG9yOiAjMjg1OTEwO1xyXG4gIGZvbnQtc2l6ZTogc21hbGxlcjtcclxufVxyXG5cclxuLk5IUyB7XHJcbiAgY29sb3I6IGdyYXk7XHJcbiAgZm9udC1zaXplOiBzbWFsbGVyO1xyXG59XHJcblxyXG4uU291dGgge1xyXG4gIGNvbG9yOiBncmF5O1xyXG4gIGZvbnQtc2l6ZTogc21hbGxlcjtcclxufVxyXG5cclxuLk1vbnRobHkge1xyXG4gIGNvbG9yOiBwdXJwbGU7XHJcbiAgZm9udC1zaXplOiBzbWFsbGVyO1xyXG59XHJcblxyXG4uTkFJQyB7XHJcbiAgY29sb3I6IGJyb3duO1xyXG4gIGZvbnQtc2l6ZTogc21hbGxlcjtcclxufVxyXG5cclxuLkNvbW1pc3Npb25pbmcge1xyXG4gIGNvbG9yOiAjZWRlZDAwO1xyXG4gIGZvbnQtc2l6ZTogc21hbGxlcjtcclxufVxyXG5cclxuLkFsbCB7XHJcbiAgY29sb3I6IGNob2NvbGF0ZTtcclxuICBmb250LXNpemU6IHNtYWxsZXI7XHJcbn1cclxuXHJcbi5NdWx0aS1zZWN0b3Ige1xyXG4gIGNvbG9yOiBncmF5O1xyXG4gIGZvbnQtc2l6ZTogc21hbGxlcjtcclxufVxyXG5cclxuLnByb2plY3QtY2FyZCB7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI0NDQ0NDQztcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgcGFkZGluZzogNHB4O1xyXG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XHJcbiAgJjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEyOCwgMTI4LCAxMjgsIDAuMDgyKTtcclxuICB9XHJcbn1cclxuXHJcbi5yZWdpc3RyYXRpb24ge1xyXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gICY6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIH1cclxufVxyXG5cclxuaW1nIHtcclxuICBoZWlnaHQ6IDUwcHg7XHJcbiAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xyXG4gIGZsb2F0OiBsZWZ0O1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbn1cclxuXHJcbi5wcm9qZWN0LWxpc3Qge1xyXG4gIGRpc3BsYXk6IGZsZXg7IFxyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7IFxyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxufVxyXG5cclxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTAwcHgpIHtcclxuICAucHJvamVjdC1saXN0IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogbm9ybWFsO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICB9XHJcbn1cclxuXHJcbi5wcm9qZWN0LWxpc3QgLmluZm9ybWF0aW9uIHtcclxuICBwYWRkaW5nOiAzcHg7IFxyXG4gIGRpc3BsYXk6IGZsZXg7IFxyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuXHJcbi5wcm9qZWN0LWxpc3QtYnV0dG9ucyB7XHJcbiAgdGV4dC1hbGlnbjogcmlnaHQ7IFxyXG4gIHBhZGRpbmc6IDNweDsgXHJcbiAgZm9udC1zaXplOiAxLjJlbVxyXG59XHJcblxyXG4ucHJvamVjdC1saXN0LWJ1dHRvbnMgYnV0dG9uIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXJnaW4tdG9wOiA1cHg7XHJcbn1cclxuXHJcbi5hcmNoaXZlZC1jYXJkIHtcclxuICBib3JkZXI6IDFweCBzb2xpZCBncmF5OyBcclxuICBib3JkZXItcmFkaXVzOiA1cHg7IFxyXG4gIHBhZGRpbmc6IDhweDsgXHJcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcclxufVxyXG5cclxuLmFyY2hpdmVkLWNhcmQgLnNlY3Rpb24ge1xyXG4gIGRpc3BsYXk6IGZsZXg7IFxyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7IFxyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxufVxyXG5cclxuLmFyY2hpdmVkLWNhcmQgLmltYWdlLXRpdGxlIHtcclxuICBwYWRkaW5nOiAzcHg7IFxyXG4gIGRpc3BsYXk6IGZsZXg7IFxyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuXHJcbi5hcmNoaXZlZC1jYXJkIC5idXR0b24ge1xyXG4gIHBhZGRpbmc6IDNweDtcclxuICB0ZXh0LWFsaWduOiByaWdodDsgXHJcbn0iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Project } from 'app/utilities/classes/project/project';\r\nimport * as moment from 'moment';\r\n\r\ninterface Section {\r\n title: string;\r\n projects: Array;\r\n}\r\n\r\n@Component({\r\n selector: 'app-project-table-card',\r\n templateUrl: './project-table-card.component.html',\r\n styleUrls: ['./project-table-card.component.scss']\r\n})\r\nexport class ProjectTableCardComponent implements OnInit {\r\n @Input() sections: Section;\r\n @Input() archived: Section;\r\n @Input() searchText: string;\r\n @Input() registrationStatus: boolean;\r\n @Input() organisationSelection: number;\r\n\r\n constructor(\r\n private router: Router\r\n ) { }\r\n\r\n ngOnInit() { }\r\n\r\n dateFormat(date) {\r\n return moment(date).add(1, 'years').format('YY');\r\n }\r\n\r\n navProjectDetail(projectId: number) {\r\n this.router.navigate([\"/project-detail\", projectId]);\r\n }\r\n\r\n navProjectOverview(projectId: number) {\r\n this.router.navigate([\"/project-overview\", projectId]);\r\n }\r\n\r\n navDashboard(projectId: number) {\r\n if (projectId == 39) {\r\n this.router.navigate([\"/ics\"]);\r\n } else {\r\n this.router.navigate([\"/dashboard\", projectId]);\r\n }\r\n }\r\n\r\n navProjectRegistration(projectId: number, organisationId: number) {\r\n this.router.navigate([\"/project-registration\", projectId, organisationId]);\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

\\r\\n Your current projects \\r\\n

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

\\r\\n Other NHSBN projects \\r\\n

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

\\r\\n Historical Projects \\r\\n

\\r\\n \\r\\n \\r\\n
\"","module.exports = \".project-table {\\n background-color: white; }\\n\\n.sort-clear {\\n display: flex;\\n padding-top: 1em;\\n float: right;\\n justify-content: flex-end; }\\n\\n.search-input {\\n border-radius: 5px;\\n margin-left: 1em; }\\n\\n#organisations {\\n border-radius: 5px; }\\n\\n.filter {\\n display: flex;\\n padding-top: 1em; }\\n\\n.current-projects {\\n cursor: pointer;\\n margin-top: 2em;\\n display: table; }\\n\\n.other-historical-projects {\\n cursor: pointer;\\n display: table;\\n padding-top: 1.5em; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvaG9tZS9wcm9qZWN0LXRhYmxlL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxhcHBcXGhvbWVcXHByb2plY3QtdGFibGVcXHByb2plY3QtdGFibGUuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSx1QkFBdUIsRUFBQTs7QUFHekI7RUFDRSxhQUFhO0VBQ2IsZ0JBQWdCO0VBQ2hCLFlBQVk7RUFDWix5QkFBeUIsRUFBQTs7QUFHM0I7RUFDRSxrQkFBa0I7RUFDbEIsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0Usa0JBQ0YsRUFBQTs7QUFFQTtFQUNFLGFBQWE7RUFDYixnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxlQUFlO0VBQ2YsZUFBZTtFQUNmLGNBQWMsRUFBQTs7QUFHaEI7RUFDRSxlQUFlO0VBQ2YsY0FBYztFQUNkLGtCQUFrQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvaG9tZS9wcm9qZWN0LXRhYmxlL3Byb2plY3QtdGFibGUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIucHJvamVjdC10YWJsZSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbi5zb3J0LWNsZWFyIHtcclxuICBkaXNwbGF5OiBmbGV4OyBcclxuICBwYWRkaW5nLXRvcDogMWVtOyBcclxuICBmbG9hdDogcmlnaHQ7IFxyXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcbn1cclxuXHJcbi5zZWFyY2gtaW5wdXQge1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweDsgXHJcbiAgbWFyZ2luLWxlZnQ6IDFlbTtcclxufVxyXG5cclxuI29yZ2FuaXNhdGlvbnMge1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweFxyXG59XHJcblxyXG4uZmlsdGVyIHtcclxuICBkaXNwbGF5OiBmbGV4OyBcclxuICBwYWRkaW5nLXRvcDogMWVtO1xyXG59XHJcblxyXG4uY3VycmVudC1wcm9qZWN0cyB7XHJcbiAgY3Vyc29yOiBwb2ludGVyOyBcclxuICBtYXJnaW4tdG9wOiAyZW07XHJcbiAgZGlzcGxheTogdGFibGU7XHJcbn1cclxuXHJcbi5vdGhlci1oaXN0b3JpY2FsLXByb2plY3RzIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7IFxyXG4gIGRpc3BsYXk6IHRhYmxlOyBcclxuICBwYWRkaW5nLXRvcDogMS41ZW07XHJcbn0iXX0= */\"","import { Component, Input, OnChanges } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { MemberService } from \"../../utilities/services/member.service\";\r\nimport { Project } from \"../../utilities/classes/project/project\";\r\nimport { LoaderService } from \"../../utilities/services/loader.service\";\r\nimport * as moment from 'moment';\r\n\r\ninterface Section {\r\n title: string;\r\n projects: Array;\r\n}\r\n\r\ntype ProjectApiResponse = { [key: string]: Array }\r\n@Component({\r\n selector: \"app-project-table\",\r\n templateUrl: \"./project-table.component.html\",\r\n styleUrls: [\"./project-table.component.scss\"],\r\n})\r\nexport class ProjectTableComponent implements OnChanges {\r\n @Input() organisationSelection: number;\r\n\r\n public sections: Array
= null;\r\n public archived: Section;\r\n public errorRegistrationNA: string = \"Registration is not currently available for this project\"; // Error codes: 2101, 2103\r\n public errorDataCollectionNA: string = \"Data collection is not currently available for this project.\"; // 2102\r\n public errorOrganisationAccess: string = \"Your organisation does not currently have access to this project. Please contact support.\"; // 2104, 2105, 2106\r\n public errorUserAccess: string = \"You do not currently have access to this project. Please contact support.\"; // 2107, 2108, 2109\r\n\r\n public showHistorical: boolean = false;\r\n public showOtherProjects: boolean = true;\r\n public showActiveProjects: boolean = true;\r\n public searchText: string = '';\r\n public currentDate: any = new Date();\r\n public filterSections: Array
= null;\r\n public sortButton: boolean = false;\r\n public selectedItem: string = 'Filter by sector...';\r\n public defaultSections: Array
= null;\r\n public reset: boolean = false;\r\n\r\n constructor(\r\n private memberService: MemberService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n public loaderService: LoaderService\r\n ) {}\r\n\r\n ngOnChanges() {\r\n if (this.organisationSelection) {\r\n this.getProjectAccess();\r\n }\r\n }\r\n\r\n getProjectAccess() {\r\n this.memberService.ProjectAccess(this.organisationSelection).subscribe(\r\n (p) => {\r\n if (p.data) {\r\n this.sections = Object.entries(p.data as ProjectApiResponse).map(([sectionTitle, projects]) => {\r\n return {\r\n title: sectionTitle,\r\n projects: projects\r\n }\r\n })\r\n this.defaultSections = this.sections\r\n let i = this.sections.findIndex(\r\n (item) => item.title === \"Archived\"\r\n );\r\n\r\n if (i > -1) {\r\n this.archived = this.sections[i];\r\n this.sections.splice(i, 1);\r\n }\r\n\r\n this.filterSections = this.sections;\r\n\r\n this.sections.forEach(section => {\r\n section.projects.forEach(project => {\r\n var openDate: any = new Date(project.dataCollectionOpenDate);\r\n var closeDate: any = new Date(project.dataCollectionCloseDate);\r\n\r\n // Active project if it has a 'registrationId'\r\n if(project.registrationId) {\r\n project.activeProject = true;\r\n } else {\r\n project.activeProject = false;\r\n }\r\n \r\n // Checking if Data Collection is closed\r\n if(this.currentDate.getTime() > closeDate.getTime()) {\r\n if(project.year !== null) {\r\n project.status = `Data collection closed for ${ project.year }/${ ((project.year + 1).toString()).slice(2,4) }`;\r\n }\r\n project.statusColor = 'red';\r\n }\r\n\r\n // Checking if Data Collection is open or soon to be\r\n if(openDate.getTime() > this.currentDate.getTime()) {\r\n // Removed for now, had a negative effect on NACEL countdown.\r\n // project.status = 'Data collection opens ' + moment(openDate).format('MMMM Do');\r\n // project.statusColor = '#005EB8';\r\n project.status = '';\r\n project.statusColor = '';\r\n }\r\n else if(closeDate.getTime() > this.currentDate.getTime()) {\r\n var closingDays: any = Math.floor((closeDate - this.currentDate) / (1000 * 60 * 60 * 24));\r\n project.status = 'Data collection closes in ' + closingDays + ' days';\r\n if(closingDays > 14) {\r\n project.statusColor = 'green';\r\n } else {\r\n project.statusColor = 'orange';\r\n }\r\n }\r\n })\r\n });\r\n }\r\n //Check if filters is in URL\r\n if(this.route.snapshot.queryParams.filter && !this.reset){\r\n this.onChange(this.route.snapshot.queryParams.filter)\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n getRegistrationClosedTooltip(p: Project) {\r\n if (p.signUpErrorCode == 2101 || p.signUpErrorCode == 2103) {\r\n return this.errorRegistrationNA;\r\n }\r\n\r\n if ((p.signUpErrorCode > 2103 && p.signUpErrorCode < 2107) || p.signUpErrorCode == 2110) {\r\n return this.errorOrganisationAccess;\r\n }\r\n\r\n if (p.signUpErrorCode == 2107 || p.signUpErrorCode == 2108) {\r\n return this.errorUserAccess;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n resetProjectList() {\r\n this.reset = true\r\n this.getProjectAccess();\r\n this.selectedItem = 'Filter by sector...';\r\n this.sortButton = false; \r\n this.searchText = '';\r\n this.router.navigate([],);\r\n }\r\n\r\n onChange(item) {\r\n this.sections = this.defaultSections\r\n this.router.navigate([], { queryParams: { filter: item }, queryParamsHandling: 'merge' });\r\n this.selectedItem = item;\r\n this.sections = this.sections.filter(el => el.title == item);\r\n this.sortButton = true;\r\n }\r\n\r\n sortList() {\r\n this.sections.sort(function(a, b) {\r\n return a.title.localeCompare(b.title);\r\n });\r\n this.sortButton = true;\r\n }\r\n\r\n getDataCollectionClosedTooltip(p: Project) {\r\n if (p.accessProjectErrorCode == 2102) {\r\n return this.errorDataCollectionNA;\r\n }\r\n\r\n if (p.accessProjectErrorCode > 2103 && p.accessProjectErrorCode < 2107) {\r\n return this.errorOrganisationAccess;\r\n }\r\n\r\n if (p.accessProjectErrorCode == 2107 || p.accessProjectErrorCode == 2109) {\r\n return this.errorUserAccess;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n navProjectDetail(projectId: number) {\r\n this.router.navigate([\"/project-detail\", projectId]);\r\n }\r\n\r\n navProjectOverview(projectId: number) {\r\n this.router.navigate([\"/project-overview\", projectId]);\r\n }\r\n\r\n navDashboard(projectId: number) {\r\n if (projectId == 39) {\r\n this.router.navigate([\"/ics\"]);\r\n } else {\r\n this.router.navigate([\"/dashboard\", projectId]);\r\n }\r\n }\r\n\r\n navProjectRegistration(projectId: number, organisationId: number) {\r\n this.router.navigate([\"/project-registration\", projectId, organisationId]);\r\n }\r\n}\r\n","module.exports = \"
\\r\\n

{{ section.title }}

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

\\r\\n Visit our \\r\\n NHSFutures workspace and get involved in the discussions.\\r\\n

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

Visit our \\r\\n {{ section.title }} {{ section.description }}

\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n {{ data.eventDt | date: \\\"d\\\" }}\\r\\n
\\r\\n {{ data.eventName }}
\\r\\n {{ data.eventDt | date: \\\"d MMMM y / H:mm\\\":'GMT' }} - {{ data.eventEndDt | date: \\\"H:mm\\\":'GMT' }}\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n {{ data.uploadTime | date: \\\"d\\\" }}\\r\\n
\\r\\n \\r\\n {{ data.documentName | slice:0:50 }}{{ data.documentName.length > 50 ? '...' : '' }}
\\r\\n {{ data.documentCategoryName }} / {{ data.year }} \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\"","module.exports = \".event-group .event-list .event-info b {\\n color: #005eb8; }\\n\\n.event-group .event-list .event-info small {\\n color: gray; }\\n\\n.event-group .event-list {\\n padding-bottom: 0.5em;\\n display: flex;\\n flex-direction: row;\\n flex-wrap: nowrap;\\n align-items: flex-start; }\\n\\n.event-group .event-list span {\\n border: 2px solid #005eb8;\\n min-width: 3rem;\\n border-radius: 5px;\\n color: #005eb8;\\n margin-right: 5px;\\n text-align-last: center;\\n font-size: smaller; }\\n\\n.sidebar-link:hover {\\n cursor: pointer;\\n text-decoration: underline; }\\n\\n@media screen and (max-width: 768px) {\\n .event-group {\\n display: none; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvaG9tZS9zaWRlYmFyL3NpZGViYXItc2VjdGlvbi9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxob21lXFxzaWRlYmFyXFxzaWRlYmFyLXNlY3Rpb25cXHNpZGViYXItc2VjdGlvbi5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGNBQWMsRUFBQTs7QUFHaEI7RUFDRSxXQUFXLEVBQUE7O0FBR2I7RUFDRSxxQkFBcUI7RUFDckIsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixpQkFBaUI7RUFDakIsdUJBQXVCLEVBQUE7O0FBR3pCO0VBQ0UseUJBQXlCO0VBQ3pCLGVBQWU7RUFDZixrQkFBa0I7RUFDbEIsY0FBYztFQUNkLGlCQUFpQjtFQUNqQix1QkFBdUI7RUFDdkIsa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsZUFBZTtFQUNmLDBCQUEwQixFQUFBOztBQUc1QjtFQUNFO0lBQ0UsYUFBYSxFQUFBLEVBQ2QiLCJmaWxlIjoic3JjL2FwcC9ob21lL3NpZGViYXIvc2lkZWJhci1zZWN0aW9uL3NpZGViYXItc2VjdGlvbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5ldmVudC1ncm91cCAuZXZlbnQtbGlzdCAuZXZlbnQtaW5mbyBiIHtcclxuICBjb2xvcjogIzAwNWViODtcclxufVxyXG5cclxuLmV2ZW50LWdyb3VwIC5ldmVudC1saXN0IC5ldmVudC1pbmZvIHNtYWxsIHtcclxuICBjb2xvcjogZ3JheTtcclxufVxyXG5cclxuLmV2ZW50LWdyb3VwIC5ldmVudC1saXN0IHtcclxuICBwYWRkaW5nLWJvdHRvbTogMC41ZW07XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gIGZsZXgtd3JhcDogbm93cmFwO1xyXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG59XHJcblxyXG4uZXZlbnQtZ3JvdXAgLmV2ZW50LWxpc3Qgc3BhbiB7XHJcbiAgYm9yZGVyOiAycHggc29saWQgIzAwNWViODtcclxuICBtaW4td2lkdGg6IDNyZW07XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIGNvbG9yOiAjMDA1ZWI4O1xyXG4gIG1hcmdpbi1yaWdodDogNXB4O1xyXG4gIHRleHQtYWxpZ24tbGFzdDogY2VudGVyO1xyXG4gIGZvbnQtc2l6ZTogc21hbGxlcjtcclxufVxyXG5cclxuLnNpZGViYXItbGluazpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG59XHJcblxyXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xyXG4gIC5ldmVudC1ncm91cCB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxufVxyXG4iXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { MemberService } from 'app/utilities/services/member.service';\r\n\r\n@Component({\r\n selector: 'app-sidebar-section',\r\n templateUrl: './sidebar-section.component.html',\r\n styleUrls: ['./sidebar-section.component.scss']\r\n})\r\nexport class SidebarSectionComponent implements OnInit {\r\n @Input() section: any;\r\n public organisationId: number\r\n\r\n constructor(\r\n private router: Router,\r\n private memberService: MemberService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.organisationId = JSON.parse(sessionStorage.getItem('organisationId'));\r\n }\r\n\r\n selectedEvent(eventId: number) {\r\n this.router.navigate([\"/events\"], { queryParams: { id: eventId }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n getSelectedDocument(documentId: number) {\r\n this.memberService.AWSSelectedDocument(documentId, this.organisationId).subscribe(\r\n a => { window.open(a.data.documentUrl) }\r\n );\r\n }\r\n}\r\n","module.exports = \"\\r\\n
\\r\\n
\\r\\n

Welcome back, {{ user.fullName }}

\\r\\n

\\r\\n This is the new NHS Benchmarking Members' Area home page,\\r\\n designed to make it easier to access projects, find information and key metrics across all sectors.\\r\\n Read more \\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2hvbWUvc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, Input, OnChanges } from '@angular/core';\r\nimport { User } from 'app/utilities/classes/user/user';\r\nimport { Event } from '../../utilities/classes/event/event'\r\nimport { IResourcesNonProjectDocuments } from 'app/utilities/models/resources/resources-nonProjectDocuments.vm';\r\nimport { IProjectDocumentsProjectsDocuments } from 'app/utilities/models/resources/projectDocuments-projects-documents.vm';\r\n\r\n@Component({\r\n selector: 'app-sidebar',\r\n templateUrl: './sidebar.component.html',\r\n styleUrls: ['./sidebar.component.scss']\r\n})\r\nexport class SidebarComponent implements OnChanges {\r\n @Input() user: User;\r\n @Input() filteredEvents: Event;\r\n @Input() filteredRequests: any;\r\n @Input() resourceList: IResourcesNonProjectDocuments;\r\n @Input() yourReports: IProjectDocumentsProjectsDocuments;\r\n\r\n public sections: Array;\r\n \r\n constructor() { }\r\n\r\n ngOnChanges() { \r\n this.sections = [\r\n {\r\n title: 'Events',\r\n icon: 'far fa-calendar-alt',\r\n description: 'page for our full programme.',\r\n link: '/events', \r\n data: this.filteredEvents\r\n }, \r\n // {\r\n // title: 'Your Reports', \r\n // icon: 'far fa-file-alt', \r\n // description: 'page to see all available documents.',\r\n // link: '/resources', \r\n // data: this.yourReports\r\n // }, \r\n {\r\n title: 'Resources', \r\n icon: 'far fa-file-search', \r\n description: 'page to see all available resources.', \r\n link: '/resources', \r\n data: this.resourceList\r\n }, \r\n {\r\n title: 'NHSFutures', \r\n icon: 'far fa-comments',\r\n }\r\n ];\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { LandingComponent } from './landing.component'\r\n\r\nconst landingRoutes: Routes = [\r\n { path: 'landing', redirectTo: 'login', pathMatch: 'full' },\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(landingRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class LandingRoutingModule { }","module.exports = \"
\\r\\n \\r\\n
\\r\\n \\\"NHSBN\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

Registration Complete

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

\\r\\n Thank you very much for your request to join the NHS Benchmarking\\r\\n Network.\\r\\n

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

\\r\\n Your request has been received and is now being processed. You will\\r\\n hear from us shortly.\\r\\n

\\r\\n\\r\\n Click here to login\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n

Subscribe

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

\\r\\n To subscribe to the Network please send us your details using the\\r\\n form below.\\r\\n

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

\\r\\n For more information about the work of the Network and how our\\r\\n services may support your organisation please\\r\\n click here. If you would like to send us a query,\\r\\n please click here.\\r\\n

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

\\r\\n Click here to go back to the login page.\\r\\n

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

\\r\\n Subscriptions are renewed annually on 1st April. Please contact\\r\\n Kim Burton at\\r\\n k.burton12@nhs.net for\\r\\n further details about the 2021/22 subscription fee.\\r\\n

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

\\r\\n Your organisation is a member of the Network. Please\\r\\n click here to request a login\\r\\n or click here to login.\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n If your organisation appears in the dropdown list, please\\r\\n click on it.\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n {{ member }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n

{{ registrationFormErrors.organisationName }}

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n Please note that the Lead Contact will have the right to\\r\\n set up other users within your organisation and control\\r\\n their level of access to the data collection tools. Please\\r\\n ensure the Lead Contact identified has the appropriate level\\r\\n of authority within your organisation to exercise these\\r\\n rights.\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n

{{ registrationFormErrors.leadContactName }}

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

{{ registrationFormErrors.leadContactTitle }}

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

Email Address is required.

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

Email Address cannot be longer than 60 characters.

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

Email Address is not valid.

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

Confirm Email Address is required.

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

\\r\\n Email Address and Confirm Email Address fields do not\\r\\n match.\\r\\n

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

{{ registrationFormErrors.leadContactPhone }}

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

{{ registrationFormErrors.invoiceAddress1 }}

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

{{ registrationFormErrors.invoiceAddress2 }}

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

{{ registrationFormErrors.invoiceAddress3 }}

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

{{ registrationFormErrors.invoiceAddress4 }}

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

{{ registrationFormErrors.invoiceAddressPc }}

\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n If you require a Purchase Order Number to be added to the\\r\\n invoice, please enter it here.\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n

{{ registrationFormErrors.poNumber }}

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

\\r\\n By clicking Submit, you are agreeing to our\\r\\n Terms of Membership. You also agree to be invoiced the relevant Membership Fees\\r\\n by North of England CSU on behalf of the NHS Benchmarking\\r\\n Network.\\r\\n

\\r\\n\\r\\n \\r\\n Submit\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n

\\r\\n The Benchmarking Network is the in-house benchmarking service of the\\r\\n NHS. The Network is hosted by\\r\\n East London Foundation Trust.\\r\\n

\\r\\n

\\r\\n © East London Foundation Trust {{ copyDate | date: \\\"yyyy\\\" }} |\\r\\n Help\\r\\n

\\r\\n
\\r\\n \\r\\n\\r\\n\"","module.exports = \"/*---------------------\\r\\n UNAUTHENTICATE ROUTES \\r\\n --------------------- */\\nh1 {\\n font-weight: 600;\\n margin-top: 0;\\n margin-bottom: 0.5em; }\\nlabel {\\n font-weight: 600; }\\n.help-block {\\n font-size: 13px;\\n line-height: 1.25em;\\n color: #768692;\\n margin-top: 3px; }\\n.login-header {\\n margin-top: 5%; }\\n.login-header img {\\n max-width: 60%; }\\n.login-header img {\\n width: 100%; }\\n.login-footer {\\n margin-bottom: 10%;\\n padding: 1em 2em; }\\n.login-footer p {\\n color: #768692;\\n font-size: 15px; }\\n.login-footer a {\\n color: #768692; }\\n.form-fix {\\n border-radius: 1px;\\n background-color: #fafafa;\\n padding: 10px;\\n font-size: 17px;\\n height: 38px;\\n outline: none;\\n box-shadow: none; }\\n.form-fix:focus {\\n background-color: white;\\n border: 1px solid #ccc;\\n outline: none;\\n box-shadow: none; }\\n.link {\\n margin-top: 1em; }\\n.link a:hover {\\n cursor: pointer;\\n text-decoration: underline; }\\n.unauth-page {\\n min-height: 100vh;\\n background-color: rgba(118, 134, 146, 0.05); }\\n.toggle {\\n color: #005EB8; }\\n.toggle:hover {\\n cursor: pointer; }\\n@media screen and (max-width: 640px) {\\n h1 {\\n font-size: 25px; }\\n .login-header,\\n .login-footer {\\n padding: 2em 0; }\\n .panel-body {\\n padding: 1.5em; } }\\n.subscription-details {\\n color: #768692; }\\n.subscription-details ul {\\n font-size: 17px;\\n padding-left: 1em; }\\n.search-container {\\n position: relative; }\\n.search-dropdown {\\n position: absolute;\\n z-index: 10;\\n background: white;\\n font-size: 15px;\\n border: 1px solid #ccc;\\n margin-top: -1px;\\n width: 100%;\\n max-height: 200px;\\n overflow-y: scroll; }\\n.search-dropdown:empty {\\n border: none; }\\n.search-dropdown div {\\n padding: 7px 10px; }\\n.search-dropdown div:hover {\\n background-color: #ebf5ff;\\n cursor: pointer; }\\n.unauth-page .alert {\\n font-size: 17px; }\\n.unauth-page .alert a {\\n color: inherit;\\n text-decoration: underline; }\\n.unauth-page .panel-body {\\n padding: 2em; }\\n.unauth-page h1 {\\n font-size: 28px; }\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbGFuZGluZy9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcX3VuYXV0aC5zY3NzIiwic3JjL2FwcC9sYW5kaW5nL2xhbmRpbmcuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2xhbmRpbmcvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyIsInNyYy9hcHAvbGFuZGluZy9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxsYW5kaW5nXFxsYW5kaW5nLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzt5QkNFeUI7QURFekI7RUFDRSxnQkFBZ0I7RUFDaEIsYUFBYTtFQUNiLG9CQUFvQixFQUFBO0FBR3RCO0VBQ0UsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDRSxlQUFlO0VBQ2YsbUJBQW1CO0VBQ25CLGNFWmdCO0VGYWhCLGVBQWUsRUFBQTtBQUdqQjtFQUNFLGNBQWMsRUFBQTtBQURoQjtJQUdJLGNBQWMsRUFBQTtBQUlsQjtFQUNFLFdBQVcsRUFBQTtBQUdiO0VBQ0Usa0JBQWtCO0VBQ2xCLGdCQUFnQixFQUFBO0FBR2xCO0VBQ0UsY0VqQ2dCO0VGa0NoQixlQUFlLEVBQUE7QUFHakI7RUFDRSxjRXRDZ0IsRUFBQTtBRnlDbEI7RUFDRSxrQkFBa0I7RUFDbEIseUJBQXlCO0VBQ3pCLGFBQWE7RUFDYixlQUFlO0VBQ2YsWUFBWTtFQUNaLGFBQWE7RUFHYixnQkFBZ0IsRUFBQTtBQUdsQjtFQUNFLHVCQUF1QjtFQUN2QixzQkFBc0I7RUFDdEIsYUFBYTtFQUdiLGdCQUFnQixFQUFBO0FBR2xCO0VBQ0UsZUFBZSxFQUFBO0FBR2pCO0VBQ0UsZUFBZTtFQUNmLDBCQUEwQixFQUFBO0FBRzVCO0VBQ0UsaUJBQWlCO0VBQ2pCLDJDQUEyQyxFQUFBO0FBRzdDO0VBQ0UsY0UvRWdCLEVBQUE7QUZrRmxCO0VBQ0UsZUFBZSxFQUFBO0FBR2pCO0VBQ0U7SUFDRSxlQUFlLEVBQUE7RUFFakI7O0lBRUUsY0FBYyxFQUFBO0VBRWhCO0lBQ0UsY0FBYyxFQUFBLEVBQ2Y7QUc5Rkg7RUFDRSxjRERnQixFQUFBO0FDSWxCO0VBQ0UsZUFBZTtFQUNmLGlCQUFpQixFQUFBO0FBR25CO0VBQ0Usa0JBQWtCLEVBQUE7QUFHcEI7RUFDRSxrQkFBa0I7RUFDbEIsV0FBVztFQUNYLGlCQUFpQjtFQUNqQixlQUFlO0VBQ2Ysc0JBQXNCO0VBQ3RCLGdCQUFnQjtFQUNoQixXQUFXO0VBQ1gsaUJBQWlCO0VBQ2pCLGtCQUFrQixFQUFBO0FBR3BCO0VBQ0UsWUFBWSxFQUFBO0FBR2Q7RUFDRSxpQkFBaUIsRUFBQTtBQUduQjtFQUNFLHlCQUF5QjtFQUN6QixlQUFlLEVBQUE7QUFHakI7RUFDRSxlQUFlLEVBQUE7QUFHakI7RUFDRSxjQUFjO0VBQ2QsMEJBQTBCLEVBQUE7QUFHNUI7RUFDRSxZQUFZLEVBQUE7QUFHZDtFQUNFLGVBQWUsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2xhbmRpbmcvbGFuZGluZy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgVU5BVVRIRU5USUNBVEUgUk9VVEVTIFxyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG5cclxuaDEge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgbWFyZ2luLXRvcDogMDtcclxuICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxufVxyXG5cclxubGFiZWwge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi5oZWxwLWJsb2NrIHtcclxuICBmb250LXNpemU6IDEzcHg7XHJcbiAgbGluZS1oZWlnaHQ6IDEuMjVlbTtcclxuICBjb2xvcjogJG5ocy1ncmV5O1xyXG4gIG1hcmdpbi10b3A6IDNweDtcclxufVxyXG5cclxuLmxvZ2luLWhlYWRlciB7XHJcbiAgbWFyZ2luLXRvcDogNSU7XHJcbiAgJiBpbWcge1xyXG4gICAgbWF4LXdpZHRoOiA2MCU7XHJcbiAgfVxyXG59XHJcblxyXG4ubG9naW4taGVhZGVyIGltZyB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5sb2dpbi1mb290ZXIge1xyXG4gIG1hcmdpbi1ib3R0b206IDEwJTtcclxuICBwYWRkaW5nOiAxZW0gMmVtO1xyXG59XHJcblxyXG4ubG9naW4tZm9vdGVyIHAge1xyXG4gIGNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgZm9udC1zaXplOiAxNXB4O1xyXG59XHJcblxyXG4ubG9naW4tZm9vdGVyIGEge1xyXG4gIGNvbG9yOiAkbmhzLWdyZXk7XHJcbn1cclxuXHJcbi5mb3JtLWZpeCB7XHJcbiAgYm9yZGVyLXJhZGl1czogMXB4O1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XHJcbiAgcGFkZGluZzogMTBweDtcclxuICBmb250LXNpemU6IDE3cHg7XHJcbiAgaGVpZ2h0OiAzOHB4O1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xyXG4gIC1tb3otYm94LXNoYWRvdzogbm9uZTtcclxuICBib3gtc2hhZG93OiBub25lO1xyXG59XHJcblxyXG4uZm9ybS1maXg6Zm9jdXMge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XHJcbiAgLW1vei1ib3gtc2hhZG93OiBub25lO1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbi5saW5rIHtcclxuICBtYXJnaW4tdG9wOiAxZW07XHJcbn1cclxuXHJcbi5saW5rIGE6aG92ZXIge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxufVxyXG5cclxuLnVuYXV0aC1wYWdlIHtcclxuICBtaW4taGVpZ2h0OiAxMDB2aDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDExOCwgMTM0LCAxNDYsIDAuMDUpO1xyXG59XHJcblxyXG4udG9nZ2xlIHtcclxuICBjb2xvcjogJG5ocy1ibHVlO1xyXG59XHJcblxyXG4udG9nZ2xlOmhvdmVyIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KSB7XHJcbiAgaDEge1xyXG4gICAgZm9udC1zaXplOiAyNXB4O1xyXG4gIH1cclxuICAubG9naW4taGVhZGVyLFxyXG4gIC5sb2dpbi1mb290ZXIge1xyXG4gICAgcGFkZGluZzogMmVtIDA7XHJcbiAgfVxyXG4gIC5wYW5lbC1ib2R5IHtcclxuICAgIHBhZGRpbmc6IDEuNWVtO1xyXG4gIH1cclxufVxyXG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gIFVOQVVUSEVOVElDQVRFIFJPVVRFUyBcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbmgxIHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMC41ZW07IH1cblxubGFiZWwge1xuICBmb250LXdlaWdodDogNjAwOyB9XG5cbi5oZWxwLWJsb2NrIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBsaW5lLWhlaWdodDogMS4yNWVtO1xuICBjb2xvcjogIzc2ODY5MjtcbiAgbWFyZ2luLXRvcDogM3B4OyB9XG5cbi5sb2dpbi1oZWFkZXIge1xuICBtYXJnaW4tdG9wOiA1JTsgfVxuICAubG9naW4taGVhZGVyIGltZyB7XG4gICAgbWF4LXdpZHRoOiA2MCU7IH1cblxuLmxvZ2luLWhlYWRlciBpbWcge1xuICB3aWR0aDogMTAwJTsgfVxuXG4ubG9naW4tZm9vdGVyIHtcbiAgbWFyZ2luLWJvdHRvbTogMTAlO1xuICBwYWRkaW5nOiAxZW0gMmVtOyB9XG5cbi5sb2dpbi1mb290ZXIgcCB7XG4gIGNvbG9yOiAjNzY4NjkyO1xuICBmb250LXNpemU6IDE1cHg7IH1cblxuLmxvZ2luLWZvb3RlciBhIHtcbiAgY29sb3I6ICM3Njg2OTI7IH1cblxuLmZvcm0tZml4IHtcbiAgYm9yZGVyLXJhZGl1czogMXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xuICBwYWRkaW5nOiAxMHB4O1xuICBmb250LXNpemU6IDE3cHg7XG4gIGhlaWdodDogMzhweDtcbiAgb3V0bGluZTogbm9uZTtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xuICAtbW96LWJveC1zaGFkb3c6IG5vbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7IH1cblxuLmZvcm0tZml4OmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gIG91dGxpbmU6IG5vbmU7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcbiAgLW1vei1ib3gtc2hhZG93OiBub25lO1xuICBib3gtc2hhZG93OiBub25lOyB9XG5cbi5saW5rIHtcbiAgbWFyZ2luLXRvcDogMWVtOyB9XG5cbi5saW5rIGE6aG92ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG5cbi51bmF1dGgtcGFnZSB7XG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDExOCwgMTM0LCAxNDYsIDAuMDUpOyB9XG5cbi50b2dnbGUge1xuICBjb2xvcjogIzAwNUVCODsgfVxuXG4udG9nZ2xlOmhvdmVyIHtcbiAgY3Vyc29yOiBwb2ludGVyOyB9XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KSB7XG4gIGgxIHtcbiAgICBmb250LXNpemU6IDI1cHg7IH1cbiAgLmxvZ2luLWhlYWRlcixcbiAgLmxvZ2luLWZvb3RlciB7XG4gICAgcGFkZGluZzogMmVtIDA7IH1cbiAgLnBhbmVsLWJvZHkge1xuICAgIHBhZGRpbmc6IDEuNWVtOyB9IH1cblxuLnN1YnNjcmlwdGlvbi1kZXRhaWxzIHtcbiAgY29sb3I6ICM3Njg2OTI7IH1cblxuLnN1YnNjcmlwdGlvbi1kZXRhaWxzIHVsIHtcbiAgZm9udC1zaXplOiAxN3B4O1xuICBwYWRkaW5nLWxlZnQ6IDFlbTsgfVxuXG4uc2VhcmNoLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuXG4uc2VhcmNoLWRyb3Bkb3duIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcbiAgbWFyZ2luLXRvcDogLTFweDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC1oZWlnaHQ6IDIwMHB4O1xuICBvdmVyZmxvdy15OiBzY3JvbGw7IH1cblxuLnNlYXJjaC1kcm9wZG93bjplbXB0eSB7XG4gIGJvcmRlcjogbm9uZTsgfVxuXG4uc2VhcmNoLWRyb3Bkb3duIGRpdiB7XG4gIHBhZGRpbmc6IDdweCAxMHB4OyB9XG5cbi5zZWFyY2gtZHJvcGRvd24gZGl2OmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ViZjVmZjtcbiAgY3Vyc29yOiBwb2ludGVyOyB9XG5cbi51bmF1dGgtcGFnZSAuYWxlcnQge1xuICBmb250LXNpemU6IDE3cHg7IH1cblxuLnVuYXV0aC1wYWdlIC5hbGVydCBhIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG5cbi51bmF1dGgtcGFnZSAucGFuZWwtYm9keSB7XG4gIHBhZGRpbmc6IDJlbTsgfVxuXG4udW5hdXRoLXBhZ2UgaDEge1xuICBmb250LXNpemU6IDI4cHg7IH1cbiIsIiRpY29uLWZvbnQtcGF0aDogJy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAtc2Fzcy9hc3NldHMvZm9udHMvYm9vdHN0cmFwLyc7XHJcblxyXG4vLyBDdXN0b20gdmFyaWFibGVzXHJcbiRuaHMtYmx1ZTogIzAwNUVCODtcclxuJG5ocy1kYXJrLWJsdWU6ICMwMDQ0ODU7XHJcbiRuaHMtZ3JleTogIzc2ODY5MjtcclxuJG5ocy1mYWRlZC1ibHVlOiAjRjJGN0ZCO1xyXG4kYWN0aXZlLWFkbWluLXllbGxvdzogI0ZEQkMzMDtcclxuJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93OiAjRTU5OTAwO1xyXG4gXHJcbi8vIEJvb3RzdHJhcCB2YXJpYWJsZXNcclxuJHRleHQtY29sb3I6IGJsYWNrO1xyXG4kYm9yZGVyLXJhZGl1cy1iYXNlOiAwO1xyXG4kYm9yZGVyLXJhZGl1cy1zbWFsbDogMDtcclxuJGJyYW5kLXByaW1hcnk6ICRuaHMtYmx1ZTtcclxuJGJyYW5kLXN1Y2Nlc3M6IGdyZWVuO1xyXG4kbGluay1ob3Zlci1kZWNvcmF0aW9uOiBub25lO1xyXG4kZm9udC1zaXplLWg0OiAxN3B4O1xyXG4kbmF2YmFyLW1hcmdpbi1ib3R0b206IDA7XHJcbiRuYXZiYXItaGVpZ2h0OiA2MHB4O1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtYmc6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWJvcmRlci1jb2xvcjogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaWNvbi1iYXItYmc6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOiB3aGl0ZTtcclxuXHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc6ICRuaHMtYmx1ZTtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1jb2xvcjogd2hpdGU7XHJcbiRuYXYtcGlsbHMtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJHRhYmxlLWJnLWhvdmVyOiAkbmhzLWZhZGVkLWJsdWU7XHJcbiRoZWFkaW5ncy1zbWFsbC1jb2xvcjogJG5ocy1ncmV5OyIsIkBpbXBvcnQgJy4uLy4uL3ZhcmlhYmxlcyc7XHJcbkBpbXBvcnQgJy4uLy4uL3VuYXV0aCc7XHJcblxyXG4vLyBMYW5kaW5nIHN0eWxlc1xyXG5cclxuLnN1YnNjcmlwdGlvbi1kZXRhaWxzIHtcclxuICBjb2xvcjogJG5ocy1ncmV5O1xyXG59XHJcblxyXG4uc3Vic2NyaXB0aW9uLWRldGFpbHMgdWwge1xyXG4gIGZvbnQtc2l6ZTogMTdweDtcclxuICBwYWRkaW5nLWxlZnQ6IDFlbTtcclxufVxyXG5cclxuLnNlYXJjaC1jb250YWluZXIge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLnNlYXJjaC1kcm9wZG93biB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHotaW5kZXg6IDEwO1xyXG4gIGJhY2tncm91bmQ6IHdoaXRlO1xyXG4gIGZvbnQtc2l6ZTogMTVweDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIG1hcmdpbi10b3A6IC0xcHg7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWF4LWhlaWdodDogMjAwcHg7XHJcbiAgb3ZlcmZsb3cteTogc2Nyb2xsO1xyXG59XHJcblxyXG4uc2VhcmNoLWRyb3Bkb3duOmVtcHR5IHtcclxuICBib3JkZXI6IG5vbmU7XHJcbn1cclxuXHJcbi5zZWFyY2gtZHJvcGRvd24gZGl2IHtcclxuICBwYWRkaW5nOiA3cHggMTBweDtcclxufVxyXG5cclxuLnNlYXJjaC1kcm9wZG93biBkaXY6aG92ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNlYmY1ZmY7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4udW5hdXRoLXBhZ2UgLmFsZXJ0IHtcclxuICBmb250LXNpemU6IDE3cHg7XHJcbn1cclxuXHJcbi51bmF1dGgtcGFnZSAuYWxlcnQgYSB7XHJcbiAgY29sb3I6IGluaGVyaXQ7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcbn1cclxuXHJcbi51bmF1dGgtcGFnZSAucGFuZWwtYm9keSB7XHJcbiAgcGFkZGluZzogMmVtO1xyXG59XHJcblxyXG4udW5hdXRoLXBhZ2UgaDEge1xyXG4gIGZvbnQtc2l6ZTogMjhweDtcclxufSJdfQ== */\"","import { Component, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n\r\nimport { Angular2PromiseButtonModule } from 'angular2-promise-buttons/dist';\r\nimport { ModalDirective } from 'ngx-bootstrap/modal';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\nimport { MemberService } from '../utilities/services/member.service';\r\nimport { emailMatcher } from '../utilities/validation/email-matcher';\r\nimport { DataService } from 'app/utilities/services/data.service';\r\n\r\n@Component({\r\n selector: 'app-landing',\r\n templateUrl: './landing.component.html',\r\n styleUrls: ['./landing.component.scss'],\r\n encapsulation: ViewEncapsulation.None, // New spinner (child-elements)\r\n})\r\nexport class LandingComponent {\r\n signIn: FormGroup;\r\n registerForm: FormGroup;\r\n date: Date;\r\n errorMessage: string;\r\n registerSuccess: boolean = false;\r\n copyDate = new Date();\r\n queryParam;\r\n arrMembers: string [];\r\n statusLogin: boolean = false;\r\n statusSubscribe: boolean = true;\r\n alreadyMemberShow: boolean = false;\r\n alreadyMemberHide: boolean = true;\r\n returnUrl: string;\r\n loggingIn: boolean = false;\r\n\r\n @ViewChild('subscription') public lgModal: ModalDirective;\r\n\r\n constructor(\r\n public fb: FormBuilder,\r\n private memberService: MemberService,\r\n private dataService: DataService,\r\n private toastr: ToastrService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private newSpinner: Angular2PromiseButtonModule, // New spinner\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n // Set return URL\r\n this.returnUrl = this.route.snapshot.queryParams['returnUrl'];\r\n this.buildLoginForm();\r\n this.buildRegisterForm();\r\n this.getOrganisationList();\r\n // Route to subscription form\r\n if (this.route.snapshot.queryParams['option'] == 'subscribe') {\r\n this.statusLogin = true;\r\n this.statusSubscribe = false;\r\n }\r\n }\r\n\r\n getOrganisationList() {\r\n this.memberService.OrganisationList().subscribe(\r\n d => {\r\n this.arrMembers = d.data.organisations.map(o => o.organisationName);\r\n }\r\n )\r\n }\r\n\r\n toggleLogin(){\r\n this.statusLogin = !this.statusLogin;\r\n this.statusSubscribe = !this.statusSubscribe;\r\n }\r\n\r\n alreadyMember() {\r\n this.alreadyMemberShow = true;\r\n this.alreadyMemberHide = false;\r\n }\r\n\r\n buildLoginForm() {\r\n this.signIn = this.fb.group({\r\n \"emailAddress\": [\"\", [Validators.required, Validators.maxLength(200), Validators.email]],\r\n \"password\": [\"\"]\r\n });\r\n\r\n this.signIn.valueChanges.subscribe(\r\n data => this.onSignInValueChanged(data)\r\n );\r\n\r\n this.onSignInValueChanged();\r\n }\r\n\r\n buildRegisterForm() {\r\n this.registerForm = this.fb.group({\r\n \"organisationName\": [\"\", [Validators.required, Validators.maxLength(100)]],\r\n \"leadContactName\": [\"\", [Validators.required, Validators.maxLength(60)]],\r\n \"leadContactTitle\": [\"\", [Validators.required, Validators.maxLength(60)]],\r\n \"emails\": this.fb.group({\r\n \"emailAddress\": [\"\", [Validators.required, Validators.maxLength(60), Validators.email]],\r\n \"confirmEmailAddress\": [\"\", [Validators.required]]\r\n }, { validator: emailMatcher }),\r\n \"leadContactPhone\": [\"\", [Validators.required, Validators.maxLength(20)]],\r\n \"invoiceAddress1\": [\"\", [Validators.required, Validators.maxLength(60)]],\r\n \"invoiceAddress2\": [\"\", [Validators.required, Validators.maxLength(60)]],\r\n \"invoiceAddress3\": [\"\", [Validators.required, Validators.maxLength(60)]],\r\n \"invoiceAddress4\": [\"\", [Validators.required, Validators.maxLength(60)]],\r\n \"invoiceAddressPc\": [\"\", [Validators.required, Validators.maxLength(10)]],\r\n \"poNumber\": [\"\", [Validators.maxLength(20)]]\r\n });\r\n\r\n this.registerForm.valueChanges.subscribe(\r\n data => this.onRegisterValueChanged(data)\r\n );\r\n\r\n this.onRegisterValueChanged();\r\n }\r\n\r\n onSubmit() {\r\n this.loggingIn = true;\r\n\r\n if (this.signIn.value.emailAddress && this.signIn.value.password) { \r\n this.memberService\r\n .Login(this.signIn.value.emailAddress, this.signIn.value.password)\r\n .subscribe(\r\n s => { \r\n // Navigate to return URL on successful login\r\n if (this.returnUrl && this.returnUrl !== '%2Fhome') {\r\n this.getUserDetails();\r\n this.router.navigateByUrl(this.returnUrl);\r\n } else {\r\n this.router.navigateByUrl('/');\r\n }\r\n },\r\n e => { \r\n let errorCode = e.error.error.errorCode;\r\n this.loggingIn = false;\r\n switch(errorCode) {\r\n case 5101:\r\n this.errorMessage = 'The email address above is not recognised. Please try again.'\r\n break;\r\n case 5102:\r\n this.errorMessage = 'Your account is currently disabled. Please contact the Support Team for more information.'\r\n break;\r\n case 5103:\r\n this.errorMessage = 'Your account does not currently have any assigned roles. Please contact the Support Team for more information.'\r\n break;\r\n case 5104:\r\n this.errorMessage = 'Your organisation is not currently subscribed to the network. Please contact the Support Team for more information.'\r\n break;\r\n default:\r\n this.errorMessage = 'This password is incorrect. Please try again or click Forgotten Password? below.'\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n getUserDetails() {\r\n this.memberService.User().subscribe(\r\n u => { \r\n this.dataService.setUser(u.data); \r\n }\r\n );\r\n }\r\n\r\n registration() {\r\n this.newSpinner = new Promise((resolve, reject) => {\r\n setTimeout(resolve, 3000);\r\n });\r\n\r\n let membershipResponse = this.registerForm.value;\r\n membershipResponse['productId'] = 1\r\n membershipResponse['leadContactEmail'] = membershipResponse.emails.emailAddress;\r\n delete membershipResponse.emails\r\n\r\n this.memberService.MembershipRegistrationRequest(membershipResponse).subscribe(\r\n r => {\r\n this.registerSuccess = true;\r\n },\r\n e => {\r\n this.toastr.error('There has been an error, please contact enquiries.', 'Membership Subscription', { enableHtml: true });\r\n }\r\n );\r\n }\r\n\r\n navResetPassword() {\r\n this.router.navigate(['/reset-password']);\r\n }\r\n\r\n onSignInValueChanged(data?: any) {\r\n if (!this.signIn) { return; }\r\n const form = this.signIn;\r\n\r\n for (const field in this.signInFormErrors) {\r\n // clear previous error message (if any)\r\n this.signInFormErrors[field] = '';\r\n const control = form.get(field);\r\n\r\n if (control && control.touched && !control.valid) {\r\n const messages = this.validationMessages[field];\r\n\r\n for (const key in control.errors) {\r\n this.signInFormErrors[field] += messages[key] + ' ';\r\n }\r\n }\r\n }\r\n }\r\n\r\n onRegisterValueChanged(data?: any) {\r\n if (!this.registerForm) { return; }\r\n const form = this.registerForm;\r\n\r\n for (const field in this.registrationFormErrors) {\r\n // clear previous error message (if any)\r\n this.registrationFormErrors[field] = '';\r\n const control = form.get(field);\r\n\r\n if (control && control.dirty && !control.valid) {\r\n const messages = this.validationMessages[field];\r\n\r\n for (const key in control.errors) {\r\n this.registrationFormErrors[field] += messages[key] + ' ';\r\n }\r\n }\r\n }\r\n }\r\n\r\n signInFormErrors = {\r\n 'emailAddress': ''\r\n }\r\n\r\n registrationFormErrors = {\r\n 'organisationName': '',\r\n 'leadContactName': '',\r\n 'leadContactTitle': '',\r\n 'leadContactPhone': '',\r\n 'invoiceAddress1': '',\r\n 'invoiceAddress2': '',\r\n 'invoiceAddress3': '',\r\n 'invoiceAddress4': '',\r\n 'invoiceAddressPc': '',\r\n 'poNumber': ''\r\n }\r\n\r\n validationMessages = {\r\n 'emailAddress': {\r\n 'required': 'Email Address is required.',\r\n 'maxlength': 'Email Address cannot be longer than 60 characters.',\r\n 'email': 'Email Address is not valid.'\r\n },\r\n 'organisationName': {\r\n 'required': 'Organisation Name is required.',\r\n 'maxlength': 'Organisation Name cannot be longer than 100 characters.'\r\n },\r\n 'leadContactName': {\r\n 'required': 'Full Name is required.',\r\n 'maxlength': 'Full Name cannot be longer than 60 characters.'\r\n },\r\n 'leadContactTitle': {\r\n 'required': 'Job Title is required.',\r\n 'maxlength': 'Job Title cannot be longer than 60 characters.'\r\n },\r\n 'leadContactPhone': {\r\n 'required': 'Contact Number is required.',\r\n 'maxlength': 'Contact Number cannot be longer than 20 characters.'\r\n },\r\n 'invoiceAddress1': {\r\n 'required': 'Address 1 is required.',\r\n 'maxlength': 'Address 1 cannot be longer than 60 characters.'\r\n },\r\n 'invoiceAddress2': {\r\n 'required': 'Address 2 is required.',\r\n 'maxlength': 'Address 2 cannot be longer than 60 characters.'\r\n },\r\n 'invoiceAddress3': {\r\n 'required': 'Address 3 is required.',\r\n 'maxlength': 'Address 3 cannot be longer than 60 characters.'\r\n },\r\n 'invoiceAddress4': {\r\n 'required': 'County is required.',\r\n 'maxlength': 'County cannot be longer than 60 characters.'\r\n },\r\n 'invoiceAddressPc': {\r\n 'required': 'Postcode is required.',\r\n 'maxlength': 'Postcode cannot be longer than 10 characters.'\r\n },\r\n 'poNumber': {\r\n 'maxlength': 'Purchase Order cannot be longer than 60 characters.'\r\n }\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { HttpModule } from '@angular/http';\r\nimport { HttpClientModule } from '@angular/common/http';\r\n\r\nimport { ModalModule } from 'ngx-bootstrap';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { ResponsiveModule } from 'ngx-responsive';\r\n\r\nimport { LandingComponent } from './landing.component';\r\nimport { LandingRoutingModule } from './landing-routing.module'\r\n\r\nimport { SearchPipe } from '../utilities/pipes/search.pipe';\r\nimport { Angular2PromiseButtonModule } from 'angular2-promise-buttons/dist';\r\n\r\n@NgModule({\r\n imports: [ \r\n CommonModule, \r\n ReactiveFormsModule,\r\n FormsModule,\r\n ToastrModule.forRoot(),\r\n ModalModule.forRoot(),\r\n LandingRoutingModule,\r\n ResponsiveModule.forRoot(),\r\n HttpModule,\r\n HttpClientModule,\r\n Angular2PromiseButtonModule.forRoot({\r\n spinnerTpl: '',\r\n disableBtn: true, \r\n btnLoadingClass: 'is-loading',\r\n handleCurrentBtnOnly: false\r\n })\r\n ],\r\n declarations: [ SearchPipe, LandingComponent ]\r\n})\r\nexport class LandingModule {}","module.exports = \"
\\r\\n \\r\\n (error)\\r\\n
\\r\\n {{ errorMsg }}\\r\\n
\\r\\n
\\r\\n\"","module.exports = \".error-msg {\\n color: #a94442; }\\n\\n.fix-error-icon {\\n top: 27px; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbG9naW4vbG9naW4tZXJyb3JzL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxhcHBcXGxvZ2luXFxsb2dpbi1lcnJvcnNcXGZpZWxkLWVycm9yLWRpc3BsYXkuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxjQUFjLEVBQUE7O0FBRWhCO0VBQ0UsU0FBUyxFQUFBIiwiZmlsZSI6InNyYy9hcHAvbG9naW4vbG9naW4tZXJyb3JzL2ZpZWxkLWVycm9yLWRpc3BsYXkuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZXJyb3ItbXNnIHtcclxuICBjb2xvcjogI2E5NDQ0MjtcclxufVxyXG4uZml4LWVycm9yLWljb24ge1xyXG4gIHRvcDogMjdweDtcclxufVxyXG4iXX0= */\"","import { Component, OnInit, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"app-field-error-display\",\r\n templateUrl: \"./field-error-display.component.html\",\r\n styleUrls: [\"./field-error-display.component.scss\"],\r\n})\r\nexport class FieldErrorDisplayComponent {\r\n @Input() errorMsg: string;\r\n @Input() displayError: boolean;\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { RouterModule, Routes } from \"@angular/router\";\r\n\r\nimport { LoginComponent } from \"./login.component\";\r\n\r\nconst loginRoutes: Routes = [{ path: \"login\", component: LoginComponent }];\r\n@NgModule({\r\n imports: [RouterModule.forChild(loginRoutes)],\r\n exports: [RouterModule],\r\n})\r\nexport class LoginRoutingModule {}\r\n","module.exports = \"
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\\"NHSBN\\r\\n
\\r\\n
\\r\\n
\\r\\n

Members' Area Login

\\r\\n

Use your credentials below

\\r\\n
\\r\\n Development Site: \\r\\n This site is being used for the development of new projects.\\r\\n \\r\\n Please click here to login to the live Members' Area.\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n {{ signInFormErrors.emailAddress }}\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n Forgotten Password?\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n

Request a Login

\\r\\n

\\r\\n \\r\\n Your organisation must have an active membership to the Network to\\r\\n request a login.\\r\\n \\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{ member.organisationName }}
\\r\\n Request a login for this organisation\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n If you do not have a login for the Members' Area, use the search box\\r\\n above to check if your organisation has an active membership.
You\\r\\n will be redirected to create a user profile or to our Contact Us page\\r\\n where you can request a membership pack.\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"NHS\\r\\n
\\r\\n
\\r\\n

Request a Login

\\r\\n

\\r\\n Use the following form to request a login to the Members' Area. This\\r\\n should only be completed if your organisation is a member of the\\r\\n Network.\\r\\n

\\r\\n
\\r\\n Development Site: \\r\\n This site is being used for the development of new projects.\\r\\n \\r\\n Please click here to login to the live Members' Area.\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
Required & cannot be more then 60 characters
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
Email is required
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
Required & cannot be more then 60 characters
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n (success)\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n

\\r\\n Please select the projects for which you require access\\r\\n

\\r\\n
\\r\\n \\r\\n \\r\\n {{ products[i].productName }}\\r\\n \\r\\n
\\r\\n
Selection of one or more is required
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n I would like to receive marketing communications\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n I have read and agreed to the \\r\\n \\r\\n Terms & Conditions\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
Accepting the Ts & Cs is required
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n  Back to login\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\\"NHSBN\\r\\n
\\r\\n
\\r\\n

Request Received

\\r\\n

You will be contacted as soon as we process your request.

\\r\\n

For more information on what we do, please visit our website:\\r\\n NHS Benchmarking Network\\r\\n

\\r\\n

\\r\\n \\r\\n Submit another for a colleague \\r\\n \\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"Network\\\"\\r\\n
\\r\\n
Network Projects
\\r\\n
\\r\\n

\\r\\n The Network projects cover all acute, community, mental health and\\r\\n commissioning sector projects. You will receive access to a library of\\r\\n resources, including online toolkits, summary reports, and good\\r\\n practice case studies, plus so much more. To support networking,\\r\\n register to attend one of our upcoming events, or contribute to the\\r\\n Forum to share ideas and practices. For more information, please\\r\\n contact\\r\\n enquiries@nhsbenchmarking.nhs.uk\\r\\n

\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"NACEL\\\"\\r\\n
\\r\\n
NACEL
\\r\\n
\\r\\n

\\r\\n The National Audit of Care at the End of Life (NACEL) is a national\\r\\n comparative audit of the quality and outcomes of care experienced by\\r\\n the dying person and those important to them during the last admission\\r\\n leading to death in acute hospitals, community hospitals and mental\\r\\n health inpatient providers in England, Wales, and Northen Ireland. For\\r\\n further information on the audit, please contact the Support Team on\\r\\n nhsbn.nacelsupport@nhs.net\\r\\n

\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"NHSE\\\"/\\r\\n
\\r\\n
NHSE & NHSI Learning Disability Improvement Standards
\\r\\n
\\r\\n

\\r\\n The Learning Disabilities Improvement Standard review is a national\\r\\n data collection, commissioned by NHS England & NHS Improvement. It is\\r\\n designed to fully understand the extent of Trust compliance with the\\r\\n published Improvement Standards, and to identify improvement\\r\\n oppurtunities. For further information on the review, please contact\\r\\n the Support Team on\\r\\n nhsbn.nhsildsupport@nhs.net\\r\\n

\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
Same Day Emergency Care (SDEC)
\\r\\n

\\r\\n This is a collaboration between the NHS Benchmarking Network and NHS \\r\\n England/ NHS Improvement (NHSE/I) and is open to all English Acute Trusts. \\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"/*---------------------\\r\\n UNAUTHENTICATE ROUTES \\r\\n --------------------- */\\nh1 {\\n font-weight: 600;\\n margin-top: 0;\\n margin-bottom: 0.5em; }\\nlabel {\\n font-weight: 600; }\\n.help-block {\\n font-size: 13px;\\n line-height: 1.25em;\\n color: #768692;\\n margin-top: 3px; }\\n.login-header {\\n margin-top: 5%; }\\n.login-header img {\\n max-width: 60%; }\\n.login-header img {\\n width: 100%; }\\n.login-footer {\\n margin-bottom: 10%;\\n padding: 1em 2em; }\\n.login-footer p {\\n color: #768692;\\n font-size: 15px; }\\n.login-footer a {\\n color: #768692; }\\n.form-fix {\\n border-radius: 1px;\\n background-color: #fafafa;\\n padding: 10px;\\n font-size: 17px;\\n height: 38px;\\n outline: none;\\n box-shadow: none; }\\n.form-fix:focus {\\n background-color: white;\\n border: 1px solid #ccc;\\n outline: none;\\n box-shadow: none; }\\n.link {\\n margin-top: 1em; }\\n.link a:hover {\\n cursor: pointer;\\n text-decoration: underline; }\\n.unauth-page {\\n min-height: 100vh;\\n background-color: rgba(118, 134, 146, 0.05); }\\n.toggle {\\n color: #005EB8; }\\n.toggle:hover {\\n cursor: pointer; }\\n@media screen and (max-width: 640px) {\\n h1 {\\n font-size: 25px; }\\n .login-header,\\n .login-footer {\\n padding: 2em 0; }\\n .panel-body {\\n padding: 1.5em; } }\\n.subscription-details {\\n color: #768692; }\\n.subscription-details ul {\\n font-size: 17px;\\n padding-left: 1em; }\\n.search-container {\\n position: relative; }\\n.search-dropdown {\\n position: absolute;\\n z-index: 10;\\n background: white;\\n font-size: 15px;\\n border: 1px solid #ccc;\\n border-radius: 5px;\\n margin-top: -1px;\\n width: 100%;\\n max-height: 200px;\\n overflow-y: auto;\\n margin-top: 0.5em; }\\n.search-dropdown:empty {\\n border: none; }\\n.search-dropdown div {\\n padding: 7px 10px; }\\n.search-dropdown div:hover {\\n background-color: #ebf5ff;\\n cursor: pointer; }\\n.unauth-page .alert {\\n font-size: 17px; }\\n.unauth-page .alert a {\\n color: inherit;\\n text-decoration: underline; }\\n.unauth-page .panel-body {\\n padding: 2em; }\\n.unauth-page .panel-bodys {\\n padding-left: 2em;\\n padding-top: 3em; }\\n.unauth-page h1 {\\n font-size: 28px;\\n margin-bottom: 0.25em; }\\n.login-card {\\n background-color: white;\\n padding: 0.5em;\\n border: 1px solid #ccc;\\n border-radius: 5px;\\n position: relative;\\n margin-bottom: 5rem; }\\n.request-top-margin {\\n margin-top: 9vw; }\\n.cursor-pointer {\\n cursor: pointer; }\\n.login-header-banner {\\n margin-top: 0em !important;\\n margin-bottom: 1em;\\n padding: 0em !important;\\n padding-bottom: 1em; }\\n.login-header-banner img {\\n max-width: 60%; }\\n.form-padding {\\n padding: 1em; }\\n.form-fix {\\n border-radius: 5px;\\n background-color: #fafafa;\\n padding: 10px;\\n font-size: 17px;\\n border: 1px solid #ccc;\\n height: 38px;\\n outline: none;\\n box-shadow: none; }\\n.form-fix-white {\\n border-radius: 5px;\\n padding: 10px;\\n font-size: 17px;\\n border: 1px solid #ccc;\\n height: 38px;\\n outline: none;\\n box-shadow: none; }\\n.font-blue {\\n color: #005EB8; }\\n.font-blue .font-lightblue {\\n color: #4883bb;\\n font-size: smaller;\\n font-style: italic; }\\n.form-control-checkbox {\\n height: 15px;\\n width: 15px; }\\n.info-spacing {\\n padding-left: 5px;\\n font-size: 1em; }\\n.small-text {\\n font-size: 1em; }\\n.logo-fit {\\n height: 3em;\\n width: 3em;\\n margin-right: 20px; }\\n.logo-fit img {\\n width: 100%; }\\n.img-name {\\n display: flex; }\\n.center-text {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex-wrap: wrap;\\n margin-top: 90px; }\\n.center-texts {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n flex-direction: row;\\n flex-wrap: wrap;\\n margin-top: 4rem; }\\n.center-texts a {\\n color: #768692;\\n font-size: 17px; }\\n.button-padding {\\n margin-top: 1em; }\\n.has-feedback label ~ .form-control-feedback {\\n top: 30px; }\\na:hover {\\n color: #768692; }\\n.btn-success {\\n border-radius: 5px; }\\n.large-padding {\\n padding-top: 2em; }\\n@media (max-width: 991px) {\\n .request-top-margin {\\n margin-top: 0; } }\\n@media (max-width: 1025px) {\\n .content-margin {\\n padding-top: 6em; } }\\n@media (min-width: 800px) {\\n .content-margin {\\n padding-left: 5em; }\\n .center-content {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n flex-wrap: wrap; } }\\n.grey-text {\\n color: #768692;\\n font-size: 17px; }\\n.login-card .fa-check {\\n color: green; }\\n.faded-text {\\n font-size: 0.9em;\\n color: #768692; }\\n.faded-list-result {\\n color: #768692; }\\n.faded-list-result span {\\n font-size: smaller;\\n font-style: italic; }\\n.toast-message a {\\n font-weight: 700; }\\n.another-login {\\n padding-top: 1em;\\n color: #768692;\\n flex-wrap: wrap;\\n display: flex;\\n justify-content: flex-end; }\\n.control-label.required:after {\\n color: #d00;\\n content: \\\"*\\\";\\n margin-left: 5px;\\n top: 7px; }\\n.form-horizontal .control-label {\\n padding-top: 0px; }\\n.checkboxes {\\n display: flex;\\n align-items: flex-start;\\n font-weight: 600;\\n padding-bottom: 3px; }\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbG9naW4vQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF91bmF1dGguc2NzcyIsInNyYy9hcHAvbG9naW4vbG9naW4uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2xvZ2luL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxfdmFyaWFibGVzLnNjc3MiLCJzcmMvYXBwL2xvZ2luL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxhcHBcXGxvZ2luXFxsb2dpbi5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7eUJDRXlCO0FERXpCO0VBQ0UsZ0JBQWdCO0VBQ2hCLGFBQWE7RUFDYixvQkFBb0IsRUFBQTtBQUd0QjtFQUNFLGdCQUFnQixFQUFBO0FBR2xCO0VBQ0UsZUFBZTtFQUNmLG1CQUFtQjtFQUNuQixjRVpnQjtFRmFoQixlQUFlLEVBQUE7QUFHakI7RUFDRSxjQUFjLEVBQUE7QUFEaEI7SUFHSSxjQUFjLEVBQUE7QUFJbEI7RUFDRSxXQUFXLEVBQUE7QUFHYjtFQUNFLGtCQUFrQjtFQUNsQixnQkFBZ0IsRUFBQTtBQUdsQjtFQUNFLGNFakNnQjtFRmtDaEIsZUFBZSxFQUFBO0FBR2pCO0VBQ0UsY0V0Q2dCLEVBQUE7QUZ5Q2xCO0VBQ0Usa0JBQWtCO0VBQ2xCLHlCQUF5QjtFQUN6QixhQUFhO0VBQ2IsZUFBZTtFQUNmLFlBQVk7RUFDWixhQUFhO0VBR2IsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDRSx1QkFBdUI7RUFDdkIsc0JBQXNCO0VBQ3RCLGFBQWE7RUFHYixnQkFBZ0IsRUFBQTtBQUdsQjtFQUNFLGVBQWUsRUFBQTtBQUdqQjtFQUNFLGVBQWU7RUFDZiwwQkFBMEIsRUFBQTtBQUc1QjtFQUNFLGlCQUFpQjtFQUNqQiwyQ0FBMkMsRUFBQTtBQUc3QztFQUNFLGNFL0VnQixFQUFBO0FGa0ZsQjtFQUNF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QjtFQUNFLGdCQUFnQjtFQUNoQixjQUFjO0VBQ2QsZUFBZTtFQUNmLGFBQWE7RUFDYix5QkFBeUIsRUFBQTtBQUczQjtFQUNFLFdBQVc7RUFDWCxZQUFZO0VBQ1osZ0JBQWdCO0VBQ2hCLFFBQVEsRUFBQTtBQUdWO0VBQ0UsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDRSxhQUFhO0VBQ2IsdUJBQXVCO0VBQ3ZCLGdCQUFnQjtFQUNoQixtQkFBbUIsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBVTkFVVEhFTlRJQ0FURSBST1VURVMgXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcblxyXG5oMSB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBtYXJnaW4tdG9wOiAwO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG59XHJcblxyXG5sYWJlbCB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuLmhlbHAtYmxvY2sge1xyXG4gIGZvbnQtc2l6ZTogMTNweDtcclxuICBsaW5lLWhlaWdodDogMS4yNWVtO1xyXG4gIGNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgbWFyZ2luLXRvcDogM3B4O1xyXG59XHJcblxyXG4ubG9naW4taGVhZGVyIHtcclxuICBtYXJnaW4tdG9wOiA1JTtcclxuICAmIGltZyB7XHJcbiAgICBtYXgtd2lkdGg6IDYwJTtcclxuICB9XHJcbn1cclxuXHJcbi5sb2dpbi1oZWFkZXIgaW1nIHtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmxvZ2luLWZvb3RlciB7XHJcbiAgbWFyZ2luLWJvdHRvbTogMTAlO1xyXG4gIHBhZGRpbmc6IDFlbSAyZW07XHJcbn1cclxuXHJcbi5sb2dpbi1mb290ZXIgcCB7XHJcbiAgY29sb3I6ICRuaHMtZ3JleTtcclxuICBmb250LXNpemU6IDE1cHg7XHJcbn1cclxuXHJcbi5sb2dpbi1mb290ZXIgYSB7XHJcbiAgY29sb3I6ICRuaHMtZ3JleTtcclxufVxyXG5cclxuLmZvcm0tZml4IHtcclxuICBib3JkZXItcmFkaXVzOiAxcHg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcclxuICBwYWRkaW5nOiAxMHB4O1xyXG4gIGZvbnQtc2l6ZTogMTdweDtcclxuICBoZWlnaHQ6IDM4cHg7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XHJcbiAgLW1vei1ib3gtc2hhZG93OiBub25lO1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbi5mb3JtLWZpeDpmb2N1cyB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcclxuICAtbW96LWJveC1zaGFkb3c6IG5vbmU7XHJcbiAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuLmxpbmsge1xyXG4gIG1hcmdpbi10b3A6IDFlbTtcclxufVxyXG5cclxuLmxpbmsgYTpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG59XHJcblxyXG4udW5hdXRoLXBhZ2Uge1xyXG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTE4LCAxMzQsIDE0NiwgMC4wNSk7XHJcbn1cclxuXHJcbi50b2dnbGUge1xyXG4gIGNvbG9yOiAkbmhzLWJsdWU7XHJcbn1cclxuXHJcbi50b2dnbGU6aG92ZXIge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjQwcHgpIHtcclxuICBoMSB7XHJcbiAgICBmb250LXNpemU6IDI1cHg7XHJcbiAgfVxyXG4gIC5sb2dpbi1oZWFkZXIsXHJcbiAgLmxvZ2luLWZvb3RlciB7XHJcbiAgICBwYWRkaW5nOiAyZW0gMDtcclxuICB9XHJcbiAgLnBhbmVsLWJvZHkge1xyXG4gICAgcGFkZGluZzogMS41ZW07XHJcbiAgfVxyXG59XHJcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgVU5BVVRIRU5USUNBVEUgUk9VVEVTIFxyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuaDEge1xuICBmb250LXdlaWdodDogNjAwO1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAwLjVlbTsgfVxuXG5sYWJlbCB7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7IH1cblxuLmhlbHAtYmxvY2sge1xuICBmb250LXNpemU6IDEzcHg7XG4gIGxpbmUtaGVpZ2h0OiAxLjI1ZW07XG4gIGNvbG9yOiAjNzY4NjkyO1xuICBtYXJnaW4tdG9wOiAzcHg7IH1cblxuLmxvZ2luLWhlYWRlciB7XG4gIG1hcmdpbi10b3A6IDUlOyB9XG4gIC5sb2dpbi1oZWFkZXIgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDYwJTsgfVxuXG4ubG9naW4taGVhZGVyIGltZyB7XG4gIHdpZHRoOiAxMDAlOyB9XG5cbi5sb2dpbi1mb290ZXIge1xuICBtYXJnaW4tYm90dG9tOiAxMCU7XG4gIHBhZGRpbmc6IDFlbSAyZW07IH1cblxuLmxvZ2luLWZvb3RlciBwIHtcbiAgY29sb3I6ICM3Njg2OTI7XG4gIGZvbnQtc2l6ZTogMTVweDsgfVxuXG4ubG9naW4tZm9vdGVyIGEge1xuICBjb2xvcjogIzc2ODY5MjsgfVxuXG4uZm9ybS1maXgge1xuICBib3JkZXItcmFkaXVzOiAxcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTdweDtcbiAgaGVpZ2h0OiAzOHB4O1xuICBvdXRsaW5lOiBub25lO1xuICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XG4gIC1tb3otYm94LXNoYWRvdzogbm9uZTtcbiAgYm94LXNoYWRvdzogbm9uZTsgfVxuXG4uZm9ybS1maXg6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcbiAgb3V0bGluZTogbm9uZTtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xuICAtbW96LWJveC1zaGFkb3c6IG5vbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7IH1cblxuLmxpbmsge1xuICBtYXJnaW4tdG9wOiAxZW07IH1cblxuLmxpbmsgYTpob3ZlciB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH1cblxuLnVuYXV0aC1wYWdlIHtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTE4LCAxMzQsIDE0NiwgMC4wNSk7IH1cblxuLnRvZ2dsZSB7XG4gIGNvbG9yOiAjMDA1RUI4OyB9XG5cbi50b2dnbGU6aG92ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7IH1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjQwcHgpIHtcbiAgaDEge1xuICAgIGZvbnQtc2l6ZTogMjVweDsgfVxuICAubG9naW4taGVhZGVyLFxuICAubG9naW4tZm9vdGVyIHtcbiAgICBwYWRkaW5nOiAyZW0gMDsgfVxuICAucGFuZWwtYm9keSB7XG4gICAgcGFkZGluZzogMS41ZW07IH0gfVxuXG4uc3Vic2NyaXB0aW9uLWRldGFpbHMge1xuICBjb2xvcjogIzc2ODY5MjsgfVxuXG4uc3Vic2NyaXB0aW9uLWRldGFpbHMgdWwge1xuICBmb250LXNpemU6IDE3cHg7XG4gIHBhZGRpbmctbGVmdDogMWVtOyB9XG5cbi5zZWFyY2gtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG5cbi5zZWFyY2gtZHJvcGRvd24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDEwO1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIG1hcmdpbi10b3A6IC0xcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiAyMDBweDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgbWFyZ2luLXRvcDogMC41ZW07IH1cblxuLnNlYXJjaC1kcm9wZG93bjplbXB0eSB7XG4gIGJvcmRlcjogbm9uZTsgfVxuXG4uc2VhcmNoLWRyb3Bkb3duIGRpdiB7XG4gIHBhZGRpbmc6IDdweCAxMHB4OyB9XG5cbi5zZWFyY2gtZHJvcGRvd24gZGl2OmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ViZjVmZjtcbiAgY3Vyc29yOiBwb2ludGVyOyB9XG5cbi51bmF1dGgtcGFnZSAuYWxlcnQge1xuICBmb250LXNpemU6IDE3cHg7IH1cblxuLnVuYXV0aC1wYWdlIC5hbGVydCBhIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG5cbi51bmF1dGgtcGFnZSAucGFuZWwtYm9keSB7XG4gIHBhZGRpbmc6IDJlbTsgfVxuXG4udW5hdXRoLXBhZ2UgLnBhbmVsLWJvZHlzIHtcbiAgcGFkZGluZy1sZWZ0OiAyZW07XG4gIHBhZGRpbmctdG9wOiAzZW07IH1cblxuLnVuYXV0aC1wYWdlIGgxIHtcbiAgZm9udC1zaXplOiAyOHB4O1xuICBtYXJnaW4tYm90dG9tOiAwLjI1ZW07IH1cblxuLmxvZ2luLWNhcmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgcGFkZGluZzogMC41ZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiA1cmVtOyB9XG5cbi5yZXF1ZXN0LXRvcC1tYXJnaW4ge1xuICBtYXJnaW4tdG9wOiA5dnc7IH1cblxuLmN1cnNvci1wb2ludGVyIHtcbiAgY3Vyc29yOiBwb2ludGVyOyB9XG5cbi5sb2dpbi1oZWFkZXItYmFubmVyIHtcbiAgbWFyZ2luLXRvcDogMGVtICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgcGFkZGluZzogMGVtICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctYm90dG9tOiAxZW07IH1cbiAgLmxvZ2luLWhlYWRlci1iYW5uZXIgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDYwJTsgfVxuXG4uZm9ybS1wYWRkaW5nIHtcbiAgcGFkZGluZzogMWVtOyB9XG5cbi5mb3JtLWZpeCB7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgcGFkZGluZzogMTBweDtcbiAgZm9udC1zaXplOiAxN3B4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xuICBoZWlnaHQ6IDM4cHg7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7IH1cblxuLmZvcm0tZml4LXdoaXRlIHtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBwYWRkaW5nOiAxMHB4O1xuICBmb250LXNpemU6IDE3cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gIGhlaWdodDogMzhweDtcbiAgb3V0bGluZTogbm9uZTtcbiAgYm94LXNoYWRvdzogbm9uZTsgfVxuXG4uZm9udC1ibHVlIHtcbiAgY29sb3I6ICMwMDVFQjg7IH1cblxuLmZvbnQtYmx1ZSAuZm9udC1saWdodGJsdWUge1xuICBjb2xvcjogIzQ4ODNiYjtcbiAgZm9udC1zaXplOiBzbWFsbGVyO1xuICBmb250LXN0eWxlOiBpdGFsaWM7IH1cblxuLmZvcm0tY29udHJvbC1jaGVja2JveCB7XG4gIGhlaWdodDogMTVweDtcbiAgd2lkdGg6IDE1cHg7IH1cblxuLmluZm8tc3BhY2luZyB7XG4gIHBhZGRpbmctbGVmdDogNXB4O1xuICBmb250LXNpemU6IDFlbTsgfVxuXG4uc21hbGwtdGV4dCB7XG4gIGZvbnQtc2l6ZTogMWVtOyB9XG5cbi5sb2dvLWZpdCB7XG4gIGhlaWdodDogM2VtO1xuICB3aWR0aDogM2VtO1xuICBtYXJnaW4tcmlnaHQ6IDIwcHg7IH1cblxuLmxvZ28tZml0IGltZyB7XG4gIHdpZHRoOiAxMDAlOyB9XG5cbi5pbWctbmFtZSB7XG4gIGRpc3BsYXk6IGZsZXg7IH1cblxuLmNlbnRlci10ZXh0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgbWFyZ2luLXRvcDogOTBweDsgfVxuXG4uY2VudGVyLXRleHRzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIG1hcmdpbi10b3A6IDRyZW07IH1cbiAgLmNlbnRlci10ZXh0cyBhIHtcbiAgICBjb2xvcjogIzc2ODY5MjtcbiAgICBmb250LXNpemU6IDE3cHg7IH1cblxuLmJ1dHRvbi1wYWRkaW5nIHtcbiAgbWFyZ2luLXRvcDogMWVtOyB9XG5cbi5oYXMtZmVlZGJhY2sgbGFiZWwgfiAuZm9ybS1jb250cm9sLWZlZWRiYWNrIHtcbiAgdG9wOiAzMHB4OyB9XG5cbmE6aG92ZXIge1xuICBjb2xvcjogIzc2ODY5MjsgfVxuXG4uYnRuLXN1Y2Nlc3Mge1xuICBib3JkZXItcmFkaXVzOiA1cHg7IH1cblxuLmxhcmdlLXBhZGRpbmcge1xuICBwYWRkaW5nLXRvcDogMmVtOyB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCkge1xuICAucmVxdWVzdC10b3AtbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwOyB9IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDEwMjVweCkge1xuICAuY29udGVudC1tYXJnaW4ge1xuICAgIHBhZGRpbmctdG9wOiA2ZW07IH0gfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogODAwcHgpIHtcbiAgLmNvbnRlbnQtbWFyZ2luIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDVlbTsgfVxuICAuY2VudGVyLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4LXdyYXA6IHdyYXA7IH0gfVxuXG4uZ3JleS10ZXh0IHtcbiAgY29sb3I6ICM3Njg2OTI7XG4gIGZvbnQtc2l6ZTogMTdweDsgfVxuXG4ubG9naW4tY2FyZCAuZmEtY2hlY2sge1xuICBjb2xvcjogZ3JlZW47IH1cblxuLmZhZGVkLXRleHQge1xuICBmb250LXNpemU6IDAuOWVtO1xuICBjb2xvcjogIzc2ODY5MjsgfVxuXG4uZmFkZWQtbGlzdC1yZXN1bHQge1xuICBjb2xvcjogIzc2ODY5MjsgfVxuICAuZmFkZWQtbGlzdC1yZXN1bHQgc3BhbiB7XG4gICAgZm9udC1zaXplOiBzbWFsbGVyO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxuXG4udG9hc3QtbWVzc2FnZSBhIHtcbiAgZm9udC13ZWlnaHQ6IDcwMDsgfVxuXG4uYW5vdGhlci1sb2dpbiB7XG4gIHBhZGRpbmctdG9wOiAxZW07XG4gIGNvbG9yOiAjNzY4NjkyO1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IH1cblxuLmNvbnRyb2wtbGFiZWwucmVxdWlyZWQ6YWZ0ZXIge1xuICBjb2xvcjogI2QwMDtcbiAgY29udGVudDogXCIqXCI7XG4gIG1hcmdpbi1sZWZ0OiA1cHg7XG4gIHRvcDogN3B4OyB9XG5cbi5mb3JtLWhvcml6b250YWwgLmNvbnRyb2wtbGFiZWwge1xuICBwYWRkaW5nLXRvcDogMHB4OyB9XG5cbi5jaGVja2JveGVzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHBhZGRpbmctYm90dG9tOiAzcHg7IH1cbiIsIiRpY29uLWZvbnQtcGF0aDogJy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAtc2Fzcy9hc3NldHMvZm9udHMvYm9vdHN0cmFwLyc7XHJcblxyXG4vLyBDdXN0b20gdmFyaWFibGVzXHJcbiRuaHMtYmx1ZTogIzAwNUVCODtcclxuJG5ocy1kYXJrLWJsdWU6ICMwMDQ0ODU7XHJcbiRuaHMtZ3JleTogIzc2ODY5MjtcclxuJG5ocy1mYWRlZC1ibHVlOiAjRjJGN0ZCO1xyXG4kYWN0aXZlLWFkbWluLXllbGxvdzogI0ZEQkMzMDtcclxuJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93OiAjRTU5OTAwO1xyXG4gXHJcbi8vIEJvb3RzdHJhcCB2YXJpYWJsZXNcclxuJHRleHQtY29sb3I6IGJsYWNrO1xyXG4kYm9yZGVyLXJhZGl1cy1iYXNlOiAwO1xyXG4kYm9yZGVyLXJhZGl1cy1zbWFsbDogMDtcclxuJGJyYW5kLXByaW1hcnk6ICRuaHMtYmx1ZTtcclxuJGJyYW5kLXN1Y2Nlc3M6IGdyZWVuO1xyXG4kbGluay1ob3Zlci1kZWNvcmF0aW9uOiBub25lO1xyXG4kZm9udC1zaXplLWg0OiAxN3B4O1xyXG4kbmF2YmFyLW1hcmdpbi1ib3R0b206IDA7XHJcbiRuYXZiYXItaGVpZ2h0OiA2MHB4O1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtYmc6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWJvcmRlci1jb2xvcjogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaWNvbi1iYXItYmc6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOiB3aGl0ZTtcclxuXHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc6ICRuaHMtYmx1ZTtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1jb2xvcjogd2hpdGU7XHJcbiRuYXYtcGlsbHMtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJHRhYmxlLWJnLWhvdmVyOiAkbmhzLWZhZGVkLWJsdWU7XHJcbiRoZWFkaW5ncy1zbWFsbC1jb2xvcjogJG5ocy1ncmV5OyIsIkBpbXBvcnQgXCIuLi8uLi92YXJpYWJsZXNcIjtcclxuQGltcG9ydCBcIi4uLy4uL3VuYXV0aFwiO1xyXG5cclxuLy8gTGFuZGluZyBzdHlsZXNcclxuXHJcbi5zdWJzY3JpcHRpb24tZGV0YWlscyB7XHJcbiAgY29sb3I6ICRuaHMtZ3JleTtcclxufVxyXG5cclxuLnN1YnNjcmlwdGlvbi1kZXRhaWxzIHVsIHtcclxuICBmb250LXNpemU6IDE3cHg7XHJcbiAgcGFkZGluZy1sZWZ0OiAxZW07XHJcbn1cclxuXHJcbi5zZWFyY2gtY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5zZWFyY2gtZHJvcGRvd24ge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB6LWluZGV4OiAxMDtcclxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICBmb250LXNpemU6IDE1cHg7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgbWFyZ2luLXRvcDogLTFweDtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXgtaGVpZ2h0OiAyMDBweDtcclxuICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gIG1hcmdpbi10b3A6IDAuNWVtO1xyXG59XHJcblxyXG4uc2VhcmNoLWRyb3Bkb3duOmVtcHR5IHtcclxuICBib3JkZXI6IG5vbmU7XHJcbn1cclxuXHJcbi5zZWFyY2gtZHJvcGRvd24gZGl2IHtcclxuICBwYWRkaW5nOiA3cHggMTBweDtcclxufVxyXG5cclxuLnNlYXJjaC1kcm9wZG93biBkaXY6aG92ZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNlYmY1ZmY7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4udW5hdXRoLXBhZ2UgLmFsZXJ0IHtcclxuICBmb250LXNpemU6IDE3cHg7XHJcbn1cclxuXHJcbi51bmF1dGgtcGFnZSAuYWxlcnQgYSB7XHJcbiAgY29sb3I6IGluaGVyaXQ7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcbn1cclxuXHJcbi51bmF1dGgtcGFnZSAucGFuZWwtYm9keSB7XHJcbiAgcGFkZGluZzogMmVtO1xyXG59XHJcblxyXG4udW5hdXRoLXBhZ2UgLnBhbmVsLWJvZHlzIHtcclxuICBwYWRkaW5nLWxlZnQ6IDJlbTtcclxuICBwYWRkaW5nLXRvcDogM2VtO1xyXG59XHJcblxyXG4udW5hdXRoLXBhZ2UgaDEge1xyXG4gIGZvbnQtc2l6ZTogMjhweDtcclxuICBtYXJnaW4tYm90dG9tOiAwLjI1ZW07XHJcbn1cclxuXHJcbi8vIENhcmQgTGF5b3V0XHJcbi5sb2dpbi1jYXJkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICBwYWRkaW5nOiAwLjVlbTtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgbWFyZ2luLWJvdHRvbTogNXJlbTtcclxufVxyXG5cclxuLnJlcXVlc3QtdG9wLW1hcmdpbiB7XHJcbiAgbWFyZ2luLXRvcDogOXZ3O1xyXG59XHJcblxyXG4uY3Vyc29yLXBvaW50ZXIge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmxvZ2luLWhlYWRlci1iYW5uZXIge1xyXG4gIG1hcmdpbi10b3A6IDBlbSAhaW1wb3J0YW50O1xyXG4gIG1hcmdpbi1ib3R0b206IDFlbTtcclxuICBwYWRkaW5nOiAwZW0gIWltcG9ydGFudDtcclxuICBwYWRkaW5nLWJvdHRvbTogMWVtO1xyXG4gICYgaW1nIHtcclxuICAgIG1heC13aWR0aDogNjAlO1xyXG4gIH1cclxufVxyXG5cclxuLmZvcm0tcGFkZGluZyB7XHJcbiAgcGFkZGluZzogMWVtO1xyXG59XHJcblxyXG4uZm9ybS1maXgge1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xyXG4gIHBhZGRpbmc6IDEwcHg7XHJcbiAgZm9udC1zaXplOiAxN3B4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgaGVpZ2h0OiAzOHB4O1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuLmZvcm0tZml4LXdoaXRlIHtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgcGFkZGluZzogMTBweDtcclxuICBmb250LXNpemU6IDE3cHg7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICBoZWlnaHQ6IDM4cHg7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBib3gtc2hhZG93OiBub25lO1xyXG59XHJcblxyXG4uZm9udC1ibHVlIHtcclxuICBjb2xvcjogJG5ocy1ibHVlO1xyXG59XHJcblxyXG4uZm9udC1ibHVlIC5mb250LWxpZ2h0Ymx1ZSB7XHJcbiAgY29sb3I6IHJnYig3MiwgMTMxLCAxODcpO1xyXG4gIGZvbnQtc2l6ZTogc21hbGxlcjtcclxuICBmb250LXN0eWxlOiBpdGFsaWM7XHJcbn1cclxuXHJcbi5mb3JtLWNvbnRyb2wtY2hlY2tib3gge1xyXG4gIGhlaWdodDogMTVweDtcclxuICB3aWR0aDogMTVweDtcclxufVxyXG5cclxuLmluZm8tc3BhY2luZyB7XHJcbiAgcGFkZGluZy1sZWZ0OiA1cHg7XHJcbiAgZm9udC1zaXplOiAxZW07XHJcbn1cclxuXHJcbi5zbWFsbC10ZXh0IHtcclxuICBmb250LXNpemU6IDFlbTtcclxufVxyXG5cclxuLmxvZ28tZml0IHtcclxuICBoZWlnaHQ6IDNlbTtcclxuICB3aWR0aDogM2VtO1xyXG4gIG1hcmdpbi1yaWdodDogMjBweDtcclxufVxyXG4ubG9nby1maXQgaW1nIHtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmltZy1uYW1lIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG59XHJcblxyXG4uY2VudGVyLXRleHQge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgbWFyZ2luLXRvcDogOTBweDtcclxufVxyXG5cclxuLmNlbnRlci10ZXh0cyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxuICBtYXJnaW4tdG9wOiA0cmVtO1xyXG4gICYgYSB7XHJcbiAgICBjb2xvcjogIzc2ODY5MjtcclxuICAgIGZvbnQtc2l6ZTogMTdweDtcclxuICB9XHJcbn1cclxuXHJcbi5idXR0b24tcGFkZGluZyB7XHJcbiAgbWFyZ2luLXRvcDogMWVtO1xyXG59XHJcblxyXG4uaGFzLWZlZWRiYWNrIGxhYmVsIH4gLmZvcm0tY29udHJvbC1mZWVkYmFjayB7XHJcbiAgdG9wOiAzMHB4O1xyXG59XHJcblxyXG5hOmhvdmVyIHtcclxuICBjb2xvcjogIzc2ODY5MjtcclxufVxyXG5cclxuLmJ0bi1zdWNjZXNzIHtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbn1cclxuXHJcbi5sYXJnZS1wYWRkaW5nIHtcclxuICBwYWRkaW5nLXRvcDogMmVtO1xyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHtcclxuICAucmVxdWVzdC10b3AtbWFyZ2luIHtcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogMTAyNXB4KSB7XHJcbiAgLmNvbnRlbnQtbWFyZ2luIHtcclxuICAgIHBhZGRpbmctdG9wOiA2ZW07XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1pbi13aWR0aDogODAwcHgpIHtcclxuICAuY29udGVudC1tYXJnaW4ge1xyXG4gICAgcGFkZGluZy1sZWZ0OiA1ZW07XHJcbiAgfVxyXG4gIC5jZW50ZXItY29udGVudCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgZmxleC13cmFwOiB3cmFwO1xyXG4gIH1cclxufVxyXG5cclxuLmdyZXktdGV4dCB7XHJcbiAgY29sb3I6ICM3Njg2OTI7XHJcbiAgZm9udC1zaXplOiAxN3B4O1xyXG59XHJcblxyXG4ubG9naW4tY2FyZCAuZmEtY2hlY2sge1xyXG4gIGNvbG9yOiBncmVlbjtcclxufVxyXG5cclxuLmZhZGVkLXRleHQge1xyXG4gIGZvbnQtc2l6ZTogMC45ZW07XHJcbiAgY29sb3I6ICM3Njg2OTI7XHJcbn1cclxuXHJcbi5mYWRlZC1saXN0LXJlc3VsdCB7XHJcbiAgY29sb3I6ICM3Njg2OTI7XHJcbiAgJiBzcGFuIHtcclxuICAgIGZvbnQtc2l6ZTogc21hbGxlcjtcclxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcclxuICB9XHJcbn1cclxuXHJcbi50b2FzdC1tZXNzYWdlIGEge1xyXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbn1cclxuXHJcbi5hbm90aGVyLWxvZ2luIHtcclxuICBwYWRkaW5nLXRvcDogMWVtO1xyXG4gIGNvbG9yOiAjNzY4NjkyO1xyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcbn1cclxuXHJcbi5jb250cm9sLWxhYmVsLnJlcXVpcmVkOmFmdGVyIHtcclxuICBjb2xvcjogI2QwMDtcclxuICBjb250ZW50OiBcIipcIjtcclxuICBtYXJnaW4tbGVmdDogNXB4O1xyXG4gIHRvcDogN3B4O1xyXG59XHJcblxyXG4uZm9ybS1ob3Jpem9udGFsIC5jb250cm9sLWxhYmVsIHtcclxuICBwYWRkaW5nLXRvcDogMHB4O1xyXG59XHJcblxyXG4uY2hlY2tib3hlcyB7XHJcbiAgZGlzcGxheTogZmxleDsgXHJcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IFxyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7IFxyXG4gIHBhZGRpbmctYm90dG9tOiAzcHg7XHJcbn1cclxuIl19 */\"","import { Component, ViewEncapsulation } from \"@angular/core\";\r\nimport { FormGroup, Validators, FormBuilder, FormControl, FormArray } from \"@angular/forms\";\r\nimport { Router, ActivatedRoute } from \"@angular/router\";\r\n\r\nimport { Angular2PromiseButtonModule } from \"angular2-promise-buttons/dist\";\r\nimport { environment } from '../../environments/environment';\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\nimport { MemberService } from \"../utilities/services/member.service\";\r\nimport { DataService } from \"app/utilities/services/data.service\";\r\nimport { OrderByPipe } from \"ngx-pipes\";\r\nimport { Products } from \"app/utilities/classes/products/products\";\r\n\r\n@Component({\r\n selector: \"app-login\",\r\n templateUrl: \"./login.component.html\",\r\n styleUrls: [\"./login.component.scss\"],\r\n encapsulation: ViewEncapsulation.None, // New spinner (child-elements)\r\n providers: [ OrderByPipe ]\r\n})\r\nexport class LoginComponent {\r\n queryParam;\r\n signIn: FormGroup;\r\n returnUrl: string;\r\n arrMembers: string[];\r\n errorMessage: string;\r\n loggingIn: boolean = false;\r\n loginRequestForm: FormGroup;\r\n statusLogin: boolean = false;\r\n isSubmitting: boolean = false;\r\n statusSubscribe: boolean = true;\r\n showLoginScreen: boolean = true;\r\n organisationPickedByUser: String;\r\n requestSuccessful: boolean = false;\r\n showRequestLoginScreen: boolean = false;\r\n organisationId: number;\r\n formControls = [];\r\n products;\r\n organisationsProducts;\r\n isVisible: boolean;\r\n devMode: boolean = false;\r\n submitted: boolean = false;\r\n\r\n constructor(\r\n public fb: FormBuilder,\r\n private memberService: MemberService,\r\n private dataService: DataService,\r\n private toastr: ToastrService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n public order: OrderByPipe,\r\n private newSpinner: Angular2PromiseButtonModule // New spinner\r\n ) { }\r\n\r\n ngOnInit() {\r\n // Set return URL\r\n this.returnUrl = this.route.snapshot.queryParams[\"returnUrl\"];\r\n this.getOrganisationListWithProducts();\r\n this.buildLoginForm();\r\n this.getOrganisationList();\r\n this.buildRequestLoginForm();\r\n if (this.route.snapshot.queryParams[\"option\"] == \"subscribe\") {\r\n this.statusLogin = true;\r\n this.statusSubscribe = false;\r\n }\r\n\r\n // Check environment\r\n if (environment.production) {\r\n this.devMode = false;\r\n } else {\r\n this.devMode = true;\r\n }\r\n }\r\n\r\n alreadyMember(orgPickedByUser) {\r\n this.products = this.organisationsProducts.filter(org => org.organisationId == orgPickedByUser.organisationId)[0].products;\r\n this.formControls = this.products.map(control => new FormControl(false));\r\n this.showLoginScreen = false;\r\n this.showRequestLoginScreen = true;\r\n this.organisationPickedByUser = orgPickedByUser.organisationName;\r\n this.buildRequestLoginForm();\r\n this.organisationId = orgPickedByUser.organisationId;\r\n }\r\n\r\n public noWhitespaceValidator(control: FormControl) {\r\n return (control.value || '').trim().length? null : { 'whitespace': true }; \r\n }\r\n\r\n buildRequestLoginForm() {\r\n this.loginRequestForm = this.fb.group({\r\n name: [null, [Validators.required, Validators.maxLength(60), this.noWhitespaceValidator]],\r\n email: [null, [Validators.required, Validators.email, this.noWhitespaceValidator]],\r\n jobTitle: [null, [Validators.required, Validators.maxLength(60), this.noWhitespaceValidator]],\r\n organisationName: [null, [Validators.maxLength(100)]],\r\n checkboxes: new FormArray(this.formControls),\r\n globalSubscribe: [false],\r\n acceptTerms: [false, Validators.requiredTrue]\r\n });\r\n }\r\n\r\n showDropdown() {\r\n this.isVisible = true;\r\n }\r\n\r\n closeDropDown() {\r\n setTimeout(() => {\r\n this.isVisible = false;\r\n }, 250);\r\n }\r\n\r\n buildLoginForm() {\r\n this.signIn = this.fb.group({\r\n emailAddress: [\r\n \"\",\r\n [Validators.required, Validators.maxLength(200), Validators.email],\r\n ],\r\n password: [\"\"],\r\n });\r\n\r\n this.signIn.valueChanges.subscribe((data) =>\r\n this.onSignInValueChanged(data)\r\n );\r\n\r\n this.onSignInValueChanged();\r\n }\r\n\r\n onSignInValueChanged(data?: any) {\r\n if (!this.signIn) {\r\n return;\r\n }\r\n const form = this.signIn;\r\n\r\n for (const field in this.signInFormErrors) {\r\n // clear previous error message (if any)\r\n this.signInFormErrors[field] = \"\";\r\n const control = form.get(field);\r\n\r\n if (control && control.touched && !control.valid) {\r\n const messages = this.validationMessages[field];\r\n\r\n for (const key in control.errors) {\r\n this.signInFormErrors[field] += messages[key] + \" \";\r\n }\r\n }\r\n }\r\n }\r\n\r\n onSubmit() {\r\n this.loggingIn = true;\r\n\r\n if (this.signIn.value.emailAddress && this.signIn.value.password) {\r\n this.memberService\r\n .Login(this.signIn.value.emailAddress, this.signIn.value.password)\r\n .subscribe(\r\n (s) => {\r\n // Navigate to return URL on successful login\r\n if (this.returnUrl && this.returnUrl !== \"%2Fhome\") {\r\n this.getUserDetails();\r\n this.router.navigateByUrl(this.returnUrl);\r\n } else {\r\n this.router.navigateByUrl(\"/\");\r\n }\r\n },\r\n (e) => {\r\n let errorCode = e.error.error.errorCode;\r\n this.loggingIn = false;\r\n switch (errorCode) {\r\n case 5101:\r\n this.errorMessage = `The email address is not recognised. Please try again.
\r\n If you do not have a login, you can Request a Login`;\r\n break;\r\n case 5102:\r\n this.errorMessage =\r\n 'Your account is currently disabled. Please contact the Support Team for more information.';\r\n break;\r\n case 5103:\r\n this.errorMessage =\r\n 'Your account does not currently have any assigned roles. Please contact the Support Team for more information.';\r\n break;\r\n case 5104:\r\n this.errorMessage =\r\n 'Your organisation is not currently subscribed to the network. Please contact the Support Team for more information.';\r\n break;\r\n default:\r\n this.errorMessage =\r\n \"This password is incorrect. Please try again or click Forgotten Password? below.\";\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n getUserDetails() {\r\n this.memberService.User().subscribe((u) => {\r\n this.dataService.setUser(u.data);\r\n });\r\n }\r\n\r\n navResetPassword() {\r\n this.router.navigate([\"/reset-password\"]);\r\n }\r\n\r\n getOrganisationList() {\r\n this.memberService.OrganisationList().subscribe((d) => {\r\n this.arrMembers = d.data.organisations;\r\n });\r\n }\r\n\r\n getOrganisationListWithProducts() {\r\n this.memberService.OrganisationListWithProducts().subscribe((d) => {\r\n this.organisationsProducts = d.data.organisationList;\r\n this.organisationsProducts = this.organisationsProducts.map(org => { return new Products(org) });\r\n });\r\n }\r\n\r\n // Return to login window from Request login\r\n backToLogin() {\r\n this.submitted = false;\r\n this.showLoginScreen = true;\r\n this.showRequestLoginScreen = false;\r\n this.loginRequestForm.reset();\r\n }\r\n\r\n checkboxSelected() {\r\n return this.loginRequestForm.value.checkboxes.every(v => v === false)\r\n }\r\n\r\n loginRequest() {\r\n this.submitted = true;\r\n \r\n if (this.checkboxSelected() || this.loginRequestForm.invalid) {\r\n this.validateAllFormFields(this.loginRequestForm);\r\n return;\r\n } \r\n\r\n const selectedPreferences = this.loginRequestForm.value.checkboxes\r\n .map((checked, index) => checked ? this.products[index].productName : null)\r\n .filter(value => value !== null);\r\n\r\n this.isSubmitting = true;\r\n\r\n this.newSpinner = new Promise((resolve, reject) => {\r\n setTimeout(resolve, 3000);\r\n });\r\n\r\n let membershipResponse = this.loginRequestForm.value;\r\n\r\n let loginRequestBody = {\r\n email: membershipResponse.email,\r\n jobTitle: membershipResponse.jobTitle,\r\n name: membershipResponse.name,\r\n organisationId: this.organisationId,\r\n projects: selectedPreferences.join(' || '),\r\n globalSubscribe: membershipResponse.globalSubscribe ? 'Y' : null\r\n }\r\n this.memberService.LoginRequest(loginRequestBody).subscribe(\r\n (r) => {\r\n this.requestSuccessful = true;\r\n this.loginRequestForm.reset();\r\n this.buildRequestLoginForm();\r\n },\r\n (e) => {\r\n this.toastr.error(\r\n `${ e.error.error.message }, please reset your password `,\r\n \"Login Request\",\r\n { enableHtml: true }\r\n );\r\n this.requestSuccessful = false;\r\n console.log(e)\r\n }\r\n );\r\n }\r\n\r\n // Error handling Request login form\r\n isFieldValid(field: string) {\r\n return (\r\n !this.loginRequestForm.get(field).valid &&\r\n (this.loginRequestForm.get(field).dirty ||\r\n this.loginRequestForm.get(field).touched)\r\n );\r\n }\r\n\r\n displayFieldCss(field: string) {\r\n return {\r\n \"has-error\": this.isFieldValid(field),\r\n \"has-feedback\": this.isFieldValid(field),\r\n };\r\n }\r\n\r\n validateAllFormFields(formGroup: FormGroup) {\r\n Object.keys(formGroup.controls).forEach((field) => {\r\n const control = formGroup.get(field);\r\n if (control instanceof FormControl) {\r\n control.markAsTouched({ onlySelf: true });\r\n } else if (control instanceof FormGroup) {\r\n control.markAsTouched({ onlySelf: true });\r\n this.validateAllFormFields(control);\r\n }\r\n });\r\n }\r\n\r\n anotherRequest() {\r\n this.submitted = false;\r\n this.loginRequestForm.reset();\r\n this.requestSuccessful = false;\r\n }\r\n\r\n signInFormErrors = {\r\n emailAddress: \"\",\r\n };\r\n\r\n validationMessages = {\r\n emailAddress: {\r\n required: \"Email Address is required.\",\r\n maxlength: \"Email Address cannot be longer than 60 characters.\",\r\n email: \"Email Address is not valid.\",\r\n },\r\n };\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ReactiveFormsModule, FormsModule } from \"@angular/forms\";\r\nimport { HttpModule } from \"@angular/http\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\n\r\nimport { ModalModule } from \"ngx-bootstrap\";\r\nimport { ToastrModule } from \"ngx-toastr\";\r\nimport { ResponsiveModule } from \"ngx-responsive\";\r\n\r\nimport { LoginComponent } from \"./login.component\";\r\nimport { LoginRoutingModule } from \"./login-routing.module\";\r\n\r\nimport { OrgSearchPipe } from \"../utilities/pipes/org.search.pipe\";\r\nimport { Angular2PromiseButtonModule } from \"angular2-promise-buttons/dist\";\r\n\r\nimport { FieldErrorDisplayComponent } from \"./login-errors/field-error-display.component\";\r\nimport { NgPipesModule } from \"ngx-pipes\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n ToastrModule.forRoot(),\r\n ModalModule.forRoot(),\r\n LoginRoutingModule,\r\n ResponsiveModule.forRoot(),\r\n HttpModule,\r\n HttpClientModule,\r\n NgPipesModule,\r\n Angular2PromiseButtonModule.forRoot({\r\n spinnerTpl: '',\r\n disableBtn: true,\r\n btnLoadingClass: \"is-loading\",\r\n handleCurrentBtnOnly: false,\r\n }),\r\n ],\r\n declarations: [OrgSearchPipe, LoginComponent, FieldErrorDisplayComponent],\r\n})\r\nexport class LoginModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { MembershipComponent } from './membership.component'\r\n\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service'\r\n\r\nconst membershipRoutes: Routes = [\r\n { path: 'membership', component: MembershipComponent, canActivate: [AuthGuardService] }\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(membershipRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\n\r\nexport class MembershipRoutingModule { }","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Back to Home\\r\\n \\r\\n
\\r\\n
\\r\\n
1\\\">\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{ o.organisationName }}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n {{\\r\\n o.organisationName\\r\\n }}\\r\\n

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

Membership History

\\r\\n

\\r\\n This page shows the projects undertaken by your organisation since\\r\\n {{ projectYears[projectYears.length - 1] }}\\r\\n

\\r\\n

\\r\\n Loading projects...\\r\\n

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

{{ projectList.year }}

\\r\\n 0\\\"\\r\\n >\\r\\n Your organisation is participating in the following\\r\\n {{ projectList.yearParticipants }} projects this year.\\r\\n

\\r\\n

\\r\\n You have not yet taken part in any projects this year.\\r\\n

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

\\r\\n The Membership Lead for your organisation is\\r\\n {{\\r\\n projectList.productLeadName\\r\\n }}.\\r\\n

\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","module.exports = \"#containerMembership {\\n padding-bottom: 6em;\\n background-color: #f3f3f3; }\\n\\nh1 {\\n font-weight: 600;\\n margin-top: 1em; }\\n\\n.show-false {\\n display: none; }\\n\\n.breaker {\\n margin-top: 1em; }\\n\\n.projects {\\n border-top: 1px solid #eee; }\\n\\n.projects:hover {\\n background-color: #f2f7fb; }\\n\\n.projects-header {\\n margin-bottom: 1.5em; }\\n\\n.projects-intro {\\n font-weight: 600; }\\n\\n.project-row {\\n padding: 0.25em 0.5em; }\\n\\n.project-row img {\\n width: 100%; }\\n\\n.vcenter {\\n display: inline-block;\\n vertical-align: middle;\\n float: none; }\\n\\n.projects-loading {\\n color: #005EB8;\\n font-size: 1.5em;\\n font-weight: 600;\\n margin-top: 2em; }\\n\\n.project-loading-spinner {\\n font-size: 2.5em;\\n color: #005EB8;\\n margin: 1em 0; }\\n\\n.one-organisation {\\n color: white; }\\n\\n#selectorBar {\\n background-color: #005EB8;\\n margin-top: -2em; }\\n\\n#selectorBar .btn-back {\\n color: white;\\n font-size: 17px;\\n line-height: 2.5em; }\\n\\n#selectorBar .btn-back .fa {\\n margin-right: 5px; }\\n\\n#selectorBar .btn-back:hover {\\n cursor: pointer; }\\n\\n#selectorBar .form-group {\\n padding: 5px 0;\\n margin-bottom: 0;\\n background-color: #004485; }\\n\\n#selectorBar .form-control {\\n background-color: #004485;\\n color: white;\\n border: none;\\n height: auto;\\n box-shadow: none; }\\n\\n#selectorBar .form-control:focus {\\n outline: none;\\n box-shadow: none; }\\n\\n.far {\\n color: white;\\n padding-left: 1.5rem;\\n padding-top: 1.5rem; }\\n\\n.details-link:hover {\\n cursor: pointer; }\\n\\n.far:hover {\\n color: white; }\\n\\n.form-card {\\n margin-top: 1.5em;\\n background-color: white;\\n padding: 0.5em;\\n padding-left: 2em;\\n border: 1px solid #ccc;\\n border-radius: 5px;\\n position: relative; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbWVtYmVyc2hpcC9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxtZW1iZXJzaGlwXFxtZW1iZXJzaGlwLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9tZW1iZXJzaGlwL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxfdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDRSxtQkFBbUI7RUFDbkIseUJBQXlCLEVBQUE7O0FBRzNCO0VBQ0UsZ0JBQWdCO0VBQ2hCLGVBQWUsRUFBQTs7QUFHakI7RUFDRSxhQUFhLEVBQUE7O0FBR2Y7RUFDRSxlQUFlLEVBQUE7O0FBR2pCO0VBQ0UsMEJBQTBCLEVBQUE7O0FBRzVCO0VBQ0UseUJBQXlCLEVBQUE7O0FBRzNCO0VBQ0Usb0JBQW9CLEVBQUE7O0FBR3RCO0VBQ0UsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0UscUJBQXFCLEVBQUE7O0FBR3ZCO0VBQ0UsV0FBVyxFQUFBOztBQUdiO0VBQ0UscUJBQXFCO0VBQ3JCLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxjQ2hEZ0I7RURpRGhCLGdCQUFnQjtFQUNoQixnQkFBZ0I7RUFDaEIsZUFBZSxFQUFBOztBQUdqQjtFQUNFLGdCQUFnQjtFQUVoQixjQ3pEZ0I7RUQwRGhCLGFBQWEsRUFBQTs7QUFHZjtFQUNFLFlBQVksRUFBQTs7QUFJZDtFQUNFLHlCQ25FZ0I7RURvRWhCLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLFlBQVk7RUFDWixlQUFlO0VBQ2Ysa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsZUFBZSxFQUFBOztBQUdqQjtFQUNFLGNBQWM7RUFDZCxnQkFBZ0I7RUFDaEIseUJBQXlCLEVBQUE7O0FBRzNCO0VBQ0UseUJBQXlCO0VBQ3pCLFlBQVk7RUFDWixZQUFZO0VBQ1osWUFBWTtFQUNaLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLGFBQWE7RUFDYixnQkFBZ0IsRUFBQTs7QUFJbEI7RUFDRSxZQUFZO0VBQ1osb0JBQW9CO0VBQ3BCLG1CQUFtQixFQUFBOztBQUdyQjtFQUNFLGVBQWUsRUFBQTs7QUFHakI7RUFDRSxZQUFZLEVBQUE7O0FBSWQ7RUFDRSxpQkFBaUI7RUFDakIsdUJBQXVCO0VBQ3ZCLGNBQWM7RUFDZCxpQkFBaUI7RUFDakIsc0JBQXNCO0VBQ3RCLGtCQUFrQjtFQUNsQixrQkFBa0IsRUFBQSIsImZpbGUiOiJzcmMvYXBwL21lbWJlcnNoaXAvbWVtYmVyc2hpcC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgXCIuLi8uLi92YXJpYWJsZXNcIjtcclxuXHJcbiNjb250YWluZXJNZW1iZXJzaGlwIHtcclxuICBwYWRkaW5nLWJvdHRvbTogNmVtO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7XHJcbn1cclxuXHJcbmgxIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIG1hcmdpbi10b3A6IDFlbTtcclxufVxyXG5cclxuLnNob3ctZmFsc2Uge1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbi5icmVha2VyIHtcclxuICBtYXJnaW4tdG9wOiAxZW07XHJcbn1cclxuXHJcbi5wcm9qZWN0cyB7XHJcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlZWU7XHJcbn1cclxuXHJcbi5wcm9qZWN0czpob3ZlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjdmYjtcclxufVxyXG5cclxuLnByb2plY3RzLWhlYWRlciB7XHJcbiAgbWFyZ2luLWJvdHRvbTogMS41ZW07XHJcbn1cclxuXHJcbi5wcm9qZWN0cy1pbnRybyB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuLnByb2plY3Qtcm93IHtcclxuICBwYWRkaW5nOiAwLjI1ZW0gMC41ZW07XHJcbn1cclxuXHJcbi5wcm9qZWN0LXJvdyBpbWcge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4udmNlbnRlciB7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgZmxvYXQ6IG5vbmU7XHJcbn1cclxuXHJcbi5wcm9qZWN0cy1sb2FkaW5nIHtcclxuICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gIGZvbnQtc2l6ZTogMS41ZW07XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBtYXJnaW4tdG9wOiAyZW07XHJcbn1cclxuXHJcbi5wcm9qZWN0LWxvYWRpbmctc3Bpbm5lciB7XHJcbiAgZm9udC1zaXplOiAyLjVlbTtcclxuXHJcbiAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICBtYXJnaW46IDFlbSAwO1xyXG59XHJcblxyXG4ub25lLW9yZ2FuaXNhdGlvbiB7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG59XHJcblxyXG4vLyBTZWxlY3RvckJhclxyXG4jc2VsZWN0b3JCYXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICRuaHMtYmx1ZTtcclxuICBtYXJnaW4tdG9wOiAtMmVtO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ0bi1iYWNrIHtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgZm9udC1zaXplOiAxN3B4O1xyXG4gIGxpbmUtaGVpZ2h0OiAyLjVlbTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idG4tYmFjayAuZmEge1xyXG4gIG1hcmdpbi1yaWdodDogNXB4O1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ0bi1iYWNrOmhvdmVyIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuZm9ybS1ncm91cCB7XHJcbiAgcGFkZGluZzogNXB4IDA7XHJcbiAgbWFyZ2luLWJvdHRvbTogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0NDg1O1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmZvcm0tY29udHJvbCB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDQ4NTtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGhlaWdodDogYXV0bztcclxuICBib3gtc2hhZG93OiBub25lO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmZvcm0tY29udHJvbDpmb2N1cyB7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBib3gtc2hhZG93OiBub25lO1xyXG59XHJcblxyXG4vLyBJbmZvcm1hdGlvbiBJY29uXHJcbi5mYXIge1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcclxuICBwYWRkaW5nLXRvcDogMS41cmVtO1xyXG59XHJcblxyXG4uZGV0YWlscy1saW5rOmhvdmVyIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5mYXI6aG92ZXIge1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxufVxyXG5cclxuLy8gQ2FyZCBMYXlvdXRcclxuLmZvcm0tY2FyZCB7XHJcbiAgbWFyZ2luLXRvcDogMS41ZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgcGFkZGluZzogMC41ZW07XHJcbiAgcGFkZGluZy1sZWZ0OiAyZW07XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcbiIsIiRpY29uLWZvbnQtcGF0aDogJy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAtc2Fzcy9hc3NldHMvZm9udHMvYm9vdHN0cmFwLyc7XHJcblxyXG4vLyBDdXN0b20gdmFyaWFibGVzXHJcbiRuaHMtYmx1ZTogIzAwNUVCODtcclxuJG5ocy1kYXJrLWJsdWU6ICMwMDQ0ODU7XHJcbiRuaHMtZ3JleTogIzc2ODY5MjtcclxuJG5ocy1mYWRlZC1ibHVlOiAjRjJGN0ZCO1xyXG4kYWN0aXZlLWFkbWluLXllbGxvdzogI0ZEQkMzMDtcclxuJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93OiAjRTU5OTAwO1xyXG4gXHJcbi8vIEJvb3RzdHJhcCB2YXJpYWJsZXNcclxuJHRleHQtY29sb3I6IGJsYWNrO1xyXG4kYm9yZGVyLXJhZGl1cy1iYXNlOiAwO1xyXG4kYm9yZGVyLXJhZGl1cy1zbWFsbDogMDtcclxuJGJyYW5kLXByaW1hcnk6ICRuaHMtYmx1ZTtcclxuJGJyYW5kLXN1Y2Nlc3M6IGdyZWVuO1xyXG4kbGluay1ob3Zlci1kZWNvcmF0aW9uOiBub25lO1xyXG4kZm9udC1zaXplLWg0OiAxN3B4O1xyXG4kbmF2YmFyLW1hcmdpbi1ib3R0b206IDA7XHJcbiRuYXZiYXItaGVpZ2h0OiA2MHB4O1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtYmc6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWJvcmRlci1jb2xvcjogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaWNvbi1iYXItYmc6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOiB3aGl0ZTtcclxuXHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc6ICRuaHMtYmx1ZTtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1jb2xvcjogd2hpdGU7XHJcbiRuYXYtcGlsbHMtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJHRhYmxlLWJnLWhvdmVyOiAkbmhzLWZhZGVkLWJsdWU7XHJcbiRoZWFkaW5ncy1zbWFsbC1jb2xvcjogJG5ocy1ncmV5OyJdfQ== */\"","import { Component, OnInit } from \"@angular/core\";\r\nimport { Meta, Title } from \"@angular/platform-browser\";\r\nimport { Router } from \"@angular/router\";\r\n\r\nimport { AuthService } from \"../utilities/services/auth.service\";\r\nimport { MemberService } from \"../utilities/services/member.service\";\r\nimport { DataService } from \"../utilities/services/data.service\";\r\nimport { LoaderService } from \"../utilities/services/loader.service\";\r\n\r\nimport { User } from \"../utilities/classes/user/user\";\r\nimport { Organisation } from \"../utilities/classes/organisation/organisation\";\r\nimport { Participation } from \"../utilities/classes/project/project-participation\";\r\n\r\n@Component({\r\n templateUrl: \"./membership.component.html\",\r\n styleUrls: [\"./membership.component.scss\"],\r\n})\r\nexport class MembershipComponent implements OnInit {\r\n user: User = {\r\n userId: 0,\r\n fullName: \"\",\r\n logonName: \"\",\r\n jobTitle: \"\",\r\n phoneNo: \"\",\r\n lastLogon: new Date(),\r\n roles: null,\r\n welcomeDialogDismissed: \"Y\",\r\n mailchimpOptIn: \"\",\r\n notificationOptIn: \"\",\r\n };\r\n organisation: Organisation[];\r\n currentOrganisation: number;\r\n participation: Participation;\r\n currentYear: number = new Date().getFullYear();\r\n yearParticipants: number;\r\n organisationsLength: number;\r\n productLeadName: string;\r\n productLeadEmail: string;\r\n projectYears: Array = [];\r\n projectsList: Array = [];\r\n\r\n metaTitle: string = 'Membership | NHS Benchmarking Network';\r\n\r\n constructor(\r\n public auth: AuthService,\r\n private memberService: MemberService,\r\n private dataService: DataService,\r\n public loaderService: LoaderService,\r\n private titleService: Title,\r\n private meta: Meta,\r\n private router: Router\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(this.metaTitle);\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n this.getOrganisationsByUser();\r\n }\r\n\r\n getOrganisationsByUser() {\r\n let currentOrg = this.dataService.getSelectedOrganisation();\r\n\r\n this.memberService.OrganisationsByUser().subscribe((o) => {\r\n (this.organisation = o.data),\r\n (this.currentOrganisation = currentOrg\r\n ? currentOrg\r\n : this.organisation[0].organisationId);\r\n this.dataService.setOrganisation(o.data);\r\n this.getProjectParticipation(this.currentOrganisation);\r\n this.organisationsLength = o.data.length;\r\n });\r\n }\r\n\r\n onOrgChange(message: number) {\r\n this.dataService.setSelectedOrganisation(message);\r\n this.currentOrganisation = message;\r\n this.projectsList.splice(0, this.projectsList.length);\r\n this.projectYears.splice(0, this.projectYears.length);\r\n this.getProjectParticipation(this.currentOrganisation);\r\n }\r\n\r\n getProjectParticipation(currentOrganisation: number) {\r\n this.memberService\r\n .ProjectParticipation(currentOrganisation)\r\n .subscribe((p) => {\r\n this.participation = p.data;\r\n for (let years in this.participation) {\r\n if (years == \"productLead\") {\r\n break;\r\n }\r\n this.projectYears.push((this.currentYear = parseInt(years, 10)));\r\n }\r\n\r\n let rev: Array = this.projectYears.reverse();\r\n\r\n for (var i = 0; i < rev.length; i++) {\r\n var projectsPerYear = {\r\n year: rev[i],\r\n yearParticipants: (this.yearParticipants = this.participation[\r\n rev[i]\r\n ].filter(function (x) {\r\n return x.hasParticipated == true;\r\n }).length),\r\n productLeadName: (this.productLeadName = this.participation[\r\n \"productLead\"\r\n ][0].productLeadName),\r\n productLeadEmail: (this.productLeadEmail = this.participation[\r\n \"productLead\"\r\n ][0].productLeadEmail),\r\n };\r\n this.projectsList.push(projectsPerYear);\r\n }\r\n });\r\n }\r\n\r\n navHome() {\r\n this.router.navigate([\"/home\"]);\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { ResponsiveModule } from \"ngx-responsive\";\r\nimport { TabsModule } from \"ngx-bootstrap/tabs\";\r\nimport { TooltipModule } from \"ngx-bootstrap/tooltip\";\r\n\r\nimport { MembershipComponent } from \"./membership.component\";\r\nimport { MembershipRoutingModule } from \"./membership-routing.module\";\r\n\r\nimport { AuthService } from \"../utilities/services/auth.service\";\r\nimport { AuthGuardService } from \"../utilities/services/auth-guard.service\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ResponsiveModule,\r\n MembershipRoutingModule,\r\n FormsModule,\r\n TabsModule,\r\n TooltipModule,\r\n ],\r\n declarations: [MembershipComponent],\r\n providers: [AuthService, AuthGuardService],\r\n})\r\nexport class MembershipModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { NonMembersEventRegistrationFormComponent } from './non-members-event-registration-form.component';\r\n\r\nconst userCheckRoutes: Routes = [\r\n { path: 'nonMembersEventRegistrationForm', component: NonMembersEventRegistrationFormComponent }\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(userCheckRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\n\r\nexport class NonMembersEventRegistrationFormRoutingModule { }","module.exports = \"
\\r\\n\\r\\n \\r\\n
\\r\\n

\\r\\n Event Registration Form\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ formErrors.delegateName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ formErrors.organisation }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ formErrors.delegateJob }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{ formErrors.delegateEmail }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n {{ formErrors.delegateDiet }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{ formErrors.delegateAllergies }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n {{ formErrors.delegateAccess }}\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Register\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n

\\r\\n \\r\\n You have successfully submitted a registration request\\r\\n

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

Thank you for submitting a registration request for the event: \\r\\n {{selectedEvent.event_name_date}} .\\r\\n

\\r\\n

You will receive a notification once the request has been reviewed.

\\r\\n

If you would like to change details of your request, cancel it, or if you have any queries, please email enquiries@nhsbenchmarking.nhs.uk.

\\r\\n

You can now close this page.

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

\\r\\n \\r\\n Something went wrong \\r\\n

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

There has been an error whilst trying to submit a registration request for the event: \\r\\n {{selectedEvent.event_name_date}} .\\r\\n

\\r\\n

Please try again later. If problem persists please contact the support team at enquiries@nhsbenchmarking.nhs.uk.

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

You are trying to register to the event
\\r\\n {{ selectedEvent.event_name_date }}
\\r\\n using the Non Member Event Registration Form, but we detected that you are from a Member Organisation.

\\r\\n

Please locate the Event from the \\r\\n Member's Event Registration Page\\r\\n instead.\\r\\n

\\r\\n
\\r\\n
\\r\\n\\r\\n\"","module.exports = \".form-actions .btn {\\n margin-right: 0.5em; }\\n\\n.member-error a {\\n color: #005EB8; }\\n\\n.member-error a:hover {\\n color: blue; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbm9uLW1lbWJlcnMtZXZlbnQtcmVnaXN0cmF0aW9uLWZvcm0vQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXGFwcFxcbm9uLW1lbWJlcnMtZXZlbnQtcmVnaXN0cmF0aW9uLWZvcm1cXG5vbi1tZW1iZXJzLWV2ZW50LXJlZ2lzdHJhdGlvbi1mb3JtLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsbUJBQW1CLEVBQUE7O0FBR3JCO0VBQ0UsY0FBYyxFQUFBOztBQURoQjtJQUdJLFdBQVcsRUFBQSIsImZpbGUiOiJzcmMvYXBwL25vbi1tZW1iZXJzLWV2ZW50LXJlZ2lzdHJhdGlvbi1mb3JtL25vbi1tZW1iZXJzLWV2ZW50LXJlZ2lzdHJhdGlvbi1mb3JtLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmZvcm0tYWN0aW9ucyAuYnRuIHtcclxuICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59XHJcblxyXG4ubWVtYmVyLWVycm9yIGEge1xyXG4gIGNvbG9yOiAjMDA1RUI4OyBcclxuICAmOmhvdmVyIHsgXHJcbiAgICBjb2xvcjogYmx1ZTsgXHJcbiAgfSBcclxuXHJcbn0iXX0= */\"","import { Component, OnInit } from '@angular/core';\r\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { ErrorService } from '../utilities/services/error.service';\r\nimport { EventRegistrationNonMember } from 'app/utilities/classes/event/event-registration-non-member';\r\nimport { NonMemberService } from 'app/utilities/services/nonMember.service';\r\nimport { EventNonMember } from 'app/utilities/classes/event/event-non-member';\r\n\r\n@Component({\r\n selector: 'app-non-members-event-registration-form',\r\n templateUrl: './non-members-event-registration-form.component.html',\r\n styleUrls: ['./non-members-event-registration-form.component.scss'],\r\n})\r\n\r\nexport class NonMembersEventRegistrationFormComponent implements OnInit {\r\n\r\n public eventRegistration: FormGroup;\r\n public eventsList: EventNonMember []\r\n public submitted: boolean = false;\r\n public registered: boolean = false;\r\n public registrationError: boolean = false;\r\n public isDelegateAlreadyMember: boolean = false\r\n public selectedEvent: EventNonMember;\r\n public isOnline: boolean = true;\r\n\r\n constructor(\r\n private NonMemberService: NonMemberService,\r\n public fb: FormBuilder,\r\n private router: Router,\r\n ) {}\r\n\r\n ngOnInit() { \r\n this.getEventsList()\r\n this.buildEventForm()\r\n }\r\n\r\n navigateToMemberEventsPage(): void {\r\n this.router.navigate(['/events'])\r\n }\r\n\r\n getEventsList() {\r\n this.NonMemberService.getEventsList().subscribe(\r\n s => { \r\n this.eventsList = s.data\r\n this.eventsList.forEach(e => e['event_name_date'] = e.event_name + ' ' + this.formatDate(e.event_dt))\r\n },\r\n e => {\r\n console.log(e) \r\n }\r\n );\r\n }\r\n\r\n formatDate(timestamp) {\r\n const date = new Date(timestamp);\r\n const day = String(date.getUTCDate()).padStart(2, '0');\r\n const month = String(date.getUTCMonth() + 1).padStart(2, '0'); \r\n const year = String(date.getUTCFullYear()).slice(-2); \r\n const hours = date.getUTCHours() % 12 || 12; \r\n const minutes = String(date.getUTCMinutes()).padStart(2, '0'); \r\n const ampm = date.getUTCHours() >= 12 ? 'PM' : 'AM'; \r\n const formattedDate = `(${day}/${month}/${year} - ${hours}:${minutes}${ampm})`; \r\n return formattedDate; \r\n }\r\n\r\n registerEvent() { \r\n this.submitted = true;\r\n let data = this.eventRegistration.value;\r\n let eventDetails: EventRegistrationNonMember = {\r\n eventId: data.eventId,\r\n delegateName: data.delegateName,\r\n delegateEmail: data.delegateEmail,\r\n jobTitle: data.delegateJob,\r\n organisation: data.organisation,\r\n delegateList: data.delegateList,\r\n comment: data.delegateComments,\r\n twitterHandle: '',\r\n dietaryRequirements:data.delegateDiet,\r\n dietaryDetails:data.delegateAllergies,\r\n delegateBadge: '',\r\n accessRequirements:data.delegateAccess\r\n }\r\n this.NonMemberService.RegisterEvent(eventDetails).subscribe(\r\n s => {\r\n this.registered = true; \r\n },\r\n e => {\r\n console.log(e)\r\n this.isDelegateAlreadyMember = e.error.error.message == 'User is a member' ? true : false\r\n this.registrationError = true; \r\n }\r\n );\r\n }\r\n\r\n hideModal() {\r\n this.router.navigate([], { queryParams: { id: null }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n buildEventForm() {\r\n const emailPattern = /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/; \r\n this.eventRegistration = this.fb.group({\r\n \"eventId\":[\"\", [Validators.required]],\r\n \"organisation\":[\"\",[Validators.required, Validators.maxLength(60)]],\r\n \"delegateName\":[\"\", [Validators.required, Validators.maxLength(60)]],\r\n \"delegateEmail\":[\"\", [Validators.required, Validators.pattern(emailPattern), Validators.maxLength(60)]],\r\n \"delegateJob\":[\"\", [Validators.required, Validators.maxLength(60)]],\r\n \"delegateComments\":[\"\"],\r\n \"delegateDiet\":[\"\"],\r\n \"delegateAllergies\":[\"\", Validators.maxLength(100)],\r\n \"delegateAccess\":[\"\", [Validators.maxLength(100)]],\r\n \"delegateList\":[\"\"]\r\n })\r\n this.eventRegistration.controls['delegateDiet'].setValue('N');\r\n this.eventRegistration.controls['delegateList'].setValue('Y');\r\n this.eventRegistration.controls['eventId'].setValue('none');\r\n this.eventRegistration.valueChanges.subscribe(data => this.onValueChanged(data));\r\n this.onValueChanged(); \r\n }\r\n\r\n onValueChanged(data?: any) {\r\n if (!this.eventRegistration) { return; }\r\n const form = this.eventRegistration;\r\n for (const field in this.formErrors) {\r\n // clear previous error message (if any)\r\n this.formErrors[field] = '';\r\n const control = form.get(field);\r\n if (control && control.dirty && !control.valid) {\r\n const messages = this.validationMessages[field];\r\n for (const key in control.errors) {\r\n this.formErrors[field] += messages[key] + ' ';\r\n }\r\n }\r\n }\r\n }\r\n\r\n selectEvent(eventString: string) {\r\n const eventId = +eventString.split(':')[1].trim() \r\n this.selectedEvent = this.eventsList.find(e => e.event_id == eventId)\r\n this.isOnline = this.selectedEvent.is_online === 'Y' ? true : false\r\n }\r\n\r\n formErrors = {\r\n 'organisation': '',\r\n 'delegateName': '',\r\n 'delegateEmail': '',\r\n 'delegateJob': '',\r\n 'delegateDiet': '',\r\n 'delegateAllergies': '',\r\n 'delegateAccess': '',\r\n }\r\n\r\n validationMessages = {\r\n 'organisation': {\r\n 'required': 'Organisation Name is required.',\r\n 'maxlength': 'Organisation Name cannot be longer than 60 characters.'\r\n },\r\n 'delegateName': {\r\n 'required': 'Delegate Name is required.',\r\n 'maxlength': 'Delegate Name cannot be longer than 60 characters.'\r\n },\r\n 'delegateEmail': {\r\n 'required': 'Delegate Email Address is required.',\r\n 'maxlength': 'Delegate Email Address cannot be longer than 60 characters.',\r\n 'pattern': 'Delegate Email Address is not valid.'\r\n },\r\n 'delegateJob': {\r\n 'required': 'Job Title is required.',\r\n 'maxlength': 'Job Title cannot be longer than 60 characters.'\r\n },\r\n 'delegateDiet': {\r\n 'required': 'Diet selection required.'\r\n },\r\n 'delegateAllergies': {\r\n 'maxlength': 'Allergy Information cannot be longer than 100 characters.'\r\n },\r\n 'delegateAccess': {\r\n 'maxlength': 'Access Information cannot be longer than 100 characters.'\r\n } \r\n }\r\n\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { ResponsiveModule } from \"ngx-responsive\";\r\nimport { AccordionModule, TabsModule } from \"ngx-bootstrap\";\r\n\r\n\r\nimport { AuthService } from \"../utilities/services/auth.service\";\r\nimport { AuthGuardService } from \"../utilities/services/auth-guard.service\";\r\nimport { NonMembersEventRegistrationFormComponent } from \"./non-members-event-registration-form.component\";\r\nimport { NonMembersEventRegistrationFormRoutingModule } from \"./non-members-event-registration-form-routing.module\";\r\nimport { ReactiveFormsModule, FormsModule } from \"@angular/forms\";\r\nimport { Angular2PromiseButtonModule } from \"angular2-promise-buttons\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n TabsModule.forRoot(),\r\n Angular2PromiseButtonModule.forRoot({\r\n spinnerTpl: '',\r\n disableBtn: true,\r\n btnLoadingClass: \"is-loading\",\r\n handleCurrentBtnOnly: false,\r\n }), \r\n ResponsiveModule,\r\n NonMembersEventRegistrationFormRoutingModule,\r\n AccordionModule.forRoot(),\r\n ],\r\n declarations: [NonMembersEventRegistrationFormComponent],\r\n providers: [AuthService, AuthGuardService],\r\n})\r\nexport class NonMembersEventRegistrationFormModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { NotFoundComponent } from './not-found.component';\r\n\r\nconst routes: Routes = [\r\n { path: '404', component: NotFoundComponent }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class NotFoundRoutingModule { }\r\n","module.exports = \"\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

Page Not Found

\\r\\n

The link you clicked may be broken or the page may have been removed.

\\r\\n

Go to the home page or contact us about the problem.

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"NHSBN\\r\\n\\r\\n

\\r\\n The Benchmarking Network is the in-house benchmarking service of the NHS. The Network is hosted by \\r\\n East London Foundation Trust.\\r\\n

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

© East London Foundation Trust {{date | date:'yyyy'}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"#containerError {\\n margin-top: 23vh;\\n margin-bottom: 23vh;\\n text-align: center; }\\n\\n#containerError h1 {\\n font-weight: 600; }\\n\\n.navbar {\\n position: relative;\\n padding-top: 5px;\\n padding-bottom: 3px;\\n border: none;\\n min-height: 60px;\\n margin-bottom: 0; }\\n\\n.navbar .active {\\n color: #005EB8; }\\n\\n.navbar li {\\n padding-top: 2px; }\\n\\n.navbar-brand img {\\n height: 50px; }\\n\\n.navbar-brand {\\n padding: 5px 10px; }\\n\\n.navbar, .navbar-btn, .dropdown-item {\\n font-size: 17px; }\\n\\n.navbar-btn {\\n margin-left: 0.5em; }\\n\\n.navbar-collapse {\\n border-top: none; }\\n\\n.navbar-default {\\n background: white; }\\n\\n#basic-link:focus, #basic-link:hover, #basic-link:active, #basic-link:visited {\\n background-color: white; }\\n\\n.dropdown-menu {\\n border-color: #005EB8;\\n background-color: #005EB8;\\n box-shadow: none;\\n padding: 0px;\\n border: 0px; }\\n\\n.dropdown-menu > li {\\n border-bottom: 1px white solid; }\\n\\n.dropdown-menu > li > a {\\n color: white; }\\n\\n.dropdown-menu > li > a:hover {\\n background-color: #004485;\\n color: white; }\\n\\n.logout {\\n font-weight: 600;\\n color: #005EB8 !important; }\\n\\n.logout:hover {\\n cursor: pointer; }\\n\\n.colored-border {\\n height: 5px;\\n margin-bottom: 2em;\\n background: #005EB8;\\n /* For browsers that do not support gradients */\\n /* For Safari 5.1 to 6.0 */\\n /* For Opera 11.1 to 12.0 */\\n /* For Firefox 3.6 to 15 */\\n background: linear-gradient(to right, #e94910, #fcc000, #0083E7, #dedc00);\\n /* Standard syntax */ }\\n\\n@media screen and (min-width: 768px) {\\n .navbar {\\n border-radius: 0; } }\\n\\n@media screen and (max-width: 768px) {\\n .dropdown-menu li a.dropdown-item {\\n color: black; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbm90LWZvdW5kL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxhcHBcXG5vdC1mb3VuZFxcbm90LWZvdW5kLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9ub3QtZm91bmQvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNJLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksZ0JBQWdCLEVBQUE7O0FBSXBCO0VBQ0ksa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsWUFBWTtFQUNaLGdCQUFnQjtFQUNoQixnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxjQ3BCYyxFQUFBOztBRHVCaEI7RUFDRSxnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxZQUFZLEVBQUE7O0FBR2Q7RUFDRSxpQkFBaUIsRUFBQTs7QUFHbkI7RUFDRSxlQUFlLEVBQUE7O0FBR2pCO0VBQ0Usa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0UsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsdUJBQXVCLEVBQUE7O0FBR3pCO0VBQ0UscUJDeERjO0VEeURkLHlCQ3pEYztFRDBEZCxnQkFBZ0I7RUFDaEIsWUFBWTtFQUNaLFdBQVcsRUFBQTs7QUFHYjtFQUNFLDhCQUE4QixFQUFBOztBQUdoQztFQUNFLFlBQVksRUFBQTs7QUFHZDtFQUNFLHlCQUF5QjtFQUN6QixZQUFZLEVBQUE7O0FBR2Q7RUFDRSxnQkFBZ0I7RUFDaEIseUJBQTJCLEVBQUE7O0FBRzdCO0VBQ0UsZUFBZSxFQUFBOztBQUdqQjtFQUNFLFdBQVc7RUFDWCxrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQUUsK0NBQUE7RUFDMkQsMEJBQUE7RUFDSiwyQkFBQTtFQUNFLDBCQUFBO0VBQzlFLHlFQUEwRTtFQUFFLG9CQUFBLEVBQXFCOztBQUluRztFQUNFO0lBQ0UsZ0JBQWdCLEVBQUEsRUFDakI7O0FBR0g7RUFDRTtJQUNFLFlBQVksRUFBQSxFQUNiIiwiZmlsZSI6InNyYy9hcHAvbm90LWZvdW5kL25vdC1mb3VuZC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uL3ZhcmlhYmxlcyc7XHJcblxyXG4jY29udGFpbmVyRXJyb3Ige1xyXG4gICAgbWFyZ2luLXRvcDogMjN2aDtcclxuICAgIG1hcmdpbi1ib3R0b206IDIzdmg7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbn1cclxuXHJcbiNjb250YWluZXJFcnJvciBoMSB7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG59XHJcblxyXG4vLyBOYXZiYXIgXHJcbi5uYXZiYXIge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgcGFkZGluZy10b3A6IDVweDtcclxuICAgIHBhZGRpbmctYm90dG9tOiAzcHg7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBtaW4taGVpZ2h0OiA2MHB4O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICB9XHJcbiAgICBcclxuICAubmF2YmFyIC5hY3RpdmUge1xyXG4gICAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICB9XHJcbiAgICBcclxuICAubmF2YmFyIGxpIHtcclxuICAgIHBhZGRpbmctdG9wOiAycHg7XHJcbiAgfVxyXG4gICAgIFxyXG4gIC5uYXZiYXItYnJhbmQgaW1nIHtcclxuICAgIGhlaWdodDogNTBweDtcclxuICB9XHJcbiAgICBcclxuICAubmF2YmFyLWJyYW5kIHtcclxuICAgIHBhZGRpbmc6IDVweCAxMHB4O1xyXG4gIH1cclxuICAgIFxyXG4gIC5uYXZiYXIsIC5uYXZiYXItYnRuLCAuZHJvcGRvd24taXRlbSB7XHJcbiAgICBmb250LXNpemU6IDE3cHg7XHJcbiAgfVxyXG4gICAgXHJcbiAgLm5hdmJhci1idG4ge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDAuNWVtO1xyXG4gIH1cclxuICAgICBcclxuICAubmF2YmFyLWNvbGxhcHNlIHtcclxuICAgIGJvcmRlci10b3A6IG5vbmU7XHJcbiAgfVxyXG4gIFxyXG4gIC5uYXZiYXItZGVmYXVsdCB7XHJcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICB9XHJcbiAgXHJcbiAgI2Jhc2ljLWxpbms6Zm9jdXMsICNiYXNpYy1saW5rOmhvdmVyLCAjYmFzaWMtbGluazphY3RpdmUsICNiYXNpYy1saW5rOnZpc2l0ZWQge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgfVxyXG4gIFxyXG4gIC5kcm9wZG93bi1tZW51IHtcclxuICAgIGJvcmRlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgYm94LXNoYWRvdzogbm9uZTsgIFxyXG4gICAgcGFkZGluZzogMHB4O1xyXG4gICAgYm9yZGVyOiAwcHg7XHJcbiAgfVxyXG4gIFxyXG4gIC5kcm9wZG93bi1tZW51ID4gbGkge1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHdoaXRlIHNvbGlkO1xyXG4gIH1cclxuICBcclxuICAuZHJvcGRvd24tbWVudSA+IGxpID4gYSB7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgfVxyXG4gIFxyXG4gIC5kcm9wZG93bi1tZW51ID4gbGkgPiBhOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDQ0ODU7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgfVxyXG4gIFxyXG4gIC5sb2dvdXQge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIGNvbG9yOiAkbmhzLWJsdWUgIWltcG9ydGFudDtcclxuICB9XHJcbiAgXHJcbiAgLmxvZ291dDpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgfVxyXG4gICAgIFxyXG4gIC5jb2xvcmVkLWJvcmRlciB7XHJcbiAgICBoZWlnaHQ6IDVweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDJlbTtcclxuICAgIGJhY2tncm91bmQ6ICMwMDVFQjg7IC8qIEZvciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IGdyYWRpZW50cyAqL1xyXG4gICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCwgI2U5NDkxMCAsICNmY2MwMDAsICMwMDgzRTcsICNkZWRjMDApOyAvKiBGb3IgU2FmYXJpIDUuMSB0byA2LjAgKi9cclxuICAgIGJhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudChyaWdodCwgI2U5NDkxMCAsICNmY2MwMDAsICMwMDgzRTcsICNkZWRjMDApOyAvKiBGb3IgT3BlcmEgMTEuMSB0byAxMi4wICovXHJcbiAgICBiYWNrZ3JvdW5kOiAtbW96LWxpbmVhci1ncmFkaWVudChyaWdodCwgI2U5NDkxMCAsICNmY2MwMDAsICMwMDgzRTcsICNkZWRjMDApOyAvKiBGb3IgRmlyZWZveCAzLjYgdG8gMTUgKi9cclxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgI2U5NDkxMCAsICNmY2MwMDAsICMwMDgzRTcsICNkZWRjMDApOyAvKiBTdGFuZGFyZCBzeW50YXggKi9cclxuICB9XHJcbiAgICBcclxuICBcclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkge1xyXG4gICAgLm5hdmJhciB7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7IFxyXG4gICAgLmRyb3Bkb3duLW1lbnUgbGkgYS5kcm9wZG93bi1pdGVtIHtcclxuICAgICAgY29sb3I6IGJsYWNrO1xyXG4gICAgfVxyXG4gIH0iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiXX0= */\"","import { Component, OnInit } from '@angular/core';\r\nimport { Meta, Title } from '@angular/platform-browser';\r\n\r\nimport { AuthService } from '../utilities/services/auth.service';\r\n\r\n@Component({\r\n selector: 'app-not-found',\r\n templateUrl: './not-found.component.html',\r\n styleUrls: ['./not-found.component.scss']\r\n})\r\nexport class NotFoundComponent implements OnInit {\r\n date = new Date();\r\n isCollapsed = true;\r\n \r\n metaTitle: string = 'Page Not Found | NHS Benchmarking Network';\r\n\r\n constructor(\r\n public auth: AuthService,\r\n private titleService: Title,\r\n private meta: Meta,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(this.metaTitle);\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n }\r\n\r\n onHidden(): void { }\r\n \r\n onShown(): void { }\r\n\r\n isOpenChange(): void { }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { NotFoundRoutingModule } from './not-found-routing.module';\r\nimport { NotFoundComponent } from './not-found.component';\r\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\r\n\r\n@NgModule({\r\n declarations: [NotFoundComponent],\r\n imports: [\r\n CommonModule,\r\n NotFoundRoutingModule,\r\n CollapseModule\r\n ]\r\n})\r\nexport class NotFoundModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { OutputsValidationComponent } from './outputs-validation.component';\r\n\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service'\r\n\r\nconst outputsValidationRoutes: Routes = [\r\n { path: 'validationOld/:projectId/:year', component: OutputsValidationComponent, canActivate: [AuthGuardService] }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(outputsValidationRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class OutputsValidationRoutingModule { }","module.exports = \"\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Validation for {{ project.projectName }} {{ selectedYear }}\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n No questions\\r\\n No external notes\\r\\n No internal notes\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
StatusReport Name (and external note)Submission (and Project Lead)\\r\\n \\r\\n ServiceQuestion (and internal note)ResponseAssigneeActions
\\r\\n There are no validations for this project.\\r\\n
\\r\\n There are no validations matching this search.\\r\\n
\\r\\n \\r\\n {{ vld.status }}\\r\\n \\r\\n \\r\\n \\r\\n {{ vld.tierId }}: {{ vld.reportName }}\\r\\n \\r\\n {{ vld.validationDescription || 'No description added' }}\\r\\n \\r\\n {{ vld.submissionCode }} ({{ vld.submissionId }}): {{ vld.submissionName || '-' }}\\r\\n Project Lead: {{ vld.projectLeadName || '-' }}\\r\\n \\r\\n {{ vld.serviceItemName || '-' }}\\r\\n \\r\\n \\r\\n {{ vld.questionId }}: {{ vld.displayQuestionText || '-' }}\\r\\n \\r\\n {{ vld.notes || 'No note added' }}\\r\\n \\r\\n {{ vld.response || '-' }}\\r\\n \\r\\n {{ vld.validatorName }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n There are no tiers matching the search.\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ tier.name }}\\r\\n
{{ tier.serviceItemName }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{ tier.pendingValidationsCount }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

{{ selectedTier.report.reportName }}

\\r\\n \\r\\n Reference (links to outputs): \\r\\n \\r\\n Median: {{ median | number: '1.2-2' }}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n

Validation Points

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
StatusReport Name (and external note)Submission (and Project Lead)ServiceQuestion (and internal note)ResponseAssigneeActions
\\r\\n There are no validations for this project.\\r\\n
\\r\\n \\r\\n {{ vld.status }}\\r\\n \\r\\n \\r\\n \\r\\n {{ vld.tierId }}: {{ vld.reportName }}\\r\\n \\r\\n {{ vld.validationDescription || 'No description added' }}\\r\\n \\r\\n {{ vld.submissionCode }} ({{ vld.submissionId }}): {{ vld.submissionName || '-' }}\\r\\n Project Lead: {{ vld.projectLeadName || '-' }}\\r\\n \\r\\n {{ vld.serviceItemName || '-' }}\\r\\n \\r\\n \\r\\n {{ vld.questionId }}: {{ vld.displayQuestionText }}\\r\\n \\r\\n {{ vld.notes || 'No note added' }}\\r\\n \\r\\n {{ vld.response }}\\r\\n \\r\\n {{ vld.validatorName }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n

\\r\\n Edit Validation
\\r\\n Submission Code: {{ selectedValidation.submissionCode }}\\r\\n

\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
Select a response from the parameters below.
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Question ID-Part and TextTypeResponse
\\r\\n
\\r\\n
{{ resp.questionId }}-{{ resp.questionPart }}
\\r\\n
\\r\\n {{ resp.parameterType }}\\r\\n \\r\\n {{ resp.response }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
This is an external note, visible to users when validation points are shared.
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n External note saved\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
This is an internal note, only visible to admins and not users.
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n Internal note saved\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","module.exports = \".sidebar {\\n background-color: #f3f3f3;\\n padding: 1em;\\n height: 80vh;\\n overflow-x: scroll;\\n overflow-y: scroll;\\n margin-bottom: 2em; }\\n\\n.tier {\\n white-space: nowrap;\\n margin-bottom: 0.5em;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\n\\n.tier div {\\n display: inline-block; }\\n\\n.tier:hover {\\n cursor: pointer;\\n color: #005EB8; }\\n\\n.tier.active {\\n color: #005EB8;\\n font-weight: bold; }\\n\\n.fa-sort-alpha-down {\\n float: right;\\n line-height: inherit !important; }\\n\\n.fa-sort-alpha-down.grayed-out {\\n color: gray; }\\n\\n.searchable-tier {\\n margin: 0.1em 0; }\\n\\n.searchable-tier:hover {\\n color: #005EB8;\\n cursor: pointer; }\\n\\n.c-pointer:hover {\\n cursor: pointer; }\\n\\n.d-inline-block {\\n display: inline-block; }\\n\\n.d-block {\\n display: block; }\\n\\n.p-relative {\\n position: relative; }\\n\\n.mr-1 {\\n margin-right: 0.25em; }\\n\\n.mt-2 {\\n margin-top: 0.5em; }\\n\\n.mr-2 {\\n margin-right: 0.5em; }\\n\\n.ml-2 {\\n margin-left: 0.5em; }\\n\\n.mb-2 {\\n margin-bottom: 0.5em; }\\n\\n.mt-4 {\\n margin-top: 1em; }\\n\\n.mb-4 {\\n margin-bottom: 1em; }\\n\\n.font-weight-bold {\\n font-weight: bold; }\\n\\n.pad-left-2 {\\n padding-left: 2em; }\\n\\n.pad-left-3 {\\n padding-left: 4em; }\\n\\n.pad-left-4 {\\n padding-left: 6em; }\\n\\n.pad-left-5 {\\n padding-left: 8em; }\\n\\n.pad-left-6 {\\n padding-left: 10em; }\\n\\n.pad-left-7 {\\n padding-left: 12em; }\\n\\n.table {\\n table-layout: fixed !important; }\\n\\n.table th {\\n overflow-x: hidden !important;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n\\n.alert-fixed {\\n position: absolute;\\n width: 30%;\\n right: 0;\\n z-index: 10000; }\\n\\nspan.status {\\n font-size: 0.8em;\\n font-weight: bold;\\n text-transform: uppercase;\\n padding: 3px 6px;\\n border-radius: 3px;\\n background-color: #005EB8;\\n color: white; }\\n\\nspan.status.-updated {\\n background-color: orangered; }\\n\\nspan.status.-validated {\\n background-color: green; }\\n\\nspan.status.-deleted {\\n background-color: darkred; }\\n\\nspan.status.-confirmed {\\n background-color: #73cf9a; }\\n\\n#slider {\\n position: fixed;\\n top: 0;\\n left: 0;\\n padding: 1em 2em;\\n width: 35%;\\n height: 100%;\\n background-color: white;\\n z-index: 10000;\\n overflow-y: scroll; }\\n\\n#slider .help-block {\\n margin-top: 0; }\\n\\n#slider label {\\n margin-top: 1em;\\n margin-bottom: 0; }\\n\\n#sliderBg {\\n position: fixed;\\n top: 0;\\n right: 0;\\n width: 65%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.5);\\n z-index: 10000; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3V0cHV0cy12YWxpZGF0aW9uL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxhcHBcXG91dHB1dHMtdmFsaWRhdGlvblxcb3V0cHV0cy12YWxpZGF0aW9uLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9vdXRwdXRzLXZhbGlkYXRpb24vQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNJLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1osWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixrQkFBa0I7RUFDbEIsa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksbUJBQW1CO0VBQ25CLG9CQUFvQjtFQUNwQix5QkFBeUI7RUFDekIsc0JBQXNCO0VBQ3RCLHFCQUFxQjtFQUNyQixpQkFBaUIsRUFBQTs7QUFOckI7SUFRUSxxQkFBcUIsRUFBQTs7QUFSN0I7SUFXUSxlQUFlO0lBQ2YsY0NwQlUsRUFBQTs7QURRbEI7SUFlUSxjQ3ZCVTtJRHdCVixpQkFBaUIsRUFBQTs7QUFJekI7RUFDSSxZQUFZO0VBQ1osK0JBQStCLEVBQUE7O0FBRm5DO0lBSVEsV0FBVyxFQUFBOztBQUluQjtFQUNJLGVBQWUsRUFBQTs7QUFEbkI7SUFHUSxjQ3ZDVTtJRHdDVixlQUFlLEVBQUE7O0FBSXZCO0VBQ0ksZUFBZSxFQUFBOztBQUduQjtFQUNJLHFCQUFxQixFQUFBOztBQUd6QjtFQUNJLGNBQWMsRUFBQTs7QUFHbEI7RUFDSSxrQkFBa0IsRUFBQTs7QUFHdEI7RUFBUSxvQkFBb0IsRUFBQTs7QUFFNUI7RUFBUSxpQkFBaUIsRUFBQTs7QUFDekI7RUFBUSxtQkFBbUIsRUFBQTs7QUFDM0I7RUFBUSxrQkFBa0IsRUFBQTs7QUFDMUI7RUFBUSxvQkFBb0IsRUFBQTs7QUFFNUI7RUFBUSxlQUFlLEVBQUE7O0FBQ3ZCO0VBQVEsa0JBQWtCLEVBQUE7O0FBRTFCO0VBQW9CLGlCQUFpQixFQUFBOztBQUVyQztFQUFjLGlCQUFrQixFQUFBOztBQUNoQztFQUFjLGlCQUFrQixFQUFBOztBQUNoQztFQUFjLGlCQUFrQixFQUFBOztBQUNoQztFQUFjLGlCQUFrQixFQUFBOztBQUNoQztFQUFjLGtCQUFtQixFQUFBOztBQUNqQztFQUFjLGtCQUFtQixFQUFBOztBQUVqQztFQUNJLDhCQUE4QixFQUFBOztBQUdsQztFQUNJLDZCQUE2QjtFQUM3Qix1QkFBdUI7RUFDdkIsbUJBQW1CLEVBQUE7O0FBR3ZCO0VBQ0ksa0JBQWtCO0VBQ2xCLFVBQVU7RUFDVixRQUFRO0VBQ1IsY0FBYyxFQUFBOztBQUdsQjtFQUNJLGdCQUFnQjtFQUNoQixpQkFBaUI7RUFDakIseUJBQXlCO0VBQ3pCLGdCQUFnQjtFQUNoQixrQkFBa0I7RUFDbEIseUJBQXlCO0VBQ3pCLFlBQVksRUFBQTs7QUFQaEI7SUFTUSwyQkFBMkIsRUFBQTs7QUFUbkM7SUFZUSx1QkFBdUIsRUFBQTs7QUFaL0I7SUFlUSx5QkFBeUIsRUFBQTs7QUFmakM7SUFrQlEseUJBQW9DLEVBQUE7O0FBSTVDO0VBQ0ksZUFBZTtFQUNmLE1BQU07RUFDTixPQUFPO0VBQ1AsZ0JBQWdCO0VBQ2hCLFVBQVU7RUFDVixZQUFZO0VBQ1osdUJBQXVCO0VBQ3ZCLGNBQWM7RUFDZCxrQkFBa0IsRUFBQTs7QUFHdEI7RUFDSSxhQUFhLEVBQUE7O0FBR2pCO0VBQ0ksZUFBZTtFQUNmLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLGVBQWU7RUFDZixNQUFNO0VBQ04sUUFBUTtFQUNSLFVBQVU7RUFDVixZQUFZO0VBQ1osb0NBQWlDO0VBQ2pDLGNBQWMsRUFBQSIsImZpbGUiOiJzcmMvYXBwL291dHB1dHMtdmFsaWRhdGlvbi9vdXRwdXRzLXZhbGlkYXRpb24uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi92YXJpYWJsZXMnO1xyXG5cclxuLnNpZGViYXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMztcclxuICAgIHBhZGRpbmc6IDFlbTtcclxuICAgIGhlaWdodDogODB2aDtcclxuICAgIG92ZXJmbG93LXg6IHNjcm9sbDtcclxuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcclxuICAgIG1hcmdpbi1ib3R0b206IDJlbTtcclxufVxyXG5cclxuLnRpZXIge1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcclxuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcclxuICAgICYgZGl2IHtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB9XHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICAgIH1cclxuICAgICYuYWN0aXZlIHtcclxuICAgICAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgfVxyXG59XHJcblxyXG4uZmEtc29ydC1hbHBoYS1kb3duIHtcclxuICAgIGZsb2F0OiByaWdodDtcclxuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0ICFpbXBvcnRhbnQ7XHJcbiAgICAmLmdyYXllZC1vdXQge1xyXG4gICAgICAgIGNvbG9yOiBncmF5O1xyXG4gICAgfVxyXG59XHJcblxyXG4uc2VhcmNoYWJsZS10aWVyIHtcclxuICAgIG1hcmdpbjogMC4xZW0gMDtcclxuICAgICY6aG92ZXIge1xyXG4gICAgICAgIGNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgfVxyXG59XHJcblxyXG4uYy1wb2ludGVyOmhvdmVyIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmQtaW5saW5lLWJsb2NrIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxufVxyXG5cclxuLmQtYmxvY2sge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbn1cclxuXHJcbi5wLXJlbGF0aXZlIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLm1yLTEgeyBtYXJnaW4tcmlnaHQ6IDAuMjVlbTsgfVxyXG5cclxuLm10LTIgeyBtYXJnaW4tdG9wOiAwLjVlbTsgfVxyXG4ubXItMiB7IG1hcmdpbi1yaWdodDogMC41ZW07IH1cclxuLm1sLTIgeyBtYXJnaW4tbGVmdDogMC41ZW07IH1cclxuLm1iLTIgeyBtYXJnaW4tYm90dG9tOiAwLjVlbTsgfVxyXG5cclxuLm10LTQgeyBtYXJnaW4tdG9wOiAxZW07IH1cclxuLm1iLTQgeyBtYXJnaW4tYm90dG9tOiAxZW07IH1cclxuXHJcbi5mb250LXdlaWdodC1ib2xkIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cclxuXHJcbi5wYWQtbGVmdC0yIHsgcGFkZGluZy1sZWZ0OiAyZW0gfVxyXG4ucGFkLWxlZnQtMyB7IHBhZGRpbmctbGVmdDogNGVtIH1cclxuLnBhZC1sZWZ0LTQgeyBwYWRkaW5nLWxlZnQ6IDZlbSB9XHJcbi5wYWQtbGVmdC01IHsgcGFkZGluZy1sZWZ0OiA4ZW0gfVxyXG4ucGFkLWxlZnQtNiB7IHBhZGRpbmctbGVmdDogMTBlbSB9XHJcbi5wYWQtbGVmdC03IHsgcGFkZGluZy1sZWZ0OiAxMmVtIH1cclxuXHJcbi50YWJsZSB7XHJcbiAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi50YWJsZSB0aCB7XHJcbiAgICBvdmVyZmxvdy14OiBoaWRkZW4gIWltcG9ydGFudDtcclxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxufVxyXG5cclxuLmFsZXJ0LWZpeGVkIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHdpZHRoOiAzMCU7XHJcbiAgICByaWdodDogMDtcclxuICAgIHotaW5kZXg6IDEwMDAwO1xyXG59XHJcblxyXG5zcGFuLnN0YXR1cyB7XHJcbiAgICBmb250LXNpemU6IDAuOGVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgcGFkZGluZzogM3B4IDZweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDVFQjg7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgICAmLi11cGRhdGVkIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2VyZWQ7XHJcbiAgICB9XHJcbiAgICAmLi12YWxpZGF0ZWQge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuO1xyXG4gICAgfVxyXG4gICAgJi4tZGVsZXRlZCB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya3JlZDtcclxuICAgIH1cclxuICAgICYuLWNvbmZpcm1lZCB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDExNSwgMjA3LCAxNTQpO1xyXG4gICAgfVxyXG59XHJcblxyXG4jc2xpZGVyIHtcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICBwYWRkaW5nOiAxZW0gMmVtO1xyXG4gICAgd2lkdGg6IDM1JTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgei1pbmRleDogMTAwMDA7XHJcbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XHJcbn1cclxuXHJcbiNzbGlkZXIgLmhlbHAtYmxvY2sge1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxufVxyXG5cclxuI3NsaWRlciBsYWJlbCB7XHJcbiAgICBtYXJnaW4tdG9wOiAxZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG59XHJcblxyXG4jc2xpZGVyQmcge1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICB3aWR0aDogNjUlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwLjUpO1xyXG4gICAgei1pbmRleDogMTAwMDA7XHJcbn0iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiXX0= */\"","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { FormGroup, FormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { CsvDownload } from 'app/utilities/classes/csv/csv-download';\r\nimport { DataService } from 'app/utilities/services/data.service';\r\nimport { MemberService } from 'app/utilities/services/member.service';\r\n\r\nimport { ValidationProject } from './outputs-validation';\r\n\r\nimport { OutputValidationService } from './outputs-validation.service';\r\n\r\n@Component({\r\n selector: 'app-outputs-validation',\r\n templateUrl: './outputs-validation.component.html',\r\n styleUrls: ['./outputs-validation.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class OutputsValidationComponent implements OnInit {\r\n\r\n public errorMessage: string;\r\n public loadingMessage: string;\r\n\r\n public currentUser: any; // MODEL\r\n\r\n public selectedProjectId: number;\r\n public selectedYear: number;\r\n public selectedOptionId: number;\r\n public selectedPeerGroupId: number;\r\n public selectedPoint: any;\r\n public selectedValidation: any;\r\n\r\n public project: ValidationProject;\r\n\r\n public mean: number;\r\n public median: number;\r\n\r\n public tierSearch: string;\r\n public searchableTiers: any; // MODEL\r\n public validationSearch: string;\r\n public searchableColumns: string[] = ['status','tierId','reportName','validationDescription','submissionCode','submissionId','submissionName', 'organisationName', 'projectLeadName','questionId','displayQuestionText','note','validatorName'];\r\n\r\n public selectedTier: any; // MODEL\r\n public chartObject; // NEEDS TYPE\r\n\r\n public availableResponses: any; // MODEL\r\n\r\n public validationDescriptionForm: FormGroup;\r\n public validationNoteForm: FormGroup;\r\n\r\n public validationPosted: boolean = false;\r\n public responsePosted: boolean = false;\r\n public notePosted: boolean = false;\r\n public descriptionPosted: boolean = false;\r\n\r\n public showListView: boolean = true;\r\n public tableFilter: string = '-validationId';\r\n\r\n public csvSettings: CsvDownload = {\r\n fileName: 'validations',\r\n buttonText: 'Download (.csv)',\r\n buttonStyle: 'btn btn-info',\r\n icon: '',\r\n headers: ['Status', 'Tier ID', 'Report ID', 'Report Name', 'Submission Code', 'Submission ID', 'Submission Name', 'Organisation Name', 'Service', 'Question ID', 'Question Part', 'Question Text', 'Question Response', 'External Note', 'Assignee', 'Data Collection Link', 'Outputs Link', 'Internal Note'],\r\n keys: ['status', 'tierId', 'reportId', 'reportName', 'submissionCode', 'submissionId', 'submissionName', 'organisationName', 'serviceItemName', 'questionId', 'questionPart', 'displayQuestionText', 'response', 'validationDescription', 'validatorName', 'dataCollectionLink', 'outputsLink', 'notes'],\r\n styling: true\r\n }\r\n\r\n // Data Collection Link\r\n // Chart Link\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private memberService: MemberService,\r\n private dataService: DataService,\r\n private outputValidationService: OutputValidationService\r\n ) {\r\n this.selectedProjectId = +this.route.snapshot.paramMap.get('projectId');\r\n this.selectedYear = +this.route.snapshot.paramMap.get('year');\r\n }\r\n\r\n ngOnInit() {\r\n this.currentUserCheck();\r\n }\r\n\r\n private currentUserCheck(): void {\r\n this.memberService.User().subscribe(\r\n success => {\r\n this.currentUser = success.data;\r\n if (this.currentUser && this.currentUser.isAdmin == 'Y') {\r\n this.getTiers(this.selectedProjectId, this.selectedYear);\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n this.errorMessage = error.error.error.message;\r\n }\r\n )\r\n }\r\n\r\n private getTiers(projectId: number, year: number): void {\r\n this.loadingMessage = \"Loading validations. Please wait...\";\r\n this.outputValidationService.getProjectTiers(projectId, year).subscribe(\r\n success => {\r\n this.project = new ValidationProject(success.data);\r\n this.searchableTiers = this.project.tiers.filter(tier => tier.reportId);\r\n if (this.project.tiers.length) {\r\n this.getValidations(projectId, year);\r\n } else {\r\n this.errorMessage = \"There are no tiers defined for this project/year combination.\"\r\n }\r\n },\r\n error => {\r\n this.errorMessage = \"There was an error retrieving tiers for this project/year combination.\"\r\n console.log(error);\r\n }\r\n )\r\n }\r\n\r\n private getValidations(projectId: number, year: number): void {\r\n this.outputValidationService.getValidationsOld(projectId, year).subscribe(\r\n success => {\r\n this.project.setValidationsToTiers(success.data.validations, this.selectedProjectId, this.selectedYear);\r\n this.project.setFilters(success.data.validations);\r\n // If tier pre-selected\r\n let selectedTierId = +this.route.snapshot.queryParams['tier'];\r\n if (selectedTierId) {\r\n let selectedTier = this.project.tiers.find(tier => tier.id == selectedTierId);\r\n this.getTier(selectedTier, 0, 0);\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n },\r\n () => {\r\n this.loadingMessage = null;\r\n }\r\n )\r\n }\r\n\r\n public getTier(tier: any, optionId?: number, peerGroupId?: number): void {\r\n this.tierSearch = null;\r\n this.loadingMessage = \"Loading report details and data. Please wait...\";\r\n this.errorMessage = null;\r\n this.chartObject = null;\r\n this.showListView = false;\r\n this.selectedOptionId = optionId || 0;\r\n this.selectedPeerGroupId = peerGroupId || 0;\r\n this.outputValidationService.getTier(tier.reportId, 232, this.selectedPeerGroupId, this.selectedYear, tier.submissionLevel, tier.serviceItemId, this.selectedOptionId).subscribe(\r\n success => {\r\n tier.report = this.project.setReportDetails(success.data, this.selectedOptionId, this.selectedYear);\r\n tier.data = this.project.setValidationsToData(tier.validations, success.data.yearData[this.selectedYear], tier.report.viewTypes[0].viewType);\r\n let values = tier.data.map(d => d.y);\r\n this.mean = this.project.mean(values);\r\n this.median = this.project.median(values);\r\n this.selectedTier = tier;\r\n this.router.navigate([], { queryParams: { tier: tier.id }, queryParamsHandling: 'merge' });\r\n let chartTypeCheck: boolean = this.project.chartTypeCheck(tier.report.viewTypes[0]);\r\n let isGenericCheck: boolean = tier.report.storedProcedure.includes('generic');\r\n if (chartTypeCheck && isGenericCheck) {\r\n this.buildChart(tier.data, this.mean, this.median);\r\n } else {\r\n this.errorMessage = `This chart is not yet available for validation. This may be because of the chart type (${tier.report.viewTypes[0].viewType}) or because the chart is not built using parameters.`\r\n }\r\n },\r\n error => {\r\n this.errorMessage = error.error.error.message;\r\n console.log(error);\r\n },\r\n () => {\r\n this.loadingMessage = null;\r\n document.getElementById(tier.id).scrollIntoView();\r\n window.scroll(0,0);\r\n }\r\n ) \r\n }\r\n\r\n public buildChart(data: any, mean: number, median: number): void {\r\n this.chartObject = {\r\n colors: [ 'lightgray' ],\r\n chart: { style: { fontFamily: '\"Helvetica Neue\", Helvetica, Arial, sans-serif', }},\r\n title: { text: '', style: { fontWeight: 'bold' } },\r\n xAxis: { categories: data.map(d => d.submissionCode),\r\n labels: {\r\n rotation: data.length > 25 ? 60 : 0,\r\n step: 1,\r\n formatter () {\r\n let color = data.find(d => d.submissionCode == this.value).color || null;\r\n return `${this.value}`\r\n }\r\n },\r\n title: '', \r\n tickInterval: undefined },\r\n yAxis: { \r\n title: { text: null },\r\n min: null,\r\n max: null,\r\n labels: {},\r\n plotLines: [\r\n {\r\n color: '#009639',\r\n value: mean,\r\n width: '2',\r\n zIndex: 10\r\n },\r\n {\r\n color: '#78BE20',\r\n value: median,\r\n width: '2',\r\n zIndex: 11\r\n }\r\n ],\r\n tickInterval: undefined,\r\n dateTimeLabelFormats: {}\r\n },\r\n tooltip: {},\r\n exporting: { enabled: false },\r\n plotOptions: { \r\n series: { \r\n cursor: 'pointer',\r\n animation: false\r\n }\r\n },\r\n credits: { text: ''},\r\n legend: { enabled: false },\r\n series: [\r\n {\r\n type: 'column',\r\n data: data\r\n }\r\n ]\r\n };\r\n }\r\n\r\n public chartClick(event: any): void {\r\n // Remove any errors\r\n this.errorMessage = null;\r\n // Define point data\r\n let pointData: any;\r\n // Highcharts bar selected\r\n if (event.point) {\r\n pointData = {\r\n submissionCode: +event.point.category.substr(2),\r\n submissionId: event.point.submissionId,\r\n y: event.point.y\r\n };\r\n }\r\n // Highcharts axis label selected\r\n else if (event.target.innerHTML) {\r\n let point = this.selectedTier.data.find(d => d.submissionCode === event.target.innerHTML);\r\n pointData = {\r\n submissionCode: point.submissionCode.substr(2),\r\n submissionId: point.submissionId,\r\n y: point.y\r\n };\r\n } \r\n // Check for no codes and duplicates, then build\r\n let submissionCodeNaN = isNaN(+pointData.submissionCode);\r\n let duplicatePoint = this.selectedTier.validations.find(vld => vld.submissionCode == pointData.submissionCode);\r\n\r\n if (pointData && !duplicatePoint && !submissionCodeNaN) {\r\n this.editValidation(pointData, true);\r\n }\r\n else if (pointData && submissionCodeNaN) {\r\n alert('Submission codes have not been assigned. Codes must be assigned before validation can begin.')\r\n } \r\n else if (pointData && duplicatePoint) {\r\n alert('This point has already been added for validation.')\r\n }\r\n else {\r\n console.log('No point selected')\r\n }\r\n }\r\n\r\n public buildValidationDescriptionForm(validation: any, validationDescription?: string): void {\r\n //this.selectedPoint = pointData;\r\n this.validationDescriptionForm = new FormGroup({\r\n validationDescription: new FormControl(validation.validationDescription ? validation.validationDescription : ''),\r\n });\r\n }\r\n\r\n public postValidation(pointData: any): void {\r\n\r\n let submissionCodeCheck = this.selectedTier.validations.find(vld => vld.submissionCode == pointData.submissionCode);\r\n\r\n if (!submissionCodeCheck) {\r\n let validation = {\r\n validationId: undefined,\r\n year: this.selectedYear,\r\n tierId: this.selectedTier.id,\r\n submissionCode: pointData.submissionCode,\r\n validationValue: pointData.y,\r\n serviceItemId: this.selectedTier.serviceItemId,\r\n validationDescription: '',\r\n optionId: this.selectedOptionId\r\n }\r\n \r\n this.outputValidationService.postValidation(validation).subscribe(\r\n success => {\r\n \r\n validation.validationId = success.data.newValidationId;\r\n validation['submissionId'] = pointData.submissionId;\r\n validation['validatorName'] = this.currentUser.fullName;\r\n validation['submissionName'] = success.data.submissionName;\r\n validation['reportId'] = this.selectedTier.reportId;\r\n validation['reportName'] = this.selectedTier.report.reportName;\r\n validation['status'] = null;\r\n validation['createdAt'] = null;\r\n validation['lastUpdated'] = null;\r\n validation['questionId'] = null;\r\n validation['optionId'] = this.selectedOptionId;\r\n validation['titleOptionName'] = this.selectedTier.report.options.denominators.find(den => { den.optionId == this.selectedOptionId }) || null;\r\n \r\n this.project.validations.push(validation);\r\n this.project.setValidationsToTiers(this.project.validations, this.selectedProjectId, this.selectedYear);\r\n this.project.setValidationsToData(this.selectedTier.validations, this.selectedTier.data, this.selectedTier.report.viewTypes[0].viewType);\r\n this.buildChart(this.selectedTier.data, this.mean, this.median);\r\n\r\n this.selectedValidation = validation;\r\n \r\n this.getValidationResponses(validation);\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n )\r\n } else {\r\n alert('This point has already been added for validation.')\r\n }\r\n }\r\n\r\n public getValidationResponses(validation: any): void {\r\n // Availability of reportId and serviceItemId varies on use case\r\n let reportId = validation.reportId ? validation.reportId : this.selectedTier.reportId;\r\n let serviceItemId = this.selectedTier ? this.selectedTier.serviceItemId : validation.serviceItemId;\r\n this.outputValidationService.getValidationResponses(reportId, this.selectedYear, validation.submissionId, serviceItemId || 0).subscribe(\r\n success => { \r\n this.availableResponses = this.project.setAvailableResponses(success.data.responses, this.selectedYear, validation, this.responsePosted);\r\n },\r\n error => { console.log(error) }\r\n )\r\n }\r\n\r\n public setResponse(response: any, validation?: any): void {\r\n let validationResponse = {\r\n validationId: response.validationId,\r\n submissionId: response.submissionId, \r\n questionId: response.questionId, \r\n questionPart: response.questionPart, \r\n serviceItemId: validation ? validation.serviceItemId : this.selectedTier.serviceItemId\r\n };\r\n this.outputValidationService.addValidationResponse(validationResponse).subscribe(\r\n success => {\r\n let validation = this.project.validations.find(vld => vld.validationId == response.validationId);\r\n validation.validationResponseId = success.data.newValidationResponseId;\r\n validation.response = response.response;\r\n validation.displayQuestionText = response.displayQuestionText;\r\n validation.questionId = response.questionId;\r\n validation.questionPart = response.questionPart;\r\n\r\n this.buildValidationNoteForm(validation);\r\n this.responsePosted = true;\r\n response.set = true;\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n\r\n public buildValidationNoteForm(validation: any, notes?: string): void {\r\n this.validationNoteForm = new FormGroup({\r\n validationResponseId: new FormControl(validation.validationResponseId),\r\n notes: new FormControl(validation.notes ? validation.notes : ''),\r\n });\r\n }\r\n\r\n public editValidationNote(): void {\r\n let updatedValidation = {\r\n validationResponseId: this.validationNoteForm.value.validationResponseId,\r\n note: this.validationNoteForm.value.notes\r\n }\r\n this.outputValidationService.editValidationNote(updatedValidation).subscribe(\r\n success => {\r\n let validation = this.project.validations.find(vld => vld.validationResponseId == updatedValidation.validationResponseId);\r\n validation.notes = this.validationNoteForm.value.notes;\r\n this.validationNoteForm.markAsPristine;\r\n this.notePosted = true;\r\n setTimeout(() => { this.notePosted = false }, 2000);\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n\r\n public editValidationDescription(selectedValidation: any): void {\r\n let updatedValidation = {\r\n validationId: selectedValidation.validationId,\r\n description: this.validationDescriptionForm.value.validationDescription\r\n }\r\n this.outputValidationService.editValidationDescription(updatedValidation).subscribe(\r\n success => {\r\n selectedValidation.validationDescription = this.validationDescriptionForm.value.validationDescription;\r\n this.validationDescriptionForm.markAsPristine;\r\n this.descriptionPosted = true;\r\n setTimeout(() => { this.descriptionPosted = false }, 2000);\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n\r\n public deleteValidation(validationId: number): void {\r\n if (confirm(\"Are you sure you want to delete this validation? This action cannot be undone.\")) {\r\n this.outputValidationService.deleteValidation(validationId).subscribe(\r\n success => {\r\n this.project.validations = this.project.validations.filter(v => v.validationId !== validationId);\r\n this.project.setValidationsToTiers(this.project.validations, this.selectedProjectId, this.selectedYear);\r\n this.project.setValidationsToData(this.selectedTier.validations, this.selectedTier.data, this.selectedTier.report.viewTypes[0].viewType);\r\n this.buildChart(this.selectedTier.data, this.mean, this.median);\r\n this.selectedValidation = null;\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n }\r\n\r\n public editValidationStatus(validationId: number, status: string): void {\r\n let updatedValidation = {\r\n validationId: validationId,\r\n status: status\r\n }\r\n this.outputValidationService.editValidationStatus(updatedValidation).subscribe(\r\n success => {\r\n let validation = this.project.validations.find(vld => vld.validationId == validationId);\r\n validation.status = status;\r\n this.project.setValidationsToTiers(this.project.validations, this.selectedProjectId, this.selectedYear);\r\n this.project.setValidationsToData(this.selectedTier.validations, this.selectedTier.data, this.selectedTier.report.viewTypes[0].viewType);\r\n this.buildChart(this.selectedTier.data, this.mean, this.median); \r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n\r\n public dataCollectionLink(validation: any): void {\r\n let url: string;\r\n if (validation.serviceItemId > 0) {\r\n url = '/data-collection/' \r\n + validation.questionGroupLevel + '/' \r\n + validation.submissionId + '/' \r\n + validation.validationYear + '/' \r\n + validation.serviceItemId + '?group=' \r\n + validation.questionGroupId;\r\n } else {\r\n url = '/data-collection/' \r\n + validation.questionGroupLevel + '/' \r\n + validation.submissionId + '/'\r\n + validation.validationYear + '?group=' \r\n + validation.questionGroupId;\r\n }\r\n window.open(url, '_blank');\r\n }\r\n\r\n public filterByColumn(column: string, value: string): void {\r\n if (column == 'notes' && value == null) { value = \"\" };\r\n this.project.validations = this.project.rawValidations.filter(vld => vld[column] == value);\r\n }\r\n\r\n public switchView(showListView: boolean): void {\r\n this.errorMessage = null;\r\n if (showListView) {\r\n this.router.navigate([], { queryParams: { tier: null }, queryParamsHandling: 'merge' });\r\n this.showListView = true;\r\n } else {\r\n this.showListView = false;\r\n this.selectedTier = null;\r\n }\r\n }\r\n\r\n public refreshValidations(): void {\r\n this.project.validations = this.project.rawValidations;\r\n this.project.filters.forEach(fil => fil.selected = null);\r\n }\r\n\r\n public checkResponsePosted(): boolean {\r\n return this.availableResponses.map(resp => resp.set).indexOf(true) > -1;\r\n }\r\n\r\n public toggleTierCollapsed(tier: any, collapse?: boolean): void {\r\n tier.children = this.project.toggleChildren(tier.children, collapse);\r\n }\r\n\r\n public editValidation(validation: any, create: boolean): void {\r\n this.selectedValidation = validation;\r\n if (create) {\r\n this.postValidation(validation);\r\n }\r\n this.getValidationResponses(validation);\r\n this.buildValidationDescriptionForm(validation);\r\n this.buildValidationNoteForm(validation)\r\n }\r\n\r\n public getSearchTier(tier: any, allTiers: any): void {\r\n this.loadingMessage = \"Loading report details and data. Please wait...\";\r\n callRecursively(tier, allTiers);\r\n function callRecursively(tier: any, tiers: any) {\r\n let parent = tiers.find(t => t.id == tier.parentId);\r\n if (parent) { \r\n parent.children.forEach(child => child.collapsed = false);\r\n callRecursively(parent, tiers)\r\n }\r\n }\r\n this.getTier(tier);\r\n }\r\n \r\n public sortSubmissions(){\r\n if(this.tableFilter == 'submissionName') {\r\n this.tableFilter = '-validationId';\r\n } else {\r\n this.tableFilter = 'submissionName';\r\n }\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms'\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { OutputsValidationComponent } from './outputs-validation.component';\r\nimport { OutputsValidationRoutingModule } from './outputs-validation-routing.module';\r\nimport { OutputValidationService } from './outputs-validation.service';\r\n\r\nimport { NgPipesModule } from 'ngx-pipes';\r\nimport { Ng2HighchartsModule } from 'ng2-highcharts';\r\nimport { CsvDownloadModule } from 'app/shared/csv-download/csv-download.module';\r\nimport { TooltipModule } from 'ngx-bootstrap';\r\n\r\n@NgModule({\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n CommonModule,\r\n OutputsValidationRoutingModule,\r\n NgPipesModule,\r\n Ng2HighchartsModule,\r\n CsvDownloadModule,\r\n TooltipModule\r\n ],\r\n providers: [\r\n OutputValidationService\r\n ],\r\n declarations: [ \r\n OutputsValidationComponent\r\n ]\r\n})\r\nexport class OutputsValidationModule {}","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from 'environments/environment';\r\n\r\n@Injectable()\r\nexport class OutputValidationService {\r\n private nhsApiUrl: string = environment.apiURL;\r\n private token: string = localStorage.getItem('id_token');\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n public getProject(projectId: number, year: number): Observable {\r\n return this.http.get(\r\n this.nhsApiUrl + 'projects/list/' + projectId.toString(), {\r\n headers: new HttpHeaders().set('Authorization', this.token),\r\n params: new HttpParams().set('year', year.toString())\r\n }\r\n );\r\n }\r\n\r\n public getProjectTiers(projectId: number, year: number): Observable {\r\n return this.http.get(\r\n this.nhsApiUrl + 'outputs/tiers', {\r\n headers: new HttpHeaders().set('Authorization', this.token),\r\n params: new HttpParams().set('projectId', projectId.toString()).set('year', year.toString())\r\n }\r\n )\r\n }\r\n\r\n public getValidations(projectId: number, year: number, organisationId?: number): Observable {\r\n return this.http.get(\r\n this.nhsApiUrl + 'validation/getValidations', {\r\n headers: new HttpHeaders().set('Authorization', this.token),\r\n params: new HttpParams().set('projectId', projectId.toString()).set('year', year.toString()).set('organisationId', organisationId.toString())\r\n }\r\n )\r\n }\r\n\r\n public getValidationsOld(projectId: number, year: number): Observable {\r\n return this.http.get(\r\n this.nhsApiUrl + 'validation/getValidations', {\r\n headers: new HttpHeaders().set('Authorization', this.token),\r\n params: new HttpParams().set('projectId', projectId.toString()).set('year', year.toString())\r\n }\r\n )\r\n }\r\n\r\n public getTier(\r\n reportId: number,\r\n organisationId: number,\r\n peerGroup: number,\r\n year: number,\r\n submissionLevel?: string,\r\n serviceItemId?: number,\r\n optionId?: number,\r\n ): Observable {\r\n let params: HttpParams = new HttpParams();\r\n\r\n // Mandatory params\r\n params = params\r\n .set(\"organisationId\", organisationId.toString())\r\n .set(\"peerGroup\", peerGroup.toString())\r\n .set(\"year\", year.toString());\r\n\r\n // Optional params\r\n if (submissionLevel) { params = params.append(\"submissionLevel\", submissionLevel.toString()) }\r\n if (serviceItemId) { params = params.append(\"serviceItemId\", serviceItemId.toString()) }\r\n if (optionId) { params = params.append(\"denominatorOptionId\", optionId.toString()); }\r\n\r\n return this.http.get(this.nhsApiUrl + \"outputs/\" + reportId + \"/data\", {\r\n headers: new HttpHeaders().set(\"Authorization\", this.token),\r\n params: params\r\n });\r\n }\r\n\r\n public postValidation(validation): Observable {\r\n return this.http.post(\r\n this.nhsApiUrl + 'validation/addValidation', JSON.stringify(validation), {\r\n headers: new HttpHeaders().set('Authorization', this.token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public getValidationResponses(reportId, year, submissionId, serviceItemId): Observable {\r\n return this.http.get(\r\n this.nhsApiUrl + 'validation/getValidationResponses', {\r\n headers: new HttpHeaders().set('Authorization', this.token),\r\n params: new HttpParams()\r\n .set('reportId', reportId.toString())\r\n .set('year', year.toString())\r\n .set('submissionId', submissionId.toString())\r\n .set('serviceItemId', serviceItemId.toString())\r\n }\r\n );\r\n }\r\n\r\n public addValidationResponse(validationResponse): Observable {\r\n return this.http.post(\r\n this.nhsApiUrl + 'validation/addValidationResponse', JSON.stringify(validationResponse), {\r\n headers: new HttpHeaders().set('Authorization', this.token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public deleteValidation(validationId: number): Observable {\r\n return this.http.delete(\r\n this.nhsApiUrl + 'validation/deleteValidation', {\r\n headers: new HttpHeaders().set('Authorization', this.token),\r\n params: new HttpParams().set('validationId', validationId.toString())\r\n }\r\n );\r\n } \r\n\r\n public editUserValidationNote(note: any): Observable {\r\n return this.http.post(\r\n this.nhsApiUrl + '/validation/editUserValidationNote', JSON.stringify(note), {\r\n headers: new HttpHeaders().set('Authorization', this.token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public editValidationStatus(validation: any): Observable {\r\n return this.http.post(\r\n this.nhsApiUrl + 'validation/changeValidationStatus', JSON.stringify(validation), {\r\n headers: new HttpHeaders().set('Authorization', this.token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public editValidationNote(validation: any): Observable {\r\n return this.http.post(\r\n this.nhsApiUrl + 'validation/editValidationNote', JSON.stringify(validation), {\r\n headers: new HttpHeaders().set('Authorization', this.token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public editValidationDescription(validation: any): Observable {\r\n return this.http.post(\r\n this.nhsApiUrl + 'validation/editValidationDescription', JSON.stringify(validation), {\r\n headers: new HttpHeaders().set('Authorization', this.token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n}","export class ValidationProject {\r\n\r\n public projectName: string;\r\n public tiers: any;\r\n public validations: any;\r\n public rawValidations: any;\r\n public filters: any = [\r\n { name: 'Status', key: 'status', options: [], selected: null },\r\n { name: 'Report name', key: 'reportName', options: [], selected: null },\r\n { name: 'Submission name', key: 'submissionName', options: [], selected: null },\r\n { name: 'Service', key: 'serviceItemName', options: [], selected: null },\r\n { name: 'Assignee', key: 'validatorName', options: [], selected: null },\r\n { name: 'Organisation', key: 'organisationName', options: [], selected: null }\r\n ]\r\n public parameters: any = [\r\n { id: 'N', desc: 'Numerator: Value included in sum of numerator parameters' },\r\n { id: 'D', desc: 'Denominator: Value included in sum of denominator parameters' },\r\n { id: 'F', desc: 'Factor: Multiply numerator by value' },\r\n { id: 'U', desc: 'Vacancy rate numerator: Decrease numerator by percentage of value' },\r\n { id: 'V', desc: 'Vacancy rate denominator: Decrease denominator by percentage of value' }\r\n ]\r\n\r\n constructor(data: any) {\r\n this.mapValidationProject(data);\r\n }\r\n\r\n private mapValidationProject(data: any): void {\r\n this.projectName = data.projectName;\r\n this.tiers = this.setTiers(data.tiers);\r\n this.validations = null;\r\n }\r\n\r\n public setTiers(tiers: any): any {\r\n\r\n let flatTiers = [];\r\n \r\n tiers.forEach(tier => { callRecursively(tier, 0) });\r\n\r\n function callRecursively(tier: any, level: number) {\r\n flatTiers.push(tier);\r\n if (tier.children) {\r\n level = level + 1;\r\n let icon = tier.reportId ? 'fa-chart-bar' : 'fa-layer-group';\r\n tier.type = tier.reportId ? 'Report Tier' : 'Parent Tier';\r\n tier.collapsed = false;\r\n tier.displayName = `\r\n
\r\n
\r\n
\r\n
\r\n ${ tier.name }\r\n
\r\n
\r\n `\r\n tier.children.forEach(child => {\r\n callRecursively(child, level);\r\n });\r\n }\r\n }\r\n\r\n return flatTiers;\r\n }\r\n\r\n public toggleChildren(children: any, collapse?: boolean): any {\r\n \r\n children.forEach(child => {\r\n child.collapsed = !child.collapsed;\r\n callRecursively(child, child.collapsed)\r\n });\r\n\r\n function callRecursively(tier: any, status: boolean) {\r\n if (tier.children && tier.children.length > 0) {\r\n tier.children.forEach(child => {\r\n child.collapsed = status;\r\n callRecursively(child, status);\r\n });\r\n }\r\n }\r\n\r\n return children;\r\n }\r\n\r\n public setReportDetails(details: any, selectedOptionId: number, year: number): any {\r\n // Replace option title\r\n let selectedOption = details.options.denominators.find(den => den.optionId == selectedOptionId);\r\n if (selectedOption) {\r\n details.reportName = this.replaceOptionTitle(details.reportName, selectedOption.titleOptionName);\r\n }\r\n // Replace placeholder\r\n details.reportName = this.replacePlaceholder(details.reportName, year);\r\n return details;\r\n }\r\n\r\n public chartTypeCheck(chartType: any): boolean {\r\n let allowedChartTypes = ['B1','B2','C1','C2', 'DB', 'BI2', 'CI2'];\r\n // disallowedChartTypes: YN/TYN, PI, RD, L1, DB, P1, D2, SB\r\n if (allowedChartTypes.includes(chartType.viewType)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n public setValidationsToTiers(validations: any, projectId: number, year: number): void {\r\n validations.forEach(vld => {\r\n // Set tier\r\n vld.tier = this.tiers.find(t => t.id == vld.tierId);\r\n // Replace question text placeholders\r\n let displayQuestionText = vld.nestedQuestionText ? `${ vld.questionText } - ${ vld.nestedQuestionText }` : vld.questionText;\r\n vld.displayQuestionText = this.replacePlaceholder(displayQuestionText, year);\r\n // Replace option title\r\n if (vld.titleOptionName) {\r\n vld.reportName = this.replaceOptionTitle(vld.reportName, vld.titleOptionName);\r\n } \r\n vld.reportName = this.replacePlaceholder(vld.reportName, year);\r\n // Strip submission code to three numbers\r\n vld.submissionCode = ('000' + vld.submissionCode).slice(-3);\r\n // Add status depending on response updates\r\n if ((vld.status !== 'validated' && vld.status !== 'confirmed') && (vld.createdAt > vld.lastUpdated || !vld.lastUpdated)) { vld.status = 'pending' };\r\n if (vld.status !== 'validated' && (vld.questionId && vld.createdAt < vld.lastUpdated)) { vld.status = 'updated' };\r\n if (vld.responseDeleted == 'Y') { vld.status = 'deleted' }\r\n // Ensure validation value is a number\r\n vld.validationValue = +vld.validationValue;\r\n // Create data collection link\r\n if (vld.questionGroupId && vld.serviceItemId > 0) {\r\n vld.dataCollectionLink = 'https://members.nhsbenchmarking.nhs.uk/data-collection/' \r\n + vld.questionGroupLevel + '/' \r\n + vld.submissionId + '/' \r\n + vld.validationYear + '/' \r\n + vld.serviceItemId + '?group=' \r\n + vld.questionGroupId;\r\n } else if (vld.questionGroupId && vld.serviceItemId == 0) {\r\n vld.dataCollectionLink = 'https://members.nhsbenchmarking.nhs.uk/data-collection/' \r\n + vld.questionGroupLevel + '/' \r\n + vld.submissionId + '/'\r\n + vld.validationYear + '?group=' \r\n + vld.questionGroupId;\r\n } else {\r\n vld.dataCollectionLink = null;\r\n }\r\n // Create outputs link\r\n vld.outputsLink = 'https://members.nhsbenchmarking.nhs.uk/outputs/' + projectId + '?tier=' + vld.tierId + '&option=' + vld.optionId\r\n });\r\n // Set all validations\r\n this.validations = validations;\r\n this.rawValidations = validations;\r\n // Add validation count to tiers\r\n this.tiers.forEach(tier => {\r\n tier.validations = validations.filter(v => v.tierId == tier.id);\r\n tier.pendingValidationsCount = validations.filter(v => v.tierId == tier.id && v.status == 'pending').length;\r\n })\r\n }\r\n\r\n public setValidationsToData(validations: any, data: any, chartType: string): any {\r\n data.forEach(point => {\r\n let validation = validations.find(vld => vld.submissionId == point.submissionId);\r\n point.y = point.response1;\r\n point.status = validation ? validation.status : null;\r\n switch (point.status) {\r\n case 'pending':\r\n point.color = '#005EB8'\r\n break;\r\n case 'updated':\r\n point.color = 'orangered'\r\n break;\r\n case 'validated':\r\n point.color = 'green'\r\n break;\r\n case 'deleted':\r\n point.color = 'darkred'\r\n break;\r\n default:\r\n point.color = null\r\n }\r\n });\r\n return data.filter(d => d.response1 !== null);\r\n }\r\n\r\n public setFilters(validations: any): void {\r\n this.filters.forEach(filter => {\r\n filter.options = validations.map(vld => vld[filter.key])\r\n .filter((value, index, self) => self.indexOf(value) === index)\r\n .sort((a, b) => { return a - b });\r\n });\r\n }\r\n\r\n public setAvailableResponses(responses: any, year: number, validation: any, responsePosted: boolean): any {\r\n responses.forEach(resp => {\r\n let displayQuestionText;\r\n if (resp.nestedQuestionText) {\r\n displayQuestionText = `${ resp.questionText } | ${ resp.nestedQuestionText }`\r\n // Add heading text, if available\r\n if (resp.nestedQuestionHeadingText) { displayQuestionText = `${ resp.questionText } | ${ resp.nestedQuestionText } | ${ resp.nestedQuestionHeadingText }` }\r\n } else {\r\n displayQuestionText = resp.questionText;\r\n }\r\n resp.displayQuestionText = this.replacePlaceholder(displayQuestionText, year);\r\n resp.validationId = validation.validationId;\r\n resp.submissionId = validation.submissionId;\r\n resp.parameterDesc = this.parameters.find(param => param.id == resp.parameterType).desc;\r\n if (validation.questionId && resp.questionId == validation.questionId && resp.questionPart == validation.questionPart) {\r\n resp.set = true;\r\n } else {\r\n resp.set = false;\r\n }\r\n });\r\n return responses;\r\n }\r\n\r\n private replacePlaceholder(text, year): string {\r\n if (text == null) { return text; }\r\n \r\n if (text.indexOf(\"|SINGLE_YEAR_CURRENT|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_CURRENT\\|\\*/g, year.toString());\r\n }\r\n if (text.indexOf(\"|SINGLE_YEAR_NEXT|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_NEXT\\|\\*/g, (year + 1).toString());\r\n }\r\n if (text.indexOf(\"|SINGLE_YEAR_PREVIOUS|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_PREVIOUS\\|\\*/g, (year - 1).toString());\r\n }\r\n if (text.indexOf(\"|SINGLE_YEAR_MINUS_2|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_MINUS_2\\|\\*/g, (year - 2).toString());\r\n }\r\n if (text.indexOf(\"|SINGLE_YEAR_MINUS_3|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_MINUS_3\\|\\*/g, (year - 3).toString());\r\n }\r\n if (text.indexOf(\"|DOUBLE_YEAR_NEXT|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_NEXT\\|\\*/g, (year).toString() + \"/\" + (year + 1).toString().substring(2, 4));\r\n } \r\n if (text.indexOf(\"|DOUBLE_YEAR_CURRENT|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_CURRENT\\|\\*/g, (year - 1).toString() + \"/\" + (year).toString().substring(2, 4));\r\n } \r\n if (text.indexOf(\"|DOUBLE_YEAR_PREVIOUS|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_PREVIOUS\\|\\*/g, (year - 2).toString() + \"/\" + (year - 1).toString().substring(2, 4));\r\n }\r\n if (text.indexOf(\"|DOUBLE_YEAR_MINUS_2|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_MINUS_2\\|\\*/g, (year - 3).toString() + \"/\" + (year - 2).toString().substring(2, 4));\r\n }\r\n if (text.indexOf(\"|DOUBLE_YEAR_MINUS_3|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_MINUS_3\\|\\*/g, (year - 4).toString() + \"/\" + (year - 3).toString().substring(2, 4));\r\n }\r\n text = text.replace(/ /g, \"\");\r\n return text;\r\n }\r\n\r\n private replaceOptionTitle(text, optionTitle): string {\r\n if (text.indexOf(\"|OPTION_TITLE|\") > 0) {\r\n text = text.replace(/\\*\\|OPTION_TITLE\\|\\*/g, optionTitle);\r\n }\r\n return text;\r\n }\r\n\r\n public mean(values: Array): number {\r\n values = values.filter(x => x || x == 0);\r\n\r\n if (values.length < 1) return null;\r\n\r\n let sum = values.reduce((previous, current) => current += previous);\r\n\r\n return sum / values.length;\r\n }\r\n\r\n public median(values: Array): number {\r\n values = values.filter(x => x || x == 0);\r\n\r\n if (values.length < 1) return null;\r\n\r\n values.sort((a, b) => a - b);\r\n\r\n let lowMiddle = Math.floor((values.length - 1) / 2);\r\n let highMiddle = Math.ceil((values.length - 1) / 2);\r\n\r\n return (values[lowMiddle] + values[highMiddle]) / 2;\r\n }\r\n\r\n}","module.exports = \"
\\r\\n Loading validation points\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

{{ projectDetails.projectName }}

\\r\\n

Toolkit Validation

\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
StatusChart (Point)QuestionResponseActions
\\r\\n v.lastUpdated || !v.lastUpdated)\\\">\\r\\n Pending\\r\\n \\r\\n \\r\\n Updated\\r\\n \\r\\n \\r\\n Validated\\r\\n \\r\\n
\\r\\n {{ v.reportName }}\\r\\n ({{ v.validationDescription }})\\r\\n
\\r\\n
{{ v.serviceItemName }}
\\r\\n
\\r\\n \\r\\n Cannot be linked to a question\\r\\n \\r\\n \\r\\n Link to Question\\r\\n \\r\\n
\\r\\n
\\r\\n Cancel\\r\\n
\\r\\n
\\r\\n {{ r.questionText }}
\\r\\n {{ r.nestedQuestionText }}
\\r\\n Current response: {{ r.response }}\\r\\n
\\r\\n
\\r\\n 0\\\">\\r\\n \\r\\n {{ v.questionText }} - {{ v.nestedQuestionText }}\\r\\n \\r\\n \\r\\n {{ v.questionText }} - {{ v.nestedQuestionText }}\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n {{ v.response }}\\r\\n \\r\\n \\r\\n -\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
0\\\" id=\\\"validationNote\\\">\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\"","module.exports = \"#loading {\\n margin-top: 25vh;\\n text-align: center;\\n font-size: 1.5em;\\n font-weight: 600; }\\n\\nh1 {\\n font-weight: 600;\\n margin-bottom: 0; }\\n\\nh2 {\\n font-weight: 600;\\n font-size: 1.5em;\\n line-height: 1.25em;\\n margin-bottom: 0.5em; }\\n\\nh2 small {\\n font-size: 0.75em; }\\n\\nh3 {\\n font-weight: 600;\\n font-size: 1.75em;\\n color: #768691; }\\n\\n.link {\\n font-weight: 600;\\n color: black; }\\n\\n#fullValidation {\\n background-color: #F8F9F9;\\n padding-bottom: 5em;\\n min-height: 75vh; }\\n\\n.validation-group {\\n background-color: white;\\n border: 1px solid black;\\n border-radius: 5px;\\n padding: 0.5em 2em;\\n margin: 1em 0; }\\n\\n.filters {\\n margin: 1.5em 0; }\\n\\n.filters .btn {\\n margin-right: 0.5em; }\\n\\n.btn-group {\\n margin-top: 1.5em; }\\n\\n.btn-default {\\n border: none;\\n font-weight: 600; }\\n\\n.btn-default i {\\n margin-right: 0.5em; }\\n\\n.response-add {\\n background-color: black;\\n color: white;\\n padding: 0.25em 0.5em;\\n border-radius: 3px; }\\n\\n.response-add:hover {\\n cursor: pointer; }\\n\\n.response {\\n background-color: #F8F9F9;\\n border: 1px solid #768691;\\n padding: 0.25em 0.5em;\\n border-radius: 3px;\\n margin-top: 0.5em; }\\n\\n.response:hover {\\n background-color: #768691;\\n cursor: pointer; }\\n\\n.status {\\n font-size: 0.8em;\\n text-transform: uppercase;\\n color: white;\\n padding: 2px 4px;\\n border-radius: 2px; }\\n\\n.service-item {\\n font-size: 0.8em;\\n font-weight: 600;\\n margin-right: 0.25em;\\n text-transform: uppercase;\\n padding: 2px 4px;\\n border-radius: 2px;\\n border: 1px solid #768692;\\n color: #768692;\\n display: inline-block;\\n margin-top: 0.25em; }\\n\\n.-updated {\\n background-color: orangered; }\\n\\n.-pending {\\n background-color: #768691; }\\n\\n.-validated {\\n background-color: green; }\\n\\n.actions {\\n text-align: center; }\\n\\n.actions .fas,\\n.actions .far {\\n margin: 0 0.3em;\\n font-size: 1.15em; }\\n\\n.actions .fas:hover,\\n.actions .far:hover {\\n cursor: pointer; }\\n\\n.-duplicate {\\n color: #768692; }\\n\\n.-delete {\\n color: red; }\\n\\n.-delete:hover {\\n color: darkred; }\\n\\n.-validate {\\n color: green; }\\n\\n.-validate:hover {\\n color: darkgreen; }\\n\\n.-unvalidate {\\n color: #768692; }\\n\\n.-notes {\\n color: black; }\\n\\n#validationNote {\\n position: fixed;\\n top: 15vh;\\n right: 2em;\\n width: 15%;\\n z-index: 1000;\\n background-color: black;\\n padding: 1em;\\n border-radius: 5px; }\\n\\n#validationNote .btn {\\n margin-right: 0.25em; }\\n\\n/deep/ angular2csv > button {\\n color: transparent;\\n font-size: 0px;\\n background-color: #F8F9F9;\\n border: none;\\n float: right; }\\n\\n/deep/ angular2csv > button::before {\\n content: \\\"Download as .csv\\\";\\n display: block;\\n color: #333;\\n font-weight: 700;\\n font-size: 14px;\\n line-height: inherit; }\\n\\n/deep/ angular2csv > button::before:hover {\\n background-color: #e6e5e5; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3V0cHV0cy9hY3RpdmUtYWRtaW4vQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXGFwcFxcb3V0cHV0c1xcYWN0aXZlLWFkbWluXFxhY3RpdmUtYWRtaW4uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL291dHB1dHMvYWN0aXZlLWFkbWluL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxfdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSxnQkFBZ0I7RUFDaEIsa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQixnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxnQkFBZ0I7RUFDaEIsZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksZ0JBQWdCO0VBQ2hCLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsb0JBQW9CLEVBQUE7O0FBR3hCO0VBQ0ksaUJBQWlCLEVBQUE7O0FBR3JCO0VBQ0ksZ0JBQWdCO0VBQ2hCLGlCQUFpQjtFQUNqQixjQUFjLEVBQUE7O0FBR2xCO0VBQ0ksZ0JBQWdCO0VBQ2hCLFlBQVksRUFBQTs7QUFHaEI7RUFDSSx5QkFBeUI7RUFDekIsbUJBQW1CO0VBQ25CLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLHVCQUF1QjtFQUN2Qix1QkFBdUI7RUFDdkIsa0JBQWtCO0VBQ2xCLGtCQUFrQjtFQUNsQixhQUFhLEVBQUE7O0FBR2pCO0VBQ0ksZUFBZSxFQUFBOztBQUduQjtFQUNJLG1CQUFtQixFQUFBOztBQUd2QjtFQUNJLGlCQUFpQixFQUFBOztBQUdyQjtFQUNJLFlBQVk7RUFDWixnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxtQkFBbUIsRUFBQTs7QUFHdkI7RUFDSSx1QkFBdUI7RUFDdkIsWUFBWTtFQUNaLHFCQUFxQjtFQUNyQixrQkFBa0IsRUFBQTs7QUFHdEI7RUFDSSxlQUFlLEVBQUE7O0FBR25CO0VBQ0kseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6QixxQkFBcUI7RUFDckIsa0JBQWtCO0VBQ2xCLGlCQUFpQixFQUFBOztBQUdyQjtFQUNJLHlCQUF5QjtFQUN6QixlQUFlLEVBQUE7O0FBR25CO0VBQ0ksZ0JBQWdCO0VBQ2hCLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1osZ0JBQWdCO0VBQ2hCLGtCQUFrQixFQUFBOztBQUd0QjtFQUNJLGdCQUFnQjtFQUNoQixnQkFBZ0I7RUFDaEIsb0JBQW9CO0VBQ3BCLHlCQUF5QjtFQUN6QixnQkFBZ0I7RUFDaEIsa0JBQWtCO0VBQ2xCLHlCQ3pHYztFRDBHZCxjQzFHYztFRDJHZCxxQkFBcUI7RUFDckIsa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksMkJBQTJCLEVBQUE7O0FBRy9CO0VBQ0kseUJBQ0osRUFBQTs7QUFFQTtFQUNJLHVCQUF1QixFQUFBOztBQUczQjtFQUNJLGtCQUFrQixFQUFBOztBQUd0Qjs7RUFFSSxlQUFlO0VBQ2YsaUJBQ0osRUFBQTs7QUFFQTs7RUFFSSxlQUFlLEVBQUE7O0FBR25CO0VBQ0ksY0MzSWMsRUFBQTs7QUQ4SWxCO0VBQ0ksVUFBVSxFQUFBOztBQUdkO0VBQ0ksY0FBYyxFQUFBOztBQUdsQjtFQUNJLFlBQVksRUFBQTs7QUFHaEI7RUFDSSxnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxjQy9KYyxFQUFBOztBRGtLbEI7RUFDSSxZQUFZLEVBQUE7O0FBR2hCO0VBQ0ksZUFBZTtFQUNmLFNBQVM7RUFDVCxVQUFVO0VBQ1YsVUFBVTtFQUNWLGFBQWE7RUFDYix1QkFBdUI7RUFDdkIsWUFBWTtFQUNaLGtCQUFrQixFQUFBOztBQUd0QjtFQUNJLG9CQUFvQixFQUFBOztBQUd4QjtFQUNJLGtCQUFrQjtFQUNsQixjQUFjO0VBQ2QseUJBQXlCO0VBQ3pCLFlBQVk7RUFDWixZQUFZLEVBQUE7O0FBR2hCO0VBQ0ksMkJBQTJCO0VBQzNCLGNBQWM7RUFDZCxXQUFXO0VBQ1gsZ0JBQWdCO0VBQ2hCLGVBQWU7RUFDZixvQkFBb0IsRUFBQTs7QUFHeEI7RUFDSSx5QkFDSixFQUFBIiwiZmlsZSI6InNyYy9hcHAvb3V0cHV0cy9hY3RpdmUtYWRtaW4vYWN0aXZlLWFkbWluLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vdmFyaWFibGVzJztcclxuXHJcbiNsb2FkaW5nIHtcclxuICAgIG1hcmdpbi10b3A6IDI1dmg7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBmb250LXNpemU6IDEuNWVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuaDEge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbn1cclxuXHJcbmgyIHtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBmb250LXNpemU6IDEuNWVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuMjVlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG59XHJcblxyXG5oMiBzbWFsbCB7XHJcbiAgICBmb250LXNpemU6IDAuNzVlbTtcclxufVxyXG5cclxuaDMge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIGZvbnQtc2l6ZTogMS43NWVtO1xyXG4gICAgY29sb3I6ICM3Njg2OTE7XHJcbn1cclxuXHJcbi5saW5rIHtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBjb2xvcjogYmxhY2s7XHJcbn1cclxuXHJcbiNmdWxsVmFsaWRhdGlvbiB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjhGOUY5O1xyXG4gICAgcGFkZGluZy1ib3R0b206IDVlbTtcclxuICAgIG1pbi1oZWlnaHQ6IDc1dmg7XHJcbn1cclxuXHJcbi52YWxpZGF0aW9uLWdyb3VwIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7XHJcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgICBwYWRkaW5nOiAwLjVlbSAyZW07XHJcbiAgICBtYXJnaW46IDFlbSAwO1xyXG59XHJcblxyXG4uZmlsdGVycyB7XHJcbiAgICBtYXJnaW46IDEuNWVtIDA7XHJcbn1cclxuXHJcbi5maWx0ZXJzIC5idG4ge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufVxyXG5cclxuLmJ0bi1ncm91cCB7XHJcbiAgICBtYXJnaW4tdG9wOiAxLjVlbTtcclxufVxyXG5cclxuLmJ0bi1kZWZhdWx0IHtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi5idG4tZGVmYXVsdCBpIHtcclxuICAgIG1hcmdpbi1yaWdodDogMC41ZW07XHJcbn1cclxuXHJcbi5yZXNwb25zZS1hZGQge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgICBwYWRkaW5nOiAwLjI1ZW0gMC41ZW07XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbn1cclxuXHJcbi5yZXNwb25zZS1hZGQ6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4ucmVzcG9uc2Uge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0Y4RjlGOTtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICM3Njg2OTE7XHJcbiAgICBwYWRkaW5nOiAwLjI1ZW0gMC41ZW07XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjVlbTtcclxufVxyXG5cclxuLnJlc3BvbnNlOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICM3Njg2OTE7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5zdGF0dXMge1xyXG4gICAgZm9udC1zaXplOiAwLjhlbTtcclxuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgICBwYWRkaW5nOiAycHggNHB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xyXG59XHJcblxyXG4uc2VydmljZS1pdGVtIHtcclxuICAgIGZvbnQtc2l6ZTogMC44ZW07XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjI1ZW07XHJcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgcGFkZGluZzogMnB4IDRweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRuaHMtZ3JleTtcclxuICAgIGNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjI1ZW07XHJcbn1cclxuXHJcbi4tdXBkYXRlZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2VyZWQ7XHJcbn1cclxuXHJcbi4tcGVuZGluZyB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzY4NjkxXHJcbn1cclxuXHJcbi4tdmFsaWRhdGVkIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuO1xyXG59XHJcblxyXG4uYWN0aW9ucyB7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbn1cclxuXHJcbi5hY3Rpb25zIC5mYXMsXHJcbi5hY3Rpb25zIC5mYXIge1xyXG4gICAgbWFyZ2luOiAwIDAuM2VtO1xyXG4gICAgZm9udC1zaXplOiAxLjE1ZW1cclxufVxyXG5cclxuLmFjdGlvbnMgLmZhczpob3ZlcixcclxuLmFjdGlvbnMgLmZhcjpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi4tZHVwbGljYXRlIHtcclxuICAgIGNvbG9yOiAkbmhzLWdyZXk7XHJcbn1cclxuXHJcbi4tZGVsZXRlIHtcclxuICAgIGNvbG9yOiByZWQ7XHJcbn1cclxuXHJcbi4tZGVsZXRlOmhvdmVyIHtcclxuICAgIGNvbG9yOiBkYXJrcmVkO1xyXG59XHJcblxyXG4uLXZhbGlkYXRlIHtcclxuICAgIGNvbG9yOiBncmVlbjtcclxufVxyXG5cclxuLi12YWxpZGF0ZTpob3ZlciB7XHJcbiAgICBjb2xvcjogZGFya2dyZWVuO1xyXG59XHJcblxyXG4uLXVudmFsaWRhdGUge1xyXG4gICAgY29sb3I6ICRuaHMtZ3JleTtcclxufVxyXG5cclxuLi1ub3RlcyB7XHJcbiAgICBjb2xvcjogYmxhY2s7XHJcbn1cclxuXHJcbiN2YWxpZGF0aW9uTm90ZSB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB0b3A6IDE1dmg7XHJcbiAgICByaWdodDogMmVtO1xyXG4gICAgd2lkdGg6IDE1JTtcclxuICAgIHotaW5kZXg6IDEwMDA7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcclxuICAgIHBhZGRpbmc6IDFlbTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcclxufVxyXG5cclxuI3ZhbGlkYXRpb25Ob3RlIC5idG4ge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjI1ZW07XHJcbn1cclxuXHJcbi9kZWVwLyBhbmd1bGFyMmNzdiA+IGJ1dHRvbiB7XHJcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICBmb250LXNpemU6IDBweDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNGOEY5Rjk7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBmbG9hdDogcmlnaHQ7XHJcbn1cclxuICBcclxuL2RlZXAvIGFuZ3VsYXIyY3N2ID4gYnV0dG9uOjpiZWZvcmUge1xyXG4gICAgY29udGVudDogXCJEb3dubG9hZCBhcyAuY3N2XCI7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIGNvbG9yOiAjMzMzO1xyXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xyXG59XHJcblxyXG4vZGVlcC8gYW5ndWxhcjJjc3YgPiBidXR0b246OmJlZm9yZTpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNWU1XHJcbn0iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiXX0= */\"","import { Component, OnChanges, Input, Output, EventEmitter } from '@angular/core';\r\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { ValidationService } from '../../utilities/services/validation.service'\r\nimport { DataService } from '../../utilities/services/data.service'\r\n\r\nimport { UniquePipe } from 'ngx-pipes';\r\n\r\n@Component({\r\n selector: 'app-active-admin',\r\n templateUrl: './active-admin.component.html',\r\n styleUrls: ['./active-admin.component.scss'],\r\n providers: [ UniquePipe ]\r\n})\r\nexport class ActiveAdminComponent implements OnChanges {\r\n @Input() fullValidation;\r\n @Input() projectDetails;\r\n @Input() projectId;\r\n @Output() validationsEmitter: EventEmitter = new EventEmitter();\r\n @Output() fullValidationEmitter: EventEmitter = new EventEmitter();\r\n validations: any = [];\r\n responses: any = [];\r\n activeValidation: number;\r\n mailtoPl: string; mailtoDpls: string;\r\n showValidated: boolean = true;\r\n validationNote: FormGroup;\r\n selectedValidation: number;\r\n currentValidation: number;\r\n loading: boolean;\r\n csvOptions = {\r\n fieldSeparator: ',',\r\n quoteStrings: '\"',\r\n decimalseparator: '.',\r\n showLabels: false,\r\n headers: [ 'Status', 'Tier ID', 'Report ID', 'Report Name', 'Metric Position', 'Submission Code', 'Submission ID', 'Submission Name', 'Service Name', 'Question ID', 'Question Part', 'Question Text', 'Question Response', 'Notes', 'Validator', 'Data Collection Link', 'Chart Link' ],\r\n useBom: false,\r\n removeNewLines: true,\r\n keys: [ 'status', 'tierId', 'reportId', 'reportName', 'validationValue', 'submissionCode', 'submissionId', 'submissionName', 'serviceItemName', 'questionId', 'questionPart', 'questionText', 'response', 'notes', 'validatorName', 'dataCollectionLink', 'chartLink' ]\r\n };\r\n\r\n constructor(\r\n private validationService: ValidationService,\r\n private dataService: DataService,\r\n private router: Router,\r\n public unique: UniquePipe,\r\n private fb: FormBuilder\r\n ) { }\r\n\r\n ngOnChanges() {\r\n this.getValidations(this.projectId);\r\n }\r\n\r\n getValidations(projectId) {\r\n // TODO: Add year selector to HTML\r\n let year = 2022;\r\n this.loading = true;\r\n this.validationService.getValidations(projectId, year).subscribe(\r\n r => {\r\n //Might be better placed in the API - might be better to do it without consent...\r\n r.data.validations.forEach(e => {\r\n if (e.questionId) {\r\n if (e.serviceItemId > 0) {\r\n e.dataCollectionLink = 'Data Collection Link: https://members.nhsbenchmarking.nhs.uk/data-collection/' + e.questionGroupLevel + '/' + e.submissionId + '/' + e.validationYear + '/' + e.serviceItemId + '?group=' + + e.questionGroupId;\r\n } else {\r\n e.dataCollectionLink = 'Data Collection Link: https://members.nhsbenchmarking.nhs.uk/data-collection/' + e.questionGroupLevel + '/' + e.submissionId + '/' + e.validationYear + '?group=' + + e.questionGroupId;\r\n }\r\n }\r\n else {\r\n e.dataCollectionLink = '';\r\n }\r\n\r\n if (e.status === 'null' || e.status === null) { e.status = '' }\r\n if (e.notes === 'null' || e.notes === null) { e.notes = '' }\r\n\r\n e.chartLink = 'Chart Link: https://members.nhsbenchmarking.nhs.uk/outputs/' + this.projectId + '?tier=' + e.tierId;\r\n });\r\n \r\n this.validations = r.data.validations;\r\n\r\n // Add group name\r\n this.validations.forEach(v => {\r\n v.groupName = v.submissionName + ' (' + ('000' + v.submissionCode).slice(-3) + ')'\r\n })\r\n\r\n this.validationsEmitter.emit(this.validations);\r\n if (this.validations.length === 0) {\r\n this.fullValidationEmitter.emit(false);\r\n }\r\n this.loading = false;\r\n },\r\n e => {\r\n console.log(e);\r\n this.loading = false;\r\n }\r\n )\r\n }\r\n\r\n toggleValidated() {\r\n if (this.showValidated) {\r\n this.validations = this.validations.filter(v => v.status != \"validated\");\r\n this.showValidated = false;\r\n } else {\r\n this.getValidations(this.projectId);\r\n this.showValidated = true;\r\n }\r\n }\r\n\r\n getValidationResponses(validationId, reportId, year, submissionId, serviceItemId) {\r\n this.validationService.getValidationResponses(reportId, year, submissionId, serviceItemId).subscribe(\r\n r => {\r\n this.responses = r.data.responses;\r\n this.activeValidation = validationId;\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n }\r\n\r\n saveResponse(validationId, submissionId, questionId, questionPart, serviceItemId) {\r\n let validationResponse = {\r\n validationId: validationId, \r\n submissionId: submissionId, \r\n questionId: questionId, \r\n questionPart: questionPart, \r\n serviceItemId: serviceItemId\r\n }\r\n this.validationService.addValidationResponse(validationResponse).subscribe(\r\n r => {\r\n this.validations = this.validations.filter(v => v.validationId !- validationId);\r\n this.getValidation(validationId);\r\n this.responses = [];\r\n this.activeValidation = null;\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n }\r\n\r\n duplicatePoint(point){\r\n let validation = {\r\n validationId: undefined,\r\n year: point.validationYear,\r\n //userId: this.dataService.getUser().userId,\r\n tierId: point.tierId,\r\n submissionCode: point.submissionCode,\r\n validationValue: point.validationValue,\r\n serviceItemId: point.serviceItemId\r\n }\r\n this.validationService.addValidation(validation).subscribe(\r\n r => {\r\n this.getValidation(r.data.newValidationId);\r\n },\r\n e => {\r\n console.log(e)\r\n }\r\n )\r\n }\r\n\r\n getValidation(validationId) {\r\n this.validationService.getValidation(validationId).subscribe(\r\n r => {\r\n var newValidation = r.data.validation[0];\r\n var newValidations = [];\r\n this.validations.forEach(v => {\r\n newValidations.push(v);\r\n });\r\n newValidations.push(newValidation);\r\n this.validations = newValidations;\r\n },\r\n e => {\r\n console.log(e)\r\n }\r\n )\r\n }\r\n\r\n changeValidationStatus(validationId, status) {\r\n let validation = {\r\n validationId: validationId,\r\n status: status\r\n }\r\n this.validationService.changeValidationStatus(validation).subscribe(\r\n r => {\r\n if (status === undefined) {\r\n this.validations.filter(v => v.validationId === validationId)[0].status = null;\r\n } else {\r\n this.validations.filter(v => v.validationId === validationId)[0].status = status;\r\n }\r\n \r\n },\r\n e => {\r\n console.log(e)\r\n }\r\n )\r\n }\r\n\r\n // NOT IN USE\r\n // changeValidationVisibility(validationId, visibility) {\r\n // let validation = {\r\n // validationId: validationId,\r\n // visibility: visibility\r\n // }\r\n // this.validationService.changeValidationVisibility(validation).subscribe(\r\n // r => {\r\n // this.validations = [];\r\n // this.getValidations(this.projectId);\r\n // },\r\n // e => {\r\n // console.log(e)\r\n // }\r\n // )\r\n // }\r\n\r\n buildValidationForm(validationId, validationResponseId) {\r\n this.selectedValidation = validationId;\r\n this.currentValidation = validationResponseId;\r\n let note = this.validations.filter(v => v.validationResponseId === validationResponseId)[0].notes;\r\n this.validationNote = this.fb.group({ \r\n validationNote: ['', [Validators.required, Validators.maxLength(200)]]\r\n });\r\n this.validationNote.setValue({\r\n validationNote: note\r\n });\r\n }\r\n\r\n editValidationNote() {\r\n let validation = {\r\n validationResponseId: this.currentValidation,\r\n note: this.validationNote.value.validationNote\r\n }\r\n this.validationService.editValidationNote(validation).subscribe(\r\n r => {\r\n this.validations.filter(v => v.validationId === this.selectedValidation)[0].notes = this.validationNote.value.validationNote;\r\n this.currentValidation = null;\r\n this.selectedValidation = null;\r\n },\r\n e => {\r\n console.log(e)\r\n }\r\n )\r\n }\r\n\r\n emailLeads(validationId, projectId, year, submissionId){\r\n let body = [];\r\n let validations = this.validations.filter(v => v.submissionId === submissionId)\r\n validations = this.unique.transform(validations, 'questionId');\r\n validations.forEach((e) => {\r\n if (e.questionId && e.status != 'validated') {\r\n body.push(\r\n e.questionText + '%0ACurrent Value: ' + e.response + \r\n '%0AData Collection Link: https://members.nhsbenchmarking.nhs.uk/data-collection/' + e.questionGroupLevel.toLowerCase() + '/' + e.submissionId + '/' + e.validationYear + '?group=' + + e.questionGroupId + \r\n '%0AChart Link: https://members.nhsbenchmarking.nhs.uk/outputs/' + this.projectId + '?tier=' + e.tierId +\r\n '%0ANotes: ' + e.notes + '%0A%0A'\r\n )\r\n }\r\n })\r\n let projectLeadEmail = this.validations.filter(v => v.validationId === validationId)[0].projectLeadEmail;\r\n this.mailtoPl = 'Email PL (only)'\r\n let noDeputyProjectLeads = this.validations.filter(v => v.validationId === validationId)[0].deputyProjectLeads;\r\n if (noDeputyProjectLeads > 0) {\r\n this.validationService.getDeputyProjectLeads(projectId, year, submissionId).subscribe(\r\n r => {\r\n let deputyProjectLeads = r.data.map(d => d.email).join(';');\r\n this.mailtoDpls = 'Email PL and DPLs'\r\n },\r\n e => {\r\n console.log(e)\r\n }\r\n )\r\n }\r\n }\r\n\r\n deleteValidation(validationId) {\r\n if (confirm(\"Are you sure you want to delete this validation? This action cannot be undone.\")) {\r\n this.validationService.deleteValidation(validationId).subscribe(\r\n r => {\r\n this.validations = this.validations.filter(v => v.validationId !== validationId);\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n }\r\n }\r\n\r\n navChart(tierId) {\r\n this.router.navigate(['/outputs', this.projectId], { queryParams: { tier: tierId } });\r\n this.fullValidation = false;\r\n }\r\n\r\n}","module.exports = \"
\\r\\n
Edit Report Details
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
Changes to report title will impact multiple years. Please remember to use placeholders instead of dates; these can be copied from the helper pop-up below.
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n

\\r\\n Available Placeholders
\\r\\n Click on a placeholder below to copy to clipboard\\r\\n

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

{{ p.example }}*|{{ p.name }}|*

\\r\\n
\\r\\n
\\r\\n {{ copiedMessage }}\\r\\n
\\r\\n
\\r\\n \\r\\n Placeholders\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ errorMessage }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"#placeholderHelp {\\n z-index: 1000;\\n background-color: rgba(0, 0, 0, 0.95);\\n border-radius: 4px;\\n color: white;\\n padding: 1em;\\n position: absolute;\\n top: 3em;\\n right: 1em;\\n text-align: left; }\\n\\n#placeholderHelp p {\\n font-size: 14px; }\\n\\n#placeholderHelp span {\\n margin-right: 0.5em;\\n padding: 2px 4px;\\n border-radius: 2px;\\n background-color: white;\\n color: black;\\n font-weight: 600; }\\n\\n.placeholder i {\\n opacity: 0.5;\\n margin: 0 2px;\\n font-style: normal; }\\n\\n.placeholder:hover {\\n cursor: pointer; }\\n\\n.placeholder-copied {\\n background-color: green;\\n padding: 0.25em;\\n font-weight: bold;\\n margin-top: 0.5em;\\n border-radius: 3px; }\\n\\n.btn-admin {\\n background-color: transparent; }\\n\\n.error {\\n margin-top: 1em;\\n text-align: left; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3V0cHV0cy9lZGl0LXJlcG9ydC9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxvdXRwdXRzXFxlZGl0LXJlcG9ydFxcZWRpdC1yZXBvcnQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSxhQUFhO0VBQ2IscUNBQWtDO0VBQ2xDLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixRQUFRO0VBQ1IsVUFBVTtFQUNWLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxtQkFBbUI7RUFDbkIsZ0JBQWdCO0VBQ2hCLGtCQUFrQjtFQUNsQix1QkFBdUI7RUFDdkIsWUFBWTtFQUNaLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLFlBQVk7RUFDWixhQUFhO0VBQ2Isa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksZUFBZSxFQUFBOztBQUduQjtFQUNJLHVCQUF1QjtFQUN2QixlQUFlO0VBQ2YsaUJBQWlCO0VBQ2pCLGlCQUFpQjtFQUNqQixrQkFBa0IsRUFBQTs7QUFHdEI7RUFDSSw2QkFBNkIsRUFBQTs7QUFHakM7RUFDSSxlQUFlO0VBQ2YsZ0JBQWdCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9vdXRwdXRzL2VkaXQtcmVwb3J0L2VkaXQtcmVwb3J0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vdmFyaWFibGVzJztcclxuXHJcbiNwbGFjZWhvbGRlckhlbHAge1xyXG4gICAgei1pbmRleDogMTAwMDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsMC45NSk7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgICBwYWRkaW5nOiAxZW07XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDNlbTtcclxuICAgIHJpZ2h0OiAxZW07XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG59XHJcblxyXG4jcGxhY2Vob2xkZXJIZWxwIHAge1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG59XHJcblxyXG4jcGxhY2Vob2xkZXJIZWxwIHNwYW4ge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxuICAgIHBhZGRpbmc6IDJweCA0cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICAgIGNvbG9yOiBibGFjaztcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi5wbGFjZWhvbGRlciBpIHtcclxuICAgIG9wYWNpdHk6IDAuNTtcclxuICAgIG1hcmdpbjogMCAycHg7XHJcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XHJcbn1cclxuXHJcbi5wbGFjZWhvbGRlcjpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5wbGFjZWhvbGRlci1jb3BpZWQge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47XHJcbiAgICBwYWRkaW5nOiAwLjI1ZW07XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIG1hcmdpbi10b3A6IDAuNWVtO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG59XHJcblxyXG4uYnRuLWFkbWluIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG59XHJcblxyXG4uZXJyb3Ige1xyXG4gICAgbWFyZ2luLXRvcDogMWVtO1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxufSJdfQ== */\"","import { Component, OnChanges, Input, Output, EventEmitter } from '@angular/core';\r\nimport { FormGroup, Validators, FormControl } from '@angular/forms';\r\nimport { Constants } from 'app/utilities/constants/constants';\r\nimport { MemberService } from 'app/utilities/services/member.service';\r\n\r\n@Component({\r\n selector: 'app-edit-report',\r\n templateUrl: './edit-report.component.html',\r\n styleUrls: ['./edit-report.component.scss']\r\n})\r\nexport class EditReportComponent implements OnChanges {\r\n \r\n @Input() tierDetails;\r\n @Input() reportDetails;\r\n @Input() editReportModal;\r\n\r\n currentYear = new Date().getFullYear();\r\n currentYearShort: number = +this.currentYear.toString().slice(-2);\r\n\r\n editReportForm: FormGroup;\r\n\r\n placeholderHelp: boolean = false;\r\n placeholders = Constants.placeholders;\r\n\r\n errorMessage: string;\r\n copiedMessage: string;\r\n\r\n constructor(private memberService: MemberService,) {\r\n this.placeholders \r\n }\r\n\r\n ngOnChanges() {\r\n if (this.tierDetails && this.reportDetails) {\r\n this.buildEditReportForm(this.tierDetails, this.reportDetails);\r\n }\r\n }\r\n\r\n buildEditReportForm(tier: any, report: any) {\r\n this.editReportForm = new FormGroup({\r\n reportName: new FormControl(report.reportName, [Validators.required, Validators.minLength(5)]),\r\n decPlaces: new FormControl(report.decPlaces),\r\n formatModifier: new FormControl(report.formatModifier),\r\n maxValue: new FormControl(report.maxValue),\r\n hideCodes: new FormControl(report.hideCodes)\r\n });\r\n }\r\n\r\n updateReport(editReportForm: any) {\r\n let reportId = this.tierDetails.reportId;\r\n let responses = editReportForm.value;\r\n\r\n if (responses) {\r\n this.memberService.editReportDetails(reportId, responses).subscribe(\r\n success => {\r\n // Hide modal\r\n this.editReportModal.hide();\r\n this.copiedMessage = null;\r\n },\r\n error => {\r\n console.log(error);\r\n this.errorMessage = 'There has been an error saving the report details. Please refresh the page and try again or contact the IT Team.'\r\n }\r\n )\r\n }\r\n }\r\n\r\n copyToClipboard(id: string) {\r\n var range = document.createRange();\r\n range.selectNode(document.getElementById(id));\r\n window.getSelection().removeAllRanges();\r\n window.getSelection().addRange(range);\r\n document.execCommand('copy');\r\n window.getSelection().removeAllRanges();\r\n this.copiedMessage = 'Copied to clipboard'\r\n }\r\n\r\n}","module.exports = \"
\\r\\n
Edit Tier Name
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n Any tier can be edited by selecting it in the tree structure.\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Save and Reload\\r\\n \\r\\n \\r\\n Cancel\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ errorMessage }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \".error {\\n margin-top: 1em;\\n text-align: left; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3V0cHV0cy9lZGl0LXRpZXIvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXGFwcFxcb3V0cHV0c1xcZWRpdC10aWVyXFxlZGl0LXRpZXIuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDRSxlQUFlO0VBQ2YsZ0JBQWdCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9vdXRwdXRzL2VkaXQtdGllci9lZGl0LXRpZXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IFwiLi4vLi4vLi4vdmFyaWFibGVzXCI7XHJcblxyXG4uZXJyb3Ige1xyXG4gIG1hcmdpbi10b3A6IDFlbTtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG59XHJcbiJdfQ== */\"","import { Component, OnChanges, Input, Output, EventEmitter } from '@angular/core';\r\nimport { FormGroup, Validators, FormControl } from '@angular/forms';\r\nimport { MemberService } from 'app/utilities/services/member.service';\r\n\r\n@Component({\r\n selector: 'app-edit-tier',\r\n templateUrl: './edit-tier.component.html',\r\n styleUrls: ['./edit-tier.component.scss']\r\n})\r\nexport class EditTierComponent implements OnChanges {\r\n\r\n @Input() reportDetails;\r\n @Input() editTierModal;\r\n @Input() tiersEditParent;\r\n\r\n editTierForm: FormGroup;\r\n\r\n errorMessage: string;\r\n\r\n constructor(private memberService: MemberService,) {\r\n }\r\n\r\n @Output() valueChange = new EventEmitter();\r\n\r\n ngOnChanges() {\r\n if (this.tiersEditParent) {\r\n this.buildEditTierForm(this.tiersEditParent);\r\n }\r\n }\r\n\r\n buildEditTierForm(tier: any) {\r\n this.editTierForm = new FormGroup({\r\n tierName: new FormControl(tier.name, [Validators.required]),\r\n isVisible: new FormControl(tier.isVisible, [Validators.required]),\r\n });\r\n }\r\n\r\n updateReport(editTierForm: any) {\r\n let tierId = this.tiersEditParent.id;\r\n let responses = editTierForm.value;\r\n this.valueChange.emit(responses);\r\n\r\n if (responses) {\r\n this.memberService.editTierName(tierId, responses).subscribe(\r\n success => {\r\n // Hide modal\r\n this.editTierModal.hide();\r\n sessionStorage.removeItem('savedTiers');\r\n },\r\n error => {\r\n console.log(error);\r\n this.errorMessage = 'There has been an error saving the tier changes. Please refresh the page and try again or contact the IT Team.'\r\n }\r\n )\r\n }\r\n }\r\n}","module.exports = \"
\\r\\n
\\r\\n {{ selectedOptionDetails ? selectedOptionDetails.optionName : 'Select an option' }}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ group[0] }}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ opt.secondaryReportOptionName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \".form-group {\\n padding-top: 0.25em; }\\n\\n.option-container {\\n position: relative; }\\n\\n.option-select {\\n border: 1px solid #ccc;\\n color: #555;\\n overflow: hidden !important;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n cursor: default !important; }\\n\\n.option-select.disabled {\\n background-color: #EEEEEE; }\\n\\n.option-dropdown {\\n position: absolute;\\n left: 0;\\n min-width: 100%;\\n z-index: 100;\\n border: 1px solid gray;\\n background-color: white;\\n padding: 0.5em 1em;\\n font-size: 17px; }\\n\\n.option-dropdown div:hover {\\n cursor: pointer; }\\n\\n.option-dropdown-group {\\n font-weight: bold; }\\n\\n.option-dropdown-group span {\\n margin-right: 0.25em; }\\n\\n.option-dropdown-group div.active {\\n color: #005EB8; }\\n\\n.option-dropdown-item {\\n padding-left: 0.5em;\\n font-size: 15px;\\n color: #555; }\\n\\n.option-dropdown-item:hover {\\n background-color: #005EB8;\\n color: white; }\\n\\n.option-dropdown-item.active {\\n color: #005EB8;\\n font-weight: bold; }\\n\\n.option-dropdown-item.active:hover {\\n background-color: #005EB8;\\n color: white; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3V0cHV0cy9vdXRwdXRzLWRpc3BsYXkvb3V0cHV0cy1kaXNwbGF5LW9wdGlvbnMvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXGFwcFxcb3V0cHV0c1xcb3V0cHV0cy1kaXNwbGF5XFxvdXRwdXRzLWRpc3BsYXktb3B0aW9uc1xcb3V0cHV0cy1kaXNwbGF5LW9wdGlvbnMuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL291dHB1dHMvb3V0cHV0cy1kaXNwbGF5L291dHB1dHMtZGlzcGxheS1vcHRpb25zL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxfdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSxtQkFBbUIsRUFBQTs7QUFHdkI7RUFDSSxrQkFBa0IsRUFBQTs7QUFHdEI7RUFDSSxzQkFBc0I7RUFDdEIsV0FBVztFQUNYLDJCQUEyQjtFQUMzQix1QkFBdUI7RUFDdkIsbUJBQW1CO0VBQ25CLDBCQUEwQixFQUFBOztBQU45QjtJQVFRLHlCQUNKLEVBQUE7O0FBR0o7RUFDSSxrQkFBa0I7RUFDbEIsT0FBTztFQUNQLGVBQWU7RUFDZixZQUFZO0VBQ1osc0JBQXNCO0VBQ3RCLHVCQUF1QjtFQUN2QixrQkFBa0I7RUFDbEIsZUFBZSxFQUFBOztBQVJuQjtJQVVRLGVBQWUsRUFBQTs7QUFJdkI7RUFDSSxpQkFBaUIsRUFBQTs7QUFEckI7SUFHUSxvQkFBb0IsRUFBQTs7QUFINUI7SUFNUSxjQ3ZDVSxFQUFBOztBRDJDbEI7RUFDSSxtQkFBbUI7RUFDbkIsZUFBZTtFQUNmLFdBQVcsRUFBQTs7QUFIZjtJQUtRLHlCQ2hEVTtJRGlEVixZQUFZLEVBQUE7O0FBSXBCO0VBQ0ksY0N0RGM7RUR1RGQsaUJBQWlCLEVBQUE7O0FBRnJCO0lBSVEseUJDekRVO0lEMERWLFlBQVksRUFBQSIsImZpbGUiOiJzcmMvYXBwL291dHB1dHMvb3V0cHV0cy1kaXNwbGF5L291dHB1dHMtZGlzcGxheS1vcHRpb25zL291dHB1dHMtZGlzcGxheS1vcHRpb25zLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vLi4vdmFyaWFibGVzJztcclxuXHJcbi5mb3JtLWdyb3VwIHtcclxuICAgIHBhZGRpbmctdG9wOiAwLjI1ZW07XHJcbn1cclxuXHJcbi5vcHRpb24tY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLm9wdGlvbi1zZWxlY3Qge1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICAgIGNvbG9yOiAjNTU1O1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xyXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgY3Vyc29yOiBkZWZhdWx0ICFpbXBvcnRhbnQ7XHJcbiAgICAmLmRpc2FibGVkIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVFRUVFXHJcbiAgICB9XHJcbn1cclxuXHJcbi5vcHRpb24tZHJvcGRvd24ge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgbGVmdDogMDtcclxuICAgIG1pbi13aWR0aDogMTAwJTtcclxuICAgIHotaW5kZXg6IDEwMDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkIGdyYXk7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICAgIHBhZGRpbmc6IDAuNWVtIDFlbTtcclxuICAgIGZvbnQtc2l6ZTogMTdweDtcclxuICAgICYgZGl2OmhvdmVyIHtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5vcHRpb24tZHJvcGRvd24tZ3JvdXAge1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAmIHNwYW4ge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMC4yNWVtO1xyXG4gICAgfVxyXG4gICAgJiBkaXYuYWN0aXZlIHtcclxuICAgICAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgfVxyXG59XHJcblxyXG4ub3B0aW9uLWRyb3Bkb3duLWl0ZW0ge1xyXG4gICAgcGFkZGluZy1sZWZ0OiAwLjVlbTtcclxuICAgIGZvbnQtc2l6ZTogMTVweDtcclxuICAgIGNvbG9yOiAjNTU1O1xyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIH1cclxufVxyXG5cclxuLm9wdGlvbi1kcm9wZG93bi1pdGVtLmFjdGl2ZSB7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgfVxyXG59IiwiJGljb24tZm9udC1wYXRoOiAnLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC1zYXNzL2Fzc2V0cy9mb250cy9ib290c3RyYXAvJztcclxuXHJcbi8vIEN1c3RvbSB2YXJpYWJsZXNcclxuJG5ocy1ibHVlOiAjMDA1RUI4O1xyXG4kbmhzLWRhcmstYmx1ZTogIzAwNDQ4NTtcclxuJG5ocy1ncmV5OiAjNzY4NjkyO1xyXG4kbmhzLWZhZGVkLWJsdWU6ICNGMkY3RkI7XHJcbiRhY3RpdmUtYWRtaW4teWVsbG93OiAjRkRCQzMwO1xyXG4kYWN0aXZlLWFkbWluLWRhcmt5ZWxsb3c6ICNFNTk5MDA7XHJcbiBcclxuLy8gQm9vdHN0cmFwIHZhcmlhYmxlc1xyXG4kdGV4dC1jb2xvcjogYmxhY2s7XHJcbiRib3JkZXItcmFkaXVzLWJhc2U6IDA7XHJcbiRib3JkZXItcmFkaXVzLXNtYWxsOiAwO1xyXG4kYnJhbmQtcHJpbWFyeTogJG5ocy1ibHVlO1xyXG4kYnJhbmQtc3VjY2VzczogZ3JlZW47XHJcbiRsaW5rLWhvdmVyLWRlY29yYXRpb246IG5vbmU7XHJcbiRmb250LXNpemUtaDQ6IDE3cHg7XHJcbiRuYXZiYXItbWFyZ2luLWJvdHRvbTogMDtcclxuJG5hdmJhci1oZWlnaHQ6IDYwcHg7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWNvbG9yOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1iZzogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtYm9yZGVyLWNvbG9yOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1pY29uLWJhci1iZzogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaG92ZXItYmc6IHdoaXRlO1xyXG5cclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1iZzogJG5ocy1ibHVlO1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWNvbG9yOiB3aGl0ZTtcclxuJG5hdi1waWxscy1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kdGFibGUtYmctaG92ZXI6ICRuaHMtZmFkZWQtYmx1ZTtcclxuJGhlYWRpbmdzLXNtYWxsLWNvbG9yOiAkbmhzLWdyZXk7Il19 */\"","import { Component, Input, OnChanges, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-outputs-display-options',\r\n templateUrl: './outputs-display-options.component.html',\r\n styleUrls: ['./outputs-display-options.component.scss']\r\n})\r\nexport class OutputsDisplayOptionsComponent implements OnChanges {\r\n\r\n @Input() options: any;\r\n @Input() selectedOption?: number;\r\n @Output() emitOptionId: EventEmitter = new EventEmitter();\r\n\r\n optionsOpen: boolean = false;\r\n selectedOptionDetails: any;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.options.length && this.selectedOption) {\r\n this.selectedOptionDetails = this.options.find(opt => opt.optionId == this.selectedOption);\r\n } else if (this.options.length && !this.selectedOption) {\r\n this.selectedOptionDetails = this.options.find(opt => opt.optionId == 0);\r\n }\r\n }\r\n\r\n onOptionChange(optionId: number): void {\r\n this.optionsOpen = false;\r\n this.emitOptionId.emit(optionId);\r\n }\r\n\r\n}","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
0\\\" (click)=\\\"reportDetailsModal.show()\\\">\\r\\n Info\\r\\n
\\r\\n
0\\\" (click)=\\\"enableColorBlindness()\\\">\\r\\n Colour Blindness Correction\\r\\n
\\r\\n
1\\\" (click)=\\\"codesModal.show()\\\">\\r\\n Show Codes\\r\\n
\\r\\n
\\r\\n {{ reportNotifications[0].notificationTitle }}\\r\\n
\\r\\n
1\\\" (click)=\\\"reportNotificationsModal.show()\\\">\\r\\n Notifications\\r\\n
\\r\\n
\\r\\n {{ showingAlternative ? 'Return to full report' : 'Show time series' }}\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n

Welcome to the {{projectDetails?.projectName}} toolkit

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

\\r\\n The toolkit contains all the metrics generated from the {{projectDetails?.projectName}} data collection. Please expand the\\r\\n menu tree on the left by clicking on the arrows and then click on the heading of the chart you wish to generate.\\r\\n Your position will be highlighted in red on the bar charts, if you supplied all the data required to calculate the\\r\\n metric. You can download or print the chart by clicking on the square, three-line icon in the top right hand corner\\r\\n of the chart. Where applicable, you can toggle between years using the drop down box in the tool bar at the top of\\r\\n the page. Where peer group profiling is available, you can select the peer group you wish to view using the drop\\r\\n down box. If you created and entered data for more than one submission, you can choose the submission you wish to\\r\\n view where applicable. On bar charts, all your submissions will be shown. For some charts, you can change the denominator\\r\\n used to calculate the metric using the drop down menu. The 'view' drop down box allows you to choose between viewing\\r\\n the chart and viewing the data table.\\r\\n

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

\\r\\n If you have any questions or suggestions about this toolkit, please contact\\r\\n {{projectDetails.projectContact.name}}.\\r\\n

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

The selected peer group does not exist for this chart.

\\r\\n

Please select another peer group from the drop-down menu above.

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

There has been an error when obtaining the chart data.

\\r\\n

Please contact the project support for further information.

\\r\\n

Reference: {{ tid }}

\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n The clinical outcome measure chart is not displayed, as your organisation did not submit the data for the {{ selectedYear }} {{ projectDetails.projectName }} project.\\r\\n
\\r\\n\\r\\n
\\r\\n Only Northern Ireland took part in the {{ projectDetails.projectName }} project in 2019. Data for England and Wales is available for 2018.\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Positive Barthel ScoreTotal Barthel Score mean
Negative Barthel ScoreYour service total Barthel Score mean
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Positive Sunderland ScoreTotal Sunderland Score mean
Negative Sunderland ScoreYour service total Sunderland Score mean
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Positive TOM ScoreTotal TOM Score mean
Negative TOM ScoreYour service total TOM Score mean
\\r\\n
\\r\\n\\r\\n
0 && !error\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
PREM QuestionOptionNational Average (%)Your Position (%)
{{p.questionText}}
{{q.responseName}}{{q.nationalPosition || '-'}}{{q.individualPosition || '-'}}
\\r\\n
\\r\\n\\r\\n
0 && !error\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
SectionQuestionYour responseOverall results
\\r\\n - {{q.yourResponse}}Fully Implemented{{q.overallResults.fullyImplemented / q.overallResults.total | percent : '1.2-2'}}
Partially Implemented{{q.overallResults.partiallyImplemented / q.overallResults.total | percent : '1.2-2'}}
Not Implemented{{q.overallResults.notImplemented / q.overallResults.total | percent : '1.2-2'}}
N/A{{q.overallResults.notApplicable / q.overallResults.total | percent : '1.2-2'}}
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ tableH5 ? tableH5 : 'Sample Information' }}
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{t.name}}
{{data[d] !== null ? data[d] : '-'}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n

\\r\\n Total number of responses: {{ numberResponses }}\\r\\n \\r\\n | Total submission responses: {{ numberSubmissionResponses }}\\r\\n \\r\\n

\\r\\n\\r\\n
0\\\" class=\\\"table-spacing text-center\\\">\\r\\n
Sample Information
\\r\\n
\\r\\n
\\r\\n {{ d.seriesName }}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Submission CodeResponse
{{ dd.submissionCode }}{{ dd.response }}
\\r\\n
\\r\\n
\\r\\n\\r\\n
0 && tableData2 && tableData2.length > 0\\\" class=\\\"table-spacing text-center\\\">\\r\\n
Additional Sample Information
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{t.name}}
{{data[d] ? data[d] : 0}}
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
R value
{{correlationCoefficient}}
\\r\\n
\\r\\n \\r\\n
0\\\" class=\\\"text-center\\\">\\r\\n
Your Response
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{t.name}}
{{data[d] !== null ? data[d] : \\\"-\\\"}}
\\r\\n
\\r\\n\\r\\n \\r\\n
{{ tid }}
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

Need Index Peer Group

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

\\r\\n The need index peer groups are based on the community need index calculated using the weighted population \\r\\n and population values submitted to the project.

\\r\\n

\\r\\n Highest, Middle and Lowest refers to the relative position within the sample of organisations who\\r\\n submitted data to the 2023 District Nursing project:
\\r\\n Lowest is assigned to any organisation where the community need index was less than 0.9.
\\r\\n Middle is assigned to any organisation where the community need index was between 0.9 and 1.1.
\\r\\n Highest is assigned to any organisation where the community need index was more than 1.1.\\r\\n

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

Submission Codes

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

\\r\\n The following submissions are available for your selected organisation:\\r\\n

\\r\\n

\\r\\n {{ s.submissionCode }}: {{ s.submissionName }}\\r\\n

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

Information

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

1\\\">{{ p.seriesName }}

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

{{ pp.parameterTypeName }}

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

\\r\\n {{ ppp.parameterDefinition }}\\r\\n

\\r\\n
\\r\\n {{ ppp.questionText ? ppp.questionText : ppp.constantValue }}\\r\\n  | {{ ppp.subQuestionText }}\\r\\n  | {{ ppp.subQuestionHeadingText }}\\r\\n
Context: {{ ppp.dataDefinition ? ppp.dataDefinition : ppp.parentQuestionText }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

Notifications

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

{{ n.notificationTitle }}

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

Option Preference

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

\\r\\n Select an option preference using the drop-down below.\\r\\n

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

\\r\\n The option you select above will be saved whilst you are browsing the toolkit and, if the option is available for the selected chart, it will be automatically selected. If the option is not available, the system will default to the first available option.\\r\\n

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

Highlight Peer Group Preference

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

\\r\\n Select a peer group to highlight throughout the toolkit.\\r\\n

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

\\r\\n The peer group you select above will be highlighted throughout the toolkit where it is possible to do so. The selection will be cleared between years, as peer groups are redefined each year.\\r\\n

\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \".table-default {\\n width: 400px;\\n margin: 0 auto; }\\n\\n.table-metric {\\n width: 80%;\\n margin: 0 auto; }\\n\\n.table-spacing {\\n margin: 10px 0 20px 0; }\\n\\n#highcharts-container {\\n border: 1px solid #ccc;\\n padding: 0.5em;\\n overflow-y: scroll; }\\n\\n.Y {\\n border: 2px solid red;\\n font-weight: 600;\\n color: red; }\\n\\n.btn-lg-chart {\\n margin-top: -3em;\\n margin-bottom: -2em; }\\n\\n.modal-lg-chart {\\n width: 98%; }\\n\\n.codeList .modal-dialog {\\n width: 750px !important; }\\n\\n.codeList .modal-content {\\n overflow: scroll;\\n height: 750px; }\\n\\n.codes i {\\n color: #768692; }\\n\\n.codes i:hover {\\n color: black;\\n cursor: pointer; }\\n\\n.table-equal {\\n table-layout: fixed; }\\n\\n#tier {\\n color: #768692;\\n font-size: 0.9em;\\n padding: 5px 10px 4px 10px;\\n bottom: 1px;\\n right: 3em;\\n background-color: white;\\n position: absolute; }\\n\\n.parameter-container h4 {\\n font-weight: 600;\\n color: #005EB8;\\n line-height: 1.3em; }\\n\\n.parameter-container:not(:first-of-type) h4 {\\n margin-top: 2em; }\\n\\n.parameter-container p {\\n line-height: 1.3em; }\\n\\n.parameter-type {\\n font-weight: bold;\\n margin-bottom: 0.25em; }\\n\\n#highlightOptions {\\n background-color: #F2F7FB; }\\n\\n#optionsRow .form-group {\\n padding-top: 0.25em;\\n margin-bottom: 0.75em; }\\n\\n.number-responses {\\n font-size: 14px;\\n margin: 2em 0;\\n width: 100%;\\n text-align: center; }\\n\\n.guidance {\\n text-align: center;\\n margin-top: 1em;\\n margin-bottom: 1em; }\\n\\n.guidance h1 {\\n margin-top: 0;\\n color: #005EB8; }\\n\\n@media screen and (min-width: 1400px) {\\n .guide-row {\\n padding: 0 10%; } }\\n\\n.guide-container {\\n border: 2px solid #005EB8;\\n margin-bottom: 1em; }\\n\\n.guide-container img {\\n width: 100%; }\\n\\n.guide-container p {\\n width: 100%;\\n min-height: 90px;\\n background-color: #005EB8;\\n color: white;\\n text-align: center;\\n padding: 0.5em;\\n margin-bottom: 0; }\\n\\n.guide-container a {\\n color: white; }\\n\\n.nacel-reports {\\n border: 2px solid #005EB8;\\n padding: 1.5em;\\n border-radius: 4px;\\n margin-top: 2em; }\\n\\n.nacel-reports h3 {\\n margin-top: 0; }\\n\\n.nacel-reports p {\\n margin-bottom: 0; }\\n\\n.loading-spinner {\\n position: absolute;\\n top: 3em;\\n left: 50%;\\n z-index: 10000; }\\n\\n.notification {\\n background-color: #005EB8;\\n color: white;\\n padding: 0.5em 1em;\\n text-align: center;\\n width: 80%;\\n margin: 2em auto;\\n font-size: 14px; }\\n\\n.series-name {\\n margin-top: 1em;\\n margin-left: 10%;\\n width: 80%;\\n border: 1px solid #ccc;\\n background-color: #F3F3F3;\\n padding: 0.5em;\\n font-weight: 600; }\\n\\n.series-name:hover {\\n color: #005EB8;\\n cursor: pointer; }\\n\\n#optionsBar {\\n font-size: 0.9em; }\\n\\n#optionsBar div {\\n display: inline-block;\\n margin-right: 0.5em;\\n padding: 4px 8px 2px 8px;\\n border-radius: 3px;\\n background-color: #F3F3F3; }\\n\\n#optionsBar div.warning {\\n background-color: orangered;\\n color: white; }\\n\\n#optionsBar div.warning:hover {\\n background-color: darkred; }\\n\\n#optionsBar div.info {\\n background-color: #005EB8;\\n color: white; }\\n\\n#optionsBar div.info:hover {\\n background-color: #004485; }\\n\\n#optionsBar div:hover {\\n cursor: pointer;\\n background-color: #768692; }\\n\\n#optionsBar div i {\\n margin-right: 0.5em; }\\n\\n.fa-check-circle {\\n color: green; }\\n\\n.option-shifters {\\n display: inline-block; }\\n\\n.option-shifters i:first-of-type {\\n margin-left: 0.5em; }\\n\\n.option-shifters i {\\n margin-left: 0.25em; }\\n\\n.option-shifters i:hover {\\n cursor: pointer;\\n color: #005EB8; }\\n\\n.option-lock,\\n.highlight-lock {\\n float: right; }\\n\\n.option-lock:hover,\\n .highlight-lock:hover {\\n cursor: pointer; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3V0cHV0cy9vdXRwdXRzLWRpc3BsYXkvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXGFwcFxcb3V0cHV0c1xcb3V0cHV0cy1kaXNwbGF5XFxvdXRwdXRzLWRpc3BsYXkuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL291dHB1dHMvb3V0cHV0cy1kaXNwbGF5L0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxfdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSxZQUFZO0VBQ1osY0FBYyxFQUFBOztBQUdsQjtFQUNJLFVBQVU7RUFDVixjQUFjLEVBQUE7O0FBR2xCO0VBQ0kscUJBQXFCLEVBQUE7O0FBR3pCO0VBQ0Msc0JBQXNCO0VBQ25CLGNBQWM7RUFDZCxrQkFBa0IsRUFBQTs7QUFHdEI7RUFDSSxxQkFBcUI7RUFDckIsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTs7QUFRZDtFQUNJLGdCQUFnQjtFQUNoQixtQkFBbUIsRUFBQTs7QUFHdkI7RUFDSSxVQUFVLEVBQUE7O0FBR2Q7RUFDSSx1QkFBdUIsRUFBQTs7QUFHM0I7RUFDSSxnQkFBZ0I7RUFDaEIsYUFBYSxFQUFBOztBQUdqQjtFQUNJLGNDL0NjLEVBQUE7O0FEa0RsQjtFQUNJLFlBQVk7RUFDWixlQUFlLEVBQUE7O0FBR25CO0VBQ0ksbUJBQW1CLEVBQUE7O0FBR3ZCO0VBQ0ksY0M1RGM7RUQ2RGQsZ0JBQWdCO0VBQ2hCLDBCQUEwQjtFQUMxQixXQUFXO0VBQ1gsVUFBVTtFQUNWLHVCQUF1QjtFQUN2QixrQkFBa0IsRUFBQTs7QUFHdEI7RUFDSSxnQkFBZ0I7RUFDaEIsY0N6RWM7RUQwRWQsa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksZUFBZSxFQUFBOztBQUduQjtFQUNJLGtCQUFrQixFQUFBOztBQUd0QjtFQUNJLGlCQUFpQjtFQUNqQixxQkFBcUIsRUFBQTs7QUFHekI7RUFDSSx5QkFBeUIsRUFBQTs7QUFHN0I7RUFDSSxtQkFBbUI7RUFDbkIscUJBQXFCLEVBQUE7O0FBR3pCO0VBQ0ksZUFBZTtFQUNmLGFBQWE7RUFDYixXQUFXO0VBQ1gsa0JBQWtCLEVBQUE7O0FBS3RCO0VBQ0ksa0JBQWtCO0VBQ2xCLGVBQWU7RUFDZixrQkFBa0IsRUFBQTs7QUFHdEI7RUFDSSxhQUFhO0VBQ2IsY0NwSGMsRUFBQTs7QUR1SGxCO0VBQ0k7SUFDSSxjQUFjLEVBQUEsRUFDakI7O0FBR0w7RUFDSSx5QkM5SGM7RUQrSGQsa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksV0FBVyxFQUFBOztBQUdmO0VBQ0ksV0FBVztFQUNYLGdCQUFnQjtFQUNoQix5QkN6SWM7RUQwSWQsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixjQUFjO0VBQ2QsZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksWUFBWSxFQUFBOztBQUdoQjtFQUNJLHlCQ3JKYztFRHNKZCxjQUFjO0VBQ2Qsa0JBQWtCO0VBQ2xCLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxhQUFhLEVBQUE7O0FBR2pCO0VBQ0ksZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksa0JBQWtCO0VBQ2xCLFFBQVE7RUFDUixTQUFTO0VBQ1QsY0FBYyxFQUFBOztBQUdsQjtFQUNJLHlCQzNLYztFRDRLZCxZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLGtCQUFrQjtFQUNsQixVQUFVO0VBQ1YsZ0JBQWdCO0VBQ2hCLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxlQUFlO0VBQ2YsZ0JBQWdCO0VBQ2hCLFVBQVU7RUFDVixzQkFBc0I7RUFDdEIseUJBQXlCO0VBQ3pCLGNBQWM7RUFDZCxnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxjQy9MYztFRGdNZCxlQUFlLEVBQUE7O0FBS25CO0VBQ0ksZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0kscUJBQXFCO0VBQ3JCLG1CQUFtQjtFQUNuQix3QkFBd0I7RUFDeEIsa0JBQWtCO0VBQ2xCLHlCQUF5QixFQUFBOztBQUc3QjtFQUNJLDJCQUEyQjtFQUMzQixZQUFZLEVBQUE7O0FBR2hCO0VBQ0kseUJBQXlCLEVBQUE7O0FBRzdCO0VBQ0kseUJDM05jO0VENE5kLFlBQVksRUFBQTs7QUFHaEI7RUFDSSx5QkMvTm1CLEVBQUE7O0FEa092QjtFQUNJLGVBQWU7RUFDZix5QkNuT2MsRUFBQTs7QURzT2xCO0VBQ0ksbUJBQW1CLEVBQUE7O0FBR3ZCO0VBQ0ksWUFBWSxFQUFBOztBQUdoQjtFQUNJLHFCQUFxQixFQUFBOztBQUR6QjtJQUdRLGtCQUFrQixFQUFBOztBQUgxQjtJQU1RLG1CQUFtQixFQUFBOztBQU4zQjtJQVNRLGVBQWU7SUFDZixjQzFQVSxFQUFBOztBRDhQbEI7O0VBRUksWUFBWSxFQUFBOztBQUZoQjs7SUFJUSxlQUFlLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9vdXRwdXRzL291dHB1dHMtZGlzcGxheS9vdXRwdXRzLWRpc3BsYXkuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi92YXJpYWJsZXMnO1xyXG5cclxuLnRhYmxlLWRlZmF1bHQge1xyXG4gICAgd2lkdGg6IDQwMHB4O1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbn1cclxuXHJcbi50YWJsZS1tZXRyaWMge1xyXG4gICAgd2lkdGg6IDgwJTtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG59XHJcblxyXG4udGFibGUtc3BhY2luZyB7XHJcbiAgICBtYXJnaW46IDEwcHggMCAyMHB4IDA7XHJcbn1cclxuXHJcbiNoaWdoY2hhcnRzLWNvbnRhaW5lciB7XHJcblx0Ym9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICAgIHBhZGRpbmc6IDAuNWVtO1xyXG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xyXG59XHJcblxyXG4uWSB7XHJcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZWQ7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgY29sb3I6IHJlZDtcclxufVxyXG5cclxuLy8gLmRhdGFUYWJsZSB0aDpsYXN0LW9mLXR5cGUsXHJcbi8vIC5kYXRhVGFibGUgdGQ6bGFzdC1vZi10eXBlIHtcclxuLy8gICAgIGRpc3BsYXk6IG5vbmU7XHJcbi8vIH1cclxuXHJcbi5idG4tbGctY2hhcnQge1xyXG4gICAgbWFyZ2luLXRvcDogLTNlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IC0yZW07XHJcbn1cclxuXHJcbi5tb2RhbC1sZy1jaGFydCB7XHJcbiAgICB3aWR0aDogOTglO1xyXG59XHJcblxyXG4uY29kZUxpc3QgLm1vZGFsLWRpYWxvZyB7XHJcbiAgICB3aWR0aDogNzUwcHggIWltcG9ydGFudDtcclxufVxyXG5cclxuLmNvZGVMaXN0IC5tb2RhbC1jb250ZW50IHtcclxuICAgIG92ZXJmbG93OiBzY3JvbGw7XHJcbiAgICBoZWlnaHQ6IDc1MHB4O1xyXG59XHJcblxyXG4uY29kZXMgaSB7XHJcbiAgICBjb2xvcjogJG5ocy1ncmV5O1xyXG59XHJcblxyXG4uY29kZXMgaTpob3ZlciB7XHJcbiAgICBjb2xvcjogYmxhY2s7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi50YWJsZS1lcXVhbCB7XHJcbiAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xyXG59XHJcblxyXG4jdGllciB7XHJcbiAgICBjb2xvcjogJG5ocy1ncmV5O1xyXG4gICAgZm9udC1zaXplOiAwLjllbTtcclxuICAgIHBhZGRpbmc6IDVweCAxMHB4IDRweCAxMHB4O1xyXG4gICAgYm90dG9tOiAxcHg7XHJcbiAgICByaWdodDogM2VtO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbn1cclxuXHJcbi5wYXJhbWV0ZXItY29udGFpbmVyIGg0IHtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuM2VtO1xyXG59XHJcblxyXG4ucGFyYW1ldGVyLWNvbnRhaW5lcjpub3QoOmZpcnN0LW9mLXR5cGUpIGg0IHtcclxuICAgIG1hcmdpbi10b3A6IDJlbTtcclxufVxyXG5cclxuLnBhcmFtZXRlci1jb250YWluZXIgcCB7XHJcbiAgICBsaW5lLWhlaWdodDogMS4zZW07XHJcbn1cclxuXHJcbi5wYXJhbWV0ZXItdHlwZSB7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuMjVlbTtcclxufVxyXG5cclxuI2hpZ2hsaWdodE9wdGlvbnMge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0YyRjdGQjtcclxufVxyXG5cclxuI29wdGlvbnNSb3cgLmZvcm0tZ3JvdXAge1xyXG4gICAgcGFkZGluZy10b3A6IDAuMjVlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuNzVlbTtcclxufVxyXG5cclxuLm51bWJlci1yZXNwb25zZXMge1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgbWFyZ2luOiAyZW0gMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG59XHJcblxyXG4vLyBHdWlkYW5jZVxyXG5cclxuLmd1aWRhbmNlIHtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcclxufVxyXG5cclxuLmd1aWRhbmNlIGgxIHtcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG59XHJcblxyXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxNDAwcHgpIHtcclxuICAgIC5ndWlkZS1yb3cge1xyXG4gICAgICAgIHBhZGRpbmc6IDAgMTAlO1xyXG4gICAgfVxyXG59XHJcblxyXG4uZ3VpZGUtY29udGFpbmVyIHtcclxuICAgIGJvcmRlcjogMnB4IHNvbGlkICRuaHMtYmx1ZTtcclxuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcclxufVxyXG5cclxuLmd1aWRlLWNvbnRhaW5lciBpbWcge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5ndWlkZS1jb250YWluZXIgcCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1pbi1oZWlnaHQ6IDkwcHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBwYWRkaW5nOiAwLjVlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbn1cclxuXHJcbi5ndWlkZS1jb250YWluZXIgYSB7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbi5uYWNlbC1yZXBvcnRzIHtcclxuICAgIGJvcmRlcjogMnB4IHNvbGlkICRuaHMtYmx1ZTtcclxuICAgIHBhZGRpbmc6IDEuNWVtO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgbWFyZ2luLXRvcDogMmVtO1xyXG59XHJcblxyXG4ubmFjZWwtcmVwb3J0cyBoMyB7XHJcbiAgICBtYXJnaW4tdG9wOiAwO1xyXG59XHJcblxyXG4ubmFjZWwtcmVwb3J0cyBwIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbn1cclxuXHJcbi5sb2FkaW5nLXNwaW5uZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAzZW07XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB6LWluZGV4OiAxMDAwMDtcclxufVxyXG5cclxuLm5vdGlmaWNhdGlvbiB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgICBwYWRkaW5nOiAwLjVlbSAxZW07XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICB3aWR0aDogODAlO1xyXG4gICAgbWFyZ2luOiAyZW0gYXV0bztcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxufVxyXG5cclxuLnNlcmllcy1uYW1lIHtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxuICAgIG1hcmdpbi1sZWZ0OiAxMCU7XHJcbiAgICB3aWR0aDogODAlO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNGM0YzRjM7XHJcbiAgICBwYWRkaW5nOiAwLjVlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi5zZXJpZXMtbmFtZTpob3ZlciB7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4vLyBPcHRpb25zIGJhclxyXG5cclxuI29wdGlvbnNCYXIge1xyXG4gICAgZm9udC1zaXplOiAwLjllbTtcclxufVxyXG5cclxuI29wdGlvbnNCYXIgZGl2IHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIG1hcmdpbi1yaWdodDogMC41ZW07XHJcbiAgICBwYWRkaW5nOiA0cHggOHB4IDJweCA4cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGM0YzO1xyXG59XHJcblxyXG4jb3B0aW9uc0JhciBkaXYud2FybmluZyB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2VyZWQ7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbiNvcHRpb25zQmFyIGRpdi53YXJuaW5nOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtyZWQ7XHJcbn1cclxuXHJcbiNvcHRpb25zQmFyIGRpdi5pbmZvIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRuaHMtYmx1ZTtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxufVxyXG5cclxuI29wdGlvbnNCYXIgZGl2LmluZm86aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1kYXJrLWJsdWU7XHJcbn1cclxuXHJcbiNvcHRpb25zQmFyIGRpdjpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWdyZXk7XHJcbn1cclxuXHJcbiNvcHRpb25zQmFyIGRpdiBpIHtcclxuICAgIG1hcmdpbi1yaWdodDogMC41ZW07XHJcbn1cclxuXHJcbi5mYS1jaGVjay1jaXJjbGUge1xyXG4gICAgY29sb3I6IGdyZWVuO1xyXG59XHJcblxyXG4ub3B0aW9uLXNoaWZ0ZXJzIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICYgaTpmaXJzdC1vZi10eXBlIHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMC41ZW07XHJcbiAgICB9XHJcbiAgICAmIGkge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwLjI1ZW07XHJcbiAgICB9XHJcbiAgICAmIGk6aG92ZXIge1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgfVxyXG59XHJcblxyXG4ub3B0aW9uLWxvY2ssXHJcbi5oaWdobGlnaHQtbG9jayB7XHJcbiAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB9XHJcbn0iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiXX0= */\"","import { Component, Input, OnChanges, ViewChild, Output, EventEmitter} from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n\r\nimport { ModalDirective } from 'ngx-bootstrap';\r\nimport { GroupByPipe, OrderByPipe, UniquePipe } from 'ngx-pipes';\r\n\r\nimport { MemberService } from '../../utilities/services/member.service';\r\nimport { HtmlService } from '../../utilities/services/html.service';\r\nimport { LoaderService } from '../../utilities/services/loader.service';\r\nimport { OutputsColor } from '_variables';\r\nimport html2canvas from 'html2canvas';\r\nimport pdfMake from 'pdfmake/build/pdfmake';\r\nimport pdfFonts from 'pdfmake/build/vfs_fonts';\r\npdfMake.vfs = pdfFonts.pdfMake.vfs;\r\nimport { ISubmissionCodeList } from 'app/utilities/models/submission-code-list.vm';\r\n\r\n@Component({\r\n selector: 'app-outputs-display',\r\n templateUrl: './outputs-display.component.html',\r\n styleUrls: ['./outputs-display.component.scss']\r\n})\r\nexport class OutputsDisplayComponent implements OnChanges {\r\n @Input() nodeSelection;\r\n @Input() organisationSelection;\r\n @Input() projectDetails;\r\n @Input() activeAdmin;\r\n @Input() showSubmissionId;\r\n @ViewChild('largeChartModal') public largeChartModal: ModalDirective;\r\n @ViewChild('submissionsModal') public submissionsModal: ModalDirective;\r\n @ViewChild('optionPreferenceModal') public optionPreferenceModal: ModalDirective;\r\n @ViewChild('highlightPreferenceModal') public highlightPreferenceModal: ModalDirective;\r\n // Send params back to parent\r\n @Output() peerGroupAdd: EventEmitter = new EventEmitter();\r\n @Output() submissionAdd: EventEmitter = new EventEmitter();\r\n @Output() optionAdd: EventEmitter = new EventEmitter();\r\n @Output() point: EventEmitter = new EventEmitter();\r\n @Output() reportParameters: EventEmitter = new EventEmitter();\r\n @Output() download: EventEmitter = new EventEmitter();\r\n @Output() reportDetails: EventEmitter = new EventEmitter();\r\n\r\n projectId: number;\r\n windowHeight: number = window.innerHeight - 200;\r\n error: boolean;\r\n groupError: boolean;\r\n chartSelection: boolean;\r\n firstRun: boolean = false;\r\n tierData;\r\n tierYears;\r\n defaultYear: number;\r\n yearSelectionMade: boolean = false;\r\n currentOrganisation;\r\n availableYears = [];\r\n allAvailableYears = [];\r\n selectedYear;\r\n availablePeerGroups = [];\r\n selectedPeerGroup: number;\r\n availableSubmissions = [];\r\n selectedSubmission;\r\n availableOptions = [];\r\n selectedOption;\r\n groupAvailableOptions: boolean = false;\r\n availableViews = [];\r\n selectedView;\r\n selectedFormatModifier;\r\n selectedReport;\r\n chartObject;\r\n chartData;\r\n figureTitle = [];\r\n figureData = [];\r\n tableTitle = [];\r\n tableData = [];\r\n chartTableView: boolean = true;\r\n tableDataFull = [];\r\n selectedSeries;\r\n tableTitle2 = [];\r\n tableData2 = [];\r\n premTable;\r\n rpsTable;\r\n barthelKey: boolean = false;\r\n sunderlandKey: boolean = false;\r\n tomKey: boolean = false;\r\n tableOnly: boolean = false;\r\n totalResponses: number;\r\n tid: string;\r\n optionTitle: string = 'Options';\r\n optionTitleId: string;\r\n numberResponses: number;\r\n numberSubmissionResponses: number;\r\n submissionCodes = [];\r\n userReportParamaters = [];\r\n chartLoaded: boolean = false;\r\n tableLoaded: boolean = false;\r\n subscriptions = [];\r\n alternativeReportId;\r\n showingAlternative: boolean;\r\n reportNotifications;\r\n params: string;\r\n noDataNotification: boolean;\r\n hideTable: boolean = false;\r\n colorBlindnessEnabled: boolean = false;\r\n submissionCodeList: Array;\r\n submissionCodeMappedData: Array\r\n\r\n // Setting global colors\r\n globalColors = new OutputsColor();\r\n multiColorChart = this.globalColors.default;\r\n red = this.globalColors.red;\r\n green = this.globalColors.green;\r\n blue = this.globalColors.blue;\r\n grey = this.globalColors.grey;\r\n chartBlue = this.globalColors.chartBlue;\r\n pieColors = this.globalColors.pieColors;\r\n pieColorBlind = this.globalColors.pieColorBlind;\r\n\r\n optionPreference: string;\r\n optionGroups: Array;\r\n\r\n allPeerGroups = [];\r\n highlightedPeerGroupId: number = undefined;\r\n highlightedSubmissions = [];\r\n scatterChartShow: boolean;\r\n correlationCoefficient: string;\r\n\r\n tableH5: string; \r\n hideLoadingSpinner = false;\r\n\r\n constructor(\r\n private memberService: MemberService,\r\n private htmlService: HtmlService,\r\n public loaderService: LoaderService,\r\n private httpService: HttpClient,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private orderByPipe: OrderByPipe,\r\n private uniquePipe: UniquePipe,\r\n private groupBy: GroupByPipe) {\r\n this.projectId = +this.route.snapshot.paramMap.get('projectId');\r\n }\r\n\r\n ngOnChanges() {\r\n this.params = this.router.url;\r\n const optionQueryParam = this.route.snapshot.queryParams['option']\r\n if (this.nodeSelection) {\r\n if (this.nodeSelection.reportId) {\r\n this.defaultYear = this.nodeSelection.defaultYear;\r\n this.currentOrganisation = this.organisationSelection.organisationId;\r\n this.chartSelection = true;\r\n this.firstRun = true;\r\n this.alternativeReportId = null;\r\n this.showingAlternative = false;\r\n this.noDataNotification = false;\r\n this.dataSharingCodes();\r\n // Set peer group, submission and option from params with fallback\r\n let groupParamId = this.route.snapshot.queryParams['group'] || 0;\r\n let submissionParamId = this.route.snapshot.queryParams['submission'] || null;\r\n let optionParamId = this.route.snapshot.queryParams['option'] || 0;\r\n\r\n this.getTierYears(\r\n this.nodeSelection.id,\r\n this.currentOrganisation,\r\n groupParamId,\r\n submissionParamId,\r\n this.nodeSelection.serviceItemId,\r\n optionParamId,\r\n this.defaultYear,\r\n this.nodeSelection.submissionLevel\r\n );\r\n }\r\n // Set Options dropdown title\r\n if (this.nodeSelection.optionsDropdownTitle) {\r\n this.optionTitle = this.nodeSelection.optionsDropdownTitle;\r\n this.optionTitleId = 'highlightOptions';\r\n } else {\r\n this.optionTitle = 'Options';\r\n this.optionTitleId = null;\r\n }\r\n }\r\n if (optionQueryParam) {\r\n this.selectedOption = optionQueryParam\r\n this.onOptionChange(optionQueryParam)\r\n }\r\n this.totalResponses = null;\r\n this.numberResponses = null;\r\n this.numberSubmissionResponses = null;\r\n this.groupError = false;\r\n this.getOptionNames(this.projectId);\r\n this.setOptionPreference();\r\n }\r\n\r\n unsubscribe() {\r\n this.subscriptions.forEach(s => {\r\n s.unsubscribe();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.removeOptionPreference();\r\n sessionStorage.removeItem('highlightedSubmissions');\r\n }\r\n\r\n savePoint(event, year) {\r\n if (event.point) {\r\n this.point.emit({ point: event.point, year: year, serviceItemId: this.nodeSelection.serviceItemId, reportName: this.placeholder(this.tierData.reportName) });\r\n } else if (event.target.innerHTML) {\r\n let point = this.tierData.yearData[this.selectedYear].filter(d => d.submissionCode === event.target.innerHTML)[0];\r\n this.point.emit({ point: { shapeType: 'rect', category: point.submissionCode, y: point.response1 }, year: year, serviceItemId: this.nodeSelection.serviceItemId, reportName: this.placeholder(this.tierData.reportName) });\r\n }\r\n }\r\n\r\n viewLargeChart() {\r\n this.largeChartModal.show();\r\n }\r\n\r\n getTierYears(tierId: number, organisationId: number, peerGroup: number, submissionId?: number, serviceItemId?: number, denominatorOptionId?: number, year?: number, submissionLevel?: string) {\r\n this.memberService.TierYears(tierId).subscribe(\r\n y => {\r\n this.tierYears = y.data.reportYears.filter(y => y.isVisible == 'Y');\r\n\r\n this.selectedReport = this.tierYears.filter(y => y.reportYear == year)[0].reportId;\r\n\r\n this.getTierData(this.selectedReport, organisationId, peerGroup, submissionId, serviceItemId, denominatorOptionId, year, submissionLevel);\r\n },\r\n error => {\r\n console.log(\"Unable to find years for that tier id\");\r\n console.log(error);\r\n }\r\n )\r\n }\r\n\r\n getTierData(reportId: number, organisationId: number, peerGroup: number, submissionId?: number, serviceItemId?: number, denominatorOptionId?: number, year?: number, submissionLevel?: string) {\r\n this.resetData();\r\n\r\n // If no peer groups defined (selectedPeerGroup == null), set as zero\r\n peerGroup = peerGroup ? peerGroup : 0;\r\n\r\n this.subscriptions.push(\r\n this.memberService.TierData(reportId, organisationId, peerGroup, submissionId || null, serviceItemId, denominatorOptionId || null, year, submissionLevel || null).subscribe(\r\n t => {\r\n this.processTierData(t.data);\r\n // Set tierId and reportId\r\n this.tid = this.nodeSelection.id + '-' + this.selectedReport;\r\n },\r\n error => {\r\n // TODO: If error, reset params and try again, then error as normal\r\n this.tid = this.nodeSelection.id + '-' + this.selectedReport;\r\n console.log(error);\r\n this.error = true;\r\n }\r\n )\r\n )\r\n\r\n // Hide table for specific reports\r\n if ([13031, 17099].includes(reportId)) {\r\n this.hideTable = true;\r\n } else {\r\n this.hideTable = false;\r\n }\r\n }\r\n\r\n processTierData(data) {\r\n this.tierData = data;\r\n this.allAvailableYears = this.tierYears;\r\n\r\n //Set year\r\n if (this.chartSelection) {\r\n this.selectedYear = this.defaultYear;\r\n }\r\n\r\n //Set view\r\n if (data.viewTypes.length > 0) {\r\n let availableViews = data.viewTypes,\r\n availableViewTypes = availableViews.map(av => av.viewType);\r\n\r\n if (availableViewTypes.includes('TS')) {\r\n this.alternativeReportId = availableViews.filter(av => av.viewType === 'TS')[0].alternativeReportId;\r\n availableViews = availableViews.filter(av => av.viewType !== 'TS');\r\n }\r\n this.availableViews = this.orderByPipe.transform(availableViews, 'displaySequence');\r\n }\r\n else {\r\n this.availableViews = [{ viewType: 'C1', viewName: 'Chart' }];\r\n }\r\n\r\n let view = this.route.snapshot.queryParams['view'],\r\n availableViews = this.availableViews.map(v => v.viewType);\r\n\r\n if (view && availableViews.includes(view) === true) {\r\n this.selectedView = view;\r\n } else {\r\n this.selectedView = this.availableViews[0].viewType;\r\n }\r\n\r\n // Set parameters\r\n this.userReportParamaters = this.setParameters(data['reportParameters']);\r\n\r\n if (this.activeAdmin) {\r\n this.reportDetails.emit(data);\r\n this.reportParameters.emit({reportPar: this.setParameters(data['reportParameters']), storedPro: data['storedProcedure']});\r\n this.availableYears = this.tierYears.map(y => y.reportYear);\r\n } else {\r\n this.availableYears = this.tierYears.filter(y => y.isVisible === 'Y').map(y => y.reportYear);\r\n }\r\n\r\n // Set notifications\r\n this.reportNotifications = data['reportNotifications'];\r\n\r\n //Set peergroup\r\n if (data.peerGroups.length > 0) {\r\n // Only show regional peer groups if ActiveAdmin\r\n if (this.activeAdmin) {\r\n this.availablePeerGroups = data.peerGroups;\r\n } else {\r\n this.availablePeerGroups = data.peerGroups.filter(pg => pg.peerGroupTypeId === 1);\r\n }\r\n }\r\n else {\r\n this.availablePeerGroups = [{ id: 0, name: \"All organisation types\" }];\r\n }\r\n\r\n //Set submission\r\n if (data.selectSubmissions == 'Y' && data.availableSubmissions[this.selectedYear]) {\r\n this.availableSubmissions = data.availableSubmissions[this.selectedYear];\r\n }\r\n else if (data.viewTypes.map(v => v.viewType).includes('YN') && data.availableSubmissions[this.selectedYear]){ \r\n this.availableSubmissions = data.availableSubmissions[this.selectedYear];\r\n }\r\n else {\r\n this.availableSubmissions = [{ submissionId: 0, submissionName: \"N/A\" }];\r\n }\r\n\r\n //Set option\r\n if (data.options.denominators.length > 0) {\r\n data.options.denominators.forEach(element => {\r\n element.optionName = this.placeholder(element.optionName);\r\n element.titleOptionName = this.placeholder(element.titleOptionName);\r\n });\r\n\r\n // Set available options\r\n let availableOptions = data.options.denominators;\r\n availableOptions.forEach(opt => {\r\n opt.optionName = this.placeholder(opt.optionName);\r\n opt.secondaryReportOptionName = this.placeholder(opt.secondaryReportOptionName);\r\n opt.titleOptionName = this.placeholder(opt.titleOptionName);\r\n });\r\n this.availableOptions = availableOptions;\r\n // Show option grouping child component if there is more than one primaryReportOption\r\n // 'null' check for standard options\r\n let optionGroups = this.groupBy.transform(this.availableOptions, 'primaryReportOptionId');\r\n Object.keys(optionGroups).forEach(group => {\r\n if (group !== 'null' && optionGroups[group].length > 1) {\r\n this.groupAvailableOptions = true;\r\n } else {\r\n this.groupAvailableOptions = false;\r\n }\r\n })\r\n }\r\n else {\r\n this.availableOptions = [{ optionId: 0, optionName: \"N/A\", formatModifier: null }];\r\n }\r\n\r\n if (this.chartSelection) {\r\n // Set peer group from param or fallback\r\n let paramGroupId = this.route.snapshot.queryParams['group'];\r\n\r\n if (this.availablePeerGroups.length == 1 && paramGroupId == 0) {\r\n this.selectedPeerGroup = paramGroupId;\r\n this.groupError = false;\r\n } else if (data.peerGroups.length > 0 && paramGroupId && this.availablePeerGroups.filter(e => e.id == paramGroupId).length > 0) {\r\n this.selectedPeerGroup = paramGroupId;\r\n this.groupError = false;\r\n } else {\r\n this.selectedPeerGroup = this.availablePeerGroups[0].id;\r\n if (this.selectedPeerGroup !== undefined && this.selectedPeerGroup !== null) {\r\n this.router.navigate([], { queryParams: { group: this.selectedPeerGroup }, queryParamsHandling: 'merge' })\r\n this.getTierYears(\r\n this.nodeSelection.id,\r\n this.currentOrganisation,\r\n this.selectedPeerGroup,\r\n this.selectedSubmission ? this.selectedSubmission.submissionId : null,\r\n this.nodeSelection.serviceItemId,\r\n this.selectedOption,\r\n this.defaultYear,\r\n this.nodeSelection.submissionLevel\r\n );\r\n } else {\r\n this.groupError = true;\r\n }\r\n }\r\n\r\n // Set submission from param or fallback\r\n let submissionParamId = this.route.snapshot.queryParams['submission'];\r\n if (data.selectSubmissions == 'Y' && submissionParamId && this.availableSubmissions.filter(e => e.submissionId == submissionParamId).length > 0) {\r\n this.selectedSubmission = submissionParamId;\r\n }\r\n else {\r\n this.selectedSubmission = this.availableSubmissions[0].submissionId;\r\n this.router.navigate([], { queryParams: { submission: null }, queryParamsHandling: 'merge' })\r\n }\r\n\r\n // Set option from param or fallback\r\n let optionParamId = this.route.snapshot.queryParams['option'];\r\n if (this.optionPreference) {\r\n let optionsCheck = this.availableOptions.filter(opt => opt.primaryReportOptionName == this.optionPreference);\r\n if (optionsCheck.length) {\r\n this.selectedOption = optionsCheck[0].optionId;\r\n this.router.navigate([], { queryParams: { option: this.selectedOption }, queryParamsHandling: 'merge' })\r\n this.getTierYears(\r\n this.nodeSelection.id,\r\n this.currentOrganisation,\r\n this.selectedPeerGroup,\r\n this.selectedSubmission ? this.selectedSubmission.submissionId : null,\r\n this.nodeSelection.serviceItemId,\r\n this.selectedOption,\r\n this.defaultYear,\r\n this.nodeSelection.submissionLevel\r\n );\r\n } else {\r\n this.selectedOption = this.availableOptions[0].optionId;\r\n this.router.navigate([], { queryParams: { option: this.selectedOption }, queryParamsHandling: 'merge' })\r\n this.getTierYears(\r\n this.nodeSelection.id,\r\n this.currentOrganisation,\r\n this.selectedPeerGroup,\r\n this.selectedSubmission ? this.selectedSubmission.submissionId : null,\r\n this.nodeSelection.serviceItemId,\r\n this.selectedOption,\r\n this.defaultYear,\r\n this.nodeSelection.submissionLevel\r\n );\r\n }\r\n }\r\n else if (optionParamId && this.availableOptions.filter(e => e.optionId == optionParamId).length > 0) {\r\n this.selectedOption = optionParamId;\r\n }\r\n else {\r\n this.selectedOption = this.availableOptions[0].optionId;\r\n this.router.navigate([], { queryParams: { option: null }, queryParamsHandling: 'merge' })\r\n }\r\n\r\n this.chartSelection = false;\r\n }\r\n\r\n // Set download data (Active Admin only)\r\n this.downloadData(this.tierData.yearData[this.selectedYear]);\r\n\r\n this.viewSelection();\r\n }\r\n\r\n setParameters(inputData) {\r\n let outputData = [];\r\n\r\n Object.keys(inputData).forEach(x => {\r\n outputData.push({\r\n seriesName: this.placeholder(inputData[x].seriesName),\r\n parameterTypes: Object.keys(inputData[x].parameterTypes).map(k => {\r\n return {\r\n parameterType: k,\r\n parameters: inputData[x].parameterTypes[k].map(d => {\r\n return {\r\n questionId: d.questionId,\r\n questionPart: d.questionPart,\r\n questionText: this.placeholder(d.questionText),\r\n subQuestionText: this.placeholder(d.subQuestionText),\r\n parentQuestionText: this.placeholder(d.parentQuestionText),\r\n dataDefinition: this.placeholder(d.dataDefinition),\r\n constantValue: d.constantValue,\r\n parameterDefinition: d.parameterDefinition ? d.parameterDefinition : null,\r\n subQuestionHeadingText: d.subQuestionHeadingText\r\n }\r\n }),\r\n }\r\n })\r\n });\r\n });\r\n\r\n outputData.forEach(o => {\r\n o.parameterTypes.forEach(oo => {\r\n if (oo.parameterType === 'N') {\r\n oo.parameterTypeName = 'Numerators';\r\n oo.displaySequence = 1;\r\n } else if (oo.parameterType === 'D') {\r\n oo.parameterTypeName = 'Denominators';\r\n oo.displaySequence = 2;\r\n } else if (oo.parameterType === 'V') {\r\n oo.parameterTypeName = 'Vacancy Rate';\r\n oo.displaySequence = 3;\r\n } else {\r\n oo.parameterTypeName = 'Factor';\r\n oo.displaySequence = 3;\r\n }\r\n })\r\n });\r\n\r\n return outputData;\r\n }\r\n\r\n viewSelection() {\r\n this.resetData();\r\n\r\n if (this.selectedView.substring(0, 1) == 'T') {\r\n this.constructTable(this.tierData, this.selectedYear, this.selectedView);\r\n this.tableLoaded = true;\r\n }\r\n else if (this.selectedView.substring(0, 1) == 'P' && this.selectedView != 'PN' && this.selectedView != 'PI') {\r\n this.constructPremTable(this.tierData, this.selectedYear, this.selectedView);\r\n }\r\n else if (this.selectedView.substring(0, 2) == 'RQ') {\r\n this.constructRPSTable(this.tierData, this.selectedYear);\r\n } \r\n else {\r\n this.constructChart(this.tierData, this.selectedYear, this.selectedView);\r\n this.constructFigureTable(this.tierData, this.selectedYear, this.selectedView);\r\n // Timeout to allow for reload, where necessary\r\n setTimeout(()=>{ this.chartLoaded = true; }, 750);\r\n }\r\n }\r\n\r\n constructTable(data, year, view) {\r\n let optionParamId = this.route.snapshot.queryParams['option'] || 0\r\n let formatModif = this.availableOptions[optionParamId].formatModifier;\r\n\r\n switch(view) {\r\n\r\n case \"TCR\": {\r\n this.buildTableTitle(['Organisation', 'Start', 'Finish']); \r\n this.tableH5 = ' '; \r\n this.hideLoadingSpinner = true;\r\n let orgData = [] \r\n data.yearData[year].forEach(element => {\r\n let start = new Date(element.response1); let end = new Date(element.response2);\r\n orgData.push({ submissionCode: element.submissionCode, low: Date.UTC(2018, 1, 1, start.getHours(), start.getMinutes(), 0), high: Date.UTC(2018, 1, 1, end.getHours(), end.getMinutes(), 0)});\r\n }) \r\n orgData.forEach((d) => {\r\n this.tableData.push({\r\n organisation: d.submissionCode,\r\n start: new Date(d.low).toLocaleTimeString(),\r\n finish: new Date(d.high).toLocaleTimeString()\r\n })\r\n }) \r\n break;\r\n }\r\n\r\n case \"TB1\": {\r\n let responseTitle = formatModif ? this.titleUnits('Response', formatModif) : 'Response'\r\n this.buildTableTitle(['Rank', 'Submission Code', responseTitle]); // removed 'Highlighted'\r\n\r\n data.yearData[year].forEach((element, index) => {\r\n let submissionCode;\r\n if (this.showSubmissionId) {\r\n submissionCode = element.submissionId\r\n } else {\r\n submissionCode = element.submissionCode\r\n }\r\n if (element.response1 != null) {\r\n this.tableData.push({\r\n rank: index + 1,\r\n submissionCode: submissionCode,\r\n response: this.decimal(element.response1, data.decPlaces, 'T'),\r\n // highlighted: element.isHighlighted\r\n });\r\n }\r\n });\r\n\r\n // Reverse order (including rank) if set to ASC in database\r\n if (data.sortOrder && data.sortOrder.includes('ASC')) {\r\n let reversedData = [];\r\n this.tableData.reverse().forEach((td, index) => {\r\n reversedData.push({\r\n rank: index + 1,\r\n submissionCode: td.submissionCode,\r\n response: td.response\r\n })\r\n });\r\n this.tableData = reversedData;\r\n }\r\n\r\n break;\r\n }\r\n case \"TB2\": {\r\n let response1Name: string;\r\n let response2Name: string;\r\n let response1Title: string;\r\n let response2Title: string;\r\n\r\n data.yearData[year].forEach((element, index) => {\r\n let nullCount = 0;\r\n if (element.response1 == null) nullCount++;\r\n if (element.response2 == null) nullCount++;\r\n\r\n response1Name = element.response1Name == null ? 'Response 1' : this.placeholder(element.response1Name);\r\n response2Name = element.response2Name == null ? 'Response 2' : this.placeholder(element.response2Name);\r\n\r\n response1Title = formatModif ? this.titleUnits(response1Name, formatModif) : response1Name;\r\n response2Title = formatModif ? this.titleUnits(response2Name, formatModif) : response2Name;\r\n\r\n if (nullCount < 2) { \r\n this.tableData.push({\r\n rank: index + 1,\r\n submissionCode: element.submissionCode,\r\n response1: this.decimal(element.response1, data.decPlaces, 'T'),\r\n response2: this.decimal(element.response2, data.decPlaces, 'T'),\r\n // highlighted: element.isHighlighted\r\n });\r\n }\r\n }); \r\n this.buildTableTitle(['Rank', 'Submission Code', response1Title, response2Title]); // removed 'Highlighted'\r\n \r\n break;\r\n }\r\n case \"TB3\": {\r\n let response1Name: string;\r\n let response2Name: string;\r\n let response3Name: string;\r\n let response1Title: string;\r\n let response2Title: string;\r\n let response3Title: string;\r\n\r\n\r\n\r\n data.yearData[year].forEach((element, index) => {\r\n let nullCount = 0;\r\n if (element.response1 == null) nullCount++;\r\n if (element.response2 == null) nullCount++;\r\n if (element.response3 == null) nullCount++;\r\n\r\n\r\n response1Name = element.response1Name == null ? 'Response 1' : this.placeholder(element.response1Name);\r\n response2Name = element.response2Name == null ? 'Response 2' : this.placeholder(element.response2Name);\r\n response3Name = element.response3Name == null ? 'Response 3' : this.placeholder(element.response3Name);\r\n\r\n response1Title = formatModif ? this.titleUnits(response1Name, formatModif) : response1Name;\r\n response2Title = formatModif ? this.titleUnits(response2Name, formatModif) : response2Name;\r\n response3Title = formatModif ? this.titleUnits(response3Name, formatModif) : response3Name;\r\n\r\n\r\n\r\n if (nullCount < 3) {\r\n this.tableData.push({\r\n rank: index + 1,\r\n submissionCode: element.submissionCode,\r\n response1: this.decimal(element.response1, data.decPlaces, 'T'),\r\n response2: this.decimal(element.response2, data.decPlaces, 'T'),\r\n response3: this.decimal(element.response3, data.decPlaces, 'T'),\r\n // highlighted: element.isHighlighted\r\n });\r\n }\r\n });\r\n\r\n this.buildTableTitle(['Rank', 'Submission Code', response1Title, response2Title, response3Title]); // removed 'Highlighted'\r\n\r\n break;\r\n }\r\n case \"TSC\": {\r\n this.buildTableTitle(['Rank', 'Submission Code', 'Number of Responses', 'Average Response']); // removed 'Highlighted'\r\n\r\n data.yearData[year].forEach((element, index) => {\r\n if (element.response1 != null) {\r\n this.tableData.push({\r\n rank: index + 1,\r\n submissionCode: element.submissionCode,\r\n response1: element.label,\r\n response: this.decimal(element.response1, data.decPlaces),\r\n // highlighted: element.isHighlighted\r\n });\r\n }\r\n });\r\n break;\r\n }\r\n case \"TYN\": {\r\n let allData = data.tableData[year];\r\n\r\n if (allData) {\r\n let allSeries = this.uniquePipe.transform(allData.map(d => d.seriesName));\r\n\r\n allSeries.forEach(s => {\r\n this.tableDataFull.push({\r\n seriesName: s,\r\n data: []\r\n })\r\n })\r\n\r\n allData.forEach(a => {\r\n let e = this.tableDataFull.filter(t => t.seriesName === a.seriesName)[0],\r\n finalResponse;\r\n\r\n if (this.showSubmissionId) {\r\n finalResponse = { submissionCode: a.submissionId, response: a.response }\r\n } else {\r\n finalResponse = { submissionCode: a.submissionCode, response: a.response }\r\n }\r\n\r\n if (a.response !== '-') {\r\n e.data.push(finalResponse);\r\n }\r\n })\r\n } else {\r\n this.error = true;\r\n }\r\n\r\n break;\r\n }\r\n case \"TPI\": {\r\n this.buildTableTitle(['Submission', 'Response']);\r\n this.tableData = data.tableData[year];\r\n\r\n if (this.tableData) {\r\n this.tableData = this.tableData.filter(d => d.response !== null);\r\n if (this.showSubmissionId) {\r\n this.tableData = this.tableData.map(t => { return { submissionCode: t.submissionId, response: t.response }});\r\n } else {\r\n this.tableData = this.tableData.map(t => { return { submissionCode: t.submissionCode, response: t.response }});\r\n }\r\n } else {\r\n this.error = true;\r\n }\r\n\r\n break;\r\n }\r\n case \"TBT\": { \r\n let tableTitle = ['Rank', 'Submission Code']\r\n let responseNames = []\r\n\r\n data.yearData[year].forEach((element, index) => {\r\n let responseCount= element.responseCount\r\n let responsesTotal = 0;\r\n let formattedTotal: string;\r\n let count = 1 \r\n let tableDataSet = {\r\n rank: index + 1,\r\n submissionCode: element.submissionCode, \r\n }\r\n\r\n while (count <= responseCount) {\r\n let responseName = \"response\" + count + \"Name\"\r\n let responseValue = element[\"response\" + count]\r\n let formattedResponseValue: any; \r\n if (!responseNames.includes(element[responseName])) {\r\n responseNames.push(element[responseName])\r\n } \r\n tableDataSet[\"response\" + count] = this.decimal(responseValue, data.chartTableDecPlaces, 'T')\r\n formattedResponseValue = this.decimal(responseValue, data.decPlaces, 'T')\r\n if (typeof formattedResponseValue === \"string\") {\r\n formattedResponseValue = formattedResponseValue.replace(/,/g, '')\r\n } \r\n responsesTotal = responsesTotal + +formattedResponseValue;\r\n formattedTotal = responsesTotal.toLocaleString() \r\n count ++\r\n }\r\n\r\n tableDataSet[\"Total\"] = formattedTotal;\r\n this.tableData.push(tableDataSet); \r\n });\r\n\r\n tableTitle = tableTitle.concat(responseNames) \r\n tableTitle.push('Total')\r\n this.buildTableTitle(tableTitle); \r\n \r\n break;\r\n }\r\n }\r\n }\r\n\r\n constructFigureTable(data, year, chartType) {\r\n this.figureData = [];\r\n if (chartType === 'B1' || (chartType !== 'SC' && chartType !== 'SBS' && chartType !== 'SCS' && chartType !== 'B2' && chartType !== 'SB' && chartType !== 'C2' && chartType !== 'CR' && chartType !== 'BI2' && chartType !== 'CI2') && chartType !== 'PI' && chartType !== 'YN') {\r\n this.buildOrgTableTitle(['Submission', 'Response']);\r\n\r\n data.yearData[year].forEach((element) => {\r\n\r\n // Set submission name, where available\r\n let selectedSubmission = this.submissionCodes ? this.submissionCodes.find(s => s.submissionCode === element.submissionCode) : null,\r\n submissionName;\r\n if (selectedSubmission) {\r\n submissionName = selectedSubmission.submissionName;\r\n } else {\r\n submissionName = element.submissionCode;\r\n }\r\n\r\n if (element.response1 != null && element.isHighlighted == 'Y') {\r\n if (data.formatModifier == 'T') {\r\n let dataDate = new Date(element.response1);\r\n\r\n this.figureData.push({\r\n organisation: submissionName,\r\n value: dataDate.getHours() + ':' + (dataDate.getMinutes() == 0 ? '00': dataDate.getMinutes())\r\n });\r\n }\r\n else if (data.formatModifier == 'P') {\r\n this.figureData.push({\r\n organisation: submissionName,\r\n value: this.decimal(element.response1, data.chartTableDecPlaces)\r\n });\r\n }\r\n else {\r\n this.figureData.push({\r\n organisation: submissionName,\r\n value: this.decimal(element.response1, data.chartTableDecPlaces, 'T')\r\n });\r\n }\r\n }\r\n\r\n });\r\n };\r\n\r\n if (chartType === \"SC\") {\r\n let responseNames = []\r\n data.yearData[year].forEach((element) => {\r\n // Set submission name, where available\r\n let selectedSubmission = this.submissionCodes\r\n ? this.submissionCodes.find(\r\n (s) => s.submissionCode === element.submissionCode\r\n )\r\n : null;\r\n let submissionName;\r\n \r\n if (selectedSubmission) {\r\n submissionName = selectedSubmission.submissionName;\r\n } else {\r\n submissionName = element.submissionCode;\r\n }\r\n\r\n if (element.responseCount > 1 && element.isHighlighted == 'Y') {\r\n let responseCount= element.responseCount\r\n let responsesTotal = 0;\r\n let count = responseCount\r\n let figureData = {\r\n organisation: submissionName\r\n }\r\n while (count > 0) {\r\n let responseName = \"response\" + count + \"Name\";\r\n let responseValue = element[\"response\" + count];\r\n if (!responseNames.includes(element[responseName])) {\r\n responseNames.push(element[responseName])\r\n } \r\n if (data.formatModifier == \"T\") {\r\n let dataDate = new Date(responseValue);\r\n figureData[\"value\" + count] =\r\n dataDate.getHours() +\r\n \":\" +\r\n (dataDate.getMinutes() == 0 ? \"00\" : dataDate.getMinutes());\r\n } else if (data.formatModifier == \"P\") {\r\n figureData[\"value\" + count] = this.decimal(\r\n responseValue,\r\n data.chartTableDecPlaces\r\n );\r\n } else {\r\n figureData[\"value\" + count] = this.decimal(\r\n responseValue,\r\n data.chartTableDecPlaces,\r\n \"T\"\r\n );\r\n }\r\n count--;\r\n }\r\n this.figureData.push(figureData);\r\n }\r\n });\r\n let tableTitles = [\"Submission\", ...responseNames]\r\n this.buildOrgTableTitle(tableTitles);\r\n }\r\n\r\n\r\n if (chartType === 'SBS' || chartType === 'SCS') {\r\n let responseNames = []\r\n data.yearData[year].forEach((element) => { \r\n\r\n // Set submission name, where available\r\n let selectedSubmission = this.submissionCodes ? this.submissionCodes.find(s => s.submissionCode === element.submissionCode) : null\r\n let submissionName\r\n\r\n if (selectedSubmission) {\r\n submissionName = selectedSubmission.submissionName;\r\n } else {\r\n submissionName = element.submissionCode;\r\n }\r\n\r\n if (element.responseCount > 1 && element.isHighlighted == 'Y') {\r\n let responseCount= element.responseCount\r\n let responsesTotal = 0;\r\n let count = responseCount\r\n let figureData = {\r\n organisation: submissionName\r\n }\r\n while (count > 0) {\r\n let responseName = \"response\" + count + \"Name\"\r\n let responseValue = element[\"response\" + count]\r\n if (!responseNames.includes(element[responseName])) {\r\n responseNames.push(element[responseName])\r\n }\r\n if (data.formatModifier == 'T') {\r\n let dataDate = new Date(responseValue)\r\n figureData[\"value\" + count] = dataDate.getHours() + ':' + (dataDate.getMinutes() == 0 ? '00': dataDate.getMinutes()) \r\n }\r\n else if (data.formatModifier == 'P') {\r\n figureData[\"value\" + count] = this.decimal(responseValue, data.chartTableDecPlaces) \r\n }\r\n else {\r\n figureData[\"value\" + count] = this.decimal(responseValue, data.chartTableDecPlaces, 'T')\r\n responsesTotal = responsesTotal + responseValue\r\n }\r\n count --\r\n }\r\n if (data.formatModifier !== 'T' && data.formatModifier !== 'P' && chartType === 'SCS') {\r\n figureData[\"Total\"] = this.decimal(responsesTotal, data.chartTableDecPlaces, 'T')\r\n } \r\n this.figureData.push(figureData);\r\n }\r\n });\r\n if (chartType === 'SCS') {\r\n responseNames.push('Total')\r\n }\r\n let tableTitles = [\"Submission\", ...responseNames]\r\n this.buildOrgTableTitle(tableTitles);\r\n }\r\n\r\n if (chartType === 'SB' && data.showChartTable == 'Y' && data.selectSubmissions == \"Y\") {\r\n \r\n this.buildOrgTableTitle(['Option', 'Response']);\r\n\r\n if (data.tableData[year]) {\r\n data.tableData[year].forEach(element => {\r\n this.figureData.push({\r\n organisation: element.submissionName,\r\n value: element.response\r\n })\r\n });\r\n } \r\n }\r\n\r\n if (chartType === 'YN' && data.submissionCodes[year] && data.tableData[year]) {\r\n this.buildOrgTableTitle(['Submission', 'Metric', 'Response']);\r\n\r\n let submissions = data.submissionCodes[year];\r\n let selectedSubmission = submissions.filter(s => s.submissionId == this.selectedSubmission)[0]\r\n let tableData = data.tableData[year].filter(d => d.submissionCode !== null);\r\n let metrics = data.yearData[year].map(e => e.metric);\r\n let noResponses = true;\r\n \r\n\r\n tableData.forEach(d => {\r\n submissions.forEach(s => {\r\n if (s.submissionCode === d.submissionCode && d.submissionCode !== null && s.submissionId == this.selectedSubmission) {\r\n noResponses = false;\r\n this.figureData.push({\r\n submission: s.submissionName,\r\n metric: this.placeholder(d.seriesName),\r\n value: d.response\r\n })\r\n }\r\n })\r\n })\r\n\r\n if (noResponses && selectedSubmission) { \r\n metrics.forEach((m) => {\r\n this.figureData.push({\r\n submission: selectedSubmission.submissionName,\r\n metric: this.placeholder(m),\r\n value: \"N/A\",\r\n });\r\n }); \r\n }\r\n\r\n if (this.figureData.length < metrics.length) {\r\n metrics.forEach(m => {\r\n if (!this.figureData.find(fD => fD.metric == m)) {\r\n this.figureData.push({\r\n submission: selectedSubmission.submissionName,\r\n metric: this.placeholder(m),\r\n value: \"N/A\",\r\n });\r\n } \r\n })\r\n } \r\n\r\n }\r\n\r\n \r\n\r\n if (chartType === 'PI' && data.submissionCodes[year] && data.tableData[year]) {\r\n this.buildOrgTableTitle(['Submission', 'Response']);\r\n\r\n let submissions = data.submissionCodes[year],\r\n tableData = data.tableData[year].filter(d => d.submissionCode !== null);\r\n\r\n tableData.forEach(d => {\r\n submissions.forEach(s => {\r\n if (s.submissionCode === d.submissionCode && s.submissionId == this.selectedSubmission) {\r\n this.figureData.push({\r\n submission: s.submissionName,\r\n value: d.response\r\n })\r\n }\r\n })\r\n });\r\n\r\n this.figureData = this.figureData.filter(d => d.submission !== null);\r\n }\r\n\r\n if (((chartType === 'B2' || chartType === 'C2') && data.yearData[year][0]) || (this.projectId === 34 && data.yearData[year].length && data.yearData[year][0].response1Name && data.yearData[year][0].response1Name.substring(0, 2) === \"1.\")) {\r\n this.buildOrgTableTitle(['Submission',\r\n this.titleUnits(this.placeholder(data.yearData[year][0].response1Name), this.selectedFormatModifier),\r\n this.titleUnits(this.placeholder(data.yearData[year][0].response2Name), this.selectedFormatModifier),\r\n this.titleUnits(this.placeholder(data.yearData[year][0].response3Name), this.selectedFormatModifier) != 'undefined (%)' ? this.titleUnits(this.placeholder(data.yearData[year][0].response3Name), this.selectedFormatModifier) : undefined\r\n ]);\r\n\r\n data.yearData[year].forEach((element) => {\r\n\r\n // Set submission name, where available\r\n let selectedSubmission = this.submissionCodes ? this.submissionCodes.find(s => s.submissionCode === element.submissionCode) : null;\r\n let submissionName;\r\n if (selectedSubmission) {\r\n submissionName = selectedSubmission.submissionName;\r\n } else {\r\n submissionName = element.submissionCode;\r\n }\r\n\r\n if ((element.response1 != null || element.response2 != null || element.response3 != null) && element.isHighlighted == 'Y') {\r\n if (data.formatModifier == 'P' && element.response3 == undefined) {\r\n this.figureData.push({\r\n organisation: submissionName,\r\n response1: this.decimal(element.response1, data.chartTableDecPlaces, 'T'),\r\n response2: this.decimal(element.response2, data.chartTableDecPlaces, 'T'),\r\n });\r\n }\r\n else {\r\n this.figureData.push({\r\n organisation: submissionName,\r\n response1: this.decimal(element.response1, data.chartTableDecPlaces, 'T'),\r\n response2: this.decimal(element.response2, data.chartTableDecPlaces, 'T'),\r\n response3: this.decimal(element.response3, data.chartTableDecPlaces, 'T')\r\n });\r\n }\r\n }\r\n\r\n });\r\n };\r\n\r\n this.figureTitle = this.figureTitle.filter(function( element ) {\r\n return element.name !== undefined;\r\n });\r\n }\r\n\r\n enableColorBlindness() {\r\n if(this.colorBlindnessEnabled == false){\r\n this.red = this.globalColors.colorBlindRed;\r\n this.chartBlue = this.globalColors.colorBlindchartBlue;\r\n this.green = this.globalColors.colorBlindGreen;\r\n this.colorBlindnessEnabled = true;\r\n } else {\r\n this.red = this.globalColors.red;\r\n this.chartBlue = this.globalColors.chartBlue;\r\n this.green = this.globalColors.green;\r\n this.colorBlindnessEnabled = false;\r\n }\r\n this.ngOnChanges();\r\n }\r\n\r\n exportChartAndTable(action: string, extension?: string) {\r\n const chartContainer = document.getElementById('highcharts-container');\r\n const infoAndColorBlindnessBtns = chartContainer.children[0];\r\n const chart = document.getElementById('chart');\r\n const chartExportBtnParent = document.querySelector('.highcharts-root') \r\n const chartExportBtn = document.querySelector('.highcharts-exporting-group')\r\n const referenceElement = document.querySelector('.highcharts-title') \r\n const tier = document.getElementById('tier')\r\n const chartContainerHeight = chartContainer.style.height\r\n\r\n chartExportBtnParent.removeChild(chartExportBtn)\r\n chartContainer.removeChild(tier) \r\n chartContainer.removeChild(infoAndColorBlindnessBtns);\r\n\r\n chartContainer.style.border= \"none\";\r\n\r\n if (action == 'print') {\r\n chartContainer.style.overflowY= \"visible\"; \r\n chart.style.width = \"700px\"\r\n \r\n html2canvas(chartContainer).then((canvas) => {\r\n const image = new Image();\r\n image.src = canvas.toDataURL('image/png');\r\n const body = document.body;\r\n const fragment = document.createDocumentFragment();\r\n while (body.firstChild) {\r\n fragment.appendChild(body.firstChild);\r\n }\r\n const clone = chartContainer.cloneNode(true);\r\n body.appendChild(clone); \r\n window.print();\r\n body.removeChild(clone); \r\n body.appendChild(fragment);\r\n chartContainer.style.overflowY = \"scroll\"\r\n chartContainer.style.border = \"1px solid #ccc\"; \r\n chart.style.width = \"initial\"\r\n chartContainer.insertBefore(infoAndColorBlindnessBtns, chartContainer.children[0])\r\n chartExportBtnParent.insertBefore(chartExportBtn, referenceElement)\r\n chartContainer.appendChild(tier)\r\n })\r\n }\r\n\r\n if (action == 'download') { \r\n chartContainer.style.height = 'auto';\r\n chartContainer.style.width = \"2000px\"\r\n chart.style.maxWidth = \"1950px\"\r\n \r\n setTimeout(() => {\r\n html2canvas(chartContainer).then(function (canvas) {\r\n const imageData = canvas.toDataURL('image/' + extension);\r\n if (extension == \"pdf\") {\r\n const documentDefinition = {\r\n pageSize: {\r\n width: 3508,\r\n height: 'auto'\r\n },\r\n content: [\r\n {image: imageData, width: 3508}\r\n ]\r\n };\r\n pdfMake.createPdf(documentDefinition).download('chart and table.pdf');\r\n }\r\n else {\r\n const link = document.createElement('a');\r\n link.href = imageData;\r\n link.download = 'chart and table.' + extension;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n chartContainer.style.height = chartContainerHeight\r\n chartContainer.style.width = \"\"\r\n chartContainer.style.border = \"1px solid #ccc\"; \r\n chart.style.maxWidth = \"initial\"\r\n chartContainer.insertBefore(infoAndColorBlindnessBtns, chartContainer.children[0])\r\n chartExportBtnParent.insertBefore(chartExportBtn, referenceElement)\r\n chartContainer.appendChild (tier) \r\n })\r\n }, 500) \r\n }\r\n }\r\n\r\n constructChart(data, year, view) {\r\n let subtitle = '';\r\n let optionFormatModifier = this.availableOptions.filter(o => o.optionId == this.selectedOption)[0].formatModifier;\r\n let genericSp = data.storedProcedure.includes('_generic_') ? true : false;\r\n this.selectedFormatModifier = data.formatModifier;\r\n this.numberResponses = null\r\n\r\n if (optionFormatModifier) {\r\n this.selectedFormatModifier = optionFormatModifier;\r\n }\r\n\r\n if (this.selectedPeerGroup > 0) {\r\n let peerGroup = this.availablePeerGroups.find(a => a.id == this.selectedPeerGroup);\r\n if (peerGroup) {\r\n subtitle += 'Peer Group: ' + peerGroup.name;\r\n }\r\n }\r\n\r\n if (data.submissionCodes[this.selectedYear]) {\r\n // this.submissionCodes = data.submissionCodes[this.selectedYear].filter(s => s.submissionCode !== null);\r\n this.submissionCodes = data.submissionCodes[this.selectedYear];\r\n this.submissionCodes = this.orderByPipe.transform(this.submissionCodes, \"submissionId\");\r\n } else {\r\n this.submissionCodes = [];\r\n }\r\n\r\n let chartObject = {\r\n chart: { style: { fontFamily: '\"Helvetica Neue\", Helvetica, Arial, sans-serif' } },\r\n title: { text: '', style: { fontWeight: 'bold' } },\r\n subtitle: { text: subtitle },\r\n xAxis: { categories: [], title: '', plotLines: [], labels: { rotation: 0, step: 1 }, formatter: {}, tickInterval: undefined },\r\n yAxis: { title: { text: this.placeholder(data.axisLabel) }, min: null, max: null, labels: {}, plotLines: [], opposite: true, tickInterval: undefined, dateTimeLabelFormats: {} },\r\n tooltip: {},\r\n colors: [\"#7cb5ec\", \"#777777\", \"#90ed7d\", \"#f7a35c\", \"#8085e9\", \"#f15c80\", \"#e4d354\", \"#2b908f\", \"#f45b5b\", \"#91e8e1\"],\r\n plotOptions: {},\r\n credits: { text: ''},\r\n legend: { },\r\n //http://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/exporting/menuitemdefinitions/\r\n // exporting: {\r\n // menuItemDefinitions: { chartId: { text: 'Chart #' + this.nodeSelection.id } },\r\n // buttons: { contextButton: { menuItems: [ \"chartId\", \"separator\", \"printChart\", \"separator\", \"downloadPNG\", \"downloadJPEG\", \"downloadPDF\", \"downloadSVG\"] } }\r\n // },\r\n series: [],\r\n exporting: {\r\n sourceWidth: 1000,\r\n chartOptions: {\r\n credits: { text: 'https://members.nhsbenchmarking.nhs.uk' + this.params },\r\n chart: {\r\n spacingBottom: 30,\r\n events: {\r\n render: function() {\r\n var chart = this,\r\n width = chart.chartWidth - 1000,\r\n height = chart.chartHeight - 40;\r\n chart.renderer.image('https://s3.eu-west-2.amazonaws.com/nhsbn-static/Other/2022/nhsbn-logo.png', width, height, 144, 35).add();\r\n }\r\n }\r\n }\r\n },\r\n menuItemDefinitions: {\r\n // Custom definition\r\n printChartAndTable: {\r\n onclick: () => {\r\n this.exportChartAndTable('print')\r\n },\r\n text: 'Print chart and table'\r\n },\r\n downloadPNG: { \r\n text: 'Download chart PNG image'\r\n },\r\n downloadChartAndTablePNG: {\r\n onclick: () => {\r\n this.exportChartAndTable('download','png')\r\n },\r\n text: 'Download chart and table PNG image'\r\n },\r\n downloadJPEG: { \r\n text: 'Download chart JPG image'\r\n },\r\n downloadChartAndTableJPEG: {\r\n onclick: () => {\r\n this.exportChartAndTable('download','jpeg')\r\n },\r\n text: 'Download chart and table JPG image'\r\n },\r\n downloadPDF: { \r\n text: 'Download chart PDF document'\r\n },\r\n downloadChartAndTablePDF: {\r\n onclick: () => {\r\n this.exportChartAndTable('download','pdf')\r\n },\r\n text: 'Download chart and table PDF document'\r\n }\r\n },\r\n buttons: {\r\n contextButton: {\r\n menuItems: ['printChart', 'downloadPNG', 'downloadJPEG', 'downloadPDF', 'separator',\r\n 'printChartAndTable', 'downloadChartAndTablePNG', 'downloadChartAndTableJPEG', 'downloadChartAndTablePDF']\r\n }\r\n }\r\n }\r\n };\r\n\r\n chartObject.title.text = this.placeholder(data.reportName);\r\n\r\n if (data.showChartTable == 'N') {\r\n this.chartTableView = false;\r\n }\r\n else {\r\n this.chartTableView = true;\r\n }\r\n\r\n if (data.yearData[year].length > 0) {\r\n switch(view) {\r\n case \"B1\": case \"B2\": case \"C1\": case \"C2\": case \"S7\": case \"S3\": case \"SM1\": case \"DB\": case \"CI2\": case \"BI2\": {\r\n this.barChart(data, year, chartObject, view, data.submissionCodes[this.selectedYear]);\r\n this.numberResponses = data.yearData[year][0].nationalResponseCount;\r\n this.numberSubmissionResponses = data.yearData[year][0].submissionResponseCount;\r\n break;\r\n }\r\n case \"CR\": {\r\n this.columnRangeChart(data, year, chartObject);\r\n break;\r\n }\r\n case \"YN\": {\r\n this.yesNoChart(data, year, chartObject, genericSp);\r\n // Separate number of responses for NACEL and Managing Frailty\r\n if ((this.projectId == 34 || this.projectId == 35) && data.yearData[year][0].metric == \"National\") {\r\n this.numberResponses = data.yearData[year][0].total;\r\n this.numberSubmissionResponses = data.yearData[year][1].total;\r\n }\r\n break;\r\n }\r\n case \"S15\": {\r\n this.yesNoAdvancedChart(data, year, chartObject);\r\n break;\r\n }\r\n case \"PI\": case \"PN\": {\r\n this.pieChart(data, year, chartObject, view);\r\n this.numberResponses = data.yearData[year][0].nationalResponseCount;\r\n break;\r\n }\r\n case \"RD\": {\r\n this.radarChart(data, year, chartObject);\r\n this.numberResponses = data.yearData[year][0].nationalResponseCount;\r\n break;\r\n }\r\n case \"G2\": case \"G3\": case \"G4\": case \"Y5\": case \"Y6\": case \"SB\": case \"SBS\": case \"SCS\": {\r\n this.stackedBarChart(data, year, chartObject, view);\r\n this.numberResponses = data.yearData[year][0].nationalResponseCount;\r\n // Separate number of submission responses for NACEL (SB)\r\n if (this.projectId == 34 && data.yearData[year][0].submissionCode == \"National\") {\r\n this.numberSubmissionResponses = data.yearData[year][1].seriesResponseCount;\r\n }\r\n break;\r\n }\r\n case \"VB\": {\r\n this.verticalBarChart(data, year, chartObject);\r\n break;\r\n }\r\n case \"L1\": {\r\n this.lineChart(data, year, chartObject);\r\n break;\r\n }\r\n case \"SC\": {\r\n this.scatterChart(data, year, chartObject);\r\n break;\r\n }\r\n case \"D1\": case \"D2\": case \"D3\": {\r\n this.directionChart(data, year, chartObject, view);\r\n }\r\n }\r\n }\r\n\r\n // Timeout to allow for reload, where necessary\r\n setTimeout(() => { this.chartData = chartObject }, 750);\r\n\r\n if (data.colourProfile) {\r\n this.chartData.colors = this.setColourProfile(data.colourProfile);\r\n }\r\n\r\n }\r\n\r\n constructPremTable(data, year, view) {\r\n if (view == 'P1') {\r\n // Get data for table\r\n this.premTable = data.yearData[year];\r\n\r\n // Add decimal places\r\n this.premTable.forEach(pt => {\r\n pt.responses.forEach(r => {\r\n r.nationalPosition = this.decimal(r.nationalPosition, data.decPlaces);\r\n r.individualPosition = this.decimal(r.individualPosition, data.decPlaces);\r\n })\r\n })\r\n\r\n // Mark as loaded\r\n this.chartLoaded = true;\r\n this.tableLoaded = true;\r\n }\r\n else {\r\n this.buildTableTitle(['Response #', 'Question Response']);\r\n // Specific to NACEL\r\n if (view == 'P3') {\r\n if (data.yearData[year].length > 0) {\r\n data.yearData[year].forEach((element, index) => {\r\n this.tableData.push({ responseNo: index + 1, responseQuestion: element.response_txt });\r\n });\r\n }\r\n else {\r\n this.tableData.push({ responseNo: '-', responseQuestion: 'No responses' })\r\n }\r\n }\r\n // Specific to NAIC\r\n else {\r\n if (data.yearData[year].length > 0) {\r\n data.yearData[year].forEach((element, index) => {\r\n this.tableData.push({ responseNo: index + 1, responseQuestion: element.q16_comment });\r\n });\r\n }\r\n else {\r\n this.tableData.push({ responseNo: '-', responseQuestion: 'No responses' })\r\n }\r\n }\r\n }\r\n }\r\n\r\n constructRPSTable(data, year) {\r\n this.rpsTable = data.yearData[year];\r\n }\r\n\r\n highlighted(submissionCodes, submissionData?, data?) {\r\n return function() {\r\n if ((submissionCodes[0] && submissionCodes[0].slice(2,6) == '***') || submissionCodes.includes('-----')) {\r\n if(data && data.hideCodes == 'Y'){\r\n return\r\n }\r\n else {\r\n return '' + this.value + ''\r\n }\r\n }\r\n else if (submissionCodes.includes(this.value) && submissionData) {\r\n let submission = submissionData.filter(f => f.submissionCode == this.value);\r\n let submissionColour = submission[0] ? submission[0].color : 'red';\r\n return `` + this.value + ''\r\n }\r\n else {\r\n return this.value\r\n }\r\n }\r\n }\r\n\r\n barChart(data, year, chartObject, view, submissionCodes?) {\r\n let firstRun: boolean = false;\r\n let selectedOrg: string[] = [];\r\n let responseCount: number;\r\n let responses = []; let responseNames = []; let responseNamesValues = [];\r\n let orgData = []; let values = []; let calcValues = [];\r\n let average;\r\n this.totalResponses = data.yearData[year].length;\r\n let peerGroup = [];\r\n\r\n // Assign submission colours\r\n this.submissionCodes = this.submissionCodes.map((item, index) => {\r\n var temp = Object.assign({}, item)\r\n temp.color = this.multiColorChart[index];\r\n return temp;\r\n });\r\n \r\n // Highlight submissions\r\n // data.yearData[year] = data.yearData[year].map(item => {\r\n // var temp = Object.assign({}, item) \r\n // this.submissionCodes.forEach(f => {\r\n // if(f.submissionCode == item.submissionCode) {\r\n // temp.color = f.color;\r\n // }\r\n // if(item.isHighlighted === 'Y' && item.submissionCode.includes('*') && item.submissionId == f.submissionId) {\r\n // temp.color = f.color;\r\n // } \r\n // });\r\n // return temp;\r\n // });\r\n\r\n data.yearData[year] = data.yearData[year].map(item => {\r\n var temp = Object.assign({}, item) \r\n this.submissionCodes.forEach(f => {\r\n if(f.submissionId == item.submissionId) {\r\n temp.color = f.color;\r\n } \r\n });\r\n return temp;\r\n });\r\n\r\n // Highlight peer group (MH and CYPMHS only)\r\n let highlightedSubmissions = sessionStorage.getItem('highlightedSubmissions');\r\n if (highlightedSubmissions && this.selectedYear) {\r\n if (JSON.parse(highlightedSubmissions).year == this.selectedYear) {\r\n this.highlightedSubmissions = JSON.parse(highlightedSubmissions).submissionList;\r\n this.highlightedPeerGroupId = JSON.parse(highlightedSubmissions).peerGroupId;\r\n data.yearData[year].forEach(item => {\r\n let matchingSubmission = this.highlightedSubmissions.find(sub => sub == item.submissionCode);\r\n if (matchingSubmission) {\r\n peerGroup.push(item);\r\n }\r\n if (matchingSubmission && item.isHighlighted !== 'Y') {\r\n item.color = 'green';\r\n item.isHighlighted = 'P';\r\n }\r\n });\r\n } else {\r\n this.removeHighlightedPeerGroup();\r\n }\r\n }\r\n data.yearData[year].forEach(element => {\r\n let nullCount = 0;\r\n\r\n if (element.itemName == 'Average') {\r\n average = element;\r\n }\r\n else {\r\n //Create list of iterable parameters\r\n if (!firstRun) {\r\n responseCount = element.responseCount;\r\n\r\n for (let i = 1; i <= responseCount; i++) {\r\n responses.push('response' + i);\r\n responseNames.push('response' + i + 'Name');\r\n responseNamesValues.push(this.placeholder(element[responseNames[i - 1]]));\r\n orgData.push({ name: '', data: []});\r\n values.push({ data: [] });\r\n calcValues.push({ data: [] });\r\n }\r\n }\r\n\r\n //Count for each null found per data point\r\n for (let key in element) {\r\n for (let i = 0; i < responseCount; i++) {\r\n if (key == responses[i]) {\r\n if(element[key] === null) nullCount++;\r\n }\r\n }\r\n }\r\n\r\n if (nullCount !== responseCount) {\r\n for (let key in element) {\r\n for (let i = 0; i < responseCount; i++) {\r\n if (key == responses[i]) {\r\n //dataPoint is the object for the chart with decimal places cleaned, calcDataPoint is raw data for the average and median\r\n let dataPoint = null; let calcDataPoint = null;\r\n\r\n if (this.selectedFormatModifier == 'T') {\r\n let date = new Date(element[key]);\r\n\r\n dataPoint = Date.UTC(2018, 0, 1, date.getHours(), date.getMinutes(), 0);\r\n calcDataPoint = dataPoint;\r\n }\r\n else {\r\n dataPoint = this.decimal(element[key], data.decPlaces);\r\n calcDataPoint = element[key];\r\n }\r\n\r\n if (element.isHighlighted == 'Y') {\r\n selectedOrg.push(element.submissionCode);\r\n }\r\n\r\n if (responseCount == 1) {\r\n orgData[i].data.push(element.isHighlighted !== null ? { y: dataPoint, color: element.color } : { y: dataPoint });\r\n }\r\n else {\r\n orgData[i].data.push({ y: dataPoint });\r\n }\r\n\r\n values[i].data.push(dataPoint);\r\n calcValues[i].data.push(calcDataPoint);\r\n }\r\n\r\n if (!firstRun && responseCount > 1) {\r\n if (key == responseNames[i]) {\r\n orgData[i].name = this.placeholder(element[key]);\r\n }\r\n }\r\n else if (!firstRun && responseCount == 1) {\r\n orgData[i].name = this.placeholder(data.reportName);\r\n }\r\n }\r\n }\r\n\r\n if (this.showSubmissionId) {\r\n chartObject.xAxis.categories.push(element.submissionId || element.itemName);\r\n } else {\r\n chartObject.xAxis.categories.push(element.submissionCode || element.itemName);\r\n }\r\n }\r\n\r\n firstRun = true;\r\n }\r\n });\r\n\r\n //Prevent charts with no data from further processing\r\n if (orgData.length == 0 || orgData[0].data.length == 0) {\r\n chartObject.series = {};\r\n return;\r\n }\r\n\r\n //Build table below chart - this will vary depending on whether the chart as multiple bars and what chart is being displayed\r\n //Need to split out table below chart and table view chart\r\n if (data.showChartTable == 'Y') {\r\n if (responseCount > 1) {\r\n if ((view == 'DB')) {\r\n let secondColumnTitle = data.storedProcedure == 'sp_a_generic_list_dual_bar_chart_nhsi_ld_alt' ? 'Sample' : responseNamesValues[0]\r\n this.buildTableTitle(['Metric', this.titleUnits(secondColumnTitle, this.selectedFormatModifier), this.titleUnits(responseNamesValues[1], this.selectedFormatModifier)]);\r\n chartObject.xAxis.categories.forEach((element, index) => {\r\n this.tableData.push({\r\n name: this.placeholder(element),\r\n national: this.decimal(calcValues[0].data[index], data.chartTableDecPlaces, 'T'),\r\n submission: this.decimal(calcValues[1].data[index], data.chartTableDecPlaces, 'T')\r\n });\r\n });\r\n }\r\n else {\r\n if (view.substring(0, 1) == 'S') {\r\n this.buildTableTitle([chartObject.title.text, 'Sample Average (%)', 'Your Position (%)']);\r\n\r\n chartObject.xAxis.categories.forEach((element, index) => {\r\n this.tableData.push({\r\n name: this.placeholder(element),\r\n nationalPosition: this.decimal(calcValues[1].data[index], data.chartTableDecPlaces, 'T'),\r\n averagePosition: this.decimal(calcValues[0].data[index], data.chartTableDecPlaces, 'T')\r\n });\r\n });\r\n\r\n if (view == 'SM1' && average) {\r\n this.buildTableTitle2(['Sample Average', 'Your Position'], this.selectedFormatModifier);\r\n\r\n this.tableData2.push({\r\n nationalAverage: this.decimal(average.response2, data.chartTableDecPlaces, 'T'),\r\n individualAverage: this.decimal(average.response1, data.chartTableDecPlaces, 'T')\r\n });\r\n }\r\n }\r\n else if (view == 'CI2' || view == 'BI2') {\r\n this.buildIndependantSeriesTableTitle(['', this.titleUnits('Sample', this.selectedFormatModifier), this.titleUnits('Submission', this.selectedFormatModifier)]);\r\n let dataArray = [];\r\n data.yearData[year].forEach(value => {\r\n dataArray.push(value);\r\n });\r\n\r\n dataArray.forEach(obj => {\r\n this.tableData.push({\r\n submissionCode: obj.submissionCode,\r\n sample: this.decimal(obj.response1),\r\n submission: this.decimal(obj.response2)\r\n });\r\n });\r\n }\r\n else {\r\n this.buildTableTitle(['', this.titleUnits('Sample Mean', this.selectedFormatModifier), this.titleUnits('Sample Median', this.selectedFormatModifier)]);\r\n\r\n orgData.forEach(element => {\r\n let chartAverage = this.average(calcValues[orgData.indexOf(element)].data);\r\n let chartMedian = this.median(calcValues[orgData.indexOf(element)].data);\r\n\r\n this.tableData.push({\r\n name: this.placeholder(element.name),\r\n avgPosition: this.decimal(chartAverage, data.chartTableDecPlaces, 'T'),\r\n median: this.decimal(chartMedian, data.chartTableDecPlaces, 'T')\r\n });\r\n });\r\n\r\n // Reverse order of table (chart series order dictated by SP)\r\n if(view !== 'C2') {\r\n this.tableData = this.tableData.reverse()\r\n }\r\n }\r\n }\r\n }\r\n else if (responseCount == 1) {\r\n this.buildTableTitle([this.titleUnits('Sample Mean', this.selectedFormatModifier), this.titleUnits('Sample Median', this.selectedFormatModifier)]);\r\n let chartAverage = this.average(calcValues[0].data);\r\n let chartMedian = this.median(calcValues[0].data);\r\n\r\n if (this.selectedFormatModifier == 'T') {\r\n let chartAverageTime = new Date(chartAverage);\r\n let chartMedianTime = new Date(chartMedian);\r\n\r\n this.tableData.push({\r\n avgPosition: chartAverageTime.getHours() + ':' + chartAverageTime.getMinutes(),\r\n orgPosition: chartMedianTime.getHours() + ':' + (chartMedianTime.getMinutes() == 0 ? '00': chartMedianTime.getMinutes())\r\n })\r\n }\r\n else {\r\n this.tableData.push({\r\n avgPosition: this.decimal(chartAverage, data.chartTableDecPlaces, 'T'),\r\n orgPosition: this.decimal(chartMedian, data.chartTableDecPlaces, 'T')\r\n });\r\n }\r\n }\r\n }\r\n\r\n //Modify the chart view settings depending on whether the chart is column or bar\r\n if (view.substring(0, 1) == \"C\") {\r\n chartObject.yAxis.opposite = false;\r\n chartObject.chart.type = 'column';\r\n\r\n // If columns are > 25, then rotate the labes by 60 degrees\r\n if (orgData[0].data.length > 25) {\r\n chartObject.xAxis.labels.rotation = 60;\r\n }\r\n }\r\n else {\r\n let chartHeight = 500 + (chartObject.xAxis.categories.length * 9);\r\n chartObject.chart.type = 'bar';\r\n chartObject.chart.height = chartHeight;\r\n }\r\n\r\n if (this.selectedFormatModifier == 'T') {\r\n chartObject.yAxis.type = 'datetime';\r\n chartObject.yAxis.tickInterval = 1000 * 60 * 60\r\n chartObject.yAxis.min = Date.UTC(2018, 0, 1, 0, 0, 0);\r\n chartObject.yAxis.dateTimeLabelFormats = {\r\n hour: '%H:%M',\r\n day: '%H:%M'\r\n };\r\n chartObject.tooltip = {\r\n formatter: function () {\r\n let selectedSubmission = submissionCodes ? submissionCodes.find(s => s.submissionCode === this.x) : null;\r\n if (selectedSubmission) {\r\n return '' + this.x + ': ' + selectedSubmission.submissionName + '
\\u25CF ' + this.series.name + ': ' + window['Highcharts'].dateFormat('%H:%M', this.point.y) + '';\r\n } else {\r\n return '' + this.x + '
\\u25CF ' + this.series.name + ': ' + window['Highcharts'].dateFormat('%H:%M', this.point.y) + '';\r\n }\r\n }\r\n }\r\n }\r\n else if (this.selectedFormatModifier == 'P') {\r\n chartObject.yAxis.max = data.maxValue;\r\n\r\n if (data.maxValue == 100) {\r\n chartObject.yAxis.tickInterval = 10;\r\n }\r\n\r\n chartObject.yAxis.labels = { formatter: function() { return this.value + '%'; } };\r\n chartObject.tooltip = {\r\n formatter: function() {\r\n let selectedSubmission = submissionCodes ? submissionCodes.find(s => s.submissionCode === this.x) : null;\r\n if (selectedSubmission) {\r\n return '' + this.x + ': ' + selectedSubmission.submissionName + '
\\u25CF ' + this.series.name + ': ' + this.y + '%';\r\n } else {\r\n return '' + this.x + '
\\u25CF ' + this.series.name + ': ' + this.y + '%';\r\n }\r\n }\r\n };\r\n }\r\n else if (this.selectedFormatModifier == 'M' || this.selectedFormatModifier == 'C') {\r\n chartObject.yAxis.labels = {\r\n formatter: function() {\r\n if (this.value >= 1000000) {\r\n return '£' + this.value / 1000000 + 'M'\r\n } else if (this.value > 100000 && this.value < 1000000) {\r\n return '£' + this.value / 1000 + 'K'\r\n } else if (this.value <= -1000000) {\r\n return '£' + this.value / 1000000 + 'M'\r\n } else if (this.value < -100000 && this.value > -1000000) {\r\n return '£' + this.value / 1000 + 'K'\r\n } else {\r\n return '£' + this.value.toLocaleString()\r\n }\r\n }\r\n };\r\n chartObject.tooltip = {\r\n formatter: function() {\r\n let selectedSubmission = submissionCodes ? submissionCodes.find(s => s.submissionCode === this.x) : null;\r\n if (selectedSubmission) {\r\n return '' + this.x + ': ' + selectedSubmission.submissionName + '
\\u25CF ' + this.series.name + ': ' + this.y.toLocaleString() + '';\r\n } else {\r\n return '' + this.x + '
\\u25CF ' + this.series.name + ': ' + this.y.toLocaleString() + '';\r\n }\r\n }\r\n };\r\n }\r\n else {\r\n chartObject.yAxis.labels = {\r\n formatter: function() {\r\n if (this.value >= 1000000) {\r\n return this.value / 1000000 + 'M'\r\n } else if (this.value >= 1000 && this.value <= 1000000) {\r\n return this.value / 1000 + 'K'\r\n } else if (this.value <= -1000000) {\r\n return this.value / 1000000 + 'M'\r\n } else if (this.value <= -1000 && this.value >= -1000000) {\r\n return this.value / 1000 + 'K'\r\n } else {\r\n return this.value.toLocaleString()\r\n }\r\n }\r\n };\r\n chartObject.tooltip = {\r\n formatter: function() {\r\n let selectedSubmission;\r\n if (submissionCodes) {\r\n selectedSubmission = submissionCodes ? submissionCodes.find(s => s.submissionCode === this.x) : null;\r\n }\r\n if (selectedSubmission) {\r\n return '' + this.x + ': ' + selectedSubmission.submissionName + '
\\u25CF ' + this.series.name + ': ' + this.y.toLocaleString() + '';\r\n } else {\r\n return '' + this.x + '
\\u25CF ' + this.series.name + ': ' + this.y.toLocaleString() + '';\r\n }\r\n }\r\n };\r\n }\r\n\r\n chartObject.yAxis.max = data.maxValue;\r\n chartObject.xAxis.labels.formatter = this.highlighted(selectedOrg, this.submissionCodes, data);\r\n chartObject.title.text = this.placeholder(data.reportName);\r\n chartObject.series = [...chartObject.series, ...orgData ]\r\n\r\n // Reverse order if set to ASC in database\r\n // TODO: Broaden to more chart types following testing\r\n if (data.sortOrder && data.sortOrder.includes('ASC') && (view === 'B1' || view === 'C1')) {\r\n chartObject.xAxis.categories.reverse();\r\n chartObject.series.forEach(d => { d.data = d.data.reverse(); });\r\n }\r\n\r\n // If sufficient data add quartiles (B1/C1 only)\r\n if (data.yearData[year].length > 3 && (view === 'B1' || view === 'C1')) {\r\n this.addQuartiles(orgData, chartObject, data, peerGroup, year);\r\n }\r\n }\r\n\r\n addQuartiles(orgData: any, chartObject: any, data: any, peerGroup: any, year: number) {\r\n // Calculate quartiles\r\n let values = orgData[0].data.map(d => d.y);\r\n let notRoundedvalues = data.yearData[year].map(d => d.response1);\r\n let quartiles = this.quartiles(values);\r\n\r\n if((this.projectId == 6 || this.projectId == 40) && quartiles == null) {\r\n this.tableData = [\r\n {\r\n mean: this.decimal(this.average(values), data.chartTableDecPlaces, 'T'),\r\n median: this.decimal(this.median(notRoundedvalues), data.chartTableDecPlaces, 'T'),\r\n }\r\n ]\r\n } else {\r\n // Add plotlines to y-axis\r\n chartObject.yAxis.plotLines[1] = { color: '#425563', width: 1, value: quartiles.q25, dashStyle: 'ShortDash', zIndex: 5 };\r\n chartObject.yAxis.plotLines[2] = { color: '#425563', width: 1, value: quartiles.q75, dashStyle: 'ShortDash', zIndex: 5 };\r\n chartObject.yAxis.plotLines[3] = { color: '#01C953', width: 2, value: this.median(notRoundedvalues), dashStyle: 'Solid', zIndex: 5 };\r\n chartObject.yAxis.plotLines[4] = { color: '#FD7E14', width: 2, value: this.average(values), dashStyle: 'Solid', zIndex: 5 };\r\n\r\n chartObject.series.push( {\r\n name: 'Mean',\r\n color: '#FD7E14',\r\n dashStyle: 'solid',\r\n marker: { enabled: false },\r\n type: 'line'\r\n },\r\n {\r\n name: 'Median',\r\n color: '#01C953',\r\n dashStyle: 'solid',\r\n marker: { enabled: false },\r\n type: 'line'\r\n },\r\n {\r\n name: 'Lower/Upper Quartiles',\r\n color: '#425563',\r\n dashStyle: 'shortdash',\r\n marker: { enabled: false },\r\n type: 'line'\r\n });\r\n\r\n // Reset table and table titles\r\n this.tableTitle = [];\r\n this.buildTableTitle(['', 'Lower Quartile', 'Mean', 'Median', 'Upper Quartile']);\r\n this.tableData = [\r\n {\r\n group: 'All Organisations',\r\n q25: this.decimal(quartiles.q25, data.chartTableDecPlaces, 'T'),\r\n mean: this.decimal(this.average(values), data.chartTableDecPlaces, 'T'),\r\n median: this.decimal(this.median(notRoundedvalues), data.chartTableDecPlaces, 'T'),\r\n q75:this.decimal(quartiles.q75, data.chartTableDecPlaces, 'T'),\r\n }\r\n ]\r\n }\r\n if (peerGroup.length > 0) {\r\n let groupValues = peerGroup.map(d => d.response1);\r\n let groupQuartiles = this.quartiles(groupValues);\r\n this.tableData.push({\r\n group: 'Highlighted Peer Group',\r\n q25: groupQuartiles ? this.decimal(groupQuartiles.q25, data.chartTableDecPlaces, 'T') : '-',\r\n mean: this.decimal(this.average(groupValues), data.chartTableDecPlaces, 'T'),\r\n median: this.decimal(this.median(groupValues), data.chartTableDecPlaces, 'T'),\r\n q75: groupQuartiles ? this.decimal(groupQuartiles.q75, data.chartTableDecPlaces, 'T') : '-'\r\n })\r\n }\r\n }\r\n\r\n columnRangeChart(data, year, chartObject) {\r\n if (data.storedProcedure == 'sp_a_generic_time_start_finish_chart' || data.storedProcedure) {\r\n this.tableH5 = 'Your Response'\r\n }\r\n let orgData = [{ name: data.shortName, data: [] }]; let values = [];\r\n let selectedOrg: string[] = [];\r\n\r\n data.yearData[year].forEach(element => {\r\n let nullCount = 0;\r\n\r\n if (element.response1 == null && element.response2 == null) {\r\n nullCount ++;\r\n }\r\n\r\n if (nullCount < 1) {\r\n let start = new Date(element.response1); let end = new Date(element.response2);\r\n if (element.isHighlighted == 'Y') {\r\n selectedOrg.push(element.submissionCode);\r\n orgData[0].data.push({ low: Date.UTC(2018, 1, 1, start.getHours(), start.getMinutes(), 0), high: Date.UTC(2018, 1, 1, end.getHours(), end.getMinutes(), 0), color: this.red });\r\n }\r\n else {\r\n orgData[0].data.push({ low: Date.UTC(2018, 1, 1, start.getHours(), start.getMinutes(), 0), high: Date.UTC(2018, 1, 1, end.getHours(), end.getMinutes(), 0)});\r\n }\r\n }\r\n\r\n chartObject.xAxis.categories.push(element.submissionCode || element.itemName);\r\n })\r\n\r\n //Prevent charts with no data from further processing\r\n if (orgData.length == 0 || orgData[0].data.length == 0) {\r\n chartObject.series = {};\r\n return;\r\n }\r\n\r\n //Build table below chart - this will vary depending on whether the chart as multiple bars and what chart is being displayed\r\n //Need to split out table below chart and table view chart\r\n if (data.showChartTable == 'Y' && values.length) {\r\n this.buildTableTitle([this.titleUnits('Sample Mean', this.selectedFormatModifier), this.titleUnits('Sample Median', this.selectedFormatModifier)]);\r\n\r\n let chartAverage = this.average(values[0].data);\r\n let chartMedian = this.median(values[0].data);\r\n\r\n this.tableData.push({\r\n avgPosition: this.decimal(chartAverage, data.chartTableDecPlaces, 'T'),\r\n orgPosition: this.decimal(chartMedian, data.chartTableDecPlaces, 'T')\r\n });\r\n\r\n chartObject.yAxis.plotLines[0] = { color: this.green, width: 2, value: chartAverage, dashStyle: 'Solid', zIndex: 5 };\r\n }\r\n else {\r\n this.buildTableTitle(['Organisation', 'Start', 'Finish']);\r\n let dates = orgData[0].data.filter(a => a.color !== undefined);\r\n if (dates.length) {\r\n dates.forEach((d, index) => {\r\n const organisationName = data.submissionCodes[year].find(sc => sc.submissionCode == selectedOrg[index % selectedOrg.length]).submissionName\r\n this.tableData.push({\r\n organisation: organisationName,\r\n start: new Date(d.low).toLocaleTimeString(),\r\n finish: new Date(d.high).toLocaleTimeString()\r\n })\r\n })\r\n }\r\n }\r\n\r\n let chartHeight = 500 + (chartObject.xAxis.categories.length * 9);\r\n chartObject.chart.type = 'columnrange'\r\n chartObject.chart.height = chartHeight\r\n chartObject.chart.inverted = true;\r\n chartObject.xAxis.labels.formatter = this.highlighted(selectedOrg);\r\n chartObject.yAxis.type = 'datetime';\r\n chartObject.yAxis.title = { text: 'Time' };\r\n chartObject.title.text = this.placeholder(data.reportName);\r\n chartObject.tooltip = {\r\n formatter: function () { return '' + this.x + ' started at ' + window['Highcharts'].dateFormat('%H:%M', this.point.low) + ' and ended at ' + window['Highcharts'].dateFormat('%H:%M', this.point.high) + ''; }\r\n }\r\n chartObject.series = orgData;\r\n\r\n if (data.storedProcedure == 'sp_a_generic_time_start_finish_chart_fixed') {\r\n chartObject.yAxis.min = Date.UTC(2018, 1, 1, 0, 0)\r\n chartObject.yAxis.max = Date.UTC(2018, 1, 1, 23, 59, 59);\r\n chartObject.yAxis.labels = { format: '{value:%H:%M}' }\r\n data.yearData[year].forEach((element, index) => { \r\n // Convert ISO 8601 strings to Date objects\r\n const response1 = new Date(element.response1);\r\n const response2 = new Date(element.response2);\r\n // Convert Date objects to milliseconds since Unix epoch\r\n const msResponse1 = response1.getTime();\r\n const msResponse2 = response2.getTime();\r\n // Check if response2 is smaller than response1 and dynamically change the chart\r\n const dayInMilliseconds = 86400000\r\n if (msResponse2 < msResponse1) {\r\n chartObject.series[0].data[index].high = chartObject.series[0].data[index].high + dayInMilliseconds\r\n chartObject.yAxis.max = Date.UTC(2018, 1, 2, 23, 59, 59);\r\n }\r\n }) \r\n }\r\n }\r\n\r\n verticalBarChart(data, year, chartObject) {\r\n let title = [];\r\n let results = { response: [], tableResponse: [] }\r\n\r\n data.yearData[year].forEach(element => {\r\n title.push(element.label);\r\n results.response.push(this.decimal(element.response1, data.decPlaces));\r\n\r\n // if (element.tableResponse) -- this, plus 2 below, commented out to make table show [needs better solution]\r\n results.tableResponse.push(element.tableResponse);\r\n });\r\n\r\n // if (results.tableResponse) {\r\n this.buildTableTitle(['Item', 'Your Response'])\r\n\r\n results.tableResponse.forEach((element, index) => {\r\n this.tableData.push({\r\n name: title[index],\r\n response: element\r\n })\r\n });\r\n // }\r\n\r\n chartObject.chart.type = 'column';\r\n chartObject.xAxis.categories = title;\r\n chartObject.yAxis.opposite = false;\r\n chartObject.series = [{ name: data.reportName, data: results.response }]\r\n }\r\n\r\n stackedBarChart(data, year, chartObject, view) {\r\n let orgData = [];\r\n let selectedOrg: string[] = [];\r\n let responseCount: number;\r\n let responses = [];\r\n let responseNames = [];\r\n let firstRun: boolean = false;\r\n\r\n data.yearData[year].forEach(element => {\r\n let nullCount = 0;\r\n\r\n //Create list of iterable parameters\r\n if (!firstRun) {\r\n responseCount = element.responseCount;\r\n\r\n for (let i = 1; i <= responseCount; i++) {\r\n responses.push('response' + i);\r\n responseNames.push('response' + i + 'Name');\r\n\r\n orgData.push({ name: '', data: [], highlighted: null, index: responseCount - i });\r\n }\r\n }\r\n\r\n //Count for each null found per data point\r\n for (let key in element) {\r\n for (let i = 0; i < responseCount; i++) {\r\n if (key == responses[i]) {\r\n if(element[key] === null) nullCount++;\r\n }\r\n }\r\n }\r\n\r\n //If nullCount == responseCount then dont add\r\n if (nullCount !== responseCount) {\r\n for (let key in element) {\r\n for (let i = 0; i < responseCount; i++) {\r\n if (key == responses[i]) {\r\n if (element.isHighlighted == 'Y') {\r\n orgData[i].highlighted = element[key];\r\n\r\n selectedOrg.push(element.submissionCode);\r\n }\r\n\r\n orgData[i].data.push(this.decimal(element[key], data.decPlaces));\r\n }\r\n\r\n if (!firstRun) {\r\n if (key == responseNames[i]) {\r\n orgData[i].name = element[key];\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.showSubmissionId) {\r\n chartObject.xAxis.categories.push(element.submissionId || element.metric);\r\n } else {\r\n chartObject.xAxis.categories.push(element.submissionCode || element.metric);\r\n }\r\n\r\n }\r\n\r\n firstRun = true;\r\n });\r\n\r\n // Specific to NACEL -- table for SB charts (CNR)\r\n if ((this.projectId === 34 && data.yearData[year][0].submissionCode == \"National\") || (this.projectId === 36 && data.yearData[year][0].response1Name == \"National\")) {\r\n // Build header\r\n this.buildTableTitle(['Metric', 'National (%)', 'Submission (%)']);\r\n // Main table and number of responses\r\n let yearData = data.yearData[year]\r\n /*\r\n The following approach is better, but can't get it to work...\r\n */\r\n //let iterateResponses = [];\r\n //for (let i = 0; i <= yearData[0].responseCount; ++i) {\r\n // iterateResponses[i] = [yearData[0].response + i + 'Name', this.decimal(yearData[0].response + i, 1, 'T'), this.decimal(yearData[1].response + i, 1, 'T')];\r\n //}\r\n let response1 = [yearData[0].response1Name, this.decimal(yearData[0].response1, 1, 'T'), this.decimal(yearData[1].response1, 1, 'T')];\r\n let response2 = [yearData[0].response2Name, this.decimal(yearData[0].response2, 1, 'T'), this.decimal(yearData[1].response2, 1, 'T')];\r\n let response3 = [yearData[0].response3Name, this.decimal(yearData[0].response3, 1, 'T'), this.decimal(yearData[1].response3, 1, 'T')];\r\n let response4 = [yearData[0].response4Name, this.decimal(yearData[0].response4, 1, 'T'), this.decimal(yearData[1].response4, 1, 'T')];\r\n let response5 = [yearData[0].response5Name, this.decimal(yearData[0].response5, 1, 'T'), this.decimal(yearData[1].response5, 1, 'T')];\r\n let response6 = [yearData[0].response6Name, this.decimal(yearData[0].response6, 1, 'T'), this.decimal(yearData[1].response6, 1, 'T')];\r\n let response7 = [yearData[0].response7Name, this.decimal(yearData[0].response7, 1, 'T'), this.decimal(yearData[1].response7, 1, 'T')];\r\n\r\n if (yearData[0].responseCount == 2) {\r\n this.tableData.push(response1, response2);\r\n }\r\n else if (yearData[0].responseCount == 3) {\r\n this.tableData.push(response1, response2, response3);\r\n }\r\n else if (yearData[0].responseCount == 4) {\r\n this.tableData.push(response1, response2, response3, response4);\r\n }\r\n else if (yearData[0].responseCount == 5) {\r\n this.tableData.push(response1, response2, response3, response4, response5);\r\n }\r\n else if (yearData[0].responseCount == 6) {\r\n this.tableData.push(response1, response2, response3, response4, response5, response6);\r\n }\r\n else if (yearData[0].responseCount == 7) {\r\n this.tableData.push(response1, response2, response3, response4, response5, response6, response7);\r\n }\r\n }\r\n else if (this.projectId === 34 && data.yearData[year][0].response1Name.substring(0, 2) === \"1.\") {\r\n let averageResponse1 = this.average(data.yearData[year].map(d => d.response1));\r\n let averageResponse2 = this.average(data.yearData[year].map(d => d.response2));\r\n this.tableData.push(\r\n {\r\n metric: data.yearData[year][0].response1Name,\r\n response: this.decimal(averageResponse1, data.chartTableDecPlaces) + '%'\r\n },\r\n {\r\n metric: data.yearData[year][0].response2Name,\r\n response: this.decimal(averageResponse2, data.chartTableDecPlaces) + '%'\r\n },\r\n )\r\n this.buildTableTitle(['Metric', 'National Average']);\r\n }\r\n else if (( this.projectId === 34 || ( this.projectId === 20 && year != 2024 )) && this.tierData.tableData && this.tierData.showChartTable == 'Y' && this.tierData.hasTable == 'Y') {\r\n // NACEL (34) and Pharmacy (20)\r\n this.tierData.tableData[year].forEach(element => {\r\n this.tableData.push(\r\n {\r\n metric: element.submissionName,\r\n response: element.response\r\n }\r\n )\r\n });\r\n this.buildTableTitle(['Metric', 'Your Response']);\r\n }\r\n else if (this.tierData.showChartTable == 'Y') {\r\n let currentOrgResponses = data.yearData[year]; \r\n let tableHeaders;\r\n\r\n if (this.tierData.storedProcedure != \"sp_a_generic_stacked_bar_chart\" && this.tierData.storedProcedure != \"sp_a_generic_dual_bar_chart\" ) { \r\n // Determine the count of responses needed\r\n const responseCount = currentOrgResponses[0].responseCount;\r\n\r\n currentOrgResponses.forEach(element => {\r\n let submissionCode = element.submissionCode;\r\n\r\n // Create the tableData object with submissionCode and the required responses\r\n let tableDataEntry = { submissionCode };\r\n\r\n // Dynamically add the required number of responses to the tableDataEntry\r\n for (let i = 1; i <= responseCount; i++) {\r\n tableDataEntry[`response${i}`] = this.decimal(element[`response${i}`], data.chartTableDecPlaces, 'T');\r\n }\r\n\r\n // Push the constructed tableDataEntry to tableData\r\n this.tableData.push(tableDataEntry);\r\n });\r\n\r\n // Initialize tableHeaders with the common \"Submission\" entry\r\n tableHeaders = data.yearData[year].map((e) => {\r\n const headers = [\"Submission\"];\r\n\r\n // Dynamically add response headers based on response count\r\n for (let i = 1; i <= responseCount; i++) {\r\n const responseName = this.placeholder(e[`response${i}Name`]);\r\n const formattedHeader = this.titleUnits(responseName, data.formatModifier);\r\n headers.push(formattedHeader);\r\n }\r\n\r\n return headers;\r\n })[0];\r\n }\r\n\r\n if ((this.tierData.storedProcedure == \"sp_a_generic_stacked_bar_chart\" || this.tierData.storedProcedure == \"sp_a_generic_dual_bar_chart\") && data.tableData[year]) {\r\n \r\n let meanValues = data.tableData[year].filter(e => e.submissionCode == \"AVG\");\r\n let medianValues = data.tableData[year].filter(e => e.submissionCode == \"MED\");\r\n let overallMeanValues = data.tableData[year].filter(e => e.submissionCode == \"OAVG\");\r\n let overallMedianValues = data.tableData[year].filter(e => e.submissionCode == \"OMED\");\r\n let combinedMeanAndMedianValues = []\r\n let combinedOverallValues = []\r\n \r\n let finalArray = []\r\n\r\n meanValues.forEach(e => {\r\n combinedMeanAndMedianValues.push({seriesName: e.seriesName, sampleMean: e.response}) \r\n })\r\n\r\n medianValues.forEach(e => {\r\n combinedMeanAndMedianValues.push({seriesName: e.seriesName, sampleMedian: e.response}) \r\n })\r\n\r\n let mergedMeanMedian = {};\r\n combinedMeanAndMedianValues.forEach(e => {\r\n let key = e.seriesName;\r\n if (!mergedMeanMedian[key]) {\r\n mergedMeanMedian[key] = { ...e };\r\n } else {\r\n mergedMeanMedian[key] = { ...mergedMeanMedian[key], ...e };\r\n } \r\n })\r\n\r\n Object.keys(mergedMeanMedian).forEach(key => {\r\n finalArray.push(mergedMeanMedian[key])\r\n });\r\n \r\n if (overallMeanValues[0] && overallMedianValues[0]) {\r\n overallMeanValues.forEach(e => {\r\n combinedOverallValues.push({seriesName: \"Total\", sampleMean: e.response}) \r\n }) \r\n overallMedianValues.forEach(e => {\r\n combinedOverallValues.push({seriesName: \"Total\", sampleMedian: e.response}) \r\n })\r\n let mergedOverall = {};\r\n combinedOverallValues.forEach(e => {\r\n let key = e.seriesName;\r\n if (!mergedOverall[key]) {\r\n mergedOverall[key] = { ...e };\r\n } else {\r\n mergedOverall[key] = { ...mergedOverall[key], ...e };\r\n } \r\n })\r\n\r\n Object.keys(mergedOverall).forEach(key => {\r\n finalArray.push(mergedOverall[key])\r\n });\r\n }\r\n\r\n finalArray.forEach(element => {\r\n let seriesName = element.seriesName;\r\n let sampleMean = [this.decimal(element.sampleMean, data.chartTableDecPlaces, 'T')];\r\n let sampleMedian = [this.decimal(element.sampleMedian, data.chartTableDecPlaces, 'T')];\r\n this.tableData.push({seriesName, sampleMean, sampleMedian});\r\n });\r\n\r\n tableHeaders = [\" \", this.titleUnits('Sample Mean', this.selectedFormatModifier),this.titleUnits('Sample Median', this.selectedFormatModifier)]\r\n } \r\n\r\n if (tableHeaders) {\r\n this.buildTableTitle(tableHeaders);\r\n }\r\n\r\n }\r\n\r\n let chartHeight = 500 + (orgData[0].data.length * 9);\r\n\r\n chartObject.chart.type = 'bar';\r\n chartObject.chart.height = chartHeight;\r\n chartObject.xAxis.labels.formatter = this.highlighted(selectedOrg, this.submissionCodes);\r\n chartObject.plotOptions = { series: { stacking: data.formatModifier == 'P' && view !== 'SBS' ? 'percent' : 'normal' } };\r\n chartObject.legend = { reversed: 'true' };\r\n chartObject.series = orgData;\r\n\r\n // SB = stacked bar to 100%\r\n // SBS = stacked bar scaled to data (no max.)\r\n chartObject.yAxis.max = view == 'SBS' ? null : 100;\r\n\r\n if (data.formatModifier == 'P') {\r\n chartObject.yAxis.max = data.maxValues\r\n chartObject.yAxis.labels = { formatter: function() { return this.value + '%'; } }\r\n\r\n if (data.maxValue == 100) {\r\n chartObject.yAxis.tickInterval = 10;\r\n }\r\n }\r\n\r\n if (view == 'SCS') {\r\n chartObject.chart.type = 'column';\r\n chartObject.yAxis.max = null;\r\n chartObject.yAxis = { reversed: false, title: {text: \"\"} };\r\n chartObject.chart.height = null;\r\n if (orgData[0].data.length > 25) {\r\n chartObject.xAxis.labels.rotation = 60;\r\n }\r\n }\r\n }\r\n\r\n lineChart(data, year, chartObject) {\r\n let labelA = data.storedProcedure == 'sp_a_generic_series_timeseries_all_org_median_chart' ? 'Median Position' : 'Average Position'\r\n\r\n let orgData = [{ name: labelA, data: [] }, { name: 'Individual Position', data: [], color: this.red }];\r\n\r\n data.yearData[year].forEach(element => {\r\n orgData[0].data.push({ y: this.decimal(element.response1, data.decPlaces) });\r\n orgData[1].data.push({ y: this.decimal(element.response2, data.decPlaces) });\r\n\r\n chartObject.xAxis.categories.push(element.label);\r\n\r\n this.tableData.push({\r\n metric: element.label,\r\n name: this.decimal(element.response1, data.decPlaces),\r\n data: this.decimal(element.response2, data.decPlaces)\r\n });\r\n });\r\n\r\n this.buildTableTitle(['Metric', labelA + (data.formatModifier == 'P' ? ' (%)' : ''), 'Individual Position' + (data.formatModifier == 'P' ? ' (%)' : '')]);\r\n\r\n chartObject.yAxis.opposite = false;\r\n chartObject.chart.type = 'line';\r\n chartObject.series = orgData;\r\n\r\n if (data.formatModifier == 'P') {\r\n chartObject.yAxis.labels = { formatter: function() { return this.value + '%'; } }\r\n chartObject.tooltip = { formatter: function() { return '' + this.x + '
\\u25CF ' + this.series.name + ': ' + this.y + '%'; } };\r\n if (data.maxValue == 100) {\r\n chartObject.yAxis.tickInterval = 10;\r\n }\r\n }\r\n }\r\n\r\n scatterChart(data, year, chartObject) {\r\n setTimeout(() => {\r\n const element = document.getElementById('chart')\r\n element.style.display = 'flex';\r\n element.style.justifyContent = 'center';\r\n }, 950);\r\n this.scatterChartShow = true\r\n let lengthOfResponses: Array = [];\r\n let scatterData: Array = [];\r\n let correlationCoefficient: string;\r\n // Assign submission colours\r\n this.submissionCodes = this.submissionCodes.map((item, index) => {\r\n var temp = Object.assign({}, item);\r\n temp.color = this.multiColorChart[index];\r\n return temp;\r\n });\r\n data.yearData[year] = data.yearData[year].map((item) => {\r\n var temp = Object.assign({}, item);\r\n this.submissionCodes.forEach((f) => {\r\n if (f.submissionId == item.submissionId) {\r\n temp.color = f.color;\r\n }\r\n });\r\n return temp;\r\n });\r\n data.yearData[year].forEach((element) => {\r\n scatterData.push({\r\n x: parseFloat(element.response2.toFixed(2)),\r\n y: parseFloat(element.response1.toFixed(2)),\r\n color: element.color,\r\n customValue: element.submissionCode,\r\n });\r\n lengthOfResponses.push([element.response2, element.response1]);\r\n });\r\n\r\n function getTrendLine(data) {\r\n const n = data.length;\r\n\r\n let sumX = 0,\r\n sumY = 0,\r\n sumXY = 0,\r\n sumX2 = 0;\r\n let sumY2 = 0;\r\n\r\n // Calculate the sums needed for linear regression\r\n for (let i = 0; i < n; i++) {\r\n const [x, y] = data[i];\r\n sumX += x;\r\n sumY += y;\r\n sumXY += x * y;\r\n sumX2 += x ** 2;\r\n sumY2 += y ** 2;\r\n }\r\n\r\n // Calculate the slope of the trend line\r\n const slope = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX ** 2);\r\n\r\n // Calculate the intercept of the trend line\r\n const intercept = (sumY - slope * sumX) / n;\r\n\r\n const trendline = []; // Array to store the trend line data points\r\n\r\n // Find the minimum and maximum x-values from the scatter plot data\r\n const minX = Math.min(...data.map(([x]) => x));\r\n const maxX = Math.max(...data.map(([x]) => x));\r\n\r\n // Calculate the corresponding y-values for the trend line using the slope\r\n // and intercept\r\n trendline.push([minX, minX * slope + intercept]);\r\n trendline.push([maxX, maxX * slope + intercept]);\r\n\r\n const numerator = n * sumXY - sumX * sumY;\r\n const denominator = Math.sqrt(\r\n (n * sumX2 - sumX ** 2) * (n * sumY2 - sumY ** 2)\r\n );\r\n correlationCoefficient = (numerator / denominator).toFixed(2);\r\n return trendline;\r\n }\r\n\r\n if (\r\n data.storedProcedure == \"sp_bi_nacel_cnr_average_time_admission_to_death\"\r\n ) {\r\n // NACEL legacy chart\r\n let orgData = [\r\n { name: \"All Responses\", data: [] },\r\n { name: \"Your Response(s)\", data: [], color: this.red },\r\n ];\r\n let scAverage = data.yearData[year][0].response3;\r\n let scSum = data.yearData[year][0].response4;\r\n\r\n data.yearData[year].forEach((element) => {\r\n orgData[0].data.push({\r\n y: this.decimal(element.response1, data.decPlaces),\r\n x: this.decimal(element.label, data.decPlaces),\r\n });\r\n orgData[1].data.push({\r\n y: this.decimal(element.response2, data.decPlaces),\r\n x: this.decimal(element.label, data.decPlaces),\r\n });\r\n });\r\n\r\n this.tableData.push([scSum, this.decimal(scAverage, data.decPlaces)]);\r\n this.buildTableTitle([\"Number of Responses\", \"Average Time (hours)\"]);\r\n\r\n chartObject.xAxis.title = { text: \"Number of Responses\" };\r\n chartObject.yAxis.title = { text: \"Time (in hours)\" };\r\n chartObject.yAxis.plotLines = [\r\n {\r\n value: scAverage,\r\n color: \"green\",\r\n width: 2,\r\n },\r\n ];\r\n chartObject.series = orgData;\r\n } else {\r\n chartObject.series = [\r\n {\r\n name: \"All Responses\",\r\n data: scatterData,\r\n },\r\n {\r\n type: \"line\",\r\n name: \"Trend Line\",\r\n data: getTrendLine(lengthOfResponses),\r\n color: \"#aecdeb\",\r\n marker: {\r\n enabled: false,\r\n },\r\n states: {\r\n hover: {\r\n lineWidth: 0,\r\n },\r\n },\r\n enableMouseTracking: false,\r\n },\r\n ];\r\n this.correlationCoefficient = correlationCoefficient\r\n chartObject.xAxis.title = { text: data.yearData[year][0].response2Name };\r\n chartObject.yAxis.title = { text: data.yearData[year][0].response1Name };\r\n let submissionCodes = this.submissionCodes;\r\n chartObject.tooltip = {\r\n formatter: function () {\r\n let selectedSubmission;\r\n if (submissionCodes) {\r\n selectedSubmission = submissionCodes\r\n ? submissionCodes.find(\r\n (s) => s.submissionCode === this.point.customValue\r\n )\r\n : null;\r\n }\r\n if (selectedSubmission) {\r\n return (\r\n '' +\r\n this.point.customValue +\r\n \": \" +\r\n selectedSubmission.submissionName +\r\n \"
\" +\r\n data.yearData[year][0].response2Name +\r\n \": \" +\r\n this.x +\r\n \"
\" +\r\n data.yearData[year][0].response1Name +\r\n \": \" +\r\n this.y\r\n );\r\n } else {\r\n return (\r\n '' +\r\n this.point.customValue +\r\n \"
\" +\r\n data.yearData[year][0].response2Name +\r\n \": \" +\r\n this.x +\r\n \"
\" +\r\n data.yearData[year][0].response1Name +\r\n \": \" +\r\n this.y\r\n );\r\n }\r\n },\r\n };\r\n }\r\n\r\n let allValuesForXAxis: any = []\r\n data.yearData[year].forEach(d => allValuesForXAxis.push(d.response2))\r\n let xAxisMax = Math.max(...allValuesForXAxis)\r\n let xAxisMin = Math.min(...allValuesForXAxis)\r\n\r\n let allValuesForYAxis: any = []\r\n data.yearData[year].forEach(d => allValuesForYAxis.push(d.response1))\r\n let yxAxisMax = Math.max(...allValuesForYAxis)\r\n let yAxisMin = Math.min(...allValuesForYAxis)\r\n\r\n let xTickInterval = caculateTickIntervalResponse(xAxisMin, xAxisMax, 10)\r\n let yTickInterval = caculateTickIntervalResponse(yAxisMin, yxAxisMax, 10)\r\n\r\n\r\n function caculateTickIntervalResponse(min, max, desiredTicks) {\r\n let range = max - min\r\n let interval = range / desiredTicks\r\n return Math.ceil(interval / 10) * 10\r\n }\r\n\r\n // General chart options\r\n chartObject.yAxis.opposite = false;\r\n chartObject.chart.type = \"scatter\";\r\n chartObject.chart.height = 750;\r\n chartObject.chart.width = 750;\r\n chartObject.xAxis.tickInterval = xTickInterval;\r\n chartObject.yAxis.tickInterval = yTickInterval;\r\n\r\n chartObject.plotOptions = { enabled: true };\r\n chartObject.xAxis.gridLineWidth = 1;\r\n chartObject.yAxis.gridLineWidth = 1;\r\n }\r\n\r\n yesNoChart(data, year, chartObject, genericSp?) {\r\n let orgData = [{ name: 'No', data: [] }, { name: 'Yes', data: [] }];\r\n chartObject.colors = [this.red, this.green];\r\n\r\n if (data.sortOrder) {\r\n switch (data.sortOrder.trim()) {\r\n case 'DESC':\r\n data.yearData[year].sort((a, b) => a.yes - b.yes);\r\n break;\r\n case 'ASC':\r\n data.yearData[year].sort((a, b) => a.no - b.no);\r\n break;\r\n }\r\n }\r\n\r\n data.yearData[year].forEach((element, index) => {\r\n let metric = this.placeholder(element.metric);\r\n\r\n chartObject.xAxis.categories.push(metric);\r\n\r\n if (index == 0 && element.na >= 0) {\r\n orgData = [{ name: 'NA', data: [] }, { name: 'No', data: [] }, { name: 'Yes', data: [] }]\r\n chartObject.colors = [this.grey, this.red, this.green];\r\n }\r\n\r\n if (element.total == 0) {\r\n if (element.na >= 0) {\r\n orgData[0].data.push({ y: null });\r\n orgData[1].data.push({ y: null });\r\n orgData[2].data.push({ y: null });\r\n }\r\n else {\r\n orgData[0].data.push({ y: null });\r\n orgData[1].data.push({ y: null });\r\n }\r\n }\r\n else {\r\n if (element.na >= 0) {\r\n orgData[0].data.push({ y: this.decimal(element.na, 1) });\r\n orgData[1].data.push({ y: this.decimal(element.no, 1) });\r\n orgData[2].data.push({ y: this.decimal(element.yes, 1) });\r\n }\r\n else {\r\n orgData[0].data.push({ y: this.decimal(100 - element.yes, 1) });\r\n orgData[1].data.push({ y: this.decimal(element.yes, 1) });\r\n }\r\n }\r\n\r\n // TODO: Standardise tableResponse between generic and no-generic SPs (API)\r\n // NACEL-specific: shows number of responses for generic, response for non-generic\r\n if ((this.projectId == 34 && data.yearData[year][0].metric != \"National\")) {\r\n if (genericSp) {\r\n this.tableData.push({\r\n name: metric,\r\n numberResponses: element.total\r\n });\r\n } else {\r\n this.tableData.push({\r\n name: metric,\r\n data: element.tableResponse\r\n });\r\n }\r\n }\r\n // All other projects, non-generic: shows submission response\r\n else if (!genericSp && element.tableResponse) {\r\n this.tableData.push({\r\n name: metric,\r\n data: element.tableResponse\r\n });\r\n }\r\n });\r\n\r\n // Table for YN(X) charts\r\n if ((this.projectId == 34 || this.projectId == 35) && data.yearData[year][0].metric == \"National\") {\r\n // NACEL (34) and Managing Frailty (35)\r\n this.buildTableTitle(['Metric', 'National (%)', 'Submission (%)']);\r\n let yearData = data.yearData[year];\r\n let yes = ['Yes', this.decimal(yearData[0].yes, 1, 'T'), this.decimal(yearData[1].yes, 1, 'T')];\r\n let no = ['No', this.decimal(yearData[0].no, 1, 'T'), this.decimal(yearData[1].no, 1, 'T')];\r\n let na = ['N/A', this.decimal(yearData[0].na, 1, 'T'), this.decimal(yearData[1].na, 1, 'T')];\r\n\r\n if (\"na\" in yearData[0]) {\r\n this.tableData.push(yes, no, na);\r\n }\r\n else {\r\n this.tableData.push(yes, no);\r\n }\r\n }\r\n else if (this.projectId == 34) {\r\n // NACEL-specific: shows number of responses for generic, response for non-generic\r\n if (genericSp) {\r\n this.buildTableTitle(['Metric', 'Number of Responses']);\r\n } else {\r\n this.buildTableTitle(['Metric', 'Your Response']);\r\n }\r\n }\r\n else if (data.viewTypes.map(v => v.viewType).includes('TYN')) {\r\n data.yearData[year].forEach(element => {\r\n if (\"na\" in element) {\r\n this.tableData.push({ metric: this.placeholder(element.metric), yes: this.decimal(element.yes, 1, 'T'), no: this.decimal(element.no, 1, 'T'), na: this.decimal(element.na, 1, 'T') });\r\n } else {\r\n this.tableData.push({ metric: this.placeholder(element.metric), yes: this.decimal(element.yes, 1, 'T'), no: this.decimal(element.no, 1, 'T'), total: this.decimal(element.total, 1, 'T') });\r\n }\r\n });\r\n if (this.tableData[0].na) {\r\n this.buildTableTitle(['Metric', 'Yes (%)', 'No (%)', 'NA (%)']);\r\n } else {\r\n this.buildTableTitle(['Metric', 'Yes (%)', 'No (%)', 'Total Responses']);\r\n }\r\n }\r\n else {\r\n if (this.tableData.length) {\r\n this.buildTableTitle(['Metric', 'Your Response']);\r\n }\r\n else if (data.tableData[year]) {\r\n data.tableData[year].forEach(element => {\r\n this.tableData.push({ metric: element.submissionName, yes: element.yes, no: element.no, na: element.na });\r\n });\r\n this.buildTableTitle(['Metric', 'Yes', 'No', 'NA']);\r\n }\r\n }\r\n\r\n let chartHeight = 300;\r\n\r\n if (orgData[0].data.length > 3) chartHeight += (orgData[0].data.length * 30);\r\n\r\n chartObject.chart.type = 'bar';\r\n chartObject.chart.height = chartHeight;\r\n chartObject.plotOptions = { series: { stacking: 'normal' } };\r\n chartObject.yAxis.max = 100;\r\n chartObject.legend = { reversed: 'true' };\r\n chartObject.series = orgData;\r\n\r\n if (data.formatModifier == 'P') {\r\n chartObject.yAxis.labels = { formatter: function() { return this.value + '%'; } }\r\n chartObject.tooltip = { formatter: function() { return '' + this.x + '
\\u25CF ' + this.series.name + ': ' + this.y + '%'; } };\r\n if (data.maxValue == 100) {\r\n chartObject.yAxis.tickInterval = 10;\r\n }\r\n }\r\n }\r\n\r\n yesNoAdvancedChart(data, year, chartObject) {\r\n let orgData = [{ name: 'No', data: [], color: this.red }, { name: 'Yes', data: [], color: this.green }];\r\n\r\n data.yearData[year].forEach(element => {\r\n chartObject.xAxis.categories.push(element.itemName);\r\n\r\n orgData[0].data.push({ y: this.decimal(100 - element.response1, data.decPlaces) });\r\n orgData[1].data.push({ y: this.decimal(element.response1, data.decPlaces) });\r\n\r\n this.tableData.push({ name: element.itemName, response1: this.decimal(element.response1, data.chartTableDecPlaces, 'T'), response2: this.decimal(element.response2, data.chartTableDecPlaces, 'T') });\r\n });\r\n\r\n this.buildTableTitle(['Delayed transfer of care', 'National Average (%)', 'Your Position (%)']);\r\n\r\n let chartHeight = 300;\r\n\r\n if (orgData[0].data.length > 3) chartHeight += (orgData[0].data.length * 30);\r\n\r\n chartObject.chart.type = 'bar';\r\n chartObject.chart.height = chartHeight;\r\n chartObject.plotOptions = { series: { stacking: 'normal' } };\r\n chartObject.yAxis.max = 100;\r\n chartObject.legend = { reversed: 'true' };\r\n chartObject.series = orgData;\r\n }\r\n\r\n pieChart(data, year, chartObject, view) {\r\n let orgData = { name: data.axisLabel, colorByPoint: true, data: [] };\r\n\r\n // TODO: Need to exclude Likert-style pie charts\r\n //let orderedData = this.orderByPipe.transform(data.yearData[year], '-result');\r\n data.yearData[year].forEach(element => {\r\n orgData.data.push({\r\n name: this.placeholder(element.itemName),\r\n y: this.decimal(element.result, data.decPlaces),\r\n colourReference: element.colourReference\r\n });\r\n\r\n if (view == 'PI' && data.reportParameters && Object.keys(data.reportParameters).length > 0) {\r\n this.tableData.push({\r\n name: this.placeholder(element.itemName),\r\n data: this.decimal(element.result, data.chartTableDecPlaces, 'T')\r\n });\r\n }\r\n else if (view == 'PN') {\r\n this.tableData.push({\r\n itemName: element.itemName,\r\n individualPosition: this.decimal(element.individualPosition, data.chartTableDecPlaces, 'T'),\r\n nationalPosition: this.decimal(element.nationalPosition, data.chartTableDecPlaces, 'T')\r\n });\r\n }\r\n });\r\n\r\n //Prevent charts with no data from further processing\r\n if (orgData.data.map(d => d.y).filter(d => d).length < 1) {\r\n chartObject.series = [];\r\n return;\r\n }\r\n\r\n if (view == 'PN') {\r\n this.buildTableTitle(['Item', 'Your Response', 'National Average']);\r\n }\r\n else {\r\n this.buildTableTitle(['Metric / Response', 'Value (%)']);\r\n }\r\n\r\n let selectedPieColors;\r\n\r\n if(this.colorBlindnessEnabled) {\r\n selectedPieColors = this.pieColorBlind;\r\n } else {\r\n selectedPieColors = this.pieColors;\r\n }\r\n let colorsSet = this.uniquePipe.transform(orgData.data.map(d => d.colourReference)),\r\n defaultPieColors = selectedPieColors,\r\n setPieColors = [],\r\n pieColors;\r\n\r\n if (colorsSet.length > 1) {\r\n orgData.data.forEach(d => {\r\n setPieColors.push('#' + d.colourReference);\r\n })\r\n }\r\n\r\n if (this.tierData.colourProfile) {\r\n pieColors = this.setColourProfile(this.tierData.colourProfile);\r\n } else if (setPieColors.length > 0) {\r\n pieColors = setPieColors;\r\n } else {\r\n pieColors = defaultPieColors;\r\n }\r\n\r\n chartObject.tooltip = { pointFormat: '{point.percentage:.1f}%' };\r\n chartObject.chart.type = 'pie';\r\n chartObject.plotOptions = {\r\n pie: {\r\n allowPointSelect: true,\r\n cursor: 'pointer',\r\n colors: pieColors,\r\n dataLabels: {\r\n enabled: true,\r\n format: '{point.name}: {point.percentage:.1f}%'\r\n }\r\n }\r\n };\r\n\r\n chartObject.series = [orgData];\r\n }\r\n\r\n radarChart(data, year, chartObject) {\r\n data.reportName = this.placeholder(data.reportName);\r\n let orgData = [{ name: data.reportName + ' (average)', type: 'line', data: [] }, { name: data.reportName + ' (submission)', type: 'line', color: this.red, data: [] }];\r\n let orgNullCount: number = 0;\r\n let avgNullCount: number = 0;\r\n\r\n data.yearData[year].forEach(element => {\r\n if (element.averageValue == null) {\r\n avgNullCount++;\r\n }\r\n if (element.organisationValue == null) {\r\n orgNullCount++;\r\n }\r\n\r\n chartObject.xAxis.categories.push(element.segmentName);\r\n\r\n let avgValue = parseFloat(element.averageValue || 0);\r\n let orgValue = parseFloat(element.organisationValue || 0);\r\n\r\n this.tableData.push({\r\n metric: element.segmentName,\r\n name: avgValue ? this.decimal(avgValue, data.chartTableDecPlaces, 'T') : 0,\r\n data: orgValue ? this.decimal(orgValue, data.chartTableDecPlaces, 'T') : 0\r\n });\r\n\r\n orgData[0].data.push(avgValue ? this.decimal(avgValue, data.decPlaces) : 0);\r\n orgData[1].data.push(orgValue ? this.decimal(orgValue, data.decPlaces) : 0);\r\n });\r\n\r\n this.buildTableTitle(['Metric', this.titleUnits('Sample Average', this.selectedFormatModifier), this.titleUnits('Your Position', this.selectedFormatModifier)]);\r\n\r\n chartObject.chart.polar = true;\r\n chartObject.chart.height = '50%';\r\n chartObject.yAxis = { gridLineInterpolation: 'polygon', min: 0, lineWidth: 0 };\r\n\r\n if (data.formatModifier == 'P') {\r\n chartObject.yAxis.labels = { formatter: function() { return this.value + '%'; } }\r\n chartObject.tooltip = { formatter: function() { return '' + this.x + '
\\u25CF ' + this.series.name + ': ' + this.y + '%'; } };\r\n }\r\n\r\n if (orgNullCount == data.yearData[year].length) {\r\n orgData.splice(1, 1);\r\n }\r\n\r\n if (orgNullCount == data.yearData[year].length && avgNullCount == data.yearData[year].length) {\r\n chartObject.series = [];\r\n }\r\n else {\r\n chartObject.series = orgData;\r\n }\r\n }\r\n\r\n directionChart(data, year, chartObject, view) {\r\n let orgAverage;\r\n let average;\r\n let values = [];\r\n\r\n chartObject.chart.type = 'columnrange';\r\n chartObject.chart.inverted = true;\r\n chartObject.legend = { enabled: false };\r\n chartObject.plotOptions = { columnrange: { pointWidth: 3, animation: false } };\r\n chartObject.tooltip = { enabled: false, crosshairs: false };\r\n chartObject.yAxis = { title: '', min: 0, max: null, labels: {}, plotLines: [], opposite: false, tickInterval: 1 };\r\n chartObject.series = [{ name: '', data: [] }];\r\n\r\n data.yearData[year].forEach(element => {\r\n if (element.label != 'Average' && element.label != 'Organisation Average') {\r\n chartObject.xAxis.categories.push(element.label);\r\n\r\n if (element.discharge >= element.admission) {\r\n values.push({ chartView: view, high: element.discharge, low: element.admission, color: view == 'D2' ? this.red : this.green });\r\n }\r\n else {\r\n values.push({ chartView: view, low: element.admission, high: element.discharge, color: view == 'D2' ? this.green : this.red });\r\n }\r\n\r\n this.tableData2.push({ user: element.label, admission: element.admission, discharge: element.discharge, change: element.difference || element.sunderland });\r\n }\r\n else if (element.label == 'Organisation Average') {\r\n orgAverage = element;\r\n }\r\n else {\r\n average = element;\r\n }\r\n });\r\n\r\n chartObject.series[0].name = data.reportName;\r\n chartObject.series[0].data = values;\r\n\r\n // So no data notification\r\n if (!values.length) {\r\n this.noDataNotification = true\r\n } else {\r\n this.noDataNotification = false;\r\n }\r\n\r\n chartObject.chart.events = {\r\n load: function () {\r\n let ren = this.renderer;\r\n\r\n this.series[0].data.forEach((element, index) => {\r\n let direction; let colour;\r\n\r\n if (element.high >= element.low) {\r\n direction = 1;\r\n\r\n if (element.chartView == 'D2') {\r\n colour = '#FF0000';\r\n }\r\n else {\r\n colour = '#00CC00';\r\n }\r\n }\r\n else {\r\n direction = -1;\r\n\r\n if (element.chartView == 'D2') {\r\n colour = '#00CC00';\r\n }\r\n else {\r\n colour = '#FF0000';\r\n }\r\n }\r\n\r\n ren.path([\r\n 'M', this.plotLeft + this.yAxis[0].translate(element.high) - (8 * direction), this.plotTop + this.series[0].data[this.series[0].data.length - index - 1].plotX - 8,\r\n 'L', this.plotLeft + this.yAxis[0].translate(element.high), this.plotTop + this.series[0].data[this.series[0].data.length - index - 1].plotX,\r\n 'L', this.plotLeft + this.yAxis[0].translate(element.high) - (8 * direction), this.plotTop + this.series[0].data[this.series[0].data.length - index - 1].plotX + 8, 'Z'\r\n ]).attr({\r\n stroke: colour,\r\n fill: colour,\r\n 'stroke-width': 1,\r\n zIndex: 3\r\n }).add();\r\n });\r\n }\r\n }\r\n\r\n let scoreTitle: string;\r\n if (view == 'D1') {\r\n this.barthelKey = true;\r\n scoreTitle = 'Barthel Score';\r\n }\r\n\r\n if (view == \"D2\") {\r\n this.sunderlandKey = true;\r\n scoreTitle = 'Sunderland Score';\r\n }\r\n\r\n if (view == \"D3\") {\r\n this.tomKey = true;\r\n scoreTitle = 'TOM Score';\r\n }\r\n\r\n if (average) {\r\n // Add national admission and discharge barthel averages\r\n chartObject.yAxis.plotLines[0] = { color: this.blue, width: 2, value: average.admission, dashStyle: 'Solid', zIndex: 5 };\r\n chartObject.yAxis.plotLines[1] = { color: this.blue, width: 2, value: average.discharge, dashStyle: 'Solid', zIndex: 5 };\r\n\r\n this.tableData.push({ score: 'Overall ' + scoreTitle, avgAdmission: this.decimal(average.admission, data.chartTableDecPlaces, 'T'), avgDischarge: this.decimal(average.discharge, data.chartTableDecPlaces, 'T') });\r\n }\r\n\r\n if (orgAverage) {\r\n // Add local admission and discharge barthel averages\r\n chartObject.yAxis.plotLines[2] = { color: this.blue, width: 2, value: orgAverage.admission, dashStyle: 'Dash', zIndex: 5 };\r\n chartObject.yAxis.plotLines[3] = { color: this.blue, width: 2, value: orgAverage.discharge, dashStyle: 'Dash', zIndex: 5 };\r\n\r\n this.tableData.push({ score: 'Your service ' + scoreTitle, avgAdmission: this.decimal(orgAverage.admission, data.chartTableDecPlaces, 'T'), avgDischarge: this.decimal(orgAverage.discharge, data.chartTableDecPlaces, 'T') });\r\n }\r\n\r\n this.buildTableTitle([scoreTitle, 'Avg Mean (admission)', 'Avg Mean (discharge)']);\r\n this.buildTableTitle2(['Service User #', 'Score on Admission', 'Score on Discharge', 'Change in Score']);\r\n\r\n let chartHeight = 300 + (chartObject.xAxis.categories.length * 25);\r\n chartObject.chart.height = chartHeight;\r\n }\r\n\r\n onYearChange(message: number) {\r\n this.yearSelectionMade = true;\r\n this.selectedYear = +message;\r\n this.selectedReport = this.allAvailableYears.filter(a => a.reportYear === this.selectedYear)[0].reportId || this.nodeSelection.reportId;\r\n\r\n this.getTierData(this.selectedReport, this.currentOrganisation, this.selectedPeerGroup, null, this.nodeSelection.serviceItemId, this.selectedOption, +message);\r\n }\r\n\r\n onPeerGroupChange(message) {\r\n this.peerGroupAdd.emit(message) // Send peerGroup to parent\r\n this.selectedPeerGroup = message;\r\n this.groupError = false;\r\n this.getTierData(this.selectedReport, this.currentOrganisation, message, this.selectedSubmission, this.nodeSelection.serviceItemId, this.selectedOption, this.selectedYear);\r\n // Reset Option to 0 for NACEL CNR\r\n if (this.projectId == 34 && (message == 2 || message == 6 || message == 10)) {\r\n this.selectedOption = 0\r\n }\r\n }\r\n\r\n onSubmissionChange(message) {\r\n this.submissionAdd.emit(message) // Send submission to parent\r\n this.selectedSubmission = message;\r\n this.getTierData(this.selectedReport, this.currentOrganisation, this.selectedPeerGroup, message, this.nodeSelection.serviceItemId, this.selectedOption, this.selectedYear);\r\n }\r\n\r\n onOptionChange(message) {\r\n this.optionAdd.emit(message) // Send option to parent\r\n this.selectedOption = message;\r\n this.getTierData(this.selectedReport, this.currentOrganisation, this.selectedPeerGroup, this.selectedSubmission, this.nodeSelection.serviceItemId, message, this.selectedYear);\r\n }\r\n\r\n onViewChange(message) {\r\n this.selectedView = message;\r\n\r\n this.viewSelection();\r\n this.router.navigate([], { queryParams: { view: message }, queryParamsHandling: 'merge' });\r\n\r\n if (this.selectedView == 'TB1' || this.selectedView == 'TB2' ) {\r\n this.tableOnly = true\r\n } else {\r\n this.tableOnly = false\r\n }\r\n\r\n }\r\n\r\n buildTableTitle(titles: Array, formatModifier?: string) {\r\n titles.forEach(element => {\r\n let title = element;\r\n\r\n if (formatModifier) { title = this.titleUnits(title, formatModifier); }\r\n\r\n this.tableTitle.push({ 'name': title });\r\n });\r\n }\r\n\r\n buildTableTitle2(titles: Array, formatModifier?: string) {\r\n titles.forEach(element => {\r\n let title = element;\r\n\r\n if (formatModifier) { title = this.titleUnits(title, formatModifier); }\r\n\r\n this.tableTitle2.push({ 'name': title });\r\n });\r\n }\r\n\r\n buildOrgTableTitle(titles: Array, formatModifier?: string) {\r\n titles.forEach(element => {\r\n let title = element;\r\n\r\n if (formatModifier) { title = this.titleUnits(title, formatModifier); }\r\n\r\n this.figureTitle.push({ 'name': title });\r\n });\r\n }\r\n\r\n buildIndependantSeriesTableTitle(titles: Array, formatModifier?: string) {\r\n titles.forEach(element => {\r\n let title = element;\r\n\r\n if (formatModifier) { title = this.titleUnits(title, formatModifier); }\r\n\r\n this.tableTitle.push({ 'name': title });\r\n });\r\n }\r\n\r\n resetData() {\r\n this.tableTitle = []; this.tableData = []; this.tableDataFull = [];\r\n this.tableTitle2 = []; this.tableData2 = [];\r\n this.figureTitle = []; this.figureData = [];\r\n this.premTable = []; this.rpsTable = [];\r\n this.barthelKey = false; this.sunderlandKey = false, this.tomKey = false;\r\n this.chartData = null;\r\n this.error = false;\r\n this.chartLoaded = false; this.tableLoaded = false;\r\n this.unsubscribe();\r\n }\r\n\r\n toggleAlternative(type) {\r\n this.chartData = null;\r\n this.chartLoaded = false;\r\n if (type === 'alternative') {\r\n this.showingAlternative = true;\r\n this.selectedReport = this.alternativeReportId;\r\n } else {\r\n this.selectedReport = this.nodeSelection.reportId;\r\n this.showingAlternative = false;\r\n }\r\n\r\n this.getTierData(\r\n this.selectedReport,\r\n this.currentOrganisation,\r\n this.selectedPeerGroup,\r\n this.selectedSubmission,\r\n this.nodeSelection.serviceItemId,\r\n this.selectedOption,\r\n this.selectedYear,\r\n this.nodeSelection.submissionLevel\r\n );\r\n }\r\n\r\n average(values: Array) {\r\n values = values.filter(x => x || x == 0);\r\n\r\n if (values.length < 1)\r\n return null;\r\n\r\n let sum = values.reduce((previous, current) => current += previous);\r\n\r\n return sum / values.length;\r\n }\r\n\r\n median(values: Array) {\r\n values = values.filter(x => x || x == 0);\r\n\r\n if (values.length < 1)\r\n return null;\r\n\r\n values.sort((a, b) => a - b);\r\n\r\n let lowMiddle = Math.floor((values.length - 1) / 2);\r\n let highMiddle = Math.ceil((values.length - 1) / 2);\r\n\r\n return (values[lowMiddle] + values[highMiddle]) / 2;\r\n }\r\n\r\n quartiles(values: Array) {\r\n\r\n let n = 4; // quartiles\r\n let sorted = values.sort((a, b) => { return a-b });\r\n let count = sorted.length;\r\n let m = count + 1;\r\n let quartiles = [];\r\n\r\n // Calculate quartiles using QUANTILES.EXC (Excel) methodology\r\n for (let i = 1; i < n; i++) {\r\n\r\n let j = Math.floor((i*m)/n);\r\n\r\n if (j < 1) {\r\n j = 1;\r\n } else if (j > count-1) {\r\n j = count - 1;\r\n }\r\n\r\n let delta = i*m - j*n;\r\n let interpolated = (sorted[j - 1] * (n - delta) + sorted[j] * delta) / n;\r\n quartiles.push(interpolated);\r\n }\r\n\r\n // Only return quartiles if more than two results\r\n if (count < 3) {\r\n return null;\r\n } else {\r\n return { q25: quartiles[0], q75: quartiles[2] };\r\n }\r\n\r\n }\r\n\r\n decimal(value: number, setValue?: number, type?: string) {\r\n if (value == null)\r\n return null;\r\n\r\n let result: string;\r\n\r\n if (setValue || setValue == 0) {\r\n if (type == 'T')\r\n result = value.toLocaleString('en-GB', { minimumFractionDigits: setValue, maximumFractionDigits: setValue });\r\n else\r\n result = value.toFixed(setValue);\r\n }\r\n else {\r\n if (value < 10 && value !== 0) {\r\n if (type == 'T')\r\n result = value.toLocaleString('en-GB', { minimumFractionDigits: 2, maximumFractionDigits: 2 });\r\n else\r\n result = value.toFixed(2);\r\n }\r\n\r\n if (value >= 10 && value < 100) {\r\n if (type == 'T')\r\n result = value.toLocaleString('en-GB', { minimumFractionDigits: 1, maximumFractionDigits: 1 });\r\n else\r\n result = value.toFixed(1);\r\n }\r\n\r\n if (value >= 100 || value === 0) {\r\n if (type == 'T')\r\n result = value.toLocaleString('en-GB', { minimumFractionDigits: 0, maximumFractionDigits: 0 });\r\n else\r\n result = value.toFixed(0);\r\n }\r\n }\r\n\r\n return type == 'T' ? result : +result;\r\n }\r\n\r\n placeholder(text: string) {\r\n if (text == null) { return text; }\r\n\r\n if (text.indexOf(\"|SINGLE_YEAR_CURRENT|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_CURRENT\\|\\*/g, this.selectedYear.toString());\r\n }\r\n if (text.indexOf(\"|SINGLE_YEAR_NEXT|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_NEXT\\|\\*/g, (this.selectedYear + 1).toString());\r\n }\r\n if (text.indexOf(\"|SINGLE_YEAR_PREVIOUS|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_PREVIOUS\\|\\*/g, (this.selectedYear - 1).toString());\r\n }\r\n if (text.indexOf(\"|SINGLE_YEAR_MINUS_2|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_MINUS_2\\|\\*/g, (this.selectedYear - 2).toString());\r\n }\r\n if (text.indexOf(\"|SINGLE_YEAR_MINUS_3|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_MINUS_3\\|\\*/g, (this.selectedYear - 3).toString());\r\n }\r\n if (text.indexOf(\"|DOUBLE_YEAR_NEXT|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_NEXT\\|\\*/g, (this.selectedYear).toString() + \"/\" + (this.selectedYear + 1).toString().substring(2, 4));\r\n }\r\n if (text.indexOf(\"|DOUBLE_YEAR_CURRENT|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_CURRENT\\|\\*/g, (this.selectedYear - 1).toString() + \"/\" + (this.selectedYear).toString().substring(2, 4));\r\n }\r\n if (text.indexOf(\"|DOUBLE_YEAR_PREVIOUS|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_PREVIOUS\\|\\*/g, (this.selectedYear - 2).toString() + \"/\" + (this.selectedYear - 1).toString().substring(2, 4));\r\n }\r\n if (text.indexOf(\"|DOUBLE_YEAR_MINUS_2|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_MINUS_2\\|\\*/g, (this.selectedYear - 3).toString() + \"/\" + (this.selectedYear - 2).toString().substring(2, 4));\r\n }\r\n if (text.indexOf(\"|DOUBLE_YEAR_MINUS_3|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_MINUS_3\\|\\*/g, (this.selectedYear - 4).toString() + \"/\" + (this.selectedYear - 3).toString().substring(2, 4));\r\n }\r\n if (text.indexOf(\"|SERVICE_SPECIFIC_TEXT|\") > 0) {\r\n text = text.replace(/\\*\\|SERVICE_SPECIFIC_TEXT\\|\\*/g, this.nodeSelection.serviceItemName);\r\n }\r\n if (text.indexOf(\"|OPTION_TITLE|\") > 0) {\r\n if (this.availableOptions.filter(o => o.optionId == this.selectedOption)[0].titleOptionName) {\r\n text = text.replace(/\\*\\|OPTION_TITLE\\|\\*/g, this.availableOptions.filter(o => o.optionId == this.selectedOption)[0].titleOptionName);\r\n }\r\n else {\r\n text = text.replace(/\\*\\|OPTION_TITLE\\|\\*/g, \"\");\r\n }\r\n }\r\n if (text.indexOf(\"    \") > -1) {\r\n text = text.replace(/    /g, '');\r\n }\r\n\r\n return text;\r\n }\r\n\r\n titleUnits(text: string, formatModifier: string) {\r\n if (formatModifier == 'D') {\r\n text = text + ' (Days)';\r\n }\r\n\r\n if (formatModifier == 'Y') {\r\n text = text + ' (Years)';\r\n }\r\n\r\n if (formatModifier == 'P') {\r\n text = text + ' (%)';\r\n }\r\n\r\n if (formatModifier == 'C') {\r\n text = text + ' (£)';\r\n }\r\n\r\n return text;\r\n }\r\n\r\n setColourProfile(colourProfile) {\r\n switch(colourProfile) {\r\n case 'yn_dark':\r\n return ['#C62B2C', '#01C953'];\r\n case 'pie_alt':\r\n return ['#9D26B0', '#2296F3', '#01C953', '#E91F63', '#FF9700', '#30409F', '#0198A7', '#C62B2C', '#455A64', '#CE92D7', '#90CAF9', '#80E4A9', '#F48FB1', '#FFCB7F', '#979FCF', '#80CBD3', '#E29595', '#A2ACB1'];\r\n default:\r\n return ['#9D26B0', '#2296F3', '#01C953', '#E91F63', '#FF9700', '#30409F', '#0198A7', '#C62B2C', '#455A64'];\r\n }\r\n }\r\n\r\n downloadData(data) {\r\n if (this.selectedView === 'B1' || this.selectedView === 'C1' || this.selectedView === 'B2' || this.selectedView === 'BI2') {\r\n let download = [];\r\n data.forEach(d => {\r\n if (this.selectedView === 'B2') {\r\n download.push({ submission: d.submissionCode, value: d.response1, value2: d.response2 })\r\n } else {\r\n if (d.response1 !== null) {\r\n download.push({ submission: d.submissionCode, value: d.response1, value2: null })\r\n }\r\n }\r\n });\r\n this.download.emit(download);\r\n } else {\r\n this.download.emit(null);\r\n }\r\n }\r\n\r\n shiftOption(direction: string): void {\r\n // Check current index\r\n let currentIndex = this.availableOptions.findIndex(opt => opt.optionId == this.selectedOption);\r\n let newIndex;\r\n // Check length of availableOptions\r\n let optionsLength = this.availableOptions.length;\r\n // Update index based on direct +/- 1\r\n if (direction == 'up') {\r\n newIndex = currentIndex + 1;\r\n } else {\r\n newIndex = currentIndex - 1;\r\n }\r\n // If within available options, getTierYears with new optionId\r\n if (newIndex > -1 && newIndex < optionsLength) {\r\n this.selectedOption = newIndex;\r\n this.router.navigate([], { queryParams: { option: this.selectedOption }, queryParamsHandling: 'merge' })\r\n this.getTierYears(\r\n this.nodeSelection.id,\r\n this.currentOrganisation,\r\n this.selectedPeerGroup,\r\n this.selectedSubmission ? this.selectedSubmission.submissionId : null,\r\n this.nodeSelection.serviceItemId,\r\n newIndex,\r\n this.defaultYear,\r\n this.nodeSelection.submissionLevel\r\n );\r\n }\r\n }\r\n\r\n public getOptionNames(projectId: number): void {\r\n this.memberService.getPrimaryOptionNames(projectId).subscribe(\r\n success => {\r\n this.optionGroups = success.data.optionNames;\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n\r\n public setOptionPreference(): void {\r\n let optionPreference = sessionStorage.getItem('nhsbnOptPref');\r\n if (optionPreference) {\r\n this.optionPreference = optionPreference;\r\n }\r\n }\r\n\r\n public changeOptionPreference(preference: string): void {\r\n this.optionPreference = preference;\r\n sessionStorage.setItem('nhsbnOptPref', preference);\r\n }\r\n\r\n public removeOptionPreference(): void {\r\n sessionStorage.removeItem('nhsbnOptPref');\r\n this.optionPreference = undefined;\r\n }\r\n\r\n public getSubmissionPeerGroups(projectId: number, defaultYear: number): void {\r\n this.memberService.getSubmissionPeerGroups(projectId, defaultYear).subscribe(\r\n success => {\r\n this.allPeerGroups = success.data.peerGroupList;\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n\r\n public changeHighlightedPeerGroup(peerGroupId: number): void {\r\n let highlightedSubmissions = this.allPeerGroups.find(group => group.peerGroupId == peerGroupId);\r\n if (highlightedSubmissions) {\r\n this.highlightedSubmissions = highlightedSubmissions.submissionList;\r\n this.highlightedPeerGroupId = peerGroupId;\r\n sessionStorage.setItem('highlightedSubmissions', JSON.stringify({\r\n year: this.selectedYear,\r\n peerGroupId: this.highlightedPeerGroupId,\r\n submissionList: this.highlightedSubmissions\r\n }));\r\n // Re-get data to apply change\r\n this.getTierData(\r\n this.selectedReport,\r\n this.currentOrganisation,\r\n this.selectedPeerGroup,\r\n this.selectedSubmission,\r\n this.nodeSelection.serviceItemId,\r\n this.selectedOption,\r\n this.selectedYear,\r\n this.nodeSelection.submissionLevel\r\n );\r\n }\r\n }\r\n\r\n public removeHighlightedPeerGroup(): void {\r\n sessionStorage.removeItem('highlightedSubmissions');\r\n this.highlightedPeerGroupId = undefined;\r\n this.highlightedSubmissions = [];\r\n // Re-get data to apply change\r\n this.getTierData(\r\n this.selectedReport,\r\n this.currentOrganisation,\r\n this.selectedPeerGroup,\r\n this.selectedSubmission,\r\n this.nodeSelection.serviceItemId,\r\n this.selectedOption,\r\n this.selectedYear,\r\n this.nodeSelection.submissionLevel\r\n );\r\n }\r\n \r\n public dataSharingCodes() {\r\n this.memberService.dataSharingCodes(this.projectId, this.defaultYear).subscribe(\r\n success => {\r\n this.submissionCodeList = success.data.submissionCodeList\r\n this.submissionCodeMappedData = this.submissionCodeList.map(item => {\r\n return { \r\n headers: [\"Submission Name\", \"Organisation Project Lead Contact\", \"Submission Code\"],\r\n data: [item.organisationName, item.projectLead, item.submissionCode,],\r\n subName: [item.submissionName],\r\n contactEmail: [,item.projectLeadEmail,]\r\n };\r\n });\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n )\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { OutputsComponent } from './outputs.component'\r\n\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service'\r\n\r\nconst outputsRoutes: Routes = [\r\n { path: 'outputs/:projectId', component: OutputsComponent, canActivate: [AuthGuardService] }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(outputsRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class OutputsRoutingModule { }","module.exports = \"
\\r\\n Loading the toolkit...\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

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

{{nodes?.projectName}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
1\\\">\\r\\n
\\r\\n
{{ s.reportNameFormatted }}
\\r\\n
\\r\\n {{ s.reportYear }}\\r\\n {{ s.serviceItemName }}\\r\\n
\\r\\n
\\r\\n
1\\\">\\r\\n Loading charts...\\r\\n
\\r\\n
\\r\\n There are no results for this search\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

There has been an issue whilst loading the outputs page, please contact a member of the NHS Benchmarking Network to assist you with this issue.

\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n Validation Tool\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
TierSubmissionDescriptionValueDelete
{{ v.reportName }} ({{ v.tierId }}){{ v.submissionCode || '-' }}{{ v.validationDescription || '-' }}{{ v.validationValue }}\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

1\\\">{{ p.seriesName }}

\\r\\n
\\r\\n
{{ pp.parameterTypeName }}
\\r\\n
\\r\\n {{ ppp.questionId ? ppp.questionId : '' }}{{ ppp.questionPart ? '-' + ppp.questionPart : '' }}\\r\\n \\r\\n {{ ': ' + ppp.parameterDefinition }}\\r\\n \\r\\n \\r\\n {{ ppp.questionText ? ppp.questionText : ppp.constantValue }}\\r\\n  | {{ ppp.subQuestionText }}\\r\\n  | {{ ppp.subQuestionHeadingText }}\\r\\n
Context: {{ ppp.dataDefinition ? ppp.dataDefinition : ppp.parentQuestionText }}
\\r\\n
Context: {{ ppp.dataDefinition ? ppp.dataDefinition : ppp.parentQuestionText }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Stored Procedure
\\r\\n
{{ storedProcedure }}
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \".tiers-loading {\\n text-align: center;\\n margin-top: 25vh;\\n color: #005EB8;\\n font-size: 2em;\\n font-weight: 500; }\\n\\n.tiers-loading i {\\n margin-right: 0.25em; }\\n\\n#containerOutputs {\\n margin-bottom: 3em; }\\n\\n.output-header {\\n padding: 1em;\\n background-color: #005EB8;\\n margin-bottom: 1em; }\\n\\n.output-header h3 {\\n margin-top: 0;\\n margin-bottom: 0;\\n color: white; }\\n\\n.output-header:hover {\\n cursor: pointer; }\\n\\n.tree-container {\\n margin-top: 1em;\\n font-size: 17px;\\n padding-left: 1em; }\\n\\n#listTree p {\\n margin: 1em 0; }\\n\\n#listTree > div > a {\\n padding-left: 0; }\\n\\n.list-group-item .fa {\\n margin-right: 10px; }\\n\\n.header-container {\\n display: flex; }\\n\\n.header-left {\\n flex: 1;\\n margin-right: 0.5em;\\n width: 10%; }\\n\\n.header-right {\\n width: 90%; }\\n\\n.defunct {\\n color: #768692; }\\n\\n#activeAdminBar {\\n position: fixed;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n padding: 0.5em 0.25em;\\n background-color: #fdbc30;\\n z-index: 10;\\n border-top: 1px solid black; }\\n\\n#activeAdminBar.top {\\n position: relative;\\n margin-top: -2em;\\n bottom: auto; }\\n\\n#activeAdminBar .no-validation {\\n font-weight: 600;\\n margin: 0.5em; }\\n\\n#activeAdminBar .btn-default {\\n background-color: #fdbc30;\\n border-color: transparent;\\n color: black;\\n border-radius: 4px;\\n font-weight: 600;\\n margin: 0 0.25em; }\\n\\n#activeAdminBar .btn-default:hover {\\n background-color: #e59900; }\\n\\n#activeAdminBar .btn-default.full-validation {\\n float: right; }\\n\\n#activeAdminBar .btn-default:focus {\\n outline-color: black; }\\n\\n#activeAdminBar i {\\n margin-right: 0.5em; }\\n\\n#activeAdminBar .badge {\\n background-color: black;\\n color: #fdbc30;\\n margin-left: 0.5em; }\\n\\n#activeAdminBar .btn-default:hover {\\n background-color: #e59900; }\\n\\n.activeAdmin-show {\\n background-color: #fdbc30;\\n border-radius: 4px; }\\n\\n/deep/ .activeAdmin-show .node-content-wrapper:hover,\\n/deep/ .activeAdmin-show .node-content-wrapper-focused {\\n background-color: #e59900; }\\n\\n#quickValidation {\\n position: fixed;\\n bottom: 4.5em;\\n left: 1em;\\n padding: 1em;\\n border-radius: 4px;\\n width: 60%;\\n background-color: #fdbc30;\\n box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);\\n z-index: 10000;\\n max-height: 50vh;\\n overflow-y: scroll; }\\n\\n#quickValidation table {\\n width: 100%; }\\n\\n#quickValidation table thead {\\n background-color: #e59900; }\\n\\n#quickValidation table th,\\n#quickValidation table tr td {\\n border: 1px solid black;\\n padding: 0.5em; }\\n\\n#quickValidation .fas:hover {\\n cursor: pointer; }\\n\\n#reportParameters {\\n position: fixed;\\n bottom: 4.5em;\\n left: 12%;\\n padding: 1em;\\n border-radius: 4px;\\n width: 30%;\\n background-color: #fdbc30;\\n box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);\\n z-index: 10000;\\n max-height: 50vh;\\n overflow-y: scroll; }\\n\\n#reportParameters h4 {\\n font-weight: bold; }\\n\\n#reportParameters .parameter-container:not(:first-of-type) h4 {\\n margin-top: 1em; }\\n\\n#reportParameters .parameter-container .parameter:last-of-type {\\n border-bottom: 1px solid black;\\n margin-bottom: -1px; }\\n\\n#reportParameters .parameter-type {\\n border: 1px solid black;\\n background-color: #E59900;\\n padding: 0.5em;\\n font-weight: bold; }\\n\\n#reportParameters .parameter {\\n border-left: 1px solid black;\\n border-right: 1px solid black;\\n padding: 0.5em; }\\n\\n/deep/ angular2csv > button {\\n border: none;\\n font-weight: 600;\\n background-color: #FDBC30;\\n padding: 6px 12px;\\n border-radius: 4px;\\n display: inline-block; }\\n\\n/deep/ angular2csv > button:hover {\\n background-color: #e59900; }\\n\\n#outputSidebar {\\n position: relative;\\n width: 100%; }\\n\\n#outputSidebar .form-control {\\n margin-top: 0.5em;\\n width: 100%; }\\n\\n#searchableTiers {\\n position: absolute;\\n top: 0;\\n width: 100%;\\n min-height: 65px;\\n max-height: 400px;\\n border: 1px solid #ccc;\\n overflow-y: scroll;\\n padding: 0.5em;\\n background-color: white;\\n z-index: 1000;\\n margin-top: 2.75em;\\n box-shadow: 0 14px 28px rgba(0, 0, 0, 0.1), 0 10px 10px rgba(0, 0, 0, 0.1); }\\n\\n#searchableTiers .no-results {\\n color: gray;\\n padding: 1em 0;\\n width: 100%;\\n text-align: center; }\\n\\n#searchableTiers .tier {\\n margin-bottom: 0.25em;\\n padding: 0.5em;\\n border-radius: 3px; }\\n\\n#searchableTiers .tier:hover {\\n background-color: #F3F3F3;\\n cursor: pointer; }\\n\\n#searchableTiers .tier-name {\\n font-weight: 600;\\n margin-bottom: 0.25em; }\\n\\n#searchableTiers .tier-meta {\\n color: gray;\\n font-size: 14px; }\\n\\n#searchableTiers .tier-meta span:first-of-type {\\n background-color: darkgray;\\n color: white;\\n margin-right: 0.5em;\\n padding: 2px 4px;\\n border-radius: 2px; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3V0cHV0cy9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxvdXRwdXRzXFxvdXRwdXRzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9vdXRwdXRzL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxfdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDQyxrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2hCLGNDRmlCO0VER2pCLGNBQWM7RUFDZCxnQkFBZ0IsRUFBQTs7QUFHakI7RUFDQyxvQkFBb0IsRUFBQTs7QUFHckI7RUFDQyxrQkFBa0IsRUFBQTs7QUFHbkI7RUFDQyxZQUFZO0VBQ1oseUJDakJpQjtFRGtCakIsa0JBQWtCLEVBQUE7O0FBR25CO0VBQ0MsYUFBYTtFQUNiLGdCQUFnQjtFQUNoQixZQUFZLEVBQUE7O0FBR2I7RUFDQyxlQUFlLEVBQUE7O0FBR2hCO0VBQ0MsZUFBZTtFQUNmLGVBQWU7RUFDZixpQkFBaUIsRUFBQTs7QUFHbEI7RUFDQyxhQUFhLEVBQUE7O0FBR2Q7RUFDQyxlQUFlLEVBQUE7O0FBR2hCO0VBQ0Msa0JBQWtCLEVBQUE7O0FBR25CO0VBQ0MsYUFBYSxFQUFBOztBQUdkO0VBQ0MsT0FBTztFQUNQLG1CQUFtQjtFQUNuQixVQUFVLEVBQUE7O0FBR1g7RUFDQyxVQUFVLEVBQUE7O0FBR1g7RUFDQyxjQzlEaUIsRUFBQTs7QURpRWxCO0VBQ0MsZUFBZTtFQUNmLFNBQVM7RUFDVCxPQUFPO0VBQ1AsV0FBVztFQUNYLHFCQUFxQjtFQUNyQix5QkFBeUI7RUFDekIsV0FBVztFQUNYLDJCQUEyQixFQUFBOztBQUc1QjtFQUNDLGtCQUFrQjtFQUNsQixnQkFBZ0I7RUFDaEIsWUFBWSxFQUFBOztBQUdiO0VBQ0MsZ0JBQWdCO0VBQ2hCLGFBQWEsRUFBQTs7QUFHZDtFQUNDLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixnQkFBZ0I7RUFDaEIsZ0JBQWdCLEVBQUE7O0FBR2pCO0VBQ0MseUJBQXlCLEVBQUE7O0FBRzFCO0VBQ0MsWUFBWSxFQUFBOztBQUdiO0VBQ0Msb0JBQW9CLEVBQUE7O0FBR3JCO0VBQ0MsbUJBQW1CLEVBQUE7O0FBR3BCO0VBQ0MsdUJBQXVCO0VBQ3ZCLGNBQWM7RUFDZCxrQkFBa0IsRUFBQTs7QUFHbkI7RUFDQyx5QkFBeUIsRUFBQTs7QUFHMUI7RUFDQyx5QkFBeUI7RUFDekIsa0JBQWtCLEVBQUE7O0FBR25COztFQUVDLHlCQUF5QixFQUFBOztBQUcxQjtFQUNDLGVBQWU7RUFDZixhQUFhO0VBQ2IsU0FBUztFQUNULFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsVUFBVTtFQUNWLHlCQUF5QjtFQUN6Qiw0RUFBc0U7RUFDdEUsY0FBYztFQUNkLGdCQUFnQjtFQUNoQixrQkFBa0IsRUFBQTs7QUFHbkI7RUFDQyxXQUFXLEVBQUE7O0FBR1o7RUFDQyx5QkFBeUIsRUFBQTs7QUFHMUI7O0VBRUMsdUJBQXVCO0VBQ3ZCLGNBQWMsRUFBQTs7QUFHZjtFQUNDLGVBQWUsRUFBQTs7QUFHaEI7RUFDQyxlQUFlO0VBQ2YsYUFBYTtFQUNiLFNBQVM7RUFDVCxZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLFVBQVU7RUFDVix5QkFBeUI7RUFDekIsNEVBQXNFO0VBQ3RFLGNBQWM7RUFDZCxnQkFBZ0I7RUFDaEIsa0JBQWtCLEVBQUE7O0FBR25CO0VBQ0MsaUJBQWlCLEVBQUE7O0FBR2xCO0VBQ0MsZUFBZSxFQUFBOztBQUdoQjtFQUNDLDhCQUE4QjtFQUM5QixtQkFBbUIsRUFBQTs7QUFHcEI7RUFDQyx1QkFBdUI7RUFDdkIseUJBQXlCO0VBQ3pCLGNBQWM7RUFDZCxpQkFBaUIsRUFBQTs7QUFHbEI7RUFDQyw0QkFBNEI7RUFDNUIsNkJBQTZCO0VBQzdCLGNBQWMsRUFBQTs7QUFHZjtFQUNDLFlBQVk7RUFDWixnQkFBZ0I7RUFDaEIseUJBQXlCO0VBQ3pCLGlCQUFpQjtFQUNqQixrQkFBa0I7RUFDbEIscUJBQXFCLEVBQUE7O0FBR3RCO0VBQ0MseUJBQXlCLEVBQUE7O0FBSzFCO0VBQ0Msa0JBQWtCO0VBQ2xCLFdBQVcsRUFBQTs7QUFHWjtFQUNDLGlCQUFpQjtFQUNqQixXQUFXLEVBQUE7O0FBR1o7RUFDQyxrQkFBa0I7RUFDbEIsTUFBTTtFQUNOLFdBQVc7RUFDWCxnQkFBZ0I7RUFDaEIsaUJBQWlCO0VBQ2pCLHNCQUFzQjtFQUN0QixrQkFBa0I7RUFDbEIsY0FBYztFQUNkLHVCQUF1QjtFQUN2QixhQUFhO0VBQ2Isa0JBQWtCO0VBQ2xCLDBFQUFvRSxFQUFBOztBQUdyRTtFQUNDLFdBQVc7RUFDWCxjQUFjO0VBQ2QsV0FBVztFQUNYLGtCQUFrQixFQUFBOztBQUduQjtFQUNDLHFCQUFxQjtFQUNyQixjQUFjO0VBQ2Qsa0JBQWtCLEVBQUE7O0FBR25CO0VBQ0MseUJBQXlCO0VBQ3pCLGVBQWUsRUFBQTs7QUFHaEI7RUFDQyxnQkFBZ0I7RUFDaEIscUJBQXFCLEVBQUE7O0FBR3RCO0VBQ0MsV0FBVztFQUNYLGVBQWUsRUFBQTs7QUFHaEI7RUFDQywwQkFBMEI7RUFDMUIsWUFBWTtFQUNaLG1CQUFtQjtFQUNuQixnQkFBZ0I7RUFDaEIsa0JBQWtCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9vdXRwdXRzL291dHB1dHMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi92YXJpYWJsZXMnO1xyXG5cclxuLnRpZXJzLWxvYWRpbmcge1xyXG5cdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRtYXJnaW4tdG9wOiAyNXZoO1xyXG5cdGNvbG9yOiAkbmhzLWJsdWU7XHJcblx0Zm9udC1zaXplOiAyZW07XHJcblx0Zm9udC13ZWlnaHQ6IDUwMDtcclxufVxyXG5cclxuLnRpZXJzLWxvYWRpbmcgaSB7XHJcblx0bWFyZ2luLXJpZ2h0OiAwLjI1ZW07XHJcbn1cclxuXHJcbiNjb250YWluZXJPdXRwdXRzIHtcclxuXHRtYXJnaW4tYm90dG9tOiAzZW07XHJcbn1cclxuXHJcbi5vdXRwdXQtaGVhZGVyIHtcclxuXHRwYWRkaW5nOiAxZW07XHJcblx0YmFja2dyb3VuZC1jb2xvcjogJG5ocy1ibHVlO1xyXG5cdG1hcmdpbi1ib3R0b206IDFlbTtcclxufVxyXG5cclxuLm91dHB1dC1oZWFkZXIgaDMge1xyXG5cdG1hcmdpbi10b3A6IDA7XHJcblx0bWFyZ2luLWJvdHRvbTogMDtcclxuXHRjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbi5vdXRwdXQtaGVhZGVyOmhvdmVyIHtcclxuXHRjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi50cmVlLWNvbnRhaW5lciB7XHJcblx0bWFyZ2luLXRvcDogMWVtO1xyXG5cdGZvbnQtc2l6ZTogMTdweDtcclxuXHRwYWRkaW5nLWxlZnQ6IDFlbTtcclxufVxyXG5cclxuI2xpc3RUcmVlIHAge1xyXG5cdG1hcmdpbjogMWVtIDA7XHJcbn1cclxuXHJcbiNsaXN0VHJlZSA+IGRpdiA+IGEge1xyXG5cdHBhZGRpbmctbGVmdDogMDtcclxufVxyXG5cclxuLmxpc3QtZ3JvdXAtaXRlbSAuZmEge1xyXG5cdG1hcmdpbi1yaWdodDogMTBweDtcclxufVxyXG5cclxuLmhlYWRlci1jb250YWluZXIge1xyXG5cdGRpc3BsYXk6IGZsZXg7XHJcbn1cclxuXHJcbi5oZWFkZXItbGVmdCB7XHJcblx0ZmxleDogMTtcclxuXHRtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG5cdHdpZHRoOiAxMCU7XHJcbn1cclxuXHJcbi5oZWFkZXItcmlnaHQge1xyXG5cdHdpZHRoOiA5MCU7XHJcbn1cclxuXHJcbi5kZWZ1bmN0IHtcclxuXHRjb2xvcjogJG5ocy1ncmV5O1xyXG59XHJcblxyXG4jYWN0aXZlQWRtaW5CYXIge1xyXG5cdHBvc2l0aW9uOiBmaXhlZDtcclxuXHRib3R0b206IDA7XHJcblx0bGVmdDogMDtcclxuXHR3aWR0aDogMTAwJTtcclxuXHRwYWRkaW5nOiAwLjVlbSAwLjI1ZW07XHJcblx0YmFja2dyb3VuZC1jb2xvcjogI2ZkYmMzMDtcclxuXHR6LWluZGV4OiAxMDtcclxuXHRib3JkZXItdG9wOiAxcHggc29saWQgYmxhY2s7XHJcbn1cclxuXHJcbiNhY3RpdmVBZG1pbkJhci50b3Age1xyXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRtYXJnaW4tdG9wOiAtMmVtO1xyXG5cdGJvdHRvbTogYXV0bztcclxufVxyXG5cclxuI2FjdGl2ZUFkbWluQmFyIC5uby12YWxpZGF0aW9uIHtcclxuXHRmb250LXdlaWdodDogNjAwO1xyXG5cdG1hcmdpbjogMC41ZW07XHJcbn1cclxuXHJcbiNhY3RpdmVBZG1pbkJhciAuYnRuLWRlZmF1bHQge1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICNmZGJjMzA7XHJcblx0Ym9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuXHRjb2xvcjogYmxhY2s7XHJcblx0Ym9yZGVyLXJhZGl1czogNHB4O1xyXG5cdGZvbnQtd2VpZ2h0OiA2MDA7XHJcblx0bWFyZ2luOiAwIDAuMjVlbTtcclxufVxyXG5cclxuI2FjdGl2ZUFkbWluQmFyIC5idG4tZGVmYXVsdDpob3ZlciB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogI2U1OTkwMDtcclxufVxyXG5cclxuI2FjdGl2ZUFkbWluQmFyIC5idG4tZGVmYXVsdC5mdWxsLXZhbGlkYXRpb24ge1xyXG5cdGZsb2F0OiByaWdodDtcclxufVxyXG5cclxuI2FjdGl2ZUFkbWluQmFyIC5idG4tZGVmYXVsdDpmb2N1cyB7XHJcblx0b3V0bGluZS1jb2xvcjogYmxhY2s7XHJcbn1cclxuXHJcbiNhY3RpdmVBZG1pbkJhciBpIHtcclxuXHRtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59XHJcblxyXG4jYWN0aXZlQWRtaW5CYXIgLmJhZGdlIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcclxuXHRjb2xvcjogI2ZkYmMzMDtcclxuXHRtYXJnaW4tbGVmdDogMC41ZW07XHJcbn1cclxuXHJcbiNhY3RpdmVBZG1pbkJhciAuYnRuLWRlZmF1bHQ6aG92ZXIge1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICNlNTk5MDA7XHJcbn1cclxuXHJcbi5hY3RpdmVBZG1pbi1zaG93IHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRiYzMwO1xyXG5cdGJvcmRlci1yYWRpdXM6IDRweDtcclxufVxyXG5cclxuL2RlZXAvIC5hY3RpdmVBZG1pbi1zaG93IC5ub2RlLWNvbnRlbnQtd3JhcHBlcjpob3ZlcixcclxuL2RlZXAvIC5hY3RpdmVBZG1pbi1zaG93IC5ub2RlLWNvbnRlbnQtd3JhcHBlci1mb2N1c2VkIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZTU5OTAwO1xyXG59XHJcblxyXG4jcXVpY2tWYWxpZGF0aW9uIHtcclxuXHRwb3NpdGlvbjogZml4ZWQ7XHJcblx0Ym90dG9tOiA0LjVlbTtcclxuXHRsZWZ0OiAxZW07XHJcblx0cGFkZGluZzogMWVtO1xyXG5cdGJvcmRlci1yYWRpdXM6IDRweDtcclxuXHR3aWR0aDogNjAlO1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICNmZGJjMzA7XHJcblx0Ym94LXNoYWRvdzogMCAxNHB4IDI4cHggcmdiYSgwLDAsMCwwLjI1KSwgMCAxMHB4IDEwcHggcmdiYSgwLDAsMCwwLjIyKTtcclxuXHR6LWluZGV4OiAxMDAwMDtcclxuXHRtYXgtaGVpZ2h0OiA1MHZoO1xyXG5cdG92ZXJmbG93LXk6IHNjcm9sbDtcclxufVxyXG5cclxuI3F1aWNrVmFsaWRhdGlvbiB0YWJsZSB7XHJcblx0d2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbiNxdWlja1ZhbGlkYXRpb24gdGFibGUgdGhlYWQge1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICNlNTk5MDA7XHJcbn1cclxuXHJcbiNxdWlja1ZhbGlkYXRpb24gdGFibGUgdGgsXHJcbiNxdWlja1ZhbGlkYXRpb24gdGFibGUgdHIgdGQge1xyXG5cdGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrO1xyXG5cdHBhZGRpbmc6IDAuNWVtO1xyXG59XHJcblxyXG4jcXVpY2tWYWxpZGF0aW9uIC5mYXM6aG92ZXIge1xyXG5cdGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuI3JlcG9ydFBhcmFtZXRlcnMge1xyXG5cdHBvc2l0aW9uOiBmaXhlZDtcclxuXHRib3R0b206IDQuNWVtO1xyXG5cdGxlZnQ6IDEyJTtcclxuXHRwYWRkaW5nOiAxZW07XHJcblx0Ym9yZGVyLXJhZGl1czogNHB4O1xyXG5cdHdpZHRoOiAzMCU7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogI2ZkYmMzMDtcclxuXHRib3gtc2hhZG93OiAwIDE0cHggMjhweCByZ2JhKDAsMCwwLDAuMjUpLCAwIDEwcHggMTBweCByZ2JhKDAsMCwwLDAuMjIpO1xyXG5cdHotaW5kZXg6IDEwMDAwO1xyXG5cdG1heC1oZWlnaHQ6IDUwdmg7XHJcblx0b3ZlcmZsb3cteTogc2Nyb2xsO1xyXG59XHJcblxyXG4jcmVwb3J0UGFyYW1ldGVycyBoNCB7XHJcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcbn1cclxuXHJcbiNyZXBvcnRQYXJhbWV0ZXJzIC5wYXJhbWV0ZXItY29udGFpbmVyOm5vdCg6Zmlyc3Qtb2YtdHlwZSkgaDQge1xyXG5cdG1hcmdpbi10b3A6IDFlbTtcclxufVxyXG5cclxuI3JlcG9ydFBhcmFtZXRlcnMgLnBhcmFtZXRlci1jb250YWluZXIgLnBhcmFtZXRlcjpsYXN0LW9mLXR5cGUge1xyXG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjaztcclxuXHRtYXJnaW4tYm90dG9tOiAtMXB4O1xyXG59XHJcblxyXG4jcmVwb3J0UGFyYW1ldGVycyAucGFyYW1ldGVyLXR5cGUge1xyXG5cdGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrO1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICNFNTk5MDA7XHJcblx0cGFkZGluZzogMC41ZW07XHJcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcbn1cclxuXHJcbiNyZXBvcnRQYXJhbWV0ZXJzIC5wYXJhbWV0ZXIge1xyXG5cdGJvcmRlci1sZWZ0OiAxcHggc29saWQgYmxhY2s7XHJcblx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgYmxhY2s7XHJcblx0cGFkZGluZzogMC41ZW07XHJcbn1cclxuXHJcbi9kZWVwLyBhbmd1bGFyMmNzdiA+IGJ1dHRvbiB7XHJcblx0Ym9yZGVyOiBub25lO1xyXG5cdGZvbnQtd2VpZ2h0OiA2MDA7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogI0ZEQkMzMDtcclxuXHRwYWRkaW5nOiA2cHggMTJweDtcclxuXHRib3JkZXItcmFkaXVzOiA0cHg7XHJcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG59XHJcblxyXG4vZGVlcC8gYW5ndWxhcjJjc3YgPiBidXR0b246aG92ZXIge1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICNlNTk5MDA7XHJcbn1cclxuXHJcbi8vIFNlYXJjaGFibGUgdGllcnNcclxuXHJcbiNvdXRwdXRTaWRlYmFyIHtcclxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0d2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbiNvdXRwdXRTaWRlYmFyIC5mb3JtLWNvbnRyb2wge1xyXG5cdG1hcmdpbi10b3A6IDAuNWVtO1xyXG5cdHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4jc2VhcmNoYWJsZVRpZXJzIHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0dG9wOiAwO1xyXG5cdHdpZHRoOiAxMDAlO1xyXG5cdG1pbi1oZWlnaHQ6IDY1cHg7XHJcblx0bWF4LWhlaWdodDogNDAwcHg7XHJcblx0Ym9yZGVyOiAxcHggc29saWQgI2NjYztcclxuXHRvdmVyZmxvdy15OiBzY3JvbGw7XHJcblx0cGFkZGluZzogMC41ZW07XHJcblx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcblx0ei1pbmRleDogMTAwMDtcclxuXHRtYXJnaW4tdG9wOiAyLjc1ZW07XHJcblx0Ym94LXNoYWRvdzogMCAxNHB4IDI4cHggcmdiYSgwLDAsMCwwLjEpLCAwIDEwcHggMTBweCByZ2JhKDAsMCwwLDAuMSk7XHJcbn1cclxuXHJcbiNzZWFyY2hhYmxlVGllcnMgLm5vLXJlc3VsdHMge1xyXG5cdGNvbG9yOiBncmF5O1xyXG5cdHBhZGRpbmc6IDFlbSAwO1xyXG5cdHdpZHRoOiAxMDAlO1xyXG5cdHRleHQtYWxpZ246IGNlbnRlcjtcclxufVxyXG5cclxuI3NlYXJjaGFibGVUaWVycyAudGllciB7XHJcblx0bWFyZ2luLWJvdHRvbTogMC4yNWVtOztcclxuXHRwYWRkaW5nOiAwLjVlbTtcclxuXHRib3JkZXItcmFkaXVzOiAzcHg7XHJcbn1cclxuXHJcbiNzZWFyY2hhYmxlVGllcnMgLnRpZXI6aG92ZXIge1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICNGM0YzRjM7XHJcblx0Y3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4jc2VhcmNoYWJsZVRpZXJzIC50aWVyLW5hbWUge1xyXG5cdGZvbnQtd2VpZ2h0OiA2MDA7XHJcblx0bWFyZ2luLWJvdHRvbTogMC4yNWVtO1xyXG59XHJcblxyXG4jc2VhcmNoYWJsZVRpZXJzIC50aWVyLW1ldGEge1xyXG5cdGNvbG9yOiBncmF5O1xyXG5cdGZvbnQtc2l6ZTogMTRweDtcclxufVxyXG5cclxuI3NlYXJjaGFibGVUaWVycyAudGllci1tZXRhIHNwYW46Zmlyc3Qtb2YtdHlwZSB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogZGFya2dyYXk7XHJcblx0Y29sb3I6IHdoaXRlO1xyXG5cdG1hcmdpbi1yaWdodDogMC41ZW07XHJcblx0cGFkZGluZzogMnB4IDRweDtcclxuXHRib3JkZXItcmFkaXVzOiAycHg7XHJcbn0iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiXX0= */\"","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { Meta, Title } from '@angular/platform-browser';\r\n\r\nimport { TREE_ACTIONS, ITreeOptions } from 'angular-tree-component';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ModalDirective } from 'ngx-bootstrap';\r\n\r\nimport { MemberService } from '../utilities/services/member.service'\r\nimport { DataService } from '../utilities/services/data.service'\r\nimport { ValidationService } from '../utilities/services/validation.service'\r\n\r\n@Component({\r\n templateUrl: './outputs.component.html',\r\n styleUrls: ['./outputs.component.scss'],\r\n})\r\nexport class OutputsComponent implements OnInit {\r\n projectId: number; projectDetails = {};\r\n windowHeight = window.innerHeight - 250;\r\n nodes; nodeSelection;\r\n organisation; currentOrganisation; organisationSelection;\r\n tierState: boolean = false; error: boolean = false;\r\n @ViewChild('tree') tree;\r\n @ViewChild('outputsDisplay') outputsDisplay;\r\n tierParam; groupParam; submissionParam; optionParam; searchableTiers;\r\n loadingParams: boolean = false;\r\n\r\n // Validation\r\n activeAdmin: boolean = false;\r\n validations: any = [];\r\n quickValidation: boolean = false;\r\n fullValidation: boolean = false;\r\n showSubmissionId: boolean = false;\r\n reportParameters = []; showParameters: boolean = false;\r\n storedProcedure = [];\r\n loadingValidations: boolean;\r\n errorValidations: boolean = false;\r\n searchText: string;\r\n tiersEditParent;\r\n parentNode;\r\n\r\n // Download\r\n download;\r\n csvOptions = {\r\n fieldSeparator: ',',\r\n quoteStrings: '\"',\r\n decimalseparator: '.',\r\n showLabels: false,\r\n headers: [ 'submission_code', 'value', 'value2' ],\r\n useBom: false,\r\n removeNewLines: true,\r\n keys: [ 'submission', 'value', 'value2' ]\r\n };\r\n\r\n options: ITreeOptions = {\r\n actionMapping: {\r\n mouse: { click: (tree, node, $event) => {\r\n this.tiersEditParent = node.data;\r\n if (node.hasChildren) { \r\n TREE_ACTIONS.TOGGLE_EXPANDED(tree, node, $event);\r\n } \r\n else {\r\n TREE_ACTIONS.ACTIVATE(tree, node, $event);\r\n this.router.navigate([], { queryParams: { tier: this.tierParam, group: this.groupParam, submission: null, option: null }, queryParamsHandling: 'merge' })\r\n }\r\n }}\r\n }\r\n }\r\n\r\n // Edit Report\r\n @ViewChild('editReportModal') public editReportModal:ModalDirective;\r\n\r\n // Edit Tier\r\n @ViewChild('editTierModal') public editTierModal:ModalDirective;\r\n \r\n reportDetails: any;\r\n currentYear: number;\r\n metaTitle: string = 'Outputs | NHS Benchmarking Network';\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private memberService: MemberService,\r\n private dataService: DataService,\r\n private validationService: ValidationService,\r\n private titleService: Title,\r\n private meta: Meta,\r\n private toastr: ToastrService,\r\n ) { \r\n this.projectId = +this.route.snapshot.paramMap.get('projectId');\r\n }\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(this.metaTitle);\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n this.getOrganisationsByUser(this.projectId);\r\n let currentDate = new Date();\r\n this.currentYear = currentDate.getFullYear();\r\n const tierIdQueryParam = this.route.snapshot.queryParams['tier']\r\n const optionQueryParam = this.route.snapshot.queryParams['option']\r\n const node = { id: tierIdQueryParam, projectId: this.projectId }\r\n if (optionQueryParam) {\r\n this.onNodeSelection(node, optionQueryParam)\r\n }\r\n }\r\n\r\n updateTierName(e){\r\n this.tiersEditParent.name = e.tierName;\r\n this.tiersEditParent.isVisible = e.isVisible;\r\n }\r\n\r\n onInitialized() {\r\n\r\n // Set groupParam\r\n let groupParam = this.route.snapshot.queryParams['group'];\r\n if (groupParam) {\r\n if (typeof(groupParam) === 'object') {\r\n this.groupParam = groupParam[0];\r\n } else {\r\n this.groupParam = groupParam;\r\n }\r\n } else {\r\n this.groupParam = 0;\r\n }\r\n\r\n // Set optionParam if greater than 0\r\n if (this.route.snapshot.queryParams['option'] > 0) {\r\n this.optionParam = this.route.snapshot.queryParams['option'];\r\n } else {\r\n this.optionParam = null;\r\n }\r\n\r\n // If tierParam exists, open node\r\n // Else clear and get parentTiers\r\n if (this.tierParam) {\r\n this.loadingParams = true;\r\n const targetNode = this.tree.treeModel.getNodeById(this.tierParam);\r\n this.tiersEditParent = targetNode.data;\r\n if (targetNode) {\r\n targetNode.setActiveAndVisible();\r\n } else {\r\n this.router.navigate([], { queryParams: { tier: null, group: null, submission: null, option: null }, queryParamsHandling: 'merge' });\r\n this.groupParam = null; this.submissionParam = null; this.optionParam = null;\r\n this.toastr.error('This chart is no longer available to view. Please use the tree on the left to navigate to another chart.', 'Error: Chart not found');\r\n this.getParentTiers(this.projectId);\r\n }\r\n this.loadingParams = false;\r\n }\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n sessionStorage.removeItem('savedTiers');\r\n sessionStorage.removeItem('nhsbnOptPref');\r\n }\r\n\r\n getOrganisationsByUser(projectId: number) {\r\n let currentOrg = this.dataService.getSelectedOrganisation();\r\n \r\n this.memberService.OrganisationsByUser(projectId).subscribe(\r\n o => { \r\n this.organisation = o.data;\r\n\r\n this.currentOrganisation = currentOrg ? currentOrg : this.organisation[0].organisationId,\r\n\r\n this.organisationSelection = currentOrg ? this.organisation[this.organisation.findIndex(o => o.organisationId == currentOrg)] : this.organisation[0]\r\n this.dataService.setOrganisation(o.data);\r\n\r\n this.tierParam = +this.route.snapshot.queryParams['tier'];\r\n\r\n let savedTiers = JSON.parse(sessionStorage.getItem('savedTiers'));\r\n\r\n if (this.tierParam) {\r\n this.getParamTiers(this.tierParam);\r\n } else {\r\n if (savedTiers) {\r\n let projectId = savedTiers.projectId;\r\n if (projectId === this.projectId) {\r\n this.nodes = savedTiers;\r\n this.tierState = true;\r\n this.setProjectInfo(savedTiers);\r\n } else {\r\n this.getParentTiers(this.projectId);\r\n sessionStorage.removeItem('savedTiers');\r\n }\r\n } else {\r\n this.getParentTiers(this.projectId);\r\n sessionStorage.removeItem('savedTiers');\r\n }\r\n }\r\n\r\n }\r\n );\r\n }\r\n\r\n getParentTiers(projectId: number) {\r\n this.memberService.childTiers(projectId).subscribe(\r\n r => {\r\n this.nodes = r.data;\r\n this.nodes.projectId = this.projectId;\r\n this.tierState = true;\r\n this.setProjectInfo(r.data);\r\n },\r\n e => {\r\n console.log(e);\r\n this.toastr.error('There was an error loading the tiers. Please refresh the page to try again.');\r\n }\r\n );\r\n }\r\n\r\n getParamTiers(tierId, search?) {\r\n this.memberService.getTierPath(this.projectId, tierId).subscribe(\r\n r => {\r\n this.nodes = r.data;\r\n this.tierState = true;\r\n\r\n // Reset project info, if required\r\n if (!search) {\r\n this.setProjectInfo(r.data);\r\n }\r\n },\r\n e => {\r\n this.getParentTiers(this.projectId);\r\n console.log(e);\r\n }\r\n )\r\n }\r\n\r\n setProjectInfo(data) {\r\n let projectContact;\r\n if (data.projectRoles.filter(r => r.role === 'Project Coordinator')[0]) {\r\n projectContact = {\r\n name: data.projectRoles.filter(r => r.role === 'Project Coordinator')[0].name,\r\n email: data.projectRoles.filter(r => r.role === 'Project Coordinator')[0].email\r\n }\r\n } else {\r\n projectContact = {\r\n name: data.projectRoles[0].name,\r\n email: data.projectRoles[0].email\r\n }\r\n }\r\n\r\n this.projectDetails = {\r\n projectId: data.projectId,\r\n projectName: data.projectName, \r\n projectContact: projectContact\r\n };\r\n\r\n if (data.currentUserIsAdmin === true) {\r\n this.activeAdmin = true;\r\n this.getValidations(this.projectId);\r\n }\r\n }\r\n\r\n toggleExpanded(event) {\r\n let parentId = event.node.data.id;\r\n this.parentNode = event.node.data || null;\r\n \r\n if (this.parentNode && !this.parentNode.childrenLoaded && !this.loadingParams) {\r\n this.memberService.childTiers(this.projectId, parentId).subscribe(\r\n r => {\r\n this.parentNode.children = r.data.tiers;\r\n this.tree.treeModel.update();\r\n this.nodes.projectId = this.projectId;\r\n sessionStorage.setItem('savedTiers', JSON.stringify(this.nodes));\r\n },\r\n e => {\r\n this.toastr.error('There has been an error loading the tiers. Please refresh the page and try again.')\r\n console.log(e);\r\n }\r\n )\r\n }\r\n }\r\n\r\n onNodeSelection(message, optionParam?) {\r\n this.nodeSelection = message;\r\n this.tierParam = message.id;\r\n this.optionParam = optionParam || this.optionParam;\r\n\r\n // Include params on node selection\r\n if (message.reportId !== null) {\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n queryParams: {\r\n tier: message.id,\r\n group: this.groupParam,\r\n submission: this.submissionParam,\r\n option: this.optionParam\r\n }, \r\n queryParamsHandling: 'merge' \r\n });\r\n }\r\n }\r\n\r\n peerGroupAdd($event) {\r\n this.groupParam = $event;\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n queryParams: { group: $event }, queryParamsHandling: 'merge'\r\n });\r\n }\r\n\r\n submissionAdd($event) {\r\n this.submissionParam = $event;\r\n }\r\n\r\n optionAdd($event) {\r\n this.optionParam = $event;\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n queryParams: { option: $event }, queryParamsHandling: 'merge'\r\n });\r\n }\r\n\r\n onOrgChange(message) {\r\n this.dataService.setSelectedOrganisation(message);\r\n\r\n this.currentOrganisation = message;\r\n\r\n this.organisationSelection = this.organisation[this.organisation.findIndex(o => o.organisationId == message)];\r\n\r\n // Remove selected submission\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n queryParams: {\r\n submission: null\r\n }, queryParamsHandling: 'merge' \r\n });\r\n }\r\n\r\n savePoint(event) {\r\n let validation = {\r\n validationId: undefined,\r\n year: event.year,\r\n //userId: this.dataService.getUser().userId,\r\n tierId: parseInt(this.route.snapshot.queryParams['tier']),\r\n submissionCode: undefined, \r\n validationDescription: undefined,\r\n reportName: undefined,\r\n validationValue: event.point.y,\r\n serviceItemId: event.serviceItemId\r\n }\r\n if (event.point.shapeType === 'arc') {\r\n validation.submissionCode = undefined;\r\n validation.validationDescription = event.point.name;\r\n } else {\r\n if (event.point.category.substr(2) === '---') {\r\n validation.submissionCode = event.point.category.substr(2);\r\n } else {\r\n validation.submissionCode = parseInt(event.point.category.substr(2));\r\n }\r\n validation.validationDescription = undefined;\r\n }\r\n if (validation.submissionCode != '---') {\r\n this.validationService.addValidation(validation).subscribe(\r\n r => {\r\n validation.validationId = r.data.newValidationId;\r\n validation.reportName = event.reportName;\r\n this.validations.push(validation);\r\n },\r\n e => {\r\n this.toastr.error(e.error.error.message);\r\n }\r\n )\r\n } else {\r\n this.toastr.error('You cannot add a point for validation until submission codes have been applied. Please speak to the IT team.')\r\n }\r\n }\r\n\r\n getValidations(projectId) {\r\n // TODO: Add year selector to HTML\r\n let year = 2022;\r\n this.loadingValidations = true;\r\n this.validationService.getValidations(projectId, year).subscribe(\r\n r => {\r\n this.validations = r.data.validations;\r\n this.loadingValidations = false;\r\n },\r\n e => {\r\n this.errorValidations = true;\r\n console.log(e);\r\n }\r\n )\r\n }\r\n\r\n deleteValidation(validationId) {\r\n if (confirm(\"Are you sure you want to delete this validation? This action cannot be undone.\")) {\r\n this.validationService.deleteValidation(validationId).subscribe(\r\n r => {\r\n this.validations = this.validations.filter(v => v.validationId !- validationId);\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n }\r\n }\r\n\r\n setReportParameters(event) {\r\n this.reportParameters = event.reportPar;\r\n this.storedProcedure = event.storedPro;\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (this.download && this.activeAdmin) {\r\n document.querySelector('angular2csv > button').innerHTML = ' Download (.csv)';\r\n }\r\n }\r\n\r\n setDownload(event) {\r\n this.download = event;\r\n }\r\n\r\n navProjectDetail(projectId: number) {\r\n this.router.navigate(['/project-detail', projectId]);\r\n }\r\n\r\n navDashboard(projectId: number) {\r\n this.router.navigate(['/dashboard', projectId]);\r\n }\r\n\r\n getSearchTiers(projectId) {\r\n this.memberService.getSearchTiers(projectId).subscribe(\r\n r => {\r\n this.searchableTiers = this.formatSearchTiers(r.data.leafTiers);\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n }\r\n\r\n formatSearchTiers(tiers) {\r\n tiers.forEach(t => {\r\n t.reportNameFormatted = this.placeholder(t.reportName, t.reportYear);\r\n });\r\n return tiers;\r\n }\r\n\r\n openSearch(tier) {\r\n this.optionParam = tier.denominatorId;\r\n // Reset view\r\n this.tierState = false;\r\n // Build search node\r\n let node = { id: tier.tierId, projectId: this.projectId }\r\n // Select node and load report\r\n this.onNodeSelection(node, tier.denominatorId);\r\n // Reload tier structure\r\n this.getParamTiers(node.id, true);\r\n // Remove search text\r\n this.searchText = null;\r\n }\r\n\r\n placeholder(text, year) {\r\n if (text == null) { return text; }\r\n\r\n if (text.indexOf(\"|SINGLE_YEAR_CURRENT|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_CURRENT\\|\\*/g, year.toString());\r\n }\r\n if (text.indexOf(\"|SINGLE_YEAR_NEXT|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_NEXT\\|\\*/g, (year + 1).toString());\r\n }\r\n if (text.indexOf(\"|SINGLE_YEAR_PREVIOUS|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_PREVIOUS\\|\\*/g, (year - 1).toString());\r\n }\r\n if (text.indexOf(\"|SINGLE_YEAR_MINUS_2|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_MINUS_2\\|\\*/g, (year - 2).toString());\r\n }\r\n if (text.indexOf(\"|SINGLE_YEAR_MINUS_3|\") > 0) {\r\n text = text.replace(/\\*\\|SINGLE_YEAR_MINUS_3\\|\\*/g, (year - 3).toString());\r\n }\r\n if (text.indexOf(\"|DOUBLE_YEAR_NEXT|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_NEXT\\|\\*/g, (year).toString() + \"/\" + (year + 1).toString().substring(2, 4));\r\n } \r\n if (text.indexOf(\"|DOUBLE_YEAR_CURRENT|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_CURRENT\\|\\*/g, (year - 1).toString() + \"/\" + (year).toString().substring(2, 4));\r\n } \r\n if (text.indexOf(\"|DOUBLE_YEAR_PREVIOUS|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_PREVIOUS\\|\\*/g, (year - 2).toString() + \"/\" + (year - 1).toString().substring(2, 4));\r\n }\r\n if (text.indexOf(\"|DOUBLE_YEAR_MINUS_2|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_MINUS_2\\|\\*/g, (year - 3).toString() + \"/\" + (year - 2).toString().substring(2, 4));\r\n }\r\n if (text.indexOf(\"|DOUBLE_YEAR_MINUS_3|\") > 0) {\r\n text = text.replace(/\\*\\|DOUBLE_YEAR_MINUS_3\\|\\*/g, (year - 4).toString() + \"/\" + (year - 3).toString().substring(2, 4));\r\n }\r\n return text;\r\n }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms'\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { TreeModule } from 'angular-tree-component';\r\nimport { Ng2HighchartsModule } from 'ng2-highcharts';\r\nimport { ModalModule, BsDropdownModule, TooltipModule, PopoverModule } from 'ngx-bootstrap';\r\n\r\nimport { OutputsComponent } from './outputs.component';\r\nimport { OutputsRoutingModule } from './outputs-routing.module';\r\nimport { OutputsDisplayComponent } from './outputs-display/outputs-display.component'\r\nimport { OutputsDisplayOptionsComponent } from './outputs-display/outputs-display-options/outputs-display-options.component';\r\nimport { ActiveAdminComponent } from './active-admin/active-admin.component'\r\n\r\nimport { SafePipeModule } from '../utilities/pipes/safe-pipe.module';\r\nimport { OrderByPipe, UniquePipe } from 'ngx-pipes';\r\nimport { ValidationService } from 'app/utilities/services/validation.service';\r\nimport { NgPipesModule } from 'ngx-pipes';\r\nimport { Angular2CsvModule } from 'angular2-csv';\r\nimport { EditReportComponent } from './edit-report/edit-report.component';\r\nimport { EditTierComponent } from './edit-tier/edit-tier.component';\r\nimport { ClickElsewhereDirective } from 'app/utilities/directives/clickElsewhereDirective';\r\nimport { PopupModalModule } from 'app/shared/popup-modal/popup-modal.module';\r\n\r\n@NgModule({\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n CommonModule,\r\n TreeModule.forRoot(),\r\n OutputsRoutingModule,\r\n SafePipeModule,\r\n Ng2HighchartsModule,\r\n ModalModule.forRoot(),\r\n BsDropdownModule.forRoot(),\r\n TooltipModule.forRoot(),\r\n PopoverModule.forRoot(),\r\n NgPipesModule,\r\n Angular2CsvModule,\r\n PopupModalModule\r\n ],\r\n providers: [\r\n OrderByPipe,\r\n UniquePipe,\r\n ValidationService\r\n ],\r\n declarations: [ \r\n OutputsComponent,\r\n OutputsDisplayComponent,\r\n OutputsDisplayOptionsComponent,\r\n ActiveAdminComponent,\r\n EditReportComponent,\r\n EditTierComponent,\r\n ClickElsewhereDirective\r\n ]\r\n})\r\nexport class OutputsModule {}","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { ProfileComponent } from './profile.component'\r\n\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service'\r\n\r\nconst profileRoutes: Routes = [\r\n { path: 'profile', component: ProfileComponent, canActivate: [AuthGuardService] }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(profileRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class ProfileRoutingModule { }","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Back to Home\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Edit Profile

\\r\\n

\\r\\n Use this page to edit your profile and view your roles. If you need\\r\\n any support, please contact the\\r\\n Support Team.\\r\\n

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

\\r\\n Loading user profile...\\r\\n

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

My Details

\\r\\n

\\r\\n If you find that the below details are incorrect, please change\\r\\n them and click 'Update' once finished.\\r\\n

\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n If you need to change your email address, please contact the\\r\\n Support Team\\r\\n on 0161 266 1797.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.fullName }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.jobTitle }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.phoneNo }}\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

Newsletter Preferences

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Select 'I want to receive updates' above to receive monthly and quarterly bulletins from the NHS Benchmarking Network.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.mailchimpOptIn }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Notifications are accessible from the navigation at the\\r\\n top of this page at any time. To receive a daily digest of\\r\\n your new notifications, select 'I want to receive\\r\\n notifications' above.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.notificationOptIn }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Change Password

\\r\\n

\\r\\n In order to change your password, please enter a new password\\r\\n twice below. The password must be eight or more characters in\\r\\n length, and should contain at least one uppercase letter, one\\r\\n lowercase letter and one number.\\r\\n

\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.password }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.confirmPassword }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n The two passwords above must match\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

My Roles

\\r\\n

\\r\\n Your roles are listed below. If you have any questions about your\\r\\n roles or would like to make any amendments, please contact the\\r\\n Support Team\\r\\n on 0161 266 1797.\\r\\n

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

{{ roles }}

\\r\\n
\\r\\n
\\r\\n \\r\\n
    \\r\\n
  • \\r\\n {{ role.roleName }} ({{ role.productName }})\\r\\n for {{ role.projectName }}\\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\"","module.exports = \"/*------------------\\r\\n ADDITIONS - DH/Jul\\r\\n ------------------ */\\n#selectorBar {\\n background-color: #005EB8;\\n margin-top: -2em; }\\n#selectorBar .btn-back {\\n color: white;\\n font-size: 17px;\\n line-height: 2.5em; }\\n#selectorBar .btn-back .fa {\\n margin-right: 5px; }\\n#selectorBar .btn-back:hover {\\n cursor: pointer; }\\n#selectorBar .form-group {\\n padding: 5px 0;\\n margin-bottom: 0;\\n background-color: #004485; }\\n#selectorBar .form-control {\\n background-color: #004485;\\n color: white;\\n border: none;\\n height: auto;\\n box-shadow: none; }\\n#selectorBar .form-control:focus {\\n outline: none;\\n box-shadow: none; }\\n#containerProfile {\\n padding-bottom: 6em;\\n background-color: #f3f3f3; }\\n#containerProfile .form-control {\\n font-size: 17px; }\\n#containerProfile h4 {\\n font-weight: 600;\\n font-size: 1.25em;\\n margin-bottom: 1em;\\n color: #768692; }\\n#roles hr {\\n padding-bottom: 0.15em;\\n margin-top: 0.5em; }\\n.role-title {\\n font-weight: 600; }\\n#containerProfile .form-group .control-label {\\n text-align: left;\\n font-size: 17px; }\\n.user {\\n padding-top: 1.5em;\\n padding-bottom: 0.5em; }\\n.user:nth-child(odd) {\\n background-color: #f2f7fb; }\\n#containerProfile button span {\\n opacity: 0;\\n margin-left: -18px; }\\n#containerProfile button.is-loading span {\\n opacity: 1;\\n margin-left: 5px; }\\n#containerProfile ul {\\n padding-left: 1.1em; }\\n.explainer {\\n margin-right: 1em; }\\n.help-block {\\n margin-top: 0.5em;\\n color: #768692; }\\n.alert-info {\\n margin-top: 1em;\\n margin-bottom: 0; }\\nh1 {\\n font-weight: 600;\\n margin-top: 1em; }\\n.view-card {\\n margin-top: 1.5em;\\n background-color: white;\\n padding-bottom: 2em;\\n padding-left: 2em;\\n padding-right: 2em;\\n border: 1px solid #ccc;\\n border-radius: 5px;\\n position: relative; }\\n.projects-loading {\\n color: #005EB8;\\n font-size: 1.5em;\\n font-weight: 600;\\n margin-top: 2em; }\\n.project-loading-spinner {\\n font-size: 2.5em;\\n color: #005EB8;\\n margin: 1em 0; }\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHJvZmlsZS9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxwcm9maWxlXFxwcm9maWxlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wcm9maWxlL3Byb2ZpbGUuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3Byb2ZpbGUvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7c0JDQXNCO0FESXRCO0VBQ0UseUJFSmdCO0VGS2hCLGdCQUFnQixFQUFBO0FBR2xCO0VBQ0UsWUFBWTtFQUNaLGVBQWU7RUFDZixrQkFBa0IsRUFBQTtBQUdwQjtFQUNFLGlCQUFpQixFQUFBO0FBR25CO0VBQ0UsZUFBZSxFQUFBO0FBR2pCO0VBQ0UsY0FBYztFQUNkLGdCQUFnQjtFQUNoQix5QkFBeUIsRUFBQTtBQUczQjtFQUNFLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1osWUFBWTtFQUNaLFlBQVk7RUFDWixnQkFBZ0IsRUFBQTtBQUdsQjtFQUNFLGFBQWE7RUFDYixnQkFBZ0IsRUFBQTtBQUdsQjtFQUNFLG1CQUFtQjtFQUNuQix5QkFBeUIsRUFBQTtBQUczQjtFQUNFLGVBQWUsRUFBQTtBQUdqQjtFQUNFLGdCQUFnQjtFQUNoQixpQkFBaUI7RUFDakIsa0JBQWtCO0VBQ2xCLGNFcERnQixFQUFBO0FGdURsQjtFQUNFLHNCQUFzQjtFQUN0QixpQkFBaUIsRUFBQTtBQUduQjtFQUNFLGdCQUFnQixFQUFBO0FBR2xCO0VBQ0UsZ0JBQWdCO0VBQ2hCLGVBQWUsRUFBQTtBQUdqQjtFQUNFLGtCQUFrQjtFQUNsQixxQkFBcUIsRUFBQTtBQUd2QjtFQUNFLHlCQUF5QixFQUFBO0FBRzNCO0VBQ0UsVUFBVTtFQUNWLGtCQUFrQixFQUFBO0FBR3BCO0VBQ0UsVUFBVTtFQUNWLGdCQUFnQixFQUFBO0FBR2xCO0VBQ0UsbUJBQW1CLEVBQUE7QUFHckI7RUFDRSxpQkFBaUIsRUFBQTtBQUduQjtFQUNFLGlCQUFpQjtFQUNqQixjRWxHZ0IsRUFBQTtBRnFHbEI7RUFDRSxlQUFlO0VBQ2YsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDRSxnQkFBZ0I7RUFDaEIsZUFBZSxFQUFBO0FBSWpCO0VBQ0UsaUJBQWlCO0VBQ2pCLHVCQUF1QjtFQUN2QixtQkFBbUI7RUFDbkIsaUJBQWlCO0VBQ2pCLGtCQUFrQjtFQUNsQixzQkFBc0I7RUFDdEIsa0JBQWtCO0VBQ2xCLGtCQUFrQixFQUFBO0FBSXBCO0VBQ0UsY0UvSGdCO0VGZ0loQixnQkFBZ0I7RUFDaEIsZ0JBQWdCO0VBQ2hCLGVBQWUsRUFBQTtBQUdqQjtFQUNFLGdCQUFnQjtFQUVoQixjRXhJZ0I7RUZ5SWhCLGFBQWEsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgXCIuLi8uLi92YXJpYWJsZXNcIjtcclxuXHJcbi8qLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgQURESVRJT05TIC0gREgvSnVsXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbi8vIFNlbGVjdG9yQmFyXHJcbiNzZWxlY3RvckJhciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1ibHVlO1xyXG4gIG1hcmdpbi10b3A6IC0yZW07XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuYnRuLWJhY2sge1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBmb250LXNpemU6IDE3cHg7XHJcbiAgbGluZS1oZWlnaHQ6IDIuNWVtO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ0bi1iYWNrIC5mYSB7XHJcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuYnRuLWJhY2s6aG92ZXIge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5mb3JtLWdyb3VwIHtcclxuICBwYWRkaW5nOiA1cHggMDtcclxuICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDQ0ODU7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuZm9ybS1jb250cm9sIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0NDg1O1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgaGVpZ2h0OiBhdXRvO1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuZm9ybS1jb250cm9sOmZvY3VzIHtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbiNjb250YWluZXJQcm9maWxlIHtcclxuICBwYWRkaW5nLWJvdHRvbTogNmVtO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7XHJcbn1cclxuXHJcbiNjb250YWluZXJQcm9maWxlIC5mb3JtLWNvbnRyb2wge1xyXG4gIGZvbnQtc2l6ZTogMTdweDtcclxufVxyXG5cclxuI2NvbnRhaW5lclByb2ZpbGUgaDQge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1zaXplOiAxLjI1ZW07XHJcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xyXG4gIGNvbG9yOiAkbmhzLWdyZXk7XHJcbn1cclxuXHJcbiNyb2xlcyBociB7XHJcbiAgcGFkZGluZy1ib3R0b206IDAuMTVlbTtcclxuICBtYXJnaW4tdG9wOiAwLjVlbTtcclxufVxyXG5cclxuLnJvbGUtdGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbiNjb250YWluZXJQcm9maWxlIC5mb3JtLWdyb3VwIC5jb250cm9sLWxhYmVsIHtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIGZvbnQtc2l6ZTogMTdweDtcclxufVxyXG5cclxuLnVzZXIge1xyXG4gIHBhZGRpbmctdG9wOiAxLjVlbTtcclxuICBwYWRkaW5nLWJvdHRvbTogMC41ZW07XHJcbn1cclxuXHJcbi51c2VyOm50aC1jaGlsZChvZGQpIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmN2ZiO1xyXG59XHJcblxyXG4jY29udGFpbmVyUHJvZmlsZSBidXR0b24gc3BhbiB7XHJcbiAgb3BhY2l0eTogMDtcclxuICBtYXJnaW4tbGVmdDogLTE4cHg7XHJcbn1cclxuXHJcbiNjb250YWluZXJQcm9maWxlIGJ1dHRvbi5pcy1sb2FkaW5nIHNwYW4ge1xyXG4gIG9wYWNpdHk6IDE7XHJcbiAgbWFyZ2luLWxlZnQ6IDVweDtcclxufVxyXG5cclxuI2NvbnRhaW5lclByb2ZpbGUgdWwge1xyXG4gIHBhZGRpbmctbGVmdDogMS4xZW07XHJcbn1cclxuXHJcbi5leHBsYWluZXIge1xyXG4gIG1hcmdpbi1yaWdodDogMWVtO1xyXG59XHJcblxyXG4uaGVscC1ibG9jayB7XHJcbiAgbWFyZ2luLXRvcDogMC41ZW07XHJcbiAgY29sb3I6ICRuaHMtZ3JleTtcclxufVxyXG5cclxuLmFsZXJ0LWluZm8ge1xyXG4gIG1hcmdpbi10b3A6IDFlbTtcclxuICBtYXJnaW4tYm90dG9tOiAwO1xyXG59XHJcblxyXG5oMSB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBtYXJnaW4tdG9wOiAxZW07XHJcbn1cclxuXHJcbi8vIENhcmQgTGF5b3V0XHJcbi52aWV3LWNhcmQge1xyXG4gIG1hcmdpbi10b3A6IDEuNWVtO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gIHBhZGRpbmctYm90dG9tOiAyZW07XHJcbiAgcGFkZGluZy1sZWZ0OiAyZW07XHJcbiAgcGFkZGluZy1yaWdodDogMmVtO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLy8gTG9hZGluZyBzcGlubmVyXHJcbi5wcm9qZWN0cy1sb2FkaW5nIHtcclxuICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gIGZvbnQtc2l6ZTogMS41ZW07XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBtYXJnaW4tdG9wOiAyZW07XHJcbn1cclxuXHJcbi5wcm9qZWN0LWxvYWRpbmctc3Bpbm5lciB7XHJcbiAgZm9udC1zaXplOiAyLjVlbTtcclxuXHJcbiAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICBtYXJnaW46IDFlbSAwO1xyXG59XHJcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgQURESVRJT05TIC0gREgvSnVsXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tICovXG4jc2VsZWN0b3JCYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA1RUI4O1xuICBtYXJnaW4tdG9wOiAtMmVtOyB9XG5cbiNzZWxlY3RvckJhciAuYnRuLWJhY2sge1xuICBjb2xvcjogd2hpdGU7XG4gIGZvbnQtc2l6ZTogMTdweDtcbiAgbGluZS1oZWlnaHQ6IDIuNWVtOyB9XG5cbiNzZWxlY3RvckJhciAuYnRuLWJhY2sgLmZhIHtcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7IH1cblxuI3NlbGVjdG9yQmFyIC5idG4tYmFjazpob3ZlciB7XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuXG4jc2VsZWN0b3JCYXIgLmZvcm0tZ3JvdXAge1xuICBwYWRkaW5nOiA1cHggMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDQ4NTsgfVxuXG4jc2VsZWN0b3JCYXIgLmZvcm0tY29udHJvbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDQ0ODU7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyOiBub25lO1xuICBoZWlnaHQ6IGF1dG87XG4gIGJveC1zaGFkb3c6IG5vbmU7IH1cblxuI3NlbGVjdG9yQmFyIC5mb3JtLWNvbnRyb2w6Zm9jdXMge1xuICBvdXRsaW5lOiBub25lO1xuICBib3gtc2hhZG93OiBub25lOyB9XG5cbiNjb250YWluZXJQcm9maWxlIHtcbiAgcGFkZGluZy1ib3R0b206IDZlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMzsgfVxuXG4jY29udGFpbmVyUHJvZmlsZSAuZm9ybS1jb250cm9sIHtcbiAgZm9udC1zaXplOiAxN3B4OyB9XG5cbiNjb250YWluZXJQcm9maWxlIGg0IHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZm9udC1zaXplOiAxLjI1ZW07XG4gIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgY29sb3I6ICM3Njg2OTI7IH1cblxuI3JvbGVzIGhyIHtcbiAgcGFkZGluZy1ib3R0b206IDAuMTVlbTtcbiAgbWFyZ2luLXRvcDogMC41ZW07IH1cblxuLnJvbGUtdGl0bGUge1xuICBmb250LXdlaWdodDogNjAwOyB9XG5cbiNjb250YWluZXJQcm9maWxlIC5mb3JtLWdyb3VwIC5jb250cm9sLWxhYmVsIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZm9udC1zaXplOiAxN3B4OyB9XG5cbi51c2VyIHtcbiAgcGFkZGluZy10b3A6IDEuNWVtO1xuICBwYWRkaW5nLWJvdHRvbTogMC41ZW07IH1cblxuLnVzZXI6bnRoLWNoaWxkKG9kZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmN2ZiOyB9XG5cbiNjb250YWluZXJQcm9maWxlIGJ1dHRvbiBzcGFuIHtcbiAgb3BhY2l0eTogMDtcbiAgbWFyZ2luLWxlZnQ6IC0xOHB4OyB9XG5cbiNjb250YWluZXJQcm9maWxlIGJ1dHRvbi5pcy1sb2FkaW5nIHNwYW4ge1xuICBvcGFjaXR5OiAxO1xuICBtYXJnaW4tbGVmdDogNXB4OyB9XG5cbiNjb250YWluZXJQcm9maWxlIHVsIHtcbiAgcGFkZGluZy1sZWZ0OiAxLjFlbTsgfVxuXG4uZXhwbGFpbmVyIHtcbiAgbWFyZ2luLXJpZ2h0OiAxZW07IH1cblxuLmhlbHAtYmxvY2sge1xuICBtYXJnaW4tdG9wOiAwLjVlbTtcbiAgY29sb3I6ICM3Njg2OTI7IH1cblxuLmFsZXJ0LWluZm8ge1xuICBtYXJnaW4tdG9wOiAxZW07XG4gIG1hcmdpbi1ib3R0b206IDA7IH1cblxuaDEge1xuICBmb250LXdlaWdodDogNjAwO1xuICBtYXJnaW4tdG9wOiAxZW07IH1cblxuLnZpZXctY2FyZCB7XG4gIG1hcmdpbi10b3A6IDEuNWVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgcGFkZGluZy1ib3R0b206IDJlbTtcbiAgcGFkZGluZy1sZWZ0OiAyZW07XG4gIHBhZGRpbmctcmlnaHQ6IDJlbTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cblxuLnByb2plY3RzLWxvYWRpbmcge1xuICBjb2xvcjogIzAwNUVCODtcbiAgZm9udC1zaXplOiAxLjVlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbWFyZ2luLXRvcDogMmVtOyB9XG5cbi5wcm9qZWN0LWxvYWRpbmctc3Bpbm5lciB7XG4gIGZvbnQtc2l6ZTogMi41ZW07XG4gIGNvbG9yOiAjMDA1RUI4O1xuICBtYXJnaW46IDFlbSAwOyB9XG4iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiXX0= */\"","import { Component, OnInit, ViewEncapsulation } from \"@angular/core\";\r\nimport { FormGroup, Validators, FormBuilder } from \"@angular/forms\";\r\nimport { Meta, Title } from \"@angular/platform-browser\";\r\nimport { Router } from \"@angular/router\";\r\nimport { environment } from \"environments/environment\";\r\n\r\nimport { Angular2PromiseButtonModule } from \"angular2-promise-buttons/dist\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\nimport { DataService } from \"../utilities/services/data.service\";\r\nimport { HtmlService } from \"../utilities/services/html.service\";\r\nimport { MemberService } from \"../utilities/services/member.service\";\r\nimport { User } from \"../utilities/classes/user/user\";\r\n\r\nimport { forbiddenNameValidator } from \"../utilities/validation/forbidden-name\";\r\n\r\n@Component({\r\n selector: \"app-profile\",\r\n templateUrl: \"./profile.component.html\",\r\n styleUrls: [\"./profile.component.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ProfileComponent implements OnInit {\r\n myProfile: FormGroup;\r\n myPassword: FormGroup;\r\n user: User;\r\n\r\n metaTitle: string = 'My Profile | NHS Benchmarking Network';\r\n\r\n constructor(\r\n fb: FormBuilder,\r\n private dataService: DataService,\r\n private htmlService: HtmlService,\r\n private memberService: MemberService,\r\n private profileSpinner: Angular2PromiseButtonModule,\r\n public passwordSpinner: Angular2PromiseButtonModule,\r\n private toastr: ToastrService,\r\n private router: Router,\r\n private titleService: Title,\r\n private meta: Meta,\r\n ) {\r\n this.myProfile = fb.group({\r\n logonName: [{ value: null, disabled: true }],\r\n fullName: [null, [Validators.required, Validators.maxLength(60)]],\r\n jobTitle: [null, [Validators.required, Validators.maxLength(60)]],\r\n phoneNo: [null, [Validators.required, Validators.maxLength(40)]],\r\n mailchimpOptIn: [null, [Validators.maxLength(1)]],\r\n notificationOptIn: [null, [Validators.maxLength(1)]],\r\n });\r\n\r\n this.myPassword = fb.group({\r\n password: [\r\n null,\r\n [\r\n Validators.required,\r\n Validators.minLength(8),\r\n forbiddenNameValidator(/£/i),\r\n ],\r\n ],\r\n confirmPassword: [null, [Validators.required]],\r\n });\r\n\r\n this.myProfile.valueChanges.subscribe((data) => this.onValueChanged(data));\r\n\r\n this.myPassword.valueChanges.subscribe((data) =>\r\n this.onPasswordChanged(data)\r\n );\r\n\r\n this.onValueChanged();\r\n this.onPasswordChanged();\r\n }\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(this.metaTitle);\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n this.getUserDetails();\r\n }\r\n\r\n getUserDetails() {\r\n this.memberService.User().subscribe((u) => {\r\n (this.user = u.data),\r\n this.dataService.setUser(u.data),\r\n this.myProfile.get(\"logonName\").setValue(this.user.logonName),\r\n this.myProfile.get(\"fullName\").setValue(this.user.fullName),\r\n this.myProfile.get(\"jobTitle\").setValue(this.user.jobTitle),\r\n this.myProfile.get(\"phoneNo\").setValue(this.user.phoneNo),\r\n this.myProfile.get(\"mailchimpOptIn\").setValue(this.user.mailchimpOptIn),\r\n this.myProfile\r\n .get(\"notificationOptIn\")\r\n .setValue(this.user.notificationOptIn);\r\n });\r\n }\r\n\r\n updateUserDetails(user?: Object) {\r\n this.memberService.UserUpdate(user).subscribe(\r\n (r) => {\r\n this.toastr.success(\r\n \"Your profile details have been successfully updated.\"\r\n );\r\n\r\n // On success, update sessionStorage user\r\n let storedUser = JSON.parse(sessionStorage.getItem(\"user\"));\r\n Object.keys(user).forEach((key) => {\r\n storedUser[key] = user[key];\r\n });\r\n sessionStorage.setItem(\"user\", JSON.stringify(storedUser));\r\n },\r\n (e) => {\r\n this.toastr.error(\r\n \"There was an error whilst trying to update your profile details. Please try again.\"\r\n );\r\n }\r\n );\r\n }\r\n\r\n updateUser() {\r\n let payload = this.myProfile;\r\n let user = {};\r\n\r\n Object.keys(payload.controls).forEach((key) => {\r\n if (payload.controls[key].dirty) {\r\n user[key] = payload.controls[key].value;\r\n }\r\n });\r\n\r\n this.profileSpinner = new Promise((resolve, reject) => {\r\n setTimeout(resolve, 3000);\r\n });\r\n\r\n this.updateUserDetails(user);\r\n }\r\n\r\n updatePassword() {\r\n let payload = this.myPassword;\r\n let newPassword = payload.controls.password.value;\r\n let confirmPassword = payload.controls.confirmPassword.value;\r\n let password = { password: newPassword };\r\n\r\n this.passwordSpinner = new Promise((resolve, reject) => {\r\n setTimeout(resolve, 3000);\r\n });\r\n\r\n if (newPassword === confirmPassword) {\r\n this.updateUserDetails(password);\r\n }\r\n }\r\n\r\n onValueChanged(data?: any) {\r\n if (!this.myProfile) {\r\n return;\r\n }\r\n const form = this.myProfile;\r\n\r\n for (const field in this.formErrors) {\r\n // clear previous error message (if any)\r\n this.formErrors[field] = \"\";\r\n const control = form.get(field);\r\n\r\n if (control && control.dirty && !control.valid) {\r\n const messages = this.validationMessages[field];\r\n\r\n for (const key in control.errors) {\r\n this.formErrors[field] += messages[key] + \" \";\r\n }\r\n }\r\n }\r\n }\r\n\r\n onPasswordChanged(data?: any) {\r\n if (!this.myPassword) {\r\n return;\r\n }\r\n const form = this.myPassword;\r\n\r\n for (const field in this.formErrors) {\r\n // clear previous error message (if any)\r\n this.formErrors[field] = \"\";\r\n const control = form.get(field);\r\n\r\n if (control && control.dirty && !control.valid) {\r\n const messages = this.validationMessages[field];\r\n\r\n for (const key in control.errors) {\r\n this.formErrors[field] += messages[key] + \" \";\r\n }\r\n }\r\n }\r\n }\r\n\r\n navHome() {\r\n this.router.navigate([\"/home\"]);\r\n }\r\n\r\n formErrors = {\r\n fullName: \"\",\r\n jobTitle: \"\",\r\n phoneNo: \"\",\r\n password: \"\",\r\n confirmPassword: \"\",\r\n };\r\n\r\n validationMessages = {\r\n fullName: {\r\n required: \"Full name is required.\",\r\n maxlength: \"Full name cannot be longer than 60 characters.\",\r\n },\r\n jobTitle: {\r\n required: \"Job title is required.\",\r\n maxlength: \"Job title cannot be longer than 60 characters.\",\r\n },\r\n phoneNo: {\r\n required: \"Phone number is required.\",\r\n maxlength: \"Phone number cannot be longer than 40 characters.\",\r\n },\r\n password: {\r\n required: \"This field is required to change your password.\",\r\n minlength: \"Password must be a minimum of 8 characters in length.\",\r\n forbiddenName: \"New password cannot include the pound symbol (£).\",\r\n },\r\n confirmPassword: {\r\n required:\r\n \"This field is required to change your password and must match New Password above.\",\r\n },\r\n };\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\n\r\nimport { Angular2PromiseButtonModule } from \"angular2-promise-buttons/dist\";\r\nimport { TabsModule } from \"ngx-bootstrap\";\r\n\r\nimport { ProfileComponent } from \"./profile.component\";\r\nimport { ProfileRoutingModule } from \"./profile-routing.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n TabsModule.forRoot(),\r\n Angular2PromiseButtonModule.forRoot({\r\n spinnerTpl: '',\r\n disableBtn: true,\r\n btnLoadingClass: \"is-loading\",\r\n handleCurrentBtnOnly: false,\r\n }),\r\n ProfileRoutingModule,\r\n ],\r\n declarations: [ProfileComponent],\r\n})\r\nexport class ProfileModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { ProjectDetailComponent } from './project-detail.component'\r\n\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service'\r\n\r\nconst projectdetailRoutes: Routes = [\r\n // Redirect for new Acute Therapies project (2019)\r\n { path: 'project-detail/3', redirectTo: 'project-detail/40', pathMatch: 'full' },\r\n { path: 'project-detail/7', redirectTo: 'project-detail/40', pathMatch: 'full' },\r\n { path: 'project-detail/25', redirectTo: 'project-detail/40', pathMatch: 'full' },\r\n { path: 'project-detail/26', redirectTo: 'project-detail/40', pathMatch: 'full' },\r\n // Standard path\r\n { path: 'project-detail/:projectId', component: ProjectDetailComponent, canActivate: [AuthGuardService] }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(projectdetailRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class ProjectDetailRoutingModule { }","module.exports = \"
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\\"NHSBN\\r\\n\\r\\n

{{projectInformation.projectName}}

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

Contact the project team on

\\r\\n

{{ projectInformation.projectPhoneNo }}

\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
0\\\">\\r\\n
\\r\\n
\\r\\n

{{ p.role }}

\\r\\n

\\r\\n {{ p.name }}
\\r\\n {{ p.email }}\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n {{projectGuidancePD}}\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

Project Details

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

Project Timetable

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

\\r\\n Open Date:
\\r\\n {{projectInformation.projectTimetable.openDate | date:'MMM y'}}\\r\\n {{projectInformation.projectTimetable.openDate | date:'d MMM y'}}\\r\\n No date set\\r\\n

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

\\r\\n Close Date:
\\r\\n {{projectInformation.projectTimetable.closeDate | date:'MMM y'}}\\r\\n {{projectInformation.projectTimetable.closeDate | date:'d MMM y'}}\\r\\n No date set\\r\\n

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

\\r\\n Event Date:
\\r\\n {{projectInformation.projectTimetable.eventDate | date:'MMM y'}}\\r\\n {{projectInformation.projectTimetable.eventDate | date:'d MMM y'}}\\r\\n No date set\\r\\n

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

\\r\\n Publication Date:
\\r\\n {{projectInformation.projectTimetable.publicationDate | date:'MMM y'}}\\r\\n {{projectInformation.projectTimetable.publicationDate | date:'d MMM y'}}\\r\\n No date set\\r\\n

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

\\r\\n Supporting Documentation\\r\\n Supporting Documentation\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n
\"","module.exports = \"#containerDetail {\\n margin-bottom: 3em; }\\n\\n/* -----------------------\\r\\n NEW STYLES FOR /PROJECT\\r\\n ----------------------- */\\n\\n.active, .nav-pills .active a {\\n font-weight: 500; }\\n\\n.nav-pills {\\n font-size: 15px;\\n margin-top: 2em; }\\n\\n.nav-pills .fa {\\n margin-right: 8px; }\\n\\n.tab-pane {\\n font-size: 17px;\\n line-height: 25px;\\n color: black !important;\\n font-weight: 400; }\\n\\n.tab-pane ul {\\n padding-left: 1em; }\\n\\n.tab-pane h4 {\\n margin-top: 1.5em;\\n font-size: 1.25em; }\\n\\n.img-title {\\n margin-top: 2em;\\n margin-bottom: -1em;\\n height: 75px; }\\n\\n#projectTable {\\n background-color: #f5f5f5;\\n padding: 1em 1.5em 0.5em 1.5em;\\n margin-top: 1em;\\n border-radius: 5px; }\\n\\n.button-centering {\\n padding: 20px; }\\n\\nh4 {\\n font-weight: 600; }\\n\\n.info-space {\\n margin-top: 2em; }\\n\\n/deep/ .overview-container ul,\\n/deep/ .angular-editor-wrapper ul {\\n font-size: 17px;\\n padding-left: 1em; }\\n\\n/deep/ .angular-editor-textarea p {\\n margin-bottom: 0.5em !important; }\\n\\n/deep/ .overview-container img {\\n width: 100%;\\n margin-bottom: 1em;\\n border: 1px solid black; }\\n\\n/deep/ .overview-container table {\\n width: 100%; }\\n\\n/deep/ .overview-container td {\\n padding: 0.5em !important;\\n border: 1px solid #768692 !important; }\\n\\n/deep/ mark {\\n padding: 0;\\n background-color: #fdbc30; }\\n\\n/deep/ .angular-editor-toolbar-set {\\n font-size: 12px; }\\n\\n/deep/ .angular-editor .angular-editor-wrapper .angular-editor-textarea {\\n background-color: white !important;\\n font-size: 17px; }\\n\\n/deep/ .angular-editor-button[title=\\\"Insert Image\\\"],\\n/deep/ .angular-editor-button[title=\\\"HTML Code\\\"] {\\n display: none; }\\n\\n/deep/ .select-font, /deep/ .block-label[for=\\\"fontSelector\\\"],\\n/deep/ .select-font-size, /deep/ .block-label[for=\\\"select-font-size\\\"] {\\n display: none; }\\n\\n#activeAdminBar {\\n position: fixed;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n padding: 0.5em 0.25em;\\n background-color: #fdbc30;\\n z-index: 10; }\\n\\n#activeAdminBar.top {\\n position: static;\\n height: 48px; }\\n\\n#activeAdminBar .btn-default {\\n background-color: #fdbc30;\\n border-color: transparent;\\n color: black;\\n border-radius: 4px;\\n font-weight: 600;\\n margin: 0 0.25em; }\\n\\n#activeAdminBar .btn-default:hover {\\n background-color: #e59900; }\\n\\n#activeAdminBar .btn-default:last-of-type {\\n float: right; }\\n\\n#activeAdminBar .btn-default:focus {\\n outline-color: black; }\\n\\n#activeAdminBar i {\\n margin-right: 0.25em; }\\n\\n.form-actions .btn {\\n margin-right: 0.5em; }\\n\\n.ribbon {\\n margin-top: 2em;\\n font-weight: 600;\\n background-color: #009639;\\n padding: 0.75em 1em;\\n color: white; }\\n\\n.text-decoration-underline {\\n text-decoration: underline !important; }\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHJvamVjdC1kZXRhaWwvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXGFwcFxccHJvamVjdC1kZXRhaWxcXHByb2plY3QtZGV0YWlsLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wcm9qZWN0LWRldGFpbC9wcm9qZWN0LWRldGFpbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNFLGtCQUFrQixFQUFBOztBQUdwQjs7NEJDRDRCOztBRE81QjtFQUNFLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLGVBQWU7RUFDZixlQUFlLEVBQUE7O0FBR2pCO0VBQ0UsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQix1QkFBdUI7RUFDdkIsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0UsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsaUJBQWlCO0VBQ2pCLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGVBQWU7RUFDZixtQkFBbUI7RUFDbkIsWUFBWSxFQUFBOztBQUdkO0VBQ0UseUJBQXlCO0VBQ3pCLDhCQUE4QjtFQUM5QixlQUFlO0VBQ2Ysa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsYUFBYSxFQUFBOztBQUdmO0VBQ0UsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0UsZUFBZSxFQUFBOztBQUdqQjs7RUFFRSxlQUFlO0VBQ2YsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsK0JBQStCLEVBQUE7O0FBR2pDO0VBQ0UsV0FBVztFQUNYLGtCQUFrQjtFQUNsQix1QkFBdUIsRUFBQTs7QUFHekI7RUFDRSxXQUFXLEVBQUE7O0FBR2I7RUFDRSx5QkFBeUI7RUFDekIsb0NBQXNDLEVBQUE7O0FBR3hDO0VBQ0UsVUFBVTtFQUNWLHlCQUF5QixFQUFBOztBQUczQjtFQUNFLGVBQWUsRUFBQTs7QUFHakI7RUFDRSxrQ0FBa0M7RUFDbEMsZUFBZSxFQUFBOztBQUdqQjs7RUFFRSxhQUFhLEVBQUE7O0FBR2Y7O0VBR0UsYUFBYSxFQUFBOztBQUtmO0VBQ0MsZUFBZTtFQUNmLFNBQVM7RUFDVCxPQUFPO0VBQ1AsV0FBVztFQUNYLHFCQUFxQjtFQUNyQix5QkFBeUI7RUFDekIsV0FBVyxFQUFBOztBQUdaO0VBQ0ksZ0JBQWdCO0VBQ2hCLFlBQVksRUFBQTs7QUFJaEI7RUFDQyx5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2IsZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0MseUJBQXlCLEVBQUE7O0FBRzFCO0VBQ0MsWUFBWSxFQUFBOztBQUdiO0VBQ0Msb0JBQW9CLEVBQUE7O0FBR3JCO0VBQ0Msb0JBQW9CLEVBQUE7O0FBR3JCO0VBQ0UsbUJBQW1CLEVBQUE7O0FBR3JCO0VBQ0UsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQix5QkFBeUI7RUFDekIsbUJBQW1CO0VBQ25CLFlBQVksRUFBQTs7QUFHZDtFQUNFLHFDQUNGLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9wcm9qZWN0LWRldGFpbC9wcm9qZWN0LWRldGFpbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uL3ZhcmlhYmxlcyc7XHJcblxyXG4jY29udGFpbmVyRGV0YWlsIHtcclxuICBtYXJnaW4tYm90dG9tOiAzZW07XHJcbn1cclxuXHJcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgIE5FVyBTVFlMRVMgRk9SIC9QUk9KRUNUXHJcbiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiBcclxuLy8gVGFiIHBhbmVzIGFuZCBuYXYgcGlsbHNcclxuXHJcbi5hY3RpdmUsIC5uYXYtcGlsbHMgLmFjdGl2ZSBhIHtcclxuICBmb250LXdlaWdodDogNTAwO1xyXG59XHJcbiBcclxuLm5hdi1waWxscyB7XHJcbiAgZm9udC1zaXplOiAxNXB4O1xyXG4gIG1hcmdpbi10b3A6IDJlbTsgIFxyXG59XHJcbiBcclxuLm5hdi1waWxscyAuZmEge1xyXG4gIG1hcmdpbi1yaWdodDogOHB4O1xyXG59XHJcbiBcclxuLnRhYi1wYW5lIHtcclxuICBmb250LXNpemU6IDE3cHg7XHJcbiAgbGluZS1oZWlnaHQ6IDI1cHg7XHJcbiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxufVxyXG4gXHJcbi50YWItcGFuZSB1bCB7XHJcbiAgcGFkZGluZy1sZWZ0OiAxZW07XHJcbn1cclxuIFxyXG4udGFiLXBhbmUgaDQge1xyXG4gIG1hcmdpbi10b3A6IDEuNWVtO1xyXG4gIGZvbnQtc2l6ZTogMS4yNWVtO1xyXG59XHJcbiBcclxuLmltZy10aXRsZSB7XHJcbiAgbWFyZ2luLXRvcDogMmVtO1xyXG4gIG1hcmdpbi1ib3R0b206IC0xZW07XHJcbiAgaGVpZ2h0OiA3NXB4O1xyXG59XHJcblxyXG4jcHJvamVjdFRhYmxlIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xyXG4gIHBhZGRpbmc6IDFlbSAxLjVlbSAwLjVlbSAxLjVlbTtcclxuICBtYXJnaW4tdG9wOiAxZW07XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG59XHJcblxyXG4uYnV0dG9uLWNlbnRlcmluZyB7XHJcbiAgcGFkZGluZzogMjBweDtcclxufVxyXG5cclxuaDQge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi5pbmZvLXNwYWNlIHtcclxuICBtYXJnaW4tdG9wOiAyZW07XHJcbn1cclxuXHJcbi9kZWVwLyAub3ZlcnZpZXctY29udGFpbmVyIHVsLFxyXG4vZGVlcC8gLmFuZ3VsYXItZWRpdG9yLXdyYXBwZXIgdWwge1xyXG4gIGZvbnQtc2l6ZTogMTdweDtcclxuICBwYWRkaW5nLWxlZnQ6IDFlbTtcclxufVxyXG5cclxuL2RlZXAvIC5hbmd1bGFyLWVkaXRvci10ZXh0YXJlYSBwIHtcclxuICBtYXJnaW4tYm90dG9tOiAwLjVlbSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vZGVlcC8gLm92ZXJ2aWV3LWNvbnRhaW5lciBpbWcge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIG1hcmdpbi1ib3R0b206IDFlbTtcclxuICBib3JkZXI6IDFweCBzb2xpZCBibGFjaztcclxufVxyXG5cclxuL2RlZXAvIC5vdmVydmlldy1jb250YWluZXIgdGFibGUge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4vZGVlcC8gLm92ZXJ2aWV3LWNvbnRhaW5lciB0ZCB7XHJcbiAgcGFkZGluZzogMC41ZW0gIWltcG9ydGFudDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAkbmhzLWdyZXkgIWltcG9ydGFudDtcclxufVxyXG5cclxuL2RlZXAvIG1hcmsge1xyXG4gIHBhZGRpbmc6IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZkYmMzMDtcclxufVxyXG5cclxuL2RlZXAvIC5hbmd1bGFyLWVkaXRvci10b29sYmFyLXNldCB7XHJcbiAgZm9udC1zaXplOiAxMnB4O1xyXG59XHJcblxyXG4vZGVlcC8gLmFuZ3VsYXItZWRpdG9yIC5hbmd1bGFyLWVkaXRvci13cmFwcGVyIC5hbmd1bGFyLWVkaXRvci10ZXh0YXJlYSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcclxuICBmb250LXNpemU6IDE3cHg7XHJcbn1cclxuXHJcbi9kZWVwLyAuYW5ndWxhci1lZGl0b3ItYnV0dG9uW3RpdGxlPVwiSW5zZXJ0IEltYWdlXCJdLFxyXG4vZGVlcC8gLmFuZ3VsYXItZWRpdG9yLWJ1dHRvblt0aXRsZT1cIkhUTUwgQ29kZVwiXSB7XHJcbiAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuL2RlZXAvIC5zZWxlY3QtZm9udCwgL2RlZXAvIC5ibG9jay1sYWJlbFtmb3I9XCJmb250U2VsZWN0b3JcIl0sXHJcbi9kZWVwLyAuc2VsZWN0LWZvbnQtc2l6ZSwgL2RlZXAvIC5ibG9jay1sYWJlbFtmb3I9XCJzZWxlY3QtZm9udC1zaXplXCJdXHJcbntcclxuICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4vLyBBY3RpdmVBZG1pblxyXG5cclxuI2FjdGl2ZUFkbWluQmFyIHtcclxuXHRwb3NpdGlvbjogZml4ZWQ7XHJcblx0Ym90dG9tOiAwO1xyXG5cdGxlZnQ6IDA7XHJcblx0d2lkdGg6IDEwMCU7XHJcblx0cGFkZGluZzogMC41ZW0gMC4yNWVtO1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICNmZGJjMzA7XHJcblx0ei1pbmRleDogMTA7XHJcbn1cclxuXHJcbiNhY3RpdmVBZG1pbkJhci50b3Age1xyXG4gICAgcG9zaXRpb246IHN0YXRpYztcclxuICAgIGhlaWdodDogNDhweDtcclxuXHJcbn1cclxuXHJcbiNhY3RpdmVBZG1pbkJhciAuYnRuLWRlZmF1bHQge1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICNmZGJjMzA7XHJcblx0Ym9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuXHRjb2xvcjogYmxhY2s7XHJcblx0Ym9yZGVyLXJhZGl1czogNHB4O1xyXG5cdGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBtYXJnaW46IDAgMC4yNWVtO1xyXG59XHJcblxyXG4jYWN0aXZlQWRtaW5CYXIgLmJ0bi1kZWZhdWx0OmhvdmVyIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZTU5OTAwO1xyXG59XHJcblxyXG4jYWN0aXZlQWRtaW5CYXIgLmJ0bi1kZWZhdWx0Omxhc3Qtb2YtdHlwZSB7XHJcblx0ZmxvYXQ6IHJpZ2h0O1xyXG59XHJcblxyXG4jYWN0aXZlQWRtaW5CYXIgLmJ0bi1kZWZhdWx0OmZvY3VzIHtcclxuXHRvdXRsaW5lLWNvbG9yOiBibGFjaztcclxufVxyXG5cclxuI2FjdGl2ZUFkbWluQmFyIGkge1xyXG5cdG1hcmdpbi1yaWdodDogMC4yNWVtO1xyXG59XHJcblxyXG4uZm9ybS1hY3Rpb25zIC5idG4ge1xyXG4gIG1hcmdpbi1yaWdodDogMC41ZW07XHJcbn1cclxuXHJcbi5yaWJib24ge1xyXG4gIG1hcmdpbi10b3A6IDJlbTtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDk2Mzk7XHJcbiAgcGFkZGluZzogMC43NWVtIDFlbTtcclxuICBjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbi50ZXh0LWRlY29yYXRpb24tdW5kZXJsaW5lIHtcclxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSAhaW1wb3J0YW50XHJcbn0iLCIjY29udGFpbmVyRGV0YWlsIHtcbiAgbWFyZ2luLWJvdHRvbTogM2VtOyB9XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgIE5FVyBTVFlMRVMgRk9SIC9QUk9KRUNUXHJcbiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4uYWN0aXZlLCAubmF2LXBpbGxzIC5hY3RpdmUgYSB7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7IH1cblxuLm5hdi1waWxscyB7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgbWFyZ2luLXRvcDogMmVtOyB9XG5cbi5uYXYtcGlsbHMgLmZhIHtcbiAgbWFyZ2luLXJpZ2h0OiA4cHg7IH1cblxuLnRhYi1wYW5lIHtcbiAgZm9udC1zaXplOiAxN3B4O1xuICBsaW5lLWhlaWdodDogMjVweDtcbiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7IH1cblxuLnRhYi1wYW5lIHVsIHtcbiAgcGFkZGluZy1sZWZ0OiAxZW07IH1cblxuLnRhYi1wYW5lIGg0IHtcbiAgbWFyZ2luLXRvcDogMS41ZW07XG4gIGZvbnQtc2l6ZTogMS4yNWVtOyB9XG5cbi5pbWctdGl0bGUge1xuICBtYXJnaW4tdG9wOiAyZW07XG4gIG1hcmdpbi1ib3R0b206IC0xZW07XG4gIGhlaWdodDogNzVweDsgfVxuXG4jcHJvamVjdFRhYmxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbiAgcGFkZGluZzogMWVtIDEuNWVtIDAuNWVtIDEuNWVtO1xuICBtYXJnaW4tdG9wOiAxZW07XG4gIGJvcmRlci1yYWRpdXM6IDVweDsgfVxuXG4uYnV0dG9uLWNlbnRlcmluZyB7XG4gIHBhZGRpbmc6IDIwcHg7IH1cblxuaDQge1xuICBmb250LXdlaWdodDogNjAwOyB9XG5cbi5pbmZvLXNwYWNlIHtcbiAgbWFyZ2luLXRvcDogMmVtOyB9XG5cbi9kZWVwLyAub3ZlcnZpZXctY29udGFpbmVyIHVsLFxuL2RlZXAvIC5hbmd1bGFyLWVkaXRvci13cmFwcGVyIHVsIHtcbiAgZm9udC1zaXplOiAxN3B4O1xuICBwYWRkaW5nLWxlZnQ6IDFlbTsgfVxuXG4vZGVlcC8gLmFuZ3VsYXItZWRpdG9yLXRleHRhcmVhIHAge1xuICBtYXJnaW4tYm90dG9tOiAwLjVlbSAhaW1wb3J0YW50OyB9XG5cbi9kZWVwLyAub3ZlcnZpZXctY29udGFpbmVyIGltZyB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAxZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyB9XG5cbi9kZWVwLyAub3ZlcnZpZXctY29udGFpbmVyIHRhYmxlIHtcbiAgd2lkdGg6IDEwMCU7IH1cblxuL2RlZXAvIC5vdmVydmlldy1jb250YWluZXIgdGQge1xuICBwYWRkaW5nOiAwLjVlbSAhaW1wb3J0YW50O1xuICBib3JkZXI6IDFweCBzb2xpZCAjNzY4NjkyICFpbXBvcnRhbnQ7IH1cblxuL2RlZXAvIG1hcmsge1xuICBwYWRkaW5nOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRiYzMwOyB9XG5cbi9kZWVwLyAuYW5ndWxhci1lZGl0b3ItdG9vbGJhci1zZXQge1xuICBmb250LXNpemU6IDEycHg7IH1cblxuL2RlZXAvIC5hbmd1bGFyLWVkaXRvciAuYW5ndWxhci1lZGl0b3Itd3JhcHBlciAuYW5ndWxhci1lZGl0b3ItdGV4dGFyZWEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuICBmb250LXNpemU6IDE3cHg7IH1cblxuL2RlZXAvIC5hbmd1bGFyLWVkaXRvci1idXR0b25bdGl0bGU9XCJJbnNlcnQgSW1hZ2VcIl0sXG4vZGVlcC8gLmFuZ3VsYXItZWRpdG9yLWJ1dHRvblt0aXRsZT1cIkhUTUwgQ29kZVwiXSB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuL2RlZXAvIC5zZWxlY3QtZm9udCwgL2RlZXAvIC5ibG9jay1sYWJlbFtmb3I9XCJmb250U2VsZWN0b3JcIl0sXG4vZGVlcC8gLnNlbGVjdC1mb250LXNpemUsIC9kZWVwLyAuYmxvY2stbGFiZWxbZm9yPVwic2VsZWN0LWZvbnQtc2l6ZVwiXSB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuI2FjdGl2ZUFkbWluQmFyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwLjVlbSAwLjI1ZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZGJjMzA7XG4gIHotaW5kZXg6IDEwOyB9XG5cbiNhY3RpdmVBZG1pbkJhci50b3Age1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBoZWlnaHQ6IDQ4cHg7IH1cblxuI2FjdGl2ZUFkbWluQmFyIC5idG4tZGVmYXVsdCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZGJjMzA7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiBibGFjaztcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBmb250LXdlaWdodDogNjAwO1xuICBtYXJnaW46IDAgMC4yNWVtOyB9XG5cbiNhY3RpdmVBZG1pbkJhciAuYnRuLWRlZmF1bHQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTU5OTAwOyB9XG5cbiNhY3RpdmVBZG1pbkJhciAuYnRuLWRlZmF1bHQ6bGFzdC1vZi10eXBlIHtcbiAgZmxvYXQ6IHJpZ2h0OyB9XG5cbiNhY3RpdmVBZG1pbkJhciAuYnRuLWRlZmF1bHQ6Zm9jdXMge1xuICBvdXRsaW5lLWNvbG9yOiBibGFjazsgfVxuXG4jYWN0aXZlQWRtaW5CYXIgaSB7XG4gIG1hcmdpbi1yaWdodDogMC4yNWVtOyB9XG5cbi5mb3JtLWFjdGlvbnMgLmJ0biB7XG4gIG1hcmdpbi1yaWdodDogMC41ZW07IH1cblxuLnJpYmJvbiB7XG4gIG1hcmdpbi10b3A6IDJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwOTYzOTtcbiAgcGFkZGluZzogMC43NWVtIDFlbTtcbiAgY29sb3I6IHdoaXRlOyB9XG5cbi50ZXh0LWRlY29yYXRpb24tdW5kZXJsaW5lIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgIWltcG9ydGFudDsgfVxuIl19 */\"","import { Component, OnInit, HostListener, Inject } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { Meta, Title } from '@angular/platform-browser';\r\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\nimport { MemberService } from '../utilities/services/member.service';\r\nimport { HtmlService } from '../utilities/services/html.service';\r\nimport { DataService } from '../utilities/services/data.service';\r\n\r\nimport { ProjectInformation } from '../utilities/classes/project/project-information';\r\nimport { AngularEditorConfig } from '@kolkov/angular-editor';\r\n\r\n@Component({\r\n selector: 'app-project',\r\n templateUrl: './project-detail.component.html',\r\n styleUrls: ['./project-detail.component.scss']\r\n})\r\nexport class ProjectDetailComponent implements OnInit {\r\n projectInformation: any;\r\n projectTimetableVisible: boolean = true;\r\n awsDocuments: Object;\r\n projectGuidancePD = null;\r\n\r\n public navIsFixed: boolean = false;\r\n public width: number;\r\n\r\n // Active Admin\r\n currentUserApproved: boolean = false;\r\n\r\n projectId;\r\n detailsForm: FormGroup;\r\n editingDetails: boolean = false;\r\n editorConfig: AngularEditorConfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: '50rem',\r\n minHeight: '25rem',\r\n translate: 'no'\r\n };\r\n\r\n metaTitle: string = 'Project Detail | NHS Benchmarking Network';\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private dataService: DataService,\r\n private memberService: MemberService,\r\n private htmlService: HtmlService,\r\n private titleService: Title,\r\n private meta: Meta,\r\n private fb: FormBuilder,\r\n private toastr: ToastrService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(this.metaTitle); // Set page title\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n let projectId = +this.route.snapshot.paramMap.get('projectId');\r\n\r\n this.getProjectInformation(projectId);\r\n }\r\n\r\n getProjectInformation(projectId: number) {\r\n this.memberService.ProjectInformation(projectId).subscribe(\r\n p => { \r\n this.projectInformation = p.data;\r\n this.projectId = projectId;\r\n\r\n if (Object.keys(p.data.projectGuidance).length > 0) {\r\n if (p.data.projectGuidance.hasOwnProperty('project_detail')) {\r\n if (Object.keys(p.data.projectGuidance['project_detail']).length > 0) {\r\n this.projectGuidancePD = p.data.projectGuidance['project_detail'][0].guidanceText\r\n }\r\n }\r\n }\r\n\r\n let nullCount = 0;\r\n\r\n Object.keys(p.data.projectTimetable).forEach(element => {\r\n if (p.data.projectTimetable[element] == null && (element == 'openDate' || element == 'closeDate' || element == 'eventDate' || element == 'publicationDate')) {\r\n nullCount++;\r\n }\r\n })\r\n\r\n if (nullCount == 4) {\r\n this.projectTimetableVisible = false;\r\n }\r\n\r\n this.checkUser();\r\n }\r\n );\r\n }\r\n\r\n navHome() {\r\n this.router.navigate(['/home']);\r\n }\r\n\r\n resourceLink() {\r\n return `/resources?year=2024§or=${this.projectInformation.projectCategory}`\r\n }\r\n\r\n gotoOutputs(projectId: number) {\r\n this.router.navigate(['/outputs', projectId]);\r\n }\r\n\r\n // Active Admin\r\n\r\n checkUser() {\r\n let currentUser = this.dataService.getUser();\r\n if (currentUser && currentUser.isAdmin && currentUser.isAdmin === 'Y') {\r\n this.currentUserApproved = true;\r\n }\r\n }\r\n\r\n editDetails() {\r\n this.buildDetailsForm();\r\n this.detailsForm.setValue({\r\n description: this.projectInformation.projectDescription\r\n });\r\n this.editingDetails = true;\r\n }\r\n\r\n buildDetailsForm() {\r\n this.detailsForm = this.fb.group({ \r\n description: ['', []]\r\n });\r\n }\r\n\r\n submitForm() {\r\n let newProjectDetails = {\r\n projectDescription: this.detailsForm.value.description\r\n };\r\n this.memberService.modifyProject(this.projectId, newProjectDetails).subscribe(\r\n r => {\r\n this.editingDetails = false;\r\n this.getProjectInformation(this.projectId);\r\n this.toastr.success(\"The project details have been successfully updated.\");\r\n },\r\n e => {\r\n console.log(e);\r\n this.toastr.error(\"There has been an error whilst trying to edit the project details. Please discuss with IT Team.\");\r\n }\r\n );\r\n }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { TabsModule } from 'ngx-bootstrap';\r\n\r\nimport { ProjectDetailComponent } from './project-detail.component';\r\nimport { ProjectDetailRoutingModule } from './project-detail-routing.module';\r\n\r\nimport { SafePipeModule } from '../utilities/pipes/safe-pipe.module';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\n\r\n@NgModule({\r\n imports: [ \r\n CommonModule, \r\n TabsModule.forRoot(),\r\n SafePipeModule,\r\n ProjectDetailRoutingModule ,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n AngularEditorModule\r\n ],\r\n declarations: [ ProjectDetailComponent ]\r\n})\r\nexport class ProjectDetailModule {}","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { ProjectOverviewComponent } from './project-overview.component'\r\n\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service'\r\n\r\nconst projectoverviewRoutes: Routes = [\r\n // Redirect Community Indicators and CS Covid-19 Dashboard\r\n { path: 'project-overview/41', redirectTo: 'project/41/collection', pathMatch: 'full' },\r\n { path: 'project-overview/43', redirectTo: 'project/43/collection', pathMatch: 'full' },\r\n // Standard path\r\n { path: 'project-overview/:projectId', component: ProjectOverviewComponent, canActivate: [AuthGuardService] }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(projectoverviewRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class ProjectOverviewRoutingModule { }","module.exports = \"
\\r\\n \\r\\n

The data collection page is loading. Please wait...

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

\\r\\n Data collection is not yet available for this project.
\\r\\n Click 'Back to Projects' to return to the home page.\\r\\n

\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Back to Projects\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\\"NHSBN\\r\\n
\\r\\n
\\r\\n

{{ currentOrganisationName }}

\\r\\n

{{ projectOverviewOrganisations.projectName }}

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

Data Collection{{ projectId == 34 && currentYear === 2022 ? ': Round 4' : '' }}

\\r\\n

\\r\\n

\\r\\n Welcome to the {{ projectOverviewOrganisations.projectName }} project data collection. Follow each of the steps on this page to complete the required information. You can switch organisation using the drop-down menu in the blue bar at the top of the page.\\r\\n

\\r\\n

\\r\\n Welcome to the {{ projectOverviewOrganisations.projectName }} project data collection. Follow each of the steps on this page to complete the required information. For more information about the timescales, audit process and copies of the data specifications (questions and answers) please refer to the Mental Health Spotlight page.\\r\\n

\\r\\n

\\r\\n There are four stages of data collection for NACEL Northern Ireland 2024. For more information about the timescales, audit process and copies of the data specifications (questions and answers) please refer to the NACEL NI Audit Guidance page.\\r\\n

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

\\r\\n If you need technical support or have any queries whilst completing the {{ productId === 34 ? 'audit' : 'data collection'}} process, please\\r\\n\\r\\n \\r\\n email nhsbn.nacelsupport@nhs.net or call 0161 521 0866.\\r\\n email nhsbn.yots@nhs.net.\\r\\n contact the {{ projectOverviewOrganisations.projectName }} Support Team via nhsbn.nhsildsupport@nhs.net.\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n call the {{ projectOverviewOrganisations.projectName }} Support Team on\\r\\n {{ projectOverviewOrganisations.projectPhoneNo }}\\r\\n \\r\\n or email {{ projectCoordinator.name }}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n email {{ projectManager.name }}\\r\\n \\r\\n\\r\\n \\r\\n call 0161 266 1797\\r\\n \\r\\n \\r\\n \\r\\n

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

Project Files:

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

\\r\\n Project and Submission Lead: {{ projectLead.name }}\\r\\n

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

\\r\\n You are currently using an outdated version of Internet Explorer.
\\r\\n You will not be able to complete data collection using this browser. Please download the latest version or see our help page for more information on alternative browsers.\\r\\n

\\r\\n\\r\\n \\r\\n
= currentYearDate) && (projectId != 6 && projectId != 31) \\\">\\r\\n

Acute Transformation Dashboard (ATD) Data Collection

\\r\\n

SDEC Transformation Dashboard Data Collection

\\r\\n
\\r\\n
\\r\\n\\r\\n
= currentYearDate\\\">\\r\\n

Core Annual Project

\\r\\n
\\r\\n\\r\\n \\r\\n
date\\\">\\r\\n

Validation

\\r\\n

Access your organisation's validation queries for the current year by clicking the button below.\\r\\n If you need any further assistance, please contact our support team.

\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Data collection for the {{projectOverviewOrganisations.projectName}} {{ currentYear }} project is currently closed. You may continue to view the data your organisation has submitted previously, but access will be limited to \\\"read-only\\\".\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Data collection for the {{projectOverviewOrganisations.projectName}} {{ currentYear }} project is currently in the validation period. You can continue to view, edit and add data during the validation period.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Data Collection is not yet open

\\r\\n

The data collection pages for {{projectOverviewOrganisations.projectName}} are not yet available. Please check the project calendar on the home page for more information.

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

Monthly Data Collection

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

Project Specification

\\r\\n

\\r\\n

You can download a copy of the audit questions for this project by clicking on the Download Specification button below. If you need any further assistance, please contact the Support Team on the email address above.

\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
= currentYearDate\\\">\\r\\n

Project Specification

\\r\\n

\\r\\n You may download a copy of the audit questions for the NHS England Learning Disability Improvement Standards project by clicking on the \\\"Download Specification\\\" button below. You can also download the full project guidance by clicking the \\\"Download Guidance\\\" button below.\\r\\n

\\r\\n \\r\\n Download Specification\\r\\n \\r\\n \\r\\n Download Specification\\r\\n \\r\\n \\r\\n Download Guidance\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n

\\r\\n Trust / HB Overview\\r\\n = 2020\\\">Acute / Community\\r\\n

\\r\\n

Click the button below to submit data for the Trust / HB Organisational Overview. This only needs to be completed once for the entire Trust / HB relating to your organisation's acute / community hospital provision.

\\r\\n \\r\\n \\r\\n Download Data Specification (A/C)\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n

\\r\\n Trust / HB Overview\\r\\n = 2020\\\">Mental Health\\r\\n

\\r\\n

Click the button below to submit data for the Trust / HB Organisational Overview. This only needs to be completed once for the entire Trust / HB relating to your organisation's mental health hospital provision.

\\r\\n \\r\\n \\r\\n Download Data Specification (MH)\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n

Organisation Specification

\\r\\n

Click on the button below to download the Organisation Specification document.

\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
1\\\" class=\\\"form-vertical select-submission\\\">\\r\\n
\\r\\n
\\r\\n

Select a Submission

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n The following sections of the data collection must be completed on a submission-by-submission basis. Please select a submission from the drop-down.\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n Submission Lead: {{ submissionLeadName }}\\r\\n

\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n This submission is currently marked as completed and the data collection pages are 'read-only'. You can still edit the data up to the deadline of {{ projectOverviewSubmissions.currentYearCloseDate | date: 'd LLLL y' }} by clicking 'Edit Submission' below.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
0 && !registrationLocked && currentYear >= currentYearDate\\\">\\r\\n
\\r\\n
\\r\\n Registration for this project has not been fully completed. Please click here to return to the registration form and complete it before continuing with data collection.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
0 && (registrationLocked || currentYear < currentYearDate)\\\">\\r\\n\\r\\n \\r\\n
\\r\\n

\\r\\n Qualification Questions\\r\\n
for {{ currentSubmissionName }}\\r\\n

\\r\\n

\\r\\n You must complete the following questions before accessing the data collection for this submission. Once complete, the data collection page will become available on the Project Overview page, tailored to the answers you provide here.\\r\\n

\\r\\n

\\r\\n You have answered these questions and they are now marked as read-only. If you need to change your answers, please contact the support team.\\r\\n

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

\\r\\n \\r\\n Project Questions\\r\\n
for {{ currentSubmissionName }}\\r\\n

\\r\\n

\\r\\n

\\r\\n Access the project questions for {{projectOverviewOrganisations.projectName}}. These questions are asked once per submission.\\r\\n

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

Select a Service

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n The following sections of the data collection must be completed on a service-by-service basis. Please select a service from the drop-down.\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
0\\\">\\r\\n

\\r\\n \\r\\n Service Questions\\r\\n
for {{ currentServiceName }}\\r\\n

\\r\\n

\\r\\n

\\r\\n Access the service questions for the submission / service shown above. These questions are asked once for each service included in the selected submission.\\r\\n

\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
2018 && currentYear < 2023 && projectOverviewOrganisations.productId == 5\\\">\\r\\n

\\r\\n Quality Survey Letter Generator\\r\\n = 2020 && (peerGroupId == 1 || peerGroupId == 2)\\\">Acute / Community\\r\\n = 2020 && peerGroupId == 3\\\">Mental Health\\r\\n

\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Northern Ireland have opted out of the Acute/Community Quality Survey for NACEL in round four.\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n The Quality Survey Letter Generator should be used to assign a survey code to each nominated person and generate the letter. Each nominated person will be assigned a non-identifiable Quality Survey Code. Once the nominated person's details are logged within the document, a Quality Survey Letter can be generated.\\r\\n

\\r\\n

\\r\\n Click the button below to download the document (Microsoft Excel).\\r\\n

\\r\\n \\r\\n
\\r\\n
= currentYearDate\\\">\\r\\n

\\r\\n You will need to enter the following two codes into the Quality Survey Letter Generator to generate the required codes.\\r\\n

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

\\r\\n Validation Code: Enter the following validation code, once prompted: {{ crcCheck }}\\r\\n

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

\\r\\n Project Questions\\r\\n
for {{ currentSubmissionName }}\\r\\n

\\r\\n

Click on the button below to complete the Specialist LD Provider Overview data collection.

\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
= 2024 || (projectId == 86 && currentYear >= 2024)\\\">\\r\\n

\\r\\n Bereavement Survey\\r\\n Acute / Community hospital provider\\r\\n Mental Health\\r\\n

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

\\r\\n Please share the following survey link/QR code with the bereaved person(s) of all eligible patients who died within the hospital/site from {{ projectId == 34 ? '1st January 2025 to 31st December 2025.' : '1st July 2024 to 30th June 2025.' }}\\r\\n

\\r\\n

\\r\\n This collection should be completed for each {{ projectId == 34 ? 'NACEL submission.' : 'NACEL NI submission.' }} The survey link is unique to the submission named above.\\r\\n

\\r\\n

\\r\\n {{ qualitySurveyLink }}\\r\\n

\\r\\n

\\r\\n Click on the link above to select it, then copy it (CTRL + C). The QR code for the survey can be downloaded. The link and QR code can then be pasted into a communication (e.g. email, letter, poster etc.) to share with the bereaved persons(s).\\r\\n

\\r\\n

\\r\\n Example promotional resources and the Bereavement Survey questionnaire is available to download from the NACEL Audit Guidance page.\\r\\n

\\r\\n

\\r\\n Example promotional resources and the Bereavement Survey questionnaire is available to download from the NACEL NI Audit Guidance page.\\r\\n

\\r\\n

\\r\\n So far, {{ qualitySurveyCount }} Bereavement Surveys have been completed for your submission.\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
2018 && projectOverviewOrganisations.productId == 5\\\">\\r\\n

\\r\\n Case Note Review\\r\\n = 2020 && (peerGroupId == 1 || peerGroupId == 2)\\\">Acute / Community hospital provider\\r\\n = 2020 && peerGroupId == 3\\\">Mental Health\\r\\n

\\r\\n

\\r\\n The Case Note Review will collect patient level data on the deaths within the audit criteria. The Case Note Review collection should be completed for each NACEL submission.\\r\\n

\\r\\n

\\r\\n Each submission should complete a Case Note Review for 20-70 consecutive deaths each quarter, submitting the data within the data collection pages.\\r\\n

\\r\\n

\\r\\n To complete the Case Note Review, each patient must be assigned a 'case code' to submit their data under; this is to ensure no patient identifiable data is submitted. Use the buttons below to add new case notes, as required, up to a maximum of 140 per data collection period (70 per quarter).\\r\\n

\\r\\n

\\r\\n Each submission should complete a Case Note Review for adults that died in the mental health inpatient facility, within the inclusion criteria, from 1st January 2025 - 31st December 2025.\\r\\n

\\r\\n

\\r\\n To complete the Case Note Review, each patient must be assigned a 'case code' to submit their data under; this is to ensure no patient identifiable data is submitted.\\r\\n

\\r\\n

\\r\\n To access the Case Note Review questions for each case note, select \\\"Open\\\" to the right of the selected case code. You can add the initials of the reviewer for each case note. To mark a case note as \\\"Complete\\\", select the green tick to right of the status. Please do not include patient-confidential information.\\r\\n

\\r\\n
\\r\\n
\\r\\n Loading case codes. This may take a few seconds.\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Viewing casecodes for period {{ filterValue == casecodesFirstHalfFilter ? 'Jan - Jun' : 'Jul - Dec' }}\\r\\n Viewing casecodes for period 1st July 2024 to 30th June 2025\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
StatusCase Code\\r\\n Reviewer's Initials\\r\\n \\r\\n Actions
\\r\\n \\r\\n {{ c.completionStatus }}\\r\\n \\r\\n \\r\\n {{ c.completionStatus }}\\r\\n \\r\\n \\r\\n {{ c.completionStatus }}\\r\\n \\r\\n {{ c.caseCode.substring(5).slice(1,-5) }}\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n 30 ? c.caseCodeNotes : '' }}\\\">{{ c.caseCodeNotes | slice:0:30 }}{{ c.caseCodeNotes.length > 30 ? '...' : '' }} \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n You have not yet added any case codes.\\r\\n
\\r\\n
\\r\\n There are no case codes matching this filter.\\r\\n
\\r\\n
10 && cnrFilter == null\\\" class=\\\"text-center\\\">\\r\\n \\r\\n \\r\\n

{{ startItem + 1 || 1 }}-{{ endItem || 10 }} of {{caseNoteCodeLength}} case codes

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

\\r\\n Data collection timescales\\r\\n

\\r\\n
    \\r\\n
  • First data collection will run from 20th January 2025 to 12th July 2025, collecting data about patients who died during Q4 and Q1.
  • \\r\\n
  • Second data collection will run from 1st July 2025 to 16th January 2026, collecting data about patients who died during Q2 and Q3.
  • \\r\\n
\\r\\n
    \\r\\n
  • First data collection will run from 1st July 2024 to 31st December 2024, collecting data about patients who died during Q2 2024/25 and Q3 2024/25.
  • \\r\\n
  • Second data collection will run from 1st January 2025 to 30th June 2025, collecting data about patients who died during Q4 2024/25 and Q1 2025/2026.
  • \\r\\n
\\r\\n

\\r\\n More information about the eligibility criteria, sample size and timescales can be found from the Audit Guidance document, available to download from the NACEL Audit Guidance page. A Microsoft Excel and PDF version of the Case Note Review questionnaire is further available to download from the Audit Guidance page.\\r\\n

\\r\\n

\\r\\n More information about the eligibility criteria, sample size and timescales can be found from the Audit Guidance document, available to download from the NACEL NI Audit Guidance page. A Microsoft Excel and PDF version of the Case Note Review questionnaire is further available to download from the Audit Guidance page.\\r\\n

\\r\\n

\\r\\n Data collection will run from 20th January 2025 - 16th January 2026.\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
Tracking Case Codes
\\r\\n

\\r\\n For your internal use only, we ask that you keep a log of the Case Note Review codes assigned to each patient. This will be useful for instances when the Case Note details need to be followed up.\\r\\n

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
= 2024 && projectId !== 86\\\"> \\r\\n

\\r\\n Hospital / Site Overview\\r\\n Acute / Community hospital provider\\r\\n

\\r\\n

\\r\\n The data collection will collect data on activity, workforce and quality improvement within the hospital / site. This collection should be completed for each NACEL submission.\\r\\n

\\r\\n

\\r\\n Data collection for the Hospital/Site Overview will run from 1st July 2025 to 30th September 2026. Download a copy of the Hospital/Site Overview data specification from the NACEL Audit Guidance page page.\\r\\n

\\r\\n

\\r\\n Data collection for the Hospital/Site Overview will run from 1st July 2024 to 30th September 2024. Download a copy of the Hospital/Site Overview data specification from the NACEL NI Audit Guidance page page.\\r\\n

\\r\\n

\\r\\n Data collection to open on the 1st July 2025 \\r\\n

\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
= 2024\\\">\\r\\n

\\r\\n Staff Reported Measure\\r\\n = 2020 && (peerGroupId == 1 || peerGroupId == 2)\\\">Acute / Community\\r\\n = 2020 && peerGroupId == 3\\\">Mental Health\\r\\n

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

\\r\\n Please send the following link to 150 staff members who have seen patients with Learning Disabilities or Autism.\\r\\n

\\r\\n

\\r\\n Please send the following survey link/QR code to your inpatient staff. This collection should be completed for each NACEL submission. The survey link is unique to the submission named above.\\r\\n

\\r\\n

\\r\\n {{ staffSurveyLink }}\\r\\n

\\r\\n

\\r\\n Click on the link above to select it, then copy it (CTRL+C). You can then paste it into an email or company communication to share it with your staff. Alternatively, download the QR code to share the link on notice boards or posters.\\r\\n

\\r\\n

\\r\\n Click on the link above to select it, then copy and paste it (CTRL + C). The QR code for the survey can be downloaded. You can then paste them into a communication (e.g. email, poster, notice board etc).\\r\\n

\\r\\n

\\r\\n Data collection for the Staff Reported Measure will run from 20th January 2025 to 31st December 2025. An example promotional poster and the survey questionnaire is available to download from the NACEL \\r\\n Audit Guidance page\\r\\n Mental Health Spotlight page\\r\\n .\\r\\n

\\r\\n

\\r\\n Data collection for the Staff Reported Measure will run from 1st July 2024 to 30th September 2024. An example promotional poster and the survey questionnaire is available to download from the NACEL NI Audit Guidance page.\\r\\n

\\r\\n

\\r\\n So far, {{ surveyCount }} staff surveys have been completed for your submission.\\r\\n

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

\\r\\n Data collection for the Staff Reported Measure is now closed . \\r\\n
\\r\\n Data collection was open from 1st April 2024 to 30th June 2024\\r\\n

\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
= 2023) || (projectId == 86 && currentYear >= 2024)\\\">\\r\\n

\\r\\n Staff Survey\\r\\n = 2020 && (peerGroupId == 1 || peerGroupId == 2)\\\">Acute / Community\\r\\n = 2020 && peerGroupId == 3\\\">Mental Health\\r\\n

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

\\r\\n Please send the following link to 150 staff members who have seen patients with Learning Disabilities or Autism.\\r\\n

\\r\\n

\\r\\n Please send the following survey link/QR code to your inpatient staff. This collection should be completed for each NACEL submission. The survey link is unique to the submission named above.\\r\\n

\\r\\n

\\r\\n {{ staffSurveyLink }}\\r\\n

\\r\\n

\\r\\n Click on the link above to select it, then copy it (CTRL+C). You can then paste it into an email or company communication to share it with your staff. Alternatively, download the QR code to share the link on notice boards or posters.\\r\\n

\\r\\n

\\r\\n Click on the link above to select it, then copy and paste it (CTRL + C). The QR code for the survey can be downloaded. You can then paste them into a communication (e.g. email, poster, notice board etc).\\r\\n

\\r\\n

\\r\\n Data collection for the staff survey will run from 1st April 2024 to 30th June 2024. An example promotional poster and the survey questionnaire is available to download from the NACEL \\r\\n Audit Guidance page\\r\\n Mental Health Spotlight page\\r\\n .\\r\\n

\\r\\n

\\r\\n Data collection for the staff survey will run from 1st July 2024 to 30th September 2024. An example promotional poster and the survey questionnaire is available to download from the NACEL NI Audit Guidance page.\\r\\n

\\r\\n

\\r\\n So far, {{ surveyCount }} staff surveys have been completed for your submission.\\r\\n

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

\\r\\n Data collection for the staff survey is now closed . \\r\\n
\\r\\n Data collection was open from 1st April 2024 to 30th June 2024\\r\\n

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

\\r\\n \\r\\n Organisation Questions\\r\\n Trust/Health Board Questions\\r\\n \\r\\n = 2020 && peerGroupId == 3\\\">Mental Health\\r\\n

\\r\\n

\\r\\n

\\r\\n Access the organisation questions for {{projectOverviewOrganisations.projectName}}. These questions are asked once per organisation.\\r\\n

\\r\\n

\\r\\n Access the Trust/Health Board Questions for {{projectOverviewOrganisations.projectName}}. These questions are asked once per organisation.
\\r\\n Data collection to run from 1st July 2025 to 30th September 2025.\\r\\n

\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
= 2024) || (projectId == 88 && currentYear >= 2024)\\\">\\r\\n

\\r\\n Annual death data collection\\r\\n = 2020 && (peerGroupId == 1 || peerGroupId == 2)\\\">Acute / Community hospital provider\\r\\n = 2020 && peerGroupId == 3\\\">Mental Health\\r\\n

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

\\r\\n This a singular data collection to capture the number of deaths within the year, aligning to the NACEL Case Note Review criteria. This collection should be completed for each NACEL submission.\\r\\n

\\r\\n

\\r\\n Data collection for the annual death data collection will run from 1st January 2026 to 16th January 2026. \\r\\n

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

Case Note Review

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

Data Reliability Study

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

\\r\\n Hospital / Site Overview\\r\\n Mental Health\\r\\n

\\r\\n

\\r\\n Click on the button below to submit data for the hospital / site submission. This data collection will need to be completed once per submission.\\r\\n

\\r\\n

\\r\\n The hospital / site overview collects data on activity, workforce, quality and outcomes, and good practice within the hospital / site.\\r\\n

\\r\\n
\\r\\n \\r\\n \\r\\n Download Data Specification (MH)\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
2018 && currentYear < 2023))\\\">\\r\\n

\\r\\n Audit Summary\\r\\n = 2020 && (peerGroupId == 1 || peerGroupId == 2)\\\">Acute / Community\\r\\n = 2020 && peerGroupId == 3\\\">Mental Health\\r\\n

\\r\\n

\\r\\n The audit summary collects data on the total number of deaths within the audit period. This is to be completed once per submission.\\r\\n

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
= currentYearDate\\\">\\r\\n

Patient Survey

\\r\\n

\\r\\n The patient survey aspect of the data collection uses a paper-based survey. Your\\r\\n registered sites will each receive a survey pack which will include 50 surveys, each\\r\\n with a freepost return envelope. These will be sent to you by courier, in due course.\\r\\n You will be notified when they have been distributed.\\r\\n

\\r\\n

\\r\\n Please notify the support team at nhsbn.nhsildsupport@nhs.net when you receive\\r\\n these, or if you have not received them by. The patient surveys can be distributed to\\r\\n any patient with a Learning Disability or Autism over the age of 18 who accesses\\r\\n your service over the collection period. Organisations may also choose to post the\\r\\n surveys to patients who have accessed their services in the past 12 months,\\r\\n provided this complies with your Organisation's Information Governance guidance.\\r\\n

\\r\\n
\\r\\n\\r\\n \\r\\n
= currentYearDate\\\">\\r\\n

Clinical Case Review

\\r\\n

\\r\\n A Clinical Case Review (CCR) should be created and completed for every service user referred into this intermediate care service during the data collection period. Information about each service user is to be collected on admission to the service and on discharge. More information can be found in the Intermediate Care guidance.\\r\\n

\\r\\n

\\r\\n To mark a CCR as \\\"Complete\\\", select the green tick to right of the status. To access the questions for each CCR, select \\\"Open\\\" to the right of the selected CCR code. You can add the initials of the clinician for each CCR.\\r\\n

\\r\\n

\\r\\n Please do not include patient-confidential information.\\r\\n

\\r\\n
\\r\\n
\\r\\n Loading CCR codes. This may take a few seconds.\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
StatusCCR Code\\r\\n Clinician's Initials\\r\\n \\r\\n Actions
\\r\\n \\r\\n {{ c.completionStatus }}\\r\\n \\r\\n \\r\\n {{ c.completionStatus }}\\r\\n \\r\\n \\r\\n {{ c.completionStatus }}\\r\\n \\r\\n {{ c.caseCode.substring(5).slice(1,-5) }}\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n 30 ? c.caseCodeNotes : '' }}\\\">{{ c.caseCodeNotes | slice:0:30 }}{{ c.caseCodeNotes.length > 30 ? '...' : '' }} \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n You have not yet added any CCR codes.\\r\\n
\\r\\n
10\\\" class=\\\"text-center\\\">\\r\\n \\r\\n \\r\\n

{{ startItem + 1 || 1 }}-{{ endItem || 10 }} of {{caseNoteCodeLength}} CCR codes

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

\\r\\n Use the buttons above to add new CCRs, as required, up to a maximum of 200 for both bed based and IC services provided at home.\\r\\n

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

Click here to download a PDF of the CCR

\\r\\n

Click here to download a PDF of the CCR

\\r\\n
\\r\\n\\r\\n \\r\\n
= currentYearDate) || projectId == 68\\\">\\r\\n

{{ internalSurvey.name }}

\\r\\n

\\r\\n

\\r\\n To mark a {{ internalSurvey.shortName }} as \\\"Complete\\\", select the green tick to right of the status. To access the questions for each {{ internalSurvey.shortName }}, select \\\"Open\\\" to the right of the selected {{ internalSurvey.shortName }} code. You can add the initials of the clinician for each {{ internalSurvey.shortName }}.\\r\\n

\\r\\n

\\r\\n Please do not include patient-confidential information.\\r\\n

\\r\\n
\\r\\n
\\r\\n Loading {{ internalSurvey.shortName }} codes. This may take a few seconds.\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Status{{ internalSurvey.shortName }} Code\\r\\n Clinician's Initials\\r\\n \\r\\n Actions
\\r\\n \\r\\n {{ c.completionStatus }}\\r\\n \\r\\n \\r\\n {{ c.completionStatus }}\\r\\n \\r\\n \\r\\n {{ c.completionStatus }}\\r\\n \\r\\n {{ c.caseCode.substring(5).slice(1,-5) }}\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n 30 ? c.caseCodeNotes : '' }}\\\">{{ c.caseCodeNotes | slice:0:30 }}{{ c.caseCodeNotes.length > 30 ? '...' : '' }} \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n You have not yet added any {{ internalSurvey.shortName }} codes.\\r\\n
\\r\\n
10\\\" class=\\\"text-center\\\">\\r\\n \\r\\n \\r\\n

{{ startItem + 1 || 1 }}-{{ endItem || 10 }} of {{caseNoteCodeLength}} {{ internalSurvey.shortName }} codes

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

\\r\\n Use the buttons above to add new {{ internalSurvey.shortName }}s, as required, up to a maximum of {{ internalSurvey.maxNumberCodes }}.\\r\\n

\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
= currentYearDate\\\">\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{ survey.name | titlecase }}

\\r\\n

\\r\\n So far, {{ survey.surveyCount }} {{ survey.name }}s have been completed for this submission.\\r\\n

\\r\\n

\\r\\n  Download the Service User Audit specification\\r\\n

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

\\r\\n {{ survey.userType | titlecase }}s can complete the {{ survey.name }} by visiting the web-page below. The {{ survey.userType }} will then need to add the two-part code in order to complete the survey. The code is specific to this submission/site, and should only be used by {{ survey.userType }}s of this submission/site.\\r\\n \\r\\n The deadline for the staff survey is 31st March 2024\\r\\n \\r\\n

\\r\\n

\\r\\n https://surveys.nhsbenchmarking.nhs.uk\\r\\n {{ currentSubmission }}\\r\\n {{ currentOrganisation }}\\r\\n

\\r\\n

\\r\\n Use the button below to copy the link and codes to your clipboard for use in communications with {{ survey.userType }}s.\\r\\n

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

Click here to download a PDF of the PREM

\\r\\n

Click here to download a PDF of the PREM

\\r\\n

Click here to download a PDF of the PREM

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
= currentYearDate && !submissionLocked && !guidanceMonthly || projectOpen) && projectId !== 34 && projectId !== 86 && projectId !== 88\\\">\\r\\n

\\r\\n By clicking the button below, you indicate to the project team that you have completed data collection for this submission and the data collection pages will become 'read-only'. You will still have the option to edit the data up to the deadline of {{ projectOverviewSubmissions.currentYearCloseDate | date: 'd LLLL y' }}.\\r\\n

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

\\r\\n Please note that only Project Leads and Deputy Project Leads can mark a submission as complete.\\r\\n

\\r\\n
\\r\\n\\r\\n
= currentYearDate && submissionLocked && !guidanceMonthly\\\">\\r\\n

\\r\\n This submission is currently marked as completed and the data collection pages are 'read-only'. You can still edit the data up to the deadline of {{ projectOverviewSubmissions.currentYearCloseDate | date: 'd LLLL y' }} by clicking 'Edit Submission' below.\\r\\n

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

\\r\\n Please note that only Project Leads and Deputy Project Leads can mark a submission as editable.\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\"","module.exports = \".loading-overview {\\n margin-top: 25vh; }\\n\\n.loading-overview p {\\n margin-top: 0.75em;\\n font-size: 20px;\\n font-weight: 600; }\\n\\nul.file-list {\\n padding: 0 0 0 0.5em;\\n margin-bottom: 1.5em; }\\n\\nul.file-list li {\\n list-style: none; }\\n\\nh1 {\\n margin-top: 1em; }\\n\\n.btn-default.btn-default-outline {\\n border-color: #005EB8;\\n color: #005EB8; }\\n\\n.img-title {\\n margin-top: 2em;\\n height: 125px; }\\n\\n.title-intro {\\n color: #005EB8;\\n font-weight: 600;\\n margin-bottom: 0.5em;\\n margin-top: 0; }\\n\\n.row-overview {\\n padding-top: 1em;\\n padding-bottom: 1em; }\\n\\n.row-overview:nth-child(even) {\\n background-color: #F2F7FB;\\n border-top: 1px solid #eee;\\n border-bottom: 1px solid #eee; }\\n\\n.row-overview p {\\n margin-top: 0.5em; }\\n\\n.nacel-sections .row-overview {\\n background-color: white; }\\n\\n.spacer {\\n margin-top: 2em;\\n margin-bottom: 2.5em; }\\n\\n.code-colour {\\n color: red; }\\n\\n.collapsable {\\n position: relative;\\n max-height: 100px;\\n overflow-y: hidden; }\\n\\n.collapsable:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n right: 0;\\n width: 100%;\\n height: 100px;\\n background: linear-gradient(rgba(255, 255, 255, 0), white 68%); }\\n\\n.expcoll {\\n margin-top: -0.5em;\\n text-align: center;\\n font-size: 2em;\\n color: #768692; }\\n\\n.expcoll:hover {\\n cursor: pointer; }\\n\\n.vcenter {\\n display: inline-block;\\n vertical-align: middle;\\n float: none; }\\n\\n@media (max-width: 991px) {\\n .row .col-md-4 > .pull-right {\\n float: none !important; }\\n .img-title {\\n height: 90px; } }\\n\\nh3 small {\\n font-size: 0.8em;\\n font-weight: bold; }\\n\\n#containerOverview {\\n padding-top: 1em;\\n background-color: #F3F3F3;\\n min-height: 80vh;\\n min-height: 100%;\\n padding-bottom: 5em;\\n z-index: -1; }\\n\\n.height-fix {\\n height: 35vh; }\\n\\n#sidebar {\\n min-height: 70vh; }\\n\\n.sidebar-contacts {\\n padding-bottom: 1em;\\n margin-bottom: 1.5em;\\n border-bottom: 1px solid #ccc; }\\n\\n#selectorBar {\\n background-color: #005EB8;\\n margin-top: -2em; }\\n\\n#selectorBar .btn-back {\\n color: white;\\n font-size: 17px;\\n line-height: 2.5em; }\\n\\n#selectorBar .btn-back .fa {\\n margin-right: 5px; }\\n\\n#selectorBar .btn-back:hover {\\n cursor: pointer; }\\n\\n#selectorBar .form-group {\\n padding: 5px 0;\\n margin-bottom: 0;\\n background-color: #004485; }\\n\\n#selectorBar .form-control {\\n background-color: #004485;\\n color: white;\\n border: none; }\\n\\n#selectorBar .form-control:focus {\\n outline: none;\\n box-shadow: none; }\\n\\n.defunct {\\n color: #768692; }\\n\\n.select-submission {\\n padding-bottom: 1.5em;\\n margin-top: 1em;\\n margin-bottom: 1em;\\n border-bottom: 1px solid #ccc; }\\n\\n.alert-info,\\n.alert-danger,\\n.alert-success {\\n font-size: 17px;\\n margin: 1em 0 0 0; }\\n\\n.submission-select {\\n margin-top: 1em; }\\n\\n.dc-section {\\n margin-top: 2em;\\n background-color: white;\\n padding: 2em;\\n border-radius: 4px;\\n border: 1px solid #ccc; }\\n\\n.dc-spec {\\n background-color: #F3F3F3; }\\n\\n.dc-spec .btn {\\n margin-right: 0.5em; }\\n\\n.dc-section h3:first-of-type {\\n margin-top: 0;\\n padding-bottom: 0;\\n margin-bottom: 0.25em; }\\n\\n.dc-section h3:last-of-type {\\n margin-top: 0;\\n margin-bottom: 0.5em;\\n color: black; }\\n\\n.dc-section .btn-primary {\\n margin-right: 0.5em; }\\n\\n.code-copy {\\n display: inline-block;\\n font-size: 1.3em;\\n font-weight: 600;\\n margin-top: 3px;\\n margin-right: 0.5em;\\n border: 2px solid black;\\n padding: 2px 10px;\\n border-radius: 5px;\\n width: 85px;\\n text-align: center;\\n background-color: white !important; }\\n\\n.code-copy-validation {\\n background-color: #a94442;\\n color: white;\\n border-radius: 3px;\\n padding: 2px 4px; }\\n\\n.table-responsive {\\n border: 3px solid #F3F3F3;\\n padding: 1em;\\n border-radius: 5px; }\\n\\n.table {\\n margin-bottom: 0; }\\n\\n.cnr-totals {\\n margin-top: -0.5em;\\n color: #768692;\\n font-size: 0.9em; }\\n\\n.cnr-actions {\\n margin: 1em 0; }\\n\\n.cnr-actions .btn-primary {\\n margin-right: 5px; }\\n\\n.section-actions .btn:first-of-type {\\n margin-right: 0.5em; }\\n\\n.section-actions .btn {\\n margin-top: 0.25em; }\\n\\n.section-actions .btn i {\\n margin-right: 0.25em; }\\n\\n.caseCodesLoading {\\n color: #005EB8;\\n text-align: center;\\n font-size: 1.25em;\\n font-weight: 600;\\n border: 3px solid #F3F3F3;\\n padding: 1em;\\n border-radius: 5px; }\\n\\n.caseCodesLoading i {\\n font-size: 1.5em;\\n margin-bottom: 0.25em; }\\n\\n.notesForm .form-control {\\n font-size: 14px; }\\n\\n.notesForm .btn-xs {\\n margin-right: 5px; }\\n\\n.notes .btn-xs {\\n margin-right: 0.5em; }\\n\\n.actions .btn-xs {\\n margin-left: 0.5em; }\\n\\n.actions .btn-width {\\n width: 25px; }\\n\\n.actions .form-group {\\n margin-bottom: 5px; }\\n\\n.break {\\n display: block;\\n margin-top: 0.5em; }\\n\\n.no-case-codes {\\n text-align: center;\\n padding: 2em 1em 1em 1em; }\\n\\n.tracking {\\n border: 1px solid #005EB8;\\n border-radius: 5px;\\n padding: 1.5em;\\n margin-top: 2em; }\\n\\n.tracking h5 {\\n margin-top: 0; }\\n\\n.locked {\\n margin-top: 2em; }\\n\\n.locked p {\\n margin-top: 1em; }\\n\\n.not-open-yet {\\n color: #ccc;\\n text-align: center;\\n margin-top: 8em; }\\n\\n.not-open-yet h3 {\\n color: #ccc; }\\n\\n.status .label .fal {\\n margin-right: 0.25em; }\\n\\n.status .btn {\\n margin-left: 1em; }\\n\\n.angular2csv {\\n margin-top: -1em; }\\n\\n/deep/ angular2csv > button {\\n color: transparent;\\n font-size: 0px;\\n background-color: #005EB8;\\n border: 1px solid #005EB8; }\\n\\n/deep/ angular2csv > button:hover {\\n background-color: #004485; }\\n\\n/deep/ angular2csv > button::after {\\n content: \\\"Download Case Codes as .csv\\\";\\n display: block;\\n color: white;\\n font-size: 14px;\\n line-height: inherit;\\n padding: 5px 7px; }\\n\\n.wrong-browser {\\n background-color: #fdbc30;\\n margin-top: 1em;\\n padding: 1em;\\n border-radius: 5px; }\\n\\n.wrong-browser h4 {\\n font-weight: 600; }\\n\\n.wrong-browser a, .wrong-browser h4 {\\n color: rgba(0, 0, 0, 0.75);\\n margin: 0;\\n padding: 5px; }\\n\\n.surveyLink {\\n display: inline-block;\\n font-weight: bold;\\n border: 2px solid #005EB8;\\n color: #005EB8;\\n padding: 0.25em 0.5em;\\n border-radius: 5px;\\n -webkit-user-select: all;\\n -moz-user-select: all;\\n -ms-user-select: all;\\n user-select: all; }\\n\\n.surveyCount {\\n color: #005EB8; }\\n\\n.prem-link {\\n display: inline-block;\\n font-weight: bold;\\n border: 2px solid #005EB8;\\n color: #005EB8;\\n padding: 0.25em 0.5em 0.2em 0.5em;\\n border-radius: 5px;\\n -webkit-user-select: all;\\n -moz-user-select: all;\\n -ms-user-select: all;\\n user-select: all;\\n margin-right: 0.5em;\\n margin-top: 0.1em;\\n margin-bottom: 0.1em; }\\n\\n.prem-link.-black {\\n border-color: black;\\n color: black; }\\n\\n#premWording {\\n font-size: 1px;\\n color: white; }\\n\\nh1 {\\n font-weight: 600; }\\n\\n.header {\\n margin-top: 5em;\\n margin-bottom: 3em; }\\n\\n.header img {\\n width: 80%; }\\n\\n.header h1 {\\n margin-top: 0.25em; }\\n\\n.header h2 {\\n margin-top: 0; }\\n\\n.dc-section.-group {\\n padding-top: 1em;\\n padding-bottom: 1em; }\\n\\n.dc-section.-group h3 {\\n color: #005EB8;\\n margin-bottom: 0; }\\n\\n.alert-click:hover {\\n cursor: pointer; }\\n\\n#activeAdminBar {\\n position: fixed;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n padding: 0.5em 0.25em;\\n background-color: #fdbc30;\\n z-index: 10; }\\n\\n#activeAdminBar .btn-default {\\n background-color: #fdbc30;\\n border-color: transparent;\\n color: black;\\n border-radius: 4px;\\n font-weight: 600;\\n margin: 0 0.25em; }\\n\\n.lock-submission {\\n margin-top: 2em;\\n padding-top: 1.5em;\\n border-top: 1px solid #ccc; }\\n\\n.lock-submission .btn {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em; }\\n\\n.qr-code-container {\\n border: 2px solid #005EB8;\\n border-radius: 4px;\\n text-align: center;\\n padding: 1em;\\n max-width: 200px; }\\n\\n.qr-code-container .btn {\\n margin-top: 0.5em; }\\n\\n.cnr-filters {\\n margin-bottom: 0.5em; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHJvamVjdC1vdmVydmlldy9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxwcm9qZWN0LW92ZXJ2aWV3XFxwcm9qZWN0LW92ZXJ2aWV3LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wcm9qZWN0LW92ZXJ2aWV3L0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxfdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDRSxnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxrQkFBa0I7RUFDbEIsZUFBZTtFQUNmLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLG9CQUFvQjtFQUNwQixvQkFBb0IsRUFBQTs7QUFGdEI7SUFLSSxnQkFBZ0IsRUFBQTs7QUFJcEI7RUFDRSxlQUFlLEVBQUE7O0FBR2pCO0VBQ0UscUJDdkJnQjtFRHdCaEIsY0N4QmdCLEVBQUE7O0FEMkJsQjtFQUNFLGVBQWU7RUFDZixhQUFhLEVBQUE7O0FBR2Y7RUFDRSxjQ2pDZ0I7RURrQ2hCLGdCQUFnQjtFQUNoQixvQkFBb0I7RUFDcEIsYUFBYSxFQUFBOztBQUdmO0VBQ0UsZ0JBQWdCO0VBQ2hCLG1CQUFtQixFQUFBOztBQUdyQjtFQUNFLHlCQUF5QjtFQUN6QiwwQkFBMEI7RUFDMUIsNkJBQTZCLEVBQUE7O0FBRy9CO0VBQ0UsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsdUJBQXVCLEVBQUE7O0FBR3pCO0VBQ0UsZUFBZTtFQUNmLG9CQUFvQixFQUFBOztBQUd0QjtFQUNFLFVBQVUsRUFBQTs7QUFHWjtFQUNFLGtCQUFrQjtFQUNsQixpQkFBaUI7RUFDakIsa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsV0FBVztFQUNYLGtCQUFrQjtFQUNsQixNQUFNO0VBQ04sUUFBUTtFQUNSLFdBQVc7RUFDWCxhQUFhO0VBQ2IsOERBQXdFLEVBQUE7O0FBRzFFO0VBQ0Usa0JBQWtCO0VBQ2xC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b0IsRUFBQTs7QUFHdEI7RUFDRSxtQkFBbUI7RUFDbkIsWUFBWSxFQUFBOztBQUdkO0VBQ0UsY0FBYTtFQUNiLFlBQVksRUFBQTs7QUFLZDtFQUNFLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLGVBQWU7RUFDZixrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxVQUFVLEVBQUE7O0FBR1o7RUFDRSxrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxhQUFhLEVBQUE7O0FBR2Y7RUFDRSxnQkFBZ0I7RUFDaEIsbUJBQW1CLEVBQUE7O0FBR3JCO0VBQ0UsY0M1ZWdCO0VENmVoQixnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxlQUFlLEVBQUE7O0FBR2pCO0VBQ0MsZUFBZTtFQUNmLFNBQVM7RUFDVCxPQUFPO0VBQ1AsV0FBVztFQUNYLHFCQUFxQjtFQUNyQix5QkFBeUI7RUFDekIsV0FBVyxFQUFBOztBQUdaO0VBQ0MseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQixnQkFBZ0IsRUFBQTs7QUFHakI7RUFDRSxlQUFlO0VBQ2Ysa0JBQWtCO0VBQ2xCLDBCQUEwQixFQUFBOztBQUc1QjtFQUNFLGlCQUFpQjtFQUNqQixvQkFBb0IsRUFBQTs7QUFHdEI7RUFDRSx5QkNuaEJnQjtFRG9oQmhCLGtCQUFrQjtFQUNsQixrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLG9CQUFvQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvcHJvamVjdC1vdmVydmlldy9wcm9qZWN0LW92ZXJ2aWV3LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vdmFyaWFibGVzJztcclxuXHJcbi5sb2FkaW5nLW92ZXJ2aWV3IHtcclxuICBtYXJnaW4tdG9wOiAyNXZoO1xyXG59XHJcblxyXG4ubG9hZGluZy1vdmVydmlldyBwIHtcclxuICBtYXJnaW4tdG9wOiAwLjc1ZW07XHJcbiAgZm9udC1zaXplOiAyMHB4O1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbnVsLmZpbGUtbGlzdCB7XHJcbiAgcGFkZGluZzogMCAwIDAgMC41ZW07XHJcbiAgbWFyZ2luLWJvdHRvbTogMS41ZW07XHJcblxyXG4gIGxpIHtcclxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgfVxyXG59XHJcblxyXG5oMSB7XHJcbiAgbWFyZ2luLXRvcDogMWVtO1xyXG59XHJcblxyXG4uYnRuLWRlZmF1bHQuYnRuLWRlZmF1bHQtb3V0bGluZSB7XHJcbiAgYm9yZGVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgY29sb3I6ICRuaHMtYmx1ZTtcclxufVxyXG5cclxuLmltZy10aXRsZSB7XHJcbiAgbWFyZ2luLXRvcDogMmVtO1xyXG4gIGhlaWdodDogMTI1cHg7XHJcbn1cclxuXHJcbi50aXRsZS1pbnRybyB7XHJcbiAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG4gIG1hcmdpbi10b3A6IDA7XHJcbn1cclxuXHJcbi5yb3ctb3ZlcnZpZXcge1xyXG4gIHBhZGRpbmctdG9wOiAxZW07XHJcbiAgcGFkZGluZy1ib3R0b206IDFlbTtcclxufVxyXG5cclxuLnJvdy1vdmVydmlldzpudGgtY2hpbGQoZXZlbikge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNGMkY3RkI7XHJcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlZWU7XHJcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWU7XHJcbn1cclxuXHJcbi5yb3ctb3ZlcnZpZXcgcCB7XHJcbiAgbWFyZ2luLXRvcDogMC41ZW07XHJcbn1cclxuXHJcbi5uYWNlbC1zZWN0aW9ucyAucm93LW92ZXJ2aWV3IHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxufVxyXG5cclxuLnNwYWNlciB7XHJcbiAgbWFyZ2luLXRvcDogMmVtO1xyXG4gIG1hcmdpbi1ib3R0b206IDIuNWVtO1xyXG59XHJcblxyXG4uY29kZS1jb2xvdXIge1xyXG4gIGNvbG9yOiByZWQ7XHJcbn1cclxuXHJcbi5jb2xsYXBzYWJsZSB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIG1heC1oZWlnaHQ6IDEwMHB4O1xyXG4gIG92ZXJmbG93LXk6IGhpZGRlbjtcclxufVxyXG5cclxuLmNvbGxhcHNhYmxlOmJlZm9yZSB7XHJcbiAgY29udGVudDogXCJcIjtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAwO1xyXG4gIHJpZ2h0OiAwO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwcHg7XHJcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LDI1NSwyNTUsMCkscmdiYSgyNTUsMjU1LDI1NSwxKSA2OCUpO1xyXG59XHJcblxyXG4uZXhwY29sbCB7XHJcbiAgbWFyZ2luLXRvcDogLTAuNWVtO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBmb250LXNpemU6IDJlbTtcclxuICBjb2xvcjogJG5ocy1ncmV5O1xyXG59XHJcblxyXG4uZXhwY29sbDpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4udmNlbnRlciB7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgZmxvYXQ6IG5vbmU7XHJcbn1cclxuXHJcbkBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCkge1xyXG4gIC5yb3cgLmNvbC1tZC00ID4gLnB1bGwtcmlnaHQge1xyXG4gICAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50O1xyXG4gIH1cclxuICAuaW1nLXRpdGxlIHtcclxuICAgIGhlaWdodDogOTBweDtcclxuICB9XHJcbn1cclxuXHJcbi8vIDIwMTkgU1RZTEVTXHJcblxyXG5oMyBzbWFsbCB7XHJcbiAgZm9udC1zaXplOiAwLjhlbTtcclxuICBmb250LXdlaWdodDogYm9sZDtcclxufVxyXG5cclxuI2NvbnRhaW5lck92ZXJ2aWV3IHtcclxuICBwYWRkaW5nLXRvcDogMWVtO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNGM0YzRjM7XHJcbiAgbWluLWhlaWdodDogODB2aDtcclxuICBtaW4taGVpZ2h0OiAxMDAlO1xyXG4gIHBhZGRpbmctYm90dG9tOiA1ZW07XHJcbiAgei1pbmRleDogLTE7XHJcbn1cclxuXHJcbkBtZWRpYSAobWluLXdpZHRoOiAxMzAwcHgpIHtcclxuICAvLyAjY29udGFpbmVyT3ZlcnZpZXcge1xyXG4gIC8vICAgcGFkZGluZy1sZWZ0OiAxNSU7XHJcbiAgLy8gICBwYWRkaW5nLXJpZ2h0OiAxNSU7XHJcbiAgLy8gfVxyXG59XHJcblxyXG4uaGVpZ2h0LWZpeCB7XHJcbiAgaGVpZ2h0OiAzNXZoO1xyXG59XHJcblxyXG4jc2lkZWJhciB7XHJcbiAgbWluLWhlaWdodDogNzB2aDtcclxufVxyXG5cclxuLnNpZGViYXItY29udGFjdHMge1xyXG4gIHBhZGRpbmctYm90dG9tOiAxZW07XHJcbiAgbWFyZ2luLWJvdHRvbTogMS41ZW07XHJcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1ibHVlO1xyXG4gIG1hcmdpbi10b3A6IC0yZW07XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuYnRuLWJhY2sge1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBmb250LXNpemU6IDE3cHg7XHJcbiAgbGluZS1oZWlnaHQ6IDIuNWVtO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ0bi1iYWNrIC5mYSB7XHJcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuYnRuLWJhY2s6aG92ZXIge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5mb3JtLWdyb3VwIHtcclxuICBwYWRkaW5nOiA1cHggMDtcclxuICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDQ0ODU7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuZm9ybS1jb250cm9sIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0NDg1O1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBib3JkZXI6IG5vbmU7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuZm9ybS1jb250cm9sOmZvY3VzIHtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbi5kZWZ1bmN0IHtcclxuICBjb2xvcjogJG5ocy1ncmV5O1xyXG59XHJcblxyXG4uc2VsZWN0LXN1Ym1pc3Npb24ge1xyXG4gIHBhZGRpbmctYm90dG9tOiAxLjVlbTtcclxuICBtYXJnaW4tdG9wOiAxZW07XHJcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjO1xyXG59XHJcblxyXG4uYWxlcnQtaW5mbyxcclxuLmFsZXJ0LWRhbmdlcixcclxuLmFsZXJ0LXN1Y2Nlc3Mge1xyXG4gIGZvbnQtc2l6ZTogMTdweDtcclxuICBtYXJnaW46IDFlbSAwIDAgMDtcclxufVxyXG5cclxuLnN1Ym1pc3Npb24tc2VsZWN0IHtcclxuICBtYXJnaW4tdG9wOiAxZW07XHJcbn1cclxuXHJcbi5kYy1zZWN0aW9uIHtcclxuICBtYXJnaW4tdG9wOiAyZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgcGFkZGluZzogMmVtO1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG59XHJcblxyXG4uZGMtc3BlYyB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjNGMztcclxufVxyXG5cclxuLmRjLXNwZWMgLmJ0biB7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufVxyXG5cclxuLmRjLXNlY3Rpb24gaDM6Zmlyc3Qtb2YtdHlwZSB7XHJcbiAgbWFyZ2luLXRvcDogMDtcclxuICBwYWRkaW5nLWJvdHRvbTogMDtcclxuICBtYXJnaW4tYm90dG9tOiAwLjI1ZW07XHJcbn1cclxuXHJcbi5kYy1zZWN0aW9uIGgzOmxhc3Qtb2YtdHlwZSB7XHJcbiAgbWFyZ2luLXRvcDogMDtcclxuICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxuICBjb2xvcjogYmxhY2s7XHJcbn1cclxuXHJcbi5kYy1zZWN0aW9uIC5idG4tcHJpbWFyeSB7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufVxyXG5cclxuLmNvZGUtY29weSB7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIGZvbnQtc2l6ZTogMS4zZW07XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBtYXJnaW4tdG9wOiAzcHg7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxuICBib3JkZXI6IDJweCBzb2xpZCBibGFjaztcclxuICBwYWRkaW5nOiAycHggMTBweDtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgd2lkdGg6IDg1cHg7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5jb2RlLWNvcHktdmFsaWRhdGlvbiB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2E5NDQ0MjtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gIHBhZGRpbmc6IDJweCA0cHg7XHJcbn1cclxuXHJcbi50YWJsZS1yZXNwb25zaXZlIHtcclxuICBib3JkZXI6IDNweCBzb2xpZCAjRjNGM0YzO1xyXG4gIHBhZGRpbmc6IDFlbTtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbn1cclxuXHJcbi50YWJsZSB7XHJcbiAgbWFyZ2luLWJvdHRvbTogMDtcclxufVxyXG5cclxuLmNuci10b3RhbHMge1xyXG4gIG1hcmdpbi10b3A6IC0wLjVlbTtcclxuICBjb2xvcjogJG5ocy1ncmV5O1xyXG4gIGZvbnQtc2l6ZTogMC45ZW07XHJcbn1cclxuXHJcbi5jbnItYWN0aW9ucyB7XHJcbiAgbWFyZ2luOiAxZW0gMDtcclxufVxyXG5cclxuLmNuci1hY3Rpb25zIC5idG4tcHJpbWFyeSB7XHJcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbn1cclxuXHJcbi5zZWN0aW9uLWFjdGlvbnMgLmJ0bjpmaXJzdC1vZi10eXBlIHtcclxuICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59XHJcblxyXG4uc2VjdGlvbi1hY3Rpb25zIC5idG4ge1xyXG4gIG1hcmdpbi10b3A6IDAuMjVlbTtcclxufVxyXG5cclxuLnNlY3Rpb24tYWN0aW9ucyAuYnRuIGkge1xyXG4gIG1hcmdpbi1yaWdodDogMC4yNWVtO1xyXG59XHJcblxyXG4uY2FzZUNvZGVzTG9hZGluZyB7XHJcbiAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgZm9udC1zaXplOiAxLjI1ZW07XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBib3JkZXI6IDNweCBzb2xpZCAjRjNGM0YzO1xyXG4gIHBhZGRpbmc6IDFlbTtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbn1cclxuXHJcbi5jYXNlQ29kZXNMb2FkaW5nIGkge1xyXG4gIGZvbnQtc2l6ZTogMS41ZW07XHJcbiAgbWFyZ2luLWJvdHRvbTogMC4yNWVtO1xyXG59XHJcblxyXG4ubm90ZXNGb3JtIC5mb3JtLWNvbnRyb2wge1xyXG4gIGZvbnQtc2l6ZTogMTRweDtcclxufVxyXG5cclxuLm5vdGVzRm9ybSAuYnRuLXhzIHtcclxuICBtYXJnaW4tcmlnaHQ6IDVweDtcclxufVxyXG5cclxuLm5vdGVzIC5idG4teHMge1xyXG4gIG1hcmdpbi1yaWdodDogMC41ZW07XHJcbn1cclxuXHJcbi5hY3Rpb25zIC5idG4teHMge1xyXG4gIG1hcmdpbi1sZWZ0OiAwLjVlbTtcclxufVxyXG5cclxuLmFjdGlvbnMgLmJ0bi13aWR0aCB7XHJcbiAgd2lkdGg6IDI1cHg7XHJcbn1cclxuXHJcbi5hY3Rpb25zIC5mb3JtLWdyb3VwIHtcclxuICBtYXJnaW4tYm90dG9tOiA1cHg7XHJcbn1cclxuXHJcbi5icmVhayB7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgbWFyZ2luLXRvcDogMC41ZW07XHJcbn1cclxuXHJcbi5uby1jYXNlLWNvZGVzIHtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgcGFkZGluZzogMmVtIDFlbSAxZW0gMWVtO1xyXG59XHJcblxyXG4udHJhY2tpbmcge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRuaHMtYmx1ZTtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgcGFkZGluZzogMS41ZW07XHJcbiAgbWFyZ2luLXRvcDogMmVtO1xyXG59XHJcblxyXG4udHJhY2tpbmcgaDUge1xyXG4gIG1hcmdpbi10b3A6IDA7XHJcbn1cclxuXHJcbi5sb2NrZWQge1xyXG4gIG1hcmdpbi10b3A6IDJlbTtcclxufVxyXG5cclxuLmxvY2tlZCBwIHtcclxuICBtYXJnaW4tdG9wOiAxZW07XHJcbn1cclxuXHJcbi5ub3Qtb3Blbi15ZXQge1xyXG4gIGNvbG9yOiAjY2NjO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBtYXJnaW4tdG9wOiA4ZW07XHJcbn1cclxuXHJcbi5ub3Qtb3Blbi15ZXQgaDMge1xyXG4gIGNvbG9yOiAjY2NjO1xyXG59XHJcblxyXG4uc3RhdHVzIC5sYWJlbCAuZmFsIHtcclxuICBtYXJnaW4tcmlnaHQ6IDAuMjVlbTtcclxufVxyXG5cclxuLnN0YXR1cyAuYnRuIHtcclxuICBtYXJnaW4tbGVmdDogMWVtO1xyXG59XHJcblxyXG4vLyBGaXggZm9yIENTViBkb3dubG9hZCBidXR0b25cclxuXHJcbi5hbmd1bGFyMmNzdiB7XHJcbiAgbWFyZ2luLXRvcDogLTFlbTtcclxufVxyXG5cclxuL2RlZXAvIGFuZ3VsYXIyY3N2ID4gYnV0dG9uIHtcclxuICBjb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgZm9udC1zaXplOiAwcHg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1ibHVlO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICMwMDVFQjg7XHJcbn1cclxuXHJcbi9kZWVwLyBhbmd1bGFyMmNzdiA+IGJ1dHRvbjpob3ZlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDQ4NTtcclxufVxyXG5cclxuL2RlZXAvIGFuZ3VsYXIyY3N2ID4gYnV0dG9uOjphZnRlciB7XHJcbiAgY29udGVudDogXCJEb3dubG9hZCBDYXNlIENvZGVzIGFzIC5jc3ZcIjtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgZm9udC1zaXplOiAxNHB4O1xyXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xyXG4gIHBhZGRpbmc6IDVweCA3cHg7XHJcbn1cclxuXHJcbi53cm9uZy1icm93c2VyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRiYzMwO1xyXG4gIG1hcmdpbi10b3A6IDFlbTtcclxuICBwYWRkaW5nOiAxZW07XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gICYgaDQge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICB9XHJcbiAgJiBhLCBoNCB7XHJcbiAgICBjb2xvcjogcmdiYSgwLDAsMCwwLjc1KTtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBhZGRpbmc6IDVweFxyXG4gIH1cclxufVxyXG5cclxuLnN1cnZleUxpbmsge1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBmb250LXdlaWdodDogYm9sZDtcclxuICBib3JkZXI6IDJweCBzb2xpZCAkbmhzLWJsdWU7XHJcbiAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICBwYWRkaW5nOiAwLjI1ZW0gMC41ZW07XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IGFsbDtcclxuICAtbW96LXVzZXItc2VsZWN0OiBhbGw7XHJcbiAgLW1zLXVzZXItc2VsZWN0OiBhbGw7XHJcbiAgdXNlci1zZWxlY3Q6IGFsbDtcclxufVxyXG5cclxuLnN1cnZleUNvdW50IHtcclxuICBjb2xvcjogJG5ocy1ibHVlO1xyXG59XHJcblxyXG4ucHJlbS1saW5rIHtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgYm9yZGVyOiAycHggc29saWQgJG5ocy1ibHVlO1xyXG4gIGNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgcGFkZGluZzogMC4yNWVtIDAuNWVtIDAuMmVtIDAuNWVtO1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBhbGw7XHJcbiAgLW1vei11c2VyLXNlbGVjdDogYWxsO1xyXG4gIC1tcy11c2VyLXNlbGVjdDogYWxsO1xyXG4gIHVzZXItc2VsZWN0OiBhbGw7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxuICBtYXJnaW4tdG9wOiAwLjFlbTtcclxuICBtYXJnaW4tYm90dG9tOiAwLjFlbTtcclxufVxyXG5cclxuLnByZW0tbGluay4tYmxhY2sge1xyXG4gIGJvcmRlci1jb2xvcjogYmxhY2s7XHJcbiAgY29sb3I6IGJsYWNrO1xyXG59XHJcblxyXG4jcHJlbVdvcmRpbmcge1xyXG4gIGZvbnQtc2l6ZToxcHg7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG59XHJcblxyXG4vLyAyMDIwIEFkZGl0aW9uc1xyXG5cclxuaDEge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi5oZWFkZXIge1xyXG4gIG1hcmdpbi10b3A6IDVlbTtcclxuICBtYXJnaW4tYm90dG9tOiAzZW07XHJcbn1cclxuXHJcbi5oZWFkZXIgaW1nIHtcclxuICB3aWR0aDogODAlO1xyXG59XHJcblxyXG4uaGVhZGVyIGgxIHtcclxuICBtYXJnaW4tdG9wOiAwLjI1ZW07XHJcbn1cclxuXHJcbi5oZWFkZXIgaDIge1xyXG4gIG1hcmdpbi10b3A6IDA7XHJcbn1cclxuXHJcbi5kYy1zZWN0aW9uLi1ncm91cCB7XHJcbiAgcGFkZGluZy10b3A6IDFlbTtcclxuICBwYWRkaW5nLWJvdHRvbTogMWVtO1xyXG59XHJcblxyXG4uZGMtc2VjdGlvbi4tZ3JvdXAgaDMge1xyXG4gIGNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgbWFyZ2luLWJvdHRvbTogMDtcclxufVxyXG5cclxuLmFsZXJ0LWNsaWNrOmhvdmVyIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbiNhY3RpdmVBZG1pbkJhciB7XHJcblx0cG9zaXRpb246IGZpeGVkO1xyXG5cdGJvdHRvbTogMDtcclxuXHRsZWZ0OiAwO1xyXG5cdHdpZHRoOiAxMDAlO1xyXG5cdHBhZGRpbmc6IDAuNWVtIDAuMjVlbTtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRiYzMwO1xyXG5cdHotaW5kZXg6IDEwO1xyXG59XHJcblxyXG4jYWN0aXZlQWRtaW5CYXIgLmJ0bi1kZWZhdWx0IHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRiYzMwO1xyXG5cdGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcblx0Y29sb3I6IGJsYWNrO1xyXG5cdGJvcmRlci1yYWRpdXM6IDRweDtcclxuXHRmb250LXdlaWdodDogNjAwO1xyXG5cdG1hcmdpbjogMCAwLjI1ZW07XHJcbn1cclxuXHJcbi5sb2NrLXN1Ym1pc3Npb24ge1xyXG4gIG1hcmdpbi10b3A6IDJlbTtcclxuICBwYWRkaW5nLXRvcDogMS41ZW07XHJcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjY2M7XHJcbn1cclxuXHJcbi5sb2NrLXN1Ym1pc3Npb24gLmJ0biB7XHJcbiAgbWFyZ2luLXRvcDogMC41ZW07XHJcbiAgbWFyZ2luLWJvdHRvbTogMC41ZW07XHJcbn1cclxuXHJcbi5xci1jb2RlLWNvbnRhaW5lciB7XHJcbiAgYm9yZGVyOiAycHggc29saWQgJG5ocy1ibHVlO1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgcGFkZGluZzogMWVtO1xyXG4gIG1heC13aWR0aDogMjAwcHg7XHJcbn1cclxuXHJcbi5xci1jb2RlLWNvbnRhaW5lciAuYnRuIHtcclxuICBtYXJnaW4tdG9wOiAwLjVlbTtcclxufVxyXG5cclxuLmNuci1maWx0ZXJzIHtcclxuICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxufVxyXG4iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiXX0= */\"","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { Title, DOCUMENT, Meta } from '@angular/platform-browser';\r\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\nimport { DataService } from '../utilities/services/data.service'\r\nimport { HtmlService } from '../utilities/services/html.service';\r\nimport { MemberService } from '../utilities/services/member.service';\r\nimport { LoaderService } from '../utilities/services/loader.service';\r\nimport { WINDOW } from \"../utilities/services/window.service\";\r\nimport { IExternalSurvey } from 'app/utilities/models/external-survey.vm';\r\n\r\ninterface FileLink {\r\n label: string;\r\n link: string;\r\n icon?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'app-project-overview',\r\n templateUrl: './project-overview.component.html',\r\n styleUrls: ['./project-overview.component.scss']\r\n})\r\nexport class ProjectOverviewComponent implements OnInit {\r\n\r\n projectOverview; date;\r\n yearError: boolean = false;\r\n\r\n currentYearDate: number; currentOrganisation: number; currentOrganisationName: string;\r\n userRole: number;\r\n region: number;\r\n\r\n yearSpecific; currentYear: number; hiddenYear: boolean = false;\r\n organisationQuestions: string; projectQuestions: string; serviceQuestions: string; qualificationQuestions: string;\r\n\r\n organisationSubmission = []; submissionSpecific = []; currentSubmission: number; caseNoteReview: string = 'N'; peerGroupId: number;\r\n currentSubmissionName; currentServiceName;\r\n submissionLocked: boolean; registrationLocked; allowLock: boolean = false;\r\n\r\n serviceSpecific; currentService: number;\r\n status: boolean = true;\r\n projectOpen: boolean; projectValidation: boolean; projectReadOnly: boolean;\r\n\r\n projectId: number;\r\n projectOverviewOrganisations;\r\n projectOverviewSubmissions;\r\n projectManager; projectLead; projectCoordinator; submissionLeadName; submissionLeadEmail;\r\n currentPeerGroup: number; staffSurveyLink: string; surveyCount: number; qualitySurveyLink: string; qualitySurveyCount: number;\r\n mhSubmissions: boolean; acSubmissions: boolean;\r\n\r\n introFiles: Array = [];\r\n\r\n // Pagination\r\n caseNoteCodes; filteredCaseNoteCodes; caseNoteCodeLength; exportCodes;\r\n caseCodeSource;\r\n maxSize; startItem; endItem; currentPage: number;\r\n\r\n // Forms\r\n caseCodeNotesForm: FormGroup;\r\n showCodeNotesForm: boolean = false;\r\n currentCaseCode: string;\r\n crcCheck: string;\r\n cnrFilter: string = null;\r\n\r\n // CSV Export Options\r\n csvOptions = {\r\n fieldSeparator: ',',\r\n quoteStrings: '\"',\r\n decimalseparator: '.',\r\n showLabels: false,\r\n headers: [ 'Case Codes' ],\r\n useBom: false,\r\n removeNewLines: true,\r\n keys: [ 'caseCode' ]\r\n };\r\n\r\n // Guidance\r\n guidanceIntro; guidanceOrganisation; guidanceProject; guidanceService;\r\n guidanceOrganisationTitle; guidanceProjectTitle; guidanceServiceTitle;\r\n guidanceTimeSeries; guidanceMonthly;\r\n\r\n // Qualification\r\n qualification: boolean = false;\r\n qualificationAnswered: boolean = false;\r\n\r\n // Intermediate Care\r\n activeAdmin: boolean = false;\r\n\r\n // ATD\r\n atdProject: boolean = false;\r\n\r\n public navIsFixed: boolean = false;\r\n public width: number;\r\n externalSurvey: IExternalSurvey;\r\n filterValue: number = null;\r\n casecodesFirstHalfFilter: number = 1;\r\n casecodesSecondHalfFilter: number = 2;\r\n firstHalfCaseCodes: boolean = false;\r\n public selectedHalf: string;\r\n metaTitle: string = 'Project Overview | NHS Benchmarking Network';\r\n\r\n internalSurvey: { projectId: number; name: string; shortName: string; maxNumberCodes: number; };\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private dataService: DataService,\r\n private htmlService: HtmlService,\r\n private memberService: MemberService,\r\n private titleService: Title,\r\n private meta: Meta,\r\n public loaderService: LoaderService,\r\n private toastr: ToastrService,\r\n private fb: FormBuilder,\r\n @Inject(DOCUMENT) private document: Document,\r\n @Inject(WINDOW) private window\r\n ) {\r\n this.date = new Date().toISOString();\r\n }\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(this.metaTitle);\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n this.projectId = +this.route.snapshot.paramMap.get('projectId');\r\n \r\n // Set pagination if in param\r\n if (this.route.snapshot.queryParams['page']) {\r\n this.currentPage = +this.route.snapshot.queryParams['page'];\r\n } else {\r\n this.currentPage = 1;\r\n }\r\n\r\n // Retain current year until 1st April (financial year)\r\n let calculatedMonth = new Date().getMonth();\r\n if (calculatedMonth < 3) {\r\n this.currentYearDate = new Date().getFullYear() - 1;\r\n } else {\r\n this.currentYearDate = new Date().getFullYear();\r\n }\r\n\r\n // Fix for VW\r\n if(this.projectId == 68) {\r\n this.currentYearDate = 2023;\r\n }\r\n this.getProjectOverview(this.projectId);\r\n\r\n // 1st of July update casecode table\r\n if(calculatedMonth > 5) {\r\n this.filterValue = this.casecodesSecondHalfFilter;\r\n } else {\r\n this.firstHalfCaseCodes = true;\r\n this.filterValue = this.casecodesFirstHalfFilter;\r\n }\r\n\r\n this.setFileList(this.projectId)\r\n }\r\n\r\n setFileList(projectId: number) {\r\n switch (projectId) {\r\n case 40: // Intermediate Care\r\n this.introFiles = [\r\n {\r\n label: 'Core Data Specification',\r\n link: 'https://s3.eu-west-2.amazonaws.com/nhsbn-static/Intermediate%20Care%20(Providers)/2024/NHSBN_Intermediate_Care_Data_Specification_2024_FINAL_AMENDED.xlsx',\r\n icon: 'fas fa-file-excel'\r\n },\r\n {\r\n label: 'Clinical Case Review Specification',\r\n link: 'https://s3.eu-west-2.amazonaws.com/nhsbn-static/Intermediate%20Care%20(Providers)/2024/NHSBN_Intermediate_Care_Clinical_Case_Review_Specification_2024_FINAL.xlsx',\r\n icon: 'fas fa-file-excel'\r\n }\r\n ]\r\n }\r\n }\r\n\r\n getProjectOverview(projectId: number) {\r\n this.memberService.ProjectOverviewOrganisations(projectId).subscribe(\r\n a => {\r\n this.projectOverviewOrganisations = a.data;\r\n // Project-specific guidance\r\n let guidance = this.projectOverviewOrganisations.projectGuidance\r\n if (guidance) {\r\n for (let index = 7; index <= 18; index++) {\r\n let selectedGuidance = guidance.filter(p => p.guidanceTypeId == index)\r\n if (selectedGuidance[0]) {\r\n switch (index) {\r\n case 7: {\r\n this.guidanceIntro = selectedGuidance[0].guidanceText;\r\n break;\r\n }\r\n case 9: {\r\n this.guidanceOrganisation = selectedGuidance[0].guidanceText;\r\n break;\r\n }\r\n case 10: {\r\n this.guidanceProject = selectedGuidance[0].guidanceText;\r\n break;\r\n }\r\n case 11: {\r\n this.guidanceService = selectedGuidance[0].guidanceText;\r\n break;\r\n }\r\n case 12: {\r\n this.guidanceOrganisationTitle = selectedGuidance[0].guidanceText;\r\n break;\r\n }\r\n case 13: {\r\n this.guidanceProjectTitle = selectedGuidance[0].guidanceText;\r\n break;\r\n }\r\n case 14: {\r\n this.guidanceServiceTitle = selectedGuidance[0].guidanceText;\r\n break;\r\n }\r\n case 17: {\r\n this.guidanceTimeSeries = selectedGuidance[0].guidanceText;\r\n this.atdProject = true;\r\n break;\r\n }\r\n case 18: {\r\n this.guidanceMonthly = selectedGuidance[0].guidanceText;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.organisation();\r\n }\r\n )\r\n }\r\n\r\n getSubmissions(projectId, organisationId) {\r\n this.memberService.ProjectOverviewSubmissions(projectId, organisationId).subscribe(\r\n b => {\r\n this.projectOverviewSubmissions = b.data;\r\n\r\n let principleContact = this.projectOverviewSubmissions.projectRoleList.filter(p => p.principleContact == 'Y')[0];\r\n\r\n if (principleContact) {\r\n this.projectManager = principleContact;\r\n } else {\r\n this.projectManager = this.projectOverviewSubmissions.projectRoleList.filter(p => p.roleName == 'Project Coordinator')[0];\r\n }\r\n\r\n this.projectLead = this.projectOverviewSubmissions.projectLeadList[0];\r\n\r\n this.projectCoordinator= this.projectOverviewSubmissions.projectRoleList.filter(r=>r.roleName===\"Project Coordinator\")[0];\r\n\r\n this.userRole = this.projectOverviewSubmissions.submissionData.filter(o => o.organisationId == organisationId)[0].roleType;\r\n\r\n let openDate, closeDate, readOnlyDate;\r\n\r\n if (this.projectOverviewSubmissions.currentYearOpenDate) {\r\n openDate = this.projectOverviewSubmissions.currentYearOpenDate;\r\n } else {\r\n openDate = this.projectOverviewSubmissions.latestYearOpenDate;\r\n }\r\n\r\n if (this.projectOverviewSubmissions.currentYearCloseDate) {\r\n closeDate = this.projectOverviewSubmissions.currentYearCloseDate;\r\n } else {\r\n closeDate = this.projectOverviewSubmissions.latestYearCloseDate;\r\n }\r\n\r\n if (this.projectOverviewSubmissions.currentYearReadOnlyDate) {\r\n readOnlyDate = this.projectOverviewSubmissions.currentYearReadOnlyDate;\r\n } else {\r\n readOnlyDate = this.projectOverviewSubmissions.latestYearReadOnlyDate;\r\n }\r\n\r\n if (this.date > openDate && this.date < closeDate) {\r\n this.projectOpen = true;\r\n this.projectValidation = false;\r\n this.projectReadOnly = false;\r\n }\r\n else if (this.date > closeDate && this.date < readOnlyDate) {\r\n this.projectOpen = false;\r\n this.projectValidation = true;\r\n this.projectReadOnly = false;\r\n }\r\n else {\r\n this.projectOpen = false;\r\n this.projectValidation = false;\r\n this.projectReadOnly = true;\r\n }\r\n this.year(this.currentOrganisation);\r\n }\r\n );\r\n }\r\n\r\n filterCaseNoteCodes(casecodeHalf: number) {\r\n let calculatedMonth = new Date().getMonth();\r\n this.filterValue = casecodeHalf;\r\n this.caseNoteCodes = this.caseCodeSource;\r\n if(calculatedMonth > 5 && casecodeHalf == this.casecodesFirstHalfFilter) {\r\n this.caseNoteCodes = this.caseNoteCodes.filter(data => data.year_half == casecodeHalf)\r\n } else {\r\n this.caseNoteCodes = this.caseNoteCodes.filter(data => data.year_half == casecodeHalf || data.year_half == null)\r\n }\r\n\r\n this.currentPage = 1;\r\n this.caseNoteCodeLength = this.caseNoteCodes.length;\r\n this.filteredCaseNoteCodes = this.caseNoteCodes.slice(0, 10);\r\n }\r\n\r\n getCaseNotes(submissionId: number) {\r\n this.filteredCaseNoteCodes = null;\r\n this.memberService.CNRCodes(submissionId).subscribe(\r\n d => {\r\n this.caseNoteCodes = d.data.caseNoteCodes;\r\n this.caseCodeSource = this.caseNoteCodes;\r\n this.crcCheck = d.data.crcCheck;\r\n this.caseNoteCodeLength = this.caseNoteCodes.length;\r\n this.filteredCaseNoteCodes = this.caseNoteCodes.slice(0, 10);\r\n this.maxSize = 8\r\n let setPage = {\r\n page: this.currentPage,\r\n itemsPerPage: 10\r\n };\r\n this.pageChanged(setPage);\r\n this.currentPage = this.currentPage;\r\n // Set export codes\r\n let exportCodes = []\r\n this.caseNoteCodes.forEach(e => {\r\n exportCodes.push({\r\n caseCode: e.caseCode.substring(5).slice(1,-5)\r\n })\r\n });\r\n this.exportCodes = exportCodes;\r\n\r\n // Only filter casecodes for NACEL\r\n if(this.projectId == 34) {\r\n this.filterCaseNoteCodes(this.filterValue);\r\n }\r\n }\r\n );\r\n }\r\n\r\n year(organisationId: number) {\r\n //Get the years for the organisation selected\r\n let isAdmin = JSON.parse(sessionStorage.getItem('user')),\r\n availableYears = this.projectOverviewSubmissions.submissionData.filter(o => o.organisationId == organisationId)[0].years;\r\n\r\n if (isAdmin && isAdmin.isAdmin === 'Y') {\r\n this.yearSpecific = availableYears;\r\n this.activeAdmin = true;\r\n } else {\r\n this.yearSpecific = availableYears.filter(y => y.dataCollectionVisible !== 'N');\r\n }\r\n\r\n //Set the year in the drop down list to the most recent year or error\r\n if (this.yearSpecific.length) {\r\n\r\n this.currentYear = this.yearSpecific[0].year;\r\n\r\n if (this.yearSpecific[0].dataCollectionVisible === 'N') {\r\n this.hiddenYear = true;\r\n }\r\n\r\n //Set variables that determine visibility of options in DOM\r\n this.organisationQuestions = this.yearSpecific[0].organisationQuestions;\r\n this.projectQuestions = this.yearSpecific[0].projectQuestions;\r\n this.serviceQuestions = this.yearSpecific[0].serviceQuestions;\r\n\r\n //Process submission\r\n this.submission(this.currentYear);\r\n\r\n } else {\r\n this.yearError = true;\r\n }\r\n\r\n }\r\n\r\n organisation() {\r\n //Check to see if there is a previously selectedOrganisation\r\n let selectedOrganisation = this.dataService.getSelectedOrganisation();\r\n let organisationExists = this.projectOverviewOrganisations.organisationList.map(o => o.organisationId).includes(selectedOrganisation);\r\n\r\n //Set the organisation dropdown to either the first value in the list or selectedOrganisation and set user role\r\n if (organisationExists) {\r\n this.currentOrganisation = selectedOrganisation;\r\n }\r\n else {\r\n this.currentOrganisation = this.projectOverviewOrganisations.organisationList[0].organisationId;\r\n }\r\n\r\n // Set the organisation's region\r\n this.region = this.projectOverviewOrganisations.organisationList.filter(o => o.organisationId === this.currentOrganisation)[0].regionId;\r\n\r\n // Set organisation name\r\n this.currentOrganisationName = this.projectOverviewOrganisations.organisationList.filter(o => o.organisationId == this.currentOrganisation)[0].organisationName;\r\n\r\n this.getSubmissions(this.projectId, this.currentOrganisation);\r\n }\r\n\r\n submission(year: number) {\r\n this.organisationSubmission = []; this.submissionSpecific = []; this.serviceSpecific = [];\r\n\r\n this.yearSpecific.forEach(element => {\r\n if (element.year == year) {\r\n this.organisationSubmission = element.organisationSubmissions[0];\r\n\r\n element.submissions.forEach(submission => {\r\n this.submissionSpecific.push(submission);\r\n });\r\n }\r\n });\r\n // Check for Mental Health submissions in NACEL\r\n if (this.projectId === 34 && this.submissionSpecific.map(s => s.peerGroupId).includes(3)) {\r\n this.mhSubmissions = true;\r\n } else {\r\n this.mhSubmissions = false;\r\n }\r\n\r\n // Check for Acute/Community submissions in NACEL\r\n if (this.projectId === 34 && (this.submissionSpecific.map(s => s.peerGroupId).includes(1) || this.submissionSpecific.map(s => s.peerGroupId).includes(2))) {\r\n this.acSubmissions = true;\r\n } else {\r\n this.acSubmissions = false;\r\n }\r\n\r\n let availableSubmissions = this.submissionSpecific.map(s => s.submissionId),\r\n savedSubmission = +this.route.snapshot.queryParams['submission'];\r\n\r\n // Load submission automatically if only one\r\n if (savedSubmission && availableSubmissions.includes(savedSubmission)) {\r\n this.onSubmissionChange(savedSubmission);\r\n } else if (this.submissionSpecific.length === 1) {\r\n this.currentSubmission = this.submissionSpecific[0].submissionId;\r\n this.onSubmissionChange(this.currentSubmission);\r\n } else {\r\n this.currentSubmission = 0;\r\n }\r\n\r\n // Set userRoleType for year\r\n let userRoleType = this.submissionSpecific[0].userRoleType;\r\n if (userRoleType && [1, 2, 3, 8].includes(userRoleType)) {\r\n this.allowLock = true;\r\n }\r\n }\r\n\r\n service(submissionId: number) {\r\n // Populate Service\r\n this.submissionSpecific.forEach(element => {\r\n if (element.submissionId == submissionId) {\r\n this.serviceSpecific = element.services;\r\n }\r\n });\r\n\r\n // Set the service in the drop down list to the most recent service\r\n let serviceParam = this.route.snapshot.queryParams['service'];\r\n if (serviceParam && serviceParam != 0) {\r\n this.currentService = +serviceParam;\r\n this.currentServiceName = this.serviceSpecific.filter(s => s.serviceItemId === this.currentService)[0].serviceItemName;\r\n } else {\r\n this.currentService = this.serviceSpecific[0].serviceItemId;\r\n this.currentServiceName = this.serviceSpecific[0].serviceItemName;\r\n }\r\n }\r\n\r\n onYearChange(message: number) {\r\n // Set the year - might not be necessary\r\n this.currentYear = message;\r\n\r\n this.yearSpecific.forEach(element => {\r\n if (element.year == message) {\r\n // Set variables that determine visibility of options in DOM\r\n this.organisationQuestions = element.organisationQuestions;\r\n this.projectQuestions = element.projectQuestions;\r\n this.serviceQuestions = element.serviceQuestions;\r\n }\r\n });\r\n\r\n if (this.yearSpecific.filter(y => y.year === message)[0].dataCollectionVisible === 'N') {\r\n this.hiddenYear = true;\r\n } else {\r\n this.hiddenYear = false;\r\n }\r\n\r\n // Process submission\r\n this.submission(message);\r\n }\r\n\r\n onOrgChange(message: number) {\r\n // If organisation is changed, set new organisation as selectedOrganisation\r\n this.dataService.setSelectedOrganisation(message);\r\n\r\n // Set currentOrganisation details\r\n this.currentOrganisation = message;\r\n let organisation = this.projectOverviewOrganisations.organisationList.filter(o => o.organisationId == this.currentOrganisation)[0];\r\n this.currentOrganisationName = organisation.organisationName;\r\n this.region = organisation.regionId;\r\n\r\n this.getSubmissions(this.projectId, message);\r\n }\r\n\r\n onSubmissionChange(message: number) {\r\n // Reset params\r\n this.router.navigate([], { queryParams: { submission: null, service: null }, queryParamsHandling: 'merge' });\r\n\r\n //Set the submission - might not be necessary\r\n this.currentSubmission = message;\r\n this.currentSubmissionName = this.submissionSpecific.filter(s => s.submissionId == message)[0].submissionName;\r\n\r\n // Set submissionLead, if present\r\n let submissionSpecific = this.submissionSpecific.find(s => s.submissionId == message);\r\n if (submissionSpecific & submissionSpecific.submissionLeadList[0]) {\r\n this.submissionLeadName = submissionSpecific.submissionLeadList[0].name;\r\n this.submissionLeadEmail = submissionSpecific.submissionLeadList[0].email;\r\n }\r\n\r\n this.submissionSpecific.forEach(element => {\r\n if (element.submissionId == message) {\r\n // Set variables that determine visibility of options in DOM\r\n this.submissionLocked = element.submissionLocked;\r\n if (element.registrationLocked === 'Y') {\r\n this.registrationLocked = true;\r\n } else {\r\n this.registrationLocked = false;\r\n }\r\n\r\n // Update case note review\r\n this.caseNoteReview = element.caseNoteReview;\r\n\r\n this.peerGroupId = element.peerGroupId;\r\n\r\n // Check if there are services\r\n if (element.services.length > 0) {\r\n // Process Service\r\n this.service(message);\r\n return;\r\n }\r\n }\r\n });\r\n\r\n // Return Case Notes and Staff Survey links (NACEL Mental Health Spotlight Audit)\r\n if (this.projectId === 88 ) {\r\n this.getCaseNotes(message)\r\n this.currentPage = 1;\r\n this.staffSurveyLink = 'https://surveys.nhsbenchmarking.nhs.uk/nsmh/' + this.currentSubmission + '-' + this.currentOrganisation;\r\n this.memberService.caseCodeCount(this.currentSubmission, 'NSMH').subscribe(\r\n r => {\r\n this.surveyCount = r.data.count;\r\n },\r\n e => {\r\n console.log(e)\r\n }\r\n );\r\n }\r\n\r\n // Return Case Notes and Staff Survey links (NACEL)\r\n if (this.projectId === 34 ) {\r\n this.getCaseNotes(message)\r\n this.currentPage = 1;\r\n this.staffSurveyLink = 'https://surveys.nhsbenchmarking.nhs.uk/nsac/' + this.currentSubmission + '-' + this.currentOrganisation;\r\n this.memberService.caseCodeCount(this.currentSubmission, 'NSAC').subscribe(\r\n r => {\r\n this.surveyCount = r.data.count;\r\n },\r\n e => {\r\n console.log(e)\r\n }\r\n );\r\n }\r\n\r\n // Return Quality Survey links (NACEL)\r\n if (this.projectId === 34) {\r\n this.qualitySurveyLink = 'https://surveys.nhsbenchmarking.nhs.uk/qsac/' + this.currentSubmission + '-' + this.currentOrganisation;\r\n this.memberService.caseCodeCount(this.currentSubmission, 'QSAC').subscribe(\r\n r => {\r\n this.qualitySurveyCount = r.data.count;\r\n },\r\n e => {\r\n console.log(e)\r\n }\r\n );\r\n }\r\n\r\n // Return Case Notes and Staff Survey links (NACEL NI)\r\n if (this.projectId === 86) {\r\n this.getCaseNotes(message)\r\n this.currentPage = 1;\r\n this.staffSurveyLink = 'https://surveys.nhsbenchmarking.nhs.uk/nsni/' + this.currentSubmission + '-' + this.currentOrganisation;\r\n this.memberService.caseCodeCount(this.currentSubmission, 'NSNI').subscribe(\r\n r => {\r\n this.surveyCount = r.data.count;\r\n },\r\n e => {\r\n console.log(e)\r\n }\r\n );\r\n }\r\n\r\n // Return Quality Survey links (NACEL NI)\r\n if (this.projectId === 86) {\r\n this.qualitySurveyLink = 'https://surveys.nhsbenchmarking.nhs.uk/qsni/' + this.currentSubmission + '-' + this.currentOrganisation;\r\n this.memberService.caseCodeCount(this.currentSubmission, 'QSNI').subscribe(\r\n r => {\r\n this.qualitySurveyCount = r.data.count;\r\n },\r\n e => {\r\n console.log(e)\r\n }\r\n );\r\n }\r\n\r\n // Define availble external surveys\r\n // These will link to the external survey site via a link/code combination and QR code\r\n let externalSurveys = [\r\n {\r\n projectId: 40,\r\n surveys: [ { name: 'Patient Reported Experience Measure (PREM)', surveyRoute: 'https://surveys.nhsbenchmarking.nhs.uk/pr/', questionGroupLevel: 'PR', userType: \"service user\", link: [{ id: 'Bed Based Intermediate Care', text: 'https://s3.eu-west-2.amazonaws.com/nhsbn-static/Intermediate%20Care%20(Providers)/2024/Bed%20based%20PREM%20form.pdf'}, {id: 'Intermediate Care Provided at Home', text: 'https://s3.eu-west-2.amazonaws.com/nhsbn-static/Intermediate%20Care%20(Providers)/2024/UCR_Home_reablement_IMDT%20PREM%20form.pdf'}, {id: 'Urgent Community Response'}] }]\r\n },\r\n {\r\n projectId: 50,\r\n surveys: [ { name: 'staff survey', surveyRoute: 'https://surveys.nhsbenchmarking.nhs.uk/lds/', questionGroupLevel: 'LDS', userType: \"staff member\" }]\r\n },\r\n {\r\n projectId: 50,\r\n surveys: [ { name: 'carer survey', surveyRoute: 'https://surveys.nhsbenchmarking.nhs.uk/lds/', questionGroupLevel: 'LDS', userType: \"carer\" }]\r\n },\r\n {\r\n projectId: 68,\r\n surveys: [\r\n { name: 'Staff Survey', surveyRoute: 'https://surveys.nhsbenchmarking.nhs.uk/vwss/', questionGroupLevel: 'VWSS', userType: \"staff member\" },\r\n { name: 'Friends and Family', surveyRoute: 'https://surveys.nhsbenchmarking.nhs.uk/vwff/', questionGroupLevel: 'VWFF', userType: \"carer\" },\r\n { name: 'Patient Reported Experience Measure (PREM)', surveyRoute: 'https://surveys.nhsbenchmarking.nhs.uk/vwpr/', questionGroupLevel: 'VWPR', userType: \"service user\" }\r\n ]\r\n }\r\n ]\r\n\r\n // Load codes for external surveys\r\n if (externalSurveys.map(s => s.projectId).includes(this.projectId)) {\r\n // Set survey\r\n this.externalSurvey = externalSurveys.find(s => s.projectId == this.projectId);\r\n\r\n // Get case codes and set first page\r\n this.getCaseNotes(message)\r\n this.currentPage = 1;\r\n\r\n this.externalSurvey.surveys.forEach(survey => {\r\n // Set survey link\r\n survey.staffSurveyLink = survey.surveyRoute + this.currentSubmission + '-' + this.currentOrganisation;\r\n this.memberService.caseCodeCount(this.currentSubmission, survey.questionGroupLevel).subscribe(\r\n r => {\r\n survey.surveyCount = r.data.count;\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n );\r\n })\r\n }\r\n\r\n\r\n // These will make the surveys available within the Members' Area\r\n // Users will add codes and respond directly\r\n let internalSurveys = [\r\n {\r\n projectId: 35,\r\n name: 'Clinical Case Review',\r\n shortName: 'CCR',\r\n introductoryText: '

Organisations are requested to select one care of older people ward and then fill out the CCR for 50 service users who are consecutively discharged from the selected ward in the period from the 6th May 2024 to the 1st July 2024. If you have multiple care of older people wards in your organisation, you are welcome to complete multiple CCRs. A separate form will need to be completed for each ward if you choose to do this.

Additional information can be found in the Managing Frailty in the Acute Setting guidance, and you can download the CCR specification here.

',\r\n maxNumberCodes: 50\r\n },\r\n {\r\n projectId: 68,\r\n name: 'Clinical Case Review',\r\n shortName: 'CCR',\r\n introductoryText: '

A Clinical Case Review (CCR) should be created and completed for every service user referred into this virtual ward (hospital at home) service during the data collection period. Information about each service user is to be collected on admission to the service and on discharge. More information can be found in the Virtual Ward (also known as Hospital at Home) guidance booklet.

',\r\n maxNumberCodes: 500\r\n }\r\n ]\r\n\r\n // Load codes for internal surveys\r\n if (internalSurveys.map(s => s.projectId).includes(this.projectId)) {\r\n // Set survey\r\n this.internalSurvey = internalSurveys.find(s => s.projectId == this.projectId);\r\n\r\n // Get case codes and set first page\r\n this.getCaseNotes(message)\r\n this.currentPage = 1;\r\n }\r\n\r\n // NHSE LDIS\r\n if (this.projectId === 36) {\r\n this.currentPeerGroup = this.submissionSpecific.filter(s => s.submissionId === this.currentSubmission)[0].peerGroupId;\r\n let type;\r\n if (this.currentPeerGroup === 5) {\r\n type = 'sp';\r\n } else (\r\n type = 'un'\r\n )\r\n this.staffSurveyLink = 'https://surveys.nhsbenchmarking.nhs.uk/y/' + this.currentSubmission + '-' + this.currentOrganisation;\r\n this.memberService.caseCodeCount(this.currentSubmission, 'Y').subscribe(\r\n r => {\r\n // TODO: Remove 'if' once fully tested\r\n if (r.data) {\r\n this.surveyCount = r.data.count;\r\n } else {\r\n this.surveyCount = r.count;\r\n }\r\n },\r\n e => {\r\n console.log(e)\r\n }\r\n )\r\n }\r\n\r\n // Qualification Questions\r\n let availableGroups = [];\r\n if (this.projectOverviewSubmissions.availableGroupLevels[this.currentYear]) {\r\n availableGroups = this.projectOverviewSubmissions.availableGroupLevels[this.currentYear];\r\n }\r\n if (availableGroups.includes('H')) {\r\n this.qualification = true;\r\n this.qualificationAnswered = false; // Fail safe\r\n this.memberService.QuestionGroups(this.projectId, this.currentYear, 'H', this.currentSubmission).subscribe(\r\n r => {\r\n // Get first/only groupId in 'H'\r\n let groupId = r.data[0].groupId;\r\n this.memberService.Questions(this.projectId, this.currentSubmission, groupId).subscribe(\r\n r => {\r\n // Get number of questions in group\r\n let noQuestions = r.data.questions.filter(q => q.questionType != 'NR').length;\r\n\r\n // Check all questions in group are answered, then allow\r\n if (r.data.questions.filter(q => q.questionType != 'NR').filter(q => q.responses[0].value).length === noQuestions) {\r\n this.qualificationAnswered = true;\r\n }\r\n }\r\n )\r\n }\r\n )\r\n } else {\r\n this.qualification = false;\r\n }\r\n }\r\n\r\n onServiceChange(message: number) {\r\n this.currentService = message;\r\n this.currentServiceName = this.serviceSpecific.filter(s => s.serviceItemId === message)[0].serviceItemName;\r\n }\r\n\r\n addCnrCodes(submissionId: number, newCodeCount: number) {\r\n let cnrCodes = { newCodeCount: newCodeCount }\r\n this.memberService.addCnrCodes(submissionId, cnrCodes).subscribe(\r\n r => {\r\n this.getCaseNotes(this.currentSubmission);\r\n this.toastr.success('New case codes have been added to your submission.')\r\n },\r\n e => {\r\n this.toastr.error('There has been an error whilst trying to add the case codes. Please try again.');\r\n }\r\n );\r\n }\r\n\r\n editCnrNote(cnrNote) {\r\n this.memberService.editCnrNotes(cnrNote).subscribe(\r\n r => {\r\n this.toastr.success(\"Reviewer's intials edited successfully.\")\r\n this.showCodeNotesForm = false;\r\n this.currentCaseCode = null;\r\n this.getCaseNotes(this.currentSubmission);\r\n },\r\n e => {\r\n this.toastr.error(\"There has been an error whilst trying to edit the reviewer's initials.\");\r\n }\r\n );\r\n }\r\n\r\n buildCaseCodeNotesForm(caseCode) {\r\n let currentCaseCode = this.caseNoteCodes.filter(c => c.caseCode == caseCode)[0];\r\n this.caseCodeNotesForm = this.fb.group({\r\n caseCodeNotes: ['', [Validators.required, Validators.maxLength(200)]]\r\n });\r\n // If caseCode exists, set value\r\n if (currentCaseCode.caseCodeNotes) {\r\n this.caseCodeNotesForm.setValue({\r\n caseCodeNotes: currentCaseCode.caseCodeNotes\r\n });\r\n }\r\n this.currentCaseCode = caseCode;\r\n this.showCodeNotesForm = true;\r\n }\r\n\r\n caseCodeNotesFormSubmit() {\r\n let cnrNote = {\r\n caseCode: this.currentCaseCode,\r\n caseCodeNotes: this.caseCodeNotesForm.value.caseCodeNotes\r\n };\r\n\r\n this.editCnrNote(cnrNote);\r\n }\r\n\r\n pageChanged(event) {\r\n this.startItem = (event.page - 1) * event.itemsPerPage;\r\n this.endItem = event.page * event.itemsPerPage;\r\n this.filteredCaseNoteCodes = this.caseNoteCodes.slice(this.startItem, this.endItem);\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n queryParams: { page: event.page }, queryParamsHandling: 'merge'\r\n });\r\n }\r\n\r\n dataCollection(type: string, submissionId?: number) {\r\n if (type == 'p' || type == 'o' || type === 'om' || type === 'omh' || type === 'oac') {\r\n this.router.navigate(['/data-collection', type, submissionId || this.currentSubmission, this.currentYear]);\r\n }\r\n else if (type == 's') {\r\n if (this.currentService) {\r\n this.router.navigate(['/data-collection', type, this.currentSubmission, this.currentYear, this.currentService]);\r\n }\r\n else {\r\n this.router.navigate(['/data-collection', type, this.currentSubmission, this.currentYear]);\r\n }\r\n }\r\n else if (type == 'c' || type == 'd' || type == 'u' || type == 'm' || type == 'a' || type == 'l' || type == 'h' || type == 'uac' || type == 'umh') {\r\n this.router.navigate(['/data-collection', type, this.currentSubmission, this.currentYear]);\r\n }\r\n else {\r\n console.log(\"Type not supported: \" + type);\r\n }\r\n }\r\n\r\n openCaseCode(caseCode: string, serviceItemId?: number) {\r\n let questionGroup;\r\n if (this.currentYear >= 2020) {\r\n questionGroup = this.peerGroupId == 3 ? 'cmh' : 'cac';\r\n } else {\r\n questionGroup = 'cac';\r\n }\r\n let year_half = this.caseCodeSource.filter(item => item.caseCode == caseCode)[0].year_half;\r\n if(this.projectId == 34) {\r\n this.router.navigate(['/data-collection', questionGroup, this.currentSubmission, this.currentYear, serviceItemId ? serviceItemId : 0], { queryParams: { case: caseCode, page: this.currentPage, year_half: year_half } });\r\n } else {\r\n this.router.navigate(['/data-collection', questionGroup, this.currentSubmission, this.currentYear, serviceItemId ? serviceItemId : 0], { queryParams: { case: caseCode, page: this.currentPage } });\r\n }\r\n }\r\n\r\n removeCaseCode(submission: number, caseCode: string) {\r\n if (confirm(\"Are you sure you want to remove this case code?\")) {\r\n let cnrNote = { caseCode: caseCode };\r\n this.memberService.removeCnrCode(submission, cnrNote).subscribe(\r\n r => {\r\n this.getCaseNotes(this.currentSubmission);\r\n this.toastr.success('The case note has been removed from your submission.')\r\n },\r\n e => {\r\n this.toastr.error('There has been an error whilst trying to remove the case codes. Please try again.');\r\n }\r\n );\r\n }\r\n }\r\n\r\n purgeCaseCode(caseCode) {\r\n\r\n var purgeCheck = prompt(\"Are you sure you want to delete this case code and all data associated with it? This action cannot be undone. If you wish to continue, type DELETE in the box below and click 'OK', otherwise click 'Cancel'.\");\r\n\r\n if (purgeCheck === 'DELETE') {\r\n\r\n this.memberService.purgeCaseCode({ caseCode: caseCode}).subscribe(\r\n r => {\r\n this.getCaseNotes(this.currentSubmission);\r\n this.toastr.success('The case note, and all associated data, has been deleted from your submission.')\r\n },\r\n e => {\r\n this.toastr.error('There has been an error whilst trying to deleted the case codes. Please try again.');\r\n }\r\n );\r\n } else {\r\n this.toastr.info('The case code has not been deleted.');\r\n }\r\n\r\n }\r\n\r\n completeCaseCode(submission: number, caseCode: string, message: string) {\r\n if (confirm(\"Are you sure you want to change the status of this case code?\")) {\r\n let cnrNote = {\r\n caseCode: caseCode,\r\n dataSubmitted: message\r\n };\r\n this.memberService.completeCnrCode(submission, cnrNote).subscribe(\r\n r => {\r\n this.getCaseNotes(this.currentSubmission);\r\n this.toastr.success('The status of this case code has been successfully changed.')\r\n },\r\n e => {\r\n this.toastr.error('There has been an error whilst trying to change the status of this case code. Please try again.');\r\n }\r\n );\r\n }\r\n }\r\n\r\n setProjectState() {\r\n if (this.submissionLocked) {\r\n this.setSubmissionState('unlock', this.currentSubmission, this.currentOrganisation);\r\n }\r\n else {\r\n this.setSubmissionState('lock', this.currentSubmission, this.currentOrganisation);\r\n }\r\n\r\n this.submissionLocked = !this.submissionLocked;\r\n\r\n this.submissionSpecific.forEach(element => {\r\n if (element.submissionId === this.currentSubmission) {\r\n element.submissionLocked = this.submissionLocked;\r\n }\r\n });\r\n }\r\n\r\n setSubmissionState(state: string, submissionId: number, organisationId: number) {\r\n this.memberService.SubmissionState(state, submissionId, organisationId).subscribe(\r\n r => {\r\n if (state === 'lock') {\r\n this.toastr.success('This submission has been marked as complete.')\r\n } else if (state === 'unlock')\r\n this.toastr.success('This submission has been marked as editable.')\r\n },\r\n e => {\r\n this.toastr.error('Could not change the status of this submission. Please refresh the page and try again.')\r\n }\r\n );\r\n }\r\n\r\n navHome() {\r\n this.router.navigate(['/home']);\r\n }\r\n\r\n navRegistration(projectId, organisationId) {\r\n this.router.navigate(['/project-registration/' + projectId + '/' + organisationId]);\r\n }\r\n\r\n getSelectedDocument(documentId: number) {\r\n this.memberService.AWSSelectedDocument(documentId, this.currentOrganisation).subscribe(\r\n a => { window.open(a.data.documentUrl) }\r\n );\r\n }\r\n\r\n getExcelDocument(productId: number, regionId?: number, peerGroupId?: number) {\r\n\r\n // NACEL\r\n if (productId == 5) {\r\n if ((regionId !== 5) && (peerGroupId == 1 || peerGroupId == 2)) {\r\n // England - Acute and Community\r\n window.open('https://s3.eu-west-2.amazonaws.com/nhsbn-static/NACEL/2022/nacel_2022_letter_gen_england_jul22.xlsm');\r\n } else if (regionId == 5 && (peerGroupId == 1 || peerGroupId == 2)) {\r\n // Wales - Acute and Community\r\n window.open('https://s3.eu-west-2.amazonaws.com/nhsbn-static/NACEL/2022/NACEL%202022%20Wales%20letter%20gen%20FINAL.xlsm');\r\n } else {\r\n console.log('There is no document matching the current region and peer group.')\r\n }\r\n }\r\n\r\n // NHSI LD\r\n if (productId == 6) {\r\n window.open('../../assets/excel/NHSI-Patient-Survey-Monitoring-Sheet.xlsm');\r\n }\r\n\r\n }\r\n\r\n copyToClipboard(questionGroupLevel, currentSubmission, currentOrganisation) {\r\n window.navigator['clipboard'].writeText(`https://surveys.nhsbenchmarking.nhs.uk/${questionGroupLevel}/${currentSubmission}-${currentOrganisation }`);\r\n }\r\n\r\n public downloadQRCode(index) {\r\n const fileNameToDownload = 'image_qrcode';\r\n const base64Img = document.getElementsByClassName('qr-code')[index].children[1]['currentSrc'];\r\n fetch(base64Img)\r\n .then(res => res.blob())\r\n .then((blob) => {\r\n const url = window.URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.download = fileNameToDownload;\r\n link.click();\r\n })\r\n }\r\n\r\n public onCnrFilterChange(filter: string) {\r\n this.cnrFilter = filter;\r\n if (filter == null) {\r\n this.filteredCaseNoteCodes = this.caseNoteCodes.slice(0, 10);\r\n } else {\r\n this.filteredCaseNoteCodes = this.caseNoteCodes.filter(cnr => cnr.completionStatus == filter);\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { ProjectOverviewComponent } from './project-overview.component';\r\nimport { ProjectOverviewRoutingModule } from './project-overview-routing.module';\r\n\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { ResponsiveModule } from 'ngx-responsive';\r\nimport { PaginationModule } from 'ngx-bootstrap/pagination';\r\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\r\nimport { PopoverModule } from 'ngx-bootstrap/popover';\r\nimport { Angular2CsvModule } from 'angular2-csv';\r\n\r\nimport { SafePipeModule } from '../utilities/pipes/safe-pipe.module';\r\nimport { QRCodeModule } from 'angularx-qrcode';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n SafePipeModule,\r\n ResponsiveModule,\r\n ReactiveFormsModule,\r\n PaginationModule.forRoot(),\r\n TooltipModule.forRoot(),\r\n PopoverModule.forRoot(),\r\n ToastrModule.forRoot(),\r\n ProjectOverviewRoutingModule,\r\n Angular2CsvModule,\r\n QRCodeModule\r\n ],\r\n declarations: [\r\n ProjectOverviewComponent\r\n ]\r\n})\r\nexport class ProjectOverviewModule {}","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

Saved Address:

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Contact Name{{ address.addressContact }}
Phone Number{{ address.addressPhone }}
Delivery Address\\r\\n {{ address.address1 }}\\r\\n
{{ address.address2 }}\\r\\n
{{ address.address3 }}
\\r\\n
{{ address.address4 }}
\\r\\n
{{ address.addressPostcode }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ formErrors.contact }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ formErrors.phone }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ formErrors.address1 }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n {{ formErrors.address2 }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n {{ formErrors.address3 }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n {{ formErrors.address4 }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ formErrors.postcode }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n

\\r\\n All parts of the form are required before the address can be saved.\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n No previous address found. Please click 'Add Address' to complete new details for the current year.\\r\\n
\\r\\n\\r\\n
\"","module.exports = \".mr-2 {\\n margin-right: 1em !important; }\\n\\n.dashboard-spinner {\\n margin-top: 25vh; }\\n\\n.dashboard-spinner p {\\n margin-top: 0.75em;\\n font-size: 20px;\\n font-weight: 600; }\\n\\n.panel-group {\\n margin-bottom: 10px; }\\n\\n.nacel-image {\\n width: 100%;\\n margin-bottom: -1em; }\\n\\n.button-margin {\\n margin-bottom: 5px;\\n margin-right: 5px; }\\n\\n.img-title {\\n width: 60%; }\\n\\n.table-button {\\n text-decoration: underline; }\\n\\n.table-button:hover {\\n cursor: pointer; }\\n\\nh4 {\\n font-weight: 600; }\\n\\nh1 {\\n font-weight: 600; }\\n\\nh3 {\\n color: black;\\n margin-top: 0;\\n font-size: 1.5em; }\\n\\n.title-intro {\\n color: #005EB8;\\n font-weight: 600;\\n margin-bottom: 0.5em;\\n margin-top: 0; }\\n\\n.header {\\n margin-top: 5em;\\n margin-bottom: 3em; }\\n\\n.header img {\\n width: 80%; }\\n\\n.header h1 {\\n margin-top: 0.25em; }\\n\\n#containerRegistration {\\n margin-top: -2em;\\n background-color: #F3F3F3;\\n min-height: 70vh;\\n min-height: 70%;\\n padding-bottom: 5em; }\\n\\n#containerRegistration .alert-success,\\n#containerRegistration .alert-danger,\\n#containerRegistration .alert-info {\\n margin: 1.5em 0;\\n font-size: 14px; }\\n\\n#containerRegistration .alert-success .btn-success {\\n display: block;\\n margin-top: 1em; }\\n\\n.vcenter {\\n display: inline-block;\\n vertical-align: middle;\\n float: none; }\\n\\n.registration-section {\\n margin-top: 2em;\\n background-color: white;\\n padding: 2em;\\n border-radius: 4px;\\n border: 1px solid #ccc; }\\n\\n.registration-action {\\n margin-top: 2em; }\\n\\n.btn-later {\\n margin-left: 10px; }\\n\\n.explainer {\\n margin-top: 1em; }\\n\\n.btn-promise span {\\n opacity: 0;\\n margin-left: -18px; }\\n\\n.btn-promise.is-loading span {\\n opacity: 1;\\n margin-left: 5px; }\\n\\n.height-fix {\\n min-height: 40vh; }\\n\\n.no-reg {\\n margin-top: 30vh; }\\n\\n.no-reg h2,\\n.no-reg p {\\n margin-bottom: 1em; }\\n\\n.hint {\\n background-color: #AE2573;\\n color: white;\\n margin: 1em 0;\\n padding: 0.5em 1em;\\n font-weight: 500; }\\n\\n.hint i {\\n margin-right: 0.5em; }\\n\\n.hint.-link:hover {\\n background-color: #7C2855;\\n cursor: pointer; }\\n\\n.highlight {\\n color: #005EB8;\\n font-weight: 600;\\n margin-top: 0.5em; }\\n\\n.downloads .btn {\\n margin-bottom: 0.5em; }\\n\\n.modal-body div {\\n margin-bottom: 0.5em; }\\n\\n.modal-body div .btn {\\n margin-top: 0.5em;\\n margin-right: 0.5em; }\\n\\n.actions .btn {\\n margin-right: 0.5em; }\\n\\n.alert-address {\\n margin-top: 1em; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHJvamVjdC1yZWdpc3RyYXRpb24vcHItYWRkcmVzcy9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxwcm9qZWN0LXJlZ2lzdHJhdGlvblxccHJvamVjdC1yZWdpc3RyYXRpb24uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3Byb2plY3QtcmVnaXN0cmF0aW9uL3ByLWFkZHJlc3MvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyIsInNyYy9hcHAvcHJvamVjdC1yZWdpc3RyYXRpb24vcHItYWRkcmVzcy9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxwcm9qZWN0LXJlZ2lzdHJhdGlvblxccHItYWRkcmVzc1xccHItYWRkcmVzcy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNJLDRCQUE0QixFQUFBOztBQUdoQztFQUNJLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksbUJBQW1CLEVBQUE7O0FBR3ZCO0VBQ0ksV0FBVztFQUNYLG1CQUFtQixFQUFBOztBQUd2QjtFQUNJLGtCQUFrQjtFQUNsQixpQkFBaUIsRUFBQTs7QUFHckI7RUFDSSxVQUFVLEVBQUE7O0FBR2Q7RUFDSSwwQkFBMEIsRUFBQTs7QUFHOUI7RUFDSSxlQUFlLEVBQUE7O0FBR25CO0VBQ0ksZ0JBQWdCLEVBQUE7O0FBS3BCO0VBQ0ksZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksWUFBWTtFQUNaLGFBQWE7RUFDYixnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxjQ3hEYztFRHlEZCxnQkFBZ0I7RUFDaEIsb0JBQW9CO0VBQ3BCLGFBQWEsRUFBQTs7QUFHakI7RUFDSSxlQUFlO0VBQ2Ysa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksVUFBVSxFQUFBOztBQUdkO0VBQ0ksa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksZ0JBQWdCO0VBQ2hCLHlCQUF5QjtFQUN6QixnQkFBZ0I7RUFDaEIsZUFBZTtFQUNmLG1CQUFtQixFQUFBOztBQUd2Qjs7O0VBSUksZUFBZTtFQUNmLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxjQUFjO0VBQ2QsZUFBZSxFQUFBOztBQUduQjtFQUNJLHFCQUFxQjtFQUNyQixzQkFBc0I7RUFDdEIsV0FBVyxFQUFBOztBQUdmO0VBQ0ksZUFBZTtFQUNmLHVCQUF1QjtFQUN2QixZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLHNCQUFzQixFQUFBOztBQUcxQjtFQUNJLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxpQkFBaUIsRUFBQTs7QUFHckI7RUFDSSxlQUFlLEVBQUE7O0FBR25CO0VBQ0ksVUFBVTtFQUNWLGtCQUFrQixFQUFBOztBQUd0QjtFQUNJLFVBQVU7RUFDVixnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxnQkFBZ0IsRUFBQTs7QUFHcEI7O0VBRUksa0JBQWtCLEVBQUE7O0FBS3RCO0VBQ0kseUJBQXlCO0VBQ3pCLFlBQVk7RUFDWixhQUFhO0VBQ2Isa0JBQWtCO0VBQ2xCLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLG1CQUFtQixFQUFBOztBQUd2QjtFQUNJLHlCQUF5QjtFQUN6QixlQUFlLEVBQUE7O0FBR25CO0VBQ0ksY0NyS2M7RURzS2QsZ0JBQWdCO0VBQ2hCLGlCQUFpQixFQUFBOztBQUdyQjtFQUNJLG9CQUFvQixFQUFBOztBQUd4QjtFQUNJLG9CQUFvQixFQUFBOztBQUd4QjtFQUNJLGlCQUFpQjtFQUNqQixtQkFBbUIsRUFBQTs7QUVyTHZCO0VBQ0ksbUJBQW1CLEVBQUE7O0FBR3ZCO0VBQ0ksZUFBZSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvcHJvamVjdC1yZWdpc3RyYXRpb24vcHItYWRkcmVzcy9wci1hZGRyZXNzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vdmFyaWFibGVzJztcclxuXHJcbi5tci0yIHtcclxuICAgIG1hcmdpbi1yaWdodDogMWVtICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5kYXNoYm9hcmQtc3Bpbm5lciB7XHJcbiAgICBtYXJnaW4tdG9wOiAyNXZoO1xyXG59XHJcblxyXG4uZGFzaGJvYXJkLXNwaW5uZXIgcCB7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjc1ZW07XHJcbiAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG59XHJcblxyXG4ucGFuZWwtZ3JvdXAge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxufVxyXG5cclxuLm5hY2VsLWltYWdlIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogLTFlbTtcclxufVxyXG5cclxuLmJ1dHRvbi1tYXJnaW4ge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbn1cclxuXHJcbi5pbWctdGl0bGUge1xyXG4gICAgd2lkdGg6IDYwJTtcclxufVxyXG5cclxuLnRhYmxlLWJ1dHRvbiB7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgICBcclxufVxyXG5cclxuLnRhYmxlLWJ1dHRvbjpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbmg0IHtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi8vIE5ldyBzdHlsZXNcclxuXHJcbmgxIHtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbmgzIHtcclxuICAgIGNvbG9yOiBibGFjaztcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICBmb250LXNpemU6IDEuNWVtO1xyXG59XHJcblxyXG4udGl0bGUtaW50cm8ge1xyXG4gICAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbn1cclxuXHJcbi5oZWFkZXIge1xyXG4gICAgbWFyZ2luLXRvcDogNWVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogM2VtO1xyXG59XHJcblxyXG4uaGVhZGVyIGltZyB7XHJcbiAgICB3aWR0aDogODAlO1xyXG59XHJcblxyXG4uaGVhZGVyIGgxIHtcclxuICAgIG1hcmdpbi10b3A6IDAuMjVlbTtcclxufVxyXG5cclxuI2NvbnRhaW5lclJlZ2lzdHJhdGlvbiB7XHJcbiAgICBtYXJnaW4tdG9wOiAtMmVtO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjNGMztcclxuICAgIG1pbi1oZWlnaHQ6IDcwdmg7XHJcbiAgICBtaW4taGVpZ2h0OiA3MCU7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogNWVtO1xyXG59XHJcblxyXG4jY29udGFpbmVyUmVnaXN0cmF0aW9uIC5hbGVydC1zdWNjZXNzLFxyXG4jY29udGFpbmVyUmVnaXN0cmF0aW9uIC5hbGVydC1kYW5nZXIsXHJcbiNjb250YWluZXJSZWdpc3RyYXRpb24gLmFsZXJ0LWluZm9cclxuIHtcclxuICAgIG1hcmdpbjogMS41ZW0gMDtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxufVxyXG5cclxuI2NvbnRhaW5lclJlZ2lzdHJhdGlvbiAuYWxlcnQtc3VjY2VzcyAuYnRuLXN1Y2Nlc3Mge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBtYXJnaW4tdG9wOiAxZW07XHJcbn1cclxuXHJcbi52Y2VudGVyIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICBmbG9hdDogbm9uZTtcclxufVxyXG5cclxuLnJlZ2lzdHJhdGlvbi1zZWN0aW9uIHtcclxuICAgIG1hcmdpbi10b3A6IDJlbTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgcGFkZGluZzogMmVtO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxufVxyXG5cclxuLnJlZ2lzdHJhdGlvbi1hY3Rpb24ge1xyXG4gICAgbWFyZ2luLXRvcDogMmVtO1xyXG59XHJcblxyXG4uYnRuLWxhdGVyIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG59XHJcblxyXG4uZXhwbGFpbmVyIHtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxufVxyXG5cclxuLmJ0bi1wcm9taXNlIHNwYW4ge1xyXG4gICAgb3BhY2l0eTogMDtcclxuICAgIG1hcmdpbi1sZWZ0OiAtMThweDtcclxufVxyXG5cclxuLmJ0bi1wcm9taXNlLmlzLWxvYWRpbmcgc3BhbiB7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcclxufVxyXG5cclxuLmhlaWdodC1maXgge1xyXG4gICAgbWluLWhlaWdodDogNDB2aDtcclxufVxyXG5cclxuLm5vLXJlZyB7XHJcbiAgICBtYXJnaW4tdG9wOiAzMHZoO1xyXG59XHJcblxyXG4ubm8tcmVnIGgyLFxyXG4ubm8tcmVnIHAge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xyXG59XHJcblxyXG4vLyAyMDIwIEFkZGl0aW9uc1xyXG5cclxuLmhpbnQge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0FFMjU3MztcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIG1hcmdpbjogMWVtIDA7XHJcbiAgICBwYWRkaW5nOiAwLjVlbSAxZW07XHJcbiAgICBmb250LXdlaWdodDogNTAwO1xyXG59XHJcblxyXG4uaGludCBpIHtcclxuICAgIG1hcmdpbi1yaWdodDogMC41ZW07XHJcbn1cclxuXHJcbi5oaW50Li1saW5rOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICM3QzI4NTU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5oaWdobGlnaHQge1xyXG4gICAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjVlbTtcclxufVxyXG5cclxuLmRvd25sb2FkcyAuYnRuIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG59XHJcblxyXG4ubW9kYWwtYm9keSBkaXYge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XHJcbn1cclxuXHJcbi5tb2RhbC1ib2R5IGRpdiAuYnRuIHtcclxuICAgIG1hcmdpbi10b3A6IDAuNWVtO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufSIsIiRpY29uLWZvbnQtcGF0aDogJy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAtc2Fzcy9hc3NldHMvZm9udHMvYm9vdHN0cmFwLyc7XHJcblxyXG4vLyBDdXN0b20gdmFyaWFibGVzXHJcbiRuaHMtYmx1ZTogIzAwNUVCODtcclxuJG5ocy1kYXJrLWJsdWU6ICMwMDQ0ODU7XHJcbiRuaHMtZ3JleTogIzc2ODY5MjtcclxuJG5ocy1mYWRlZC1ibHVlOiAjRjJGN0ZCO1xyXG4kYWN0aXZlLWFkbWluLXllbGxvdzogI0ZEQkMzMDtcclxuJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93OiAjRTU5OTAwO1xyXG4gXHJcbi8vIEJvb3RzdHJhcCB2YXJpYWJsZXNcclxuJHRleHQtY29sb3I6IGJsYWNrO1xyXG4kYm9yZGVyLXJhZGl1cy1iYXNlOiAwO1xyXG4kYm9yZGVyLXJhZGl1cy1zbWFsbDogMDtcclxuJGJyYW5kLXByaW1hcnk6ICRuaHMtYmx1ZTtcclxuJGJyYW5kLXN1Y2Nlc3M6IGdyZWVuO1xyXG4kbGluay1ob3Zlci1kZWNvcmF0aW9uOiBub25lO1xyXG4kZm9udC1zaXplLWg0OiAxN3B4O1xyXG4kbmF2YmFyLW1hcmdpbi1ib3R0b206IDA7XHJcbiRuYXZiYXItaGVpZ2h0OiA2MHB4O1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtYmc6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWJvcmRlci1jb2xvcjogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaWNvbi1iYXItYmc6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOiB3aGl0ZTtcclxuXHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc6ICRuaHMtYmx1ZTtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1jb2xvcjogd2hpdGU7XHJcbiRuYXYtcGlsbHMtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJHRhYmxlLWJnLWhvdmVyOiAkbmhzLWZhZGVkLWJsdWU7XHJcbiRoZWFkaW5ncy1zbWFsbC1jb2xvcjogJG5ocy1ncmV5OyIsIkBpbXBvcnQgJy4uL3Byb2plY3QtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5zY3NzJztcclxuXHJcbi5hY3Rpb25zIC5idG4ge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufVxyXG5cclxuLmFsZXJ0LWFkZHJlc3Mge1xyXG4gICAgbWFyZ2luLXRvcDogMWVtO1xyXG59Il19 */\"","import { Component, OnChanges, Input, Output, EventEmitter } from '@angular/core';\r\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\nimport { MemberService } from '../../utilities/services/member.service';\r\n\r\n@Component({\r\n selector: 'app-pr-address',\r\n templateUrl: './pr-address.component.html',\r\n styleUrls: ['./pr-address.component.scss']\r\n})\r\nexport class PrAddressComponent implements OnChanges {\r\n @Input() registration;\r\n @Input() projectBasicDetails;\r\n @Input() addressClosed;\r\n @Output() addressAdd: EventEmitter = new EventEmitter();\r\n\r\n address;\r\n addressForm: FormGroup; \r\n showAddressForm: boolean = false;\r\n showAddressFormAdd: boolean = true;\r\n\r\n addressError: boolean = false;\r\n\r\n constructor(\r\n private memberService: MemberService, \r\n private fb: FormBuilder, \r\n private toastr: ToastrService\r\n ) { }\r\n\r\n ngOnChanges() {\r\n if (this.registration.registration.address) {\r\n this.address = this.registration.registration.address.addressList[0];\r\n }\r\n }\r\n\r\n addressFormAdd(address?) {\r\n this.addressError = false;\r\n this.buildAddressForm(address);\r\n\r\n this.showAddressForm = true; \r\n this.showAddressFormAdd = false; \r\n }\r\n\r\n addressFormEdit() {\r\n this.addressFormAdd();\r\n\r\n this.addressForm.setValue({\r\n contact: this.address.addressContact,\r\n phone: this.address.addressPhone,\r\n address1: this.address.address1,\r\n address2: this.address.address2,\r\n address3: this.address.address3,\r\n address4: this.address.address4,\r\n postcode: this.address.addressPostcode\r\n });\r\n\r\n }\r\n\r\n addressFormSubmit() {\r\n if (this.address) {\r\n let address = {\r\n registrationAddressId: this.address.addressId,\r\n addressContact: this.addressForm.value.contact,\r\n addressPhone: this.addressForm.value.phone,\r\n address1: this.addressForm.value.address1,\r\n address2: this.addressForm.value.address2,\r\n address3: this.addressForm.value.address3,\r\n address4: this.addressForm.value.address4,\r\n addressPostcode: this.addressForm.value.postcode\r\n }\r\n this.editAddress(this.registration.registrationId, address);\r\n } else {\r\n this.addAddress(this.registration.registrationId, this.addressForm.value);\r\n }\r\n }\r\n\r\n addAddress(registrationId: number, addressDetails) {\r\n addressDetails.addressTypeId = 1;\r\n this.memberService.AddRegistrationAddress(registrationId, addressDetails).subscribe(\r\n r => {\r\n this.addressAdd.emit(true);\r\n this.toastr.success('The address has been added successfully.');\r\n this.showAddressForm = !this.showAddressForm;\r\n this.showAddressFormAdd = !this.showAddressFormAdd;\r\n },\r\n e => {\r\n this.toastr.error('There has been an error when trying to add the address. Please try again.');\r\n console.log(e.error.error.message);\r\n }\r\n )\r\n }\r\n\r\n // TODO: Test this following API update\r\n editAddress(registrationId: number, addressDetails) {\r\n this.memberService.EditRegistrationAddress(registrationId, addressDetails).subscribe(\r\n r => {\r\n this.toastr.success('The address has been edited successfully.');\r\n this.showAddressForm = !this.showAddressForm;\r\n this.showAddressFormAdd = !this.showAddressFormAdd;\r\n this.addressAdd.emit(true);\r\n },\r\n e => {\r\n this.toastr.error('There has been an error when trying to edit the address. Please try again.');\r\n console.log(e.error.error.message);\r\n }\r\n )\r\n }\r\n\r\n removeAddress(registrationAddressId) {\r\n if (confirm(\"Are you sure you want to remove this address?\")) {\r\n this.memberService.RemoveRegistrationAddress(this.registration.registrationId, registrationAddressId).subscribe(\r\n r => {\r\n this.addressAdd.emit(false);\r\n this.address = null;\r\n this.toastr.success('The address has been removed.');\r\n },\r\n e => {\r\n this.toastr.error('There has been an error when trying to remove the address. Please try again.');\r\n console.log(e.error.error.message);\r\n }\r\n )\r\n }\r\n }\r\n\r\n buildAddressForm(address?) {\r\n\r\n if (address) {\r\n this.addressForm = this.fb.group({\r\n contact: [address.addressContact, [Validators.required, Validators.maxLength(200)]],\r\n phone: [address.addressPhone, [Validators.required, Validators.maxLength(40)]],\r\n address1: [address.address1, [Validators.required, Validators.maxLength(200)]],\r\n address2: [address.address2, [Validators.required, Validators.maxLength(200)]],\r\n address3: [address.address3, [Validators.maxLength(200)]],\r\n address4: [address.address4, [Validators.maxLength(200)]],\r\n postcode: [address.addressPostcode, [Validators.required, Validators.maxLength(10)]]\r\n });\r\n } else {\r\n this.addressForm = this.fb.group({\r\n contact: ['', [Validators.required, Validators.maxLength(200)]],\r\n phone: ['', [Validators.required, Validators.maxLength(40)]],\r\n address1: ['', [Validators.required, Validators.maxLength(200)]],\r\n address2: ['', [Validators.required, Validators.maxLength(200)]],\r\n address3: ['', [Validators.maxLength(200)]],\r\n address4: ['', [Validators.maxLength(200)]],\r\n postcode: ['', [Validators.required, Validators.maxLength(10)]]\r\n });\r\n }\r\n\r\n this.addressForm.valueChanges.subscribe(\r\n data => this.onValueChanged(data)\r\n );\r\n\r\n this.onValueChanged();\r\n }\r\n\r\n onValueChanged(data?: any) {\r\n if (!this.addressForm) { return; }\r\n const form = this.addressForm;\r\n\r\n for (const field in this.formErrors) {\r\n // clear previous error message (if any)\r\n this.formErrors[field] = '';\r\n const control = form.get(field);\r\n\r\n if (control && control.dirty && !control.valid) {\r\n const messages = this.validationMessages[field];\r\n\r\n for (const key in control.errors) {\r\n this.formErrors[field] += messages[key] + ' ';\r\n }\r\n }\r\n }\r\n }\r\n\r\n getLastAddress() {\r\n this.memberService.ProjectRegistration(\r\n this.registration.productId, \r\n this.registration.projectId, \r\n this.registration.organisationId, \r\n this.registration.registration.registrationYear - 1 // Last year\r\n ).subscribe(\r\n r => {\r\n let registrationAddress = r.data.registration.address;\r\n let addressList = registrationAddress ? registrationAddress.addressList : null;\r\n let address = addressList && addressList.length ? addressList[0] : null;\r\n if (address) {\r\n this.addressFormAdd(address);\r\n } else {\r\n this.addressError = true;\r\n }\r\n }, \r\n e => {\r\n console.log(e);\r\n this.addressError = true;\r\n }\r\n );\r\n }\r\n\r\n formErrors = {\r\n 'contact': '',\r\n 'phone': '',\r\n 'address1': '',\r\n 'address2': '', \r\n 'address3': '',\r\n 'address4': '',\r\n 'postcode': ''\r\n }\r\n\r\n validationMessages = {\r\n 'contact': {\r\n 'required': 'Contact Name is required',\r\n 'maxlength': 'Contact Name cannot be longer than 200 characters'\r\n },\r\n 'phone': {\r\n 'required': 'Phone number is required.',\r\n 'maxlength': 'Phone number cannot be longer than 40 characters.'\r\n },\r\n 'address1': {\r\n 'required': 'Address 1 is required',\r\n 'maxlength': 'Address 1 cannot be longer than 200 characters'\r\n },\r\n 'address2': {\r\n 'required': 'Address 2 is required',\r\n 'maxlength': 'Address 2 cannot be longer than 200 characters'\r\n },\r\n 'address3': {\r\n 'required': 'Address 3 is required',\r\n 'maxlength': 'Address 3 cannot be longer than 200 characters'\r\n },\r\n 'address4': {\r\n 'required': 'Address 4 is required',\r\n 'maxlength': 'Address 4 cannot be longer than 200 characters'\r\n },\r\n 'postcode': {\r\n 'required': 'Postcode is required',\r\n 'maxlength': 'Postcode cannot be longer than 10 characters'\r\n }\r\n }\r\n}","module.exports = \"
\\r\\n\\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
NameJob TitleEmail
{{d.fullName}}{{d.jobTitle || '-'}}{{d.logonName}}\\r\\n \\r\\n Remove\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Click here to add your own details to the form\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.fullName }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.logonName }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.jobTitle }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.phoneNo }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n

\\r\\n Name, email and job title are required are required before the Deputy Project Lead can be saved. Contact number is optional.\\r\\n

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

0 && registration.registration.registrationLocked\\\" class=\\\"blank\\\">\\r\\n No Deputy Project Leads added.\\r\\n

\\r\\n\\r\\n \\r\\n\\r\\n
\"","module.exports = \".mr-2 {\\n margin-right: 1em !important; }\\n\\n.dashboard-spinner {\\n margin-top: 25vh; }\\n\\n.dashboard-spinner p {\\n margin-top: 0.75em;\\n font-size: 20px;\\n font-weight: 600; }\\n\\n.panel-group {\\n margin-bottom: 10px; }\\n\\n.nacel-image {\\n width: 100%;\\n margin-bottom: -1em; }\\n\\n.button-margin {\\n margin-bottom: 5px;\\n margin-right: 5px; }\\n\\n.img-title {\\n width: 60%; }\\n\\n.table-button {\\n text-decoration: underline; }\\n\\n.table-button:hover {\\n cursor: pointer; }\\n\\nh4 {\\n font-weight: 600; }\\n\\nh1 {\\n font-weight: 600; }\\n\\nh3 {\\n color: black;\\n margin-top: 0;\\n font-size: 1.5em; }\\n\\n.title-intro {\\n color: #005EB8;\\n font-weight: 600;\\n margin-bottom: 0.5em;\\n margin-top: 0; }\\n\\n.header {\\n margin-top: 5em;\\n margin-bottom: 3em; }\\n\\n.header img {\\n width: 80%; }\\n\\n.header h1 {\\n margin-top: 0.25em; }\\n\\n#containerRegistration {\\n margin-top: -2em;\\n background-color: #F3F3F3;\\n min-height: 70vh;\\n min-height: 70%;\\n padding-bottom: 5em; }\\n\\n#containerRegistration .alert-success,\\n#containerRegistration .alert-danger,\\n#containerRegistration .alert-info {\\n margin: 1.5em 0;\\n font-size: 14px; }\\n\\n#containerRegistration .alert-success .btn-success {\\n display: block;\\n margin-top: 1em; }\\n\\n.vcenter {\\n display: inline-block;\\n vertical-align: middle;\\n float: none; }\\n\\n.registration-section {\\n margin-top: 2em;\\n background-color: white;\\n padding: 2em;\\n border-radius: 4px;\\n border: 1px solid #ccc; }\\n\\n.registration-action {\\n margin-top: 2em; }\\n\\n.btn-later {\\n margin-left: 10px; }\\n\\n.explainer {\\n margin-top: 1em; }\\n\\n.btn-promise span {\\n opacity: 0;\\n margin-left: -18px; }\\n\\n.btn-promise.is-loading span {\\n opacity: 1;\\n margin-left: 5px; }\\n\\n.height-fix {\\n min-height: 40vh; }\\n\\n.no-reg {\\n margin-top: 30vh; }\\n\\n.no-reg h2,\\n.no-reg p {\\n margin-bottom: 1em; }\\n\\n.hint {\\n background-color: #AE2573;\\n color: white;\\n margin: 1em 0;\\n padding: 0.5em 1em;\\n font-weight: 500; }\\n\\n.hint i {\\n margin-right: 0.5em; }\\n\\n.hint.-link:hover {\\n background-color: #7C2855;\\n cursor: pointer; }\\n\\n.highlight {\\n color: #005EB8;\\n font-weight: 600;\\n margin-top: 0.5em; }\\n\\n.downloads .btn {\\n margin-bottom: 0.5em; }\\n\\n.modal-body div {\\n margin-bottom: 0.5em; }\\n\\n.modal-body div .btn {\\n margin-top: 0.5em;\\n margin-right: 0.5em; }\\n\\n.table {\\n margin-bottom: 0.5em; }\\n\\n.deputy {\\n padding-bottom: 1em; }\\n\\n.alert {\\n margin-bottom: 1em;\\n margin-top: 1em; }\\n\\n.blank {\\n color: #768692;\\n padding: 0.5em 0; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHJvamVjdC1yZWdpc3RyYXRpb24vcHItZGVwdXR5LXByb2plY3QtbGVhZC9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxwcm9qZWN0LXJlZ2lzdHJhdGlvblxccHJvamVjdC1yZWdpc3RyYXRpb24uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3Byb2plY3QtcmVnaXN0cmF0aW9uL3ByLWRlcHV0eS1wcm9qZWN0LWxlYWQvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyIsInNyYy9hcHAvcHJvamVjdC1yZWdpc3RyYXRpb24vcHItZGVwdXR5LXByb2plY3QtbGVhZC9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxwcm9qZWN0LXJlZ2lzdHJhdGlvblxccHItZGVwdXR5LXByb2plY3QtbGVhZFxccHItZGVwdXR5LXByb2plY3QtbGVhZC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNJLDRCQUE0QixFQUFBOztBQUdoQztFQUNJLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksbUJBQW1CLEVBQUE7O0FBR3ZCO0VBQ0ksV0FBVztFQUNYLG1CQUFtQixFQUFBOztBQUd2QjtFQUNJLGtCQUFrQjtFQUNsQixpQkFBaUIsRUFBQTs7QUFHckI7RUFDSSxVQUFVLEVBQUE7O0FBR2Q7RUFDSSwwQkFBMEIsRUFBQTs7QUFHOUI7RUFDSSxlQUFlLEVBQUE7O0FBR25CO0VBQ0ksZ0JBQWdCLEVBQUE7O0FBS3BCO0VBQ0ksZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksWUFBWTtFQUNaLGFBQWE7RUFDYixnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxjQ3hEYztFRHlEZCxnQkFBZ0I7RUFDaEIsb0JBQW9CO0VBQ3BCLGFBQWEsRUFBQTs7QUFHakI7RUFDSSxlQUFlO0VBQ2Ysa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksVUFBVSxFQUFBOztBQUdkO0VBQ0ksa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksZ0JBQWdCO0VBQ2hCLHlCQUF5QjtFQUN6QixnQkFBZ0I7RUFDaEIsZUFBZTtFQUNmLG1CQUFtQixFQUFBOztBQUd2Qjs7O0VBSUksZUFBZTtFQUNmLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxjQUFjO0VBQ2QsZUFBZSxFQUFBOztBQUduQjtFQUNJLHFCQUFxQjtFQUNyQixzQkFBc0I7RUFDdEIsV0FBVyxFQUFBOztBQUdmO0VBQ0ksZUFBZTtFQUNmLHVCQUF1QjtFQUN2QixZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLHNCQUFzQixFQUFBOztBQUcxQjtFQUNJLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxpQkFBaUIsRUFBQTs7QUFHckI7RUFDSSxlQUFlLEVBQUE7O0FBR25CO0VBQ0ksVUFBVTtFQUNWLGtCQUFrQixFQUFBOztBQUd0QjtFQUNJLFVBQVU7RUFDVixnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxnQkFBZ0IsRUFBQTs7QUFHcEI7O0VBRUksa0JBQWtCLEVBQUE7O0FBS3RCO0VBQ0kseUJBQXlCO0VBQ3pCLFlBQVk7RUFDWixhQUFhO0VBQ2Isa0JBQWtCO0VBQ2xCLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLG1CQUFtQixFQUFBOztBQUd2QjtFQUNJLHlCQUF5QjtFQUN6QixlQUFlLEVBQUE7O0FBR25CO0VBQ0ksY0NyS2M7RURzS2QsZ0JBQWdCO0VBQ2hCLGlCQUFpQixFQUFBOztBQUdyQjtFQUNJLG9CQUFvQixFQUFBOztBQUd4QjtFQUNJLG9CQUFvQixFQUFBOztBQUd4QjtFQUNJLGlCQUFpQjtFQUNqQixtQkFBbUIsRUFBQTs7QUVyTHZCO0VBQ0ksb0JBQW9CLEVBQUE7O0FBR3hCO0VBQ0ksbUJBQW1CLEVBQUE7O0FBR3ZCO0VBQ0ksa0JBQWtCO0VBQ2xCLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxjRFhjO0VDWWQsZ0JBQWdCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9wcm9qZWN0LXJlZ2lzdHJhdGlvbi9wci1kZXB1dHktcHJvamVjdC1sZWFkL3ByLWRlcHV0eS1wcm9qZWN0LWxlYWQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi92YXJpYWJsZXMnO1xyXG5cclxuLm1yLTIge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxZW0gIWltcG9ydGFudDtcclxufVxyXG5cclxuLmRhc2hib2FyZC1zcGlubmVyIHtcclxuICAgIG1hcmdpbi10b3A6IDI1dmg7XHJcbn1cclxuXHJcbi5kYXNoYm9hcmQtc3Bpbm5lciBwIHtcclxuICAgIG1hcmdpbi10b3A6IDAuNzVlbTtcclxuICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi5wYW5lbC1ncm91cCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG59XHJcblxyXG4ubmFjZWwtaW1hZ2Uge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAtMWVtO1xyXG59XHJcblxyXG4uYnV0dG9uLW1hcmdpbiB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiA1cHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcclxufVxyXG5cclxuLmltZy10aXRsZSB7XHJcbiAgICB3aWR0aDogNjAlO1xyXG59XHJcblxyXG4udGFibGUtYnV0dG9uIHtcclxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAgIFxyXG59XHJcblxyXG4udGFibGUtYnV0dG9uOmhvdmVyIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuaDQge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuLy8gTmV3IHN0eWxlc1xyXG5cclxuaDEge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuaDMge1xyXG4gICAgY29sb3I6IGJsYWNrO1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxuICAgIGZvbnQtc2l6ZTogMS41ZW07XHJcbn1cclxuXHJcbi50aXRsZS1pbnRybyB7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxufVxyXG5cclxuLmhlYWRlciB7XHJcbiAgICBtYXJnaW4tdG9wOiA1ZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAzZW07XHJcbn1cclxuXHJcbi5oZWFkZXIgaW1nIHtcclxuICAgIHdpZHRoOiA4MCU7XHJcbn1cclxuXHJcbi5oZWFkZXIgaDEge1xyXG4gICAgbWFyZ2luLXRvcDogMC4yNWVtO1xyXG59XHJcblxyXG4jY29udGFpbmVyUmVnaXN0cmF0aW9uIHtcclxuICAgIG1hcmdpbi10b3A6IC0yZW07XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGM0YzO1xyXG4gICAgbWluLWhlaWdodDogNzB2aDtcclxuICAgIG1pbi1oZWlnaHQ6IDcwJTtcclxuICAgIHBhZGRpbmctYm90dG9tOiA1ZW07XHJcbn1cclxuXHJcbiNjb250YWluZXJSZWdpc3RyYXRpb24gLmFsZXJ0LXN1Y2Nlc3MsXHJcbiNjb250YWluZXJSZWdpc3RyYXRpb24gLmFsZXJ0LWRhbmdlcixcclxuI2NvbnRhaW5lclJlZ2lzdHJhdGlvbiAuYWxlcnQtaW5mb1xyXG4ge1xyXG4gICAgbWFyZ2luOiAxLjVlbSAwO1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG59XHJcblxyXG4jY29udGFpbmVyUmVnaXN0cmF0aW9uIC5hbGVydC1zdWNjZXNzIC5idG4tc3VjY2VzcyB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxufVxyXG5cclxuLnZjZW50ZXIge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgIGZsb2F0OiBub25lO1xyXG59XHJcblxyXG4ucmVnaXN0cmF0aW9uLXNlY3Rpb24ge1xyXG4gICAgbWFyZ2luLXRvcDogMmVtO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICBwYWRkaW5nOiAyZW07XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG59XHJcblxyXG4ucmVnaXN0cmF0aW9uLWFjdGlvbiB7XHJcbiAgICBtYXJnaW4tdG9wOiAyZW07XHJcbn1cclxuXHJcbi5idG4tbGF0ZXIge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbn1cclxuXHJcbi5leHBsYWluZXIge1xyXG4gICAgbWFyZ2luLXRvcDogMWVtO1xyXG59XHJcblxyXG4uYnRuLXByb21pc2Ugc3BhbiB7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG4gICAgbWFyZ2luLWxlZnQ6IC0xOHB4O1xyXG59XHJcblxyXG4uYnRuLXByb21pc2UuaXMtbG9hZGluZyBzcGFuIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xyXG59XHJcblxyXG4uaGVpZ2h0LWZpeCB7XHJcbiAgICBtaW4taGVpZ2h0OiA0MHZoO1xyXG59XHJcblxyXG4ubm8tcmVnIHtcclxuICAgIG1hcmdpbi10b3A6IDMwdmg7XHJcbn1cclxuXHJcbi5uby1yZWcgaDIsXHJcbi5uby1yZWcgcCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XHJcbn1cclxuXHJcbi8vIDIwMjAgQWRkaXRpb25zXHJcblxyXG4uaGludCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQUUyNTczO1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgbWFyZ2luOiAxZW0gMDtcclxuICAgIHBhZGRpbmc6IDAuNWVtIDFlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbn1cclxuXHJcbi5oaW50IGkge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufVxyXG5cclxuLmhpbnQuLWxpbms6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzdDMjg1NTtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmhpZ2hsaWdodCB7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIG1hcmdpbi10b3A6IDAuNWVtO1xyXG59XHJcblxyXG4uZG93bmxvYWRzIC5idG4ge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XHJcbn1cclxuXHJcbi5tb2RhbC1ib2R5IGRpdiB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxufVxyXG5cclxuLm1vZGFsLWJvZHkgZGl2IC5idG4ge1xyXG4gICAgbWFyZ2luLXRvcDogMC41ZW07XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59IiwiJGljb24tZm9udC1wYXRoOiAnLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC1zYXNzL2Fzc2V0cy9mb250cy9ib290c3RyYXAvJztcclxuXHJcbi8vIEN1c3RvbSB2YXJpYWJsZXNcclxuJG5ocy1ibHVlOiAjMDA1RUI4O1xyXG4kbmhzLWRhcmstYmx1ZTogIzAwNDQ4NTtcclxuJG5ocy1ncmV5OiAjNzY4NjkyO1xyXG4kbmhzLWZhZGVkLWJsdWU6ICNGMkY3RkI7XHJcbiRhY3RpdmUtYWRtaW4teWVsbG93OiAjRkRCQzMwO1xyXG4kYWN0aXZlLWFkbWluLWRhcmt5ZWxsb3c6ICNFNTk5MDA7XHJcbiBcclxuLy8gQm9vdHN0cmFwIHZhcmlhYmxlc1xyXG4kdGV4dC1jb2xvcjogYmxhY2s7XHJcbiRib3JkZXItcmFkaXVzLWJhc2U6IDA7XHJcbiRib3JkZXItcmFkaXVzLXNtYWxsOiAwO1xyXG4kYnJhbmQtcHJpbWFyeTogJG5ocy1ibHVlO1xyXG4kYnJhbmQtc3VjY2VzczogZ3JlZW47XHJcbiRsaW5rLWhvdmVyLWRlY29yYXRpb246IG5vbmU7XHJcbiRmb250LXNpemUtaDQ6IDE3cHg7XHJcbiRuYXZiYXItbWFyZ2luLWJvdHRvbTogMDtcclxuJG5hdmJhci1oZWlnaHQ6IDYwcHg7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWNvbG9yOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1iZzogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtYm9yZGVyLWNvbG9yOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1pY29uLWJhci1iZzogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaG92ZXItYmc6IHdoaXRlO1xyXG5cclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1iZzogJG5ocy1ibHVlO1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWNvbG9yOiB3aGl0ZTtcclxuJG5hdi1waWxscy1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kdGFibGUtYmctaG92ZXI6ICRuaHMtZmFkZWQtYmx1ZTtcclxuJGhlYWRpbmdzLXNtYWxsLWNvbG9yOiAkbmhzLWdyZXk7IiwiQGltcG9ydCAnLi4vcHJvamVjdC1yZWdpc3RyYXRpb24uY29tcG9uZW50LnNjc3MnO1xyXG5cclxuLnRhYmxlIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG59XHJcblxyXG4uZGVwdXR5IHtcclxuICAgIHBhZGRpbmctYm90dG9tOiAxZW07XHJcbn1cclxuXHJcbi5hbGVydCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XHJcbiAgICBtYXJnaW4tdG9wOiAxZW07XHJcbn1cclxuXHJcbi5ibGFuayB7XHJcbiAgICBjb2xvcjogJG5ocy1ncmV5O1xyXG4gICAgcGFkZGluZzogMC41ZW0gMDtcclxufSJdfQ== */\"","import { Component, OnChanges, Input, Output, EventEmitter, OnInit } from '@angular/core';\r\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\r\n\r\nimport { MemberService } from '../../utilities/services/member.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-pr-deputy-project-lead',\r\n templateUrl: './pr-deputy-project-lead.component.html',\r\n styleUrls: ['./pr-deputy-project-lead.component.scss']\r\n})\r\nexport class PrDeputyProjectLeadComponent implements OnInit, OnChanges {\r\n @Input() registration;\r\n @Output() deputyProjectLeadAdd: EventEmitter = new EventEmitter();\r\n @Output() deputyProjectLeadRemove: EventEmitter = new EventEmitter();\r\n\r\n deputyProjectLead; deputyProjectLeadForm: FormGroup;\r\n showDeputyProjectLeadForm: boolean = false; \r\n showDeputyProjectLeadFormAdd: boolean = true;\r\n maxDeputyProjectLeads: number;\r\n\r\n constructor(\r\n private memberService: MemberService, \r\n private fb: FormBuilder,\r\n private toastr: ToastrService,\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.maxDeputyProjectLeads = this.registration.registration.registrationType.maxDeputyProjectLeads\r\n if(this.maxDeputyProjectLeads == null){\r\n this.maxDeputyProjectLeads = 100;\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.registration) {\r\n this.deputyProjectLead = this.registration.registration.deputyProjectLead.deputyProjectLeadList\r\n this.buildDeputyProjectLeadForm();\r\n }\r\n }\r\n\r\n buildDeputyProjectLeadForm() {\r\n this.deputyProjectLeadForm = this.fb.group({ \r\n logonName: ['', [Validators.required, Validators.maxLength(200), Validators.email]],\r\n fullName: ['', [Validators.required, Validators.maxLength(150)]],\r\n jobTitle: ['', [Validators.required, Validators.maxLength(150)]],\r\n phoneNo: ['', [Validators.maxLength(40)]]\r\n });\r\n\r\n this.deputyProjectLeadForm.valueChanges.subscribe(\r\n data => this.onValueChanged(data)\r\n );\r\n\r\n this.onValueChanged();\r\n }\r\n\r\n deputyProjectLeadFormSubmit() {\r\n\r\n let logonNames = this.registration.registration.deputyProjectLead.deputyProjectLeadList.map(d => d.logonName),\r\n deputyProjectLead = {\r\n fullName: this.deputyProjectLeadForm.value.fullName,\r\n logonName: this.deputyProjectLeadForm.value.logonName,\r\n jobTitle: this.deputyProjectLeadForm.value.jobTitle,\r\n phoneNo: this.deputyProjectLeadForm.value.phoneNo\r\n };\r\n\r\n if (logonNames.includes(this.deputyProjectLeadForm.value.logonName)) {\r\n this.toastr.error('This user has already been added as a Deputy Project Lead');\r\n } else {\r\n this.addDeputyProjectLead(this.registration.registrationId, deputyProjectLead);\r\n this.showDeputyProjectLeadForm = !this.showDeputyProjectLeadForm;\r\n this.showDeputyProjectLeadFormAdd = !this.showDeputyProjectLeadFormAdd;\r\n this.buildDeputyProjectLeadForm();\r\n }\r\n\r\n }\r\n\r\n getUserDetails() {\r\n this.memberService.User().subscribe(\r\n u => { \r\n let user = u.data;\r\n this.deputyProjectLeadForm.controls['fullName'].setValue(user.fullName);\r\n this.deputyProjectLeadForm.controls['logonName'].setValue(user.logonName);\r\n this.deputyProjectLeadForm.controls['phoneNo'].setValue(user.phoneNo);\r\n this.deputyProjectLeadForm.controls['jobTitle'].setValue(user.jobTitle);\r\n }\r\n )\r\n };\r\n\r\n deputyProjectLeadFormRemove(userId: number) {\r\n if (confirm(\"Are you sure you want to remove this Deputy Project Lead?\")) {\r\n this.removeDeputyProjectLead(this.registration.registrationId, userId);\r\n }\r\n }\r\n\r\n addDeputyProjectLead(registrationId: number, deputyProjectLeadDetails) {\r\n this.memberService.AddDeputyProjectLead(registrationId, deputyProjectLeadDetails).subscribe(\r\n r => {\r\n this.deputyProjectLeadAdd.emit(r.data[0]);\r\n },\r\n e => {\r\n console.log('There has been an error whilst adding a deputy project lead.');\r\n }\r\n );\r\n }\r\n\r\n removeDeputyProjectLead(registrationId: number, userId: number) {\r\n this.memberService.RemoveDeputyProjectLead(registrationId, userId).subscribe(\r\n r => { \r\n this.deputyProjectLeadRemove.emit(userId);\r\n },\r\n e => {\r\n console.log('There has been an error whilst removing a deputy project lead.');\r\n }\r\n );\r\n }\r\n \r\n onValueChanged(data?: any) {\r\n if (!this.deputyProjectLeadForm) { return; }\r\n const form = this.deputyProjectLeadForm;\r\n\r\n for (const field in this.formErrors) {\r\n // clear previous error message (if any)\r\n this.formErrors[field] = '';\r\n const control = form.get(field);\r\n\r\n if (control && control.dirty && !control.valid) {\r\n const messages = this.validationMessages[field];\r\n\r\n for (const key in control.errors) {\r\n this.formErrors[field] += messages[key] + ' ';\r\n }\r\n }\r\n }\r\n }\r\n\r\n formErrors = {\r\n 'fullName': '',\r\n 'logonName': ''\r\n }\r\n\r\n validationMessages = {\r\n 'fullName': {\r\n 'required': 'Full name is required.',\r\n 'maxlength': 'Full name cannot be longer than 150 characters.'\r\n },\r\n 'logonName': {\r\n 'required': 'Email Address is required.',\r\n 'maxlength': 'Email Address cannot be longer than 200 characters.',\r\n 'email': 'Email Address is not valid.'\r\n },\r\n 'jobTitle': {\r\n 'required': 'Job title is required.',\r\n 'maxlength': 'Job title cannot be longer than 150 characters.'\r\n },\r\n 'phoneNo': {\r\n 'required': 'Phone number is required.',\r\n 'maxlength': 'Phone number cannot be longer than 40 characters.'\r\n }\r\n }\r\n}","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
NameJob TitleEmailPhone
{{projectLead?.fullName}}{{projectLead?.jobTitle || '-'}}\\r\\n {{projectLead?.logonName}}\\r\\n {{projectLead?.phoneNo || '-'}}
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Click here to add your own details to the form\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.fullName }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.logonName }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.jobTitle }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.phoneNo }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n

\\r\\n Name, email and job title are required are required before the Project Lead can be saved. Contact number is optional.\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n As this Project Lead already exists within our database, their job title and contact number have been set previously and cannot be edited here. \\r\\n This will need to be done on the My Profile page by the project lead.\\r\\n
\\r\\n
\"","module.exports = \".mr-2 {\\n margin-right: 1em !important; }\\n\\n.dashboard-spinner {\\n margin-top: 25vh; }\\n\\n.dashboard-spinner p {\\n margin-top: 0.75em;\\n font-size: 20px;\\n font-weight: 600; }\\n\\n.panel-group {\\n margin-bottom: 10px; }\\n\\n.nacel-image {\\n width: 100%;\\n margin-bottom: -1em; }\\n\\n.button-margin {\\n margin-bottom: 5px;\\n margin-right: 5px; }\\n\\n.img-title {\\n width: 60%; }\\n\\n.table-button {\\n text-decoration: underline; }\\n\\n.table-button:hover {\\n cursor: pointer; }\\n\\nh4 {\\n font-weight: 600; }\\n\\nh1 {\\n font-weight: 600; }\\n\\nh3 {\\n color: black;\\n margin-top: 0;\\n font-size: 1.5em; }\\n\\n.title-intro {\\n color: #005EB8;\\n font-weight: 600;\\n margin-bottom: 0.5em;\\n margin-top: 0; }\\n\\n.header {\\n margin-top: 5em;\\n margin-bottom: 3em; }\\n\\n.header img {\\n width: 80%; }\\n\\n.header h1 {\\n margin-top: 0.25em; }\\n\\n#containerRegistration {\\n margin-top: -2em;\\n background-color: #F3F3F3;\\n min-height: 70vh;\\n min-height: 70%;\\n padding-bottom: 5em; }\\n\\n#containerRegistration .alert-success,\\n#containerRegistration .alert-danger,\\n#containerRegistration .alert-info {\\n margin: 1.5em 0;\\n font-size: 14px; }\\n\\n#containerRegistration .alert-success .btn-success {\\n display: block;\\n margin-top: 1em; }\\n\\n.vcenter {\\n display: inline-block;\\n vertical-align: middle;\\n float: none; }\\n\\n.registration-section {\\n margin-top: 2em;\\n background-color: white;\\n padding: 2em;\\n border-radius: 4px;\\n border: 1px solid #ccc; }\\n\\n.registration-action {\\n margin-top: 2em; }\\n\\n.btn-later {\\n margin-left: 10px; }\\n\\n.explainer {\\n margin-top: 1em; }\\n\\n.btn-promise span {\\n opacity: 0;\\n margin-left: -18px; }\\n\\n.btn-promise.is-loading span {\\n opacity: 1;\\n margin-left: 5px; }\\n\\n.height-fix {\\n min-height: 40vh; }\\n\\n.no-reg {\\n margin-top: 30vh; }\\n\\n.no-reg h2,\\n.no-reg p {\\n margin-bottom: 1em; }\\n\\n.hint {\\n background-color: #AE2573;\\n color: white;\\n margin: 1em 0;\\n padding: 0.5em 1em;\\n font-weight: 500; }\\n\\n.hint i {\\n margin-right: 0.5em; }\\n\\n.hint.-link:hover {\\n background-color: #7C2855;\\n cursor: pointer; }\\n\\n.highlight {\\n color: #005EB8;\\n font-weight: 600;\\n margin-top: 0.5em; }\\n\\n.downloads .btn {\\n margin-bottom: 0.5em; }\\n\\n.modal-body div {\\n margin-bottom: 0.5em; }\\n\\n.modal-body div .btn {\\n margin-top: 0.5em;\\n margin-right: 0.5em; }\\n\\n.table {\\n margin-bottom: 0.5em; }\\n\\n.guidance {\\n color: #005EB8; }\\n\\n.guidance:hover {\\n cursor: pointer; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHJvamVjdC1yZWdpc3RyYXRpb24vcHItcHJvamVjdC1sZWFkL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxhcHBcXHByb2plY3QtcmVnaXN0cmF0aW9uXFxwcm9qZWN0LXJlZ2lzdHJhdGlvbi5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvcHJvamVjdC1yZWdpc3RyYXRpb24vcHItcHJvamVjdC1sZWFkL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxfdmFyaWFibGVzLnNjc3MiLCJzcmMvYXBwL3Byb2plY3QtcmVnaXN0cmF0aW9uL3ByLXByb2plY3QtbGVhZC9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxwcm9qZWN0LXJlZ2lzdHJhdGlvblxccHItcHJvamVjdC1sZWFkXFxwci1wcm9qZWN0LWxlYWQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSw0QkFBNEIsRUFBQTs7QUFHaEM7RUFDSSxnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxrQkFBa0I7RUFDbEIsZUFBZTtFQUNmLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLG1CQUFtQixFQUFBOztBQUd2QjtFQUNJLFdBQVc7RUFDWCxtQkFBbUIsRUFBQTs7QUFHdkI7RUFDSSxrQkFBa0I7RUFDbEIsaUJBQWlCLEVBQUE7O0FBR3JCO0VBQ0ksVUFBVSxFQUFBOztBQUdkO0VBQ0ksMEJBQTBCLEVBQUE7O0FBRzlCO0VBQ0ksZUFBZSxFQUFBOztBQUduQjtFQUNJLGdCQUFnQixFQUFBOztBQUtwQjtFQUNJLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLFlBQVk7RUFDWixhQUFhO0VBQ2IsZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksY0N4RGM7RUR5RGQsZ0JBQWdCO0VBQ2hCLG9CQUFvQjtFQUNwQixhQUFhLEVBQUE7O0FBR2pCO0VBQ0ksZUFBZTtFQUNmLGtCQUFrQixFQUFBOztBQUd0QjtFQUNJLFVBQVUsRUFBQTs7QUFHZDtFQUNJLGtCQUFrQixFQUFBOztBQUd0QjtFQUNJLGdCQUFnQjtFQUNoQix5QkFBeUI7RUFDekIsZ0JBQWdCO0VBQ2hCLGVBQWU7RUFDZixtQkFBbUIsRUFBQTs7QUFHdkI7OztFQUlJLGVBQWU7RUFDZixlQUFlLEVBQUE7O0FBR25CO0VBQ0ksY0FBYztFQUNkLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxxQkFBcUI7RUFDckIsc0JBQXNCO0VBQ3RCLFdBQVcsRUFBQTs7QUFHZjtFQUNJLGVBQWU7RUFDZix1QkFBdUI7RUFDdkIsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixzQkFBc0IsRUFBQTs7QUFHMUI7RUFDSSxlQUFlLEVBQUE7O0FBR25CO0VBQ0ksaUJBQWlCLEVBQUE7O0FBR3JCO0VBQ0ksZUFBZSxFQUFBOztBQUduQjtFQUNJLFVBQVU7RUFDVixrQkFBa0IsRUFBQTs7QUFHdEI7RUFDSSxVQUFVO0VBQ1YsZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksZ0JBQWdCLEVBQUE7O0FBR3BCOztFQUVJLGtCQUFrQixFQUFBOztBQUt0QjtFQUNJLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1osYUFBYTtFQUNiLGtCQUFrQjtFQUNsQixnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxtQkFBbUIsRUFBQTs7QUFHdkI7RUFDSSx5QkFBeUI7RUFDekIsZUFBZSxFQUFBOztBQUduQjtFQUNJLGNDcktjO0VEc0tkLGdCQUFnQjtFQUNoQixpQkFBaUIsRUFBQTs7QUFHckI7RUFDSSxvQkFBb0IsRUFBQTs7QUFHeEI7RUFDSSxvQkFBb0IsRUFBQTs7QUFHeEI7RUFDSSxpQkFBaUI7RUFDakIsbUJBQW1CLEVBQUE7O0FFckx2QjtFQUNJLG9CQUFvQixFQUFBOztBQUd4QjtFQUNJLGNESmMsRUFBQTs7QUNPbEI7RUFDSSxlQUFlLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9wcm9qZWN0LXJlZ2lzdHJhdGlvbi9wci1wcm9qZWN0LWxlYWQvcHItcHJvamVjdC1sZWFkLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vdmFyaWFibGVzJztcclxuXHJcbi5tci0yIHtcclxuICAgIG1hcmdpbi1yaWdodDogMWVtICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5kYXNoYm9hcmQtc3Bpbm5lciB7XHJcbiAgICBtYXJnaW4tdG9wOiAyNXZoO1xyXG59XHJcblxyXG4uZGFzaGJvYXJkLXNwaW5uZXIgcCB7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjc1ZW07XHJcbiAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG59XHJcblxyXG4ucGFuZWwtZ3JvdXAge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxufVxyXG5cclxuLm5hY2VsLWltYWdlIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogLTFlbTtcclxufVxyXG5cclxuLmJ1dHRvbi1tYXJnaW4ge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbn1cclxuXHJcbi5pbWctdGl0bGUge1xyXG4gICAgd2lkdGg6IDYwJTtcclxufVxyXG5cclxuLnRhYmxlLWJ1dHRvbiB7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgICBcclxufVxyXG5cclxuLnRhYmxlLWJ1dHRvbjpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbmg0IHtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi8vIE5ldyBzdHlsZXNcclxuXHJcbmgxIHtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbmgzIHtcclxuICAgIGNvbG9yOiBibGFjaztcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICBmb250LXNpemU6IDEuNWVtO1xyXG59XHJcblxyXG4udGl0bGUtaW50cm8ge1xyXG4gICAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbn1cclxuXHJcbi5oZWFkZXIge1xyXG4gICAgbWFyZ2luLXRvcDogNWVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogM2VtO1xyXG59XHJcblxyXG4uaGVhZGVyIGltZyB7XHJcbiAgICB3aWR0aDogODAlO1xyXG59XHJcblxyXG4uaGVhZGVyIGgxIHtcclxuICAgIG1hcmdpbi10b3A6IDAuMjVlbTtcclxufVxyXG5cclxuI2NvbnRhaW5lclJlZ2lzdHJhdGlvbiB7XHJcbiAgICBtYXJnaW4tdG9wOiAtMmVtO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjNGMztcclxuICAgIG1pbi1oZWlnaHQ6IDcwdmg7XHJcbiAgICBtaW4taGVpZ2h0OiA3MCU7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogNWVtO1xyXG59XHJcblxyXG4jY29udGFpbmVyUmVnaXN0cmF0aW9uIC5hbGVydC1zdWNjZXNzLFxyXG4jY29udGFpbmVyUmVnaXN0cmF0aW9uIC5hbGVydC1kYW5nZXIsXHJcbiNjb250YWluZXJSZWdpc3RyYXRpb24gLmFsZXJ0LWluZm9cclxuIHtcclxuICAgIG1hcmdpbjogMS41ZW0gMDtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxufVxyXG5cclxuI2NvbnRhaW5lclJlZ2lzdHJhdGlvbiAuYWxlcnQtc3VjY2VzcyAuYnRuLXN1Y2Nlc3Mge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBtYXJnaW4tdG9wOiAxZW07XHJcbn1cclxuXHJcbi52Y2VudGVyIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICBmbG9hdDogbm9uZTtcclxufVxyXG5cclxuLnJlZ2lzdHJhdGlvbi1zZWN0aW9uIHtcclxuICAgIG1hcmdpbi10b3A6IDJlbTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgcGFkZGluZzogMmVtO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxufVxyXG5cclxuLnJlZ2lzdHJhdGlvbi1hY3Rpb24ge1xyXG4gICAgbWFyZ2luLXRvcDogMmVtO1xyXG59XHJcblxyXG4uYnRuLWxhdGVyIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG59XHJcblxyXG4uZXhwbGFpbmVyIHtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxufVxyXG5cclxuLmJ0bi1wcm9taXNlIHNwYW4ge1xyXG4gICAgb3BhY2l0eTogMDtcclxuICAgIG1hcmdpbi1sZWZ0OiAtMThweDtcclxufVxyXG5cclxuLmJ0bi1wcm9taXNlLmlzLWxvYWRpbmcgc3BhbiB7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcclxufVxyXG5cclxuLmhlaWdodC1maXgge1xyXG4gICAgbWluLWhlaWdodDogNDB2aDtcclxufVxyXG5cclxuLm5vLXJlZyB7XHJcbiAgICBtYXJnaW4tdG9wOiAzMHZoO1xyXG59XHJcblxyXG4ubm8tcmVnIGgyLFxyXG4ubm8tcmVnIHAge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xyXG59XHJcblxyXG4vLyAyMDIwIEFkZGl0aW9uc1xyXG5cclxuLmhpbnQge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0FFMjU3MztcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIG1hcmdpbjogMWVtIDA7XHJcbiAgICBwYWRkaW5nOiAwLjVlbSAxZW07XHJcbiAgICBmb250LXdlaWdodDogNTAwO1xyXG59XHJcblxyXG4uaGludCBpIHtcclxuICAgIG1hcmdpbi1yaWdodDogMC41ZW07XHJcbn1cclxuXHJcbi5oaW50Li1saW5rOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICM3QzI4NTU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5oaWdobGlnaHQge1xyXG4gICAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjVlbTtcclxufVxyXG5cclxuLmRvd25sb2FkcyAuYnRuIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG59XHJcblxyXG4ubW9kYWwtYm9keSBkaXYge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XHJcbn1cclxuXHJcbi5tb2RhbC1ib2R5IGRpdiAuYnRuIHtcclxuICAgIG1hcmdpbi10b3A6IDAuNWVtO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufSIsIiRpY29uLWZvbnQtcGF0aDogJy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAtc2Fzcy9hc3NldHMvZm9udHMvYm9vdHN0cmFwLyc7XHJcblxyXG4vLyBDdXN0b20gdmFyaWFibGVzXHJcbiRuaHMtYmx1ZTogIzAwNUVCODtcclxuJG5ocy1kYXJrLWJsdWU6ICMwMDQ0ODU7XHJcbiRuaHMtZ3JleTogIzc2ODY5MjtcclxuJG5ocy1mYWRlZC1ibHVlOiAjRjJGN0ZCO1xyXG4kYWN0aXZlLWFkbWluLXllbGxvdzogI0ZEQkMzMDtcclxuJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93OiAjRTU5OTAwO1xyXG4gXHJcbi8vIEJvb3RzdHJhcCB2YXJpYWJsZXNcclxuJHRleHQtY29sb3I6IGJsYWNrO1xyXG4kYm9yZGVyLXJhZGl1cy1iYXNlOiAwO1xyXG4kYm9yZGVyLXJhZGl1cy1zbWFsbDogMDtcclxuJGJyYW5kLXByaW1hcnk6ICRuaHMtYmx1ZTtcclxuJGJyYW5kLXN1Y2Nlc3M6IGdyZWVuO1xyXG4kbGluay1ob3Zlci1kZWNvcmF0aW9uOiBub25lO1xyXG4kZm9udC1zaXplLWg0OiAxN3B4O1xyXG4kbmF2YmFyLW1hcmdpbi1ib3R0b206IDA7XHJcbiRuYXZiYXItaGVpZ2h0OiA2MHB4O1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtYmc6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWJvcmRlci1jb2xvcjogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaWNvbi1iYXItYmc6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOiB3aGl0ZTtcclxuXHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc6ICRuaHMtYmx1ZTtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1jb2xvcjogd2hpdGU7XHJcbiRuYXYtcGlsbHMtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJHRhYmxlLWJnLWhvdmVyOiAkbmhzLWZhZGVkLWJsdWU7XHJcbiRoZWFkaW5ncy1zbWFsbC1jb2xvcjogJG5ocy1ncmV5OyIsIkBpbXBvcnQgJy4uL3Byb2plY3QtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5zY3NzJztcclxuXHJcbi50YWJsZSB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxufVxyXG5cclxuLmd1aWRhbmNlIHtcclxuICAgIGNvbG9yOiAkbmhzLWJsdWU7XHJcbn1cclxuXHJcbi5ndWlkYW5jZTpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn0iXX0= */\"","import { Component, OnChanges, Input, Output, EventEmitter } from '@angular/core';\r\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { IcsService } from 'app/utilities/services/ics.service';\r\nimport { MemberService } from '../../utilities/services/member.service';\r\n\r\n@Component({\r\n selector: 'app-pr-project-lead',\r\n templateUrl: './pr-project-lead.component.html',\r\n styleUrls: ['./pr-project-lead.component.scss']\r\n})\r\nexport class PrProjectLeadComponent implements OnChanges {\r\n @Input() registration;\r\n @Input() projectBasicDetails;\r\n @Input() projectId;\r\n @Input() icsProject;\r\n @Output() projectLeadAdd: EventEmitter = new EventEmitter();\r\n @Output() submissionAdd: EventEmitter = new EventEmitter();\r\n @Output() organisationError: EventEmitter = new EventEmitter();\r\n guidance: boolean = false;\r\n\r\n projectLead; projectLeadForm: FormGroup; \r\n updateProjectLead: boolean = false; showProjectLeadForm: boolean = false; showProjectLeadFormAdd: boolean = true; projectLeadExists: boolean = false;\r\n organisationTypeOther: string;\r\n\r\n constructor(\r\n private memberService: MemberService, \r\n private fb: FormBuilder, \r\n private toastr: ToastrService,\r\n private icsService: IcsService\r\n ) {}\r\n\r\n ngOnChanges() {\r\n this.organisationTypeOther = this.projectBasicDetails.organisationTypeOther;\r\n if (this.registration) {\r\n //New projectlead\r\n if (this.registration.registration.projectLead) {\r\n this.projectLead = this.registration.registration.projectLead.projectLeadList[0];\r\n }\r\n //Existing projectlead\r\n else {\r\n this.projectLead = this.registration;\r\n }\r\n }\r\n }\r\n\r\n projectLeadFormAdd() {\r\n this.buildProjectLeadForm();\r\n\r\n this.showProjectLeadForm = true; \r\n this.showProjectLeadFormAdd = false; \r\n }\r\n\r\n getUserDetails() {\r\n this.memberService.User().subscribe(\r\n u => { \r\n let user = u.data;\r\n this.projectLeadFormAdd();\r\n this.projectLeadForm.controls['fullName'].setValue(user.fullName);\r\n this.projectLeadForm.controls['logonName'].setValue(user.logonName);\r\n this.projectLeadForm.controls['phoneNo'].setValue(user.phoneNo);\r\n this.projectLeadForm.controls['jobTitle'].setValue(user.jobTitle);\r\n }\r\n )\r\n };\r\n\r\n projectLeadFormSubmit() {\r\n this.updateProjectLead = true;\r\n\r\n if (this.registration.registrationId) {\r\n this.addProjectLead(this.registration.registrationId, this.registration.productId, this.registration.projectId, this.registration.organisationId, this.projectLeadForm.value);\r\n }\r\n else {\r\n this.createNewRegistration(this.registration.productId, this.registration.projectId, this.registration.organisationId, this.projectLeadForm.value);\r\n }\r\n\r\n this.showProjectLeadForm = !this.showProjectLeadForm;\r\n this.showProjectLeadFormAdd = !this.showProjectLeadFormAdd;\r\n }\r\n\r\n createNewRegistration(productId: number, projectId: number, organisationId: number, projectLeadDetails) {\r\n this.memberService.CreateRegistration(projectId, organisationId).subscribe(\r\n r => { \r\n this.addProjectLead(r.data.registrationId, productId, projectId, organisationId, projectLeadDetails);\r\n // Automatically add submission\r\n if (this.registration.projectId !== 8 && this.registration.projectId !== 9) {\r\n this.buildSubmissionData(r.data.registrationId);\r\n } else {\r\n console.log('Offline project: no submission created');\r\n }\r\n },\r\n e => {\r\n console.log('There has been an error whilst registering. Error Code:', e.error.error.errorCode.toString());\r\n this.organisationError.emit(true);\r\n }\r\n )\r\n }\r\n\r\n // Build submission\r\n buildSubmissionData(registrationId: number) {\r\n let submissionData = { \r\n submissionId: undefined, \r\n submissionName: this.projectBasicDetails.organisationName,\r\n peerGroupId: undefined\r\n }\r\n // Auto-assign peer group to NHSI LD 2019\r\n // TODO: Review in 2020, if required\r\n if (this.registration.projectId === 36) {\r\n if (this.organisationTypeOther === 'Specialist') {\r\n submissionData.peerGroupId = 5;\r\n } else {\r\n submissionData.peerGroupId = 7;\r\n }\r\n }\r\n this.addSubmission(registrationId, submissionData);\r\n }\r\n\r\n addSubmission(registrationId: number, submissionData) {\r\n this.memberService.AddSubmission(registrationId, submissionData).subscribe(\r\n r => {\r\n this.submissionAdd.emit(r.data);\r\n\r\n // Add to ICS database, if required\r\n if (this.icsProject) {\r\n\r\n let icsSubmissionData = {\r\n organisationName: this.projectBasicDetails.organisationName,\r\n organisationCode: this.projectBasicDetails.organisationCode,\r\n organisationTypeName: this.projectId == 29 ? 'Community' : this.projectBasicDetails.project.projectCategoryName,\r\n externalOrganisationId: this.registration.organisationId,\r\n submissionList: [{\r\n submissionName: r.data.submissionName,\r\n submissionCode: this.projectBasicDetails.organisationCode + '-1',\r\n externalSubmissionId: r.data.submissionId\r\n }]\r\n }\r\n\r\n this.addIcsSubmission(icsSubmissionData);\r\n }\r\n },\r\n e => {\r\n console.log('There has been an error whilst trying to add a submission');\r\n }\r\n );\r\n }\r\n\r\n addIcsSubmission(icsSubmissionData: any) {\r\n this.icsService.addSubmissions(this.projectId, icsSubmissionData).subscribe(\r\n r => {\r\n console.log(r); \r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n );\r\n }\r\n\r\n addProjectLead(registrationId: number, productId: number, projectId: number, organisationId: number, projectLeadDetails) {\r\n this.registration.registrationId = registrationId;\r\n\r\n this.memberService.AddProjectLead(registrationId, productId, projectId, organisationId, projectLeadDetails).subscribe(\r\n r => {\r\n let projectLeadAddDetails = {\r\n projectLeadForm: projectLeadDetails,\r\n registrationId: registrationId,\r\n productId: productId,\r\n projectId: projectId,\r\n organisationId: organisationId\r\n };\r\n\r\n this.projectLeadAdd.emit(projectLeadAddDetails);\r\n\r\n if (!r.data[0].newUser) {\r\n this.projectLeadExists = true;\r\n }\r\n },\r\n e => {\r\n let errorMessage = '';\r\n\r\n if (e.error.error.message.split(' ').includes(\"disabled!\")) {\r\n errorMessage = \"The person you have added as a Project Lead is currently disabled. Please enable them before continuing.\"\r\n }\r\n else {\r\n errorMessage = 'There has been an error whilst adding ' + projectLeadDetails.logonName + ', please try again or contact the Project Manager.'\r\n }\r\n\r\n this.toastr.error(errorMessage, 'Project Registration');\r\n\r\n console.log(e.error.error.message);\r\n },\r\n () => {\r\n }\r\n )\r\n }\r\n\r\n buildProjectLeadForm() {\r\n this.projectLeadForm = this.fb.group({\r\n logonName: ['', [Validators.required, Validators.maxLength(200), Validators.email]],\r\n fullName: ['', [Validators.required, Validators.maxLength(150)]],\r\n jobTitle: ['', [Validators.required, Validators.maxLength(150)]],\r\n phoneNo: ['', [Validators.maxLength(40)]]\r\n });\r\n\r\n this.projectLeadForm.valueChanges.subscribe(\r\n data => this.onValueChanged(data)\r\n );\r\n\r\n this.onValueChanged();\r\n }\r\n\r\n onValueChanged(data?: any) {\r\n if (!this.projectLeadForm) { return; }\r\n const form = this.projectLeadForm;\r\n\r\n for (const field in this.formErrors) {\r\n // clear previous error message (if any)\r\n this.formErrors[field] = '';\r\n const control = form.get(field);\r\n\r\n if (control && control.dirty && !control.valid) {\r\n const messages = this.validationMessages[field];\r\n\r\n for (const key in control.errors) {\r\n this.formErrors[field] += messages[key] + ' ';\r\n }\r\n }\r\n }\r\n }\r\n\r\n setGuidance() {\r\n this.guidance = !this.guidance; \r\n }\r\n\r\n formErrors = {\r\n 'fullName': '',\r\n 'logonName': '', \r\n 'jobTitle': '',\r\n 'phoneNo': ''\r\n }\r\n\r\n validationMessages = {\r\n 'fullName': {\r\n 'required': 'Full name is required.',\r\n 'maxlength': 'Full name cannot be longer than 150 characters.'\r\n },\r\n 'logonName': {\r\n 'required': 'Email Address is required.',\r\n 'maxlength': 'Email Address cannot be longer than 200 characters.',\r\n 'email': 'Email Address is not valid.'\r\n },\r\n 'jobTitle': {\r\n 'required': 'Job title is required.',\r\n 'maxlength': 'Job title cannot be longer than 150 characters.'\r\n },\r\n 'phoneNo': {\r\n 'required': 'Phone number is required.',\r\n 'maxlength': 'Phone number cannot be longer than 40 characters.'\r\n }\r\n }\r\n}","module.exports = \"
\\r\\n

Submission {{ index }}: {{submission.submissionName}}

\\r\\n\\r\\n
\\r\\n
\\r\\n Specify an emergency department type for this department.\\r\\n
\\r\\n
\\r\\n Add {{ maxServices !== 100 ? (maxServices === 1 ? 'a' : maxServices) : 'at least one' }} {{ serviceTitle.toLowerCase() }} for this submission.\\r\\n
\\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{ serviceTitle }}{{ serviceTitle }} Lead
{{s.serviceItemName}}\\r\\n \\r\\n
0; then serviceLead else noServiceLead\\\">
\\r\\n \\r\\n {{s.serviceLeadList[0].fullName}} \\r\\n \\r\\n \\r\\n \\r\\n - \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
0 || submission.peerGroupMembershipCount > 0 || submission.submissionCaseCodeCount > 0 || submission.submissionCodeCount > 0; then cannotRemove else canRemove\\\">
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
0\\\">\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{ formErrors.serviceItemId }}\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{ formErrors.fullName }}\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{ formErrors.logonName }}\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","module.exports = \".mr-2 {\\n margin-right: 1em !important; }\\n\\n.dashboard-spinner {\\n margin-top: 25vh; }\\n\\n.dashboard-spinner p {\\n margin-top: 0.75em;\\n font-size: 20px;\\n font-weight: 600; }\\n\\n.panel-group {\\n margin-bottom: 10px; }\\n\\n.nacel-image {\\n width: 100%;\\n margin-bottom: -1em; }\\n\\n.button-margin {\\n margin-bottom: 5px;\\n margin-right: 5px; }\\n\\n.img-title {\\n width: 60%; }\\n\\n.table-button {\\n text-decoration: underline; }\\n\\n.table-button:hover {\\n cursor: pointer; }\\n\\nh4 {\\n font-weight: 600; }\\n\\nh1 {\\n font-weight: 600; }\\n\\nh3 {\\n color: black;\\n margin-top: 0;\\n font-size: 1.5em; }\\n\\n.title-intro {\\n color: #005EB8;\\n font-weight: 600;\\n margin-bottom: 0.5em;\\n margin-top: 0; }\\n\\n.header {\\n margin-top: 5em;\\n margin-bottom: 3em; }\\n\\n.header img {\\n width: 80%; }\\n\\n.header h1 {\\n margin-top: 0.25em; }\\n\\n#containerRegistration {\\n margin-top: -2em;\\n background-color: #F3F3F3;\\n min-height: 70vh;\\n min-height: 70%;\\n padding-bottom: 5em; }\\n\\n#containerRegistration .alert-success,\\n#containerRegistration .alert-danger,\\n#containerRegistration .alert-info {\\n margin: 1.5em 0;\\n font-size: 14px; }\\n\\n#containerRegistration .alert-success .btn-success {\\n display: block;\\n margin-top: 1em; }\\n\\n.vcenter {\\n display: inline-block;\\n vertical-align: middle;\\n float: none; }\\n\\n.registration-section {\\n margin-top: 2em;\\n background-color: white;\\n padding: 2em;\\n border-radius: 4px;\\n border: 1px solid #ccc; }\\n\\n.registration-action {\\n margin-top: 2em; }\\n\\n.btn-later {\\n margin-left: 10px; }\\n\\n.explainer {\\n margin-top: 1em; }\\n\\n.btn-promise span {\\n opacity: 0;\\n margin-left: -18px; }\\n\\n.btn-promise.is-loading span {\\n opacity: 1;\\n margin-left: 5px; }\\n\\n.height-fix {\\n min-height: 40vh; }\\n\\n.no-reg {\\n margin-top: 30vh; }\\n\\n.no-reg h2,\\n.no-reg p {\\n margin-bottom: 1em; }\\n\\n.hint {\\n background-color: #AE2573;\\n color: white;\\n margin: 1em 0;\\n padding: 0.5em 1em;\\n font-weight: 500; }\\n\\n.hint i {\\n margin-right: 0.5em; }\\n\\n.hint.-link:hover {\\n background-color: #7C2855;\\n cursor: pointer; }\\n\\n.highlight {\\n color: #005EB8;\\n font-weight: 600;\\n margin-top: 0.5em; }\\n\\n.downloads .btn {\\n margin-bottom: 0.5em; }\\n\\n.modal-body div {\\n margin-bottom: 0.5em; }\\n\\n.modal-body div .btn {\\n margin-top: 0.5em;\\n margin-right: 0.5em; }\\n\\n.service-container {\\n border: 2px solid #DDDDDD;\\n margin-top: 1em;\\n border-radius: 4px; }\\n\\n.service-container h4 {\\n margin-top: 0;\\n margin-bottom: 0;\\n background-color: #DDDDDD;\\n padding: 0.5em 1em; }\\n\\n.service {\\n padding: 1em; }\\n\\n.table {\\n margin-bottom: 0.5em; }\\n\\n.btn-halt {\\n color: gray; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHJvamVjdC1yZWdpc3RyYXRpb24vcHItc2VydmljZS9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxwcm9qZWN0LXJlZ2lzdHJhdGlvblxccHJvamVjdC1yZWdpc3RyYXRpb24uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3Byb2plY3QtcmVnaXN0cmF0aW9uL3ByLXNlcnZpY2UvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyIsInNyYy9hcHAvcHJvamVjdC1yZWdpc3RyYXRpb24vcHItc2VydmljZS9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxwcm9qZWN0LXJlZ2lzdHJhdGlvblxccHItc2VydmljZVxccHItc2VydmljZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNJLDRCQUE0QixFQUFBOztBQUdoQztFQUNJLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksbUJBQW1CLEVBQUE7O0FBR3ZCO0VBQ0ksV0FBVztFQUNYLG1CQUFtQixFQUFBOztBQUd2QjtFQUNJLGtCQUFrQjtFQUNsQixpQkFBaUIsRUFBQTs7QUFHckI7RUFDSSxVQUFVLEVBQUE7O0FBR2Q7RUFDSSwwQkFBMEIsRUFBQTs7QUFHOUI7RUFDSSxlQUFlLEVBQUE7O0FBR25CO0VBQ0ksZ0JBQWdCLEVBQUE7O0FBS3BCO0VBQ0ksZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksWUFBWTtFQUNaLGFBQWE7RUFDYixnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxjQ3hEYztFRHlEZCxnQkFBZ0I7RUFDaEIsb0JBQW9CO0VBQ3BCLGFBQWEsRUFBQTs7QUFHakI7RUFDSSxlQUFlO0VBQ2Ysa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksVUFBVSxFQUFBOztBQUdkO0VBQ0ksa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksZ0JBQWdCO0VBQ2hCLHlCQUF5QjtFQUN6QixnQkFBZ0I7RUFDaEIsZUFBZTtFQUNmLG1CQUFtQixFQUFBOztBQUd2Qjs7O0VBSUksZUFBZTtFQUNmLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxjQUFjO0VBQ2QsZUFBZSxFQUFBOztBQUduQjtFQUNJLHFCQUFxQjtFQUNyQixzQkFBc0I7RUFDdEIsV0FBVyxFQUFBOztBQUdmO0VBQ0ksZUFBZTtFQUNmLHVCQUF1QjtFQUN2QixZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLHNCQUFzQixFQUFBOztBQUcxQjtFQUNJLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxpQkFBaUIsRUFBQTs7QUFHckI7RUFDSSxlQUFlLEVBQUE7O0FBR25CO0VBQ0ksVUFBVTtFQUNWLGtCQUFrQixFQUFBOztBQUd0QjtFQUNJLFVBQVU7RUFDVixnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxnQkFBZ0IsRUFBQTs7QUFHcEI7O0VBRUksa0JBQWtCLEVBQUE7O0FBS3RCO0VBQ0kseUJBQXlCO0VBQ3pCLFlBQVk7RUFDWixhQUFhO0VBQ2Isa0JBQWtCO0VBQ2xCLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLG1CQUFtQixFQUFBOztBQUd2QjtFQUNJLHlCQUF5QjtFQUN6QixlQUFlLEVBQUE7O0FBR25CO0VBQ0ksY0NyS2M7RURzS2QsZ0JBQWdCO0VBQ2hCLGlCQUFpQixFQUFBOztBQUdyQjtFQUNJLG9CQUFvQixFQUFBOztBQUd4QjtFQUNJLG9CQUFvQixFQUFBOztBQUd4QjtFQUNJLGlCQUFpQjtFQUNqQixtQkFBbUIsRUFBQTs7QUVyTHZCO0VBQ0kseUJBQXlCO0VBQ3pCLGVBQWU7RUFDZixrQkFBa0IsRUFBQTs7QUFHdEI7RUFDSSxhQUFhO0VBQ2IsZ0JBQWdCO0VBQ2hCLHlCQUF5QjtFQUN6QixrQkFBa0IsRUFBQTs7QUFHdEI7RUFDSSxZQUFZLEVBQUE7O0FBR2hCO0VBQ0ksb0JBQW9CLEVBQUE7O0FBR3hCO0VBQ0ksV0FBVyxFQUFBIiwiZmlsZSI6InNyYy9hcHAvcHJvamVjdC1yZWdpc3RyYXRpb24vcHItc2VydmljZS9wci1zZXJ2aWNlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vdmFyaWFibGVzJztcclxuXHJcbi5tci0yIHtcclxuICAgIG1hcmdpbi1yaWdodDogMWVtICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5kYXNoYm9hcmQtc3Bpbm5lciB7XHJcbiAgICBtYXJnaW4tdG9wOiAyNXZoO1xyXG59XHJcblxyXG4uZGFzaGJvYXJkLXNwaW5uZXIgcCB7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjc1ZW07XHJcbiAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG59XHJcblxyXG4ucGFuZWwtZ3JvdXAge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxufVxyXG5cclxuLm5hY2VsLWltYWdlIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogLTFlbTtcclxufVxyXG5cclxuLmJ1dHRvbi1tYXJnaW4ge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbn1cclxuXHJcbi5pbWctdGl0bGUge1xyXG4gICAgd2lkdGg6IDYwJTtcclxufVxyXG5cclxuLnRhYmxlLWJ1dHRvbiB7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgICBcclxufVxyXG5cclxuLnRhYmxlLWJ1dHRvbjpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbmg0IHtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi8vIE5ldyBzdHlsZXNcclxuXHJcbmgxIHtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbmgzIHtcclxuICAgIGNvbG9yOiBibGFjaztcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICBmb250LXNpemU6IDEuNWVtO1xyXG59XHJcblxyXG4udGl0bGUtaW50cm8ge1xyXG4gICAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbn1cclxuXHJcbi5oZWFkZXIge1xyXG4gICAgbWFyZ2luLXRvcDogNWVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogM2VtO1xyXG59XHJcblxyXG4uaGVhZGVyIGltZyB7XHJcbiAgICB3aWR0aDogODAlO1xyXG59XHJcblxyXG4uaGVhZGVyIGgxIHtcclxuICAgIG1hcmdpbi10b3A6IDAuMjVlbTtcclxufVxyXG5cclxuI2NvbnRhaW5lclJlZ2lzdHJhdGlvbiB7XHJcbiAgICBtYXJnaW4tdG9wOiAtMmVtO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjNGMztcclxuICAgIG1pbi1oZWlnaHQ6IDcwdmg7XHJcbiAgICBtaW4taGVpZ2h0OiA3MCU7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogNWVtO1xyXG59XHJcblxyXG4jY29udGFpbmVyUmVnaXN0cmF0aW9uIC5hbGVydC1zdWNjZXNzLFxyXG4jY29udGFpbmVyUmVnaXN0cmF0aW9uIC5hbGVydC1kYW5nZXIsXHJcbiNjb250YWluZXJSZWdpc3RyYXRpb24gLmFsZXJ0LWluZm9cclxuIHtcclxuICAgIG1hcmdpbjogMS41ZW0gMDtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxufVxyXG5cclxuI2NvbnRhaW5lclJlZ2lzdHJhdGlvbiAuYWxlcnQtc3VjY2VzcyAuYnRuLXN1Y2Nlc3Mge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBtYXJnaW4tdG9wOiAxZW07XHJcbn1cclxuXHJcbi52Y2VudGVyIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICBmbG9hdDogbm9uZTtcclxufVxyXG5cclxuLnJlZ2lzdHJhdGlvbi1zZWN0aW9uIHtcclxuICAgIG1hcmdpbi10b3A6IDJlbTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgcGFkZGluZzogMmVtO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxufVxyXG5cclxuLnJlZ2lzdHJhdGlvbi1hY3Rpb24ge1xyXG4gICAgbWFyZ2luLXRvcDogMmVtO1xyXG59XHJcblxyXG4uYnRuLWxhdGVyIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG59XHJcblxyXG4uZXhwbGFpbmVyIHtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxufVxyXG5cclxuLmJ0bi1wcm9taXNlIHNwYW4ge1xyXG4gICAgb3BhY2l0eTogMDtcclxuICAgIG1hcmdpbi1sZWZ0OiAtMThweDtcclxufVxyXG5cclxuLmJ0bi1wcm9taXNlLmlzLWxvYWRpbmcgc3BhbiB7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcclxufVxyXG5cclxuLmhlaWdodC1maXgge1xyXG4gICAgbWluLWhlaWdodDogNDB2aDtcclxufVxyXG5cclxuLm5vLXJlZyB7XHJcbiAgICBtYXJnaW4tdG9wOiAzMHZoO1xyXG59XHJcblxyXG4ubm8tcmVnIGgyLFxyXG4ubm8tcmVnIHAge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xyXG59XHJcblxyXG4vLyAyMDIwIEFkZGl0aW9uc1xyXG5cclxuLmhpbnQge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0FFMjU3MztcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIG1hcmdpbjogMWVtIDA7XHJcbiAgICBwYWRkaW5nOiAwLjVlbSAxZW07XHJcbiAgICBmb250LXdlaWdodDogNTAwO1xyXG59XHJcblxyXG4uaGludCBpIHtcclxuICAgIG1hcmdpbi1yaWdodDogMC41ZW07XHJcbn1cclxuXHJcbi5oaW50Li1saW5rOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICM3QzI4NTU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5oaWdobGlnaHQge1xyXG4gICAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjVlbTtcclxufVxyXG5cclxuLmRvd25sb2FkcyAuYnRuIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG59XHJcblxyXG4ubW9kYWwtYm9keSBkaXYge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XHJcbn1cclxuXHJcbi5tb2RhbC1ib2R5IGRpdiAuYnRuIHtcclxuICAgIG1hcmdpbi10b3A6IDAuNWVtO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufSIsIiRpY29uLWZvbnQtcGF0aDogJy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAtc2Fzcy9hc3NldHMvZm9udHMvYm9vdHN0cmFwLyc7XHJcblxyXG4vLyBDdXN0b20gdmFyaWFibGVzXHJcbiRuaHMtYmx1ZTogIzAwNUVCODtcclxuJG5ocy1kYXJrLWJsdWU6ICMwMDQ0ODU7XHJcbiRuaHMtZ3JleTogIzc2ODY5MjtcclxuJG5ocy1mYWRlZC1ibHVlOiAjRjJGN0ZCO1xyXG4kYWN0aXZlLWFkbWluLXllbGxvdzogI0ZEQkMzMDtcclxuJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93OiAjRTU5OTAwO1xyXG4gXHJcbi8vIEJvb3RzdHJhcCB2YXJpYWJsZXNcclxuJHRleHQtY29sb3I6IGJsYWNrO1xyXG4kYm9yZGVyLXJhZGl1cy1iYXNlOiAwO1xyXG4kYm9yZGVyLXJhZGl1cy1zbWFsbDogMDtcclxuJGJyYW5kLXByaW1hcnk6ICRuaHMtYmx1ZTtcclxuJGJyYW5kLXN1Y2Nlc3M6IGdyZWVuO1xyXG4kbGluay1ob3Zlci1kZWNvcmF0aW9uOiBub25lO1xyXG4kZm9udC1zaXplLWg0OiAxN3B4O1xyXG4kbmF2YmFyLW1hcmdpbi1ib3R0b206IDA7XHJcbiRuYXZiYXItaGVpZ2h0OiA2MHB4O1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtYmc6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWJvcmRlci1jb2xvcjogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaWNvbi1iYXItYmc6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOiB3aGl0ZTtcclxuXHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc6ICRuaHMtYmx1ZTtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1jb2xvcjogd2hpdGU7XHJcbiRuYXYtcGlsbHMtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJHRhYmxlLWJnLWhvdmVyOiAkbmhzLWZhZGVkLWJsdWU7XHJcbiRoZWFkaW5ncy1zbWFsbC1jb2xvcjogJG5ocy1ncmV5OyIsIkBpbXBvcnQgJy4uL3Byb2plY3QtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5zY3NzJztcclxuXHJcbi5zZXJ2aWNlLWNvbnRhaW5lciB7XHJcbiAgICBib3JkZXI6IDJweCBzb2xpZCAjREREREREO1xyXG4gICAgbWFyZ2luLXRvcDogMWVtO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG59XHJcblxyXG4uc2VydmljZS1jb250YWluZXIgaDQge1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjREREREREO1xyXG4gICAgcGFkZGluZzogMC41ZW0gMWVtO1xyXG59XHJcblxyXG4uc2VydmljZSB7XHJcbiAgICBwYWRkaW5nOiAxZW07XHJcbn1cclxuXHJcbi50YWJsZSB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxufVxyXG5cclxuLmJ0bi1oYWx0IHtcclxuICAgIGNvbG9yOiBncmF5O1xyXG59Il19 */\"","import { Component, OnChanges, Input, Output, EventEmitter } from '@angular/core';\r\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\r\n\r\nimport { MemberService } from '../../utilities/services/member.service';\r\n\r\n@Component({\r\n selector: 'app-pr-service',\r\n templateUrl: './pr-service.component.html',\r\n styleUrls: ['./pr-service.component.scss']\r\n})\r\nexport class PrServiceComponent implements OnChanges {\r\n @Input() projectId;\r\n @Input() registrationId;\r\n @Input() registration;\r\n @Input() submission;\r\n @Input() services;\r\n @Input() maxServices;\r\n @Input() index;\r\n @Input() serviceTitle;\r\n @Output() serviceAdd: EventEmitter = new EventEmitter();\r\n @Output() serviceDelete: EventEmitter = new EventEmitter();\r\n @Output() serviceLeadAdd: EventEmitter = new EventEmitter();\r\n @Output() serviceLeadDelete: EventEmitter = new EventEmitter();\r\n \r\n currentSubmissionId: number; currentServiceItemId: number; currentServices = [];\r\n\r\n serviceForm: FormGroup; serviceLeadForm: FormGroup; \r\n showServiceForm: boolean = false; showServiceFormAdd: boolean = true;\r\n\r\n showServiceLeadForm: boolean = false;\r\n \r\n constructor(private memberService: MemberService, private fb: FormBuilder) {\r\n }\r\n\r\n ngOnChanges() {}\r\n\r\n serviceFormAdd(submissionId: number) {\r\n this.currentServices = [];\r\n this.currentSubmissionId = submissionId;\r\n this.showServiceFormAdd = false;\r\n \r\n this.services.forEach(element => {\r\n if (this.submission.services.findIndex(s => s.serviceItemId == element.serviceItemId) == -1) {\r\n this.currentServices.push(element);\r\n }\r\n });\r\n \r\n this.buildServiceForm();\r\n }\r\n\r\n serviceFormSubmit() {\r\n this.addService(this.registrationId, this.currentSubmissionId, this.serviceForm.value);\r\n\r\n this.showServiceForm = false;\r\n this.showServiceFormAdd = true;\r\n }\r\n\r\n addService(registrationId, submissionId, serviceItem) {\r\n this.memberService.AddService(registrationId, submissionId, serviceItem).subscribe(\r\n s => {\r\n let newService = { \r\n submissionId: submissionId, \r\n serviceItemId: serviceItem.serviceItemId, \r\n serviceItemName: this.services.filter(s => s.serviceItemId == serviceItem.serviceItemId)[0].serviceItemName\r\n };\r\n\r\n this.serviceAdd.emit(newService);\r\n }\r\n );\r\n }\r\n\r\n serviceFormRemove(submissionId: number, serviceItemId: number) {\r\n if (confirm(\"Are you sure you want to remove this service?\")) {\r\n this.removeService(this.registrationId, submissionId, serviceItemId);\r\n }\r\n }\r\n\r\n removeService(registrationId, submissionId, serviceItemId) {\r\n this.memberService.RemoveService(registrationId, submissionId, serviceItemId).subscribe(\r\n s => {\r\n let deleteService = { \r\n submissionId: submissionId,\r\n serviceItemId: serviceItemId\r\n };\r\n\r\n this.serviceDelete.emit(deleteService);\r\n }\r\n );\r\n }\r\n\r\n serviceUpdateLeadAdd(submissionId: number, serviceItemId: number) {\r\n this.currentSubmissionId = submissionId;\r\n this.currentServiceItemId = serviceItemId;\r\n \r\n this.buildServiceLeadForm();\r\n\r\n this.showServiceLeadForm = true;\r\n }\r\n\r\n serviceUpdateLeadRemove(submissionId: number, serviceItemId: number) {\r\n if (confirm(\"Are you sure you want to remove this Service Lead?\")) {\r\n this.removeServiceLead(this.registrationId, submissionId, serviceItemId);\r\n }\r\n }\r\n\r\n serviceLeadFormSubmit() {\r\n let serviceLead = {\r\n fullName: this.serviceLeadForm.value.fullName,\r\n logonName: this.serviceLeadForm.value.logonName, \r\n jobTitle: '',\r\n phoneNo: ''\r\n };\r\n\r\n this.addServiceLead(this.registrationId, this.currentSubmissionId, this.currentServiceItemId, serviceLead);\r\n\r\n this.showServiceLeadForm = false;\r\n }\r\n\r\n addServiceLead(registrationId: number, submissionId: number, serviceItemId: number, serviceItem) {\r\n this.memberService.AddServiceLead(registrationId, submissionId, serviceItemId, serviceItem).subscribe(\r\n s => {\r\n let newServiceLead = { \r\n submissionId: submissionId, \r\n serviceItemId: serviceItemId, \r\n userId: s.data[0].userId,\r\n fullName: s.data[0].fullName,\r\n logonName: s.data[0].logonName\r\n };\r\n\r\n this.serviceLeadAdd.emit(newServiceLead);\r\n }\r\n );\r\n }\r\n\r\n removeServiceLead(registrationId: number, submissionId: number, serviceItemId: number) {\r\n this.memberService.RemoveServiceLead(registrationId, submissionId, serviceItemId).subscribe(\r\n s => {\r\n let removeServiceLead = { \r\n submissionId: submissionId, \r\n serviceItemId: serviceItemId\r\n };\r\n\r\n this.serviceLeadDelete.emit(removeServiceLead);\r\n }\r\n );\r\n }\r\n\r\n buildServiceForm() {\r\n this.serviceForm = this.fb.group({\r\n serviceItemId: [null, [Validators.required]]\r\n });\r\n\r\n this.serviceForm.valueChanges.subscribe(\r\n data => this.onServiceValueChanged(data)\r\n );\r\n\r\n this.onServiceValueChanged();\r\n\r\n this.showServiceForm = true;\r\n }\r\n\r\n buildServiceLeadForm() {\r\n this.serviceLeadForm = this.fb.group({\r\n logonName: ['', [Validators.required, Validators.maxLength(200), Validators.email]],\r\n fullName: ['', [Validators.required, Validators.maxLength(150)]]\r\n });\r\n\r\n this.serviceLeadForm.valueChanges.subscribe(\r\n data => this.onServiceLeadValueChanged(data)\r\n );\r\n\r\n this.onServiceLeadValueChanged();\r\n }\r\n \r\n onServiceValueChanged(data?: any) {\r\n if (!this.serviceForm) { return; }\r\n const form = this.serviceForm;\r\n\r\n for (const field in this.formErrors) {\r\n // clear previous error message (if any)\r\n this.formErrors[field] = '';\r\n const control = form.get(field);\r\n\r\n if (control && control.dirty && !control.valid) {\r\n const messages = this.validationMessages[field];\r\n\r\n for (const key in control.errors) {\r\n this.formErrors[field] += messages[key] + ' ';\r\n }\r\n }\r\n }\r\n }\r\n \r\n onServiceLeadValueChanged(data?: any) {\r\n if (!this.serviceLeadForm) { return; }\r\n const form = this.serviceLeadForm;\r\n\r\n for (const field in this.formErrors) {\r\n // clear previous error message (if any)\r\n this.formErrors[field] = '';\r\n const control = form.get(field);\r\n\r\n if (control && control.dirty && !control.valid) {\r\n const messages = this.validationMessages[field];\r\n\r\n for (const key in control.errors) {\r\n this.formErrors[field] += messages[key] + ' ';\r\n }\r\n }\r\n }\r\n }\r\n\r\n formErrors = {\r\n 'serviceItemId': '',\r\n 'fullName': '',\r\n 'logonName': '', \r\n 'jobTitle': '',\r\n 'phoneNo': ''\r\n }\r\n\r\n validationMessages = {\r\n 'serviceItemId': {\r\n 'required': 'Service is required.' \r\n },\r\n 'fullName': {\r\n 'required': 'Full name is required.',\r\n 'maxlength': 'Full name cannot be longer than 150 characters.'\r\n },\r\n 'logonName': {\r\n 'required': 'Email Address is required.',\r\n 'maxlength': 'Email Address cannot be longer than 200 characters.',\r\n 'email': 'Email Address is not valid.'\r\n },\r\n 'jobTitle': {\r\n 'required': 'Job title is required.',\r\n 'maxlength': 'Job title cannot be longer than 150 characters.'\r\n },\r\n 'phoneNo': {\r\n 'required': 'Phone number is required.',\r\n 'maxlength': 'Phone number cannot be longer than 40 characters.'\r\n }\r\n }\r\n}","module.exports = \"
\\r\\n\\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Organisation Name
{{c.organisationName}}\\r\\n \\r\\n
\\r\\n\\r\\n

\\r\\n No Submission Groups added.\\r\\n

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

This organisation is already in the list.

\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\"","module.exports = \".mr-2 {\\n margin-right: 1em !important; }\\n\\n.dashboard-spinner {\\n margin-top: 25vh; }\\n\\n.dashboard-spinner p {\\n margin-top: 0.75em;\\n font-size: 20px;\\n font-weight: 600; }\\n\\n.panel-group {\\n margin-bottom: 10px; }\\n\\n.nacel-image {\\n width: 100%;\\n margin-bottom: -1em; }\\n\\n.button-margin {\\n margin-bottom: 5px;\\n margin-right: 5px; }\\n\\n.img-title {\\n width: 60%; }\\n\\n.table-button {\\n text-decoration: underline; }\\n\\n.table-button:hover {\\n cursor: pointer; }\\n\\nh4 {\\n font-weight: 600; }\\n\\nh1 {\\n font-weight: 600; }\\n\\nh3 {\\n color: black;\\n margin-top: 0;\\n font-size: 1.5em; }\\n\\n.title-intro {\\n color: #005EB8;\\n font-weight: 600;\\n margin-bottom: 0.5em;\\n margin-top: 0; }\\n\\n.header {\\n margin-top: 5em;\\n margin-bottom: 3em; }\\n\\n.header img {\\n width: 80%; }\\n\\n.header h1 {\\n margin-top: 0.25em; }\\n\\n#containerRegistration {\\n margin-top: -2em;\\n background-color: #F3F3F3;\\n min-height: 70vh;\\n min-height: 70%;\\n padding-bottom: 5em; }\\n\\n#containerRegistration .alert-success,\\n#containerRegistration .alert-danger,\\n#containerRegistration .alert-info {\\n margin: 1.5em 0;\\n font-size: 14px; }\\n\\n#containerRegistration .alert-success .btn-success {\\n display: block;\\n margin-top: 1em; }\\n\\n.vcenter {\\n display: inline-block;\\n vertical-align: middle;\\n float: none; }\\n\\n.registration-section {\\n margin-top: 2em;\\n background-color: white;\\n padding: 2em;\\n border-radius: 4px;\\n border: 1px solid #ccc; }\\n\\n.registration-action {\\n margin-top: 2em; }\\n\\n.btn-later {\\n margin-left: 10px; }\\n\\n.explainer {\\n margin-top: 1em; }\\n\\n.btn-promise span {\\n opacity: 0;\\n margin-left: -18px; }\\n\\n.btn-promise.is-loading span {\\n opacity: 1;\\n margin-left: 5px; }\\n\\n.height-fix {\\n min-height: 40vh; }\\n\\n.no-reg {\\n margin-top: 30vh; }\\n\\n.no-reg h2,\\n.no-reg p {\\n margin-bottom: 1em; }\\n\\n.hint {\\n background-color: #AE2573;\\n color: white;\\n margin: 1em 0;\\n padding: 0.5em 1em;\\n font-weight: 500; }\\n\\n.hint i {\\n margin-right: 0.5em; }\\n\\n.hint.-link:hover {\\n background-color: #7C2855;\\n cursor: pointer; }\\n\\n.highlight {\\n color: #005EB8;\\n font-weight: 600;\\n margin-top: 0.5em; }\\n\\n.downloads .btn {\\n margin-bottom: 0.5em; }\\n\\n.modal-body div {\\n margin-bottom: 0.5em; }\\n\\n.modal-body div .btn {\\n margin-top: 0.5em;\\n margin-right: 0.5em; }\\n\\n.table {\\n margin-bottom: 0.5em; }\\n\\n.blank {\\n color: #768692;\\n padding: 0.5em 0; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHJvamVjdC1yZWdpc3RyYXRpb24vcHItc3VibWlzc2lvbi1ncm91cC9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxwcm9qZWN0LXJlZ2lzdHJhdGlvblxccHJvamVjdC1yZWdpc3RyYXRpb24uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3Byb2plY3QtcmVnaXN0cmF0aW9uL3ByLXN1Ym1pc3Npb24tZ3JvdXAvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyIsInNyYy9hcHAvcHJvamVjdC1yZWdpc3RyYXRpb24vcHItc3VibWlzc2lvbi1ncm91cC9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxwcm9qZWN0LXJlZ2lzdHJhdGlvblxccHItc3VibWlzc2lvbi1ncm91cFxccHItc3VibWlzc2lvbi1ncm91cC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNJLDRCQUE0QixFQUFBOztBQUdoQztFQUNJLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksbUJBQW1CLEVBQUE7O0FBR3ZCO0VBQ0ksV0FBVztFQUNYLG1CQUFtQixFQUFBOztBQUd2QjtFQUNJLGtCQUFrQjtFQUNsQixpQkFBaUIsRUFBQTs7QUFHckI7RUFDSSxVQUFVLEVBQUE7O0FBR2Q7RUFDSSwwQkFBMEIsRUFBQTs7QUFHOUI7RUFDSSxlQUFlLEVBQUE7O0FBR25CO0VBQ0ksZ0JBQWdCLEVBQUE7O0FBS3BCO0VBQ0ksZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksWUFBWTtFQUNaLGFBQWE7RUFDYixnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxjQ3hEYztFRHlEZCxnQkFBZ0I7RUFDaEIsb0JBQW9CO0VBQ3BCLGFBQWEsRUFBQTs7QUFHakI7RUFDSSxlQUFlO0VBQ2Ysa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksVUFBVSxFQUFBOztBQUdkO0VBQ0ksa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksZ0JBQWdCO0VBQ2hCLHlCQUF5QjtFQUN6QixnQkFBZ0I7RUFDaEIsZUFBZTtFQUNmLG1CQUFtQixFQUFBOztBQUd2Qjs7O0VBSUksZUFBZTtFQUNmLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxjQUFjO0VBQ2QsZUFBZSxFQUFBOztBQUduQjtFQUNJLHFCQUFxQjtFQUNyQixzQkFBc0I7RUFDdEIsV0FBVyxFQUFBOztBQUdmO0VBQ0ksZUFBZTtFQUNmLHVCQUF1QjtFQUN2QixZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLHNCQUFzQixFQUFBOztBQUcxQjtFQUNJLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxpQkFBaUIsRUFBQTs7QUFHckI7RUFDSSxlQUFlLEVBQUE7O0FBR25CO0VBQ0ksVUFBVTtFQUNWLGtCQUFrQixFQUFBOztBQUd0QjtFQUNJLFVBQVU7RUFDVixnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxnQkFBZ0IsRUFBQTs7QUFHcEI7O0VBRUksa0JBQWtCLEVBQUE7O0FBS3RCO0VBQ0kseUJBQXlCO0VBQ3pCLFlBQVk7RUFDWixhQUFhO0VBQ2Isa0JBQWtCO0VBQ2xCLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLG1CQUFtQixFQUFBOztBQUd2QjtFQUNJLHlCQUF5QjtFQUN6QixlQUFlLEVBQUE7O0FBR25CO0VBQ0ksY0NyS2M7RURzS2QsZ0JBQWdCO0VBQ2hCLGlCQUFpQixFQUFBOztBQUdyQjtFQUNJLG9CQUFvQixFQUFBOztBQUd4QjtFQUNJLG9CQUFvQixFQUFBOztBQUd4QjtFQUNJLGlCQUFpQjtFQUNqQixtQkFBbUIsRUFBQTs7QUVyTHZCO0VBQ0ksb0JBQW9CLEVBQUE7O0FBR3hCO0VBQ0ksY0RGYztFQ0dkLGdCQUFnQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvcHJvamVjdC1yZWdpc3RyYXRpb24vcHItc3VibWlzc2lvbi1ncm91cC9wci1zdWJtaXNzaW9uLWdyb3VwLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vdmFyaWFibGVzJztcclxuXHJcbi5tci0yIHtcclxuICAgIG1hcmdpbi1yaWdodDogMWVtICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5kYXNoYm9hcmQtc3Bpbm5lciB7XHJcbiAgICBtYXJnaW4tdG9wOiAyNXZoO1xyXG59XHJcblxyXG4uZGFzaGJvYXJkLXNwaW5uZXIgcCB7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjc1ZW07XHJcbiAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG59XHJcblxyXG4ucGFuZWwtZ3JvdXAge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxufVxyXG5cclxuLm5hY2VsLWltYWdlIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogLTFlbTtcclxufVxyXG5cclxuLmJ1dHRvbi1tYXJnaW4ge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbn1cclxuXHJcbi5pbWctdGl0bGUge1xyXG4gICAgd2lkdGg6IDYwJTtcclxufVxyXG5cclxuLnRhYmxlLWJ1dHRvbiB7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgICBcclxufVxyXG5cclxuLnRhYmxlLWJ1dHRvbjpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbmg0IHtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi8vIE5ldyBzdHlsZXNcclxuXHJcbmgxIHtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbmgzIHtcclxuICAgIGNvbG9yOiBibGFjaztcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICBmb250LXNpemU6IDEuNWVtO1xyXG59XHJcblxyXG4udGl0bGUtaW50cm8ge1xyXG4gICAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbn1cclxuXHJcbi5oZWFkZXIge1xyXG4gICAgbWFyZ2luLXRvcDogNWVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogM2VtO1xyXG59XHJcblxyXG4uaGVhZGVyIGltZyB7XHJcbiAgICB3aWR0aDogODAlO1xyXG59XHJcblxyXG4uaGVhZGVyIGgxIHtcclxuICAgIG1hcmdpbi10b3A6IDAuMjVlbTtcclxufVxyXG5cclxuI2NvbnRhaW5lclJlZ2lzdHJhdGlvbiB7XHJcbiAgICBtYXJnaW4tdG9wOiAtMmVtO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjNGMztcclxuICAgIG1pbi1oZWlnaHQ6IDcwdmg7XHJcbiAgICBtaW4taGVpZ2h0OiA3MCU7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogNWVtO1xyXG59XHJcblxyXG4jY29udGFpbmVyUmVnaXN0cmF0aW9uIC5hbGVydC1zdWNjZXNzLFxyXG4jY29udGFpbmVyUmVnaXN0cmF0aW9uIC5hbGVydC1kYW5nZXIsXHJcbiNjb250YWluZXJSZWdpc3RyYXRpb24gLmFsZXJ0LWluZm9cclxuIHtcclxuICAgIG1hcmdpbjogMS41ZW0gMDtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxufVxyXG5cclxuI2NvbnRhaW5lclJlZ2lzdHJhdGlvbiAuYWxlcnQtc3VjY2VzcyAuYnRuLXN1Y2Nlc3Mge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBtYXJnaW4tdG9wOiAxZW07XHJcbn1cclxuXHJcbi52Y2VudGVyIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICBmbG9hdDogbm9uZTtcclxufVxyXG5cclxuLnJlZ2lzdHJhdGlvbi1zZWN0aW9uIHtcclxuICAgIG1hcmdpbi10b3A6IDJlbTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgcGFkZGluZzogMmVtO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxufVxyXG5cclxuLnJlZ2lzdHJhdGlvbi1hY3Rpb24ge1xyXG4gICAgbWFyZ2luLXRvcDogMmVtO1xyXG59XHJcblxyXG4uYnRuLWxhdGVyIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG59XHJcblxyXG4uZXhwbGFpbmVyIHtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxufVxyXG5cclxuLmJ0bi1wcm9taXNlIHNwYW4ge1xyXG4gICAgb3BhY2l0eTogMDtcclxuICAgIG1hcmdpbi1sZWZ0OiAtMThweDtcclxufVxyXG5cclxuLmJ0bi1wcm9taXNlLmlzLWxvYWRpbmcgc3BhbiB7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcclxufVxyXG5cclxuLmhlaWdodC1maXgge1xyXG4gICAgbWluLWhlaWdodDogNDB2aDtcclxufVxyXG5cclxuLm5vLXJlZyB7XHJcbiAgICBtYXJnaW4tdG9wOiAzMHZoO1xyXG59XHJcblxyXG4ubm8tcmVnIGgyLFxyXG4ubm8tcmVnIHAge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xyXG59XHJcblxyXG4vLyAyMDIwIEFkZGl0aW9uc1xyXG5cclxuLmhpbnQge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0FFMjU3MztcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIG1hcmdpbjogMWVtIDA7XHJcbiAgICBwYWRkaW5nOiAwLjVlbSAxZW07XHJcbiAgICBmb250LXdlaWdodDogNTAwO1xyXG59XHJcblxyXG4uaGludCBpIHtcclxuICAgIG1hcmdpbi1yaWdodDogMC41ZW07XHJcbn1cclxuXHJcbi5oaW50Li1saW5rOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICM3QzI4NTU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5oaWdobGlnaHQge1xyXG4gICAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjVlbTtcclxufVxyXG5cclxuLmRvd25sb2FkcyAuYnRuIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG59XHJcblxyXG4ubW9kYWwtYm9keSBkaXYge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XHJcbn1cclxuXHJcbi5tb2RhbC1ib2R5IGRpdiAuYnRuIHtcclxuICAgIG1hcmdpbi10b3A6IDAuNWVtO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufSIsIiRpY29uLWZvbnQtcGF0aDogJy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAtc2Fzcy9hc3NldHMvZm9udHMvYm9vdHN0cmFwLyc7XHJcblxyXG4vLyBDdXN0b20gdmFyaWFibGVzXHJcbiRuaHMtYmx1ZTogIzAwNUVCODtcclxuJG5ocy1kYXJrLWJsdWU6ICMwMDQ0ODU7XHJcbiRuaHMtZ3JleTogIzc2ODY5MjtcclxuJG5ocy1mYWRlZC1ibHVlOiAjRjJGN0ZCO1xyXG4kYWN0aXZlLWFkbWluLXllbGxvdzogI0ZEQkMzMDtcclxuJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93OiAjRTU5OTAwO1xyXG4gXHJcbi8vIEJvb3RzdHJhcCB2YXJpYWJsZXNcclxuJHRleHQtY29sb3I6IGJsYWNrO1xyXG4kYm9yZGVyLXJhZGl1cy1iYXNlOiAwO1xyXG4kYm9yZGVyLXJhZGl1cy1zbWFsbDogMDtcclxuJGJyYW5kLXByaW1hcnk6ICRuaHMtYmx1ZTtcclxuJGJyYW5kLXN1Y2Nlc3M6IGdyZWVuO1xyXG4kbGluay1ob3Zlci1kZWNvcmF0aW9uOiBub25lO1xyXG4kZm9udC1zaXplLWg0OiAxN3B4O1xyXG4kbmF2YmFyLW1hcmdpbi1ib3R0b206IDA7XHJcbiRuYXZiYXItaGVpZ2h0OiA2MHB4O1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtYmc6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWJvcmRlci1jb2xvcjogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaWNvbi1iYXItYmc6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOiB3aGl0ZTtcclxuXHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc6ICRuaHMtYmx1ZTtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1jb2xvcjogd2hpdGU7XHJcbiRuYXYtcGlsbHMtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJHRhYmxlLWJnLWhvdmVyOiAkbmhzLWZhZGVkLWJsdWU7XHJcbiRoZWFkaW5ncy1zbWFsbC1jb2xvcjogJG5ocy1ncmV5OyIsIkBpbXBvcnQgJy4uL3Byb2plY3QtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5zY3NzJztcclxuXHJcbi50YWJsZSB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxufVxyXG5cclxuLmJsYW5rIHtcclxuICAgIGNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgICBwYWRkaW5nOiAwLjVlbSAwO1xyXG59Il19 */\"","import { Component, OnChanges, Input, Output, EventEmitter } from '@angular/core';\r\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\r\n\r\nimport { MemberService } from '../../utilities/services/member.service';\r\n\r\n@Component({\r\n selector: 'app-pr-submission-group',\r\n templateUrl: './pr-submission-group.component.html',\r\n styleUrls: ['./pr-submission-group.component.scss']\r\n})\r\nexport class PrSubmissionGroupComponent implements OnChanges {\r\n @Input() organisation;\r\n @Input() organisationGroupList;\r\n @Input() commissioningPartners;\r\n @Input() registration;\r\n @Output() submissionGroupAdd: EventEmitter = new EventEmitter();\r\n @Output() submissionGroupDelete: EventEmitter = new EventEmitter();\r\n\r\n submissionGroupForm: FormGroup; submissionGroupFormVisible: boolean = false;\r\n\r\n constructor(private memberService: MemberService, private fb: FormBuilder) {\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.registration) {\r\n }\r\n }\r\n\r\n submissionGroupFormSubmit() {\r\n this.addOrganisationSubmissionGroup(this.registration.registrationId, this.submissionGroupForm.value.organisation, this.registration.organisation.groupHeaderId);\r\n }\r\n\r\n addOrganisationSubmissionGroup(registrationId: number, organisationId: number, groupHeaderId: number) {\r\n let group = {\r\n organisationId: organisationId,\r\n groupHeaderId: groupHeaderId,\r\n };\r\n\r\n this.memberService.AddOrganisationSubmissionGroup(registrationId, group).subscribe(\r\n s => {\r\n let organisation = {\r\n organisationId: organisationId,\r\n organisationName: this.organisationGroupList.filter(o => o.organisationId == organisationId)[0].organisationName\r\n };\r\n\r\n this.submissionGroupAdd.emit(organisation);\r\n },\r\n e => {},\r\n () => {\r\n this.submissionGroupFormVisible = false;\r\n }\r\n );\r\n }\r\n\r\n submissionGroupFormRemove(organisationId: number) {\r\n if (confirm(\"Are you sure you want to remove this Submission Group?\")) {\r\n this.removeOrganisationSubmissionGroup(this.registration.registrationId, organisationId, this.registration.organisation.groupHeaderId)\r\n }\r\n }\r\n\r\n removeOrganisationSubmissionGroup(registrationId: number, organisationId: number, groupHeaderId: number) {\r\n this.memberService.RemoveOrganisationSubmissionGroup(registrationId, organisationId, groupHeaderId).subscribe(\r\n s => {\r\n this.submissionGroupDelete.emit(organisationId);\r\n }\r\n );\r\n }\r\n\r\n commissionerCheck(organisationId) {\r\n if (this.commissioningPartners.findIndex(c => c.organisationId == organisationId.split(' ')[1]) != -1) {\r\n this.submissionGroupForm.controls['organisation'].setErrors({'used': true});\r\n }\r\n else {\r\n this.submissionGroupForm.controls['organisation'].setErrors(null);\r\n }\r\n }\r\n\r\n submissionGroupFormShow() {\r\n this.buildSubmissionGroupForm();\r\n\r\n this.submissionGroupFormVisible = true;\r\n }\r\n\r\n submissionGroupFormHide() {\r\n this.submissionGroupFormVisible = false;\r\n }\r\n\r\n buildSubmissionGroupForm() {\r\n this.submissionGroupForm = this.fb.group({\r\n organisation: [this.organisation.organisationId, [Validators.required]]\r\n });\r\n }\r\n}","module.exports = \"
\\r\\n Please ensure you set a type for each submission.\\r\\n
\\r\\n\\r\\n
\\r\\n {{ projectId === 6 ? \\\"Click here to change to the name of the default submission to the name of the hospital / emergency department.\\\" : \\\"The default submission's name is currently set to the organisation's name. Click here to edit it.\\\" }}\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
NameType *Submission Lead
\\r\\n {{ registration.organisation.nhsCode }}-{{ i + 1}}: {{s.submissionName}} \\r\\n \\r\\n \\r\\n {{getSubmissionType(s.peerGroupId) || '-'}} \\r\\n \\r\\n \\r\\n
\\r\\n {{s.submissionLeadList[0]?.fullName}} \\r\\n \\r\\n
\\r\\n
\\r\\n - \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
0 || submissionList[i].peerGroupMembershipCount > 0 || submissionList[i].submissionCaseCodeCount > 0 || submissionList[i].submissionCodeCount > 0 || submissionList[i].services.length > 0; then cannotRemove else canRemove\\\">
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
1\\\">\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

\\r\\n

\\r\\n The submission name should clearly identify the area covered by the submission. Clearly name your submission(s) so it is obvious which hospital(s)/site(s) the submission is for. For example: ABC Trust - North Locality or ABC Trust – Hospital 1. If you only have one submission, we recommend you use your organisation’s name. \\r\\n

\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.submissionName }}\\r\\n
\\r\\n\\r\\n
\\r\\n

This submission name has already been used.

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.peerGroupId }}\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

\\r\\n The Submission Lead can enter data for their submission only. If a submission lead is not specified, the Project Lead will be assigned this role.\\r\\n

\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.fullName }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.logonName }}\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\"","module.exports = \".mr-2 {\\n margin-right: 1em !important; }\\n\\n.dashboard-spinner {\\n margin-top: 25vh; }\\n\\n.dashboard-spinner p {\\n margin-top: 0.75em;\\n font-size: 20px;\\n font-weight: 600; }\\n\\n.panel-group {\\n margin-bottom: 10px; }\\n\\n.nacel-image {\\n width: 100%;\\n margin-bottom: -1em; }\\n\\n.button-margin {\\n margin-bottom: 5px;\\n margin-right: 5px; }\\n\\n.img-title {\\n width: 60%; }\\n\\n.table-button {\\n text-decoration: underline; }\\n\\n.table-button:hover {\\n cursor: pointer; }\\n\\nh4 {\\n font-weight: 600; }\\n\\nh1 {\\n font-weight: 600; }\\n\\nh3 {\\n color: black;\\n margin-top: 0;\\n font-size: 1.5em; }\\n\\n.title-intro {\\n color: #005EB8;\\n font-weight: 600;\\n margin-bottom: 0.5em;\\n margin-top: 0; }\\n\\n.header {\\n margin-top: 5em;\\n margin-bottom: 3em; }\\n\\n.header img {\\n width: 80%; }\\n\\n.header h1 {\\n margin-top: 0.25em; }\\n\\n#containerRegistration {\\n margin-top: -2em;\\n background-color: #F3F3F3;\\n min-height: 70vh;\\n min-height: 70%;\\n padding-bottom: 5em; }\\n\\n#containerRegistration .alert-success,\\n#containerRegistration .alert-danger,\\n#containerRegistration .alert-info {\\n margin: 1.5em 0;\\n font-size: 14px; }\\n\\n#containerRegistration .alert-success .btn-success {\\n display: block;\\n margin-top: 1em; }\\n\\n.vcenter {\\n display: inline-block;\\n vertical-align: middle;\\n float: none; }\\n\\n.registration-section {\\n margin-top: 2em;\\n background-color: white;\\n padding: 2em;\\n border-radius: 4px;\\n border: 1px solid #ccc; }\\n\\n.registration-action {\\n margin-top: 2em; }\\n\\n.btn-later {\\n margin-left: 10px; }\\n\\n.explainer {\\n margin-top: 1em; }\\n\\n.btn-promise span {\\n opacity: 0;\\n margin-left: -18px; }\\n\\n.btn-promise.is-loading span {\\n opacity: 1;\\n margin-left: 5px; }\\n\\n.height-fix {\\n min-height: 40vh; }\\n\\n.no-reg {\\n margin-top: 30vh; }\\n\\n.no-reg h2,\\n.no-reg p {\\n margin-bottom: 1em; }\\n\\n.hint {\\n background-color: #AE2573;\\n color: white;\\n margin: 1em 0;\\n padding: 0.5em 1em;\\n font-weight: 500; }\\n\\n.hint i {\\n margin-right: 0.5em; }\\n\\n.hint.-link:hover {\\n background-color: #7C2855;\\n cursor: pointer; }\\n\\n.highlight {\\n color: #005EB8;\\n font-weight: 600;\\n margin-top: 0.5em; }\\n\\n.downloads .btn {\\n margin-bottom: 0.5em; }\\n\\n.modal-body div {\\n margin-bottom: 0.5em; }\\n\\n.modal-body div .btn {\\n margin-top: 0.5em;\\n margin-right: 0.5em; }\\n\\n.table {\\n margin-bottom: 0.5em; }\\n\\n.text-right .btn-xs {\\n margin-left: 5px; }\\n\\n.help-text {\\n color: #768692;\\n font-size: 0.95em; }\\n\\n.btn-halt {\\n color: gray; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHJvamVjdC1yZWdpc3RyYXRpb24vcHItc3VibWlzc2lvbi9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxwcm9qZWN0LXJlZ2lzdHJhdGlvblxccHJvamVjdC1yZWdpc3RyYXRpb24uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3Byb2plY3QtcmVnaXN0cmF0aW9uL3ByLXN1Ym1pc3Npb24vQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyIsInNyYy9hcHAvcHJvamVjdC1yZWdpc3RyYXRpb24vcHItc3VibWlzc2lvbi9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxwcm9qZWN0LXJlZ2lzdHJhdGlvblxccHItc3VibWlzc2lvblxccHItc3VibWlzc2lvbi5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNJLDRCQUE0QixFQUFBOztBQUdoQztFQUNJLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksbUJBQW1CLEVBQUE7O0FBR3ZCO0VBQ0ksV0FBVztFQUNYLG1CQUFtQixFQUFBOztBQUd2QjtFQUNJLGtCQUFrQjtFQUNsQixpQkFBaUIsRUFBQTs7QUFHckI7RUFDSSxVQUFVLEVBQUE7O0FBR2Q7RUFDSSwwQkFBMEIsRUFBQTs7QUFHOUI7RUFDSSxlQUFlLEVBQUE7O0FBR25CO0VBQ0ksZ0JBQWdCLEVBQUE7O0FBS3BCO0VBQ0ksZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksWUFBWTtFQUNaLGFBQWE7RUFDYixnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxjQ3hEYztFRHlEZCxnQkFBZ0I7RUFDaEIsb0JBQW9CO0VBQ3BCLGFBQWEsRUFBQTs7QUFHakI7RUFDSSxlQUFlO0VBQ2Ysa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksVUFBVSxFQUFBOztBQUdkO0VBQ0ksa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksZ0JBQWdCO0VBQ2hCLHlCQUF5QjtFQUN6QixnQkFBZ0I7RUFDaEIsZUFBZTtFQUNmLG1CQUFtQixFQUFBOztBQUd2Qjs7O0VBSUksZUFBZTtFQUNmLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxjQUFjO0VBQ2QsZUFBZSxFQUFBOztBQUduQjtFQUNJLHFCQUFxQjtFQUNyQixzQkFBc0I7RUFDdEIsV0FBVyxFQUFBOztBQUdmO0VBQ0ksZUFBZTtFQUNmLHVCQUF1QjtFQUN2QixZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLHNCQUFzQixFQUFBOztBQUcxQjtFQUNJLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxpQkFBaUIsRUFBQTs7QUFHckI7RUFDSSxlQUFlLEVBQUE7O0FBR25CO0VBQ0ksVUFBVTtFQUNWLGtCQUFrQixFQUFBOztBQUd0QjtFQUNJLFVBQVU7RUFDVixnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxnQkFBZ0IsRUFBQTs7QUFHcEI7O0VBRUksa0JBQWtCLEVBQUE7O0FBS3RCO0VBQ0kseUJBQXlCO0VBQ3pCLFlBQVk7RUFDWixhQUFhO0VBQ2Isa0JBQWtCO0VBQ2xCLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLG1CQUFtQixFQUFBOztBQUd2QjtFQUNJLHlCQUF5QjtFQUN6QixlQUFlLEVBQUE7O0FBR25CO0VBQ0ksY0NyS2M7RURzS2QsZ0JBQWdCO0VBQ2hCLGlCQUFpQixFQUFBOztBQUdyQjtFQUNJLG9CQUFvQixFQUFBOztBQUd4QjtFQUNJLG9CQUFvQixFQUFBOztBQUd4QjtFQUNJLGlCQUFpQjtFQUNqQixtQkFBbUIsRUFBQTs7QUVyTHZCO0VBQ0ksb0JBQW9CLEVBQUE7O0FBR3hCO0VBQ0ksZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksY0ROYztFQ09kLGlCQUFpQixFQUFBOztBQU9yQjtFQUNJLFdBQVcsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3Byb2plY3QtcmVnaXN0cmF0aW9uL3ByLXN1Ym1pc3Npb24vcHItc3VibWlzc2lvbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uL3ZhcmlhYmxlcyc7XHJcblxyXG4ubXItMiB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDFlbSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uZGFzaGJvYXJkLXNwaW5uZXIge1xyXG4gICAgbWFyZ2luLXRvcDogMjV2aDtcclxufVxyXG5cclxuLmRhc2hib2FyZC1zcGlubmVyIHAge1xyXG4gICAgbWFyZ2luLXRvcDogMC43NWVtO1xyXG4gICAgZm9udC1zaXplOiAyMHB4O1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuLnBhbmVsLWdyb3VwIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XHJcbn1cclxuXHJcbi5uYWNlbC1pbWFnZSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1hcmdpbi1ib3R0b206IC0xZW07XHJcbn1cclxuXHJcbi5idXR0b24tbWFyZ2luIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDVweDtcclxuICAgIG1hcmdpbi1yaWdodDogNXB4O1xyXG59XHJcblxyXG4uaW1nLXRpdGxlIHtcclxuICAgIHdpZHRoOiA2MCU7XHJcbn1cclxuXHJcbi50YWJsZS1idXR0b24ge1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7ICAgXHJcbn1cclxuXHJcbi50YWJsZS1idXR0b246aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG5oNCB7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG59XHJcblxyXG4vLyBOZXcgc3R5bGVzXHJcblxyXG5oMSB7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG59XHJcblxyXG5oMyB7XHJcbiAgICBjb2xvcjogYmxhY2s7XHJcbiAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgZm9udC1zaXplOiAxLjVlbTtcclxufVxyXG5cclxuLnRpdGxlLWludHJvIHtcclxuICAgIGNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XHJcbiAgICBtYXJnaW4tdG9wOiAwO1xyXG59XHJcblxyXG4uaGVhZGVyIHtcclxuICAgIG1hcmdpbi10b3A6IDVlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDNlbTtcclxufVxyXG5cclxuLmhlYWRlciBpbWcge1xyXG4gICAgd2lkdGg6IDgwJTtcclxufVxyXG5cclxuLmhlYWRlciBoMSB7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjI1ZW07XHJcbn1cclxuXHJcbiNjb250YWluZXJSZWdpc3RyYXRpb24ge1xyXG4gICAgbWFyZ2luLXRvcDogLTJlbTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNGM0YzRjM7XHJcbiAgICBtaW4taGVpZ2h0OiA3MHZoO1xyXG4gICAgbWluLWhlaWdodDogNzAlO1xyXG4gICAgcGFkZGluZy1ib3R0b206IDVlbTtcclxufVxyXG5cclxuI2NvbnRhaW5lclJlZ2lzdHJhdGlvbiAuYWxlcnQtc3VjY2VzcyxcclxuI2NvbnRhaW5lclJlZ2lzdHJhdGlvbiAuYWxlcnQtZGFuZ2VyLFxyXG4jY29udGFpbmVyUmVnaXN0cmF0aW9uIC5hbGVydC1pbmZvXHJcbiB7XHJcbiAgICBtYXJnaW46IDEuNWVtIDA7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbn1cclxuXHJcbiNjb250YWluZXJSZWdpc3RyYXRpb24gLmFsZXJ0LXN1Y2Nlc3MgLmJ0bi1zdWNjZXNzIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgbWFyZ2luLXRvcDogMWVtO1xyXG59XHJcblxyXG4udmNlbnRlciB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgZmxvYXQ6IG5vbmU7XHJcbn1cclxuXHJcbi5yZWdpc3RyYXRpb24tc2VjdGlvbiB7XHJcbiAgICBtYXJnaW4tdG9wOiAyZW07XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICAgIHBhZGRpbmc6IDJlbTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbn1cclxuXHJcbi5yZWdpc3RyYXRpb24tYWN0aW9uIHtcclxuICAgIG1hcmdpbi10b3A6IDJlbTtcclxufVxyXG5cclxuLmJ0bi1sYXRlciB7XHJcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcclxufVxyXG5cclxuLmV4cGxhaW5lciB7XHJcbiAgICBtYXJnaW4tdG9wOiAxZW07XHJcbn1cclxuXHJcbi5idG4tcHJvbWlzZSBzcGFuIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICBtYXJnaW4tbGVmdDogLTE4cHg7XHJcbn1cclxuXHJcbi5idG4tcHJvbWlzZS5pcy1sb2FkaW5nIHNwYW4ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XHJcbn1cclxuXHJcbi5oZWlnaHQtZml4IHtcclxuICAgIG1pbi1oZWlnaHQ6IDQwdmg7XHJcbn1cclxuXHJcbi5uby1yZWcge1xyXG4gICAgbWFyZ2luLXRvcDogMzB2aDtcclxufVxyXG5cclxuLm5vLXJlZyBoMixcclxuLm5vLXJlZyBwIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcclxufVxyXG5cclxuLy8gMjAyMCBBZGRpdGlvbnNcclxuXHJcbi5oaW50IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNBRTI1NzM7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgICBtYXJnaW46IDFlbSAwO1xyXG4gICAgcGFkZGluZzogMC41ZW0gMWVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcclxufVxyXG5cclxuLmhpbnQgaSB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59XHJcblxyXG4uaGludC4tbGluazpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjN0MyODU1O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uaGlnaGxpZ2h0IHtcclxuICAgIGNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgbWFyZ2luLXRvcDogMC41ZW07XHJcbn1cclxuXHJcbi5kb3dubG9hZHMgLmJ0biB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxufVxyXG5cclxuLm1vZGFsLWJvZHkgZGl2IHtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG59XHJcblxyXG4ubW9kYWwtYm9keSBkaXYgLmJ0biB7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjVlbTtcclxuICAgIG1hcmdpbi1yaWdodDogMC41ZW07XHJcbn0iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiLCJAaW1wb3J0ICcuLi9wcm9qZWN0LXJlZ2lzdHJhdGlvbi5jb21wb25lbnQuc2Nzcyc7XHJcblxyXG4udGFibGUge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XHJcbn1cclxuXHJcbi50ZXh0LXJpZ2h0IC5idG4teHMge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcclxufVxyXG5cclxuLmhlbHAtdGV4dCB7XHJcbiAgICBjb2xvcjogJG5ocy1ncmV5O1xyXG4gICAgZm9udC1zaXplOiAwLjk1ZW07XHJcbn1cclxuXHJcbi8vIC50YWJsZS1zdWIgdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCAuYnRuIHtcclxuLy8gICAgIGRpc3BsYXk6IG5vbmU7XHJcbi8vIH1cclxuXHJcbi5idG4taGFsdCB7XHJcbiAgICBjb2xvcjogZ3JheTtcclxufSJdfQ== */\"","import { Component, OnChanges, Input, Output, EventEmitter } from '@angular/core';\r\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\r\n\r\nimport { IcsService } from 'app/utilities/services/ics.service';\r\nimport { MemberService } from '../../utilities/services/member.service';\r\n\r\n@Component({\r\n selector: 'app-pr-submission',\r\n templateUrl: './pr-submission.component.html',\r\n styleUrls: ['./pr-submission.component.scss']\r\n})\r\nexport class PrSubmissionComponent implements OnChanges {\r\n @Input() projectDetails;\r\n @Input() registration;\r\n @Input() projectId;\r\n @Input() guidanceSubmissionAdd: string;\r\n @Input() icsProject: boolean;\r\n @Output() submissionAdd: EventEmitter = new EventEmitter();\r\n @Output() submissionEdit: EventEmitter = new EventEmitter();\r\n @Output() submissionDelete: EventEmitter = new EventEmitter();\r\n @Output() submissionLeadAdd: EventEmitter = new EventEmitter();\r\n @Output() submissionLeadDelete: EventEmitter = new EventEmitter();\r\n\r\n currentSubmissionId: number;\r\n peerGroups: boolean;\r\n missingPeerGroups: boolean = false;\r\n submissionForm: FormGroup; showSubmissionFormAdd: boolean = true;\r\n submissionLeadForm: FormGroup;\r\n submissionState = { sfView: false, slfView: false };\r\n checkSubmissionName: number = 1;\r\n maxSubmissions: boolean;\r\n submissionList: any;\r\n\r\n constructor(\r\n private memberService: MemberService,\r\n private fb: FormBuilder,\r\n private icsService: IcsService\r\n ) { }\r\n\r\n ngOnChanges() {\r\n if (this.registration) {\r\n if (this.registration.registration.registrationType.displaySubmissionTypes == 'Y') {\r\n this.peerGroups = true;\r\n if (this.registration.registration.submission.submissionList.map(s => s.peerGroupId).includes(null)) {\r\n this.missingPeerGroups = true;\r\n };\r\n } else {\r\n this.peerGroups = false;\r\n }\r\n if (this.registration.registration.registrationType.maxSubmissions && this.registration.registration.submission.submissionList.length >= this.registration.registration.registrationType.maxSubmissions) {\r\n this.maxSubmissions = true;\r\n } else {\r\n this.maxSubmissions = false;\r\n }\r\n this.submissionList = this.registration.registration.submission.submissionList;\r\n }\r\n }\r\n\r\n buildSubmissionForm() {\r\n if (this.peerGroups) {\r\n this.submissionForm = this.fb.group({\r\n submissionName: ['', [Validators.required, Validators.maxLength(150)]],\r\n peerGroupId: [null, [Validators.required]]\r\n });\r\n }\r\n else {\r\n this.submissionForm = this.fb.group({\r\n submissionName: ['', [Validators.required, Validators.maxLength(150)]] \r\n });\r\n }\r\n\r\n this.submissionForm.valueChanges.subscribe(\r\n data => this.onSubmissionValueChanged(data)\r\n );\r\n\r\n this.onSubmissionValueChanged();\r\n }\r\n\r\n buildSubmissionLeadForm() {\r\n this.submissionLeadForm = this.fb.group({\r\n logonName: ['', [Validators.required, Validators.maxLength(200), Validators.email]],\r\n fullName: ['', [Validators.required, Validators.maxLength(150)]]\r\n });\r\n\r\n this.submissionLeadForm.valueChanges.subscribe(\r\n data => this.onSubmissionLeadValueChanged(data)\r\n );\r\n\r\n this.onSubmissionLeadValueChanged();\r\n }\r\n\r\n showAddSubmission(checkSubmissionName) {\r\n this.checkSubmissionName = checkSubmissionName;\r\n this.currentSubmissionId = undefined;\r\n\r\n this.buildSubmissionForm();\r\n\r\n this.setSubmissionState(1, 1);\r\n }\r\n\r\n submissionFormSubmit() {\r\n if (this.submissionCheck(this.submissionForm.value.submissionName)) {\r\n return;\r\n } \r\n\r\n let submissionData = { \r\n submissionId: this.currentSubmissionId, \r\n submissionName: \r\n this.submissionForm.value.submissionName.trim(),\r\n peerGroupId: this.submissionForm.value.peerGroupId\r\n }\r\n\r\n if (this.currentSubmissionId) {\r\n this.editSubmission(this.registration.registrationId, submissionData);\r\n }\r\n else {\r\n this.addSubmission(this.registration.registrationId, submissionData);\r\n }\r\n\r\n this.setSubmissionState(1, 2);\r\n\r\n this.buildSubmissionForm();\r\n }\r\n\r\n submissionFormCancel() {\r\n this.currentSubmissionId = undefined;\r\n\r\n this.setSubmissionState(1, 2);\r\n }\r\n\r\n submissionChangeCheck(submissionId: number, checkSubmissionName: number) {\r\n if (this.registration.registration.submission.submissionList.filter(s => s.submissionId == submissionId)[0].responseCount > 0) {\r\n if (confirm(\"Data collection has already started for this submission. Are you sure you wish to continue to change the submission details?\")) {\r\n this.submissionChange(submissionId, checkSubmissionName);\r\n }\r\n }\r\n else {\r\n this.submissionChange(submissionId, checkSubmissionName);\r\n }\r\n }\r\n\r\n submissionChange(submissionId, checkSubmissionName) {\r\n\r\n this.checkSubmissionName = checkSubmissionName;\r\n this.buildSubmissionForm();\r\n\r\n this.currentSubmissionId = submissionId;\r\n\r\n let submission = this.registration.registration.submission.submissionList.filter(s => s.submissionId == submissionId)[0];\r\n\r\n if (this.peerGroups) {\r\n this.submissionForm.setValue({\r\n submissionName: submission.submissionName.trim(),\r\n peerGroupId: submission.peerGroupId || null\r\n });\r\n }\r\n else {\r\n this.submissionForm.setValue({\r\n submissionName: submission.submissionName\r\n });\r\n }\r\n\r\n this.setSubmissionState(1, 1);\r\n }\r\n\r\n submissionRemove(submissionId: number) {\r\n if (confirm(\"Are you sure you want to remove this submission?\")) {\r\n this.currentSubmissionId = undefined;\r\n\r\n if (this.icsProject) {\r\n this.removeIcsSubmission(this.registration.registration.registrationId, submissionId)\r\n } else {\r\n this.removeSubmission(this.registration.registration.registrationId, submissionId);\r\n }\r\n }\r\n }\r\n\r\n addSubmission(registrationId: number, submissionData) {\r\n this.memberService.AddSubmission(registrationId, submissionData).subscribe(\r\n r => {\r\n this.submissionAdd.emit(r.data);\r\n\r\n // Add to ICS database, if required\r\n if (this.icsProject) {\r\n\r\n let icsSubmissionData = {\r\n organisationName: this.registration.organisation.organisationName,\r\n organisationCode: this.registration.organisation.nhsCode,\r\n organisationTypeName: this.projectId == 29 ? 'Community' : this.projectDetails.project.projectCategoryName,\r\n externalOrganisationId: this.registration.organisation.organisationId,\r\n submissionList: [{\r\n submissionName: r.data.submissionName,\r\n submissionCode: this.registration.organisation.nhsCode + '-' + this.registration.registration.submission.submissionList.length,\r\n externalSubmissionId: r.data.submissionId\r\n }]\r\n } \r\n\r\n this.addIcsSubmission(icsSubmissionData);\r\n }\r\n\r\n },\r\n e => {\r\n console.log('There has been an error whilst trying to add a submission');\r\n }\r\n );\r\n }\r\n\r\n addIcsSubmission(icsSubmissionData: any) {\r\n this.icsService.addSubmissions(this.projectId, icsSubmissionData).subscribe(\r\n r => {\r\n console.log('Submission added to the ICS database.'); \r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n );\r\n }\r\n\r\n editSubmission(registrationId: number, submissionData) {\r\n this.memberService.EditSubmission(registrationId, submissionData).subscribe(\r\n r => {\r\n this.submissionEdit.emit(r.data);\r\n\r\n // Update peer groups\r\n if (this.peerGroups && this.registration.registration.submission.submissionList.map(s => s.peerGroupId).includes(null)) {\r\n this.missingPeerGroups = true;\r\n } else {\r\n this.missingPeerGroups = false;\r\n }\r\n\r\n // Edit ICS submission\r\n if (this.icsProject) {\r\n\r\n let icsSubmissionData = {\r\n submissionName: r.data.submissionName\r\n }\r\n\r\n this.editIcsSubmission(r.data.submissionId, icsSubmissionData);\r\n }\r\n\r\n },\r\n e => {\r\n console.log('There has been an error whilst trying to edit a submission');\r\n }\r\n )\r\n }\r\n\r\n editIcsSubmission(submissionId: number, submissionData: any) {\r\n this.icsService.modifySubmission(this.projectId, submissionId, submissionData).subscribe(\r\n r => {\r\n console.log('Submission edited on the ICS database.'); \r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n );\r\n }\r\n\r\n removeSubmission(registrationId: number, submissionId: number) {\r\n this.memberService.RemoveSubmission(registrationId, submissionId).subscribe(\r\n r => {\r\n this.submissionDelete.emit(submissionId);\r\n },\r\n e => {\r\n console.log('There has been an error whilst trying to delete a submission');\r\n }\r\n );\r\n }\r\n\r\n removeIcsSubmission(registrationId: number, submissionId: number) {\r\n this.icsService.deleteSubmission(this.projectId, submissionId).subscribe(\r\n r => {\r\n this.removeSubmission(registrationId, submissionId);\r\n },\r\n e => {\r\n console.log(e);\r\n console.log('There has been an error whilst trying to delete a submission. Please contact the Support Team.');\r\n }\r\n );\r\n }\r\n\r\n submissionLeadFormSubmit() {\r\n let submissionLead = {\r\n fullName: this.submissionLeadForm.value.fullName,\r\n logonName: this.submissionLeadForm.value.logonName,\r\n jobTitle: '',\r\n phoneNo: ''\r\n };\r\n\r\n this.addSubmissionLead(this.registration.registration.registrationId, this.currentSubmissionId, submissionLead)\r\n\r\n this.setSubmissionState(2, 2);\r\n\r\n this.buildSubmissionLeadForm();\r\n this.showSubmissionFormAdd = true;\r\n }\r\n\r\n submissionLeadFormAdd(submissionId: number) {\r\n this.showSubmissionFormAdd = false;\r\n this.currentSubmissionId = submissionId;\r\n\r\n this.buildSubmissionLeadForm();\r\n\r\n this.setSubmissionState(2, 1);\r\n }\r\n\r\n submissionLeadFormRemove(submissionId: number, userId: number) {\r\n if (confirm(\"Are you sure you want to remove this Submission Lead?\")) {\r\n this.removeSubmissionLead(this.registration.registration.registrationId, submissionId, userId);\r\n }\r\n }\r\n\r\n submissionLeadFormCancel() {\r\n this.showSubmissionFormAdd = true;\r\n this.setSubmissionState(2, 2);\r\n }\r\n\r\n addSubmissionLead(registrationId: number, submissionId: number, submissionLeadData) {\r\n this.memberService.AddSubmissionLead(registrationId, submissionId, submissionLeadData).subscribe(\r\n r => {\r\n this.submissionLeadAdd.emit(r.data[0]);\r\n },\r\n e => {\r\n console.log('There has been an error whilst trying to add a submission lead');\r\n }\r\n );\r\n }\r\n\r\n removeSubmissionLead(registrationId: number, submissionId: number, userId: number) {\r\n this.memberService.RemoveSubmissionLead(registrationId, submissionId, userId).subscribe(\r\n r => {\r\n let submissionUser = { submissionId: submissionId, userId: userId };\r\n\r\n this.submissionLeadDelete.emit(submissionUser);\r\n },\r\n e => {\r\n console.log('There has been an error whilst trying to remove a submission lead');\r\n }\r\n );\r\n }\r\n\r\n setSubmissionState(form: number, action: number) {\r\n //form: submissionForm 1 submissionLeadForm 2\r\n //action: open 1 close 2\r\n if (form == 1) {\r\n this.submissionState.sfView = action == 1 ? true : false;\r\n this.showSubmissionFormAdd = action == 1 ? false : true;\r\n }\r\n\r\n if (form == 2) {\r\n this.submissionState.slfView = action == 1 ? true : false;\r\n }\r\n }\r\n\r\n getSubmissionType(peerGroupId: number) {\r\n if (!peerGroupId) { return peerGroupId; }\r\n\r\n let submissionType = this.registration.registration.submission.peerGroups.filter(s => s.peerGroupId === peerGroupId)[0].peerGroupName;\r\n\r\n return submissionType;\r\n }\r\n\r\n submissionCheck(submissionName): boolean {\r\n if (this.registration.registration.submission.submissionList.findIndex(c => c.submissionName == submissionName) != -1 && this.checkSubmissionName < 3) {\r\n this.submissionForm.controls['submissionName'].setErrors({'used': true});\r\n return true;\r\n }\r\n else {\r\n this.submissionForm.controls['submissionName'].setErrors(null);\r\n return false;\r\n }\r\n }\r\n\r\n onSubmissionValueChanged(data?: any) {\r\n if (!this.submissionForm) { return; }\r\n const form = this.submissionForm;\r\n\r\n for (const field in this.formErrors) {\r\n // clear previous error message (if any)\r\n this.formErrors[field] = '';\r\n const control = form.get(field);\r\n\r\n if (control && control.dirty && !control.valid) {\r\n const messages = this.validationMessages[field];\r\n\r\n for (const key in control.errors) {\r\n this.formErrors[field] += messages[key] + ' ';\r\n }\r\n }\r\n }\r\n }\r\n\r\n onSubmissionLeadValueChanged(data?: any) {\r\n if (!this.submissionLeadForm) { return; }\r\n const form = this.submissionLeadForm;\r\n\r\n for (const field in this.formErrors) {\r\n // clear previous error message (if any)\r\n this.formErrors[field] = '';\r\n const control = form.get(field);\r\n\r\n if (control && control.dirty && !control.valid) {\r\n const messages = this.validationMessages[field];\r\n\r\n for (const key in control.errors) {\r\n this.formErrors[field] += messages[key] + ' ';\r\n }\r\n }\r\n }\r\n }\r\n\r\n formErrors = {\r\n 'submissionName': '',\r\n 'peerGroupId': '',\r\n 'fullName': '',\r\n 'logonName': ''\r\n }\r\n\r\n validationMessages = {\r\n 'submissionName': {\r\n 'required': 'Submission name is required.',\r\n 'maxlength': 'Full name cannot be longer than 150 characters.'\r\n },\r\n 'peerGroupId': {\r\n 'required': 'Must have selected a valid Submission Type.'\r\n },\r\n 'fullName': {\r\n 'required': 'Full name is required.',\r\n 'maxlength': 'Full name cannot be longer than 150 characters.'\r\n },\r\n 'logonName': {\r\n 'required': 'Email Address is required.',\r\n 'maxlength': 'Email Address cannot be longer than 200 characters.',\r\n 'email': 'Email Address is not valid.'\r\n }\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { ProjectRegistrationComponent } from './project-registration.component'\r\n\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service'\r\n\r\nconst projectregistrationRoutes: Routes = [\r\n { path: 'project-registration/:projectId/:organisationId', component: ProjectRegistrationComponent, canActivate: [AuthGuardService] }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(projectregistrationRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class ProjectRegistrationRoutingModule { }","module.exports = \"\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"NHSBN \\r\\n
\\r\\n
\\r\\n

{{projectBasicDetails.organisationName}}

\\r\\n

{{projectBasicDetails.project.projectName}}

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

Registration Closed

\\r\\n

\\r\\n Registration for this project is not currently available. If you need further information, please contact us directly on 0161 521 0818 or email enquiries.\\r\\n

\\r\\n

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

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

\\r\\n To register for the National Audit of Intermediate Care 2018, please download a copy of the\\r\\n registration form and return to\\r\\n NAIC Support to confirm your registration.\\r\\n

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

\\r\\n To register for the National Audit of Intermediate Care 2018, please download a copy of the\\r\\n registration form and return to\\r\\n NAIC Support as soon as possible to confirm your registration. Please note that whilst Providers can still \\r\\n register for NAIC 2018, the deadline has now passed to participate in the Service User Audit element of NAIC, and Providers will now only be able to \\r\\n participate in the organisational level audit. If you would like to discuss this further, please contact NAIC Support for further help.\\r\\n

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

Registration{{ projectId == 34 ? ': NACEL 2025' : '' }}

\\r\\n

\\r\\n

\\r\\n \\r\\n Welcome to the registration page for the {{projectBasicDetails.project.projectName}}. Please complete the required registration information shown in the sections below, and then click the Complete Registration button. Your organisation will then be registered for {{projectId !== 86 ? 'the project' : 'NACEL 2024'}}. You can save and exit at any point and your progress will be saved.\\r\\n

\\r\\n

\\r\\n If you have any queries regarding this process, contact the\\r\\n Support Team on\\r\\n {{ projectBasicDetails.project.projectPhoneNo }}\\r\\n

\\r\\n

\\r\\n \\r\\n If you have any queries regarding this process, please contact {{ principleContact.name || principleContact.name }} on {{ principleContact.phoneNo }}.\\r\\n

\\r\\n

If you have any queries regarding this process, please email the NACEL Support Team at nhsbn.nacelsupport@nhs.net or call 0161 521 0866.

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

\\r\\n  Click here to download the the guidance document. This contains full details of the project, including how to register and submit data.\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Your organisation is registered for this project. You can edit the registration details at any time by clicking Edit Registration, then make any amendments needed and click Complete Registration to save the changes.\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n \\r\\n You do not currently have the necessary permissions to edit this registration. If changes need to be made, please contact the Project Lead.\\r\\n

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

\\r\\n \\r\\n There has been an error whilst trying to add a Project Lead. Your organisation may not have the required access to register for this project. Please contact the Support Team on 0161 266 1797.\\r\\n

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

Project Lead *

\\r\\n

\\r\\n

\\r\\n Please specify the details of the person who will act as the lead contact for this project within your organisation. This role will be the primary recipient of any correspondence and will be responsible for co-ordinating the data collection. If you need to change the Project Lead, please contact the support team.\\r\\n

\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
0 && projectDetails?.registration.commissionerProvider == 'C' && projectDetails?.registration.registrationType.displaySubmissionGroup != 'N'\\\">\\r\\n

Submission Groups

\\r\\n

\\r\\n

\\r\\n Optional: If you work in collaboration with other organisations you may wish to provide a submission that covers multiple organisations rather than just your own. If this is the case, please add the other organisations by selecting them from the drop-down menu.\\r\\n

\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
0 && projectId != 36 && projectId != 8 && projectId != 9\\\">\\r\\n

Submissions *

\\r\\n

\\r\\n

\\r\\n A default submission has been created for you. You can submit one submission for the entire organisation or multiple submissions for different areas of the organisation. There is also the option to add a Submission Lead, should you want this to be different from the Project Lead. The Submission Lead will be responsible for co-ordinating the data collection for the submission.\\r\\n

\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
0 && projectDetails?.registration.submission?.serviceList.length > 0 && projectDetails?.registration.submission.submissionList.length > 0\\\">\\r\\n

\\r\\n \\r\\n Services\\r\\n  *\\r\\n

\\r\\n

\\r\\n

\\r\\n Please select from the list below the services for which you intend to submit data. Services will need to be selected for each submission. For each service you include, there is the option to specify a Service Lead. If the Service Lead is not specified, the Submission Lead will automatically be assigned the role.\\r\\n

\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
0\\\">\\r\\n

Deputy Project Lead

\\r\\n

\\r\\n Optional: You can provide details of other colleagues who will be copied into the correspondence sent to the Project Lead. There is no limit on the number of Deputy Project Leads you can create.\\r\\n

\\r\\n

\\r\\n Optional: You can provide details of up to {{deputyProjectLeadNumber}} other colleagues who will then be copied into the correspondence sent to the Project Lead.\\r\\n

\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
0 && projectId == 50\\\">\\r\\n\\r\\n\\r\\n \\r\\n

Delivery Address *

\\r\\n

\\r\\n IMPORTANT: The patient survey aspect of this year’s data collection includes a paper-based patient survey. Your Trust will receive a survey pack which will include 100 surveys, each with a freepost envelope.\\r\\n \\r\\n

\\r\\n

\\r\\n \\r\\n Click here to download the project guidance and cover letter.\\r\\n \\r\\n

\\r\\n

\\r\\n Please provide contact details for the person who will receive the survey pack for your Trust and a mailing address to deliver them to.\\r\\n

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

Patient Survey

\\r\\n

\\r\\n IMPORTANT: The patient survey aspect of this year’s data collection is paper-based. The patient surveys are being printed and distributed by a third party and the deadline for participating in the patient survey has now passed. By registering to participate in the project, you will still be able to participate in the organisational level data collection and staff survey.\\r\\n

\\r\\n

\\r\\n \\r\\n Click here to download the project guidance and cover letter.\\r\\n \\r\\n

\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
0 && projectId == 29\\\">\\r\\n

\\r\\n Data Sharing Agreement\\r\\n

\\r\\n

\\r\\n Outputs for the 2021/22 Community Indicators project are anonymous. Benchmarked results are displayed with unique identifiers known only to the individual participants themselves. Many participants would however prefer to share identifiers with other participants to support greater collaboration and shared learning.\\r\\n

\\r\\n

\\r\\n Would you like to share your organisation's identifying code with other participants and see their codes?\\r\\n

\\r\\n

\\r\\n By clicking 'Opt-in' below, you agree to share your organisation code, along with your organisation name with other community providers that likewise ‘Opt-in’ to the monthly community indicators benchmarking project. The output code from this project will be shared amongst the participating organisations in an excel list, emailed to the project team. \\r\\n

\\r\\n

\\r\\n Only organisations that ‘Opt-in’ to sharing their organisation code, will receive a list of other organisation codes, to encourage shared learning and transparency.\\r\\n

\\r\\n

\\r\\n Organisations that select 'Do not opt in' will not have their details shared, but will also not receive the details of others.\\r\\n Please note: If you ‘Opt-in’ to share your organisations toolkit code, this decision cannot be later changed during the 2021/22 project cycle. \\r\\n

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

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

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

\\r\\n  Your organisation opted-in to sharing your organisation code with other participants on {{ icsOptInData.consentDt | date: 'EEEE d MMMM y' }}.\\r\\n

\\r\\n

\\r\\n If you would like to change your opt-in status, please contact the Support Team.\\r\\n

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

\\r\\n  Your organisation has not opted-in to sharing your organisation code with other participants.\\r\\n

\\r\\n

\\r\\n If you would like to change your opt-in status, please contact the Support Team.\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
0 && projectBasicDetails.project.projectName === 'Community Services Covid-19 Dashboard'\\\">\\r\\n

\\r\\n Data Specification\\r\\n

\\r\\n

\\r\\n Click below to download a copy of the data specification and submission timescales. The Excel data specification can be used to help collate information, but all data should be submitted online.\\r\\n

\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Complete Registration\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n

\\r\\n You must complete the required sections above (marked with *) before you can complete the registration. You can exit the registration at any time and finish it later.\\r\\n

\\r\\n

\\r\\n Please ensure all submissions have been assigned a type before completing registration.\\r\\n

\\r\\n

\\r\\n Please complete the registration prior to data collection opening.\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \".mr-2 {\\n margin-right: 1em !important; }\\n\\n.dashboard-spinner {\\n margin-top: 25vh; }\\n\\n.dashboard-spinner p {\\n margin-top: 0.75em;\\n font-size: 20px;\\n font-weight: 600; }\\n\\n.panel-group {\\n margin-bottom: 10px; }\\n\\n.nacel-image {\\n width: 100%;\\n margin-bottom: -1em; }\\n\\n.button-margin {\\n margin-bottom: 5px;\\n margin-right: 5px; }\\n\\n.img-title {\\n width: 60%; }\\n\\n.table-button {\\n text-decoration: underline; }\\n\\n.table-button:hover {\\n cursor: pointer; }\\n\\nh4 {\\n font-weight: 600; }\\n\\nh1 {\\n font-weight: 600; }\\n\\nh3 {\\n color: black;\\n margin-top: 0;\\n font-size: 1.5em; }\\n\\n.title-intro {\\n color: #005EB8;\\n font-weight: 600;\\n margin-bottom: 0.5em;\\n margin-top: 0; }\\n\\n.header {\\n margin-top: 5em;\\n margin-bottom: 3em; }\\n\\n.header img {\\n width: 80%; }\\n\\n.header h1 {\\n margin-top: 0.25em; }\\n\\n#containerRegistration {\\n margin-top: -2em;\\n background-color: #F3F3F3;\\n min-height: 70vh;\\n min-height: 70%;\\n padding-bottom: 5em; }\\n\\n#containerRegistration .alert-success,\\n#containerRegistration .alert-danger,\\n#containerRegistration .alert-info {\\n margin: 1.5em 0;\\n font-size: 14px; }\\n\\n#containerRegistration .alert-success .btn-success {\\n display: block;\\n margin-top: 1em; }\\n\\n.vcenter {\\n display: inline-block;\\n vertical-align: middle;\\n float: none; }\\n\\n.registration-section {\\n margin-top: 2em;\\n background-color: white;\\n padding: 2em;\\n border-radius: 4px;\\n border: 1px solid #ccc; }\\n\\n.registration-action {\\n margin-top: 2em; }\\n\\n.btn-later {\\n margin-left: 10px; }\\n\\n.explainer {\\n margin-top: 1em; }\\n\\n.btn-promise span {\\n opacity: 0;\\n margin-left: -18px; }\\n\\n.btn-promise.is-loading span {\\n opacity: 1;\\n margin-left: 5px; }\\n\\n.height-fix {\\n min-height: 40vh; }\\n\\n.no-reg {\\n margin-top: 30vh; }\\n\\n.no-reg h2,\\n.no-reg p {\\n margin-bottom: 1em; }\\n\\n.hint {\\n background-color: #AE2573;\\n color: white;\\n margin: 1em 0;\\n padding: 0.5em 1em;\\n font-weight: 500; }\\n\\n.hint i {\\n margin-right: 0.5em; }\\n\\n.hint.-link:hover {\\n background-color: #7C2855;\\n cursor: pointer; }\\n\\n.highlight {\\n color: #005EB8;\\n font-weight: 600;\\n margin-top: 0.5em; }\\n\\n.downloads .btn {\\n margin-bottom: 0.5em; }\\n\\n.modal-body div {\\n margin-bottom: 0.5em; }\\n\\n.modal-body div .btn {\\n margin-top: 0.5em;\\n margin-right: 0.5em; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHJvamVjdC1yZWdpc3RyYXRpb24vQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXGFwcFxccHJvamVjdC1yZWdpc3RyYXRpb25cXHByb2plY3QtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wcm9qZWN0LXJlZ2lzdHJhdGlvbi9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcX3ZhcmlhYmxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0ksNEJBQTRCLEVBQUE7O0FBR2hDO0VBQ0ksZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksa0JBQWtCO0VBQ2xCLGVBQWU7RUFDZixnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxtQkFBbUIsRUFBQTs7QUFHdkI7RUFDSSxXQUFXO0VBQ1gsbUJBQW1CLEVBQUE7O0FBR3ZCO0VBQ0ksa0JBQWtCO0VBQ2xCLGlCQUFpQixFQUFBOztBQUdyQjtFQUNJLFVBQVUsRUFBQTs7QUFHZDtFQUNJLDBCQUEwQixFQUFBOztBQUc5QjtFQUNJLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxnQkFBZ0IsRUFBQTs7QUFLcEI7RUFDSSxnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxZQUFZO0VBQ1osYUFBYTtFQUNiLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLGNDeERjO0VEeURkLGdCQUFnQjtFQUNoQixvQkFBb0I7RUFDcEIsYUFBYSxFQUFBOztBQUdqQjtFQUNJLGVBQWU7RUFDZixrQkFBa0IsRUFBQTs7QUFHdEI7RUFDSSxVQUFVLEVBQUE7O0FBR2Q7RUFDSSxrQkFBa0IsRUFBQTs7QUFHdEI7RUFDSSxnQkFBZ0I7RUFDaEIseUJBQXlCO0VBQ3pCLGdCQUFnQjtFQUNoQixlQUFlO0VBQ2YsbUJBQW1CLEVBQUE7O0FBR3ZCOzs7RUFJSSxlQUFlO0VBQ2YsZUFBZSxFQUFBOztBQUduQjtFQUNJLGNBQWM7RUFDZCxlQUFlLEVBQUE7O0FBR25CO0VBQ0kscUJBQXFCO0VBQ3JCLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2Y7RUFDSSxlQUFlO0VBQ2YsdUJBQXVCO0VBQ3ZCLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsc0JBQXNCLEVBQUE7O0FBRzFCO0VBQ0ksZUFBZSxFQUFBOztBQUduQjtFQUNJLGlCQUFpQixFQUFBOztBQUdyQjtFQUNJLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxVQUFVO0VBQ1Ysa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksVUFBVTtFQUNWLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLGdCQUFnQixFQUFBOztBQUdwQjs7RUFFSSxrQkFBa0IsRUFBQTs7QUFLdEI7RUFDSSx5QkFBeUI7RUFDekIsWUFBWTtFQUNaLGFBQWE7RUFDYixrQkFBa0I7RUFDbEIsZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksbUJBQW1CLEVBQUE7O0FBR3ZCO0VBQ0kseUJBQXlCO0VBQ3pCLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxjQ3JLYztFRHNLZCxnQkFBZ0I7RUFDaEIsaUJBQWlCLEVBQUE7O0FBR3JCO0VBQ0ksb0JBQW9CLEVBQUE7O0FBR3hCO0VBQ0ksb0JBQW9CLEVBQUE7O0FBR3hCO0VBQ0ksaUJBQWlCO0VBQ2pCLG1CQUFtQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvcHJvamVjdC1yZWdpc3RyYXRpb24vcHJvamVjdC1yZWdpc3RyYXRpb24uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi92YXJpYWJsZXMnO1xyXG5cclxuLm1yLTIge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxZW0gIWltcG9ydGFudDtcclxufVxyXG5cclxuLmRhc2hib2FyZC1zcGlubmVyIHtcclxuICAgIG1hcmdpbi10b3A6IDI1dmg7XHJcbn1cclxuXHJcbi5kYXNoYm9hcmQtc3Bpbm5lciBwIHtcclxuICAgIG1hcmdpbi10b3A6IDAuNzVlbTtcclxuICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi5wYW5lbC1ncm91cCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG59XHJcblxyXG4ubmFjZWwtaW1hZ2Uge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAtMWVtO1xyXG59XHJcblxyXG4uYnV0dG9uLW1hcmdpbiB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiA1cHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcclxufVxyXG5cclxuLmltZy10aXRsZSB7XHJcbiAgICB3aWR0aDogNjAlO1xyXG59XHJcblxyXG4udGFibGUtYnV0dG9uIHtcclxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAgIFxyXG59XHJcblxyXG4udGFibGUtYnV0dG9uOmhvdmVyIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuaDQge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuLy8gTmV3IHN0eWxlc1xyXG5cclxuaDEge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuaDMge1xyXG4gICAgY29sb3I6IGJsYWNrO1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxuICAgIGZvbnQtc2l6ZTogMS41ZW07XHJcbn1cclxuXHJcbi50aXRsZS1pbnRybyB7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxufVxyXG5cclxuLmhlYWRlciB7XHJcbiAgICBtYXJnaW4tdG9wOiA1ZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAzZW07XHJcbn1cclxuXHJcbi5oZWFkZXIgaW1nIHtcclxuICAgIHdpZHRoOiA4MCU7XHJcbn1cclxuXHJcbi5oZWFkZXIgaDEge1xyXG4gICAgbWFyZ2luLXRvcDogMC4yNWVtO1xyXG59XHJcblxyXG4jY29udGFpbmVyUmVnaXN0cmF0aW9uIHtcclxuICAgIG1hcmdpbi10b3A6IC0yZW07XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGM0YzO1xyXG4gICAgbWluLWhlaWdodDogNzB2aDtcclxuICAgIG1pbi1oZWlnaHQ6IDcwJTtcclxuICAgIHBhZGRpbmctYm90dG9tOiA1ZW07XHJcbn1cclxuXHJcbiNjb250YWluZXJSZWdpc3RyYXRpb24gLmFsZXJ0LXN1Y2Nlc3MsXHJcbiNjb250YWluZXJSZWdpc3RyYXRpb24gLmFsZXJ0LWRhbmdlcixcclxuI2NvbnRhaW5lclJlZ2lzdHJhdGlvbiAuYWxlcnQtaW5mb1xyXG4ge1xyXG4gICAgbWFyZ2luOiAxLjVlbSAwO1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG59XHJcblxyXG4jY29udGFpbmVyUmVnaXN0cmF0aW9uIC5hbGVydC1zdWNjZXNzIC5idG4tc3VjY2VzcyB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxufVxyXG5cclxuLnZjZW50ZXIge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgIGZsb2F0OiBub25lO1xyXG59XHJcblxyXG4ucmVnaXN0cmF0aW9uLXNlY3Rpb24ge1xyXG4gICAgbWFyZ2luLXRvcDogMmVtO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICBwYWRkaW5nOiAyZW07XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG59XHJcblxyXG4ucmVnaXN0cmF0aW9uLWFjdGlvbiB7XHJcbiAgICBtYXJnaW4tdG9wOiAyZW07XHJcbn1cclxuXHJcbi5idG4tbGF0ZXIge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbn1cclxuXHJcbi5leHBsYWluZXIge1xyXG4gICAgbWFyZ2luLXRvcDogMWVtO1xyXG59XHJcblxyXG4uYnRuLXByb21pc2Ugc3BhbiB7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG4gICAgbWFyZ2luLWxlZnQ6IC0xOHB4O1xyXG59XHJcblxyXG4uYnRuLXByb21pc2UuaXMtbG9hZGluZyBzcGFuIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xyXG59XHJcblxyXG4uaGVpZ2h0LWZpeCB7XHJcbiAgICBtaW4taGVpZ2h0OiA0MHZoO1xyXG59XHJcblxyXG4ubm8tcmVnIHtcclxuICAgIG1hcmdpbi10b3A6IDMwdmg7XHJcbn1cclxuXHJcbi5uby1yZWcgaDIsXHJcbi5uby1yZWcgcCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XHJcbn1cclxuXHJcbi8vIDIwMjAgQWRkaXRpb25zXHJcblxyXG4uaGludCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQUUyNTczO1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgbWFyZ2luOiAxZW0gMDtcclxuICAgIHBhZGRpbmc6IDAuNWVtIDFlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbn1cclxuXHJcbi5oaW50IGkge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufVxyXG5cclxuLmhpbnQuLWxpbms6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzdDMjg1NTtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmhpZ2hsaWdodCB7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIG1hcmdpbi10b3A6IDAuNWVtO1xyXG59XHJcblxyXG4uZG93bmxvYWRzIC5idG4ge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XHJcbn1cclxuXHJcbi5tb2RhbC1ib2R5IGRpdiB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxufVxyXG5cclxuLm1vZGFsLWJvZHkgZGl2IC5idG4ge1xyXG4gICAgbWFyZ2luLXRvcDogMC41ZW07XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59IiwiJGljb24tZm9udC1wYXRoOiAnLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC1zYXNzL2Fzc2V0cy9mb250cy9ib290c3RyYXAvJztcclxuXHJcbi8vIEN1c3RvbSB2YXJpYWJsZXNcclxuJG5ocy1ibHVlOiAjMDA1RUI4O1xyXG4kbmhzLWRhcmstYmx1ZTogIzAwNDQ4NTtcclxuJG5ocy1ncmV5OiAjNzY4NjkyO1xyXG4kbmhzLWZhZGVkLWJsdWU6ICNGMkY3RkI7XHJcbiRhY3RpdmUtYWRtaW4teWVsbG93OiAjRkRCQzMwO1xyXG4kYWN0aXZlLWFkbWluLWRhcmt5ZWxsb3c6ICNFNTk5MDA7XHJcbiBcclxuLy8gQm9vdHN0cmFwIHZhcmlhYmxlc1xyXG4kdGV4dC1jb2xvcjogYmxhY2s7XHJcbiRib3JkZXItcmFkaXVzLWJhc2U6IDA7XHJcbiRib3JkZXItcmFkaXVzLXNtYWxsOiAwO1xyXG4kYnJhbmQtcHJpbWFyeTogJG5ocy1ibHVlO1xyXG4kYnJhbmQtc3VjY2VzczogZ3JlZW47XHJcbiRsaW5rLWhvdmVyLWRlY29yYXRpb246IG5vbmU7XHJcbiRmb250LXNpemUtaDQ6IDE3cHg7XHJcbiRuYXZiYXItbWFyZ2luLWJvdHRvbTogMDtcclxuJG5hdmJhci1oZWlnaHQ6IDYwcHg7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWNvbG9yOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1iZzogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtYm9yZGVyLWNvbG9yOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1pY29uLWJhci1iZzogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaG92ZXItYmc6IHdoaXRlO1xyXG5cclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1iZzogJG5ocy1ibHVlO1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWNvbG9yOiB3aGl0ZTtcclxuJG5hdi1waWxscy1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kdGFibGUtYmctaG92ZXI6ICRuaHMtZmFkZWQtYmx1ZTtcclxuJGhlYWRpbmdzLXNtYWxsLWNvbG9yOiAkbmhzLWdyZXk7Il19 */\"","import { Component, OnInit, ViewChild, HostListener, Inject } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { Meta, Title } from '@angular/platform-browser';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Angular2PromiseButtonModule } from 'angular2-promise-buttons/dist';\r\nimport { ModalDirective } from 'ngx-bootstrap';\r\n\r\nimport { MemberService } from '../utilities/services/member.service';\r\nimport { LoaderService } from '../utilities/services/loader.service';\r\nimport { IcsService } from 'app/utilities/services/ics.service';\r\nimport { ErrorService } from '../utilities/services/error.service';\r\n\r\n@Component({\r\n selector: 'app-project-registration',\r\n templateUrl: './project-registration.component.html',\r\n styleUrls: ['./project-registration.component.scss']\r\n})\r\nexport class ProjectRegistrationComponent implements OnInit {\r\n\r\n projectDetails; projectBasicDetails;\r\n projectId: number; organisationId: number;\r\n deputyProjectLeadView: boolean = false; submissionView: boolean = false; submissionGroupView: boolean = false;\r\n principleContact;\r\n organisationGroupList; commissioningPartners;\r\n projectLead; deputyProjectLead;\r\n serviceCheck: boolean = false;\r\n maxServices: number;\r\n guidance;\r\n guidanceIntro: string; guidanceProjectLead: string; guidanceDeputyProjectLead: string; \r\n guidanceSubmissionGroup: string; guidanceSubmission: string; guidanceService: string; guidanceSubmissionAdd: string; guidanceServiceTitle: string;\r\n allowChanges: boolean;\r\n registrationClosed: boolean;\r\n organisationError: boolean;\r\n addressAdded: boolean;\r\n addressClosed: boolean;\r\n showACDocuments: boolean = false;\r\n showMHDocuments: boolean = false;\r\n deputyProjectLeadNumber: string\r\n \r\n icsProject: boolean = false;\r\n icsError: string;\r\n icsOptInData: any;\r\n\r\n public navIsFixed: boolean = false;\r\n public width: number;\r\n\r\n metaTitle: string = 'Project Registration | NHS Benchmarking Network';\r\n\r\n constructor(\r\n private memberService: MemberService,\r\n private icsService: IcsService,\r\n private errorService: ErrorService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private toastr: ToastrService,\r\n private titleService: Title,\r\n private meta: Meta,\r\n private newSpinner: Angular2PromiseButtonModule,\r\n public loaderService: LoaderService\r\n ) {\r\n this.projectId = +this.route.snapshot.paramMap.get('projectId');\r\n this.organisationId = +this.route.snapshot.paramMap.get('organisationId');\r\n }\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(this.metaTitle); // Set page title\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n this.getProjectRegistrationBasicDetails(this.projectId, this.organisationId);\r\n\r\n // Close NHSE LDIS patient survey delivery address\r\n let timeClose = new Date('2023/12/31 23:00:00'),\r\n timeNow = new Date(Date.now()),\r\n diff = timeClose.getTime() - timeNow.getTime();\r\n \r\n if (diff < 0) {\r\n this.addressClosed = true\r\n } else {\r\n this.addressClosed = false;\r\n }\r\n }\r\n\r\n getProjectRegistrationBasicDetails(projectId: number, organisationId: number) {\r\n let provider: number = 15\r\n let commmissioner: number = 14\r\n\r\n this.memberService.ProjectRegistrationBasicDetails(projectId, organisationId).subscribe(\r\n d => {\r\n this.projectBasicDetails = d.data;\r\n \r\n // Set ICS project status\r\n // TODO: Be more specific about ICS vs. non-ICS\r\n if (d.data.project.collectionFrequency !== null) {\r\n this.icsProject = true;\r\n }\r\n\r\n // Return project-specific guidance\r\n let guidance = this.projectBasicDetails.project.projectGuidance.registration;\r\n if (guidance) {\r\n for (let index = 1; index <= 15; index++) {\r\n let selectedGuidance = guidance.filter(p => p.guidanceTypeId == index)\r\n if (selectedGuidance[0]) {\r\n switch (index) {\r\n case 1: {\r\n this.guidanceIntro = selectedGuidance[0].guidanceText;\r\n break;\r\n }\r\n case 2: {\r\n this.guidanceProjectLead = selectedGuidance[0].guidanceText;\r\n break;\r\n }\r\n case 3: {\r\n this.guidanceDeputyProjectLead = selectedGuidance[0].guidanceText;\r\n break;\r\n }\r\n case 4: {\r\n this.guidanceSubmissionGroup = selectedGuidance[0].guidanceText;\r\n break;\r\n }\r\n case 5: {\r\n this.guidanceSubmission = selectedGuidance[0].guidanceText;\r\n break;\r\n }\r\n case 6: {\r\n this.guidanceService = selectedGuidance[0].guidanceText;\r\n break;\r\n }\r\n case 8: {\r\n this.guidanceSubmissionAdd = selectedGuidance[0].guidanceText;\r\n break;\r\n }\r\n case 15: {\r\n this.guidanceServiceTitle = selectedGuidance[0].guidanceText;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n let registrationId = this.projectBasicDetails.registrationId;\r\n let registrationStatus = this.projectBasicDetails.project.registrationAvailable;\r\n\r\n if (this.projectId != provider && this.projectId != commmissioner) {\r\n if (registrationId) {\r\n this.getProjectRegistrationDetails(this.projectBasicDetails.project.productId, projectId, organisationId);\r\n } else if (!registrationId && registrationStatus === 'N') {\r\n this.registrationClosed = true;\r\n } else {\r\n let data = {\r\n projectId: projectId,\r\n organisationId: organisationId,\r\n productId: d.data.project.productId,\r\n project: { projectName: this.projectBasicDetails.project.projectName },\r\n registration: { projectLead: { projectLeadList: [] } }\r\n };\r\n\r\n this.projectDetails = data;\r\n this.projectLead = null;\r\n this.deputyProjectLead = null;\r\n }\r\n };\r\n // Set principle contact\r\n let principleContact = this.projectBasicDetails.project.projectRoles.filter(p => p.principleContact == 'Y')[0];\r\n if (principleContact) {\r\n this.principleContact = principleContact;\r\n } else {\r\n this.principleContact = this.projectBasicDetails.project.projectRoles.filter(p => p.role == 'Project Coordinator')[0];\r\n }\r\n },\r\n e => {\r\n this.toastr.error(this.errorService.getErrorMessage(e.error.error.statusCode));\r\n if (e.error.error.statusCode == 4101) {\r\n this.registrationClosed = true;\r\n }\r\n this.router.navigate(['/home']);\r\n }\r\n );\r\n }\r\n\r\n getProjectRegistrationDetails(productId: number, projectId: number, organisationId: number) {\r\n this.memberService.ProjectRegistration(productId, projectId, organisationId).subscribe(\r\n d => {\r\n let data = d.data;\r\n this.deputyProjectLeadNumber = this.convertNumberToWords(data.registration.registrationType.maxDeputyProjectLeads)\r\n data.projectId = projectId; data.organisationId = organisationId; data.productId = productId;\r\n\r\n this.projectDetails = data;\r\n\r\n this.projectLead = this.projectDetails.registration.projectLead.projectLeadList;\r\n\r\n this.allowChanges = this.projectDetails.organisation.allowChanges;\r\n\r\n this.deputyProjectLead = this.projectDetails.registration.deputyProjectLead.deputyProjectLeadList;\r\n \r\n this.projectDetails.registration.submission.submissionList.sort((a, b) => a.submissionId - b.submissionId);\r\n\r\n // Move this to API\r\n if (this.projectDetails.registration.registrationType.maxServicesPerSubmission == null) { this.maxServices = 100 } \r\n else { this.maxServices = this.projectDetails.registration.registrationType.maxServicesPerSubmission }\r\n\r\n if (this.projectDetails.registration.projectLead.projectLeadList.length > 0) {\r\n this.deputyProjectLeadView = true;\r\n this.submissionView = true;\r\n\r\n if (this.projectDetails.registration.commissionerProvider == 'C') {\r\n let index = this.projectDetails.organisation.commissioningPartners.findIndex(o => o.organisationId == organisationId);\r\n this.projectDetails.organisation.commissioningPartners.splice(index, 1);\r\n \r\n this.organisationList();\r\n this.submissionGroupView = true;\r\n }\r\n }\r\n\r\n // Remove visible services for AT in 2021\r\n // TODO: Make services year-specific. Added to Airtable.\r\n if (projectId === 38) {\r\n this.projectDetails.registration.submission.serviceList = [];\r\n }\r\n\r\n // If CI, check and display opt-in status\r\n if (projectId === 29) {\r\n this.icsGetOptIn(projectId, this.projectDetails['organisation'].nhsCode, \"Community\")\r\n }\r\n\r\n this.serviceCheckUpdate();\r\n this.documentCheck();\r\n }\r\n );\r\n }\r\n\r\n projectLeadAdd(message) {\r\n this.getProjectRegistrationDetails(message.productId, message.projectId, message.organisationId);\r\n\r\n this.deputyProjectLeadView = true;\r\n }\r\n\r\n addressAdd(message) {\r\n this.addressAdded = message;\r\n this.getProjectRegistrationDetails(this.projectDetails.productId, this.projectId, this.organisationId);\r\n }\r\n\r\n deputyProjectLeadAdd(message) {\r\n this.projectDetails.registration.deputyProjectLead.deputyProjectLeadList.push({\r\n userId: message.userId,\r\n logonName: message.logonName,\r\n fullName: message.fullName,\r\n jobTitle: message.jobTitle,\r\n phoneNo: message.phoneNo\r\n });\r\n\r\n this.projectDetails.registration.deputyProjectLead.deputyProjectLeadList.sort((a, b) => a.fullName.localeCompare(b.fullName));\r\n\r\n this.submissionView = true;\r\n }\r\n\r\n deputyProjectLeadRemove(message) {\r\n this.projectDetails.registration.deputyProjectLead.deputyProjectLeadList.splice(this.projectDetails.registration.deputyProjectLead.deputyProjectLeadList.findIndex(p => p.userId == message), 1);\r\n }\r\n\r\n organisationList() {\r\n this.memberService.SubmissionOrganisations().subscribe(\r\n s => {\r\n this.organisationGroupList = s.data;\r\n }\r\n )\r\n }\r\n\r\n setOrganisationError(message) {\r\n this.organisationError = message;\r\n }\r\n\r\n submissionGroupAdd(message) {\r\n let commissioners = this.projectDetails.organisation.commissioningPartners;\r\n\r\n if (commissioners.length < 1) {\r\n this.projectDetails.organisation.commissioningPartners = [{\r\n organisationId: message.organisationId, \r\n organisationName: message.organisationName\r\n }];\r\n }\r\n else {\r\n commissioners.push({\r\n organisationId: message.organisationId, \r\n organisationName: message.organisationName\r\n });\r\n }\r\n\r\n this.projectDetails.organisation.commissioningPartners.sort((a, b) => a.organisationName.localeCompare(b.organisationName));\r\n }\r\n\r\n submissionGroupDelete(message) {\r\n let commissioners = this.projectDetails.organisation.commissioningPartners;\r\n\r\n let commissionerIndex = commissioners.findIndex(o => o.organisationId == message);\r\n\r\n commissioners.splice(commissionerIndex, 1);\r\n }\r\n\r\n submissionAdd(message) {\r\n this.projectDetails.registration.submission.submissionList.push({\r\n submissionId: message.submissionId,\r\n submissionName: message.submissionName,\r\n peerGroupId: message.peerGroupId,\r\n peerGroupName: message.peerGroupName,\r\n submissionLeadList: [],\r\n services: [],\r\n organisationId: null,\r\n organisationName: null\r\n });\r\n \r\n this.projectDetails.registration.submission.submissionList.sort((a, b) => a.submissionId - b.submissionId);\r\n\r\n this.serviceCheckUpdate();\r\n }\r\n\r\n submissionEdit(message) {\r\n let currentSubmission = this.projectDetails.registration.submission.submissionList.findIndex(p => p.submissionId == message.submissionId);\r\n\r\n this.projectDetails.registration.submission.submissionList[currentSubmission].submissionName = message.submissionName;\r\n this.projectDetails.registration.submission.submissionList[currentSubmission].peerGroupId = message.peerGroupId;\r\n\r\n this.projectDetails.registration.submission.submissionList.sort((a, b) => a.submissionId - b.submissionId);\r\n \r\n this.documentCheck();\r\n }\r\n\r\n submissionDelete(message) {\r\n this.projectDetails.registration.submission.submissionList.splice(this.projectDetails.registration.submission.submissionList.findIndex(p => p.submissionId == message), 1);\r\n\r\n this.serviceCheckUpdate();\r\n }\r\n\r\n submissionLeadAdd(message) {\r\n let submission = this.projectDetails.registration.submission.submissionList.findIndex(p => p.submissionId == message.submissionId);\r\n\r\n this.projectDetails.registration.submission.submissionList[submission].submissionLeadList.push({\r\n userId: message.userId,\r\n fullName: message.fullName,\r\n logonName: message.logonName,\r\n jobTitle: message.jobTitle,\r\n phoneNo: message.phoneNo\r\n });\r\n }\r\n\r\n submissionLeadDelete(message) {\r\n let submission = this.projectDetails.registration.submission.submissionList.findIndex(p => p.submissionId == message.submissionId);\r\n let user = this.projectDetails.registration.submission.submissionList[submission].submissionLeadList.findIndex(p => p.userId = message.userId);\r\n\r\n this.projectDetails.registration.submission.submissionList[submission].submissionLeadList.splice(user);\r\n }\r\n\r\n serviceAdd(message) {\r\n let submission = this.projectDetails.registration.submission.submissionList;\r\n let submissionIndex = submission.findIndex(s => s.submissionId == message.submissionId);\r\n \r\n submission[submissionIndex].services.push({\r\n serviceItemId: message.serviceItemId,\r\n serviceItemName: message.serviceItemName\r\n });\r\n\r\n submission[submissionIndex].services.sort((a, b) => a.serviceItemId - b.serviceItemId);\r\n\r\n this.serviceCheckUpdate();\r\n }\r\n \r\n serviceDelete(message) {\r\n let submission = this.projectDetails.registration.submission.submissionList;\r\n let submissionIndex = submission.findIndex(s => s.submissionId == message.submissionId);\r\n let service = submission[submissionIndex].services.findIndex(s => s.serviceItemId == message.serviceItemId);\r\n\r\n this.projectDetails.registration.submission.submissionList[submissionIndex].services.splice(service, 1);\r\n\r\n this.serviceCheckUpdate();\r\n }\r\n\r\n serviceLeadAdd(message) {\r\n let submissionIndex = this.projectDetails.registration.submission.submissionList.findIndex(p => p.submissionId == message.submissionId);\r\n let serviceIndex = this.projectDetails.registration.submission.submissionList[submissionIndex].services.findIndex(s => s.serviceItemId == message.serviceItemId);\r\n\r\n this.projectDetails.registration.submission.submissionList[submissionIndex].services[serviceIndex].serviceLeadList = [{\r\n userId: message.userId,\r\n userRoleId: message.userRoleId,\r\n fullName: message.fullName,\r\n logonName: message.logonName,\r\n jobTitle: '',\r\n phoneNo: ''\r\n }];\r\n }\r\n\r\n serviceLeadDelete(message) {\r\n let submissionIndex = this.projectDetails.registration.submission.submissionList.findIndex(p => p.submissionId == message.submissionId);\r\n let serviceIndex = this.projectDetails.registration.submission.submissionList[submissionIndex].services.findIndex(s => s.serviceItemId == message.serviceItemId);\r\n\r\n this.projectDetails.registration.submission.submissionList[submissionIndex].services[serviceIndex].logonName = null;\r\n this.projectDetails.registration.submission.submissionList[submissionIndex].services[serviceIndex].userId = null;\r\n\r\n this.projectDetails.registration.submission.submissionList[submissionIndex].services[serviceIndex].serviceLeadList = [];\r\n }\r\n\r\n serviceCheckUpdate() {\r\n if (this.projectDetails.registration.submission.serviceList.length > 0) {\r\n let submissions = this.projectDetails.registration.submission.submissionList; \r\n let submissionServiceCount = 0;\r\n\r\n submissions.forEach(s => {\r\n if (s.services.length > 0) {\r\n submissionServiceCount ++;\r\n }\r\n });\r\n\r\n if (submissionServiceCount == submissions.length) {\r\n this.serviceCheck = false;\r\n }\r\n else {\r\n this.serviceCheck = true;\r\n }\r\n }\r\n\r\n this.documentCheck();\r\n }\r\n\r\n icsAddSubmissions() {\r\n\r\n this.newSpinner = new Promise((resolve) => {\r\n setTimeout(resolve, 3000);\r\n });\r\n\r\n let organisation = this.projectDetails['organisation'],\r\n submissions = {\r\n organisationName: organisation.organisationName,\r\n organisationCode: organisation.nhsCode,\r\n organisationTypeName: \"Community\",\r\n externalOrganisationId: this.organisationId,\r\n submissionList: []\r\n }\r\n\r\n this.projectDetails.registration.submission.submissionList.forEach((s, i) => {\r\n submissions.submissionList.push({\r\n submissionName: s.submissionName,\r\n submissionCode: organisation.nhsCode + '-' + (i + 1)\r\n })\r\n });\r\n\r\n this.icsService.addSubmissions(this.projectId, submissions).subscribe(\r\n r => {\r\n this.registerProject(); \r\n },\r\n e => {\r\n console.log(e);\r\n this.icsError = 'There has been an error trying to save the submissions to the database (Error Code: ICS01). Please try refreshing the page and completing the registration again, then contact the Support Team.'\r\n }\r\n );\r\n }\r\n\r\n icsOptIn(yesNo) {\r\n let consent = {\r\n organisationTypeName: \"Community\",\r\n organisationCode: this.projectDetails['organisation'].nhsCode,\r\n consent: yesNo\r\n }\r\n\r\n // Save consent\r\n this.icsService.saveConsent(this.projectId, consent).subscribe(\r\n r => {\r\n this.icsGetOptIn(this.projectId, this.projectDetails['organisation'].nhsCode, \"Community\");\r\n },\r\n e => {\r\n console.log(e);\r\n this.icsError = 'There has been an error trying to save your consent status (Error Code: ICS02). Please contact the Support Team.'\r\n }\r\n );\r\n }\r\n\r\n icsGetOptIn(projectId, organisationCode, organisationType) {\r\n this.icsService.getConsent(projectId, organisationCode, organisationType).subscribe(\r\n r => { \r\n this.icsOptInData = r.data;\r\n },\r\n e => {\r\n console.log(e);\r\n this.icsOptInData = null;\r\n }\r\n )\r\n }\r\n \r\n registerProject() {\r\n\r\n this.newSpinner = new Promise((resolve) => {\r\n setTimeout(resolve, 3000);\r\n });\r\n\r\n // Set states\r\n let state = null;\r\n if (this.projectDetails.registration.registrationLocked) { state = 'N'; } \r\n else { state = 'Y'; }\r\n\r\n // Register projects\r\n this.memberService.RegisterProject(this.projectDetails.registrationId, state).subscribe(\r\n r => {\r\n if (state == 'Y') {\r\n this.projectDetails.registration.registrationLocked = true;\r\n this.toastr.success('You can edit the registration details at any time.', 'Registration Complete');\r\n this.router.navigate(['/home']);\r\n }\r\n else {\r\n this.projectDetails.registration.registrationLocked = false;\r\n }\r\n }\r\n );\r\n }\r\n\r\n individualAccess() {\r\n\r\n // Not currently in use\r\n\r\n let registrationId = this.projectDetails.registration.registrationId;\r\n let users = [];\r\n\r\n // Add current user / registration lead\r\n let currentUser = JSON.parse(sessionStorage.getItem('user'));\r\n users.push({ userId: currentUser.userId });\r\n\r\n // Add PL\r\n this.projectDetails.registration.projectLead.projectLeadList.forEach(pl => {\r\n users.push({ userId: pl.userId });\r\n });\r\n\r\n // Add DPLs\r\n this.projectDetails.registration.deputyProjectLead.deputyProjectLeadList.forEach(dpl => {\r\n users.push({ userId: dpl.userId });\r\n });\r\n\r\n // Add SLs\r\n this.projectDetails.registration.submission.submissionList.forEach(s => {\r\n s.submissionLeadList.forEach(sll => {\r\n users.push({ userId: sll.userId });\r\n });\r\n });\r\n\r\n // Send to database\r\n users.forEach(u => {\r\n this.memberService.IndividualAccess(registrationId, u).subscribe(\r\n r => { console.log(r) },\r\n e => { console.log(e) }\r\n )\r\n });\r\n\r\n }\r\n\r\n documentCheck() {\r\n if (this.projectId === 34) {\r\n let regionId = this.projectDetails.organisation.regionId, // AC should only show for England in 2021\r\n peerGroups = this.projectDetails.registration.submission.submissionList.map(s => s.peerGroupId),\r\n allowedAC = [1, 2],\r\n allowedMH = [3];\r\n if (peerGroups.some(p => allowedAC.includes(p)) && ![5,6].includes(regionId) ) {\r\n this.showACDocuments = true;\r\n } else {\r\n this.showACDocuments = false;\r\n }\r\n if (peerGroups.some(p => allowedMH.includes(p))) {\r\n this.showMHDocuments = true;\r\n } else {\r\n this.showMHDocuments = false;\r\n }\r\n }\r\n }\r\n\r\n navHome() {\r\n this.toastr.warning('The registration has been initiated and your progress saved for completion later.', 'Registration Initiated');\r\n this.router.navigate(['/home']);\r\n }\r\n\r\n convertNumberToWords(input: number): string{\r\n const numbersToWords = {\r\n 0: \"zero\",\r\n 1: \"one\",\r\n 2: \"two\",\r\n 3: \"three\",\r\n 4: \"four\",\r\n 5: \"five\",\r\n 6: \"six\",\r\n 7: \"seven\",\r\n 8: \"eight\",\r\n 9: \"nine\",\r\n 10: \"ten\",\r\n 11: \"eleven\",\r\n 12: \"twelve\",\r\n 13: \"thirteen\",\r\n 14: \"fourteen\",\r\n 15: \"fifteen\",\r\n 16: \"sixteen\",\r\n 17: \"seventeen\",\r\n 18: \"eighteen\",\r\n 19: \"nineteen\",\r\n 20: \"twenty\",\r\n 30: \"thirty\",\r\n 40: \"forty\",\r\n 50: \"fifty\",\r\n 60: \"sixty\",\r\n 70: \"seventy\",\r\n 80: \"eighty\",\r\n 90: \"ninety\",\r\n };\r\n if(input == null){\r\n return null\r\n } else {\r\n let words = \"\";\r\n if (input >= 100) {\r\n words += this.convertNumberToWords(Math.floor(input / 100)) + \" hundred\";\r\n input %= 100;\r\n }\r\n if (input > 0) {\r\n if (words !== \"\") words += \" and \";\r\n \r\n if (input < 20) words += numbersToWords[input];\r\n else {\r\n words += numbersToWords[Math.floor(input / 10) * 10];\r\n if (input % 10 > 0) {\r\n words += \"-\" + numbersToWords[input % 10];\r\n }\r\n }\r\n }\r\n return words\r\n }\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { AccordionModule, ModalModule } from 'ngx-bootstrap';\r\nimport { ResponsiveModule } from 'ngx-responsive';\r\n\r\nimport { ProjectRegistrationComponent } from './project-registration.component';\r\nimport { ProjectRegistrationRoutingModule } from './project-registration-routing.module';\r\n\r\nimport { SafePipeModule } from '../utilities/pipes/safe-pipe.module';\r\nimport { PrProjectLeadComponent } from './pr-project-lead/pr-project-lead.component';\r\nimport { PrDeputyProjectLeadComponent } from './pr-deputy-project-lead/pr-deputy-project-lead.component';\r\nimport { PrSubmissionGroupComponent } from './pr-submission-group/pr-submission-group.component';\r\nimport { PrSubmissionComponent } from './pr-submission/pr-submission.component';\r\nimport { PrServiceComponent } from './pr-service/pr-service.component';\r\nimport { PrAddressComponent } from './pr-address/pr-address.component';\r\nimport { Angular2PromiseButtonModule } from 'angular2-promise-buttons/dist';\r\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n BrowserModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ResponsiveModule,\r\n ToastrModule.forRoot(),\r\n AccordionModule.forRoot(),\r\n ModalModule.forRoot(),\r\n TooltipModule.forRoot(),\r\n SafePipeModule,\r\n ProjectRegistrationRoutingModule,\r\n Angular2PromiseButtonModule.forRoot({\r\n spinnerTpl: '',\r\n disableBtn: true, \r\n btnLoadingClass: 'is-loading',\r\n handleCurrentBtnOnly: false\r\n })\r\n ],\r\n declarations: [\r\n ProjectRegistrationComponent,\r\n PrProjectLeadComponent,\r\n PrDeputyProjectLeadComponent,\r\n PrSubmissionGroupComponent,\r\n PrSubmissionComponent,\r\n PrServiceComponent,\r\n PrAddressComponent\r\n ]\r\n})\r\nexport class ProjectRegistrationModule {}","module.exports = \"
\\r\\n
\\r\\n
\\r\\n Open full report \\r\\n
\\r\\n
\\r\\n

\\r\\n {{ metric.reportName }} \\r\\n \\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{ metric.latestMonth.cohortAverage > 100 ? (metric.latestMonth.cohortAverage | number: '1.0-0') : (metric.latestMonth.cohortAverage | number: metric.decimalPlaces) }}%\\r\\n \\r\\n -\\r\\n

\\r\\n \\r\\n {{ projectId == 52 ? 'Regional' : 'National' }} mean\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n {{ metric.latestMonth.submissionValue > 100 ? (metric.latestMonth.submissionValue | number: '1.0-0') : (metric.latestMonth.submissionValue | number: metric.decimalPlaces) }}%\\r\\n \\r\\n -\\r\\n

\\r\\n \\r\\n Submission value\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Benchmark: {{ metric.benchmark }}%\\r\\n
\\r\\n
\\r\\n 6-month average: {{ metric.average6 }}%\\r\\n
\\r\\n
\\r\\n Completion rate: {{ metric.percentageCompletion ? metric.percentageCompletion : '-' }}%\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n National average: {{ metric.nationalAverage | number: '1.0-0' }}%\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \".tile {\\n padding: 1em;\\n border-radius: 4px;\\n border: 2px solid #CCCCCC;\\n margin: 1em 0;\\n background-color: white;\\n position: relative; }\\n\\n.tile:hover {\\n cursor: pointer;\\n border-color: #005EB8; }\\n\\n.tile .open-report {\\n display: none; }\\n\\n.tile:hover .open-report {\\n display: inherit;\\n position: absolute;\\n top: 0.5em;\\n right: 1em;\\n font-weight: bold;\\n font-size: 14px;\\n color: #005EB8;\\n background-color: white;\\n padding: 5px;\\n z-index: 10000; }\\n\\n.tile h4 {\\n margin-top: 0;\\n font-size: 1.4em;\\n line-height: 1.25em;\\n font-weight: 700;\\n height: 70px;\\n overflow-y: hidden; }\\n\\n.tile .button {\\n padding: 3px 9px;\\n border-radius: 3px;\\n background-color: #F3F3F3;\\n margin-top: 0.25em;\\n margin-bottom: 0.25em;\\n margin-right: 0.25em;\\n white-space: nowrap; }\\n\\n.tile .button.link {\\n background-color: #F3F3F3;\\n color: #768692;\\n font-size: 13px; }\\n\\n.tile .button.link:hover {\\n cursor: pointer;\\n background-color: #CCCCCC; }\\n\\n.tile .value span {\\n font-weight: 700;\\n display: block;\\n font-size: 3em;\\n color: #005EB8; }\\n\\n#fullscreen.tile .value span {\\n font-size: 2em; }\\n\\n.tile .value p {\\n margin-bottom: 0;\\n font-size: 14px; }\\n\\n#fullscreen.tile .value p {\\n font-size: 12px; }\\n\\n.tile .sparkline-container {\\n padding: 1em;\\n border-radius: 4px; }\\n\\n.tile .fa-red {\\n margin-right: 0.25em; }\\n\\n.tile .fa-green {\\n margin-right: 0.25em; }\\n\\n.tile .secondary-info {\\n margin-top: 1em; }\\n\\n.tile .secondary-info div {\\n display: inline-block;\\n padding: 5px 10px;\\n background-color: #768692;\\n color: white;\\n border-radius: 3px;\\n margin-right: 0.75em;\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n white-space: nowrap; }\\n\\n@media only screen and (max-width: 1500px) {\\n .tile h4 {\\n font-size: 1.2em;\\n line-height: 1.25em; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHJvamVjdC9ibG9jay9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxwcm9qZWN0XFxibG9ja1xcYmxvY2suY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3Byb2plY3QvYmxvY2svQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNJLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIseUJBQXlCO0VBQ3pCLGFBQWE7RUFDYix1QkFBdUI7RUFDdkIsa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksZUFBZTtFQUNmLHFCQ1ZjLEVBQUE7O0FEYWxCO0VBQ0ksYUFBYSxFQUFBOztBQUdqQjtFQUNJLGdCQUFnQjtFQUNoQixrQkFBa0I7RUFDbEIsVUFBVTtFQUNWLFVBQVU7RUFDVixpQkFBaUI7RUFDakIsZUFBZTtFQUNmLGNDeEJjO0VEeUJkLHVCQUF1QjtFQUN2QixZQUFZO0VBQ1osY0FBYyxFQUFBOztBQUdsQjtFQUNJLGFBQWE7RUFDYixnQkFBZ0I7RUFDaEIsbUJBQW1CO0VBQ25CLGdCQUFnQjtFQUNoQixZQUFZO0VBQ1osa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksZ0JBQWdCO0VBQ2hCLGtCQUFrQjtFQUNsQix5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLHFCQUFxQjtFQUNyQixvQkFBb0I7RUFDcEIsbUJBQW1CLEVBQUE7O0FBR3ZCO0VBQ0kseUJBQXlCO0VBQ3pCLGNDakRjO0VEa0RkLGVBQWUsRUFBQTs7QUFHbkI7RUFDSSxlQUFlO0VBQ2YseUJBQXlCLEVBQUE7O0FBRzdCO0VBQ0ksZ0JBQWdCO0VBQ2hCLGNBQWM7RUFDZCxjQUFjO0VBQ2QsY0NoRWMsRUFBQTs7QURtRWxCO0VBQ0ksY0FBYyxFQUFBOztBQUdsQjtFQUNJLGdCQUFnQjtFQUNoQixlQUFlLEVBQUE7O0FBR25CO0VBQ0ksZUFBZSxFQUFBOztBQUduQjtFQUNJLFlBQVk7RUFDWixrQkFBa0IsRUFBQTs7QUFHdEI7RUFDSSxvQkFBb0IsRUFBQTs7QUFHeEI7RUFDSSxvQkFBb0IsRUFBQTs7QUFHeEI7RUFDSSxlQUFlLEVBQUE7O0FBR25CO0VBQ0kscUJBQXFCO0VBQ3JCLGlCQUFpQjtFQUNqQix5QkNsR2M7RURtR2QsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixvQkFBb0I7RUFDcEIsaUJBQWlCO0VBQ2pCLG9CQUFvQjtFQUNwQixtQkFBbUIsRUFBQTs7QUFHdkI7RUFDSTtJQUNJLGdCQUFnQjtJQUNoQixtQkFBbUIsRUFBQSxFQUN0QiIsImZpbGUiOiJzcmMvYXBwL3Byb2plY3QvYmxvY2svYmxvY2suY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi92YXJpYWJsZXMnO1xyXG5cclxuLnRpbGUge1xyXG4gICAgcGFkZGluZzogMWVtO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgYm9yZGVyOiAycHggc29saWQgI0NDQ0NDQztcclxuICAgIG1hcmdpbjogMWVtIDA7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLnRpbGU6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbn1cclxuXHJcbi50aWxlIC5vcGVuLXJlcG9ydCB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4udGlsZTpob3ZlciAub3Blbi1yZXBvcnQge1xyXG4gICAgZGlzcGxheTogaW5oZXJpdDtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMC41ZW07XHJcbiAgICByaWdodDogMWVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICBwYWRkaW5nOiA1cHg7XHJcbiAgICB6LWluZGV4OiAxMDAwMDtcclxufVxyXG5cclxuLnRpbGUgaDQge1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxuICAgIGZvbnQtc2l6ZTogMS40ZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS4yNWVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgIGhlaWdodDogNzBweDtcclxuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcclxufVxyXG5cclxuLnRpbGUgLmJ1dHRvbiB7XHJcbiAgICBwYWRkaW5nOiAzcHggOXB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjNGMztcclxuICAgIG1hcmdpbi10b3A6IDAuMjVlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuMjVlbTtcclxuICAgIG1hcmdpbi1yaWdodDogMC4yNWVtO1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxufVxyXG5cclxuLnRpbGUgLmJ1dHRvbi5saW5rIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNGM0YzRjM7XHJcbiAgICBjb2xvcjogJG5ocy1ncmV5O1xyXG4gICAgZm9udC1zaXplOiAxM3B4O1xyXG59XHJcblxyXG4udGlsZSAuYnV0dG9uLmxpbms6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0NDQ0NDQztcclxufVxyXG5cclxuLnRpbGUgLnZhbHVlIHNwYW4ge1xyXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgZm9udC1zaXplOiAzZW07XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG59XHJcblxyXG4jZnVsbHNjcmVlbi50aWxlIC52YWx1ZSBzcGFuIHtcclxuICAgIGZvbnQtc2l6ZTogMmVtO1xyXG59XHJcblxyXG4udGlsZSAudmFsdWUgcCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG59XHJcblxyXG4jZnVsbHNjcmVlbi50aWxlIC52YWx1ZSBwIHtcclxuICAgIGZvbnQtc2l6ZTogMTJweDtcclxufVxyXG5cclxuLnRpbGUgLnNwYXJrbGluZS1jb250YWluZXIge1xyXG4gICAgcGFkZGluZzogMWVtO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG59XHJcblxyXG4udGlsZSAuZmEtcmVkIHtcclxuICAgIG1hcmdpbi1yaWdodDogMC4yNWVtO1xyXG59XHJcblxyXG4udGlsZSAuZmEtZ3JlZW4ge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjI1ZW07XHJcbn1cclxuXHJcbi50aWxlIC5zZWNvbmRhcnktaW5mbyB7XHJcbiAgICBtYXJnaW4tdG9wOiAxZW07XHJcbn1cclxuXHJcbi50aWxlIC5zZWNvbmRhcnktaW5mbyBkaXYge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgcGFkZGluZzogNXB4IDEwcHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNzVlbTtcclxuICAgIG1hcmdpbi10b3A6IDAuNWVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG59XHJcblxyXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE1MDBweCkge1xyXG4gICAgLnRpbGUgaDQge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMS4yZW07XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjVlbTtcclxuICAgIH1cclxufSIsIiRpY29uLWZvbnQtcGF0aDogJy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAtc2Fzcy9hc3NldHMvZm9udHMvYm9vdHN0cmFwLyc7XHJcblxyXG4vLyBDdXN0b20gdmFyaWFibGVzXHJcbiRuaHMtYmx1ZTogIzAwNUVCODtcclxuJG5ocy1kYXJrLWJsdWU6ICMwMDQ0ODU7XHJcbiRuaHMtZ3JleTogIzc2ODY5MjtcclxuJG5ocy1mYWRlZC1ibHVlOiAjRjJGN0ZCO1xyXG4kYWN0aXZlLWFkbWluLXllbGxvdzogI0ZEQkMzMDtcclxuJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93OiAjRTU5OTAwO1xyXG4gXHJcbi8vIEJvb3RzdHJhcCB2YXJpYWJsZXNcclxuJHRleHQtY29sb3I6IGJsYWNrO1xyXG4kYm9yZGVyLXJhZGl1cy1iYXNlOiAwO1xyXG4kYm9yZGVyLXJhZGl1cy1zbWFsbDogMDtcclxuJGJyYW5kLXByaW1hcnk6ICRuaHMtYmx1ZTtcclxuJGJyYW5kLXN1Y2Nlc3M6IGdyZWVuO1xyXG4kbGluay1ob3Zlci1kZWNvcmF0aW9uOiBub25lO1xyXG4kZm9udC1zaXplLWg0OiAxN3B4O1xyXG4kbmF2YmFyLW1hcmdpbi1ib3R0b206IDA7XHJcbiRuYXZiYXItaGVpZ2h0OiA2MHB4O1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtYmc6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWJvcmRlci1jb2xvcjogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaWNvbi1iYXItYmc6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOiB3aGl0ZTtcclxuXHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc6ICRuaHMtYmx1ZTtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1jb2xvcjogd2hpdGU7XHJcbiRuYXYtcGlsbHMtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJHRhYmxlLWJnLWhvdmVyOiAkbmhzLWZhZGVkLWJsdWU7XHJcbiRoZWFkaW5ncy1zbWFsbC1jb2xvcjogJG5ocy1ncmV5OyJdfQ== */\"","import { Component, OnChanges, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-block',\r\n templateUrl: './block.component.html',\r\n styleUrls: ['./block.component.scss']\r\n})\r\n\r\nexport class BlockComponent implements OnChanges {\r\n \r\n @Input() metric;\r\n @Input() projectId;\r\n @Input() colorBlindnessEnabled;\r\n @Input() showSubmission: boolean;\r\n @Input() projectView: string;\r\n @Output() selectMetric: EventEmitter = new EventEmitter();\r\n\r\n sparklineOptions;\r\n nationalMean = '#009639';\r\n submissionValue = '#DA291C';\r\n constructor() {}\r\n\r\n ngOnChanges() {\r\n if(this.colorBlindnessEnabled) {\r\n this.nationalMean = '#7CB5EC';\r\n this.submissionValue = '#D81B60';\r\n }\r\n this.createSparkline(this.metric.dateList, this.metric);\r\n }\r\n\r\n createSparkline(data, metric) {\r\n \r\n let benchmark, tooltipFooter;\r\n if (this.projectId == 29) {\r\n benchmark = +metric.benchmark\r\n tooltipFooter = '
Grey line denotes benchmark
';\r\n } else {\r\n tooltipFooter = '';\r\n }\r\n\r\n this.sparklineOptions = {\r\n title: { text: '' },\r\n tooltip: {\r\n shared: true,\r\n useHTML: true,\r\n backgroundColor: 'rgba(0,0,0,0.8)',\r\n borderWidth: 0,\r\n shadow: false,\r\n headerFormat: '
{point.key}
',\r\n pointFormat: '',\r\n footerFormat: tooltipFooter,\r\n valueDecimals: 2,\r\n style: { color: '#FFFFFF' }\r\n },\r\n exporting: { enabled: false },\r\n chart: {\r\n height: 110,\r\n type: 'line',\r\n margin: [0, 0, 0, 0],\r\n animation: false,\r\n style: { \r\n fontFamily: '\"Helvetica Neue\", Arial, sans-serif',\r\n overflow: 'visible'\r\n },\r\n backgroundColor: 'transparent',\r\n },\r\n legend: false,\r\n credits: false,\r\n yAxis: {\r\n title: {\r\n text: null\r\n },\r\n maxPadding: 0,\r\n minPadding: 0,\r\n gridLineWidth: 0,\r\n ticks: false,\r\n endOnTick: false,\r\n labels: {\r\n enabled: false,\r\n },\r\n gridLineColor: 'transparent',\r\n plotLines: [{\r\n color: '#768692',\r\n value: benchmark,\r\n width: '2',\r\n zIndex: 5\r\n }]\r\n },\r\n xAxis: {\r\n tickLength: 0,\r\n categories: data.map(d => d.dateName.substring(0, 3) + '-' + d.dateName.slice(-2)),\r\n crosshair: true,\r\n labels: {\r\n style: {\r\n color: '#000000',\r\n width: '300px'\r\n },\r\n autoRotation: 0,\r\n overflow: 'allow',\r\n formatter() {\r\n if(this.isFirst || this.isLast) {\r\n return this.value\r\n } else {\r\n return ''\r\n }\r\n }\r\n },\r\n lineColor: 'transparent',\r\n gridLineColor: 'transparent'\r\n },\r\n plotOptions: {\r\n series: {\r\n animation: false,\r\n enableMouseTracking: true,\r\n lineWidth: 2,\r\n shadow: false,\r\n states: {\r\n hover: {\r\n lineWidth: 1\r\n }\r\n },\r\n marker: {\r\n radius: 2\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n data: data.map(d => d.cohortAverage),\r\n name: this.projectId == 52 ? 'Regional Mean' : 'National Mean',\r\n color: this.nationalMean,\r\n states: {\r\n hover: {\r\n color: '#F5A623'\r\n },\r\n inactive: {\r\n color: '#09DEED',\r\n opacity: 1\r\n },\r\n select: {\r\n borderColor: '#FFFFFF',\r\n color: '#DA291C'\r\n }\r\n }\r\n },\r\n {\r\n data: this.showSubmission ? data.map(d => d.submissionValue) : [],\r\n name: 'Submission value',\r\n color: this.submissionValue,\r\n states: {\r\n hover: {\r\n color: '#F5A623'\r\n },\r\n inactive: {\r\n color: '#09DEED',\r\n opacity: 1\r\n },\r\n select: {\r\n borderColor: '#FFFFFF',\r\n color: '#DA291C'\r\n }\r\n }\r\n },\r\n {\r\n data: data.map(d => d.nationalAverage),\r\n name: 'National average',\r\n color: '#768692',\r\n states: {\r\n hover: {\r\n color: '#F5A623'\r\n },\r\n inactive: {\r\n color: '#09DEED',\r\n opacity: 1\r\n },\r\n select: {\r\n borderColor: '#FFFFFF',\r\n color: '#DA291C'\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n\r\n // Utilities\r\n\r\n selectDashboardTier(tier) {\r\n this.selectMetric.emit(tier);\r\n }\r\n\r\n}","module.exports = \"
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n The downloader will cycle through reports for {{ currentPeriod }}, load each report to the screen and then download as (.png)\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
{series.name}:{point.y}
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
ReportTier Breakdown
\\r\\n

\\r\\n \\r\\n {{ item.name }}\\r\\n

\\r\\n
\\r\\n
    \\r\\n
  • {{ item.tiers.tierOne }}
  • \\r\\n
      \\r\\n
    • {{ item.tiers.tierTwo }}
    • \\r\\n
        \\r\\n
      • {{ item.tiers.tierThree }}
      • \\r\\n
      \\r\\n
    \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\"","module.exports = \".error {\\n margin-top: 1em;\\n text-align: left; }\\n\\n.custom-bullet li {\\n display: block; }\\n\\n.custom-bullet li:before {\\n /*Using a Bootstrap glyphicon as the bullet point*/\\n content: \\\"\\\\e080\\\";\\n font-family: 'Glyphicons Halflings';\\n font-size: 9px;\\n float: left;\\n margin-top: 4px;\\n margin-left: -17px;\\n color: #CCCCCC; }\\n\\n.fa-square {\\n color: #005EB8; }\\n\\n.fa-check-square {\\n color: #28a745; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHJvamVjdC9tb2RhbC9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxwcm9qZWN0XFxtb2RhbFxcbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3Byb2plY3QvbW9kYWwvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNFLGVBQWU7RUFDZixnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxjQUFjLEVBQUE7O0FBR2hCO0VBRUUsa0RBQUE7RUFDQSxnQkFBZ0I7RUFDaEIsbUNBQW1DO0VBQ25DLGNBQWM7RUFDZCxXQUFXO0VBQ1gsZUFBZTtFQUNmLGtCQUFrQjtFQUNsQixjQUFjLEVBQUE7O0FBR2hCO0VBQ0UsY0NyQmdCLEVBQUE7O0FEd0JsQjtFQUNFLGNBQWMsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3Byb2plY3QvbW9kYWwvbW9kYWwuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IFwiLi4vLi4vLi4vdmFyaWFibGVzXCI7XHJcblxyXG4uZXJyb3Ige1xyXG4gIG1hcmdpbi10b3A6IDFlbTtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG59XHJcblxyXG4uY3VzdG9tLWJ1bGxldCBsaSB7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbn1cclxuXHJcbi5jdXN0b20tYnVsbGV0IGxpOmJlZm9yZVxyXG57XHJcbiAgLypVc2luZyBhIEJvb3RzdHJhcCBnbHlwaGljb24gYXMgdGhlIGJ1bGxldCBwb2ludCovXHJcbiAgY29udGVudDogXCJcXGUwODBcIjtcclxuICBmb250LWZhbWlseTogJ0dseXBoaWNvbnMgSGFsZmxpbmdzJztcclxuICBmb250LXNpemU6IDlweDtcclxuICBmbG9hdDogbGVmdDtcclxuICBtYXJnaW4tdG9wOiA0cHg7XHJcbiAgbWFyZ2luLWxlZnQ6IC0xN3B4O1xyXG4gIGNvbG9yOiAjQ0NDQ0NDO1xyXG59XHJcblxyXG4uZmEtc3F1YXJlIHtcclxuICBjb2xvcjogJG5ocy1ibHVlO1xyXG59XHJcblxyXG4uZmEtY2hlY2stc3F1YXJlIHtcclxuICBjb2xvcjogIzI4YTc0NTtcclxufSIsIiRpY29uLWZvbnQtcGF0aDogJy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAtc2Fzcy9hc3NldHMvZm9udHMvYm9vdHN0cmFwLyc7XHJcblxyXG4vLyBDdXN0b20gdmFyaWFibGVzXHJcbiRuaHMtYmx1ZTogIzAwNUVCODtcclxuJG5ocy1kYXJrLWJsdWU6ICMwMDQ0ODU7XHJcbiRuaHMtZ3JleTogIzc2ODY5MjtcclxuJG5ocy1mYWRlZC1ibHVlOiAjRjJGN0ZCO1xyXG4kYWN0aXZlLWFkbWluLXllbGxvdzogI0ZEQkMzMDtcclxuJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93OiAjRTU5OTAwO1xyXG4gXHJcbi8vIEJvb3RzdHJhcCB2YXJpYWJsZXNcclxuJHRleHQtY29sb3I6IGJsYWNrO1xyXG4kYm9yZGVyLXJhZGl1cy1iYXNlOiAwO1xyXG4kYm9yZGVyLXJhZGl1cy1zbWFsbDogMDtcclxuJGJyYW5kLXByaW1hcnk6ICRuaHMtYmx1ZTtcclxuJGJyYW5kLXN1Y2Nlc3M6IGdyZWVuO1xyXG4kbGluay1ob3Zlci1kZWNvcmF0aW9uOiBub25lO1xyXG4kZm9udC1zaXplLWg0OiAxN3B4O1xyXG4kbmF2YmFyLW1hcmdpbi1ib3R0b206IDA7XHJcbiRuYXZiYXItaGVpZ2h0OiA2MHB4O1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtYmc6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWJvcmRlci1jb2xvcjogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaWNvbi1iYXItYmc6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOiB3aGl0ZTtcclxuXHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc6ICRuaHMtYmx1ZTtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1jb2xvcjogd2hpdGU7XHJcbiRuYXYtcGlsbHMtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJHRhYmxlLWJnLWhvdmVyOiAkbmhzLWZhZGVkLWJsdWU7XHJcbiRoZWFkaW5ncy1zbWFsbC1jb2xvcjogJG5ocy1ncmV5OyJdfQ== */\"","import { Component, EventEmitter, Input, OnChanges, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-modal',\r\n templateUrl: './modal.component.html',\r\n styleUrls: ['./modal.component.scss']\r\n})\r\nexport class ModalComponent implements OnChanges {\r\n\r\n @Input() tiers;\r\n @Input() selectReportModal;\r\n @Input() currentPeriod;\r\n @Output() valueChange = new EventEmitter();\r\n\r\n showDropdown = false;\r\n errorMessage: string;\r\n tierDone: boolean = false;\r\n tierObject: Array = [];\r\n tierObjectSelect: Array = [];\r\n\r\n constructor() { }\r\n\r\n ngOnChanges() {\r\n if(this.tiers) {\r\n for(const t1 of this.tiers) {\r\n if (t1.childrenTiers && t1.childrenTiers.length) {\r\n for(const t2 of t1.childrenTiers) {\r\n if (t2.childrenTiers && t2.childrenTiers.length) {\r\n for(const t3 of t2.childrenTiers) {\r\n if(t3.reportId != null) {\r\n this.tierObject.push({name: t3.tierName, tierId: t3.tierId, reportId: t3.reportId, \r\n tiers: {tierOne: t1.tierName, tierTwo: t2.tierName}\r\n })\r\n }\r\n if (t3.childrenTiers && t3.childrenTiers.length) {\r\n for(const t4 of t3.childrenTiers) {\r\n this.tierObject.push({name: t4.tierName, tierId: t4.tierId, reportId: t4.reportId, \r\n tiers: {tierOne: t1.tierName, tierTwo: t2.tierName, tierThree: t3.tierName}\r\n })\r\n };\r\n }\r\n };\r\n }\r\n };\r\n }\r\n this.tierDone = true;\r\n };\r\n this.tierObject.forEach(item => item.selected = true );\r\n this.tierObjectSelect = this.tierObject;\r\n }\r\n }\r\n\r\n\r\n submitSelection() {\r\n if(this.tierObjectSelect.every(el => el.selected == false)) {\r\n alert(\"No Reports Have Been Selected, Download Failed\");\r\n } else {\r\n this.tierObjectSelect = this.tierObjectSelect.filter(el => el.selected == true);\r\n this.valueChange.emit(this.tierObjectSelect);\r\n this.tierObjectSelect = this.tierObject;\r\n this.selectReportModal.hide();\r\n this.tierObject.forEach(item => item.selected = true );\r\n }\r\n\r\n }\r\n\r\n reportCheckBox(selection: boolean) {\r\n this.tierObject.forEach(item => item.selected = selection);\r\n this.tierObjectSelect = this.tierObject;\r\n }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { ProjectComponent } from './project.component'\r\n\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service'\r\n\r\nconst projectRoutes: Routes = [\r\n { path: 'project/:projectId', redirectTo: 'project/:projectId/dashboard', pathMatch: 'full' },\r\n { path: 'project/:projectId/collection', redirectTo: 'collection/:projectId', pathMatch: 'full' },\r\n { path: 'project/:projectId/:view', component: ProjectComponent, canActivate: [AuthGuardService] }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(projectRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class ProjectRoutingModule { }","module.exports = \"\\r\\n
1) || dynamicDocumentsDropdown\\\" (click)=\\\"closeMenu()\\\">
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ projectDetails?.projectName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{ o.organisationName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
1\\\">\\r\\n
\\r\\n
\\r\\n {{ t.cName }} ({{ t.dName }} - {{ t.eName }})\\r\\n
\\r\\n {{ t.aName }}\\r\\n \\r\\n {{ t.bName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ t.cName }} ({{ t.dName }})\\r\\n
\\r\\n {{ t.aName }}\\r\\n \\r\\n {{ t.bName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ t.cName }}\\r\\n
\\r\\n {{ t.aName }}\\r\\n \\r\\n {{ t.bName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ t.bName }}\\r\\n
\\r\\n {{ t.aName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n There are no results for this search\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

Loading Dashboard. Please wait...

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

There has been an error loading the Dashboard

\\r\\n

{{ error }} If the problem persists, please contact the support team.

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

Participation Required

\\r\\n

Thank you for your interest in the Community Indicators project. In order to view the outputs, your organisation must first register for, and take part in, the project.

\\r\\n

Click here to return to the home page and register for the project.

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

Outputs

\\r\\n

{{ projectName }}

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Click here to view the full toolkit, or click on a dashboard metric below to enter toolkit view and see all the data behind the selected metric.\\r\\n
\\r\\n
\\r\\n
\\r\\n Mass Download\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
Select period
\\r\\n
\\r\\n
{{ selectedProjectDate.dateName }}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ date.dateName }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Select submission
\\r\\n
\\r\\n
{{ selectedSubmission.submissionCode}}: {{ selectedSubmission.submissionName }}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ sub.submissionCode }}: {{ sub.submissionName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
1\\\">\\r\\n
Select dashboard type
\\r\\n
\\r\\n
{{ selectedReportGroup.groupDisplayName }}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ group.groupDisplayName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
0 && (projectId == 52 || projectId == 42)\\\">\\r\\n
Report Download
\\r\\n
\\r\\n
View reports...
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ document.documentName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
More options
\\r\\n
\\r\\n
View options...
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n View full screen\\r\\n
\\r\\n
\\r\\n {{ showSubmission ? 'Hide' : 'Show' }} submission values\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n View Example Report\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Key Statistics\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n Colour Blindness Correction\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n Loading metrics...\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n {{ errorMetrics }}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{ group[0] }}

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

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

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Download (.png)\\r\\n \\r\\n \\r\\n Close full screen\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Close Download\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Mass Report Download has started...

\\r\\n

\\r\\n The selected reports will begin to download any moment.\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n Loading report...\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n Applying Colour Blind Correction...\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n You are making another selection. Click here to return to the loaded report.\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n {{ errorReport }}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n {{ reportDetails.reportName }}\\r\\n by {{ selectedCategoryType }}\\r\\n POSTPONED\\r\\n

\\r\\n

{{ selectedProjectDate.dateName }}

\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Mean:{{ averagesTable[0].y | number: reportSettings.maxDecPlaces }} (%)\\r\\n
\\r\\n
\\r\\n \\r\\n Median:{{ averagesTable[0].median | number: reportSettings.maxDecPlaces }} (%)\\r\\n
\\r\\n
\\r\\n \\r\\n {{ projectId == 52 ? 'Regional' : 'Sample' }} Average:{{ averagesTable[0].nationalCalculatedMean | number: reportSettings.maxDecPlaces }} (%) \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Data for {{ selectedProjectDate.dateName }}:

\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
SubmissionResult (%)
\\r\\n  {{ d.name }}\\r\\n \\r\\n {{ d.y | number: reportSettings.maxDecPlaces }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n

Numerator / Denominator Values:

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
SubmissionNumeratorDenominator
\\r\\n  {{ d.name }}\\r\\n \\r\\n {{ d.numeratorValue | number: reportSettings.maxDecPlaces }}\\r\\n \\r\\n {{ d.denominatorValue | number: reportSettings.maxDecPlaces }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Submission\\r\\n {{ col }} (%)\\r\\n
 {{ d.submission }}0{{ col.y | number: reportSettings.maxDecPlaces }}
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Submission\\r\\n {{ col.categoryName }} (%)\\r\\n
 {{ d.submission }}0{{ col.y | number: reportSettings.maxDecPlaces }}
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

{{ d.name }} Values:

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Type-{{ col.name }} (%)
{{ av.name }}{{ col.y | number: reportSettings.maxDecPlaces }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{ notification.notificationTitle }}: \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Select a metric
\\r\\n
\\r\\n
{{ selectedTierName ? selectedTierName : 'Select a metric...' }}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ t1.tierName}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ t2.tierName}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ t3.tierName}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ t4.tierName}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Select period
\\r\\n
\\r\\n
{{ selectedProjectDate.dateName }}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
{{ date.dateName }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Select service
\\r\\n
\\r\\n
{{ selectedOption ? selectedOption : 'Make a selection...' }}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ o.tierName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
Select category type
\\r\\n
\\r\\n
{{ selectedCategoryType }}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ ct }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Welcome to the {{ projectName }}

\\r\\n

\\r\\n Welcome to the full toolkit for the {{ projectName }}. This toolkit holds all the benchmarked results for the project. To navigate through the findings, please use the drop-down box above to select a metric, then month and service options will appear.\\r\\n

\\r\\n

\\r\\n For metrics where your organisation has submitted data, your position will be highlighted on the chart.\\r\\n

\\r\\n

\\r\\n If you have any queries, please contact the Support Team.\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n Loading report...\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n Applying Colour Blind Correction...\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n You are making another selection. Click here to return to the loaded report.\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n {{ errorReport }}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n {{ reportDetails.reportName }}\\r\\n by {{ selectedCategoryType }}\\r\\n POSTPONED\\r\\n

\\r\\n

{{ selectedProjectDate.dateName }}

\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ l.name }}\\r\\n
\\r\\n
\\r\\n
0 && submissionVisible\\\">Add submission to time series
\\r\\n
0 && submissionVisible\\\">\\r\\n \\r\\n
\\r\\n  \\r\\n {{ sub.submissionCode }}: {{ sub.submissionName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n  \\r\\n {{ sub.submissionCode }}: {{ sub.submissionName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Download\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Download Chart (.png)\\r\\n
\\r\\n
\\r\\n Download Time Series Chart (.png)\\r\\n
\\r\\n
\\r\\n Data for {{ selectedProjectDate.dateName }} Table (.csv)\\r\\n \\r\\n
\\r\\n
\\r\\n {{ projectId == 52 ? 'Regional' : 'Sample' }} Averages Table (.csv)\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Numerator / Denominator Values Table (.csv)\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n Colour Blindness Correction\\r\\n
\\r\\n \\r\\n
\\r\\n Anonymous View\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{ notification.notificationTitle }}: \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n

Data for {{ selectedProjectDate.dateName }}:

\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
SubmissionResult (%)
\\r\\n  {{ d.name }}\\r\\n \\r\\n {{ d.y | number: reportSettings.maxDecPlaces }}\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n

Numerator / Denominator Values:

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
SubmissionNumeratorDenominator
\\r\\n  {{ d.name }}\\r\\n \\r\\n {{ d.numeratorValue | number: reportSettings.maxDecPlaces }}\\r\\n \\r\\n {{ d.denominatorValue | number: reportSettings.maxDecPlaces }}\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Submission\\r\\n {{ col }} (%)\\r\\n
 {{ d.submission }}0{{ col.y | number: reportSettings.maxDecPlaces }}
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Submission\\r\\n {{ col.categoryName }} (%)\\r\\n
 {{ d.submission }}0{{ col.y | number: reportSettings.maxDecPlaces }}
\\r\\n
\\r\\n
\\r\\n\\r\\n

{{ projectId == 52 ? 'Regional' : 'Sample' }} Averages:

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Month\\r\\n \\r\\n Mean (%)\\r\\n \\r\\n \\r\\n Median (%)\\r\\n \\r\\n \\r\\n {{ projectId == 52 ? 'National' : 'Sample' }} Average (%)\\r\\n
{{ av.dateName }}{{ av.y | number: reportSettings.maxDecPlaces }}{{ av.median | number: reportSettings.maxDecPlaces }}{{ av.nationalCalculatedMean | number: reportSettings.maxDecPlaces }}
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Type-{{ col.name }} (%)
\\r\\n {{ group[0]}}\\r\\n
{{ av.name }}{{ col.y | number: reportSettings.maxDecPlaces }}
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{ d.name }} Values:

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Type-{{ col.name }} (%)
{{ av.name }}{{ col.y | number: reportSettings.maxDecPlaces }}
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n Please wait for the report to load...\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n {{ errorReportMetrics }}\\r\\n
\\r\\n\\r\\n
\\r\\n Print or Save\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"logo-mark\\\"\\r\\n
\\r\\n
\\r\\n

{{ projectName }}

\\r\\n

Report for {{ selectedProjectDate.dateName }}

\\r\\n

\\r\\n {{ selectedOrganisation.organisationCode }}: \\r\\n {{ selectedOrganisation.organisationName }}\\r\\n

\\r\\n
\\r\\n {{ sub.anonSubmissionCode ? sub.anonSubmissionCode + ':' : '' }} {{ sub.submissionName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{ projectName }}

\\r\\n

Report for {{ selectedProjectDate.dateName }}

\\r\\n

Example Report

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

Contents

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
SectionPage
Information about the Project3
Key Metrics:
{{ r.reportName }}{{ r.pageNumber }}
Participants List for {{ selectedProjectDate.dateName }}{{ reportSectionsLength + 4 }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n

Introduction

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

\\r\\n The Community Services Covid-19 dashboard is a NEW project for all providers of community services, which commenced in June 2020, following the coronavirus pandemic. This monthly targeted data collection aims to track the impact of the Covid-19 pandemic on community health services provision across the UK, with the specification consisting of a limited number of key metrics to enable providers to track ongoing changes in the delivery of services and provide an impact assessment for both local providers and the NHS as a whole.\\r\\n

\\r\\n

\\r\\n The project will help providers understand their relative positions on Covid-19 in terms of the disruption, recovery, and transformation of services that is being experienced across the NHS. The project is UK wide and will produce a monthly online comparative dashboard, an online toolkit together with the ability to download this PDF reports for all participating providers. It is open to members only. Members can join at any point in the cycle.\\r\\n

\\r\\n

\\r\\n This report highlights the findings on 18 key metrics in dashboard format, although the monthly comparisons on all metrics can be found in the monthly online dashboard and toolkit members.nhsbenchmarking.nhs.uk/project/41. It is intended that this report can be used by members to provide comparative intelligence and insight to their Board on tracking the impact on community health services of the coronavirus locally. For each of the 18 metrics, 2 chart types are displayed: a column chart which details your organisation/submission response against other providers. There is also a monthly time series chart outlining the trend from the months for which data has been supplied to date. Your organisation/submissions’ position is marked in red on the column charts. All other participating organisation/submissions’ positions are anonymised, and codes will not be shared.\\r\\n

\\r\\n

\\r\\n Please note: Data for the project is refreshed on a monthly basis. National positions included in this report may change, as new participants join the project and provide data for previous months.\\r\\n

\\r\\n

\\r\\n Feedback is welcomed on this new project via joylin.brockett@nhs.net.\\r\\n

\\r\\n

\\r\\n For further information on the Community Services Covid-19 dashboard project, please contact joylin.brockett@nhs.net.\\r\\n

\\r\\n

\\r\\n There is a similar monthly dashboard project for providers of Mental Health and learning Disability care. Further information is available from e.fox4@nhs.net. The data specification for the MH tracker is available on the Members' Area.\\r\\n

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

\\r\\n The Community Indicators project helps community providers track their performance, across {{ chartCount }} metrics covering patient safety and quality, access, productivity, workforce, finance and Virtual Wards. The project is UK wide and will produce a monthly online comparative dashboard, an online toolkit, data extract together with the ability to download this PDF reports for participating providers. It is open to members only. Members can join at any point in the cycle.\\r\\n

\\r\\n

\\r\\n Data collected within this project contributes to filling the gap in the lack of national data set, at present, on community-based provision. The submission data is benchmarked and displayed across a range of outputs, to help community providers easily review their position against the sample average, to identify areas of good practice and service improvement.\\r\\n

\\r\\n

\\r\\n On average, 8 working days elapse from submission of data to output publication, enabling providers to have the timely evidence to inform the Trust Board on performance across the 6 domains. Results from the project can be used in your organisation’s internal performance management systems.\\r\\n

\\r\\n

\\r\\n This report highlights the findings on {{ chartCount }} key metrics in dashboard format, although the monthly comparisons on all metrics can be found in the monthly online dashboard and toolkit www.members.nhsbenchmarking.nhs.uk/project/29 . It is intended that this report can be used by members to provide comparative intelligence and insight to their Board on tracking the performance across community health services. \\r\\n

\\r\\n

\\r\\n For each of the metrics, 2 chart types are displayed: a column chart which details your organisation/submission response against other providers. There is also a monthly time series chart outlining the trend from the months for which data has been supplied to date. Your organisation/submissions’ position is marked in red on the column charts. All other participating organisation/submissions’ positions are coded. The list of organisations submitting data to the project are highlighted at the back of the report.\\r\\n

\\r\\n

\\r\\n Outputs for the 2023/24 Community Indicators project are anonymous. Benchmarked results are displayed with unique identifiers known only to the individual participants themselves. However, a selection of organisations have chosen to share their identifiable code with other participants to support greater collaboration and shared learning. These organisations will have received a list of organisation codes and names of providers, that have likewise opted in to share their code.
The identifiable findings should not be shared outside of your organisation.\\r\\n

\\r\\n

\\r\\n Please note: Data for the project is refreshed on a monthly basis. National positions included in this report may change, as new participants join the project and provide data for previous months.\\r\\n

\\r\\n

\\r\\n Feedback is welcomed on this project via Kaitlyn Biggs (k.biggs2@nhs.net).\\r\\n

\\r\\n

\\r\\n For further information on the Community Indicators project, please contact Kaitlyn Biggs (k.biggs2@nhs.net) or Nayan Mistry (n.mistry5@nhs.net). \\r\\n

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

Participants List for {{ selectedProjectDate.dateName }}

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
#Organisation
{{ i + 1 }}{{ p.OrganisationName }}
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Submission
{{ p.submissionName }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Report TiersSelected Reports
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ t1.tierName }}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ t2.tierName }}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0; then canRemove else cannotRemove\\\">\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n {{ t3.tierName }}\\r\\n
\\r\\n
\\r\\n \\r\\n {{ t3.tierName }}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n {{ t4.tierName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{ item.tier }}{{ item.parent }}
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
All reports are selected
\\r\\n
\\r\\n
\\r\\n
\\r\\n The downloader will cycle through reports for {{ selectedPeriod }}, load each report to the screen and then download them as (.png)\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"h2 {\\n margin: 1em 0; }\\n\\nh5 {\\n margin: 0.5em 0;\\n font-size: 12px;\\n font-weight: 600;\\n color: #768692;\\n text-transform: uppercase; }\\n\\n.mt-2 {\\n margin-top: 1em; }\\n\\n.mr-2 {\\n margin-right: 0.5em; }\\n\\n.mr-4 {\\n margin-right: 1em; }\\n\\n.ml-2 {\\n margin-left: 0.5em; }\\n\\n.c-pointer {\\n cursor: pointer; }\\n\\n.fa-check-circle {\\n color: #009639 !important; }\\n\\n.background {\\n background-color: #F3F3F3;\\n border-radius: 3px;\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n padding-top: 1em;\\n padding-bottom: 1em;\\n position: relative; }\\n\\n#intro {\\n margin-top: 2em;\\n margin-bottom: 1em;\\n padding-bottom: 1em;\\n border-bottom: 1px solid #ccc; }\\n\\n#intro h1 {\\n margin-top: 0;\\n margin-bottom: 0.25em;\\n font-weight: 700; }\\n\\n#intro h2 {\\n color: #005EB8;\\n margin-top: 0;\\n margin-bottom: 0.5em;\\n font-weight: 700; }\\n\\n.open-full-toolkit {\\n background-color: #009639;\\n padding: 0.75em 1em 0.7em 1em;\\n border-radius: 4px;\\n color: white; }\\n\\n.open-full-toolkit:hover {\\n cursor: pointer;\\n background-color: #006747; }\\n\\n.start-mass-download {\\n background-color: #ae2573;\\n padding: 0.75em 1em 0.7em 1em;\\n border-radius: 4px;\\n color: white; }\\n\\n.start-mass-download:hover {\\n cursor: pointer; }\\n\\n#metrics h3 {\\n margin-top: 0; }\\n\\n#metrics h3:hover {\\n color: black;\\n cursor: pointer; }\\n\\n#metrics .group {\\n margin-top: 1em;\\n padding: 1em 2em;\\n border: 1px solid #005EB8;\\n border-radius: 4px; }\\n\\n#metrics .group-title {\\n margin-top: 1em; }\\n\\n.loading-data {\\n text-align: center;\\n margin-top: 30vh;\\n margin-bottom: 30vh;\\n color: #005EB8;\\n font-weight: 500; }\\n\\n.welcome-message {\\n margin-top: 5vh;\\n margin-bottom: 15vh; }\\n\\n.loading-data p:first-of-type {\\n font-size: 2em; }\\n\\n.loading-data.error {\\n color: #757575; }\\n\\n.error-report {\\n margin: 15vh 0;\\n font-size: 17px;\\n text-align: center;\\n color: #757575; }\\n\\n.loading-report {\\n position: absolute;\\n top: 2em;\\n left: 0;\\n width: 50%;\\n margin-left: 25%;\\n background-color: #005EB8;\\n color: white;\\n padding: 1em;\\n margin-top: 0.5em;\\n border-radius: 4px;\\n font-size: 17px;\\n text-align: center;\\n z-index: 500;\\n box-shadow: 0 14px 28px rgba(0, 0, 0, 0.1), 0 10px 10px rgba(0, 0, 0, 0.1); }\\n\\n.loading-report:hover {\\n cursor: pointer;\\n background-color: #004485; }\\n\\n#toolkit {\\n margin-bottom: 3em;\\n position: relative; }\\n\\n.menu-background {\\n position: fixed;\\n background-color: rgba(0, 0, 0, 0.01);\\n top: -1em;\\n height: 100vh;\\n width: 100vw;\\n z-index: 100; }\\n\\n#selectorBar {\\n background-color: #005EB8;\\n padding-top: 0.5em;\\n padding-bottom: 0.5em;\\n border-radius: 3px;\\n margin-top: -1.5em; }\\n\\n#selectorBar .navigation {\\n display: flex; }\\n\\n#selectorBar .project-name {\\n color: white;\\n opacity: 0.5;\\n font-size: 16px;\\n width: 100%;\\n white-space: nowrap;\\n overflow-x: hidden;\\n padding-left: 1em;\\n padding-top: 9px; }\\n\\n#selectorBar .search-input,\\n#selectorBar .tier-toggle {\\n font-size: 16px;\\n border: 1px solid #004485;\\n background-color: #004485;\\n color: white;\\n padding: 0.5em 0.75em 0.1em 0.75em; }\\n\\n#selectorBar .search-input i,\\n #selectorBar .tier-toggle i {\\n color: white; }\\n\\n#selectorBar .button {\\n font-size: 16px;\\n border: 1px solid #004485;\\n background-color: #004485;\\n color: white;\\n padding: 0.5em 0.75em;\\n border-radius: 3px;\\n max-width: 100%;\\n white-space: nowrap;\\n overflow: hidden !important;\\n text-overflow: ellipsis; }\\n\\n#selectorBar .button:first-of-type {\\n width: auto; }\\n\\n#selectorBar .button i {\\n margin-right: 0.5em; }\\n\\n#selectorBar .search-input {\\n width: 100%;\\n border-radius: 3px;\\n padding: 0.5em 0.75em; }\\n\\n#selectorBar .search-input:focus,\\n#selectorBar .search-input:hover {\\n border-color: #005EB8;\\n outline: none; }\\n\\n#selectorBar .search-input:focus {\\n box-shadow: 0 0 0 1px white; }\\n\\n#selectorBar .search-input::-webkit-input-placeholder {\\n color: white;\\n opacity: 1; }\\n\\n#selectorBar .search-input:-ms-input-placeholder {\\n color: white;\\n opacity: 1; }\\n\\n#selectorBar .search-input::-ms-input-placeholder {\\n color: white;\\n opacity: 1; }\\n\\n#selectorBar .search-input::placeholder {\\n color: white;\\n opacity: 1; }\\n\\n#selectorBar .search-input::-ms-input-placeholder {\\n color: white; }\\n\\n#selectorBar .search-input::-ms-input-placeholder {\\n color: white; }\\n\\n#selectorBar .route {\\n font-size: 14px;\\n color: #CCCCCC;\\n margin-top: 0.1em; }\\n\\n#selectorBar .route i {\\n margin: 0 0.25em; }\\n\\n#selectorBar .no-results {\\n padding: 1em;\\n color: #CCCCCC;\\n width: 100%;\\n text-align: center; }\\n\\n#navigationBar {\\n border-radius: 3px;\\n margin-top: 0.5em;\\n padding: 0.5em 0;\\n background-color: #F3F3F3; }\\n\\n#ribbonBar {\\n position: relative;\\n margin-top: 0.5em; }\\n\\n#ribbonBar .tier-toggle {\\n background-color: #004485;\\n border-color: #004485;\\n color: white;\\n font-size: 14px;\\n padding: 0.35em 0.75em 0 0.75em; }\\n\\n#ribbonBar .tier-toggle i {\\n color: white; }\\n\\n#legendBar .options {\\n position: absolute;\\n top: 0;\\n right: 0.5em;\\n width: 100%; }\\n\\n#legendBar .options .tier-toggle {\\n float: right;\\n margin-top: 0.5em;\\n margin-right: 0.5em;\\n background-color: #F3F3F3;\\n color: #343a40;\\n border-color: transparent;\\n width: auto;\\n font-weight: 600;\\n font-size: 14px;\\n padding: 0.3em 0.75em 0.25em 0.75em; }\\n\\n#legendBar .options .tier-toggle:hover {\\n background-color: #CCCCCC; }\\n\\n#legendBar .options .tier-toggle i {\\n float: none;\\n margin-right: 0.25em;\\n color: #343a40; }\\n\\n#legendBar .options .tier-toggle.-warning {\\n color: orangered;\\n border-color: orangered; }\\n\\n#legendBar .options .tier-toggle.-warning i {\\n color: orangered; }\\n\\n#legendBar .menu-select.-dark {\\n margin-top: 2.5em;\\n margin-right: 1em;\\n max-width: 400px;\\n border: 1px solid black; }\\n\\n#legendBar .menu-select.-dark .tier:hover {\\n cursor: pointer;\\n background-color: black; }\\n\\n.selectors {\\n display: flex;\\n margin-right: 2em; }\\n\\n.selectors .title {\\n display: block;\\n font-weight: 700;\\n margin: 0.25em 0; }\\n\\n.selectors .btn {\\n margin: 0.125em; }\\n\\n.btn:focus {\\n outline: none; }\\n\\n.selected {\\n color: #005EB8; }\\n\\n.btn-legend {\\n display: inline-block;\\n background-color: #F3F3F3;\\n color: gray;\\n border: 1px solid gray;\\n padding: 6px 12px;\\n border-radius: 3px;\\n margin-right: 0.25em;\\n margin-top: 0.25em; }\\n\\n.btn-legend.-active {\\n border-color: black;\\n color: black; }\\n\\n.btn-legend:hover {\\n cursor: pointer;\\n background-color: #CCCCCC; }\\n\\n.view-toggle {\\n padding: 0.425em 0.75em 0.425em 0.75em;\\n background-color: #009639;\\n border-radius: 3px;\\n color: white;\\n text-align: center;\\n width: auto;\\n display: inline-block;\\n margin-right: 0.5em; }\\n\\n.view-toggle i {\\n margin-right: 0.5em; }\\n\\n.view-toggle:hover {\\n background-color: #006747;\\n cursor: pointer; }\\n\\n.colour-toggle {\\n padding: 0.425em 0.75em 0.425em 0.75em;\\n background-color: #004485;\\n border-radius: 3px;\\n color: white;\\n text-align: center;\\n width: auto;\\n display: inline-block;\\n margin-left: 0.5em; }\\n\\n.colour-toggle .fas {\\n margin-right: 8px; }\\n\\n.colour-toggle:hover {\\n cursor: pointer; }\\n\\n.float-right {\\n float: right; }\\n\\n.tier-toggle {\\n border: 1px solid #CCCCCC;\\n background-color: white;\\n border-radius: 3px;\\n font-size: 16px;\\n width: 100%;\\n padding: 0.5em 0.75em 0.2em 0.75em; }\\n\\n.tier-toggle.-dark {\\n background-color: transparent;\\n color: black;\\n padding: 0.25em 0.5em 0 0.5em;\\n margin-top: 1em;\\n border: none;\\n text-align: right;\\n width: 100%; }\\n\\n.tier-toggle.-dark i {\\n float: none;\\n margin-right: 0.25em;\\n color: #005EB8; }\\n\\n.tier-toggle div {\\n display: inline-block;\\n width: 80%;\\n white-space: nowrap;\\n overflow: hidden !important;\\n text-overflow: ellipsis; }\\n\\n.tier-toggle:hover {\\n cursor: pointer;\\n border-color: #005EB8; }\\n\\n.tier-toggle.-select {\\n background-color: transparent;\\n color: #757575; }\\n\\n.tier-toggle i {\\n font-size: 14px;\\n color: #757575;\\n margin-top: 0.35em;\\n float: right; }\\n\\n#allTiers {\\n overflow-x: visible; }\\n\\n.menu-container {\\n position: relative; }\\n\\n.menu-background {\\n position: fixed;\\n background-color: rgba(0, 0, 0, 0.01);\\n top: -1em;\\n height: 100vh;\\n width: 100vw;\\n z-index: 100; }\\n\\n.modal-buttons {\\n border: 1px solid #CCCCCC;\\n border-radius: 3px !important; }\\n\\n.menu-select {\\n position: absolute;\\n top: 0;\\n left: 0;\\n z-index: 1000;\\n background-color: white;\\n min-width: 100%;\\n margin-top: 0.5em;\\n border: 1px solid #CCCCCC;\\n border-radius: 3px;\\n font-size: 16px;\\n text-align: left;\\n padding: 0.25em 0;\\n overflow-y: scroll;\\n box-shadow: 0 14px 28px rgba(0, 0, 0, 0.1), 0 10px 10px rgba(0, 0, 0, 0.1); }\\n\\n.menu-select.-dark {\\n background-color: rgba(0, 0, 0, 0.8);\\n color: white;\\n border-color: black;\\n overflow-y: hidden;\\n min-width: 400px;\\n left: auto;\\n right: 0; }\\n\\n.menu-select.-dark .tier:hover {\\n cursor: inherit;\\n background-color: transparent; }\\n\\n/deep/ .menu-select.-dark a {\\n color: white;\\n text-decoration: underline; }\\n\\n.menu-select .tier {\\n margin: 0.25em;\\n padding: 0.25em 0.5em;\\n border-radius: 3px;\\n white-space: nowrap; }\\n\\n.menu-select .tier:hover {\\n background-color: #F3F3F3;\\n cursor: pointer; }\\n\\n.menu-select .tier.-selected {\\n color: #005EB8; }\\n\\n.menu-select .title {\\n margin-bottom: 0.25em; }\\n\\n.menu-select .subtitle {\\n font-style: italic;\\n margin-bottom: 0.5em; }\\n\\n.menu-select .sub-tier {\\n margin: 0.25em 0; }\\n\\n.menu-select .tier span {\\n font-weight: bold;\\n color: white;\\n padding: 3px 6px;\\n border-radius: 2px;\\n margin-right: 0.5em;\\n white-space: nowrap; }\\n\\n.menu-select .tier p {\\n font-size: 14px; }\\n\\n.metrics {\\n position: relative;\\n min-height: 30vh; }\\n\\n#tierSystem {\\n padding: 0.5em;\\n font-size: 14px; }\\n\\n#tierSystem .new-tier {\\n margin: 0.2em 0; }\\n\\n#tierSystem .new-tier span:hover {\\n cursor: pointer;\\n color: #004485 !important; }\\n\\n#tables {\\n margin-top: 2em; }\\n\\n.highlight-admin {\\n color: #FDBC30 !important;\\n font-weight: 700; }\\n\\nh5 {\\n margin: 0.2em 0;\\n margin-top: 1em; }\\n\\n.span-admin {\\n background-color: #FDBC30;\\n color: black !important; }\\n\\n.chart {\\n width: 100% !important;\\n height: 100% !important;\\n max-width: 100% !important; }\\n\\n/deep/ angular2csv > button {\\n color: transparent !important;\\n background: none !important;\\n border: none !important;\\n padding: 0 !important;\\n line-height: 0 !important;\\n width: auto !important;\\n font-size: 1px !important; }\\n\\n/deep/ angular2csv > button::before {\\n content: \\\"Data Extract\\\" !important;\\n display: block !important;\\n line-height: initial !important;\\n font-size: 16px !important;\\n font-weight: normal !important;\\n color: black !important; }\\n\\n.notification {\\n margin-top: 0.5em; }\\n\\n.notification span {\\n margin-left: 0.25em; }\\n\\n.notification.-notification-warning {\\n color: orangered; }\\n\\n.meadianMean .fa-square {\\n margin-right: 0.25em; }\\n\\n.heading-title h2 {\\n margin-bottom: 0em; }\\n\\n.heading-title h3 {\\n margin-top: 0em; }\\n\\n/deep/ .-notification-warning a {\\n color: orangered;\\n text-decoration: underline; }\\n\\n@media only screen and (max-width: 768px) {\\n #selectorBar .button,\\n .tier-toggle {\\n margin-bottom: 0.25em; }\\n .report-title {\\n margin-top: 1.5em; }\\n #selectorBar .project-name {\\n display: none; } }\\n\\n.metric-lines {\\n font-size: 9px; }\\n\\n.metric-lines td {\\n padding-top: 1px;\\n padding-bottom: 1px; }\\n\\n@page {\\n size: A4;\\n margin: 0; }\\n\\n@media print {\\n .no-print {\\n display: none; } }\\n\\n@media screen {\\n #report {\\n position: relative;\\n background-color: #F3F3F3;\\n padding: 3em 0;\\n margin: 0.5em;\\n border-radius: 4px;\\n min-height: 90vh; }\\n .btn-print {\\n color: #005EB8;\\n font-weight: 700;\\n position: absolute;\\n top: 1em;\\n left: 1em; }\\n .btn-print i {\\n margin-right: 0.5em; }\\n .btn-print:hover {\\n cursor: pointer;\\n color: #004485; }\\n .print-page {\\n width: 700px;\\n background-color: white;\\n border: 1px solid #CCCCCC;\\n margin: 0.5em auto;\\n padding: 2em; } }\\n\\n@media all {\\n html, body {\\n width: 210mm;\\n height: 297mm; }\\n .print-page p {\\n font-size: 10pt; }\\n .print-page table {\\n font-size: 10pt !important; }\\n .print-page-header {\\n height: 15mm; }\\n .print-page-section-mark {\\n text-align: center;\\n padding-top: 50mm; }\\n .print-page-section-mark img {\\n width: 30%; }\\n .print-page-document-title {\\n text-align: center;\\n width: 80%;\\n margin-left: 10%;\\n font-weight: 700 !important; }\\n .print-page-document-title h1 {\\n color: #005EB8 !important; }\\n .print-page-document-title p {\\n font-size: 20px; }\\n .print-page-document-title div {\\n font-size: 12px;\\n margin-bottom: 0.4em; }\\n .print-page-section-full {\\n height: 234mm; }\\n .print-page-section-title {\\n height: 15mm; }\\n .print-page-section-chart {\\n height: 52mm; }\\n .print-page-section-row {\\n width: 100%;\\n display: table; }\\n .print-page-section-row.-footer {\\n page-break-after: always; }\\n .print-page-section-cols {\\n display: table-row;\\n width: 100%; }\\n .print-page-section-timeseries {\\n display: table-cell;\\n height: 50mm;\\n width: 100mm; }\\n .print-page-section-table {\\n display: table-cell;\\n height: 50mm; }\\n .print-page-footer-left {\\n display: table-cell;\\n vertical-align: bottom;\\n height: 15mm;\\n width: 100mm;\\n font-size: 9pt;\\n color: #CCCCCC !important; }\\n .print-page-footer-right {\\n display: table-cell;\\n vertical-align: bottom;\\n text-align: right;\\n height: 15mm;\\n font-size: 9pt;\\n color: #CCCCCC !important; } }\\n\\n#feedbackButton {\\n position: fixed;\\n z-index: 1000;\\n bottom: 1em;\\n right: 1em; }\\n\\n#download {\\n display: none; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHJvamVjdC9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxwcm9qZWN0XFxwcm9qZWN0LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9wcm9qZWN0L0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxfdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSxhQUFhLEVBQUE7O0FBR2pCO0VBQ0ksZUFBZTtFQUNmLGVBQWU7RUFDZixnQkFBZ0I7RUFDaEIsY0NMYztFRE1kLHlCQUF5QixFQUFBOztBQUc3QjtFQUFRLGVBQWUsRUFBQTs7QUFDdkI7RUFBUSxtQkFBbUIsRUFBQTs7QUFDM0I7RUFBUSxpQkFBaUIsRUFBQTs7QUFDekI7RUFBUSxrQkFBa0IsRUFBQTs7QUFDMUI7RUFBYSxlQUFlLEVBQUE7O0FBRTVCO0VBQ0kseUJBQXlCLEVBQUE7O0FBRzdCO0VBQ0kseUJBQXlCO0VBQ3pCLGtCQUFrQjtFQUNsQixpQkFBaUI7RUFDakIsb0JBQW9CO0VBQ3BCLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksZUFBZTtFQUNmLGtCQUFrQjtFQUNsQixtQkFBbUI7RUFDbkIsNkJBQTZCLEVBQUE7O0FBR2pDO0VBQ0ksYUFBYTtFQUNiLHFCQUFxQjtFQUNyQixnQkFBZ0IsRUFBQTs7QUFHcEI7RUFDSSxjQzdDYztFRDhDZCxhQUFhO0VBQ2Isb0JBQW9CO0VBQ3BCLGdCQUFnQixFQUFBOztBQUdwQjtFQUNJLHlCQUF5QjtFQUN6Qiw2QkFBNkI7RUFDN0Isa0JBQWtCO0VBQ2xCLFlBQVksRUFBQTs7QUFKaEI7SUFNUSxlQUFlO0lBQ2YseUJBQXlCLEVBQUE7O0FBSWpDO0VBQ0kseUJBQXlCO0VBQ3pCLDZCQUE2QjtFQUM3QixrQkFBa0I7RUFDbEIsWUFBWSxFQUFBOztBQUpoQjtJQU1RLGVBQWUsRUFB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Z0I7SUFDaEIsMkJBQTJCLEVBQUE7RUFHL0I7SUFDSSx5QkFBMkIsRUFBQTtFQUcvQjtJQUNJLGVBQWUsRUFBQTtFQUduQjtJQUNJLGVBQWU7SUFDZixvQkFBb0IsRUFBQTtFQU94QjtJQUNJLGFBQWEsRUFBQTtFQUlqQjtJQUNJLFlBQVksRUFBQTtFQUloQjtJQUNJLFlBQVksRUFBQTtFQUloQjtJQUNJLFdBQVc7SUFDWCxjQUFjLEVBQUE7RUFJbEI7SUFDSSx3QkFBd0IsRUFBQTtFQUc1QjtJQUNJLGtCQUFrQjtJQUNsQixXQUFXLEVBQUE7RUFHZjtJQUNJLG1CQUFtQjtJQUNuQixZQUFZO0lBQ1osWUFBWSxFQUFBO0VBSWhCO0lBQ0ksbUJBQW1CO0lBQ25CLFlBQVksRUFBQTtFQUloQjtJQUNJLG1CQUFtQjtJQUNuQixzQkFBc0I7SUFDdEIsWUFBWTtJQUNaLFlBQVk7SUFDWixjQUFjO0lBQ2QseUJBQXlCLEVBQUE7RUFJN0I7SUFDSSxtQkFBbUI7SUFDbkIsc0JBQXNCO0lBQ3RCLGlCQUFpQjtJQUNqQixZQUFZO0lBQ1osY0FBYztJQUNkLHlCQUF5QixFQUFBLEVBRTVCOztBQUlMO0VBQ0ksZUFBZTtFQUNmLGFBQWE7RUFDYixXQUFXO0VBQ1gsVUFBVSxFQUFBOztBQUdkO0VBQ0ksYUFBYSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvcHJvamVjdC9wcm9qZWN0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vdmFyaWFibGVzJztcclxuXHJcbmgyIHtcclxuICAgIG1hcmdpbjogMWVtIDA7XHJcbn1cclxuXHJcbmg1IHtcclxuICAgIG1hcmdpbjogMC41ZW0gMDtcclxuICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBjb2xvcjogJG5ocy1ncmV5O1xyXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxufVxyXG5cclxuLm10LTIgeyBtYXJnaW4tdG9wOiAxZW07IH1cclxuLm1yLTIgeyBtYXJnaW4tcmlnaHQ6IDAuNWVtOyB9XHJcbi5tci00IHsgbWFyZ2luLXJpZ2h0OiAxZW07IH1cclxuLm1sLTIgeyBtYXJnaW4tbGVmdDogMC41ZW07IH1cclxuLmMtcG9pbnRlciB7IGN1cnNvcjogcG9pbnRlcjsgfVxyXG5cclxuLmZhLWNoZWNrLWNpcmNsZSB7XHJcbiAgICBjb2xvcjogIzAwOTYzOSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uYmFja2dyb3VuZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGM0YzO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgbWFyZ2luLXRvcDogMC41ZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxuICAgIHBhZGRpbmctdG9wOiAxZW07XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMWVtO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcblxyXG4jaW50cm8ge1xyXG4gICAgbWFyZ2luLXRvcDogMmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xyXG4gICAgcGFkZGluZy1ib3R0b206IDFlbTtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjO1xyXG59XHJcblxyXG4jaW50cm8gaDEge1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuMjVlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbn1cclxuXHJcbiNpbnRybyBoMiB7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcclxufVxyXG5cclxuLm9wZW4tZnVsbC10b29sa2l0IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDk2Mzk7XHJcbiAgICBwYWRkaW5nOiAwLjc1ZW0gMWVtIDAuN2VtIDFlbTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgICY6aG92ZXIge1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2NzQ3O1xyXG4gICAgfVxyXG59XHJcblxyXG4uc3RhcnQtbWFzcy1kb3dubG9hZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWUyNTczO1xyXG4gICAgcGFkZGluZzogMC43NWVtIDFlbSAwLjdlbSAxZW07XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB9XHJcbn1cclxuXHJcbiNtZXRyaWNzIGgzIHtcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbn1cclxuXHJcbiNtZXRyaWNzIGgzOmhvdmVyIHtcclxuICAgIGNvbG9yOiBibGFjaztcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuI21ldHJpY3MgLmdyb3VwIHtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxuICAgIHBhZGRpbmc6IDFlbSAyZW07XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkbmhzLWJsdWU7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbn1cclxuXHJcbiNtZXRyaWNzIC5ncm91cC10aXRsZSB7XHJcbiAgICBtYXJnaW4tdG9wOiAxZW07XHJcbn1cclxuXHJcbi5sb2FkaW5nLWRhdGEge1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgbWFyZ2luLXRvcDogMzB2aDtcclxuICAgIG1hcmdpbi1ib3R0b206IDMwdmg7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcclxufVxyXG5cclxuLndlbGNvbWUtbWVzc2FnZSB7XHJcbiAgICBtYXJnaW4tdG9wOiA1dmg7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxNXZoO1xyXG59XHJcblxyXG4ubG9hZGluZy1kYXRhIHA6Zmlyc3Qtb2YtdHlwZSB7XHJcbiAgICBmb250LXNpemU6IDJlbTtcclxufVxyXG5cclxuLmxvYWRpbmctZGF0YS5lcnJvciB7XHJcbiAgICBjb2xvcjogIzc1NzU3NTtcclxufVxyXG5cclxuLmVycm9yLXJlcG9ydCB7XHJcbiAgICBtYXJnaW46IDE1dmggMDtcclxuICAgIGZvbnQtc2l6ZTogMTdweDtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIGNvbG9yOiAjNzU3NTc1O1xyXG59XHJcblxyXG4ubG9hZGluZy1yZXBvcnQge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAyZW07XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDUwJTtcclxuICAgIG1hcmdpbi1sZWZ0OiAyNSU7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgICBwYWRkaW5nOiAxZW07XHJcbiAgICBtYXJnaW4tdG9wOiAwLjVlbTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgIGZvbnQtc2l6ZTogMTdweDtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIHotaW5kZXg6IDUwMDtcclxuICAgIGJveC1zaGFkb3c6IDAgMTRweCAyOHB4IHJnYmEoMCwwLDAsMC4xKSwgMCAxMHB4IDEwcHggcmdiYSgwLDAsMCwwLjEpO1xyXG59XHJcblxyXG4ubG9hZGluZy1yZXBvcnQ6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDQ4NTtcclxufVxyXG5cclxuI3Rvb2xraXQge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogM2VtO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcblxyXG4ubWVudS1iYWNrZ3JvdW5kIHtcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsMC4wMSk7XHJcbiAgICB0b3A6IC0xZW07XHJcbiAgICBoZWlnaHQ6IDEwMHZoO1xyXG4gICAgd2lkdGg6IDEwMHZ3O1xyXG4gICAgei1pbmRleDogMTAwO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgcGFkZGluZy10b3A6IDAuNWVtO1xyXG4gICAgcGFkZGluZy1ib3R0b206IDAuNWVtO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgbWFyZ2luLXRvcDogLTEuNWVtO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLm5hdmlnYXRpb24ge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5wcm9qZWN0LW5hbWUge1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgb3BhY2l0eTogMC41O1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xyXG4gICAgcGFkZGluZy1sZWZ0OiAxZW07XHJcbiAgICBwYWRkaW5nLXRvcDogOXB4O1xyXG59XHJcblxyXG5cclxuXHJcbiNzZWxlY3RvckJhciAuc2VhcmNoLWlucHV0LFxyXG4jc2VsZWN0b3JCYXIgLnRpZXItdG9nZ2xlIHtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDQ0ODU7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0NDg1O1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgcGFkZGluZzogMC41ZW0gMC43NWVtIDAuMWVtIDAuNzVlbTtcclxuICAgICYgaSB7XHJcbiAgICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgfVxyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ1dHRvbiB7XHJcbiAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjMDA0NDg1O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDQ4NTtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIHBhZGRpbmc6IDAuNWVtIDAuNzVlbTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XHJcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idXR0b246Zmlyc3Qtb2YtdHlwZSB7XHJcbiAgICB3aWR0aDogYXV0bztcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idXR0b24gaSB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLnNlYXJjaC1pbnB1dCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgIHBhZGRpbmc6IDAuNWVtIDAuNzVlbTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5zZWFyY2gtaW5wdXQ6Zm9jdXMsXHJcbiNzZWxlY3RvckJhciAuc2VhcmNoLWlucHV0OmhvdmVyIHtcclxuICAgIGJvcmRlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5zZWFyY2gtaW5wdXQ6Zm9jdXMge1xyXG4gICAgYm94LXNoYWRvdzogMCAwIDAgMXB4IHdoaXRlO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLnNlYXJjaC1pbnB1dDo6cGxhY2Vob2xkZXIge1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgb3BhY2l0eTogMTtcclxufVxyXG4gIFxyXG4jc2VsZWN0b3JCYXIgLnNlYXJjaC1pbnB1dDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5zZWFyY2gtaW5wdXQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAucm91dGUge1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgY29sb3I6ICNDQ0NDQ0M7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjFlbTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5yb3V0ZSBpIHtcclxuICAgIG1hcmdpbjogMCAwLjI1ZW07XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAubm8tcmVzdWx0cyB7XHJcbiAgICBwYWRkaW5nOiAxZW07XHJcbiAgICBjb2xvcjogI0NDQ0NDQztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG59XHJcblxyXG4jbmF2aWdhdGlvbkJhciB7XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjVlbTtcclxuICAgIHBhZGRpbmc6IDAuNWVtIDA7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGM0YzO1xyXG59XHJcblxyXG4jcmliYm9uQmFyIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIG1hcmdpbi10b3A6IDAuNWVtO1xyXG59XHJcblxyXG4jcmliYm9uQmFyIC50aWVyLXRvZ2dsZSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0NDg1O1xyXG4gICAgYm9yZGVyLWNvbG9yOiAjMDA0NDg1O1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgcGFkZGluZzogMC4zNWVtIDAuNzVlbSAwIDAuNzVlbTtcclxufVxyXG5cclxuI3JpYmJvbkJhciAudGllci10b2dnbGUgaSB7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbiNsZWdlbmRCYXIgLm9wdGlvbnMge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgcmlnaHQ6IDAuNWVtO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbiNsZWdlbmRCYXIgLm9wdGlvbnMgLnRpZXItdG9nZ2xlIHtcclxuICAgIGZsb2F0OiByaWdodDtcclxuICAgIG1hcmdpbi10b3A6IDAuNWVtO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNGM0YzRjM7XHJcbiAgICBjb2xvcjogIzM0M2E0MDtcclxuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICB3aWR0aDogYXV0bztcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICBwYWRkaW5nOiAwLjNlbSAwLjc1ZW0gMC4yNWVtIDAuNzVlbTtcclxufVxyXG5cclxuI2xlZ2VuZEJhciAub3B0aW9ucyAudGllci10b2dnbGU6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0NDQ0NDQztcclxufVxyXG5cclxuI2xlZ2VuZEJhciAub3B0aW9ucyAudGllci10b2dnbGUgaSB7XHJcbiAgICBmbG9hdDogbm9uZTtcclxuICAgIG1hcmdpbi1yaWdodDogMC4yNWVtO1xyXG4gICAgY29sb3I6ICMzNDNhNDA7XHJcbn1cclxuXHJcbiNsZWdlbmRCYXIgLm9wdGlvbnMgLnRpZXItdG9nZ2xlLi13YXJuaW5nIHtcclxuICAgIGNvbG9yOiBvcmFuZ2VyZWQ7XHJcbiAgICBib3JkZXItY29sb3I6IG9yYW5nZXJlZDtcclxuICAgICYgaSB7XHJcbiAgICAgICAgY29sb3I6IG9yYW5nZXJlZDtcclxuICAgIH1cclxufVxyXG5cclxuI2xlZ2VuZEJhciAubWVudS1zZWxlY3QuLWRhcmsge1xyXG4gICAgbWFyZ2luLXRvcDogMi41ZW07XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDFlbTtcclxuICAgIG1heC13aWR0aDogNDAwcHg7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjaztcclxufVxyXG5cclxuI2xlZ2VuZEJhciAubWVudS1zZWxlY3QuLWRhcmsgLnRpZXI6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XHJcbn1cclxuXHJcbi5zZWxlY3RvcnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIG1hcmdpbi1yaWdodDogMmVtO1xyXG59XHJcblxyXG4uc2VsZWN0b3JzIC50aXRsZSB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICBtYXJnaW46IDAuMjVlbSAwO1xyXG59XHJcblxyXG4uc2VsZWN0b3JzIC5idG4ge1xyXG4gICAgbWFyZ2luOiAwLjEyNWVtO1xyXG59XHJcblxyXG4uYnRuOmZvY3VzIHtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbn1cclxuXHJcbi5zZWxlY3RlZCB7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG59XHJcblxyXG4uYnRuLWxlZ2VuZCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGM0YzO1xyXG4gICAgY29sb3I6IGdyYXk7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCBncmF5O1xyXG4gICAgcGFkZGluZzogNnB4IDEycHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVlbTtcclxuICAgIG1hcmdpbi10b3A6IDAuMjVlbTtcclxufVxyXG5cclxuLmJ0bi1sZWdlbmQuLWFjdGl2ZSB7XHJcbiAgICBib3JkZXItY29sb3I6IGJsYWNrO1xyXG4gICAgY29sb3I6IGJsYWNrO1xyXG59XHJcblxyXG4uYnRuLWxlZ2VuZDpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NDQ0NDO1xyXG59XHJcblxyXG4udmlldy10b2dnbGUge1xyXG4gICAgcGFkZGluZzogMC40MjVlbSAwLjc1ZW0gMC40MjVlbSAwLjc1ZW07XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5NjM5O1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgd2lkdGg6IGF1dG87XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59XHJcblxyXG4udmlldy10b2dnbGUgaSB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59XHJcblxyXG4udmlldy10b2dnbGU6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjc0NztcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmNvbG91ci10b2dnbGUge1xyXG4gICAgcGFkZGluZzogMC40MjVlbSAwLjc1ZW0gMC40MjVlbSAwLjc1ZW07XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0NDg1O1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgd2lkdGg6IGF1dG87XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBtYXJnaW4tbGVmdDogMC41ZW07XHJcbn1cclxuXHJcbi5jb2xvdXItdG9nZ2xlIC5mYXMge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiA4cHg7XHJcbn1cclxuXHJcbi5jb2xvdXItdG9nZ2xlOmhvdmVyIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmZsb2F0LXJpZ2h0IHtcclxuICAgIGZsb2F0OiByaWdodDtcclxufVxyXG5cclxuLnRpZXItdG9nZ2xlIHtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgcGFkZGluZzogMC41ZW0gMC43NWVtIDAuMmVtIDAuNzVlbTtcclxufVxyXG5cclxuLnRpZXItdG9nZ2xlLi1kYXJrIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgY29sb3I6IGJsYWNrO1xyXG4gICAgcGFkZGluZzogMC4yNWVtIDAuNWVtIDAgMC41ZW07XHJcbiAgICBtYXJnaW4tdG9wOiAxZW07XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4udGllci10b2dnbGUuLWRhcmsgaSB7XHJcbiAgICBmbG9hdDogbm9uZTtcclxuICAgIG1hcmdpbi1yaWdodDogMC4yNWVtO1xyXG4gICAgY29sb3I6ICRuaHMtYmx1ZTtcclxufVxyXG5cclxuLnRpZXItdG9nZ2xlIGRpdiB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB3aWR0aDogODAlO1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcclxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG59XHJcblxyXG4udGllci10b2dnbGU6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbn1cclxuXHJcbi50aWVyLXRvZ2dsZS4tc2VsZWN0IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgY29sb3I6ICM3NTc1NzU7XHJcbn1cclxuXHJcbi50aWVyLXRvZ2dsZSBpIHtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIGNvbG9yOiAjNzU3NTc1O1xyXG4gICAgbWFyZ2luLXRvcDogMC4zNWVtO1xyXG4gICAgZmxvYXQ6IHJpZ2h0O1xyXG59XHJcblxyXG4jYWxsVGllcnMge1xyXG4gICAgb3ZlcmZsb3cteDogdmlzaWJsZTtcclxufVxyXG5cclxuLm1lbnUtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLm1lbnUtYmFja2dyb3VuZCB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLDAuMDEpO1xyXG4gICAgdG9wOiAtMWVtO1xyXG4gICAgaGVpZ2h0OiAxMDB2aDtcclxuICAgIHdpZHRoOiAxMDB2dztcclxuICAgIHotaW5kZXg6IDEwMDtcclxufVxyXG5cclxuLm1vZGFsLWJ1dHRvbnMge1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0NDQ0NDQztcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ubWVudS1zZWxlY3Qge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHotaW5kZXg6IDEwMDA7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICAgIG1pbi13aWR0aDogMTAwJTtcclxuICAgIG1hcmdpbi10b3A6IDAuNWVtO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0NDQ0NDQztcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICBwYWRkaW5nOiAwLjI1ZW0gMDtcclxuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcclxuICAgIGJveC1zaGFkb3c6IDAgMTRweCAyOHB4IHJnYmEoMCwwLDAsMC4xKSwgMCAxMHB4IDEwcHggcmdiYSgwLDAsMCwwLjEpO1xyXG59XHJcblxyXG4ubWVudS1zZWxlY3QuLWRhcmsge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwLjgpO1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgYm9yZGVyLWNvbG9yOiBibGFjaztcclxuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcclxuICAgIG1pbi13aWR0aDogNDAwcHg7XHJcbiAgICBsZWZ0OiBhdXRvO1xyXG4gICAgcmlnaHQ6IDA7XHJcbn1cclxuXHJcbi5tZW51LXNlbGVjdC4tZGFyayAudGllcjpob3ZlciB7XHJcbiAgICBjdXJzb3I6IGluaGVyaXQ7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxufVxyXG5cclxuL2RlZXAvIC5tZW51LXNlbGVjdC4tZGFyayBhIHtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG59XHJcblxyXG4ubWVudS1zZWxlY3QgLnRpZXIge1xyXG4gICAgbWFyZ2luOiAwLjI1ZW07XHJcbiAgICBwYWRkaW5nOiAwLjI1ZW0gMC41ZW07XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG59XHJcblxyXG4ubWVudS1zZWxlY3QgLnRpZXI6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjNGMztcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLm1lbnUtc2VsZWN0IC50aWVyLi1zZWxlY3RlZCB7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG59XHJcblxyXG4ubWVudS1zZWxlY3QgLnRpdGxlIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuMjVlbTtcclxufVxyXG5cclxuLm1lbnUtc2VsZWN0IC5zdWJ0aXRsZSB7XHJcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcclxufVxyXG5cclxuLm1lbnUtc2VsZWN0IC5zdWItdGllciB7XHJcbiAgICBtYXJnaW46IDAuMjVlbSAwO1xyXG59XHJcblxyXG4ubWVudS1zZWxlY3QgLnRpZXIgc3BhbiB7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIHBhZGRpbmc6IDNweCA2cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxufVxyXG5cclxuLm1lbnUtc2VsZWN0IC50aWVyIHAge1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG59XHJcblxyXG4ubWV0cmljcyB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBtaW4taGVpZ2h0OiAzMHZoO1xyXG59XHJcblxyXG4jdGllclN5c3RlbSB7XHJcbiAgcGFkZGluZzogMC41ZW07XHJcbiAgZm9udC1zaXplOiAxNHB4OyAgXHJcbn1cclxuXHJcbiN0aWVyU3lzdGVtIC5uZXctdGllciB7XHJcbiAgICBtYXJnaW46IDAuMmVtIDA7XHJcbn1cclxuXHJcbiN0aWVyU3lzdGVtIC5uZXctdGllciBzcGFuOmhvdmVyIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGNvbG9yOiAjMDA0NDg1ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbiN0YWJsZXMge1xyXG4gICAgbWFyZ2luLXRvcDogMmVtO1xyXG59XHJcblxyXG4uaGlnaGxpZ2h0LWFkbWluIHtcclxuICAgIGNvbG9yOiAkYWN0aXZlLWFkbWluLXllbGxvdyAhaW1wb3J0YW50O1xyXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcclxufVxyXG5cclxuaDUge1xyXG4gICAgbWFyZ2luOiAwLjJlbSAwO1xyXG4gICAgbWFyZ2luLXRvcDogMWVtO1xyXG59XHJcblxyXG4uc3Bhbi1hZG1pbiB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWN0aXZlLWFkbWluLXllbGxvdztcclxuICAgIGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uY2hhcnQge1xyXG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcclxuICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50O1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi9kZWVwLyBhbmd1bGFyMmNzdiA+IGJ1dHRvbiB7XHJcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xyXG4gICAgbGluZS1oZWlnaHQ6IDAgIWltcG9ydGFudDtcclxuICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XHJcbiAgICBmb250LXNpemU6IDFweCAhaW1wb3J0YW50O1xyXG59XHJcbiAgXHJcbi9kZWVwLyBhbmd1bGFyMmNzdiA+IGJ1dHRvbjo6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6IFwiRGF0YSBFeHRyYWN0XCIgIWltcG9ydGFudDtcclxuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHJcbiAgICBsaW5lLWhlaWdodDogaW5pdGlhbCAhaW1wb3J0YW50O1xyXG4gICAgZm9udC1zaXplOiAxNnB4ICFpbXBvcnRhbnQ7XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsICFpbXBvcnRhbnQ7XHJcbiAgICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcclxufVxyXG5cclxuLm5vdGlmaWNhdGlvbiB7XHJcbiAgICBtYXJnaW4tdG9wOiAwLjVlbTtcclxuICAgICYgc3BhbiB7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAuMjVlbTtcclxuICAgIH1cclxufVxyXG5cclxuLm5vdGlmaWNhdGlvbi4tbm90aWZpY2F0aW9uLXdhcm5pbmcge1xyXG4gICAgY29sb3I6IG9yYW5nZXJlZDtcclxufVxyXG5cclxuLm1lYWRpYW5NZWFuIC5mYS1zcXVhcmUge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjI1ZW07XHJcbn1cclxuXHJcbi5oZWFkaW5nLXRpdGxlIHtcclxuICAgJiBoMiB7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMGVtO1xyXG4gICAgfVxyXG4gICAgJiBoMyB7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogMGVtO1xyXG4gICAgfVxyXG59XHJcblxyXG4vZGVlcC8gLi1ub3RpZmljYXRpb24td2FybmluZyBhIHtcclxuICAgIGNvbG9yOiBvcmFuZ2VyZWQ7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxufVxyXG5cclxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xyXG4gICAgI3NlbGVjdG9yQmFyIC5idXR0b24sXHJcbiAgICAudGllci10b2dnbGUgIHtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjI1ZW07XHJcbiAgICB9XHJcbiAgICAucmVwb3J0LXRpdGxlIHtcclxuICAgICAgICBtYXJnaW4tdG9wOiAxLjVlbTtcclxuICAgIH1cclxuICAgICNzZWxlY3RvckJhciAucHJvamVjdC1uYW1lIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG59XHJcblxyXG4vLyBQcmludCBzdHlsZXNcclxuXHJcbi5tZXRyaWMtbGluZXMge1xyXG4gICAgZm9udC1zaXplOiA5cHg7XHJcbn1cclxuXHJcbi5tZXRyaWMtbGluZXMgdGQge1xyXG4gICAgcGFkZGluZy10b3A6IDFweDtcclxuICAgIHBhZGRpbmctYm90dG9tOiAxcHg7XHJcbn1cclxuXHJcbkBwYWdlIHtcclxuICAgIHNpemU6IEE0O1xyXG4gICAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG5AbWVkaWEgcHJpbnQge1xyXG4gICAgLm5vLXByaW50IHsgXHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxufVxyXG5cclxuQG1lZGlhIHNjcmVlbiB7XHJcbiAgICBcclxuICAgICNyZXBvcnQge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGM0YzO1xyXG4gICAgICAgIHBhZGRpbmc6IDNlbSAwO1xyXG4gICAgICAgIG1hcmdpbjogMC41ZW07XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICAgIG1pbi1oZWlnaHQ6IDkwdmg7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1wcmludCB7XHJcbiAgICAgICAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICAgICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB0b3A6IDFlbTtcclxuICAgICAgICBsZWZ0OiAxZW07XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1wcmludCBpIHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tcHJpbnQ6aG92ZXIge1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBjb2xvcjogIzAwNDQ4NTtcclxuICAgIH1cclxuXHJcbiAgICAucHJpbnQtcGFnZSB7XHJcbiAgICAgICAgd2lkdGg6IDcwMHB4O1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7XHJcbiAgICAgICAgbWFyZ2luOiAwLjVlbSBhdXRvO1xyXG4gICAgICAgIHBhZGRpbmc6IDJlbTtcclxuICAgIH1cclxuXHJcbn1cclxuXHJcbkBtZWRpYSBhbGwge1xyXG5cclxuICAgIGh0bWwsIGJvZHkge1xyXG4gICAgICB3aWR0aDogMjEwbW07XHJcbiAgICAgIGhlaWdodDogMjk3bW07XHJcbiAgICB9XHJcblxyXG4gICAgLnByaW50LXBhZ2UgcCB7XHJcbiAgICAgICAgZm9udC1zaXplOiAxMHB0O1xyXG4gICAgfVxyXG5cclxuICAgIC5wcmludC1wYWdlIHRhYmxlIHtcclxuICAgICAgICBmb250LXNpemU6IDEwcHQgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAucHJpbnQtcGFnZS1oZWFkZXIge1xyXG4gICAgICAgIGhlaWdodDogMTVtbTtcclxuICAgICAgICAvLyBib3JkZXI6IDNweCBzb2xpZCBibHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC5wcmludC1wYWdlLXNlY3Rpb24tbWFyayB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIHBhZGRpbmctdG9wOiA1MG1tO1xyXG4gICAgfVxyXG5cclxuICAgIC5wcmludC1wYWdlLXNlY3Rpb24tbWFyayBpbWcge1xyXG4gICAgICAgIHdpZHRoOiAzMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLnByaW50LXBhZ2UtZG9jdW1lbnQtdGl0bGUge1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICB3aWR0aDogODAlO1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxMCU7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5wcmludC1wYWdlLWRvY3VtZW50LXRpdGxlIGgxIHtcclxuICAgICAgICBjb2xvcjogJG5ocy1ibHVlICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLnByaW50LXBhZ2UtZG9jdW1lbnQtdGl0bGUgcCB7XHJcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5wcmludC1wYWdlLWRvY3VtZW50LXRpdGxlIGRpdiB7XHJcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNGVtO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIC5wcmludC1wYWdlLXNlY3Rpb24ge1xyXG4gICAgLy8gICAgIGJvcmRlcjogM3B4IHNvbGlkIGdyZWVuO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIC5wcmludC1wYWdlLXNlY3Rpb24tZnVsbCB7XHJcbiAgICAgICAgaGVpZ2h0OiAyMzRtbTtcclxuICAgICAgICAvLyBib3JkZXI6IDNweCBzb2xpZCBncmVlbjtcclxuICAgIH1cclxuXHJcbiAgICAucHJpbnQtcGFnZS1zZWN0aW9uLXRpdGxlIHtcclxuICAgICAgICBoZWlnaHQ6IDE1bW07XHJcbiAgICAgICAgLy8gYm9yZGVyOiAzcHggc29saWQgeWVsbG93O1xyXG4gICAgfVxyXG5cclxuICAgIC5wcmludC1wYWdlLXNlY3Rpb24tY2hhcnQge1xyXG4gICAgICAgIGhlaWdodDogNTJtbTtcclxuICAgICAgICAvLyBib3JkZXI6IDNweCBzb2xpZCBvcmFuZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgLnByaW50LXBhZ2Utc2VjdGlvbi1yb3cge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGRpc3BsYXk6IHRhYmxlO1xyXG4gICAgICAgIC8vIGJvcmRlcjogM3B4IHNvbGlkIHBpbms7XHJcbiAgICB9XHJcblxyXG4gICAgLnByaW50LXBhZ2Utc2VjdGlvbi1yb3cuLWZvb3RlciB7XHJcbiAgICAgICAgcGFnZS1icmVhay1hZnRlcjogYWx3YXlzO1xyXG4gICAgfVxyXG5cclxuICAgIC5wcmludC1wYWdlLXNlY3Rpb24tY29scyB7XHJcbiAgICAgICAgZGlzcGxheTogdGFibGUtcm93O1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5wcmludC1wYWdlLXNlY3Rpb24tdGltZXNlcmllcyB7XHJcbiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcclxuICAgICAgICBoZWlnaHQ6IDUwbW07XHJcbiAgICAgICAgd2lkdGg6IDEwMG1tOyBcclxuICAgICAgICAvLyBib3JkZXI6IDNweCBzb2xpZCBwdXJwbGU7XHJcbiAgICB9XHJcblxyXG4gICAgLnByaW50LXBhZ2Utc2VjdGlvbi10YWJsZSB7XHJcbiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcclxuICAgICAgICBoZWlnaHQ6IDUwbW07XHJcbiAgICAgICAgLy8gYm9yZGVyOiAzcHggc29saWQgYmxhY2s7XHJcbiAgICB9XHJcblxyXG4gICAgLnByaW50LXBhZ2UtZm9vdGVyLWxlZnQge1xyXG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XHJcbiAgICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcclxuICAgICAgICBoZWlnaHQ6IDE1bW07XHJcbiAgICAgICAgd2lkdGg6IDEwMG1tOyBcclxuICAgICAgICBmb250LXNpemU6IDlwdDtcclxuICAgICAgICBjb2xvcjogI0NDQ0NDQyAhaW1wb3J0YW50O1xyXG4gICAgICAgIC8vIGJvcmRlcjogM3B4IHNvbGlkIHB1cnBsZTtcclxuICAgIH1cclxuXHJcbiAgICAucHJpbnQtcGFnZS1mb290ZXItcmlnaHQge1xyXG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XHJcbiAgICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcclxuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgICAgICBoZWlnaHQ6IDE1bW07XHJcbiAgICAgICAgZm9udC1zaXplOiA5cHQ7XHJcbiAgICAgICAgY29sb3I6ICNDQ0NDQ0MgIWltcG9ydGFudDtcclxuICAgICAgICAvLyBib3JkZXI6IDNweCBzb2xpZCBibGFjaztcclxuICAgIH1cclxuXHJcbn1cclxuXHJcbiNmZWVkYmFja0J1dHRvbiB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB6LWluZGV4OiAxMDAwO1xyXG4gICAgYm90dG9tOiAxZW07XHJcbiAgICByaWdodDogMWVtO1xyXG59XHJcblxyXG4jZG93bmxvYWQge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufSIsIiRpY29uLWZvbnQtcGF0aDogJy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAtc2Fzcy9hc3NldHMvZm9udHMvYm9vdHN0cmFwLyc7XHJcblxyXG4vLyBDdXN0b20gdmFyaWFibGVzXHJcbiRuaHMtYmx1ZTogIzAwNUVCODtcclxuJG5ocy1kYXJrLWJsdWU6ICMwMDQ0ODU7XHJcbiRuaHMtZ3JleTogIzc2ODY5MjtcclxuJG5ocy1mYWRlZC1ibHVlOiAjRjJGN0ZCO1xyXG4kYWN0aXZlLWFkbWluLXllbGxvdzogI0ZEQkMzMDtcclxuJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93OiAjRTU5OTAwO1xyXG4gXHJcbi8vIEJvb3RzdHJhcCB2YXJpYWJsZXNcclxuJHRleHQtY29sb3I6IGJsYWNrO1xyXG4kYm9yZGVyLXJhZGl1cy1iYXNlOiAwO1xyXG4kYm9yZGVyLXJhZGl1cy1zbWFsbDogMDtcclxuJGJyYW5kLXByaW1hcnk6ICRuaHMtYmx1ZTtcclxuJGJyYW5kLXN1Y2Nlc3M6IGdyZWVuO1xyXG4kbGluay1ob3Zlci1kZWNvcmF0aW9uOiBub25lO1xyXG4kZm9udC1zaXplLWg0OiAxN3B4O1xyXG4kbmF2YmFyLW1hcmdpbi1ib3R0b206IDA7XHJcbiRuYXZiYXItaGVpZ2h0OiA2MHB4O1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtYmc6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWJvcmRlci1jb2xvcjogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaWNvbi1iYXItYmc6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOiB3aGl0ZTtcclxuXHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc6ICRuaHMtYmx1ZTtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1jb2xvcjogd2hpdGU7XHJcbiRuYXYtcGlsbHMtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJHRhYmxlLWJnLWhvdmVyOiAkbmhzLWZhZGVkLWJsdWU7XHJcbiRoZWFkaW5ncy1zbWFsbC1jb2xvcjogJG5ocy1ncmV5OyJdfQ== */\"","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n\r\n// Services\r\nimport { Meta, Title } from '@angular/platform-browser';\r\nimport { IcsService } from 'app/utilities/services/ics.service';\r\n\r\n// Import pipes\r\nimport { GroupByPipe, OrderByPipe, ChunkPipe, SumPipe } from 'ngx-pipes';\r\nimport { DataService } from 'app/utilities/services/data.service';\r\nimport { ProjectColor } from '_variables';\r\nimport { DynamicInfoPanel } from 'app/utilities/classes/dynamic-info-panel/dynamic-info-panel';\r\nimport { CsvDownload } from 'app/utilities/classes/csv/csv-download';\r\n\r\nimport html2canvas from 'html2canvas'; \r\nimport { ModalDirective } from 'ngx-bootstrap';\r\nimport { MemberService } from 'app/utilities/services/member.service';\r\nimport { ProjectDocument } from 'app/utilities/classes/project/project-document';\r\nimport * as moment from 'moment';\r\n\r\n\r\n@Component({\r\n selector: 'app-project',\r\n templateUrl: './project.component.html',\r\n styleUrls: ['./project.component.scss']\r\n})\r\nexport class ProjectComponent implements OnInit {\r\n\r\n projectId: number;\r\n projectName: string;\r\n projectDetails;\r\n introDashboard: string;\r\n projectDates;\r\n activeAdmin: boolean = false;\r\n projectView: string;\r\n submissionVisible: boolean = true;\r\n subscriptions = [];\r\n error: string; errorReport: string; errorMetrics: string; errorReportMetrics: string;\r\n promo: boolean = false;\r\n hideTable = true;\r\n openSubmissionTables = [];\r\n\r\n copyrightYear: number = new Date().getFullYear();\r\n infoPanel: DynamicInfoPanel;\r\n metrics;\r\n showSubmission: boolean = true;\r\n metricsLoading: boolean = false;\r\n chartCount: number;\r\n\r\n tiers;\r\n searchableTiers;\r\n tierOpen: boolean = false;\r\n selectedTierName; // -- Test\r\n selectedTiers = [\r\n { level: 0, levelName: 'Domain', levelCode: 'a', selected: null, tierName: null, childrenTiers: null, open: false },\r\n { level: 1, levelName: 'Sector', levelCode: 'b', selected: null, tierName: null, childrenTiers: null, open: false, report: null },\r\n { level: 2, levelName: 'Primary', levelCode: 'c', selected: null, tierName: null, childrenTiers: null, open: false, report: null},\r\n { level: 3, levelName: 'Secondary', levelCode: 'd', selected: null, tierName: null, childrenTiers: null, open: false, report: null},\r\n { level: 4, levelName: 'Permissions', levelCode: 'e', selected: null, tierName: null, childrenTiers: null, open: false, report: null},\r\n { level: 5, levelName: 'Search', levelCode: 'f', selected: null, tierName: null, childrenTiers: null, open: false, report: null},\r\n { level: 6, levelName: 'Dates', levelCode: 'g', selected: null, tierName: null, childrenTiers: null, open: false, report: null},\r\n { level: 7, levelName: 'Categories', levelCode: 'h', selected: null, tierName: null, childrenTiers: null, open: false, report: null},\r\n { level: 8, levelName: 'Organisations', levelCode: 'i', selected: null, tierName: null, childrenTiers: null, open: false, report: null},\r\n { level: 9, levelName: 'Date Picker', levelCode: 'j', selected: null, tierName: null, childrenTiers: null, open: false, report: null},\r\n { level: 10, levelName: 'Submissions', levelCode: 'k', selected: null, tierName: null, childrenTiers: null, open: false, report: null},\r\n { level: 11, levelName: 'Downloads', levelCode: 'l', selected: null, tierName: null, childrenTiers: null, open: false, report: null},\r\n { level: 12, levelName: 'New Tiers', levelCode: 'm', selected: null, tierName: null, childrenTiers: null, open: false, report: null},\r\n { level: 13, levelName: 'Options', levelCode: 'n', selected: null, tierName: null, childrenTiers: null, open: false, report: null},\r\n { level: 14, levelName: 'Dashboard Options', levelCode: 'o', selected: null, tierName: null, childrenTiers: null, open: false, report: null},\r\n { level: 15, levelName: 'Report Groups', levelCode: 'q', selected: null, tierName: null, childrenTiers: null, open: false, report: null},\r\n ];\r\n options; selectedOption;\r\n\r\n searchText;\r\n \r\n organisations; \r\n submissions;\r\n submissionData = [];\r\n submissionName;\r\n\r\n reportLoading: boolean = false;\r\n timeseriesAvailable: boolean = true;\r\n reportDetails; reportSettings;\r\n reportType;\r\n reportGroups: any;\r\n reportAllCategories; reportCategories; reportCategoryTypes;\r\n averages; categoryAverages; averagesTable;\r\n\r\n reportData;\r\n monthData; monthAverage;\r\n tableData; tableHeader;\r\n\r\n selectedProjectDate; selectedDate;\r\n selectedCategoryType;\r\n selectedOrganisation;\r\n savedOrganisation;\r\n selectedSubmission;\r\n selectedReportGroup;\r\n\r\n primaryChartOptions; secondaryChartOptions; chartOptions;\r\n primaryChart: any; secondaryChart: any; legend = [];\r\n\r\n params: string;\r\n \r\n csvSettings: CsvDownload;\r\n getTableData: boolean;\r\n getAverages: boolean;\r\n getDenNumTable: boolean;\r\n\r\n reportId: number;\r\n anonymousEnabled: boolean = false;\r\n\r\n // Setting global colors\r\n globalColors = new ProjectColor();\r\n colors = this.globalColors.colors;\r\n subColors = this.globalColors.subColors;\r\n setColour = this.globalColors.setColour;\r\n primaryBarColour = this.globalColors.primaryBarColour;\r\n secondaryBarColour = this.globalColors.secondaryBarColour;\r\n nationalMeanColour = this.globalColors.nationalMeanColour;\r\n nationalMedianColour = this.globalColors.nationalMedianColour;\r\n colourCollection = this.globalColors.colourCollection;\r\n colourBlindCollection = this.globalColors.colourBlindCollection;\r\n\r\n objectKeys = Object.keys;\r\n\r\n // Report\r\n participants;\r\n reportMetrics = [];\r\n reportMetricsLoading: boolean = false;\r\n reportSections; reportSectionsLength;\r\n\r\n // Extract\r\n extractOptions = {\r\n fieldSeparator: ',',\r\n quoteStrings: '\"',\r\n decimalseparator: '.',\r\n showLabels: true,\r\n useBom: false,\r\n removeNewLines: true,\r\n headers: ['Date', 'Code', 'Group', 'Metric', '% completion (in month)', 'Benchmark', 'Group 6-month average', 'Submission value', 'Change from previous month', '% change from previous month'],\r\n keys: ['date', 'code', 'aName', 'reportName', 'percentageCompletion', 'benchmark', 'average6', 'organisationResponse', 'monthStatus', 'monthDiff']\r\n };\r\n\r\n // Colourblindness\r\n colorBlindnessEnabled: boolean = false;\r\n\r\n // Export fullscreen\r\n @ViewChild('fullscreen') fullscreen: ElementRef;\r\n @ViewChild('canvas') canvas: ElementRef;\r\n @ViewChild('downloadLink') downloadLink: ElementRef;\r\n\r\n // Mass Export\r\n @ViewChild('reportDownloadView') reportDownloadView: ElementRef;\r\n @ViewChild('reportCanvas') reportCanvas: ElementRef;\r\n @ViewChild('downloadReportLink') downloadReportLink: ElementRef;\r\n @ViewChild('selectReportModal') public selectReportModal: ModalDirective;\r\n showReportModal: boolean = false;\r\n massDownloadView: boolean = false;\r\n stopMassDownload: boolean = false;\r\n startMassDownload: boolean = false;\r\n selectedPeriod: string;\r\n selected: Array = [];\r\n openTiers: boolean = false;\r\n selectedStatus: boolean;\r\n\r\n // Supplementary data\r\n supplementaryData: any = null;\r\n calculatedNationalMeansAvailable: boolean;\r\n\r\n // Report Download\r\n dynamicDocuments: Array = [];\r\n dynamicDocumentsDropdown: boolean = false;\r\n\r\n constructor(\r\n private titleService: Title,\r\n private meta: Meta,\r\n private dataService: DataService,\r\n private icsService: IcsService,\r\n private memberService: MemberService,\r\n private group: GroupByPipe,\r\n private order: OrderByPipe,\r\n private sum: SumPipe,\r\n private chunk: ChunkPipe,\r\n public route: ActivatedRoute,\r\n public router: Router\r\n ) {\r\n this.projectId = +this.route.snapshot.paramMap.get('projectId');\r\n this.projectView = this.route.snapshot.paramMap.get('view');\r\n }\r\n\r\n ngOnInit() {\r\n window.scrollTo(0, 0);\r\n this.getTiers(this.projectId);\r\n this.params = this.router.url;\r\n }\r\n\r\n public onInfoPanelClick = (info: string): void => {\r\n this.toggleTier(4);\r\n }\r\n\r\n // GET\r\n\r\n getSubmissions(projectId, organisation?) {\r\n this.icsService.submissions(projectId).subscribe(\r\n r => {\r\n\r\n // Set project name\r\n this.projectName = r.data.projectDetails.projectName;\r\n this.projectDetails = r.data.projectDetails;\r\n\r\n // Set admin user\r\n let user = JSON.parse(sessionStorage.getItem('user'));\r\n this.activeAdmin = user && user.isAdmin && user.isAdmin === 'Y' ? true : false;\r\n\r\n // Get available organisations\r\n this.organisations = r.data.userOrganisations;\r\n\r\n // Get saved organisation\r\n let savedOrganisation = JSON.parse(sessionStorage.getItem('organisationId'));\r\n this.savedOrganisation = savedOrganisation;\r\n\r\n // Set selected organisation\r\n let selectedOrganisation;\r\n if (organisation) {\r\n selectedOrganisation = organisation;\r\n } else if (!organisation && !savedOrganisation) {\r\n selectedOrganisation = '';\r\n } else if (savedOrganisation) {\r\n selectedOrganisation = this.organisations.filter(o => o.externalOrganisationId === +savedOrganisation)[0];\r\n } else {\r\n if (this.organisations.length > 0) {\r\n selectedOrganisation = this.organisations[0];\r\n } else {\r\n selectedOrganisation = null;\r\n }\r\n }\r\n this.selectedOrganisation = selectedOrganisation;\r\n\r\n // Save organisationId, if changed\r\n if (organisation && organisation.externalOrganisationId) {\r\n this.dataService.setSelectedOrganisation(organisation.externalOrganisationId);\r\n }\r\n\r\n // Check for permissions then set submissions\r\n if (this.selectedOrganisation && this.selectedOrganisation.submissionList) {\r\n this.submissions = this.formatSubmissions(this.selectedOrganisation);\r\n this.selectedSubmission = this.submissions[0];\r\n }\r\n\r\n // Set project dates\r\n if (this.projectId == 52) {\r\n // For SE MH, ignore selected project date and reset\r\n this.projectDates = this.formatDates(r.data.projectDates);\r\n this.selectedProjectDate = this.projectDates[0];\r\n this.selectedPeriod = this.selectedProjectDate.dateName\r\n\r\n this.setView(this.projectView);\r\n } else {\r\n if (r.data.projectDates.length) {\r\n if (!this.selectedProjectDate) {\r\n this.projectDates = this.formatDates(r.data.projectDates);\r\n this.selectedProjectDate = this.projectDates[0];\r\n this.setView(this.projectView);\r\n } else {\r\n // Set view\r\n this.setView(this.projectView);\r\n }\r\n } else {\r\n this.error = \"There are no active dates set for this project.\"\r\n }\r\n }\r\n\r\n },\r\n e => {\r\n console.log(e);\r\n this.error = e.error.message;\r\n }\r\n )\r\n }\r\n\r\n getReportGroups(projectId) {\r\n this.icsService.reportGroups(projectId, 'Dashboard').subscribe(\r\n r => {\r\n this.reportGroups = r.data.reportGroups;\r\n this.selectedReportGroup = this.reportGroups[0];\r\n this.getDashboard(\r\n this.searchableTiers, \r\n this.projectId, \r\n this.selectedSubmission ? this.selectedSubmission.submissionId : null, \r\n this.selectedProjectDate,\r\n this.selectedReportGroup ? this.selectedReportGroup.reportGroupName : null\r\n );\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n }\r\n\r\n getDashboard(tiers, projectId, submissionId, selectedProjectDate, reportGroupName?) {\r\n this.metricsLoading = true;\r\n this.subscriptions.push(\r\n this.icsService.dashboard(projectId, submissionId, selectedProjectDate.dateId, reportGroupName).subscribe(\r\n r => {\r\n let metrics = this.formatMetrics(tiers, r.data.metricList, selectedProjectDate);\r\n if (metrics.length) {\r\n this.metrics = metrics;\r\n } else {\r\n this.errorMetrics = \"There is no data for this dashboard in the selected period.\"\r\n }\r\n },\r\n e => {\r\n console.log(e);\r\n this.errorMetrics = \"There has been an error loading the metrics. Please try again by refreshing the page.\"\r\n },\r\n () => {\r\n this.metricsLoading = false;\r\n }\r\n )\r\n )\r\n }\r\n\r\n getReport(projectId, dateId, organisation) {\r\n this.reportMetricsLoading = true;\r\n this.subscriptions.push(\r\n this.icsService.report(projectId, dateId, organisation ? organisation.organisationId : null).subscribe(\r\n r => {\r\n let metricList = r.data.metricList;\r\n if (metricList.length) {\r\n let reportSections = this.formatReportMetrics(metricList, organisation);\r\n this.reportSections = this.chunk.transform(reportSections, 2);\r\n this.reportSectionsLength = this.reportSections.length;\r\n this.reportMetrics = []; \r\n this.reportSections.forEach((r, i) => {\r\n r.forEach(rr => {\r\n this.reportMetrics.push({\r\n reportName: rr.reportName,\r\n pageNumber: i + 4\r\n });\r\n });\r\n });\r\n } else {\r\n this.errorReportMetrics = 'There are no metrics for the selected date. Click \"Dashboard\" to go back and select a different date.'\r\n }\r\n },\r\n e => {\r\n console.log(e);\r\n },\r\n () => {\r\n this.reportMetricsLoading = false;\r\n this.chartCount = this.reportMetrics.length;\r\n }\r\n )\r\n )\r\n }\r\n\r\n getParticipants(projectId, dateId) {\r\n if (projectId == 29) {\r\n this.icsService.participantSubmissions(projectId, dateId).subscribe(\r\n r => {\r\n this.participants = r.data.participantList;\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n } else {\r\n this.icsService.participants(projectId, dateId).subscribe(\r\n r => {\r\n this.participants = r.data.participantList;\r\n },\r\n e => {\r\n console.log(e);\r\n }\r\n )\r\n }\r\n }\r\n\r\n massDownloadStarted(reportId, tierName, projectId) {\r\n return new Promise(resolve => {\r\n setTimeout(() => {\r\n this.getSubmissions(projectId);\r\n this.selectedTierName = tierName;\r\n this.getReportDetails(reportId);\r\n\r\n setTimeout(() => {\r\n this.downloadReportImage();\r\n resolve('resolved');\r\n }, 1000);\r\n resolve('resolved');\r\n }, 5000);\r\n });\r\n }\r\n\r\n tierCheck(tier, parent) {\r\n if(tier.selected == true) {\r\n tier.selected = false;\r\n this.selected = this.selected.filter(item => item.reportId != tier.reportId)\r\n } else {\r\n tier.selected = true;\r\n this.selected.push({tier: tier.tierName, tierId: tier.tierId, parent: parent, reportId: tier.reportId});\r\n }\r\n }\r\n\r\n startDownload() {\r\n this.changeView('toolkit');\r\n this.startMassDownload = true;\r\n this.stopMassDownload = false;\r\n this.getTiers(this.projectId, this.selected);\r\n this.showReportModal = true;\r\n }\r\n\r\n massDownloadTiers(selected, openTiers?) {\r\n this.selectedStatus = selected;\r\n this.openTiers = openTiers;\r\n this.tiers.forEach(t1 => {\r\n t1.childrenOpen = openTiers;\r\n if (t1.childrenTiers && t1.childrenTiers.length) {\r\n t1.childrenTiers.forEach(t2 => {\r\n t2.childrenOpen = openTiers;\r\n if (t2.childrenTiers && t2.childrenTiers.length) {\r\n t2.childrenTiers.forEach(t3 => {\r\n t3.childrenOpen = openTiers;\r\n if(t3.childrenTiers.length == 0) {\r\n if(selected != null) {\r\n t3.selected = selected;\r\n }\r\n if(selected) {\r\n this.selected.push({tier: t3.tierName, parent: t2.tierName, reportId: t3.reportId});\r\n }\r\n }\r\n if (t3.childrenTiers && t3.childrenTiers.length) {\r\n t3.childrenTiers.forEach(t4 => {\r\n t4.childrenOpen = openTiers;\r\n if(selected != null) {\r\n t4.selected = selected;\r\n }\r\n if(selected) {\r\n this.selected.push({tier: t4.tierName, parent: t3.tierName, reportId: t4.reportId});\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n async getTiers(projectId: number, selectedTiers?: any) {\r\n this.icsService.getTiers(projectId).subscribe(\r\n async r => {\r\n this.tiers = r.data;\r\n if(this.startMassDownload) {\r\n this.tiers = selectedTiers;\r\n for(let tier of selectedTiers) {\r\n if(this.stopMassDownload) {\r\n this.massDownloadView = false;\r\n break;\r\n } else {\r\n this.massDownloadView = true;\r\n await this.massDownloadStarted(tier.reportId, tier.tier, projectId);\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n this.massDownloadView = false;\r\n this.stopMassDownload = true;\r\n window.location.reload();\r\n }, 6000);\r\n }\r\n if (r.data !== null) {\r\n this.searchableTiers = this.formatTiers(r.data);\r\n } else {\r\n this.error = 'There are no tiers or reports defined for this project.'\r\n }\r\n\r\n if (this.searchableTiers) {\r\n this.getSubmissions(projectId);\r\n } else {\r\n this.error = 'There are no tiers or reports defined for this project.'\r\n }\r\n\r\n },\r\n e => {\r\n if (e.error.message.includes('outputs access')) { \r\n this.promo = true;\r\n } else {\r\n console.log(e);\r\n this.promo = false;\r\n this.error = e.error.message;\r\n }\r\n }\r\n )\r\n }\r\n\r\n async getReportDetails(reportId: number) {\r\n // Stop all API calls and reset\r\n this.reportId = reportId;\r\n this.unsubscribe();\r\n this.reportLoading = true;\r\n\r\n this.subscriptions.push(\r\n this.icsService.reportDetails(reportId).subscribe(\r\n r => {\r\n this.reportDetails = r.data;\r\n this.infoPanel = new DynamicInfoPanel(this.reportDetails)\r\n this.infoPanel.admin = this.activeAdmin;\r\n \r\n // Time series available\r\n if (r.data.timeseriesAvailable == 'Y') {\r\n this.timeseriesAvailable = true;\r\n } else {\r\n this.timeseriesAvailable = false;\r\n }\r\n\r\n // Set categories\r\n this.reportAllCategories = this.formatCategories(r.data.categories);\r\n\r\n if (this.reportAllCategories.categoryTypes.length > 1) {\r\n this.reportCategoryTypes = this.reportAllCategories.categoryTypes;\r\n this.selectedCategoryType = this.reportAllCategories.categoryTypes[0];\r\n this.reportCategories = this.reportAllCategories.categories.filter(c => c.categoryType === this.selectedCategoryType);\r\n } else {\r\n this.reportCategories = this.reportAllCategories.categories;\r\n }\r\n\r\n // Report settings\r\n this.reportSettings = {\r\n decPlaces: r.data.decPlaces,\r\n maxDecPlaces: r.data.decPlaces !== null ? '1.0-' + r.data.decPlaces : '1.2-2',\r\n formatModifier: r.data.formatModifier,\r\n tickInterval: r.data.rangeMax === 100 ? 10 : null,\r\n min: r.data.rangeMin,\r\n max: r.data.rangeMax\r\n }\r\n\r\n // Temporarily hide Oct20 from CI toolkit for three metrics\r\n let hideOct = ['QR3a', 'QR3b', 'QR3c'];\r\n if (hideOct.some(ho => this.selectedTierName.includes(ho))) {\r\n this.projectDates.forEach(pd => { if (pd.dateName === 'October 2020') { pd.hidden = true; } });\r\n this.selectedProjectDate = this.projectDates[1];\r\n this.reportDetails.postponed = true;\r\n } else {\r\n this.projectDates.forEach(pd => { delete pd.hidden; });\r\n \r\n // Set existing project date, if available\r\n let dateParam = this.route.snapshot.queryParams.date;\r\n if (this.projectId == 52) {\r\n // For SE MH, replace project dates with report dates\r\n this.projectDates = r.data.allDates.reverse();\r\n this.selectedProjectDate = this.projectDates[0];\r\n } else {\r\n if (dateParam) {\r\n let date = this.projectDates.find(pd => pd.dateId == dateParam);\r\n this.selectedProjectDate = date ? date : this.projectDates[0];\r\n } else {\r\n this.selectedProjectDate = this.projectDates[0];\r\n }\r\n }\r\n\r\n this.reportDetails.postponed = false;\r\n }\r\n\r\n // Set reportTypes and switch\r\n const reportTypes = r.data.reportViews.map(r => r.reportViewName);\r\n switch(true) {\r\n case reportTypes.includes('Stacked bar'):\r\n this.reportType = 'stacked';\r\n this.getReportDataSeries(reportId, this.selectedProjectDate, this.selectedOrganisation);\r\n break;\r\n case reportTypes.some(r => ['Pie', 'Radar'].includes(r)):\r\n this.reportType = 'pie';\r\n this.getReportDataSeries(reportId, this.selectedProjectDate, this.selectedOrganisation); \r\n break;\r\n case reportTypes.includes('Bar'):\r\n this.reportType = 'bar';\r\n // Make anonymous view default if organisation is NHSBN(232) for SEMH\r\n this.getReportData(\r\n reportId,\r\n this.selectedProjectDate, \r\n this.selectedOrganisation ? this.selectedOrganisation : null,\r\n (this.selectedOrganisation && this.selectedOrganisation.externalOrganisationId == 232 && this.projectId == 52) ? true : false\r\n );\r\n break;\r\n default:\r\n this.error = 'Chart type has not been set.'\r\n }\r\n\r\n // Add reportId to URL\r\n this.router.navigate([], { \r\n relativeTo: this.route, \r\n queryParams: { \r\n reportId: reportId\r\n }, \r\n queryParamsHandling: 'merge'\r\n });\r\n\r\n },\r\n e => {\r\n console.log(e);\r\n this.error = e.error.message;\r\n }\r\n )\r\n )\r\n }\r\n\r\n getReportData(reportId: number, selectedDate, selectedOrganisation?, anon?: boolean) {\r\n this.subscriptions.push(\r\n this.icsService.reportDataAll(reportId, null, selectedOrganisation ? selectedOrganisation.organisationId : null).subscribe(\r\n r => {\r\n this.getSupplementaryData(reportId, r.data, selectedDate, anon);\r\n },\r\n e => {\r\n console.log(e);\r\n this.error = e.error.message;\r\n }\r\n )\r\n )\r\n }\r\n\r\n getReportDataSeries(reportId: number, selectedDate, selectedOrganisation?) {\r\n this.subscriptions.push(\r\n this.icsService.reportDataSeries(reportId, selectedOrganisation ? selectedOrganisation.organisationId : null).subscribe(\r\n r => {\r\n\r\n // Set national averages\r\n this.categoryAverages = this.formatCategoryAverages(r.data.dateCategoryAverages, r.data.dateCategoryMedians);\r\n this.createLineChart(this.categoryAverages);\r\n\r\n if (this.reportType === 'stacked') {\r\n this.reportData = this.new_formatStackedBarData(r.data);\r\n this.setData(this.reportData, selectedDate);\r\n this.isSubmissionsEmpty(this.submissions);\r\n } else {\r\n this.projectDates.forEach(pd => {\r\n this.new_formatCategoryData(pd, r.data);\r\n });\r\n this.new_setData(selectedDate, this.categoryAverages);\r\n }\r\n\r\n },\r\n e => {\r\n console.log(e);\r\n this.error = e.error.message;\r\n }\r\n )\r\n )\r\n }\r\n\r\n getSupplementaryData(reportId: number, reportData: any, selectedDate, anon) {\r\n this.icsService.supplementaryData(reportId).subscribe(\r\n r => {\r\n // Check for supplementary data\r\n this.calculatedNationalMeansAvailable = r.data.supplementaryData.length;\r\n // Map to match calculatedNationalAverages array\r\n let supplementaryData: {} = r.data.supplementaryData.reduce(function(map, obj) {\r\n map[obj.dateId] = obj.supplementaryValue;\r\n return map;\r\n }, {});\r\n // Replace calculatedNationalAverages in data end-point\r\n reportData.calculatedNationalAverages = supplementaryData;\r\n // Continue with processing data\r\n this.reportData = this.formatBarData(reportData, anon);\r\n this.setData(this.reportData, selectedDate);\r\n this.addSubmissiontoLineChart(this.submissions)\r\n this.isSubmissionsEmpty(this.submissions);\r\n },\r\n e => { \r\n console.log(e);\r\n this.error = e.error.message;\r\n }\r\n )\r\n }\r\n\r\n setView(view) {\r\n this.projectView = view;\r\n switch(view) {\r\n case 'toolkit':\r\n let toolkitMetaTitle: string = 'Toolkit | ' + this.projectName + ' | NHS Benchmarking Network';\r\n this.titleService.setTitle(toolkitMetaTitle);\r\n this.meta.updateTag({property: 'og:title', content: toolkitMetaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: toolkitMetaTitle});\r\n // Direct link to a report\r\n let params = this.route.snapshot.queryParams;\r\n if (params) {\r\n this.selectParamTier(params);\r\n }\r\n break;\r\n case 'dashboard':\r\n let dashboardMetaTitle: string = 'Dashboard | ' + this.projectName + ' | NHS Benchmarking Network';\r\n this.titleService.setTitle(dashboardMetaTitle);\r\n this.meta.updateTag({property: 'og:title', content: dashboardMetaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: dashboardMetaTitle});\r\n this.getReportGroups(this.projectId);\r\n if(this.selectedOrganisation && this.selectedOrganisation.externalOrganisationId != undefined) {\r\n this.getAWSDocuments(this.projectId, this.selectedOrganisation.externalOrganisationId, moment(this.selectedProjectDate.dateTo).format('YYYY'))\r\n }\r\n\r\n break;\r\n case 'report':\r\n let reportMetaTitle: string = 'Report | ' + this.projectName + ' | NHS Benchmarking Network';\r\n this.titleService.setTitle(reportMetaTitle);\r\n this.meta.updateTag({property: 'og:title', content: reportMetaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: reportMetaTitle});\r\n // Set project date from params\r\n let paramDate = +this.route.snapshot.queryParams.date;\r\n if (paramDate) {\r\n this.selectedProjectDate = this.projectDates.filter(pd => pd.dateId === paramDate)[0];\r\n }\r\n if (this.selectedProjectDate) {\r\n this.getReport(this.projectId, this.selectedProjectDate.dateId, this.selectedOrganisation);\r\n this.getParticipants(this.projectId, this.selectedProjectDate.dateId);\r\n } else {\r\n this.selectedProjectDate = this.projectDates[0];\r\n this.errorReportMetrics = 'There are no metrics for the selected date. Click \"Dashboard\" to go back and select a different date.'\r\n }\r\n break;\r\n default:\r\n this.error = 'No view set.'\r\n } \r\n }\r\n\r\n getAWSDocuments(projectId: number, organisationId?: number, date?: any) {\r\n this.dynamicDocuments = [];\r\n this.memberService.AWSDocuments(projectId, organisationId).subscribe(\r\n a => {\r\n if (a.data['Bespoke']) {\r\n for(let key in a.data['Bespoke']) {\r\n let reports = a.data['Bespoke'][key];\r\n this.dynamicDocuments = reports;\r\n }\r\n }\r\n if (a.data['Report']) {\r\n for(let key in a.data['Report']) {\r\n let reports = a.data['Report'][key];\r\n reports.forEach(item => {\r\n this.dynamicDocuments.push(item);\r\n })\r\n }\r\n }\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n );\r\n }\r\n\r\n getSelectedDocument(documentId: number) {\r\n this.memberService.AWSSelectedDocument(documentId, this.savedOrganisation).subscribe(\r\n a => { window.open(a.data.documentUrl) }\r\n );\r\n }\r\n\r\n setData(data, selectedDate) {\r\n let dateCheck = data.byMonth.hasOwnProperty(selectedDate.dateName)\r\n if (dateCheck) {\r\n this.errorReport = null;\r\n switch(this.reportType) {\r\n case 'stacked':\r\n if (data.byMonth[selectedDate.dateName]) {\r\n this.createStackedBarChart(data.byMonth[selectedDate.dateName]);\r\n } else {\r\n this.errorReport = 'There is no data for this particular report. Please select another report using the menus above.'\r\n }\r\n break;\r\n case 'pie':\r\n this.monthData = {\r\n data: data.byCategory[selectedDate.dateName],\r\n categories: Object.keys(data.byMonth[selectedDate.dateName])\r\n }\r\n this.createPieChart(data.byCategory[selectedDate.dateName]);\r\n this.createTable(data.bySubmission, selectedDate);\r\n break;\r\n case 'bar':\r\n this.monthData = {\r\n date: selectedDate.dateName,\r\n data: data.byMonth[selectedDate.dateName],\r\n average: data.byMonthAverages.filter(d => d.name === selectedDate.dateName)[0].y\r\n }\r\n // National calculated means\r\n let nationalMeans = data.bySeries.find(s => s.name == 'Calculated National Mean');\r\n if (nationalMeans) {\r\n let monthNationalMean = nationalMeans.data.find(d => d.name === selectedDate.dateName);\r\n if (monthNationalMean) {\r\n this.monthData.nationalCalculatedMean = monthNationalMean.y\r\n }\r\n }\r\n // Reverse order (including rank) if set to ASC in database\r\n if (this.reportDetails.sortOrder && this.reportDetails.sortOrder.includes('ASC')) {\r\n this.monthData.data.reverse();\r\n }\r\n this.createBarChart(this.monthData.data, selectedDate.dateName, this.monthData.nationalCalculatedMean);\r\n this.createLineChart(data.bySeries);\r\n this.createTable(this.monthData.data, selectedDate);\r\n break;\r\n default:\r\n this.error = 'Chart type has not been set.'\r\n }\r\n } else {\r\n this.errorReport = 'There is no data for the selected period. Please select another period from the menu above.'\r\n }\r\n }\r\n\r\n // SELECT\r\n\r\n selectReportGroup(group) {\r\n this.errorMetrics = null;\r\n this.selectedReportGroup = group;\r\n this.getDashboard(this.searchableTiers, \r\n this.projectId, \r\n this.selectedSubmission ? this.selectedSubmission.submissionId : null, \r\n this.selectedProjectDate,\r\n group.reportGroupName\r\n );\r\n }\r\n\r\n clearSelectedTiers(t1?, t2?, t3?, t4?) {\r\n this.options = null;\r\n this.selectedOption = null;\r\n\r\n this.tiers.forEach(t1 => {\r\n delete t1.selected;\r\n if (t1.childrenTiers && t1.childrenTiers.length) {\r\n t1.childrenTiers.forEach(t2 => {\r\n delete t2.selected;\r\n if (t2.childrenTiers && t2.childrenTiers.length) {\r\n t2.childrenTiers.forEach(t3 => {\r\n delete t3.selected;\r\n if (t3.childrenTiers && t3.childrenTiers.length) {\r\n t3.childrenTiers.forEach(t4 => {\r\n delete t4.selected;\r\n });\r\n }\r\n \r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n newSelectTier(t1, t2?, t3?, t4?) {\r\n\r\n this.clearSelectedTiers(t1, t2, t3, t4);\r\n\r\n // Filter only tiers selected\r\n let tiers = [t1, t2, t3, t4].filter(t => t !== null);\r\n\r\n // Mark tiers as selected\r\n tiers.forEach(t => {\r\n t.selected = true;\r\n if (t.tierTypeId === 5) {\r\n this.getReportDetails(t.childrenTiers[0].reportId);\r\n this.options = t.childrenTiers;\r\n this.selectedOption = this.options[0].tierName;\r\n //t.childrenTiers = null;\r\n this.selectedTiers[12].open = false;\r\n this.tierOpen = false;\r\n } else {\r\n this.options = null;\r\n }\r\n });\r\n\r\n // Get the final tier\r\n let selectedTier = tiers.slice(-1)[0];\r\n this.selectedTierName = selectedTier.tierName;\r\n\r\n // Open the final tier's report\r\n if (selectedTier.reportId) {\r\n this.getReportDetails(selectedTier.reportId);\r\n this.selectedTiers[12].open = false;\r\n this.tierOpen = false;\r\n }\r\n\r\n // Add to params\r\n this.router.navigate([], { \r\n relativeTo: this.route, \r\n queryParams: { \r\n a: t1.tierId,\r\n b: t2 && t2.tierId ? t2.tierId : null,\r\n c: t3 && t3.tierId ? t3.tierId : null,\r\n d: t4 && t4.tierId ? t4.tierId : null,\r\n o: null\r\n }, \r\n queryParamsHandling: 'merge'\r\n });\r\n \r\n if(this.secondaryChart !== undefined && this.secondaryChart.series !== undefined)\r\n this.resetSubmissionbuttons();\r\n }\r\n\r\n selectTier(level, tierId, url): any {\r\n\r\n // Select tier from all tiers\r\n let selectedTier;\r\n \r\n if (level === 0) {\r\n selectedTier = this.tiers.filter(t => t.tierId === tierId)[0];\r\n } else {\r\n if (this.selectedTiers[level - 1].childrenTiers) {\r\n selectedTier = this.selectedTiers[level - 1].childrenTiers.filter(t => t.tierId === tierId)[0];\r\n }\r\n }\r\n\r\n if (selectedTier !== undefined) {\r\n\r\n // Set tierId of selected tier and children\r\n this.selectedTiers[level].selected = selectedTier.tierId;\r\n this.selectedTiers[level].tierName = selectedTier.tierName;\r\n this.selectedTiers[level].childrenTiers = selectedTier.childrenTiers;\r\n\r\n // If reportId, set it and set associated report\r\n if (selectedTier.reportId) {\r\n this.selectedTiers[level].report = selectedTier.reportId;\r\n this.getReportDetails(selectedTier.reportId);\r\n }\r\n \r\n // If lower tier selected, null higher tiers\r\n this.selectedTiers.forEach((t, i) => {\r\n if (i > level) {\r\n t.selected = null;\r\n t.tierName = null;\r\n t.childrenTiers = null;\r\n }\r\n })\r\n\r\n // Update URL with tier parameters\r\n if (!url) {\r\n this.router.navigate([], { \r\n relativeTo: this.route, \r\n queryParams: { \r\n a: this.selectedTiers[0].selected,\r\n b: this.selectedTiers[1].selected,\r\n c: this.selectedTiers[2].selected,\r\n d: this.selectedTiers[3].selected\r\n }, \r\n queryParamsHandling: 'merge'\r\n });\r\n }\r\n\r\n // Automatically select the top tier in the fourth group\r\n if (level === 2 && !selectedTier.reportId && !url) {\r\n this.selectTier(3, this.selectedTiers[2].childrenTiers[0].tierId, false);\r\n }\r\n\r\n } else {\r\n this.error = 'This report has moved or no longer exists. Please try using the search function above.'\r\n }\r\n\r\n }\r\n\r\n selectParamTier(params) {\r\n\r\n // Handle option param\r\n let option;\r\n if (params.o) {\r\n option = params.o;\r\n let newParams = {};\r\n Object.keys(params).forEach(p => {\r\n if (p !== 'o') {\r\n newParams[p] = params[p]\r\n }\r\n })\r\n params = newParams;\r\n }\r\n\r\n let tierIds = []\r\n \r\n Object.keys(params).forEach(p => {\r\n if (p !== 'date' && p !== 'reportId') {\r\n tierIds.push(+params[p])\r\n }\r\n });\r\n\r\n // NEW SECTION\r\n let selectedTiers = [];\r\n let t1 = this.tiers.filter(t => t.tierId === tierIds[0])[0];\r\n if (t1) {\r\n t1.childrenOpen = true;\r\n t1.selected = true;\r\n let t2 = t1.childrenTiers.filter(t => t.tierId === tierIds[1])[0];\r\n selectedTiers.push(t1);\r\n if (t2) {\r\n t2.childrenOpen = true;\r\n t2.selected = true;\r\n let t3 = t2.childrenTiers.filter(t => t.tierId === tierIds[2])[0];\r\n selectedTiers.push(t2);\r\n if (t3) {\r\n t3.childrenOpen = true;\r\n t3.selected = true;\r\n let t4 = t3.childrenTiers.filter(t => t.tierId === tierIds[3])[0];\r\n selectedTiers.push(t3);\r\n if (t4) {\r\n t4.selected = true;\r\n selectedTiers.push(t4);\r\n }\r\n }\r\n }\r\n }\r\n let selectedTier = selectedTiers.slice(-1)[0];\r\n if (selectedTier) {\r\n this.selectedTierName = selectedTier.tierName;\r\n if (selectedTier.tierTypeId === 5) {\r\n // If option passed, set/open option\r\n let optionIndex = 0;\r\n if (option) {\r\n optionIndex = selectedTier.childrenTiers.findIndex(ct => ct.tierId == option);\r\n }\r\n this.getReportDetails(selectedTier.childrenTiers[optionIndex].reportId);\r\n this.options = selectedTier.childrenTiers;\r\n this.selectedOption = this.options[optionIndex].tierName;\r\n this.selectedTiers[12].open = false;\r\n this.tierOpen = false;\r\n }\r\n }\r\n // end NEW SECTION\r\n\r\n const tiersFromParams = async () => {\r\n for (let i = 0; i < tierIds.length; i++) {\r\n await selectTier(i, tierIds[i]);\r\n }\r\n }\r\n \r\n const selectTier = (i, tierId) => {\r\n return new Promise((resolve, reject) => {\r\n resolve(\r\n this.selectTier(i, tierId, true)\r\n )\r\n });\r\n };\r\n \r\n tiersFromParams();\r\n }\r\n\r\n selectSearchTier(metric) {\r\n let params;\r\n params = { a: null, b: null, c: null, d: null };\r\n if (metric.aId) { params.a = metric.aId.toString() } else { delete params.a };\r\n if (metric.bId) { params.b = metric.bId.toString() } else { delete params.b };\r\n if (metric.cId) { params.c = metric.cId.toString() } else { delete params.c };\r\n if (metric.dId) { params.d = metric.dId.toString() } else { delete params.d };\r\n if (this.selectedProjectDate) { params.date = this.selectedProjectDate.dateId.toString() };\r\n if (this.projectView === 'toolkit') {\r\n this.selectParamTier(params);\r\n this.router.navigate(['project/' + this.projectId + '/toolkit'], { queryParams: params });\r\n } else {\r\n this.projectView = 'toolkit';\r\n this.selectParamTier(params);\r\n this.router.navigate(['project/' + this.projectId + '/toolkit'], { queryParams: params });\r\n }\r\n \r\n }\r\n\r\n selectCategoryType(type) {\r\n this.reportLoading = true;\r\n this.selectedCategoryType = this.reportAllCategories.categoryTypes.filter(c => c === type)[0];\r\n this.reportCategories = this.reportAllCategories.categories.filter(c => c.categoryType === type);\r\n // TODO: Allow for category type selection without additional API call \r\n this.getReportDataSeries(this.reportDetails.reportId, this.selectedProjectDate, this.selectedOrganisation.organisationId);\r\n this.resetSubmissionbuttons();\r\n }\r\n\r\n selectDate(date) {\r\n let dateIndex = this.projectDates.indexOf(date);\r\n this.selectedProjectDate = this.projectDates[dateIndex];\r\n if (this.reportType === 'pie') {\r\n this.new_setData(this.selectedProjectDate, this.categoryAverages);\r\n } else {\r\n this.setData(this.reportData, this.selectedProjectDate);\r\n }\r\n // Add date to query param\r\n this.router.navigate([], { \r\n relativeTo: this.route, \r\n queryParams: { \r\n date: this.selectedProjectDate.dateId\r\n }, \r\n queryParamsHandling: 'merge'\r\n });\r\n\r\n this.isSubmissionsEmpty(this.submissions);\r\n if(this.secondaryChart !== undefined && this.secondaryChart.series !== undefined)\r\n this.resetSubmissionbuttons();\r\n }\r\n \r\n selectProjectDate(date) {\r\n this.errorMetrics = null;\r\n this.selectedProjectDate = date;\r\n this.metrics = this.getDashboard(this.searchableTiers, this.projectId, this.selectedSubmission ? this.selectedSubmission.submissionId : null, this.selectedProjectDate, this.selectedReportGroup.reportGroupName);\r\n if (this.selectedOrganisation) {\r\n this.getAWSDocuments(this.projectId, this.selectedOrganisation.externalOrganisationId, moment(this.selectedProjectDate.dateTo).format('YYYY'));\r\n }\r\n }\r\n\r\n selectSubmission(submission) {\r\n this.selectedSubmission = submission;\r\n this.metrics = this.getDashboard(this.searchableTiers, this.projectId, this.selectedSubmission.submissionId, this.selectedProjectDate, this.selectedReportGroup.reportGroupName);\r\n }\r\n\r\n selectRange(dates, number) {\r\n\r\n let lookupDates = this.reportDetails.dates.slice(0, number).map(d => d.dateName);\r\n\r\n let temp = {};\r\n \r\n for (var index in dates) {\r\n if (lookupDates.includes(index)) {\r\n temp[index] = dates[index]\r\n }\r\n }\r\n\r\n }\r\n\r\n selectOption(option) {\r\n this.getReportDetails(option.reportId);\r\n this.selectedOption = option.tierName;\r\n this.selectedTiers[13].open = false;\r\n this.tierOpen = false;\r\n this.router.navigate([], { \r\n relativeTo: this.route, \r\n queryParams: { \r\n o: option.tierId\r\n }, \r\n queryParamsHandling: 'merge'\r\n });\r\n this.resetSubmissionbuttons();\r\n }\r\n\r\n // UTILITIES\r\n\r\n toggleTier(level) {\r\n this.selectedTiers.forEach(t => { t.open = false });\r\n this.selectedTiers[level].open = true;\r\n this.tierOpen = true;\r\n this.params = this.router.url;\r\n if(this.infoPanel && level == 4)\r\n this.infoPanel.info = true;\r\n }\r\n\r\n // FORMATS\r\n\r\n formatDates(dates) {\r\n let outputData = [],\r\n timeNow = new Date(Date.now());\r\n\r\n // Add dates if outputs are available or user is\r\n // an admin, but only if outputAvailability is set\r\n dates.forEach(d => {\r\n d.data = [];\r\n if (d.outputAvailability) {\r\n let timeOutputs = new Date(d.outputAvailability);\r\n let timeDiff = timeOutputs.getTime() - timeNow.getTime();\r\n if (timeDiff < 0) {\r\n d.activeAdmin = false;\r\n } else {\r\n d.activeAdmin = true;\r\n }\r\n outputData.push(d);\r\n }\r\n });\r\n\r\n // Check for current financial year\r\n outputData.forEach(d => {\r\n let dateFrom = new Date(d.dateFrom);\r\n let currentFY = new Date('2021/04/01');\r\n if (dateFrom >= currentFY) {\r\n d.currentFY = true;\r\n } else {\r\n d.currentFY = false;\r\n }\r\n });\r\n\r\n // Remove dates where user is not admin\r\n if (!this.activeAdmin) {\r\n outputData = outputData.filter(d => d.activeAdmin == false);\r\n }\r\n\r\n return outputData.reverse();\r\n }\r\n\r\n formatMetrics(tiers, metrics, selectedProjectDate) {\r\n\r\n let availableDates;\r\n if (this.activeAdmin) {\r\n availableDates = this.projectDates.map(pd => pd.dateName);\r\n } else {\r\n availableDates = this.projectDates.filter(pd => pd.activeAdmin === false).map(pd => pd.dateName);\r\n }\r\n\r\n metrics.forEach(m => {\r\n\r\n // Link to a tier, if available\r\n let tier = tiers.filter(s => s.tierMap.includes(m.tierId))[0];\r\n if (tier) {\r\n m.aId = tier.aId;\r\n m.aName = tier.aName;\r\n m.tier = tier;\r\n m.visible = true;\r\n } else {\r\n if (m.subGroup) {\r\n m.aName = m.subGroup,\r\n m.visible = true\r\n } else {\r\n m.aName = 'Miscellaneous';\r\n m.visible = true;\r\n }\r\n }\r\n\r\n // Extract latest month\r\n if (m.dateList) {\r\n\r\n let latestMonth = m.dateList.filter(d => d.dateId === selectedProjectDate.dateId)[0];\r\n if (latestMonth) {\r\n m.latestMonth = latestMonth\r\n } else {\r\n this.errorMetrics = 'There is no data available for the selected period.'\r\n }\r\n\r\n // Calculate 6m average\r\n let map6m = m.dateList.map(d => d.cohortAverage);\r\n let sum6m: number = this.sum.transform(map6m);\r\n let average6m = sum6m / map6m.length;\r\n\r\n // Calculate percentage change\r\n let currentMonth = this.selectedProjectDate.dateId,\r\n currentMonthIndex = m.dateList.findIndex(d => d.dateId == currentMonth),\r\n previousMonthIndex = currentMonthIndex + 1,\r\n previousMonthSubmissionValue = m.dateList[previousMonthIndex] ? m.dateList[previousMonthIndex].submissionValue : null;\r\n \r\n let monthDiff = null, monthStatus = null;\r\n if (previousMonthSubmissionValue && latestMonth && latestMonth.submissionValue) {\r\n monthDiff = getPercentageChange(previousMonthSubmissionValue, latestMonth.submissionValue).diff;\r\n monthStatus = getPercentageChange(previousMonthSubmissionValue, latestMonth.submissionValue).status;\r\n }\r\n\r\n // Remove unavailable dates\r\n m.dateList = m.dateList.filter(d => availableDates.includes(d.dateName));\r\n m.dateList = m.dateList.reverse();\r\n\r\n if (m.latestMonth) {\r\n // Add extract-specific information\r\n m.percentageCompletion = latestMonth.completionRate ? latestMonth.completionRate.toFixed(2) : null;\r\n m.benchmark = latestMonth.benchmark !== null ? latestMonth.benchmark : (average6m ? average6m.toFixed(2) : null);\r\n m.average6 = average6m ? average6m.toFixed(2) : '';\r\n m.organisationResponse = latestMonth.submissionValue !== null ? latestMonth.submissionValue.toFixed(2) : '';\r\n m.monthDiff = monthDiff ? monthDiff.toFixed(2) : '';\r\n m.monthStatus = monthStatus ? monthStatus : '';\r\n m.cohortAverage = latestMonth.cohortAverage ? latestMonth.cohortAverage : null;\r\n m.nationalAverage = latestMonth.nationalAverage ? latestMonth.nationalAverage : null;\r\n }\r\n\r\n // Set decimal places\r\n let decPlaces = '1.0-2'\r\n if (m.decimalPlaces) { decPlaces = '1.0-' + m.decimalPlaces }\r\n m.decimalPlaces = decPlaces;\r\n\r\n if (this.projectId == 29 && m.latestMonth) {\r\n // Selected date\r\n m.date = m.latestMonth.dateName;\r\n // Metric code\r\n m.code = tier ? tier.bName.substring(0, 5).replace(' -', '') : null;\r\n }\r\n } else {\r\n metrics = [];\r\n }\r\n\r\n });\r\n\r\n // Percentage change function\r\n function getPercentageChange(oldNumber, newNumber){\r\n var decreaseValue = oldNumber - newNumber;\r\n return {\r\n diff: Math.abs((decreaseValue / oldNumber) * 100),\r\n status: decreaseValue < 0 ? 'increase' : 'decrease'\r\n }\r\n }\r\n\r\n // Return only metrics with national averages (i.e. with some data)\r\n // return metrics.filter(m => m.nationalAverage != null);\r\n return metrics; // not sure why this was filtered out in the lines above, it stops the dashboard from rendering anything!\r\n }\r\n\r\n formatReportMetrics(metrics, organisation) {\r\n let outputData = [];\r\n\r\n let availableDates = this.projectDates.filter(pd => pd.activeAdmin === false).map(pd => pd.dateName);\r\n \r\n let codeType = 'anonSubmissionCode';\r\n \r\n if (organisation) {\r\n organisation.submissionList.forEach((s, i) => {\r\n s.color = this.colors[i];\r\n });\r\n }\r\n\r\n metrics.forEach(m => {\r\n\r\n let dataLineChart = [];\r\n let submissions = [];\r\n\r\n // Create time series element\r\n // National\r\n dataLineChart.push({\r\n name: this.projectId == 52 ? 'Regional Mean' : 'Sample Mean',\r\n color: this.nationalMeanColour,\r\n data: m.dateList.map(md => {\r\n return {\r\n name: md.dateName,\r\n y: md.nationalAverage\r\n }\r\n })\r\n });\r\n \r\n // Submission(s)\r\n m.dateList.forEach(dl => {\r\n if (dl.organisationData) {\r\n dl.organisationData.forEach(od => {\r\n let matchingSub = organisation.submissionList.filter(s => s[codeType] === od[codeType])[0];\r\n submissions.push({\r\n submission: od[codeType],\r\n color: matchingSub ? matchingSub.color : null,\r\n month: dl.dateName,\r\n y: od.submissionValue\r\n });\r\n });\r\n };\r\n });\r\n\r\n submissions = this.group.transform(submissions, 'submission');\r\n\r\n Object.keys(submissions).forEach(key => {\r\n dataLineChart.push({\r\n name: key,\r\n color: submissions[key][0].color,\r\n data: submissions[key].map(s => { return { name: s.month, y: s.y } })\r\n })\r\n });\r\n\r\n // Remove unavailable dates\r\n dataLineChart.forEach(dlc => {\r\n dlc.data = dlc.data.filter(d => availableDates.includes(d.name)).reverse();\r\n })\r\n \r\n // Bar chart\r\n let dataList = [];\r\n if (m.dataList) {\r\n m.dataList.map(md => { \r\n let matchingSub;\r\n if (organisation) {\r\n matchingSub = organisation.submissionList.filter(s => s[codeType] === md[codeType])[0];\r\n }\r\n dataList.push({\r\n color: matchingSub ? matchingSub.color : null,\r\n name: md[codeType],\r\n y: md.submissionValue\r\n });\r\n });\r\n }\r\n\r\n // Benchmark\r\n let benchmark = null;\r\n if (this.projectId === 29) {\r\n m.dateList[0].benchmark;\r\n }\r\n\r\n // Calculate 6m average\r\n let map6m = m.dateList.map(d => d.nationalAverage);\r\n let sum6m: number = this.sum.transform(map6m);\r\n let average6m = sum6m / map6m.length;\r\n\r\n // Table\r\n let selectedDateName = this.selectedProjectDate.dateName;\r\n let dataTable = [];\r\n dataLineChart.forEach(dlc => {\r\n dlc.data.forEach(d => {\r\n if (d.name === selectedDateName) {\r\n dataTable.push({\r\n name: dlc.name,\r\n month: d.name,\r\n y: d.y\r\n });\r\n }\r\n })\r\n });\r\n\r\n // Create format\r\n outputData.push({\r\n reportName: m.reportName,\r\n displaySequence: m.displaySequence,\r\n formatModifier: m.formatModifier,\r\n rangeMin: null,\r\n rangeMax: null,\r\n decPlaces: null,\r\n dataBarChart: dataList,\r\n dataLineChart: dataLineChart,\r\n dataTable: dataTable,\r\n benchmark: benchmark !== null ? benchmark : average6m\r\n });\r\n\r\n });\r\n\r\n outputData = this.order.transform(outputData, 'displaySequence');\r\n\r\n return outputData;\r\n }\r\n\r\n formatCategoryAverages(averages, medians) {\r\n let tempAverage = [],\r\n tempMedian = [],\r\n data = [];\r\n\r\n Object.keys(averages).forEach(av => {\r\n let matchingDate = this.projectDates.filter(pd => pd.dateId === +av)[0];\r\n if (matchingDate) {\r\n // Means\r\n Object.keys(averages[av].categoryResponseList).forEach(crl => {\r\n let matchingCategory = this.reportCategories.filter(c => c.categoryId === +crl)[0];\r\n if (matchingCategory) {\r\n tempAverage.push({\r\n dateFrom: matchingDate.dateFrom,\r\n date: matchingDate.dateName,\r\n name: matchingCategory.categoryName,\r\n y: averages[av].categoryResponseList[crl]\r\n })\r\n }\r\n })\r\n // Medians\r\n Object.keys(medians[av].categoryResponseList).forEach(crl => {\r\n let matchingCategory = this.reportCategories.filter(c => c.categoryId === +crl)[0];\r\n if (matchingCategory) {\r\n tempMedian.push({\r\n dateFrom: matchingDate.dateFrom,\r\n date: matchingDate.dateName,\r\n name: matchingCategory.categoryName,\r\n y: medians[av].categoryResponseList[crl]\r\n })\r\n }\r\n })\r\n }\r\n })\r\n\r\n // Order by dateFrom\r\n tempAverage = this.order.transform(tempAverage, 'dateFrom');\r\n tempMedian = this.order.transform(tempMedian, 'dateFrom');\r\n\r\n tempAverage = this.group.transform(tempAverage, 'name');\r\n Object.keys(tempAverage).forEach(key => {\r\n data.push({\r\n category: 'Means',\r\n name: key,\r\n data: tempAverage[key].map(d => { \r\n return {\r\n name: d.date.substring(0, 3) + '-' + d.date.slice(-2),\r\n y: d.y \r\n }\r\n })\r\n })\r\n });\r\n\r\n tempMedian = this.group.transform(tempMedian, 'name');\r\n Object.keys(tempMedian).forEach(key => {\r\n data.push({\r\n category: 'Medians',\r\n name: key,\r\n data: tempMedian[key].map(d => { \r\n return {\r\n name: d.date.substring(0, 3) + '-' + d.date.slice(-2),\r\n y: d.y \r\n }\r\n })\r\n })\r\n });\r\n\r\n return data;\r\n }\r\n\r\n formatAverages(means, medians, calculatedNationalMeans?) {\r\n let data = [\r\n {\r\n name: this.projectId == 52 ? 'Regional Mean' : 'National Mean',\r\n color: this.nationalMeanColour,\r\n data: []\r\n },\r\n {\r\n name: this.projectId == 52 ? 'Regional Median' : 'National Median',\r\n color: this.nationalMedianColour,\r\n data: []\r\n }\r\n ];\r\n\r\n if (calculatedNationalMeans) {\r\n data.push(\r\n {\r\n name: 'Calculated National Mean',\r\n color: 'grey',\r\n data: []\r\n }\r\n )\r\n }\r\n\r\n // Means\r\n Object.keys(means).forEach(av => {\r\n let matchingDate = this.projectDates.filter(pd => pd.dateId === +av)[0];\r\n if (matchingDate) {\r\n data[0].data.push({\r\n dateFrom: matchingDate.dateFrom,\r\n dateName: matchingDate.dateName,\r\n y: means[av]\r\n });\r\n }\r\n })\r\n\r\n // Medians\r\n Object.keys(medians).forEach(av => {\r\n let matchingDate = this.projectDates.filter(pd => pd.dateId === +av)[0];\r\n if (matchingDate) {\r\n data[1].data.push({\r\n dateFrom: matchingDate.dateFrom,\r\n dateName: matchingDate.dateName,\r\n y: medians[av]\r\n });\r\n }\r\n });\r\n\r\n // Calculated national means\r\n Object.keys(calculatedNationalMeans).forEach(cnm => {\r\n let matchingDate = this.projectDates.filter(pd => pd.dateId === +cnm)[0];\r\n if (matchingDate) {\r\n data[2].data.push({\r\n dateFrom: matchingDate.dateFrom,\r\n dateName: matchingDate.dateName,\r\n y: calculatedNationalMeans[cnm]\r\n });\r\n }\r\n });\r\n\r\n // Order by dateFrom\r\n data[0].data = this.order.transform(data[0].data, 'dateFrom');\r\n data[1].data = this.order.transform(data[1].data, 'dateFrom');\r\n data[2].data = this.order.transform(data[2].data, 'dateFrom');\r\n\r\n // Add median to mean for table\r\n data[0].data.forEach(d => {\r\n let matchingMedian = data[1].data.filter(dd => dd.dateName === d.dateName)[0];\r\n let matchingNationalCalculatedMean = data[2].data.filter(dd => dd.dateName === d.dateName)[0];\r\n d.median = matchingMedian.y;\r\n d.nationalCalculatedMean = matchingNationalCalculatedMean ? matchingNationalCalculatedMean.y : null;\r\n })\r\n\r\n return data;\r\n }\r\n\r\n formatSubmissions(organisation) {\r\n let outputData = [];\r\n\r\n organisation.submissionList.forEach((s, i) => {\r\n outputData.push({\r\n organisationCode: organisation.organisationOnsCode ? organisation.organisationOnsCode : organisation.organisationCode,\r\n organisationName: organisation.organisationName,\r\n submissionId: s.submissionId,\r\n submissionCode: s.anonSubmissionCode ? s.anonSubmissionCode : s.submissionCode,\r\n submissionName: s.submissionName,\r\n color: this.colors[i]\r\n })\r\n });\r\n\r\n return outputData;\r\n }\r\n\r\n formatTiers(inputData) {\r\n let outputData = [];\r\n\r\n inputData.forEach(d => {\r\n d.childrenTiers.forEach(dd => {\r\n if (dd.isVisible === 'Y') {\r\n outputData.push({\r\n aId: d.tierId,\r\n aName: d.tierName,\r\n bId: dd.tierId,\r\n bName: dd.tierName,\r\n reportId: dd.reportId,\r\n bVisible: dd.isVisible\r\n });\r\n dd.childrenTiers.forEach(ddd => {\r\n if (ddd.isVisible === 'Y') {\r\n outputData.push({\r\n aId: d.tierId,\r\n aName: d.tierName,\r\n bId: dd.tierId,\r\n bName: dd.tierName,\r\n bVisible: dd.isVisible,\r\n cId: ddd.tierId,\r\n cName: ddd.tierName,\r\n cVisible: ddd.isVisible,\r\n reportId: ddd.reportId\r\n });\r\n ddd.childrenTiers.forEach(dddd => {\r\n if (dddd.isVisible === 'Y') {\r\n outputData.push({\r\n aId: d.tierId,\r\n aName: d.tierName,\r\n bId: dd.tierId,\r\n bName: dd.tierName,\r\n bVisible: dd.isVisible,\r\n cId: ddd.tierId,\r\n cName: ddd.tierName,\r\n cVisible: ddd.isVisible,\r\n dId: dddd.tierId,\r\n dName: dddd.tierName,\r\n dVisible: dddd.isVisible,\r\n reportId: dddd.reportId\r\n });\r\n dddd.childrenTiers.forEach(ddddd => {\r\n if (ddddd.isVisible === 'Y') {\r\n outputData.push({\r\n aId: d.tierId,\r\n aName: d.tierName,\r\n bId: dd.tierId,\r\n bName: dd.tierName,\r\n bVisible: dd.isVisible,\r\n cId: ddd.tierId,\r\n cName: ddd.tierName,\r\n cVisible: ddd.isVisible,\r\n dId: dddd.tierId,\r\n dName: dddd.tierName,\r\n dVisible: dddd.isVisible,\r\n eId: ddddd.tierId,\r\n eName: ddddd.tierName,\r\n eVisible: ddddd.isVisible,\r\n reportId: ddddd.reportId\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n })\r\n }\r\n })\r\n });\r\n\r\n outputData.forEach(o => {\r\n o.tierMap = [o.aId, o.bId, o.cId, o.dId, o.eId];\r\n });\r\n\r\n // Remove null reports\r\n outputData = outputData.filter(d => d.reportId !== null);\r\n\r\n return outputData;\r\n }\r\n\r\n formatCategories(categories) {\r\n let allCategories = [];\r\n\r\n // Remove all types with single category\r\n Object.keys(categories).forEach(key => {\r\n if (categories[key].length === 1) {\r\n delete categories[key];\r\n }\r\n });\r\n\r\n let categoryTypes = Object.keys(categories);\r\n\r\n // Return all categories\r\n Object.keys(categories).forEach(key => {\r\n categories[key].forEach(c => {\r\n allCategories.push({\r\n categoryType: key,\r\n categoryName: c.categoryName,\r\n categoryId: c.categoryId,\r\n data: []\r\n })\r\n });\r\n });\r\n\r\n return { categories: allCategories, categoryTypes: categoryTypes };\r\n }\r\n\r\n formatBarData(reportData, anon?: boolean) {\r\n if(anon == true)\r\n this.anonymousEnabled = true;\r\n else {\r\n this.anonymousEnabled = false;\r\n }\r\n // Filter reportData to projectDates\r\n let availableDates = [];\r\n reportData.availableDates.forEach(ad => {\r\n this.projectDates.forEach(pd => {\r\n if (ad.dateName === pd.dateName) {\r\n availableDates.push(ad);\r\n }\r\n })\r\n });\r\n reportData.availableDates = availableDates;\r\n\r\n let bySeries = [];\r\n let bySubmission = [];\r\n let byMonth = [];\r\n let byMonthAverages = [];\r\n\r\n // Linearise\r\n reportData.availableDates.forEach(d => {\r\n d.organisationList.forEach(o => {\r\n o.submissionData.forEach(s => {\r\n\r\n let highlighted;\r\n \r\n if (this.submissions) {\r\n if (s.anonSubmissionCode) {\r\n highlighted = this.submissions.filter(p => p.submissionCode === s.anonSubmissionCode)[0];\r\n } else {\r\n highlighted = this.submissions.filter(p => p.submissionCode === s.submissionCode)[0];\r\n } \r\n } else {\r\n highlighted = null;\r\n }\r\n\r\n bySubmission.push({\r\n date: d.dateName,\r\n name: anon == true ? s.submissionCode : s.anonSubmissionCode,\r\n y: s.result,\r\n color: highlighted ? highlighted.color : null,\r\n numeratorValue: s.numeratorValue ? s.numeratorValue : null,\r\n denominatorValue: s.denominatorValue ? s.denominatorValue : null\r\n })\r\n });\r\n });\r\n });\r\n\r\n // Remove admin only dates if not admin\r\n if (!this.activeAdmin && this.projectId !== 52) {\r\n let availableDates = this.projectDates.filter(pd => pd.activeAdmin === false).map(pd => pd.dateName);\r\n bySubmission = bySubmission.filter(s => availableDates.includes(s.date));\r\n }\r\n\r\n // Remove submissions without submissionCode or anonSubmissionCode\r\n bySubmission = bySubmission.filter(s => s.name !== null);\r\n\r\n // Group by date (date series)\r\n byMonth = this.group.transform(bySubmission, 'date');\r\n\r\n // Get date average\r\n Object.keys(byMonth).forEach(key => {\r\n let results = byMonth[key].map(dd => dd.y);\r\n let count = byMonth[key].length;\r\n let sum = results.reduce((a, b) => a + b, 0);\r\n byMonthAverages.push({\r\n name: key,\r\n y: sum / count // 'National' average\r\n })\r\n });\r\n\r\n // Add cohort average to time series\r\n this.averages = this.formatAverages(reportData.dateAverages, reportData.dateMedians, reportData.calculatedNationalAverages);\r\n this.averages.forEach(a => {\r\n bySeries.push({\r\n name: a.name,\r\n data: a.data.map(ad => { return { name: ad.dateName, y: ad.y } }),\r\n color: a.color\r\n });\r\n });\r\n\r\n // Group by submission\r\n bySubmission = this.group.transform(bySubmission, 'name');\r\n\r\n // Create series\r\n Object.keys(bySubmission).forEach(key => {\r\n // Only add to series if color set (i.e. submissions granted)\r\n if (bySubmission[key][0].color !== null) {\r\n let data = bySubmission[key].map(d => [d.date, d.y]);\r\n bySeries.push({\r\n name: key,\r\n data: data,\r\n color: bySubmission[key][0].color\r\n });\r\n }\r\n });\r\n\r\n // Order byMonth data\r\n Object.keys(byMonth).forEach(key => {\r\n byMonth[key] = this.order.transform(byMonth[key], '-y')\r\n });\r\n\r\n return { bySeries: bySeries, bySubmission: bySubmission, byMonth: byMonth, byMonthAverages: byMonthAverages };\r\n }\r\n\r\n formatStackedBarData(reportData) {\r\n\r\n // Filter reportData to projectDates\r\n let availableDates = [];\r\n reportData.availableDates.forEach(ad => {\r\n this.projectDates.forEach(pd => {\r\n if (ad.dateName === pd.dateName) {\r\n availableDates.push(ad);\r\n }\r\n })\r\n });\r\n\r\n this.new_formatStackedBarData(reportData);\r\n\r\n let bySubmission = [],\r\n byMonth = {},\r\n byMonthAverages = [],\r\n byCategory = {};\r\n\r\n // Linearise\r\n reportData.organisationList.forEach(o => {\r\n o.submissionData.forEach(s => {\r\n let highlighted = this.submissions.filter(p => p.submissionCode === s.submissionCode);\r\n Object.keys(s.dateCategoryList).forEach(dcl => {\r\n let date = this.reportDetails.dates.filter(d => d.dateId === +dcl)[0];\r\n Object.keys(s.dateCategoryList[dcl].categoryResponseList).forEach(crl => {\r\n let category = this.reportCategories.filter(c => c.categoryId === +crl)[0];\r\n // Remove any category responses with only one category within a category type\r\n // TODO: Review category usage (collection vs. toolkit)\r\n if (category) {\r\n bySubmission.push({\r\n dateId: +dcl,\r\n date: date.dateName,\r\n categoryId: +crl,\r\n category: category.categoryName,\r\n name: s.anonSubmissionCode ? s.anonSubmissionCode : s.submissionCode,\r\n y: s.dateCategoryList[dcl].categoryResponseList[crl],\r\n color: highlighted[0] ? highlighted[0].color : null,\r\n });\r\n }\r\n });\r\n });\r\n });\r\n });\r\n\r\n // Remove submissions without submissionCode or anonSubmissionCode\r\n bySubmission = bySubmission.filter(s => s.name !== null);\r\n\r\n // Add missing zero values\r\n let submissions = this.group.transform(bySubmission, 'name');\r\n Object.keys(submissions).forEach(key => {\r\n this.projectDates.forEach(pd => {\r\n submissions[key].forEach(sk => {\r\n this.reportCategories.forEach(c => {\r\n let response = bySubmission.filter(m => m.categoryId === c.categoryId && m.name === sk.name && m.dateId === pd.dateId)[0];\r\n let sumOtherResponses = bySubmission.filter(m => m.name === sk.name && m.dateId === pd.dateId).map(s => s.y).reduce((a, b) => a + b, 0);\r\n if (!response && sumOtherResponses !== 0) {\r\n bySubmission.push({\r\n dateId: pd.dateId,\r\n date: pd.dateName,\r\n categoryId: c.categoryId,\r\n category: c.categoryName,\r\n name: sk.name,\r\n y: 0,\r\n color: sk.color\r\n });\r\n };\r\n });\r\n })\r\n })\r\n });\r\n\r\n // Order by submission name\r\n bySubmission = this.order.transform(bySubmission, 'name');\r\n\r\n // Create byMonth\r\n let monthTemp = this.group.transform(bySubmission, 'date');\r\n Object.keys(monthTemp).forEach(key => {\r\n byMonth[key] = this.group.transform(monthTemp[key], 'name')\r\n });\r\n\r\n // Create byCategory\r\n let categoryTemp = this.group.transform(bySubmission, 'date');\r\n Object.keys(categoryTemp).forEach(key => {\r\n byCategory[key] = this.group.transform(categoryTemp[key], 'category');\r\n });\r\n\r\n // Set monthly category averages\r\n let averagesTemp = [];\r\n Object.keys(byCategory).forEach(key => {\r\n Object.keys(byCategory[key]).forEach(c => {\r\n let results = byCategory[key][c].filter(dd => dd.y !== 0).map(dd => dd.y);\r\n let count = results.length;\r\n let sum = results.reduce((a, b) => a + b, 0);\r\n averagesTemp.push({\r\n category: c,\r\n name: key,\r\n y: byCategory[key][c].average = sum/count\r\n });\r\n });\r\n });\r\n\r\n averagesTemp = this.group.transform(averagesTemp, 'category');\r\n\r\n Object.keys(averagesTemp).forEach(key => {\r\n byMonthAverages.push({\r\n name: key + ' (National)',\r\n data: averagesTemp[key].map(a => { return { name: a.name, y: a.y } })\r\n })\r\n });\r\n\r\n // Create bySubmission\r\n bySubmission = this.group.transform(bySubmission, 'name');\r\n\r\n return { bySubmission: bySubmission, byMonth: byMonth, byCategory: byCategory, byMonthAverages: byMonthAverages };\r\n }\r\n\r\n // CHARTS\r\n\r\n createBarChart(data, date, nationalCalculatedMean) {\r\n \r\n let mean = this.averages[0].data.filter(d => d.dateName === date)[0].y;\r\n let median = this.averages[1].data.filter(d => d.dateName === date)[0].y;\r\n this.averagesTable = this.order.transform(this.averages[0].data, '-dateFrom');\r\n\r\n this.primaryChartOptions = {\r\n chart: {\r\n type: 'column',\r\n animation: false,\r\n style: { fontFamily: '\"Helvetica Neue\", Arial, sans-serif' },\r\n backgroundColor: '#FFFFFF',\r\n events: { \r\n load: (e => {\r\n this.primaryChart = e.target;\r\n this.createLegend(this.primaryChart);\r\n })\r\n },\r\n },\r\n colors: this.setColour,\r\n tooltip: {\r\n useHTML: true,\r\n backgroundColor: '#000000',\r\n borderWidth: 0,\r\n shadow: false,\r\n headerFormat: '
{point.key}
',\r\n pointFormat: '',\r\n footerFormat: '
{series.name}:{point.y}
',\r\n valueDecimals: 2,\r\n style: { color: '#FFFFFF' }\r\n },\r\n title: {\r\n text: ''\r\n },\r\n exporting: { enabled: false },\r\n legend: { enabled: false },\r\n credits: { enabled: false },\r\n xAxis: {\r\n categories: true,\r\n gridLineColor: '#EEF1F8'\r\n },\r\n yAxis: {\r\n min: this.reportSettings.min ? this.reportSettings.min : null,\r\n max: this.reportSettings.max ? this.reportSettings.max : null,\r\n tickInterval: this.reportSettings.tickInterval ? this.reportSettings.tickInterval : null,\r\n gridLineColor: '#EEF1F8',\r\n title: {\r\n text: this.reportDetails.reportName\r\n },\r\n labels: {\r\n formatter: (e) => {\r\n if (this.reportSettings.formatModifier === 'P') {\r\n return e.value + \"%\";\r\n } else {\r\n return e.value;\r\n }\r\n }\r\n },\r\n plotLines: [{\r\n color: this.nationalMeanColour,\r\n value: mean,\r\n width: '2',\r\n zIndex: 5\r\n },\r\n {\r\n color: this.nationalMedianColour,\r\n value: median,\r\n width: '2',\r\n zIndex: 5\r\n },\r\n {\r\n color: 'grey',\r\n value: nationalCalculatedMean,\r\n width: '2',\r\n zIndex: 5\r\n }],\r\n },\r\n plotOptions: {\r\n series: {\r\n animation: false\r\n }\r\n },\r\n series: [\r\n {\r\n data: data,\r\n color: this.primaryBarColour\r\n }\r\n ]\r\n };\r\n }\r\n\r\n createStackedBarChart(data) {\r\n\r\n let series = [];\r\n this.reportCategories.forEach((rc, i) => {\r\n series.push({\r\n name: rc.categoryName,\r\n submission: rc.submission,\r\n data: data.map(d => d.responses[i])\r\n })\r\n });\r\n\r\n let categories = data.map(d => d.submission);\r\n\r\n this.tableData = data;\r\n this.tableData.forEach(n => {\r\n n.responses.forEach(k => {\r\n n[k.category] = k.y\r\n })\r\n })\r\n this.tableHeader = this.reportCategories.map(rc => rc.categoryName);\r\n\r\n let tooltipText;\r\n if (this.reportSettings.formatModifier === 'P') {\r\n tooltipText = '{series.name}:{point.y}%'\r\n } else {\r\n tooltipText = '{series.name}:{point.y}'\r\n }\r\n\r\n this.primaryChartOptions = {\r\n chart: {\r\n type: 'column',\r\n animation: false,\r\n style: { fontFamily: '\"Helvetica Neue\", Arial, sans-serif' },\r\n backgroundColor: '#FFFFFF',\r\n events: { \r\n load: (e => {\r\n this.primaryChart = e.target;\r\n this.createLegend(this.primaryChart);\r\n })\r\n },\r\n },\r\n colors: this.setColour,\r\n tooltip: {\r\n useHTML: true,\r\n backgroundColor: '#000000',\r\n borderWidth: 0,\r\n shadow: false,\r\n headerFormat: '
{point.key}
',\r\n pointFormat: tooltipText,\r\n footerFormat: '
',\r\n valueDecimals: 2,\r\n style: { color: '#FFFFFF' }\r\n },\r\n title: {\r\n text: ''\r\n },\r\n exporting: { enabled: false },\r\n legend: { enabled: false },\r\n credits: { enabled: false },\r\n xAxis: {\r\n categories: categories,\r\n labels: {\r\n formatter () {\r\n let submission = data.filter(td => td.submission === this.value)[0];\r\n if (submission && submission.color) {\r\n return `${this.value}`\r\n } else {\r\n return this.value\r\n }\r\n }\r\n }\r\n },\r\n yAxis: {\r\n min: this.reportSettings.min ? this.reportSettings.min : null,\r\n max: this.reportSettings.max ? this.reportSettings.max : null,\r\n tickInterval: this.reportSettings.tickInterval ? this.reportSettings.tickInterval : null,\r\n gridLineColor: '#EEF1F8',\r\n title: {\r\n text: this.reportDetails.reportName\r\n },\r\n labels: {\r\n formatter: (e) => {\r\n if (this.reportSettings.formatModifier === 'P') {\r\n return e.value + \"%\";\r\n } else {\r\n return e.value;\r\n }\r\n }\r\n },\r\n // plotLines: [{\r\n // color: '#009639',\r\n // value: average,\r\n // width: '2',\r\n // zIndex: 10\r\n // }],\r\n },\r\n plotOptions: {\r\n column: {\r\n stacking: 'normal'\r\n },\r\n series: {\r\n animation: false\r\n }\r\n },\r\n series: series\r\n };\r\n }\r\n\r\n createLineChart(data) {\r\n let headerFormat;\r\n\r\n // Remove national data from time series\r\n if (!this.timeseriesAvailable) {\r\n data = data.filter(d => !d.name.includes('National'));\r\n }\r\n\r\n // Remove medians from stacked bar/pie and style header\r\n if (this.reportType !== 'bar') {\r\n data = data.filter(d => d.category !== 'Medians');\r\n headerFormat = '
National Means for
{point.key}
';\r\n } else {\r\n headerFormat = '
{point.key}
';\r\n }\r\n\r\n this.secondaryChartOptions = {\r\n chart: {\r\n type: 'line',\r\n animation: false,\r\n style: { fontFamily: '\"Helvetica Neue\", Arial, sans-serif' },\r\n backgroundColor: '#FFFFFF',\r\n events: { \r\n load: (e => {\r\n this.secondaryChart = e.target;\r\n })\r\n },\r\n },\r\n colors: this.setColour,\r\n tooltip: {\r\n shared: true,\r\n useHTML: true,\r\n backgroundColor: '#000000',\r\n borderWidth: 0,\r\n shadow: false,\r\n headerFormat: headerFormat,\r\n pointFormat: '',\r\n footerFormat: '
{series.name}:{point.y}
',\r\n valueDecimals: 2,\r\n style: { color: '#FFFFFF' }\r\n },\r\n title: {\r\n text: ''\r\n },\r\n exporting: { enabled: false },\r\n legend: { enabled: false },\r\n credits: { enabled: false },\r\n plotOptions: {\r\n series: {\r\n animation: false\r\n }\r\n },\r\n xAxis: {\r\n categories: true,\r\n crosshair: true,\r\n labels: {\r\n step: 1,\r\n rotation: 315\r\n }\r\n },\r\n yAxis: {\r\n min: this.reportSettings.min ? this.reportSettings.min : null,\r\n max: this.reportSettings.max ? this.reportSettings.max : null,\r\n tickInterval: this.reportSettings.tickInterval ? this.reportSettings.tickInterval : null,\r\n gridLineColor: '#EEF1F8',\r\n title: {\r\n text: ''\r\n },\r\n labels: {\r\n formatter: (e) => {\r\n if (this.reportSettings.formatModifier === 'P') {\r\n return e.value + \"%\";\r\n } else {\r\n return e.value;\r\n }\r\n }\r\n },\r\n },\r\n series: data\r\n };\r\n \r\n this.reportLoading = false;\r\n }\r\n\r\n createPieChart(data) {\r\n\r\n let seriesData = []\r\n\r\n Object.keys(data).forEach(key => {\r\n seriesData.push({\r\n name: key,\r\n y: data[key].average\r\n });\r\n });\r\n\r\n this.primaryChartOptions = {\r\n chart: {\r\n type: 'pie',\r\n animation: false,\r\n style: { fontFamily: '\"Helvetica Neue\", Arial, sans-serif' },\r\n backgroundColor: '#FFFFFF',\r\n events: { \r\n load: (e => {\r\n this.primaryChart = e.target;\r\n })\r\n },\r\n plotBackgroundColor: null,\r\n plotBorderWidth: null,\r\n plotShadow: false,\r\n \r\n },\r\n title: {\r\n text: ''\r\n },\r\n colors: this.setColour,\r\n tooltip: {\r\n useHTML: true,\r\n backgroundColor: '#000000',\r\n borderWidth: 0,\r\n shadow: false,\r\n headerFormat: '
{point.key}
',\r\n pointFormat: '',\r\n footerFormat: '
{series.name}:{point.percentage:.1f}%
',\r\n valueDecimals: 2,\r\n style: { color: '#FFFFFF' }\r\n },\r\n exporting: { enabled: false },\r\n legend: { enabled: false },\r\n credits: { enabled: false },\r\n plotOptions: {\r\n pie: {\r\n allowPointSelect: true,\r\n cursor: 'pointer',\r\n dataLabels: {\r\n enabled: true,\r\n format: '{point.name}: {point.percentage:.1f}%'\r\n }\r\n }\r\n },\r\n series: [{\r\n name: 'Brands',\r\n colorByPoint: true,\r\n data: seriesData\r\n }]\r\n };\r\n }\r\n\r\n createLegend(data) {\r\n this.legend = [];\r\n let series = data.series;\r\n if (series.length > 1) {\r\n series.forEach(s => {\r\n this.legend.push({\r\n name: s.name,\r\n color: s.color,\r\n visible: true\r\n })\r\n })\r\n }\r\n }\r\n\r\n // TABLES\r\n\r\n createTable(data, selectedDate) {\r\n let tableData = {};\r\n\r\n switch(this.reportType) {\r\n case 'stacked':\r\n Object.keys(data).forEach(key => {\r\n tableData[key] = data[key].filter(d => d.date === selectedDate.dateName);\r\n });\r\n break;\r\n case 'pie':\r\n Object.keys(data).forEach(key => {\r\n tableData[key] = data[key].filter(d => d.date === selectedDate.dateName);\r\n });\r\n this.tableData = tableData;\r\n break;\r\n case 'bar':\r\n this.tableData = data;\r\n break\r\n default:\r\n this.error = 'Chart type has not been set.'\r\n }\r\n let headerFind = Object.keys(tableData).filter(key => tableData[key].length)[0];\r\n this.tableHeader = tableData[headerFind];\r\n }\r\n\r\n // UTILITIES\r\n\r\n toggleSeriesVisibility(index) {\r\n let visibility = this.primaryChart['series'][index].visible;\r\n if (visibility === true) {\r\n this.primaryChart['series'][index].update({ visible: false });\r\n this.secondaryChart['series'][index].update({ visible: false });\r\n this.legend[index].visible = false;\r\n } else {\r\n this.primaryChart['series'][index].update({ visible: true });\r\n this.secondaryChart['series'][index].update({ visible: true });\r\n this.legend[index].visible = true;\r\n }\r\n }\r\n\r\n isSubmissionsEmpty(submission) {\r\n let submissionData = [];\r\n if (submission) {\r\n submission.forEach(d => {\r\n Object.keys(this.reportData.byMonth).forEach(month => {\r\n this.reportData.byMonth[month].forEach(sub => {\r\n if (sub.submission == d.submissionCode) {\r\n submissionData.push(sub);\r\n }\r\n })\r\n })\r\n });\r\n }\r\n\r\n if(submissionData.length == 0) {\r\n this.submissionVisible = false;\r\n }\r\n else {\r\n this.submissionVisible = true;\r\n }\r\n }\r\n\r\n resetSubmissionbuttons() {\r\n if (this.submissions) {\r\n this.submissions.forEach(d => this.resetLineChart(d))\r\n }\r\n }\r\n\r\n addSubmissiontoLineChart(submission) {\r\n this.hideTable = false;\r\n if (this.reportType == 'stacked') {\r\n let submissionData = [];\r\n let chartData = [];\r\n // Copy dates array from existing chart\r\n let categoryData = JSON.parse(JSON.stringify(this.categoryAverages[0].data));\r\n // Add submission responses to copied array\r\n Object.keys(this.reportData.byMonth).forEach(month => {\r\n this.reportData.byMonth[month].forEach(sub => {\r\n if (sub.submission == submission.submissionCode) {\r\n let shortDate = sub.date.substring(0, 3) + '-' + sub.date.slice(-2);\r\n let matchingCategory = categoryData.find(cd => cd.name == shortDate);\r\n matchingCategory.responses = sub.responses;\r\n submissionData.push(sub);\r\n }\r\n })\r\n });\r\n\r\n // Set sub-colours\r\n let colorProfile = this.subColors.find(sc => sc.color === submission.color);\r\n\r\n // Map submission responses to dates\r\n let means = this.categoryAverages.filter(ca => ca.category == 'Means');\r\n means.forEach((ca, i) => { \r\n chartData.push({\r\n category: ca.category + ' (submission)',\r\n name: ca.name + ' (' + submission.submissionCode + ')',\r\n color: colorProfile.subColors[i],\r\n data: categoryData.map(cd => { \r\n return { \r\n name: cd.name, \r\n y: cd.responses && cd.responses[i] ? cd.responses[i].y : null\r\n } \r\n })\r\n })\r\n });\r\n\r\n // Add to line chart\r\n chartData.forEach(data => {\r\n this.secondaryChart.addSeries(data, true);\r\n });\r\n chartData[\"name\"] = submission.submissionName;\r\n // Collect all open tables\r\n this.openSubmissionTables.push(chartData);\r\n // Create table\r\n this.submissionData = chartData;\r\n this.submissionName = submission.submissionName;\r\n // Set visibility\r\n submission.visible = true;\r\n\r\n }\r\n }\r\n\r\n resetLineChart(submission) {\r\n this.openSubmissionTables = this.openSubmissionTables.filter(d => d.name !== submission.submissionName)\r\n let subCode = submission.submissionCode;\r\n \r\n for(let i = 0; i < this.secondaryChart.series.length; i++){\r\n let regexp = new RegExp(subCode);\r\n let val = this.secondaryChart.series[i].userOptions.name;\r\n let sub = regexp.test(val);\r\n\r\n if(sub) {\r\n submission.visible = false;\r\n this.secondaryChart.series[i].remove();\r\n i--;\r\n }\r\n }\r\n }\r\n\r\n toggleGroup(group) {\r\n let metrics = this.metrics.filter(q => q.aName === group[0]);\r\n if (metrics[0].visible === true) {\r\n metrics.forEach(q => q.visible = false);\r\n } else {\r\n metrics.forEach(q => q.visible = true);\r\n }\r\n }\r\n\r\n changeView(view) {\r\n this.error = null;\r\n this.errorReport = null;\r\n this.errorReportMetrics = null;\r\n this.errorMetrics = null;\r\n this.selectedTierName = null;\r\n this.unsubscribe();\r\n\r\n this.clearSelectedTiers();\r\n this.tiers.forEach(p => {\r\n p.childrenOpen = null;\r\n });\r\n\r\n if (view === 'report') {\r\n this.router.navigate(['project/' + this.projectId + '/' + view], { queryParams: { date: this.selectedProjectDate.dateId } });\r\n } else {\r\n this.router.navigate(['project/' + this.projectId + '/' + view], { queryParams: null });\r\n }\r\n\r\n if (this.projectId == 52 && view == 'dashboard') {\r\n // For SE MH, always reset submissions on return to dashboard\r\n this.getSubmissions(this.projectId);\r\n this.projectView = view;\r\n } else {\r\n this.setView(view);\r\n }\r\n\r\n }\r\n\r\n reloadReport(reportId) {\r\n let tier = this.searchableTiers.filter(s => s.reportId === reportId)[0];\r\n if (tier) {\r\n this.selectSearchTier(tier);\r\n }\r\n }\r\n\r\n export(type) {\r\n\r\n // Data Table - Bar\r\n if(type === 'dataTable' && this.reportType === 'bar') {\r\n this.getTableData = true;\r\n this.csvSettings = {\r\n fileName: this.reportDetails.reportName + ' - Data for ' + this.selectedProjectDate.dateName,\r\n headers: ['Submission', 'Result'],\r\n keys: ['name', 'y'],\r\n styling: false\r\n }\r\n }\r\n\r\n // Regional Averages - Bar\r\n if(type === 'averages' && this.reportType === 'bar') {\r\n this.getAverages = true\r\n this.csvSettings = {\r\n fileName: this.reportDetails.reportName + ' - ' + (this.projectId == 52 ? 'Regional' : 'National') + ' Averages',\r\n headers: ['Month', 'Mean', 'Median'],\r\n keys: ['dateName', 'y', 'median'],\r\n styling: false\r\n }\r\n }\r\n\r\n // Data Table - Stacked\r\n if(type === 'dataTable' && this.reportType === 'stacked') {\r\n this.getTableData = true;\r\n this.csvSettings = {\r\n fileName: this.reportDetails.reportName + ' - Data for ' + this.selectedProjectDate.dateName,\r\n headers: ['Submission'].concat(this.tableHeader),\r\n keys: ['submission'].concat(this.tableHeader),\r\n styling: false\r\n }\r\n }\r\n\r\n // Regional Averages - Stacked\r\n if(type === 'averages' && this.reportType === 'stacked') {\r\n let ar = [];\r\n this.categoryAverages[0].data.forEach(n => {\r\n ar.push(n.name)\r\n }),\r\n this.categoryAverages.forEach(n => {\r\n n.data.forEach(k => {\r\n n[k.name] = k.y\r\n })\r\n })\r\n \r\n this.getAverages = true\r\n this.csvSettings = {\r\n fileName: this.reportDetails.reportName + ' - ' + (this.projectId == 52 ? 'Regional' : 'National') + ' Averages',\r\n headers: ['Type'].concat(ar),\r\n keys: ['name'].concat(ar),\r\n styling: false\r\n }\r\n }\r\n\r\n // Denominator/Numerator Table - Bar\r\n if(type === 'denNumTable' && this.reportType === 'bar') {\r\n let extraHeaders = [];\r\n let extraKeys = [];\r\n this.getDenNumTable = true;\r\n if(this.tableData[0].denominatorValue) {\r\n extraHeaders.push('Denominator')\r\n extraKeys.push('denominatorValue')\r\n }\r\n if(this.tableData[0].numeratorValue) {\r\n extraHeaders.push('Numerator')\r\n extraKeys.push('numeratorValue')\r\n }\r\n\r\n this.csvSettings = {\r\n fileName: this.reportDetails.reportName + ' - Denominator/Numerator',\r\n headers: ['Submission'].concat(extraHeaders),\r\n keys: ['name'].concat(extraKeys),\r\n styling: false\r\n }\r\n }\r\n\r\n // Chart\r\n if (type === 'main') {\r\n this.primaryChart.exportChart(null, {\r\n credits: { enabled: true, text: 'https://members.nhsbenchmarking.nhs.uk' + this.params },\r\n chart: {\r\n spacingBottom: 60, \r\n events: {\r\n render: function() {\r\n var chart = this,\r\n width = chart.chartWidth - 600,\r\n height = chart.chartHeight - 40;\r\n chart.renderer.image('https://s3.eu-west-2.amazonaws.com/nhsbn-static/Other/2022/nhsbn-logo.png', width, height, 144, 35).add();\r\n }\r\n }\r\n },\r\n type: 'image/png',\r\n filename: 'chart-' + this.reportDetails.reportId\r\n });\r\n this.createBarChart(this.monthData.data, this.selectedProjectDate.dateName, this.monthData.nationalCalculatedMean);\r\n }\r\n\r\n // Time series\r\n if (type === 'timeseries') {\r\n this.secondaryChart.exportChart(null, {\r\n credits: { enabled: true, text: 'https://members.nhsbenchmarking.nhs.uk' + this.params },\r\n chart: {\r\n spacingBottom: 60, \r\n events: {\r\n render: function() {\r\n var chart = this,\r\n width = chart.chartWidth - 600,\r\n height = chart.chartHeight - 40;\r\n chart.renderer.image('https://s3.eu-west-2.amazonaws.com/nhsbn-static/Other/2022/nhsbn-logo.png', width, height, 144, 35).add();\r\n }\r\n }\r\n },\r\n type: 'image/png',\r\n filename: 'timeseries-' + this.reportDetails.reportId\r\n });\r\n if (this.categoryAverages) {\r\n this.createLineChart(this.categoryAverages);\r\n }\r\n else {\r\n this.setData(this.reportData, this.selectedProjectDate);\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n this.selectedTiers[11].open = false\r\n }, 100);\r\n }\r\n\r\n navBack() {\r\n this.unsubscribe();\r\n // Non-ATD projects, back to home\r\n // ATD projects, back to dashboard\r\n if ([29,41,42,52,89].includes(this.projectId)) {\r\n this.router.navigate(['/home']);\r\n } else {\r\n this.router.navigate(['/dashboard/49'])\r\n }\r\n }\r\n\r\n closeMenu() {\r\n this.searchText = null;\r\n this.tierOpen = false;\r\n this.infoPanel ? this.infoPanel.info = false : null;\r\n this.selectedTiers.forEach(s => {\r\n s.open = false;\r\n });\r\n this.getTableData = false;\r\n this.getDenNumTable = false;\r\n this.getAverages = false;\r\n this.dynamicDocumentsDropdown = false;\r\n }\r\n\r\n unsubscribe() {\r\n this.primaryChartOptions = null;\r\n this.secondaryChartOptions = null;\r\n this.reportData = null;\r\n this.reportDetails = null;\r\n this.reportCategoryTypes = null;\r\n this.errorReport = null;\r\n this.error = null;\r\n this.subscriptions.forEach(s => {\r\n s.unsubscribe();\r\n });\r\n }\r\n\r\n print() {\r\n window.print();\r\n }\r\n\r\n // NEW\r\n\r\n new_formatStackedBarData(reportData) {\r\n let outputData = [];\r\n\r\n reportData.organisationList.forEach(ol => {\r\n ol.submissionData.forEach(sd => {\r\n Object.keys(sd.dateCategoryList).forEach(dcl => {\r\n let date = this.projectDates.filter(pd => pd.dateId === +dcl)[0];\r\n let highlighted;\r\n let responses = [];\r\n \r\n if (this.submissions) {\r\n if (sd.anonSubmissionCode) {\r\n highlighted = this.submissions.filter(p => p.submissionCode === sd.anonSubmissionCode)[0];\r\n } else {\r\n highlighted = this.submissions.filter(p => p.submissionCode === sd.submissionCode)[0];\r\n } \r\n } else {\r\n highlighted = null;\r\n }\r\n\r\n Object.keys(sd.dateCategoryList[dcl]).forEach(rcl => {\r\n Object.keys(sd.dateCategoryList[dcl][rcl]).forEach(res => {\r\n let category = this.reportCategories.filter(rc => rc.categoryId === +res)[0];\r\n if (category) {\r\n responses.push({\r\n category: category.categoryName,\r\n y: sd.dateCategoryList[dcl][rcl][res]\r\n })\r\n }\r\n })\r\n });\r\n\r\n if (date) {\r\n outputData.push({\r\n submission: sd.anonSubmissionCode,\r\n date: date.dateName,\r\n responses: responses,\r\n responsesSum: Math.round(this.sum.transform(responses.map(r => r.y))),\r\n sortOrder: responses[0].y,\r\n color: highlighted ? highlighted.color : null\r\n });\r\n }\r\n });\r\n });\r\n });\r\n\r\n // Group by month\r\n outputData = this.group.transform(outputData, 'date');\r\n\r\n Object.keys(outputData).forEach(key => {\r\n outputData[key] = this.order.transform(outputData[key], ['-responsesSum', 'sortOrder']);\r\n });\r\n \r\n return { byMonth: outputData };\r\n\r\n }\r\n\r\n new_formatCategoryData(projectDate, reportData) {\r\n projectDate.data = [];\r\n\r\n let categoryCount = this.reportCategories.length;\r\n\r\n reportData.organisationList.forEach(ol => {\r\n ol.submissionData.forEach(sd => {\r\n Object.keys(sd.dateCategoryList).forEach(dcl => {\r\n let data = sd.dateCategoryList[dcl].categoryResponseList;\r\n let sub;\r\n if (this.submissions) {\r\n sub = this.submissions.filter(s => s.submissionCode === sd.anonSubmissionCode)[0];\r\n } else {\r\n sub = null;\r\n }\r\n let color = null;\r\n if (sub) { color = sub.color }\r\n if (projectDate.dateId === +dcl) {\r\n projectDate.data.push({\r\n submission: sd.anonSubmissionCode,\r\n color: color,\r\n data: Object.keys(data).map(d => { \r\n let category = this.reportCategories.filter(rc => rc.categoryId === +d)[0];\r\n return {\r\n name: category.categoryName,\r\n y: data[d]\r\n }\r\n })\r\n });\r\n }\r\n })\r\n });\r\n });\r\n\r\n // Reorder data in order of first category response\r\n projectDate.data.forEach(pdd => { \r\n if (pdd.data.length !== categoryCount) {\r\n pdd.orderBy = null;\r\n } else {\r\n pdd.orderBy = pdd.data[0].y;\r\n }\r\n });\r\n let removeNulls = projectDate.data.filter(pd => pd.orderBy !== null);\r\n projectDate.data = this.order.transform(removeNulls, '-orderBy');\r\n \r\n }\r\n\r\n new_setData(selectedDate, categoryAverages) {\r\n let categories, series = [];\r\n\r\n this.errorReport = null;\r\n\r\n if (selectedDate.data.length) {\r\n switch(this.reportType) {\r\n\r\n case 'pie': \r\n \r\n this.tableData = selectedDate.data;\r\n \r\n let newSeries = [];\r\n \r\n let highlighted = selectedDate.data.filter(d => d.color !== null);\r\n \r\n if (highlighted) {\r\n highlighted.forEach(h => {\r\n newSeries.push({\r\n name: h.submission,\r\n color: h.color,\r\n data: h.data.map(hd => hd.y)\r\n })\r\n })\r\n }\r\n \r\n categories = this.reportCategories.map(c => c.categoryName);\r\n \r\n this.reportCategories.forEach((c, i) => {\r\n series.push({\r\n name: c.categoryName,\r\n data: selectedDate.data.map(d => d.data[i].y),\r\n color: selectedDate.color\r\n })\r\n });\r\n \r\n series.forEach(s => {\r\n let count = s.data.length;\r\n let sum = s.data.reduce((a, b) => a + b, 0);\r\n s.y = sum / count;\r\n });\r\n \r\n // Add national averages\r\n let nationalAverages = [];\r\n categoryAverages = categoryAverages.filter(c => c.category !== 'Medians');\r\n categoryAverages.forEach(ca => {\r\n nationalAverages.push(\r\n ca.data.filter(d => d.name === selectedDate.dateName)[0].y\r\n )\r\n });\r\n \r\n newSeries.push({\r\n name: 'National Means',\r\n data: nationalAverages\r\n });\r\n \r\n this.new_createRadarChart(categories, newSeries);\r\n \r\n break;\r\n \r\n default:\r\n this.error = 'Chart type has not been set.'\r\n }\r\n } else {\r\n this.errorReport = 'There is no data for the selected period. Please select another period from the menu above.'\r\n }\r\n }\r\n\r\n new_createRadarChart(categories, series) {\r\n let tooltipText;\r\n if (this.reportSettings.formatModifier === 'P') {\r\n tooltipText = '{series.name}:{point.y}%'\r\n } else {\r\n tooltipText = '{series.name}:{point.y}'\r\n }\r\n\r\n this.primaryChartOptions = {\r\n chart: {\r\n polar: true,\r\n type: 'line',\r\n animation: false,\r\n style: { fontFamily: '\"Helvetica Neue\", Arial, sans-serif' },\r\n backgroundColor: 'transparent',\r\n events: { \r\n load: (e => {\r\n this.primaryChart = e.target;\r\n this.createLegend(this.primaryChart);\r\n })\r\n },\r\n },\r\n colors: this.setColour,\r\n tooltip: {\r\n shared: true,\r\n useHTML: true,\r\n backgroundColor: '#000000',\r\n borderWidth: 0,\r\n shadow: false,\r\n headerFormat: '
{point.key}
',\r\n pointFormat: tooltipText,\r\n footerFormat: '
',\r\n valueDecimals: 2,\r\n style: { color: '#FFFFFF' }\r\n },\r\n title: {\r\n text: ''\r\n },\r\n exporting: { enabled: false },\r\n legend: { enabled: false },\r\n credits: { enabled: false },\r\n xAxis: {\r\n categories: categories\r\n },\r\n yAxis: {\r\n min: this.reportSettings.min ? this.reportSettings.min : null,\r\n max: this.reportSettings.max ? this.reportSettings.max : null,\r\n tickInterval: this.reportSettings.tickInterval ? this.reportSettings.tickInterval : null,\r\n gridLineColor: '#EEF1F8'\r\n },\r\n plotOptions: {\r\n series: {\r\n animation: false\r\n }\r\n },\r\n series: series\r\n };\r\n }\r\n\r\n enableColorBlindness() {\r\n if(this.colorBlindnessEnabled == false){\r\n this.primaryBarColour = '#88CCEE';\r\n this.secondaryBarColour = '#332288'\r\n this.nationalMeanColour = '#882255';\r\n this.nationalMedianColour = '#117733';\r\n this.setColour = this.colourBlindCollection;\r\n this.colorBlindnessEnabled = true;\r\n } else {\r\n this.primaryBarColour = this.globalColors.primaryBarColour;\r\n this.secondaryBarColour = this.globalColors.secondaryBarColour;\r\n this.nationalMeanColour = this.globalColors.nationalMeanColour;\r\n this.nationalMedianColour = this.globalColors.nationalMedianColour;\r\n this.setColour = this.colourCollection;\r\n this.colorBlindnessEnabled = false;\r\n }\r\n this.setView(this.projectView);\r\n }\r\n\r\n linkToFeedbackForm() {\r\n let airtableFormUrl = 'https://airtable.com/shro8tKYNltABl5BK?prefill_Source%20URL=';\r\n let currentUrl = 'https://members.nhsbenchmarking.nhs.uk' + this.router.url;\r\n window.open(airtableFormUrl + encodeURIComponent(currentUrl), '_blank');\r\n }\r\n\r\n downloadImage(){\r\n html2canvas(this.fullscreen.nativeElement).then(canvas => {\r\n this.canvas.nativeElement.src = canvas.toDataURL();\r\n this.downloadLink.nativeElement.href = canvas.toDataURL('image/png');\r\n this.downloadLink.nativeElement.download = 'semh-fullscreen.png';\r\n this.downloadLink.nativeElement.click();\r\n });\r\n }\r\n\r\n downloadReportImage(){\r\n let submissionCode: string;\r\n if(this.selectedSubmission == undefined) {\r\n submissionCode = 'NHSBN';\r\n } else {\r\n submissionCode = this.selectedSubmission.submissionCode;\r\n }\r\n \r\n if(this.projectView !== 'toolkit') {\r\n this.stopMassDownload = true;\r\n window.location.reload();\r\n } else {\r\n html2canvas(this.reportDownloadView.nativeElement).then(canvas => {\r\n this.reportCanvas.nativeElement.src = canvas.toDataURL();\r\n this.downloadReportLink.nativeElement.href = canvas.toDataURL('image/png');\r\n this.downloadReportLink.nativeElement.download = submissionCode + '-' + this.selectedTierName + `(${this.selectedProjectDate.dateName})` ;\r\n this.downloadReportLink.nativeElement.click();\r\n });\r\n }\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { ProjectComponent } from './project.component';\r\nimport { ProjectRoutingModule } from './project-routing.module';\r\n\r\nimport { Ng2HighchartsModule } from 'ng2-highcharts';\r\nimport { NgPipesModule, OrderByPipe, GroupByPipe, ChunkPipe } from 'ngx-pipes';\r\nimport { SafePipeModule } from '../utilities/pipes/safe-pipe.module'\r\n\r\nimport { BlockComponent } from 'app/project/block/block.component';\r\nimport { SectionComponent } from 'app/project/section/section.component';\r\nimport { Angular2CsvModule } from 'angular2-csv';\r\nimport { IcsService } from 'app/utilities/services/ics.service';\r\nimport { InfoPanelModule } from 'app/shared/info-panel/info-panel.module';\r\nimport { CsvDownloadModule } from 'app/shared/csv-download/csv-download.module';\r\nimport { ModalComponent } from './modal/modal.component';\r\nimport { ModalModule } from 'ngx-bootstrap';\r\n\r\nwindow['Highcharts'].setOptions({\r\n lang: {\r\n thousandsSep: ','\r\n }\r\n});\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ProjectRoutingModule,\r\n Ng2HighchartsModule,\r\n NgPipesModule,\r\n FormsModule,\r\n SafePipeModule,\r\n Angular2CsvModule,\r\n InfoPanelModule,\r\n CsvDownloadModule,\r\n ModalModule.forRoot(),\r\n ],\r\n declarations: [\r\n ProjectComponent,\r\n BlockComponent,\r\n SectionComponent,\r\n ModalComponent\r\n ],\r\n providers: [\r\n OrderByPipe,\r\n GroupByPipe,\r\n ChunkPipe,\r\n IcsService\r\n ]\r\n})\r\n\r\nexport class ProjectModule {}","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ section.reportName }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Data for {{ selectedProjectDate.dateName }}
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{ t.name }}{{ t.y | number: '1.0-2' }}
Benchmark{{ section.benchmark | number: '1.0-2' }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","module.exports = \".print-page-section-table-title {\\n font-size: 12px;\\n font-weight: bold;\\n margin-bottom: 5px; }\\n\\n.table-sm {\\n font-size: 12px !important; }\\n\\n.table-sm tr td {\\n padding: 0 5px !important; }\\n\\n@page {\\n size: A4;\\n margin: 0; }\\n\\n@media print {\\n .no-print {\\n display: none; } }\\n\\n@media screen {\\n #report {\\n background-color: #F3F3F3;\\n padding: 3em 0;\\n margin: 0.5em;\\n border-radius: 4px; }\\n .print-page {\\n max-width: 700px;\\n background-color: white;\\n border: 1px solid #CCCCCC;\\n margin: 0.5em auto;\\n padding: 2em; } }\\n\\n@media all {\\n html, body {\\n width: 210mm;\\n height: 297mm; }\\n .print-page p {\\n font-size: 10pt; }\\n .print-page table {\\n font-size: 8pt !important; }\\n .print-page-header {\\n height: 15mm; }\\n .print-page-section-mark {\\n text-align: center;\\n padding-top: 50mm; }\\n .print-page-section-mark img {\\n width: 30%; }\\n .print-page-document-title {\\n text-align: center;\\n width: 80%;\\n margin-left: 10%;\\n font-weight: 700 !important; }\\n .print-page-document-title h1 {\\n color: #005EB8 !important; }\\n .print-page-section-full {\\n height: 234mm; }\\n .print-page-section-title {\\n border-top: 1px solid #CCCCCC;\\n height: 15mm;\\n font-size: 16px;\\n padding-top: 20px;\\n font-weight: 700;\\n line-height: 18px;\\n color: #005EB8 !important; }\\n .print-page-section-chart {\\n height: 60mm; }\\n .print-page-section-row {\\n width: 100%;\\n display: table; }\\n .print-page-section-row.-footer {\\n page-break-after: always; }\\n .print-page-section-cols {\\n display: table-row;\\n width: 100%; }\\n .print-page-section-timeseries {\\n display: table-cell;\\n height: 40mm;\\n width: 100mm; }\\n .print-page-section-table {\\n display: table-cell;\\n vertical-align: top;\\n height: 40mm;\\n padding-left: 10mm; }\\n .print-page-section-table h5 {\\n margin-top: 0 !important;\\n margin-bottom: 10px;\\n color: black !important;\\n font-size: 16px !important; }\\n .print-page-footer-left {\\n display: table-cell;\\n vertical-align: bottom;\\n height: 15mm;\\n width: 100mm;\\n font-size: 9pt;\\n color: #CCCCCC !important; }\\n .print-page-footer-right {\\n display: table-cell;\\n vertical-align: bottom;\\n text-align: right;\\n height: 15mm;\\n font-size: 9pt;\\n color: #CCCCCC !important; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHJvamVjdC9zZWN0aW9uL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxhcHBcXHByb2plY3RcXHNlY3Rpb25cXHNlY3Rpb24uY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDSSxlQUFlO0VBQ2YsaUJBQWlCO0VBQ2pCLGtCQUFrQixFQUFBOztBQUd0QjtFQUNJLDBCQUEwQixFQUFBOztBQUc5QjtFQUNJLHlCQUF5QixFQUFBOztBQUs3QjtFQUNJLFFBQVE7RUFDUixTQUFTLEVBQUE7O0FBR2I7RUFDSTtJQUNJLGFBQWEsRUFBQSxFQUNoQjs7QUFHTDtFQUVJO0lBQ0kseUJBQXlCO0lBQ3pCLGNBQWM7SUFDZCxhQUFhO0lBQ2Isa0JBQWtCLEVBQUE7RUFHdEI7SUFDSSxnQkFBZ0I7SUFDaEIsdUJBQXVCO0lBQ3ZCLHlCQUF5QjtJQUN6QixrQkFBa0I7SUFDbEIsWUFBWSxFQUFBLEVBQ2Y7O0FBSUw7RUFFSTtJQUNFLFlBQVk7SUFDWixhQUFhLEVBQUE7RUFHZjtJQUNJLGVBQWUsRUFBQTtFQUduQjtJQUNJLHlCQUF5QixFQUFBO0VBRzdCO0lBQ0ksWUFBWSxFQUFBO0VBSWhCO0lBQ0ksa0JBQWtCO0lBQ2xCLGlCQUFpQixFQUFBO0VBR3JCO0lBQ0ksVUFBVSxFQUFBO0VBR2Q7SUFDSSxrQkFBa0I7SUFDbEIsVUFBVTtJQUNWLGdCQUFnQjtJQUNoQiwyQkFBMkIsRUFBQTtFQUcvQjtJQUNJLHlCQUEyQixFQUFBO0VBTy9CO0lBQ0ksYUFBYSxFQUFBO0VBSWpCO0lBQ0ksNkJBQTZCO0lBQzdCLFlBQVk7SUFDWixlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixpQkFBaUI7SUFDakIseUJBQTJCLEVBQUE7RUFJL0I7SUFDSSxZQUFZLEVBQUE7RUFJaEI7SUFDSSxXQUFXO0lBQ1gsY0FBYyxFQUFBO0VBSWxCO0lBQ0ksd0JBQXdCLEVBQUE7RUFHNUI7SUFDSSxrQkFBa0I7SUFDbEIsV0FBVyxFQUFBO0VBR2Y7SUFDSSxtQkFBbUI7SUFDbkIsWUFBWTtJQUNaLFlBQVksRUFBQTtFQUloQjtJQUNJLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsWUFBWTtJQUNaLGtCQUFrQixFQUFBO0VBSXRCO0lBQ0ksd0JBQXdCO0lBQ3hCLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsMEJBQTBCLEVBQUE7RUFHOUI7SUFDSSxtQkFBbUI7SUFDbkIsc0JBQXNCO0lBQ3RCLFlBQVk7SUFDWixZQUFZO0lBQ1osY0FBYztJQUNkLHlCQUF5QixFQUFBO0VBSTdCO0lBQ0ksbUJBQW1CO0lBQ25CLHNCQUFzQjtJQUN0QixpQkFBaUI7SUFDakIsWUFBWTtJQUNaLGNBQWM7SUFDZCx5QkFBeUIsRUFBQSxFQUU1QiIsImZpbGUiOiJzcmMvYXBwL3Byb2plY3Qvc2VjdGlvbi9zZWN0aW9uLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vdmFyaWFibGVzJztcclxuXHJcbi5wcmludC1wYWdlLXNlY3Rpb24tdGFibGUtdGl0bGUge1xyXG4gICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICBtYXJnaW4tYm90dG9tOiA1cHg7XHJcbn1cclxuXHJcbi50YWJsZS1zbSB7XHJcbiAgICBmb250LXNpemU6IDEycHggIWltcG9ydGFudDtcclxufVxyXG5cclxuLnRhYmxlLXNtIHRyIHRkIHtcclxuICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8vIFByaW50IHN0eWxlc1xyXG5cclxuQHBhZ2Uge1xyXG4gICAgc2l6ZTogQTQ7XHJcbiAgICBtYXJnaW46IDA7XHJcbn1cclxuXHJcbkBtZWRpYSBwcmludCB7XHJcbiAgICAubm8tcHJpbnQgeyBcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG59XHJcblxyXG5AbWVkaWEgc2NyZWVuIHtcclxuICAgIFxyXG4gICAgI3JlcG9ydCB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjNGMztcclxuICAgICAgICBwYWRkaW5nOiAzZW0gMDtcclxuICAgICAgICBtYXJnaW46IDAuNWVtO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgIH1cclxuXHJcbiAgICAucHJpbnQtcGFnZSB7XHJcbiAgICAgICAgbWF4LXdpZHRoOiA3MDBweDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjQ0NDQ0NDO1xyXG4gICAgICAgIG1hcmdpbjogMC41ZW0gYXV0bztcclxuICAgICAgICBwYWRkaW5nOiAyZW07XHJcbiAgICB9XHJcblxyXG59XHJcblxyXG5AbWVkaWEgYWxsIHtcclxuXHJcbiAgICBodG1sLCBib2R5IHtcclxuICAgICAgd2lkdGg6IDIxMG1tO1xyXG4gICAgICBoZWlnaHQ6IDI5N21tO1xyXG4gICAgfVxyXG5cclxuICAgIC5wcmludC1wYWdlIHAge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTBwdDtcclxuICAgIH1cclxuXHJcbiAgICAucHJpbnQtcGFnZSB0YWJsZSB7XHJcbiAgICAgICAgZm9udC1zaXplOiA4cHQgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAucHJpbnQtcGFnZS1oZWFkZXIge1xyXG4gICAgICAgIGhlaWdodDogMTVtbTtcclxuICAgICAgICAvLyBib3JkZXI6IDNweCBzb2xpZCBibHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC5wcmludC1wYWdlLXNlY3Rpb24tbWFyayB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIHBhZGRpbmctdG9wOiA1MG1tO1xyXG4gICAgfVxyXG5cclxuICAgIC5wcmludC1wYWdlLXNlY3Rpb24tbWFyayBpbWcge1xyXG4gICAgICAgIHdpZHRoOiAzMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLnByaW50LXBhZ2UtZG9jdW1lbnQtdGl0bGUge1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICB3aWR0aDogODAlO1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxMCU7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5wcmludC1wYWdlLWRvY3VtZW50LXRpdGxlIGgxIHtcclxuICAgICAgICBjb2xvcjogJG5ocy1ibHVlICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gLnByaW50LXBhZ2Utc2VjdGlvbiB7XHJcbiAgICAvLyAgICAgYm9yZGVyOiAzcHggc29saWQgZ3JlZW47XHJcbiAgICAvLyB9XHJcblxyXG4gICAgLnByaW50LXBhZ2Utc2VjdGlvbi1mdWxsIHtcclxuICAgICAgICBoZWlnaHQ6IDIzNG1tO1xyXG4gICAgICAgIC8vIGJvcmRlcjogM3B4IHNvbGlkIGdyZWVuO1xyXG4gICAgfVxyXG5cclxuICAgIC5wcmludC1wYWdlLXNlY3Rpb24tdGl0bGUge1xyXG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjQ0NDQ0NDO1xyXG4gICAgICAgIGhlaWdodDogMTVtbTtcclxuICAgICAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICAgICAgcGFkZGluZy10b3A6IDIwcHg7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgICBsaW5lLWhlaWdodDogMThweDtcclxuICAgICAgICBjb2xvcjogJG5ocy1ibHVlICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgLy8gYm9yZGVyOiAzcHggc29saWQgeWVsbG93O1xyXG4gICAgfVxyXG5cclxuICAgIC5wcmludC1wYWdlLXNlY3Rpb24tY2hhcnQge1xyXG4gICAgICAgIGhlaWdodDogNjBtbTtcclxuICAgICAgICAvL2JvcmRlcjogM3B4IHNvbGlkIG9yYW5nZTtcclxuICAgIH1cclxuXHJcbiAgICAucHJpbnQtcGFnZS1zZWN0aW9uLXJvdyB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgZGlzcGxheTogdGFibGU7XHJcbiAgICAgICAgLy9ib3JkZXI6IDNweCBzb2xpZCBwaW5rO1xyXG4gICAgfVxyXG5cclxuICAgIC5wcmludC1wYWdlLXNlY3Rpb24tcm93Li1mb290ZXIge1xyXG4gICAgICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGFsd2F5cztcclxuICAgIH1cclxuXHJcbiAgICAucHJpbnQtcGFnZS1zZWN0aW9uLWNvbHMge1xyXG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAucHJpbnQtcGFnZS1zZWN0aW9uLXRpbWVzZXJpZXMge1xyXG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XHJcbiAgICAgICAgaGVpZ2h0OiA0MG1tO1xyXG4gICAgICAgIHdpZHRoOiAxMDBtbTsgXHJcbiAgICAgICAgLy9ib3JkZXI6IDNweCBzb2xpZCBwdXJwbGU7XHJcbiAgICB9XHJcblxyXG4gICAgLnByaW50LXBhZ2Utc2VjdGlvbi10YWJsZSB7XHJcbiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgICAgIGhlaWdodDogNDBtbTtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEwbW07XHJcbiAgICAgICAgLy9ib3JkZXI6IDNweCBzb2xpZCBibGFjaztcclxuICAgIH1cclxuXHJcbiAgICAucHJpbnQtcGFnZS1zZWN0aW9uLXRhYmxlIGg1IHtcclxuICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxuICAgICAgICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcclxuICAgICAgICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAucHJpbnQtcGFnZS1mb290ZXItbGVmdCB7XHJcbiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xyXG4gICAgICAgIGhlaWdodDogMTVtbTtcclxuICAgICAgICB3aWR0aDogMTAwbW07IFxyXG4gICAgICAgIGZvbnQtc2l6ZTogOXB0O1xyXG4gICAgICAgIGNvbG9yOiAjQ0NDQ0NDICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgLy8gYm9yZGVyOiAzcHggc29saWQgcHVycGxlO1xyXG4gICAgfVxyXG5cclxuICAgIC5wcmludC1wYWdlLWZvb3Rlci1yaWdodCB7XHJcbiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xyXG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xyXG4gICAgICAgIGhlaWdodDogMTVtbTtcclxuICAgICAgICBmb250LXNpemU6IDlwdDtcclxuICAgICAgICBjb2xvcjogI0NDQ0NDQyAhaW1wb3J0YW50O1xyXG4gICAgICAgIC8vIGJvcmRlcjogM3B4IHNvbGlkIGJsYWNrO1xyXG4gICAgfVxyXG5cclxufSJdfQ== */\"","import { Component, OnChanges, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-section',\r\n templateUrl: './section.component.html',\r\n styleUrls: ['./section.component.scss']\r\n})\r\n\r\nexport class SectionComponent implements OnChanges {\r\n \r\n @Input() section;\r\n @Input() index;\r\n @Input() projectId;\r\n @Input() selectedProjectDate;\r\n\r\n charts = [\r\n {\r\n reportName: null,\r\n benchmark: null,\r\n dataTable: null,\r\n primaryChartOptions: null,\r\n primaryChart: null,\r\n secondaryChartOptions: null,\r\n secondaryChart: null\r\n },\r\n {\r\n reportName: null,\r\n benchmark: null,\r\n dataTable: null,\r\n primaryChartOptions: null,\r\n primaryChart: null,\r\n secondaryChartOptions: null,\r\n secondaryChart: null\r\n }\r\n ]\r\n\r\n copyrightYear: number = new Date().getFullYear();\r\n\r\n constructor() {}\r\n\r\n ngOnChanges() {\r\n this.charts.forEach((c, i) => {\r\n if (this.section[i] && this.section[i].reportName) {\r\n c.reportName = this.section[i].reportName,\r\n c.benchmark = this.section[i].benchmark,\r\n c.dataTable = this.section[i].dataTable,\r\n c.primaryChartOptions = this.createBarChart(this.section[i].dataBarChart);\r\n c.secondaryChartOptions = this.createLineChart(this.section[i].dataLineChart, this.projectId === 29 ? this.section[i].benchmark : null);\r\n }\r\n });\r\n this.index = this.index + 4;\r\n }\r\n\r\n createBarChart(data) {\r\n\r\n let values = data.map(d => d.y);\r\n let count = values.length\r\n let average = values.reduce((a,b) => a + b, 0) / count;\r\n\r\n return {\r\n chart: {\r\n type: 'column',\r\n height: 220,\r\n animation: false,\r\n style: { fontFamily: '\"Helvetica Neue\", Arial, sans-serif' },\r\n backgroundColor: 'transparent',\r\n // events: { \r\n // load: (e => {\r\n // this.primaryChart = e.target;\r\n // })\r\n // },\r\n },\r\n colors: ['#003087', '#005EB8', '#0072CE', '#41B6E6', '#00A9CE', '#231f20', '#425563', '#768692'],\r\n tooltip: {\r\n useHTML: true,\r\n backgroundColor: '#000000',\r\n borderWidth: 0,\r\n shadow: false,\r\n headerFormat: '
{point.key}
',\r\n pointFormat: '',\r\n footerFormat: '
{series.name}:{point.y}
',\r\n valueDecimals: 2,\r\n style: { color: '#FFFFFF' }\r\n },\r\n title: {\r\n text: ''\r\n },\r\n exporting: { enabled: false },\r\n legend: { enabled: false },\r\n credits: { enabled: false },\r\n xAxis: {\r\n categories: true,\r\n gridLineColor: '#EEF1F8'\r\n },\r\n yAxis: {\r\n // min: this.reportSettings.min ? this.reportSettings.min : null,\r\n // max: this.reportSettings.max ? this.reportSettings.max : null,\r\n // tickInterval: this.reportSettings.tickInterval ? this.reportSettings.tickInterval : null,\r\n gridLineColor: '#EEF1F8',\r\n title: {\r\n text: null // Report name\r\n },\r\n plotLines: [{\r\n color: '#009639',\r\n value: average ? average : null,\r\n width: '2',\r\n zIndex: 10\r\n }],\r\n },\r\n plotOptions: {\r\n series: {\r\n animation: false\r\n }\r\n },\r\n series: [\r\n {\r\n data: data,\r\n color: '#005EB8'\r\n }\r\n ]\r\n };\r\n }\r\n\r\n createLineChart(data, benchmark?) {\r\n return {\r\n chart: {\r\n type: 'line',\r\n height: 150,\r\n animation: false,\r\n style: { fontFamily: '\"Helvetica Neue\", Arial, sans-serif' },\r\n backgroundColor: 'transparent',\r\n // events: { \r\n // load: (e => {\r\n // this.secondaryChart = e.target;\r\n // })\r\n // },\r\n },\r\n colors: ['#003087', '#005EB8', '#0072CE', '#41B6E6', '#00A9CE', '#231f20', '#425563', '#768692'],\r\n tooltip: {\r\n shared: true,\r\n useHTML: true,\r\n backgroundColor: '#000000',\r\n borderWidth: 0,\r\n shadow: false,\r\n headerFormat: '
{point.key}
',\r\n pointFormat: '',\r\n footerFormat: '
{series.name}:{point.y}
',\r\n valueDecimals: 2,\r\n style: { color: '#FFFFFF' }\r\n },\r\n title: {\r\n text: ''\r\n },\r\n exporting: { enabled: false },\r\n legend: { enabled: false },\r\n credits: { enabled: false },\r\n plotOptions: {\r\n series: {\r\n animation: false\r\n }\r\n },\r\n xAxis: {\r\n categories: true,\r\n crosshair: true\r\n },\r\n yAxis: {\r\n // min: this.reportSettings.min ? this.reportSettings.min : null,\r\n // max: this.reportSettings.max ? this.reportSettings.max : null,\r\n // tickInterval: this.reportSettings.tickInterval ? this.reportSettings.tickInterval : null,\r\n gridLineColor: '#EEF1F8',\r\n allowDecimals: false,\r\n title: {\r\n text: ''\r\n },\r\n plotLines: [{\r\n color: '#768692',\r\n value: benchmark ? benchmark : null,\r\n width: '2',\r\n zIndex: 5\r\n }],\r\n },\r\n series: data\r\n };\r\n }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { RequestComponent } from './request.component'\r\n\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service'\r\n\r\nconst outputsRoutes: Routes = [\r\n { path: 'request/:requestId', component: RequestComponent, canActivate: [AuthGuardService] }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(outputsRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class RequestRoutingModule { }","module.exports = \"\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Back to Forum\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n

Loading request. Please wait...

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

{{ request.requestTitle }}

\\r\\n

\\r\\n {{ request.projectName }} · {{ request.requestDate | date: 'd MMMM y' }}\\r\\n

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

\\r\\n You are replying to the following comment from {{ parentComment.commentorFullName }}:\\r\\n

\\r\\n

\\r\\n {{ parentComment.commentBody }}\\r\\n

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

\\r\\n Email Preferences\\r\\n

\\r\\n

\\r\\n You are not currently opted-in to receive email notifications. Click here to opt-in and receive a daily digest of notifications, including updates on Forum requests that you have initiated or commented on.\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Please note that when you click 'Submit Response', your comment will be displayed publicly below, along with your name and email address.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

\\r\\n There are no responses to this request. Click 'Submit a Response' above to be the first.\\r\\n

\\r\\n
\\r\\n\\r\\n
0\\\">\\r\\n

\\r\\n {{ comments.length }}{{' public response' | makePluralString: comments.length}}\\r\\n

\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ comment.commentorFullName }} · \\r\\n {{ comment.commentorFullName }} (me) · \\r\\n {{ comment.commentDate | date: 'd MMMM y' }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n Reply\\r\\n \\r\\n\\r\\n \\r\\n Report\\r\\n \\r\\n\\r\\n \\r\\n Remove\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ child.commentorFullName }} · \\r\\n {{ child.commentorFullName }} (me) · \\r\\n {{ child.commentDate | date: 'd MMMM y' }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n Report\\r\\n \\r\\n\\r\\n · \\r\\n \\r\\n Remove\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\"","module.exports = \"/* Universal Styles */\\n.loading-overview {\\n margin-top: 25vh; }\\n.loading-overview p {\\n margin-top: 0.75em;\\n font-size: 20px;\\n font-weight: 600;\\n color: #005EB8;\\n text-align: center; }\\n#containerRequest {\\n padding-top: 1em;\\n background-color: #F3F3F3;\\n min-height: 75vh;\\n padding-bottom: 5em;\\n z-index: -1; }\\n#sidebar {\\n min-height: 70vh; }\\n#selectorBar {\\n background-color: #005EB8;\\n margin-top: -2em; }\\n#selectorBar .btn-back {\\n color: white;\\n font-size: 17px;\\n line-height: 2.5em; }\\n#selectorBar .btn-back .fa {\\n margin-right: 5px; }\\n#selectorBar .btn-back:hover {\\n cursor: pointer; }\\n#selectorBar .form-group {\\n padding: 5px 0;\\n margin-bottom: 0;\\n background-color: #004485; }\\n#selectorBar .form-control {\\n background-color: #004485;\\n color: white;\\n border: none; }\\n#selectorBar .form-control:focus {\\n outline: none;\\n box-shadow: none; }\\n@media (max-width: 991px) {\\n .row .col-md-4 > .pull-right {\\n float: none !important; } }\\n@media (min-width: 1300px) {\\n #containerForum {\\n padding-left: 15%;\\n padding-right: 15%; } }\\n/* Forum-specific style */\\nh1 {\\n font-weight: 600;\\n margin-top: 1em;\\n margin-bottom: 0.5em;\\n line-height: 1.25em; }\\nli {\\n font-size: 17px; }\\n.intro-p {\\n font-size: 1.2em; }\\n.btn-request {\\n margin-top: 1em;\\n margin-bottom: 1.5em; }\\n.btn-request .fal {\\n margin-right: 10px; }\\nform .form-control {\\n padding: 1em; }\\n.submit-warning {\\n margin-top: 1em; }\\n.request {\\n margin-top: 1.5em;\\n background-color: white;\\n padding: 2em;\\n border: 1px solid #ccc;\\n border-radius: 5px; }\\n.request-header {\\n padding-bottom: 1em;\\n margin-bottom: 1em;\\n border-bottom: 1px solid #ccc; }\\n.-comment .request-header {\\n padding-bottom: 0;\\n margin-bottom: 0;\\n border-bottom: none;\\n padding-top: 1em;\\n margin-top: 1em;\\n border-top: 1px solid #ccc; }\\n.request-header h3 {\\n margin-top: 0;\\n margin-bottom: 0.25em;\\n text-transform: capitalize; }\\n.request-body {\\n font-size: 17px; }\\n.request-meta {\\n margin-bottom: 0;\\n color: #768692; }\\n.meta-footer {\\n margin-top: 1em;\\n color: #777777; }\\n.meta-footer .actions {\\n text-align: right;\\n color: #ccc;\\n font-weight: 500; }\\n.meta-footer .actions .far {\\n margin-right: 0.5em; }\\n.btn-action:hover {\\n cursor: pointer; }\\n.btn-reply {\\n margin-right: 1em;\\n color: #005EB8; }\\n.btn-reply:hover {\\n color: black;\\n cursor: pointer; }\\n.btn-report:hover {\\n color: #8a6d3b; }\\n.btn-remove:hover {\\n color: #a94442; }\\n.comments {\\n margin-top: 2em; }\\n#response {\\n margin-top: 2em; }\\n#response .form-actions {\\n margin-top: 1em; }\\n#response .form-actions .btn {\\n margin-right: 0.5em; }\\n.no-comments {\\n margin-top: 3em;\\n padding-top: 2em;\\n border-top: 1px solid #ccc; }\\n.-my-comment {\\n background-color: #F2F7FB; }\\n.parent-container {\\n padding: 1em;\\n border-top: 1px solid #ccc;\\n border-left: 1px solid #ccc;\\n border-right: 1px solid #ccc; }\\n.parent-intro {\\n font-weight: 600; }\\n.parent-body {\\n margin-bottom: 0; }\\n.alert h4 {\\n font-weight: 600; }\\n.alert h4 i {\\n margin-right: 0.5em; }\\n.alert:hover {\\n border-color: #3c763d;\\n cursor: pointer; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVxdWVzdC9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxyZXF1ZXN0XFxyZXF1ZXN0LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9yZXF1ZXN0L0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxfdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEscUJBQUE7QUFFQTtFQUNJLGdCQUFnQixFQUFBO0FBR3BCO0VBQ0ksa0JBQWtCO0VBQ2xCLGVBQWU7RUFDZixnQkFBZ0I7RUFDaEIsY0NUYztFRFVkLGtCQUFrQixFQUFBO0FBR3RCO0VBQ0UsZ0JBQWdCO0VBQ2hCLHlCQUF5QjtFQUN6QixnQkFBZ0I7RUFDaEIsbUJBQW1CO0VBQ25CLFdBQVcsRUFBQTtBQUdiO0VBQ0UsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDRSx5QkMxQmdCO0VEMkJoQixnQkFBZ0IsRUFBQTtBQUdsQjtFQUNFLFlBQVk7RUFDWixlQUFlO0VBQ2Ysa0JBQWtCLEVBQUE7QUFHcEI7RUFDRSxpQkFBaUIsRUFBQTtBQUduQjtFQUNFLGVBQWUsRUFBQTtBQUdqQjtFQUNFLGNBQWM7RUFDZCxnQkFBZ0I7RUFDaEIseUJBQXlCLEVBQUE7QUFHM0I7RUFDRSx5QkFBeUI7RUFDekIsWUFBWTtFQUNaLFlBQVksRUFBQTtBQUdkO0VBQ0UsYUFBYTtFQUNiLGdCQUFnQixFQUFBO0FBR2xCO0VBQ0k7SUFDSSxzQkFBc0IsRUFBQSxFQUN6QjtBQUdMO0VBQ0k7SUFDSSxpQkFBaUI7SUFDakIsa0JBQWtCLEVBQUEsRUFDckI7QUFHTCx5QkFBQTtBQUVBO0VBQ0ksZ0JBQWdCO0VBQ2hCLGVBQWU7RUFDZixvQkFBb0I7RUFDcEIsbUJBQW1CLEVBQUE7QUFHdkI7RUFDSSxlQUFlLEVBQUE7QUFHbkI7RUFDSSxnQkFBZ0IsRUFBQTtBQUdwQjtFQUNJLGVBQWU7RUFDZixvQkFBb0IsRUFBQTtBQUd4QjtFQUNJLGtCQUFrQixFQUFBO0FBR3RCO0VBQ0ksWUFBWSxFQUFBO0FBR2hCO0VBQ0ksZUFBZSxFQUFBO0FBR25CO0VBQ0ksaUJBQWlCO0VBQ2pCLHVCQUF1QjtFQUN2QixZQUFZO0VBQ1osc0JBQXNCO0VBQ3RCLGtCQUFrQixFQUFBO0FBR3RCO0VBQ0ksbUJBQW1CO0VBQ25CLGtCQUFrQjtFQUNsQiw2QkFBNkIsRUFBQTtBQUdqQztFQUNJLGlCQUFpQjtFQUNqQixnQkFBZ0I7RUFDaEIsbUJBQW1CO0VBQ25CLGdCQUFnQjtFQUNoQixlQUFlO0VBQ2YsMEJBQTBCLEVBQUE7QUFHOUI7RUFDSSxhQUFhO0VBQ2IscUJBQXFCO0VBQ3JCLDBCQUEwQixFQUFBO0FBRzlCO0VBQ0ksZUFBZSxFQUFBO0FBR25CO0VBQ0ksZ0JBQWdCO0VBQ2hCLGNDN0ljLEVBQUE7QURnSmxCO0VBQ0ksZUFBZTtFQUNmLGNBQWMsRUFBQTtBQUdsQjtFQUNJLGlCQUFpQjtFQUNqQixXQUFXO0VBQ1gsZ0JBQWdCLEVBQUE7QUFHcEI7RUFDSSxtQkFBbUIsRUFBQTtBQUd2QjtFQUNJLGVBQWUsRUFBQTtBQUduQjtFQUNJLGlCQUFpQjtFQUNqQixjQ3ZLYyxFQUFBO0FEMEtsQjtFQUNJLFlBQVk7RUFDWixlQUFlLEVBQUE7QUFHbkI7RUFDSSxjQUNKLEVBQUE7QUFFQTtFQUNJLGNBQ0osRUFBQTtBQUVBO0VBQ0ksZUFBZSxFQUFBO0FBR25CO0VBQ0ksZUFBZSxFQUFBO0FBR25CO0VBQ0ksZUFBZSxFQUFBO0FBR25CO0VBQ0ksbUJBQW1CLEVBQUE7QUFHdkI7RUFDSSxlQUFlO0VBQ2YsZ0JBQWdCO0VBQ2hCLDBCQUEwQixFQUFBO0FBRzlCO0VBQ0kseUJBQXlCLEVBQUE7QUFHN0I7RUFDSSxZQUFZO0VBQ1osMEJBQTBCO0VBQzFCLDJCQUEyQjtFQUMzQiw0QkFBNEIsRUFBQTtBQUdoQztFQUNJLGdCQUFnQixFQUFBO0FBR3BCO0VBQ0ksZ0JBQWdCLEVBQUE7QUFHcEI7RUFDSSxnQkFBZ0IsRUFBQTtBQUdwQjtFQUNJLG1CQUFtQixFQUFBO0FBR3ZCO0VBQ0kscUJBQXFCO0VBQ3JCLGVBQWUsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3JlcXVlc3QvcmVxdWVzdC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uL3ZhcmlhYmxlcyc7XHJcblxyXG4vKiBVbml2ZXJzYWwgU3R5bGVzICovXHJcblxyXG4ubG9hZGluZy1vdmVydmlldyB7XHJcbiAgICBtYXJnaW4tdG9wOiAyNXZoO1xyXG59XHJcblxyXG4ubG9hZGluZy1vdmVydmlldyBwIHtcclxuICAgIG1hcmdpbi10b3A6IDAuNzVlbTtcclxuICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG59XHJcblxyXG4jY29udGFpbmVyUmVxdWVzdCB7XHJcbiAgcGFkZGluZy10b3A6IDFlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGM0YzO1xyXG4gIG1pbi1oZWlnaHQ6IDc1dmg7XHJcbiAgcGFkZGluZy1ib3R0b206IDVlbTtcclxuICB6LWluZGV4OiAtMTtcclxufVxyXG5cclxuI3NpZGViYXIge1xyXG4gIG1pbi1oZWlnaHQ6IDcwdmg7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1ibHVlO1xyXG4gIG1hcmdpbi10b3A6IC0yZW07XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuYnRuLWJhY2sge1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBmb250LXNpemU6IDE3cHg7XHJcbiAgbGluZS1oZWlnaHQ6IDIuNWVtO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ0bi1iYWNrIC5mYSB7XHJcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuYnRuLWJhY2s6aG92ZXIge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5mb3JtLWdyb3VwIHtcclxuICBwYWRkaW5nOiA1cHggMDtcclxuICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDQ0ODU7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuZm9ybS1jb250cm9sIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0NDg1O1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBib3JkZXI6IG5vbmU7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuZm9ybS1jb250cm9sOmZvY3VzIHtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbkBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCkge1xyXG4gICAgLnJvdyAuY29sLW1kLTQgPiAucHVsbC1yaWdodCB7XHJcbiAgICAgICAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIH1cclxufVxyXG5cclxuQG1lZGlhIChtaW4td2lkdGg6IDEzMDBweCkge1xyXG4gICAgI2NvbnRhaW5lckZvcnVtIHtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDE1JTtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNSU7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qIEZvcnVtLXNwZWNpZmljIHN0eWxlICovXHJcblxyXG5oMSB7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgbWFyZ2luLXRvcDogMWVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS4yNWVtO1xyXG59XHJcblxyXG5saSB7XHJcbiAgICBmb250LXNpemU6IDE3cHg7XHJcbn1cclxuXHJcbi5pbnRyby1wIHtcclxuICAgIGZvbnQtc2l6ZTogMS4yZW07XHJcbn1cclxuXHJcbi5idG4tcmVxdWVzdCB7XHJcbiAgICBtYXJnaW4tdG9wOiAxZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVlbTtcclxufVxyXG5cclxuLmJ0bi1yZXF1ZXN0IC5mYWwge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG59XHJcblxyXG5mb3JtIC5mb3JtLWNvbnRyb2wge1xyXG4gICAgcGFkZGluZzogMWVtO1xyXG59XHJcblxyXG4uc3VibWl0LXdhcm5pbmcge1xyXG4gICAgbWFyZ2luLXRvcDogMWVtO1xyXG59XHJcblxyXG4ucmVxdWVzdCB7XHJcbiAgICBtYXJnaW4tdG9wOiAxLjVlbTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgcGFkZGluZzogMmVtO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcclxufVxyXG5cclxuLnJlcXVlc3QtaGVhZGVyIHtcclxuICAgIHBhZGRpbmctYm90dG9tOiAxZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjYztcclxufVxyXG5cclxuLi1jb21tZW50IC5yZXF1ZXN0LWhlYWRlciB7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xyXG4gICAgcGFkZGluZy10b3A6IDFlbTtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjY2NjO1xyXG59XHJcblxyXG4ucmVxdWVzdC1oZWFkZXIgaDMge1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuMjVlbTtcclxuICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xyXG59XHJcblxyXG4ucmVxdWVzdC1ib2R5IHtcclxuICAgIGZvbnQtc2l6ZTogMTdweDtcclxufVxyXG5cclxuLnJlcXVlc3QtbWV0YSB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgY29sb3I6ICRuaHMtZ3JleTtcclxufVxyXG5cclxuLm1ldGEtZm9vdGVyIHtcclxuICAgIG1hcmdpbi10b3A6IDFlbTtcclxuICAgIGNvbG9yOiAjNzc3Nzc3O1xyXG59XHJcblxyXG4ubWV0YS1mb290ZXIgLmFjdGlvbnMge1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICBjb2xvcjogI2NjYztcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbn1cclxuXHJcbi5tZXRhLWZvb3RlciAuYWN0aW9ucyAuZmFyIHtcclxuICAgIG1hcmdpbi1yaWdodDogMC41ZW07XHJcbn1cclxuXHJcbi5idG4tYWN0aW9uOmhvdmVyIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmJ0bi1yZXBseSB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDFlbTtcclxuICAgIGNvbG9yOiAkbmhzLWJsdWU7XHJcbn1cclxuXHJcbi5idG4tcmVwbHk6aG92ZXIge1xyXG4gICAgY29sb3I6IGJsYWNrO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uYnRuLXJlcG9ydDpob3ZlciB7XHJcbiAgICBjb2xvcjogIzhhNmQzYlxyXG59XHJcblxyXG4uYnRuLXJlbW92ZTpob3ZlciB7XHJcbiAgICBjb2xvcjogI2E5NDQ0MlxyXG59XHJcblxyXG4uY29tbWVudHMge1xyXG4gICAgbWFyZ2luLXRvcDogMmVtO1xyXG59XHJcblxyXG4jcmVzcG9uc2Uge1xyXG4gICAgbWFyZ2luLXRvcDogMmVtO1xyXG59XHJcblxyXG4jcmVzcG9uc2UgLmZvcm0tYWN0aW9ucyB7XHJcbiAgICBtYXJnaW4tdG9wOiAxZW07XHJcbn1cclxuXHJcbiNyZXNwb25zZSAuZm9ybS1hY3Rpb25zIC5idG4ge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufVxyXG5cclxuLm5vLWNvbW1lbnRzIHtcclxuICAgIG1hcmdpbi10b3A6IDNlbTtcclxuICAgIHBhZGRpbmctdG9wOiAyZW07XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2NjYztcclxufVxyXG5cclxuLi1teS1jb21tZW50IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNGMkY3RkI7XHJcbn1cclxuXHJcbi5wYXJlbnQtY29udGFpbmVyIHtcclxuICAgIHBhZGRpbmc6IDFlbTtcclxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjY2NjO1xyXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjO1xyXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2NjYztcclxufVxyXG5cclxuLnBhcmVudC1pbnRybyB7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG59XHJcblxyXG4ucGFyZW50LWJvZHkge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxufVxyXG5cclxuLmFsZXJ0IGg0IHtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbi5hbGVydCBoNCBpIHtcclxuICAgIG1hcmdpbi1yaWdodDogMC41ZW07XHJcbn1cclxuICBcclxuLmFsZXJ0OmhvdmVyIHtcclxuICAgIGJvcmRlci1jb2xvcjogIzNjNzYzZDtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufSIsIiRpY29uLWZvbnQtcGF0aDogJy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAtc2Fzcy9hc3NldHMvZm9udHMvYm9vdHN0cmFwLyc7XHJcblxyXG4vLyBDdXN0b20gdmFyaWFibGVzXHJcbiRuaHMtYmx1ZTogIzAwNUVCODtcclxuJG5ocy1kYXJrLWJsdWU6ICMwMDQ0ODU7XHJcbiRuaHMtZ3JleTogIzc2ODY5MjtcclxuJG5ocy1mYWRlZC1ibHVlOiAjRjJGN0ZCO1xyXG4kYWN0aXZlLWFkbWluLXllbGxvdzogI0ZEQkMzMDtcclxuJGFjdGl2ZS1hZG1pbi1kYXJreWVsbG93OiAjRTU5OTAwO1xyXG4gXHJcbi8vIEJvb3RzdHJhcCB2YXJpYWJsZXNcclxuJHRleHQtY29sb3I6IGJsYWNrO1xyXG4kYm9yZGVyLXJhZGl1cy1iYXNlOiAwO1xyXG4kYm9yZGVyLXJhZGl1cy1zbWFsbDogMDtcclxuJGJyYW5kLXByaW1hcnk6ICRuaHMtYmx1ZTtcclxuJGJyYW5kLXN1Y2Nlc3M6IGdyZWVuO1xyXG4kbGluay1ob3Zlci1kZWNvcmF0aW9uOiBub25lO1xyXG4kZm9udC1zaXplLWg0OiAxN3B4O1xyXG4kbmF2YmFyLW1hcmdpbi1ib3R0b206IDA7XHJcbiRuYXZiYXItaGVpZ2h0OiA2MHB4O1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1jb2xvcjogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWhvdmVyLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWFjdGl2ZS1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtYmc6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWJvcmRlci1jb2xvcjogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaWNvbi1iYXItYmc6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWhvdmVyLWJnOiB3aGl0ZTtcclxuXHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYmc6ICRuaHMtYmx1ZTtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1jb2xvcjogd2hpdGU7XHJcbiRuYXYtcGlsbHMtYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJHRhYmxlLWJnLWhvdmVyOiAkbmhzLWZhZGVkLWJsdWU7XHJcbiRoZWFkaW5ncy1zbWFsbC1jb2xvcjogJG5ocy1ncmV5OyJdfQ== */\"","import { Component, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { Meta, Title } from '@angular/platform-browser';\r\nimport { KenService } from '../utilities/services/ken.service';\r\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { DataService } from '../utilities/services/data.service'\r\nimport { MemberService } from 'app/utilities/services/member.service';\r\nimport { environment } from 'environments/environment';\r\n\r\n@Component({\r\n selector: 'app-request',\r\n templateUrl: './request.component.html',\r\n styleUrls: ['./request.component.scss']\r\n})\r\nexport class RequestComponent implements OnInit {\r\n\r\n requestId;\r\n currentUserLogonName;\r\n currentUserNotifications;\r\n optInMessage: boolean = false;\r\n request;\r\n comments;\r\n response: boolean = false;\r\n responseForm: FormGroup;\r\n\r\n // Comment threads\r\n parentId; parentComment;\r\n\r\n public navIsFixed: boolean = false;\r\n public width: number;\r\n\r\n metaTitle: string = 'Knowledge Exchange Forum | NHS Benchmarking Network';\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private titleService: Title,\r\n private meta: Meta,\r\n private kenService: KenService,\r\n private toastr: ToastrService,\r\n private dataService: DataService,\r\n private memberService: MemberService,\r\n private fb: FormBuilder,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(this.metaTitle);\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n this.requestId = +this.route.snapshot.paramMap.get('requestId');\r\n this.getRequest(this.requestId);\r\n let currentUser = JSON.parse(sessionStorage.getItem('user'));\r\n this.currentUserNotifications = currentUser.notificationOptIn;\r\n }\r\n\r\n getRequest(request) {\r\n this.kenService.getRequest(request).subscribe(\r\n r => { \r\n this.request = r.data;\r\n this.comments = this.setComments(this.request.comments);\r\n this.currentUserLogonName = this.dataService.getUser().logonName;\r\n },\r\n e => { \r\n console.log(e);\r\n this.router.navigate(['/forum']);\r\n this.toastr.error(\"This request no longer exists. Please try searching the requests instead.\");\r\n }\r\n );\r\n }\r\n\r\n setResponse(state) {\r\n this.response = state;\r\n if (state == true) {\r\n this.buildResponseForm();\r\n }\r\n }\r\n\r\n replyToResponse(parentId) {\r\n window.scrollTo(0, 0);\r\n this.parentId = parentId;\r\n this.parentComment = this.comments.filter(c => c.kenCommentId === parentId)[0];\r\n this.setResponse(true);\r\n }\r\n\r\n setComments(comments) {\r\n let cleanedComments = comments.filter(c => c.isVisible == 'Y' && c.reportCount < 2);\r\n\r\n cleanedComments.forEach(c => { \r\n c.children = c.children.filter(cc => cc.isVisible == 'Y' &&cc.reportCount < 2);\r\n });\r\n\r\n return cleanedComments;\r\n }\r\n\r\n buildResponseForm() {\r\n this.responseForm = this.fb.group({ \r\n response: ['', [Validators.required, Validators.maxLength(200)]]\r\n });\r\n }\r\n\r\n submitResponseForm(requestId, parentId) {\r\n if (this.responseForm.value.response) {\r\n let response = { \r\n commentBody: this.responseForm.value.response,\r\n parentId: parentId\r\n };\r\n this.addResponse(requestId, response);\r\n }\r\n }\r\n\r\n addResponse(requestId, response) {\r\n this.kenService.addComment(requestId, response).subscribe(\r\n r => {\r\n this.toastr.success(\"Your response has been successfully submitted. Thank you.\")\r\n this.response = false;\r\n if (this.currentUserNotifications === 'Y') {\r\n this.optInMessage = true;\r\n }\r\n this.getRequest(this.requestId);\r\n },\r\n e => {\r\n this.toastr.error(\"There has been an error whilst trying to submit your response. Please try again.\");\r\n }\r\n );\r\n }\r\n\r\n reportResponse(response) {\r\n this.kenService.reportComment({ kenCommentId: response }).subscribe(\r\n r => {\r\n this.toastr.success(\"You have reported this response. A response will be removed if it is reported enough times.\");\r\n this.getRequest(this.requestId);\r\n },\r\n e => {\r\n this.toastr.error(\"There has been an error whilst trying to report this response. Please try again.\");\r\n }\r\n );\r\n }\r\n\r\n hideResponse(response) {\r\n this.kenService.hideComment({ kenCommentId: response }).subscribe(\r\n r => {\r\n this.toastr.success(\"Your response has been successfully removed.\");\r\n this.getRequest(this.requestId);\r\n },\r\n e => {\r\n this.toastr.error(\"There has been an error whilst trying to remove your response. Please try again.\");\r\n }\r\n );\r\n }\r\n\r\n notificationsOptIn() {\r\n let user = { notificationOptIn: 'Y' };\r\n this.memberService.UserUpdate(user).subscribe(\r\n r => {\r\n this.toastr.success('You have successfully opted-in to receive notifications by email. You can change this preference in My Profile at any time.');\r\n this.currentUserNotifications = 'Y';\r\n },\r\n e => {\r\n this.toastr.error('There was an error whilst trying to update your profile details. Please try again.');\r\n }\r\n );\r\n }\r\n\r\n navForum() {\r\n this.router.navigate(['/forum']);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { ResponsiveModule } from 'ngx-responsive';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { RequestComponent } from './request.component';\r\nimport { RequestRoutingModule } from './request-routing.module';\r\n\r\nimport { AuthService } from '../utilities/services/auth.service';\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service';\r\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\r\nimport { KenService } from 'app/utilities/services/ken.service';\r\nimport { NgPipesModule } from 'ngx-pipes';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ResponsiveModule,\r\n RequestRoutingModule,\r\n CollapseModule,\r\n ReactiveFormsModule,\r\n NgPipesModule\r\n ],\r\n declarations: [\r\n RequestComponent\r\n ],\r\n providers: [\r\n AuthService,\r\n AuthGuardService,\r\n KenService\r\n ],\r\n exports: [\r\n FormsModule,\r\n ReactiveFormsModule\r\n ]\r\n})\r\nexport class RequestModule {}","module.exports = \"
\\r\\n
\\r\\n\\r\\n
\\r\\n \\\"NHSBN\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

Reset Password

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

\\r\\n Please enter a new password below, this will need to be done twice and will need to confirm to the below rules.\\r\\n

\\r\\n\\r\\n
    \\r\\n
  • Minimum of 8 characters
  • \\r\\n
  • Minimum of 1 special character
  • \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

{{formErrors.emailAddress}}

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

{{formErrors.newPassword}}

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

{{formErrors.confirmNewPassword}}

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

Passwords do not match. Please re-enter both passwords.

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

{{ errorText }}


\\r\\n

If you're having problems you can:
\\r\\n Request a new reset password link
\\r\\n Contact the support team\\r\\n

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

Password has been reset successfully, you can navigate back to the landing page using the 'Back to Login'

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

\\r\\n The Benchmarking Network is the in-house benchmarking service of the NHS. The Network is hosted by \\r\\n East London Foundation Trust.\\r\\n

\\r\\n

\\r\\n © East London Foundation Trust {{copyDate | date:'yyyy'}}\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n
\"","module.exports = \"/*---------------------\\r\\n UNAUTHENTICATE ROUTES \\r\\n --------------------- */\\nh1 {\\n font-weight: 600;\\n margin-top: 0;\\n margin-bottom: 0.5em; }\\nlabel {\\n font-weight: 600; }\\n.help-block {\\n font-size: 13px;\\n line-height: 1.25em;\\n color: #768692;\\n margin-top: 3px; }\\n.login-header {\\n margin-top: 5%; }\\n.login-header img {\\n max-width: 60%; }\\n.login-header img {\\n width: 100%; }\\n.login-footer {\\n margin-bottom: 10%;\\n padding: 1em 2em; }\\n.login-footer p {\\n color: #768692;\\n font-size: 15px; }\\n.login-footer a {\\n color: #768692; }\\n.form-fix {\\n border-radius: 1px;\\n background-color: #fafafa;\\n padding: 10px;\\n font-size: 17px;\\n height: 38px;\\n outline: none;\\n box-shadow: none; }\\n.form-fix:focus {\\n background-color: white;\\n border: 1px solid #ccc;\\n outline: none;\\n box-shadow: none; }\\n.link {\\n margin-top: 1em; }\\n.link a:hover {\\n cursor: pointer;\\n text-decoration: underline; }\\n.unauth-page {\\n min-height: 100vh;\\n background-color: rgba(118, 134, 146, 0.05); }\\n.toggle {\\n color: #005EB8; }\\n.toggle:hover {\\n cursor: pointer; }\\n@media screen and (max-width: 640px) {\\n h1 {\\n font-size: 25px; }\\n .login-header,\\n .login-footer {\\n padding: 2em 0; }\\n .panel-body {\\n padding: 1.5em; } }\\nul {\\n padding-left: 1em; }\\n.nhs-blue-bg {\\n margin-right: 5px;\\n margin-bottom: 5px; }\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVzZXQtcGFzc3dvcmQvcmVzZXQtcGFzc3dvcmQtY29uZmlybS9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcX3VuYXV0aC5zY3NzIiwic3JjL2FwcC9yZXNldC1wYXNzd29yZC9yZXNldC1wYXNzd29yZC1jb25maXJtL3Jlc2V0LXBhc3N3b3JkLWNvbmZpcm0uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3Jlc2V0LXBhc3N3b3JkL3Jlc2V0LXBhc3N3b3JkLWNvbmZpcm0vQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyIsInNyYy9hcHAvcmVzZXQtcGFzc3dvcmQvcmVzZXQtcGFzc3dvcmQtY29uZmlybS9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFxyZXNldC1wYXNzd29yZFxccmVzZXQtcGFzc3dvcmQtY29uZmlybVxccmVzZXQtcGFzc3dvcmQtY29uZmlybS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7eUJDRXlCO0FERXpCO0VBQ0UsZ0JBQWdCO0VBQ2hCLGFBQWE7RUFDYixvQkFBb0IsRUFBQTtBQUd0QjtFQUNFLGdCQUFnQixFQUFBO0FBR2xCO0VBQ0UsZUFBZTtFQUNmLG1CQUFtQjtFQUNuQixjRVpnQjtFRmFoQixlQUFlLEVBQUE7QUFHakI7RUFDRSxjQUFjLEVBQUE7QUFEaEI7SUFHSSxjQUFjLEVBQUE7QUFJbEI7RUFDRSxXQUFXLEVBQUE7QUFHYjtFQUNFLGtCQUFrQjtFQUNsQixnQkFBZ0IsRUFBQTtBQUdsQjtFQUNFLGNFakNnQjtFRmtDaEIsZUFBZSxFQUFBO0FBR2pCO0VBQ0UsY0V0Q2dCLEVBQUE7QUZ5Q2xCO0VBQ0Usa0JBQWtCO0VBQ2xCLHlCQUF5QjtFQUN6QixhQUFhO0VBQ2IsZUFBZTtFQUNmLFlBQVk7RUFDWixhQUFhO0VBR2IsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDRSx1QkFBdUI7RUFDdkIsc0JBQXNCO0VBQ3RCLGFBQWE7RUFHYixnQkFBZ0IsRUFBQTtBQUdsQjtFQUNFLGVBQWUsRUFBQTtBQUdqQjtFQUNFLGVBQWU7RUFDZiwwQkFBMEIsRUFBQTtBQUc1QjtFQUNFLGlCQUFpQjtFQUNqQiwyQ0FBMkMsRUFBQTtBQUc3QztFQUNFLGNFL0VnQixFQUFBO0FGa0ZsQjtFQUNFLGVBQWUsRUFBQTtBQUdqQjtFQUNFO0lBQ0UsZUFBZSxFQUFBO0VBRWpCOztJQUVFLGNBQWMsRUFBQTtFQUVoQjtJQUNFLGNBQWMsRUFBQSxFQUNmO0FHaEdIO0VBQ0ksaUJBQWlCLEVBQUE7QUFHckI7RUFDSSxpQkFBaUI7RUFDakIsa0JBQWtCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9yZXNldC1wYXNzd29yZC9yZXNldC1wYXNzd29yZC1jb25maXJtL3Jlc2V0LXBhc3N3b3JkLWNvbmZpcm0uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gIFVOQVVUSEVOVElDQVRFIFJPVVRFUyBcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuXHJcbmgxIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIG1hcmdpbi10b3A6IDA7XHJcbiAgbWFyZ2luLWJvdHRvbTogMC41ZW07XHJcbn1cclxuXHJcbmxhYmVsIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG59XHJcblxyXG4uaGVscC1ibG9jayB7XHJcbiAgZm9udC1zaXplOiAxM3B4O1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjI1ZW07XHJcbiAgY29sb3I6ICRuaHMtZ3JleTtcclxuICBtYXJnaW4tdG9wOiAzcHg7XHJcbn1cclxuXHJcbi5sb2dpbi1oZWFkZXIge1xyXG4gIG1hcmdpbi10b3A6IDUlO1xyXG4gICYgaW1nIHtcclxuICAgIG1heC13aWR0aDogNjAlO1xyXG4gIH1cclxufVxyXG5cclxuLmxvZ2luLWhlYWRlciBpbWcge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4ubG9naW4tZm9vdGVyIHtcclxuICBtYXJnaW4tYm90dG9tOiAxMCU7XHJcbiAgcGFkZGluZzogMWVtIDJlbTtcclxufVxyXG5cclxuLmxvZ2luLWZvb3RlciBwIHtcclxuICBjb2xvcjogJG5ocy1ncmV5O1xyXG4gIGZvbnQtc2l6ZTogMTVweDtcclxufVxyXG5cclxuLmxvZ2luLWZvb3RlciBhIHtcclxuICBjb2xvcjogJG5ocy1ncmV5O1xyXG59XHJcblxyXG4uZm9ybS1maXgge1xyXG4gIGJvcmRlci1yYWRpdXM6IDFweDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xyXG4gIHBhZGRpbmc6IDEwcHg7XHJcbiAgZm9udC1zaXplOiAxN3B4O1xyXG4gIGhlaWdodDogMzhweDtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcclxuICAtbW96LWJveC1zaGFkb3c6IG5vbmU7XHJcbiAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuLmZvcm0tZml4OmZvY3VzIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xyXG4gIC1tb3otYm94LXNoYWRvdzogbm9uZTtcclxuICBib3gtc2hhZG93OiBub25lO1xyXG59XHJcblxyXG4ubGluayB7XHJcbiAgbWFyZ2luLXRvcDogMWVtO1xyXG59XHJcblxyXG4ubGluayBhOmhvdmVyIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcbn1cclxuXHJcbi51bmF1dGgtcGFnZSB7XHJcbiAgbWluLWhlaWdodDogMTAwdmg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMTgsIDEzNCwgMTQ2LCAwLjA1KTtcclxufVxyXG5cclxuLnRvZ2dsZSB7XHJcbiAgY29sb3I6ICRuaHMtYmx1ZTtcclxufVxyXG5cclxuLnRvZ2dsZTpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NDBweCkge1xyXG4gIGgxIHtcclxuICAgIGZvbnQtc2l6ZTogMjVweDtcclxuICB9XHJcbiAgLmxvZ2luLWhlYWRlcixcclxuICAubG9naW4tZm9vdGVyIHtcclxuICAgIHBhZGRpbmc6IDJlbSAwO1xyXG4gIH1cclxuICAucGFuZWwtYm9keSB7XHJcbiAgICBwYWRkaW5nOiAxLjVlbTtcclxuICB9XHJcbn1cclxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBVTkFVVEhFTlRJQ0FURSBST1VURVMgXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5oMSB7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDAuNWVtOyB9XG5cbmxhYmVsIHtcbiAgZm9udC13ZWlnaHQ6IDYwMDsgfVxuXG4uaGVscC1ibG9jayB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgbGluZS1oZWlnaHQ6IDEuMjVlbTtcbiAgY29sb3I6ICM3Njg2OTI7XG4gIG1hcmdpbi10b3A6IDNweDsgfVxuXG4ubG9naW4taGVhZGVyIHtcbiAgbWFyZ2luLXRvcDogNSU7IH1cbiAgLmxvZ2luLWhlYWRlciBpbWcge1xuICAgIG1heC13aWR0aDogNjAlOyB9XG5cbi5sb2dpbi1oZWFkZXIgaW1nIHtcbiAgd2lkdGg6IDEwMCU7IH1cblxuLmxvZ2luLWZvb3RlciB7XG4gIG1hcmdpbi1ib3R0b206IDEwJTtcbiAgcGFkZGluZzogMWVtIDJlbTsgfVxuXG4ubG9naW4tZm9vdGVyIHAge1xuICBjb2xvcjogIzc2ODY5MjtcbiAgZm9udC1zaXplOiAxNXB4OyB9XG5cbi5sb2dpbi1mb290ZXIgYSB7XG4gIGNvbG9yOiAjNzY4NjkyOyB9XG5cbi5mb3JtLWZpeCB7XG4gIGJvcmRlci1yYWRpdXM6IDFweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgcGFkZGluZzogMTBweDtcbiAgZm9udC1zaXplOiAxN3B4O1xuICBoZWlnaHQ6IDM4cHg7XG4gIG91dGxpbmU6IG5vbmU7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcbiAgLW1vei1ib3gtc2hhZG93OiBub25lO1xuICBib3gtc2hhZG93OiBub25lOyB9XG5cbi5mb3JtLWZpeDpmb2N1cyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xuICBvdXRsaW5lOiBub25lO1xuICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XG4gIC1tb3otYm94LXNoYWRvdzogbm9uZTtcbiAgYm94LXNoYWRvdzogbm9uZTsgfVxuXG4ubGluayB7XG4gIG1hcmdpbi10b3A6IDFlbTsgfVxuXG4ubGluayBhOmhvdmVyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfVxuXG4udW5hdXRoLXBhZ2Uge1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMTgsIDEzNCwgMTQ2LCAwLjA1KTsgfVxuXG4udG9nZ2xlIHtcbiAgY29sb3I6ICMwMDVFQjg7IH1cblxuLnRvZ2dsZTpob3ZlciB7XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NDBweCkge1xuICBoMSB7XG4gICAgZm9udC1zaXplOiAyNXB4OyB9XG4gIC5sb2dpbi1oZWFkZXIsXG4gIC5sb2dpbi1mb290ZXIge1xuICAgIHBhZGRpbmc6IDJlbSAwOyB9XG4gIC5wYW5lbC1ib2R5IHtcbiAgICBwYWRkaW5nOiAxLjVlbTsgfSB9XG5cbnVsIHtcbiAgcGFkZGluZy1sZWZ0OiAxZW07IH1cblxuLm5ocy1ibHVlLWJnIHtcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gIG1hcmdpbi1ib3R0b206IDVweDsgfVxuIiwiJGljb24tZm9udC1wYXRoOiAnLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC1zYXNzL2Fzc2V0cy9mb250cy9ib290c3RyYXAvJztcclxuXHJcbi8vIEN1c3RvbSB2YXJpYWJsZXNcclxuJG5ocy1ibHVlOiAjMDA1RUI4O1xyXG4kbmhzLWRhcmstYmx1ZTogIzAwNDQ4NTtcclxuJG5ocy1ncmV5OiAjNzY4NjkyO1xyXG4kbmhzLWZhZGVkLWJsdWU6ICNGMkY3RkI7XHJcbiRhY3RpdmUtYWRtaW4teWVsbG93OiAjRkRCQzMwO1xyXG4kYWN0aXZlLWFkbWluLWRhcmt5ZWxsb3c6ICNFNTk5MDA7XHJcbiBcclxuLy8gQm9vdHN0cmFwIHZhcmlhYmxlc1xyXG4kdGV4dC1jb2xvcjogYmxhY2s7XHJcbiRib3JkZXItcmFkaXVzLWJhc2U6IDA7XHJcbiRib3JkZXItcmFkaXVzLXNtYWxsOiAwO1xyXG4kYnJhbmQtcHJpbWFyeTogJG5ocy1ibHVlO1xyXG4kYnJhbmQtc3VjY2VzczogZ3JlZW47XHJcbiRsaW5rLWhvdmVyLWRlY29yYXRpb246IG5vbmU7XHJcbiRmb250LXNpemUtaDQ6IDE3cHg7XHJcbiRuYXZiYXItbWFyZ2luLWJvdHRvbTogMDtcclxuJG5hdmJhci1oZWlnaHQ6IDYwcHg7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWNvbG9yOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1iZzogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtYm9yZGVyLWNvbG9yOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1pY29uLWJhci1iZzogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaG92ZXItYmc6IHdoaXRlO1xyXG5cclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1iZzogJG5ocy1ibHVlO1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWNvbG9yOiB3aGl0ZTtcclxuJG5hdi1waWxscy1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kdGFibGUtYmctaG92ZXI6ICRuaHMtZmFkZWQtYmx1ZTtcclxuJGhlYWRpbmdzLXNtYWxsLWNvbG9yOiAkbmhzLWdyZXk7IiwiQGltcG9ydCAnLi4vLi4vLi4vdmFyaWFibGVzJztcclxuQGltcG9ydCAnLi4vLi4vLi4vdW5hdXRoJztcclxuXHJcbnVsIHtcclxuICAgIHBhZGRpbmctbGVmdDogMWVtO1xyXG59XHJcblxyXG4ubmhzLWJsdWUtYmcge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbiAgICBtYXJnaW4tYm90dG9tOiA1cHg7XHJcbn0iXX0= */\"","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { Angular2PromiseButtonModule } from 'angular2-promise-buttons/dist';\r\n\r\nimport { MemberService } from '../../utilities/services/member.service'\r\nimport { forbiddenNameValidator } from '../../utilities/validation/forbidden-name';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({ \r\n templateUrl: './reset-password-confirm.component.html',\r\n styleUrls: ['./reset-password-confirm.component.scss'],\r\n encapsulation: ViewEncapsulation.None, // New spinner (child-elements)\r\n})\r\nexport class ResetPasswordConfirmComponent implements OnInit {\r\n resetPasswordConfirm: FormGroup;\r\n passwordMatch: boolean = false; passwordReset: boolean = false; error: boolean = false;\r\n resetCode: string;\r\n copyDate = new Date(); // Set copyright year\r\n errorText: string;\r\n \r\n constructor(\r\n fb: FormBuilder, \r\n private _MemberService: MemberService, \r\n private route: ActivatedRoute, \r\n private router: Router,\r\n private toastr: ToastrService,\r\n public newSpinner: Angular2PromiseButtonModule, // New spinner\r\n private titleService: Title, // Set page titles\r\n ) { \r\n this.resetCode = this.route.snapshot.paramMap.get('resetCode');\r\n this.resetPasswordConfirm = fb.group({\r\n \"emailAddress\": [\"\", [Validators.required, Validators.maxLength(200), Validators.email]],\r\n \"newPassword\": [\"\", [Validators.required, Validators.minLength(8), forbiddenNameValidator(/£/i)]],\r\n \"confirmNewPassword\": [\"\", [Validators.required]]\r\n });\r\n\r\n this.resetPasswordConfirm.valueChanges.subscribe(\r\n data => this.onValueChanged(data)\r\n );\r\n\r\n this.onValueChanged();\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n onSubmit() {\r\n // New spinner\r\n this.newSpinner = new Promise((resolve, reject) => {\r\n setTimeout(resolve, 3000);\r\n });\r\n if (this.resetPasswordConfirm.value.newPassword != this.resetPasswordConfirm.value.confirmNewPassword) {\r\n this.passwordMatch = true;\r\n }\r\n else {\r\n this._MemberService.ResetPasswordConfirm({ \r\n logonName: this.resetPasswordConfirm.value.emailAddress, \r\n resetCode: this.resetCode, \r\n newPassword: this.resetPasswordConfirm.value.confirmNewPassword\r\n }).subscribe(\r\n r => {\r\n this.passwordReset = true;\r\n },\r\n e => {\r\n this.error = true;\r\n // Invalid user\r\n if(e.error.error.statusCode == '6101') {\r\n this.errorText = \"Email address not found, please try another.\";\r\n this.toastr.error(\r\n 'Email address not found, please try another or contact The Support Team ',\r\n \"Reset Password\",\r\n { enableHtml: true }\r\n );\r\n }\r\n // Reset code is invalid or expired\r\n if(e.error.error.statusCode == '6102') {\r\n this.errorText = \"Reset code is invalid or has expired.\";\r\n this.toastr.error(\r\n 'Reset code is invalid or has expired',\r\n \"Reset Code\",\r\n { enableHtml: true }\r\n );\r\n } else {\r\n console.log(e)\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n onValueChanged(data?: any) {\r\n if (!this.resetPasswordConfirm) { return; }\r\n const form = this.resetPasswordConfirm;\r\n\r\n for (const field in this.formErrors) {\r\n // clear previous error message (if any)\r\n this.formErrors[field] = '';\r\n const control = form.get(field);\r\n\r\n if (control && control.touched && !control.valid) {\r\n const messages = this.validationMessages[field];\r\n\r\n for (const key in control.errors) {\r\n this.formErrors[field] += messages[key] + ' ';\r\n }\r\n }\r\n }\r\n }\r\n\r\n navLanding() {\r\n this.router.navigate(['/landing']);\r\n }\r\n\r\n formErrors = {\r\n 'emailAddress': '',\r\n 'newPassword': '',\r\n 'confirmNewPassword': ''\r\n };\r\n\r\n validationMessages = {\r\n 'newPassword': {\r\n 'required': 'New Password field is required.',\r\n 'minlength': 'New Password must be a minimum length of 8 characters. ',\r\n 'forbiddenName': 'New password cannot include the pound symbol (£).'\r\n },\r\n 'confirmNewPassword': {\r\n 'required': 'Confirm New Password field is required'\r\n },\r\n 'emailAddress': {\r\n 'required': 'Email Address is required.',\r\n 'maxLength': 'Email Address cannot be longer than 200 characters.',\r\n 'email': 'Email Address is not valid.'\r\n }\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { ResetPasswordComponent } from './reset-password.component'\r\nimport { ResetPasswordConfirmComponent } from './reset-password-confirm/reset-password-confirm.component'\r\n\r\nconst resetpasswordRoutes: Routes = [\r\n { path: 'reset-password', component: ResetPasswordComponent },\r\n { path: 'reset/:resetCode', component: ResetPasswordConfirmComponent },\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(resetpasswordRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class ResetPasswordRoutingModule { }","module.exports = \"
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

Reset Password

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

\\r\\n Please enter your email address below. If your email address is held\\r\\n on our database, you will receive an email to update your login\\r\\n credentials\\r\\n

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

{{ formErrors.emailAddress }}

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

\\r\\n Request successfully submitted. You should recieve an email\\r\\n shortly, please allow for up to 15 minutes for it to arrive. If\\r\\n it fails to do so then please contact the support team.\\r\\n

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

{{ errorText }}


\\r\\n

If you're having problems you can:
\\r\\n Contact the support team\\r\\n

\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n Reset Password\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

\\r\\n The Benchmarking Network is the in-house benchmarking service of the\\r\\n NHS. The Network is hosted by\\r\\n East London Foundation Trust.\\r\\n

\\r\\n

© East London Foundation Trust {{ copyDate | date: \\\"yyyy\\\" }}

\\r\\n
\\r\\n
\\r\\n\\r\\n\"","module.exports = \"/*---------------------\\r\\n UNAUTHENTICATE ROUTES \\r\\n --------------------- */\\nh1 {\\n font-weight: 600;\\n margin-top: 0;\\n margin-bottom: 0.5em; }\\nlabel {\\n font-weight: 600; }\\n.help-block {\\n font-size: 13px;\\n line-height: 1.25em;\\n color: #768692;\\n margin-top: 3px; }\\n.login-header {\\n margin-top: 5%; }\\n.login-header img {\\n max-width: 60%; }\\n.login-header img {\\n width: 100%; }\\n.login-footer {\\n margin-bottom: 10%;\\n padding: 1em 2em; }\\n.login-footer p {\\n color: #768692;\\n font-size: 15px; }\\n.login-footer a {\\n color: #768692; }\\n.form-fix {\\n border-radius: 1px;\\n background-color: #fafafa;\\n padding: 10px;\\n font-size: 17px;\\n height: 38px;\\n outline: none;\\n box-shadow: none; }\\n.form-fix:focus {\\n background-color: white;\\n border: 1px solid #ccc;\\n outline: none;\\n box-shadow: none; }\\n.link {\\n margin-top: 1em; }\\n.link a:hover {\\n cursor: pointer;\\n text-decoration: underline; }\\n.unauth-page {\\n min-height: 100vh;\\n background-color: rgba(118, 134, 146, 0.05); }\\n.toggle {\\n color: #005EB8; }\\n.toggle:hover {\\n cursor: pointer; }\\n@media screen and (max-width: 640px) {\\n h1 {\\n font-size: 25px; }\\n .login-header,\\n .login-footer {\\n padding: 2em 0; }\\n .panel-body {\\n padding: 1.5em; } }\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVzZXQtcGFzc3dvcmQvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF91bmF1dGguc2NzcyIsInNyYy9hcHAvcmVzZXQtcGFzc3dvcmQvcmVzZXQtcGFzc3dvcmQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3Jlc2V0LXBhc3N3b3JkL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxfdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O3lCQ0V5QjtBREV6QjtFQUNFLGdCQUFnQjtFQUNoQixhQUFhO0VBQ2Isb0JBQW9CLEVBQUE7QUFHdEI7RUFDRSxnQkFBZ0IsRUFBQTtBQUdsQjtFQUNFLGVBQWU7RUFDZixtQkFBbUI7RUFDbkIsY0VaZ0I7RUZhaEIsZUFBZSxFQUFBO0FBR2pCO0VBQ0UsY0FBYyxFQUFBO0FBRGhCO0lBR0ksY0FBYyxFQUFBO0FBSWxCO0VBQ0UsV0FBVyxFQUFBO0FBR2I7RUFDRSxrQkFBa0I7RUFDbEIsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDRSxjRWpDZ0I7RUZrQ2hCLGVBQWUsRUFBQTtBQUdqQjtFQUNFLGNFdENnQixFQUFBO0FGeUNsQjtFQUNFLGtCQUFrQjtFQUNsQix5QkFBeUI7RUFDekIsYUFBYTtFQUNiLGVBQWU7RUFDZixZQUFZO0VBQ1osYUFBYTtFQUdiLGdCQUFnQixFQUFBO0FBR2xCO0VBQ0UsdUJBQXVCO0VBQ3ZCLHNCQUFzQjtFQUN0QixhQUFhO0VBR2IsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDRSxlQUFlLEVBQUE7QUFHakI7RUFDRSxlQUFlO0VBQ2YsMEJBQTBCLEVBQUE7QUFHNUI7RUFDRSxpQkFBaUI7RUFDakIsMkNBQTJDLEVBQUE7QUFHN0M7RUFDRSxjRS9FZ0IsRUFBQTtBRmtGbEI7RUFDRSxlQUFlLEVBQUE7QUFHakI7RUFDRTtJQUNFLGVBQWUsRUFBQTtFQUVqQjs7SUFFRSxjQUFjLEVBQUE7RUFFaEI7SUFDRSxjQUFjLEVBQUEsRUFDZiIsImZpbGUiOiJzcmMvYXBwL3Jlc2V0LXBhc3N3b3JkL3Jlc2V0LXBhc3N3b3JkLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICBVTkFVVEhFTlRJQ0FURSBST1VURVMgXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcblxyXG5oMSB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBtYXJnaW4tdG9wOiAwO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuNWVtO1xyXG59XHJcblxyXG5sYWJlbCB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuLmhlbHAtYmxvY2sge1xyXG4gIGZvbnQtc2l6ZTogMTNweDtcclxuICBsaW5lLWhlaWdodDogMS4yNWVtO1xyXG4gIGNvbG9yOiAkbmhzLWdyZXk7XHJcbiAgbWFyZ2luLXRvcDogM3B4O1xyXG59XHJcblxyXG4ubG9naW4taGVhZGVyIHtcclxuICBtYXJnaW4tdG9wOiA1JTtcclxuICAmIGltZyB7XHJcbiAgICBtYXgtd2lkdGg6IDYwJTtcclxuICB9XHJcbn1cclxuXHJcbi5sb2dpbi1oZWFkZXIgaW1nIHtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmxvZ2luLWZvb3RlciB7XHJcbiAgbWFyZ2luLWJvdHRvbTogMTAlO1xyXG4gIHBhZGRpbmc6IDFlbSAyZW07XHJcbn1cclxuXHJcbi5sb2dpbi1mb290ZXIgcCB7XHJcbiAgY29sb3I6ICRuaHMtZ3JleTtcclxuICBmb250LXNpemU6IDE1cHg7XHJcbn1cclxuXHJcbi5sb2dpbi1mb290ZXIgYSB7XHJcbiAgY29sb3I6ICRuaHMtZ3JleTtcclxufVxyXG5cclxuLmZvcm0tZml4IHtcclxuICBib3JkZXItcmFkaXVzOiAxcHg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcclxuICBwYWRkaW5nOiAxMHB4O1xyXG4gIGZvbnQtc2l6ZTogMTdweDtcclxuICBoZWlnaHQ6IDM4cHg7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XHJcbiAgLW1vei1ib3gtc2hhZG93OiBub25lO1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbi5mb3JtLWZpeDpmb2N1cyB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcclxuICAtbW96LWJveC1zaGFkb3c6IG5vbmU7XHJcbiAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuLmxpbmsge1xyXG4gIG1hcmdpbi10b3A6IDFlbTtcclxufVxyXG5cclxuLmxpbmsgYTpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG59XHJcblxyXG4udW5hdXRoLXBhZ2Uge1xyXG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTE4LCAxMzQsIDE0NiwgMC4wNSk7XHJcbn1cclxuXHJcbi50b2dnbGUge1xyXG4gIGNvbG9yOiAkbmhzLWJsdWU7XHJcbn1cclxuXHJcbi50b2dnbGU6aG92ZXIge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjQwcHgpIHtcclxuICBoMSB7XHJcbiAgICBmb250LXNpemU6IDI1cHg7XHJcbiAgfVxyXG4gIC5sb2dpbi1oZWFkZXIsXHJcbiAgLmxvZ2luLWZvb3RlciB7XHJcbiAgICBwYWRkaW5nOiAyZW0gMDtcclxuICB9XHJcbiAgLnBhbmVsLWJvZHkge1xyXG4gICAgcGFkZGluZzogMS41ZW07XHJcbiAgfVxyXG59XHJcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgVU5BVVRIRU5USUNBVEUgUk9VVEVTIFxyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuaDEge1xuICBmb250LXdlaWdodDogNjAwO1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAwLjVlbTsgfVxuXG5sYWJlbCB7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7IH1cblxuLmhlbHAtYmxvY2sge1xuICBmb250LXNpemU6IDEzcHg7XG4gIGxpbmUtaGVpZ2h0OiAxLjI1ZW07XG4gIGNvbG9yOiAjNzY4NjkyO1xuICBtYXJnaW4tdG9wOiAzcHg7IH1cblxuLmxvZ2luLWhlYWRlciB7XG4gIG1hcmdpbi10b3A6IDUlOyB9XG4gIC5sb2dpbi1oZWFkZXIgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDYwJTsgfVxuXG4ubG9naW4taGVhZGVyIGltZyB7XG4gIHdpZHRoOiAxMDAlOyB9XG5cbi5sb2dpbi1mb290ZXIge1xuICBtYXJnaW4tYm90dG9tOiAxMCU7XG4gIHBhZGRpbmc6IDFlbSAyZW07IH1cblxuLmxvZ2luLWZvb3RlciBwIHtcbiAgY29sb3I6ICM3Njg2OTI7XG4gIGZvbnQtc2l6ZTogMTVweDsgfVxuXG4ubG9naW4tZm9vdGVyIGEge1xuICBjb2xvcjogIzc2ODY5MjsgfVxuXG4uZm9ybS1maXgge1xuICBib3JkZXItcmFkaXVzOiAxcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTdweDtcbiAgaGVpZ2h0OiAzOHB4O1xuICBvdXRsaW5lOiBub25lO1xuICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XG4gIC1tb3otYm94LXNoYWRvdzogbm9uZTtcbiAgYm94LXNoYWRvdzogbm9uZTsgfVxuXG4uZm9ybS1maXg6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcbiAgb3V0bGluZTogbm9uZTtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xuICAtbW96LWJveC1zaGFkb3c6IG5vbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7IH1cblxuLmxpbmsge1xuICBtYXJnaW4tdG9wOiAxZW07IH1cblxuLmxpbmsgYTpob3ZlciB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH1cblxuLnVuYXV0aC1wYWdlIHtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTE4LCAxMzQsIDE0NiwgMC4wNSk7IH1cblxuLnRvZ2dsZSB7XG4gIGNvbG9yOiAjMDA1RUI4OyB9XG5cbi50b2dnbGU6aG92ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7IH1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjQwcHgpIHtcbiAgaDEge1xuICAgIGZvbnQtc2l6ZTogMjVweDsgfVxuICAubG9naW4taGVhZGVyLFxuICAubG9naW4tZm9vdGVyIHtcbiAgICBwYWRkaW5nOiAyZW0gMDsgfVxuICAucGFuZWwtYm9keSB7XG4gICAgcGFkZGluZzogMS41ZW07IH0gfVxuIiwiJGljb24tZm9udC1wYXRoOiAnLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC1zYXNzL2Fzc2V0cy9mb250cy9ib290c3RyYXAvJztcclxuXHJcbi8vIEN1c3RvbSB2YXJpYWJsZXNcclxuJG5ocy1ibHVlOiAjMDA1RUI4O1xyXG4kbmhzLWRhcmstYmx1ZTogIzAwNDQ4NTtcclxuJG5ocy1ncmV5OiAjNzY4NjkyO1xyXG4kbmhzLWZhZGVkLWJsdWU6ICNGMkY3RkI7XHJcbiRhY3RpdmUtYWRtaW4teWVsbG93OiAjRkRCQzMwO1xyXG4kYWN0aXZlLWFkbWluLWRhcmt5ZWxsb3c6ICNFNTk5MDA7XHJcbiBcclxuLy8gQm9vdHN0cmFwIHZhcmlhYmxlc1xyXG4kdGV4dC1jb2xvcjogYmxhY2s7XHJcbiRib3JkZXItcmFkaXVzLWJhc2U6IDA7XHJcbiRib3JkZXItcmFkaXVzLXNtYWxsOiAwO1xyXG4kYnJhbmQtcHJpbWFyeTogJG5ocy1ibHVlO1xyXG4kYnJhbmQtc3VjY2VzczogZ3JlZW47XHJcbiRsaW5rLWhvdmVyLWRlY29yYXRpb246IG5vbmU7XHJcbiRmb250LXNpemUtaDQ6IDE3cHg7XHJcbiRuYXZiYXItbWFyZ2luLWJvdHRvbTogMDtcclxuJG5hdmJhci1oZWlnaHQ6IDYwcHg7XHJcbiRuYXZiYXItZGVmYXVsdC1saW5rLWNvbG9yOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstaG92ZXItY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstYWN0aXZlLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiRuYXZiYXItZGVmYXVsdC1iZzogd2hpdGU7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtYm9yZGVyLWNvbG9yOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1pY29uLWJhci1iZzogYmxhY2s7XHJcbiRuYXZiYXItZGVmYXVsdC10b2dnbGUtaG92ZXItYmc6IHdoaXRlO1xyXG5cclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1iZzogJG5ocy1ibHVlO1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWNvbG9yOiB3aGl0ZTtcclxuJG5hdi1waWxscy1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuJG5hdi1waWxscy1hY3RpdmUtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kdGFibGUtYmctaG92ZXI6ICRuaHMtZmFkZWQtYmx1ZTtcclxuJGhlYWRpbmdzLXNtYWxsLWNvbG9yOiAkbmhzLWdyZXk7Il19 */\"","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { FormGroup, Validators, FormBuilder } from '@angular/forms';\r\nimport { Meta, Title } from '@angular/platform-browser';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { Angular2PromiseButtonModule } from 'angular2-promise-buttons/dist';\r\n\r\nimport { MemberService } from '../utilities/services/member.service'\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n templateUrl: './reset-password.component.html',\r\n styleUrls: ['./reset-password.component.scss'],\r\n encapsulation: ViewEncapsulation.None, // New spinner (child-elements)\r\n})\r\nexport class ResetPasswordComponent implements OnInit {\r\n resetPassword: FormGroup;\r\n success: boolean = false;\r\n error: boolean = false;\r\n copyDate = new Date(); // Set copyright year\r\n errorText: string;\r\n\r\n metaTitle: string = 'Reset Password | NHS Benchmarking Network';\r\n\r\n constructor(\r\n fb: FormBuilder,\r\n private _MemberService: MemberService,\r\n private router: Router, // Set page titles\r\n private titleService: Title, // Set page titles\r\n private meta: Meta,\r\n private toastr: ToastrService,\r\n public newSpinner: Angular2PromiseButtonModule // New spinner\r\n ) { \r\n this.resetPassword = fb.group({\r\n \"emailAddress\": [\"\", [Validators.required, Validators.maxLength(200), Validators.email]]\r\n });\r\n \r\n this.resetPassword.valueChanges.subscribe(\r\n data => this.onValueChanged(data)\r\n );\r\n\r\n this.onValueChanged();\r\n }\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(this.metaTitle); // Set page title\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n }\r\n\r\n onSubmit() {\r\n // Spinner\r\n this.newSpinner = new Promise((resolve, reject) => {\r\n setTimeout(resolve, 3000);\r\n });\r\n // Reset password\r\n this._MemberService.ResetPassword(this.resetPassword.value.emailAddress).subscribe(\r\n r => {\r\n this.success = true;\r\n },\r\n e => {\r\n this.error = true;\r\n // Invalid user\r\n if(e.error.error.statusCode == '6101') {\r\n this.errorText = \"Email address not found, please try another.\";\r\n this.toastr.error(\r\n 'Email address not found, please try another or contact The Support Team ',\r\n \"Reset Password\",\r\n { enableHtml: true }\r\n );\r\n } \r\n // Disabled or Inactive user\r\n if(e.error.error.statusCode == '6105') {\r\n this.errorText = \"Disabled or Inactive user detected.\";\r\n this.toastr.error(\r\n 'Disabled or Inactive user detected, please contact The Support Team ',\r\n \"Disabled or Inactive user\",\r\n { enableHtml: true }\r\n );\r\n } else {\r\n console.log(e)\r\n }\r\n },\r\n () => {}\r\n )\r\n }\r\n\r\n onValueChanged(data?: any) {\r\n if (!this.resetPassword) { return; }\r\n const form = this.resetPassword;\r\n\r\n for (const field in this.formErrors) {\r\n // clear previous error message (if any)\r\n this.formErrors[field] = '';\r\n const control = form.get(field);\r\n\r\n if (control && control.touched && !control.valid) {\r\n const messages = this.validationMessages[field];\r\n\r\n for (const key in control.errors) {\r\n this.formErrors[field] += messages[key] + ' ';\r\n }\r\n }\r\n }\r\n }\r\n\r\n formErrors = {\r\n 'emailAddress': ''\r\n };\r\n\r\n validationMessages = {\r\n 'emailAddress': {\r\n 'required': 'Email Address is required.',\r\n 'maxLength': 'Email Address cannot be longer than 200 characters.',\r\n 'email': 'Email Address is not valid.'\r\n }\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { Angular2PromiseButtonModule } from 'angular2-promise-buttons/dist';\r\n\r\nimport { ResetPasswordComponent } from './reset-password.component';\r\nimport { ResetPasswordRoutingModule } from './reset-password-routing.module';\r\nimport { ResetPasswordConfirmComponent } from './reset-password-confirm/reset-password-confirm.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n ResetPasswordRoutingModule,\r\n Angular2PromiseButtonModule.forRoot({\r\n spinnerTpl: '',\r\n disableBtn: true, \r\n btnLoadingClass: 'is-loading',\r\n handleCurrentBtnOnly: false\r\n }),\r\n ],\r\n declarations: [\r\n ResetPasswordComponent,\r\n ResetPasswordConfirmComponent\r\n ]\r\n})\r\nexport class ResetPasswordModule {}","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { ResourcesComponent } from './resources.component';\r\nimport { AuthGuardService } from 'app/utilities/services/auth-guard.service';\r\n\r\nconst resourcesRoutes: Routes = [\r\n { path: 'resources', component: ResourcesComponent, canActivate: [AuthGuardService] },\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(resourcesRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class ResourcesRoutingModule { }","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Back to Home\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n

Resources

\\r\\n

\\r\\n This page shows resources from across all Network projects, including presentations, reports and case studies.\\r\\n

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

Loading resources. Please wait...

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n {{ year }}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n {{ data.sector }}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n {{ type }}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Resources are filtered to {{ (sector && filteredType) ? (sector + ' and ' + filteredType) : ((sector && !filteredType) ? sector : filteredType) }} \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
{{ data.sector }}
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{ project.projectName }}\\r\\n {{ filteredRowCount(project.documents) || project.documents.length }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
80) ? docs.documentName : ''\\\"\\r\\n innerHTML=\\\"{{ (docs.documentName.length > 80) ? (docs.documentName | slice:0:80) + '...' : (docs.documentName) }}\\\">\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Event documents\\r\\n {{ resourceData?.nonProjectDocuments.length }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
80) ? data.documentName : ''\\\"\\r\\n innerHTML=\\\"{{ (data.documentName.length > 80) ? (data.documentName | slice:0:80) + '...' : (data.documentName) }}\\\">\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \".intro-p {\\n font-size: 1.2em; }\\n\\n.loading-overview {\\n margin-top: 25vh; }\\n\\n.loading-overview p {\\n margin-top: 0.75em;\\n font-size: 20px;\\n font-weight: 600;\\n color: #005EB8;\\n text-align: center; }\\n\\n#selectorBar {\\n background-color: #005EB8;\\n margin-top: -2em; }\\n\\n#selectorBar .btn-back {\\n color: white;\\n font-size: 17px;\\n line-height: 2.5em; }\\n\\n#selectorBar .btn-back .fa {\\n margin-right: 5px; }\\n\\n#selectorBar .btn-back:hover {\\n cursor: pointer; }\\n\\n#selectorBar .form-group {\\n padding: 5px 0;\\n margin-bottom: 0; }\\n\\n#selectorBar .form-control {\\n background-color: #004485;\\n color: white;\\n border: none;\\n border-radius: 5px; }\\n\\n#containerResources {\\n padding-top: 1em;\\n background-color: #F3F3F3;\\n min-height: 100vh;\\n min-height: 100%;\\n padding-bottom: 25em;\\n z-index: -1; }\\n\\n.afterLoadingPadding {\\n padding-bottom: 5em !important; }\\n\\nh1 {\\n font-weight: 600;\\n margin-top: 1em;\\n margin-bottom: 0.5em;\\n line-height: 1.25em; }\\n\\n.filter {\\n padding: 1em;\\n background-color: #768692;\\n transition: all .5s ease-in-out; }\\n\\n.filter .btn {\\n border-color: #768692;\\n padding: 1px 6px; }\\n\\n.filter-showing {\\n margin-top: 1em;\\n background-color: #768692;\\n color: white;\\n padding: 1em;\\n border-radius: 4px; }\\n\\n.filter-showing i {\\n margin-left: 0.5em; }\\n\\n.filter-showing i:hover {\\n color: black;\\n cursor: pointer; }\\n\\n#search {\\n margin-top: 3em;\\n padding-bottom: 1em; }\\n\\n#searchIcon {\\n position: absolute;\\n padding: 1.1em; }\\n\\n#search .form-group {\\n margin-bottom: 0; }\\n\\n#search .form-control {\\n border-color: #768692;\\n box-shadow: none;\\n padding-top: 1.25em;\\n padding-bottom: 1.25em; }\\n\\n#search .btn {\\n margin-right: 0.25em;\\n margin-bottom: 0.25em; }\\n\\n#search .form-control {\\n padding-left: 2.5em; }\\n\\n#options {\\n margin-top: 0.5em; }\\n\\n#options .btn-sm {\\n margin-right: 0.5em; }\\n\\n#options .btn i {\\n margin-right: 0.5em; }\\n\\ntr:hover {\\n cursor: pointer;\\n color: #004485; }\\n\\n.project-list {\\n margin-bottom: 10px;\\n cursor: pointer; }\\n\\n/deep/ mark {\\n padding: 0;\\n background-color: #fdbc30; }\\n\\n@media (min-width: 1300px) {\\n #containerResources {\\n padding-left: 15%;\\n padding-right: 15%; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVzb3VyY2VzL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxhcHBcXHJlc291cmNlc1xccmVzb3VyY2VzLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9yZXNvdXJjZXMvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXF92YXJpYWJsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtFQUNFLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsZ0JBQWdCO0VBQ2hCLGNDWGdCO0VEWWhCLGtCQUFrQixFQUFBOztBQUlwQjtFQUNFLHlCQ2pCZ0I7RURrQmhCLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLFlBQVk7RUFDWixlQUFlO0VBQ2Ysa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsZUFBZSxFQUFBOztBQUdqQjtFQUNFLGNBQWM7RUFDZCxnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSx5QkFBeUI7RUFDekIsWUFBWTtFQUNaLFlBQVk7RUFDWixrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxnQkFBZ0I7RUFDaEIseUJBQXlCO0VBQ3pCLGlCQUFpQjtFQUNqQixnQkFBZ0I7RUFDaEIsb0JBQW9CO0VBQ3BCLFdBQVcsRUFBQTs7QUFHYjtFQUNFLDhCQUE4QixFQUFBOztBQUdoQztFQUNFLGdCQUFnQjtFQUNoQixlQUFlO0VBQ2Ysb0JBQW9CO0VBQ3BCLG1CQUFtQixFQUFBOztBQUdyQjtFQUNFLFlBQVk7RUFDWix5QkNuRWdCO0VEb0VoQiwrQkFBK0IsRUFBQTs7QUFHakM7RUFDRSxxQkN4RWdCO0VEeUVoQixnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxlQUFlO0VBQ2YseUJDOUVnQjtFRCtFaEIsWUFBWTtFQUNaLFlBQVk7RUFDWixrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxZQUFZO0VBQ1osZUFBZSxFQUFBOztBQUdqQjtFQUNFLGVBQWU7RUFDZixtQkFBbUIsRUFBQTs7QUFHckI7RUFDRSxrQkFBa0I7RUFDbEIsY0FBYyxFQUFBOztBQUdoQjtFQUNFLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLHFCQzVHZ0I7RUQ2R2hCLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIsc0JBQXNCLEVBQUE7O0FBR3hCO0VBQ0Usb0JBQW9CO0VBQ3BCLHFCQUNGLEVBQUE7O0FBRUE7RUFDRSxtQkFBbUIsRUFBQTs7QUFHckI7RUFDRSxpQkFBaUIsRUFBQTs7QUFHbkI7RUFDRSxtQkFBbUIsRUFBQTs7QUFHckI7RUFDRSxtQkFBbUIsRUFBQTs7QUFHckI7RUFDRSxlQUFlO0VBQ2YsY0FBYyxFQUFBOztBQUdoQjtFQUNFLG1CQUFtQjtFQUNuQixlQUFlLEVBQUE7O0FBR2pCO0VBQ0UsVUFBVTtFQUNWLHlCQUF5QixFQUFBOztBQUczQjtFQUNFO0lBQ0ksaUJBQWlCO0lBQ2pCLGtCQUFrQixFQUFBLEVBQ3JCIiwiZmlsZSI6InNyYy9hcHAvcmVzb3VyY2VzL3Jlc291cmNlcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgXCIuLi8uLi92YXJpYWJsZXNcIjtcclxuXHJcbi5pbnRyby1wIHtcclxuICBmb250LXNpemU6IDEuMmVtO1xyXG59XHJcblxyXG4ubG9hZGluZy1vdmVydmlldyB7XHJcbiAgbWFyZ2luLXRvcDogMjV2aDtcclxufVxyXG5cclxuLmxvYWRpbmctb3ZlcnZpZXcgcCB7XHJcbiAgbWFyZ2luLXRvcDogMC43NWVtO1xyXG4gIGZvbnQtc2l6ZTogMjBweDtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG59XHJcblxyXG4vLyBTZWxlY3RvckJhclxyXG4jc2VsZWN0b3JCYXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICRuaHMtYmx1ZTtcclxuICBtYXJnaW4tdG9wOiAtMmVtO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ0bi1iYWNrIHtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgZm9udC1zaXplOiAxN3B4O1xyXG4gIGxpbmUtaGVpZ2h0OiAyLjVlbTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idG4tYmFjayAuZmEge1xyXG4gIG1hcmdpbi1yaWdodDogNXB4O1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmJ0bi1iYWNrOmhvdmVyIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuZm9ybS1ncm91cCB7XHJcbiAgcGFkZGluZzogNXB4IDA7XHJcbiAgbWFyZ2luLWJvdHRvbTogMDtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5mb3JtLWNvbnRyb2wge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDQ0ODU7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbn1cclxuXHJcbiNjb250YWluZXJSZXNvdXJjZXMge1xyXG4gIHBhZGRpbmctdG9wOiAxZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0YzRjNGMztcclxuICBtaW4taGVpZ2h0OiAxMDB2aDtcclxuICBtaW4taGVpZ2h0OiAxMDAlO1xyXG4gIHBhZGRpbmctYm90dG9tOiAyNWVtO1xyXG4gIHotaW5kZXg6IC0xO1xyXG59XHJcblxyXG4uYWZ0ZXJMb2FkaW5nUGFkZGluZyB7XHJcbiAgcGFkZGluZy1ib3R0b206IDVlbSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5oMSB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBtYXJnaW4tdG9wOiAxZW07XHJcbiAgbWFyZ2luLWJvdHRvbTogMC41ZW07XHJcbiAgbGluZS1oZWlnaHQ6IDEuMjVlbTtcclxufVxyXG5cclxuLmZpbHRlciB7XHJcbiAgcGFkZGluZzogMWVtO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICRuaHMtZ3JleTtcclxuICB0cmFuc2l0aW9uOiBhbGwgLjVzIGVhc2UtaW4tb3V0O1xyXG59XHJcblxyXG4uZmlsdGVyIC5idG4ge1xyXG4gIGJvcmRlci1jb2xvcjogJG5ocy1ncmV5O1xyXG4gIHBhZGRpbmc6IDFweCA2cHg7XHJcbn1cclxuXHJcbi5maWx0ZXItc2hvd2luZyB7XHJcbiAgbWFyZ2luLXRvcDogMWVtO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICRuaHMtZ3JleTtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgcGFkZGluZzogMWVtO1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcclxufVxyXG5cclxuLmZpbHRlci1zaG93aW5nIGkge1xyXG4gIG1hcmdpbi1sZWZ0OiAwLjVlbTtcclxufVxyXG5cclxuLmZpbHRlci1zaG93aW5nIGk6aG92ZXIge1xyXG4gIGNvbG9yOiBibGFjaztcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbiNzZWFyY2gge1xyXG4gIG1hcmdpbi10b3A6IDNlbTtcclxuICBwYWRkaW5nLWJvdHRvbTogMWVtO1xyXG59XHJcblxyXG4jc2VhcmNoSWNvbiB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHBhZGRpbmc6IDEuMWVtO1xyXG59XHJcblxyXG4jc2VhcmNoIC5mb3JtLWdyb3VwIHtcclxuICBtYXJnaW4tYm90dG9tOiAwO1xyXG59XHJcblxyXG4jc2VhcmNoIC5mb3JtLWNvbnRyb2wge1xyXG4gIGJvcmRlci1jb2xvcjogJG5ocy1ncmV5O1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgcGFkZGluZy10b3A6IDEuMjVlbTtcclxuICBwYWRkaW5nLWJvdHRvbTogMS4yNWVtO1xyXG59XHJcblxyXG4jc2VhcmNoIC5idG4ge1xyXG4gIG1hcmdpbi1yaWdodDogMC4yNWVtO1xyXG4gIG1hcmdpbi1ib3R0b206IDAuMjVlbVxyXG59XHJcblxyXG4jc2VhcmNoIC5mb3JtLWNvbnRyb2wge1xyXG4gIHBhZGRpbmctbGVmdDogMi41ZW07XHJcbn1cclxuXHJcbiNvcHRpb25zIHtcclxuICBtYXJnaW4tdG9wOiAwLjVlbTtcclxufVxyXG5cclxuI29wdGlvbnMgLmJ0bi1zbSB7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcclxufVxyXG5cclxuI29wdGlvbnMgLmJ0biBpIHtcclxuICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xyXG59XHJcblxyXG50cjpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGNvbG9yOiAjMDA0NDg1O1xyXG59XHJcblxyXG4ucHJvamVjdC1saXN0IHtcclxuICBtYXJnaW4tYm90dG9tOiAxMHB4OyBcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi9kZWVwLyBtYXJrIHtcclxuICBwYWRkaW5nOiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZGJjMzA7XHJcbn1cclxuXHJcbkBtZWRpYSAobWluLXdpZHRoOiAxMzAwcHgpIHtcclxuICAjY29udGFpbmVyUmVzb3VyY2VzIHtcclxuICAgICAgcGFkZGluZy1sZWZ0OiAxNSU7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDE1JTtcclxuICB9XHJcbn0iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiXX0= */\"","import { Component, OnInit } from \"@angular/core\";\r\nimport { Meta, Title } from \"@angular/platform-browser\";\r\nimport { AuthService } from \"../utilities/services/auth.service\";\r\nimport { MemberService } from \"app/utilities/services/member.service\";\r\nimport { DataService } from \"app/utilities/services/data.service\";\r\nimport { IResourceList } from \"app/utilities/models/resources/resource-list.vm\";\r\nimport { Organisation } from \"app/utilities/classes/organisation/organisation\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\n\r\n@Component({\r\n selector: 'app-resources',\r\n templateUrl: './resources.component.html',\r\n styleUrls: ['./resources.component.scss']\r\n})\r\nexport class ResourcesComponent implements OnInit {\r\n public date = new Date();\r\n public organisationId: number;\r\n public sectorSelected: boolean = false;\r\n public yearSelected: boolean = false;\r\n public selectedsector: string = '';\r\n public selectedYear: number;\r\n public availableYears: Array;\r\n public resourceData: IResourceList;\r\n public nonProjectDocuments: boolean = true;\r\n public selectedProject: number = null;\r\n public sector: string = null;\r\n public currentYear: number = new Date().getFullYear();\r\n public hideShowYear: boolean = false;\r\n public hideShowSector: boolean = false;\r\n public searchText: string;\r\n public metaTitle: string = 'Resources | NHS Benchmarking Network';\r\n public showNonProjectDocs: boolean = false;\r\n public organisation: Organisation[];\r\n public currentOrganisation: number;\r\n public resourceType: Array = ['Bespoke', 'Report', 'CaseStudy', 'Specification', 'Toolkit']\r\n public filteredType: string = null;\r\n public currentQueryParams: any;\r\n\r\n constructor(\r\n public auth: AuthService,\r\n private route: ActivatedRoute,\r\n private titleService: Title,\r\n private dataService: DataService,\r\n private meta: Meta,\r\n public router: Router,\r\n private memberService: MemberService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.organisationId = JSON.parse(sessionStorage.getItem('organisationId'));\r\n this.selectedYear = this.currentYear;\r\n this.selectedsector = null;\r\n this.searchText = null;\r\n this.getOrganisationsByUser();\r\n this.titleService.setTitle(this.metaTitle);\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle}); \r\n }\r\n\r\n onOrgChange(message: number) {\r\n this.dataService.setSelectedOrganisation(message);\r\n this.organisationId = message;\r\n this.getResources(this.selectedYear || this.currentYear);\r\n }\r\n\r\n filterBySector(filter: string) {\r\n this.sector = filter;\r\n this.selectedsector = filter;\r\n this.sectorSelected = false;\r\n this.showNonProjectDocs = false\r\n this.nonProjectDocuments = null;\r\n this.searchText = null;\r\n this.router.navigate([], { queryParams: { sector: this.sector }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n filterByType(type: string) {\r\n this.filteredType = type;\r\n this.sectorSelected = false;\r\n this.showNonProjectDocs = false;\r\n this.nonProjectDocuments = null;\r\n this.searchText = null;\r\n this.router.navigate([], { queryParams: { group: this.filteredType }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n getOrganisationsByUser() {\r\n this.memberService.OrganisationsByUser().subscribe(\r\n (success) => { \r\n this.organisation = success.data;\r\n if(this.organisationId == null) {\r\n this.organisationId = success.data[0].organisationId;\r\n }\r\n this.dataService.setOrganisation(success.data)\r\n this.dataService.setSelectedOrganisation(this.organisationId);\r\n this.route.queryParams.subscribe(params => {\r\n this.currentQueryParams = params;\r\n if(this.currentQueryParams.year) {\r\n this.getResources(this.currentQueryParams.year);\r\n } else {\r\n this.sector = null;\r\n this.filteredType = null;\r\n this.hideShowYear = false;\r\n this.hideShowSector = false;\r\n this.showNonProjectDocs = false;\r\n this.getResources(this.currentYear);\r\n }\r\n });\r\n\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n );\r\n }\r\n\r\n setQueryParam(filter) {\r\n this.router.navigate([], { queryParams: { [filter]: null }, queryParamsHandling: 'merge' });\r\n }\r\n\r\n removeHiddenDocuments(arr) {\r\n return arr.reduce((acc, obj) => {\r\n if (obj.isVisible !== 'N') {\r\n for (const key in obj) {\r\n if (Array.isArray(obj[key])) {\r\n obj[key] = this.removeHiddenDocuments(obj[key]);\r\n }\r\n }\r\n acc.push(obj);\r\n }\r\n return acc;\r\n }, []);\r\n }\r\n\r\n getResources(year: number) {\r\n this.selectedYear = year;\r\n this.yearSelected = false;\r\n this.searchText = null;\r\n this.memberService.ResourceDocuments(year, this.organisationId).subscribe(\r\n (success) => {\r\n const containerResources = document.getElementById('containerResources');\r\n containerResources.classList.add('afterLoadingPadding');\r\n this.resourceData = success.data;\r\n this.resourceData.nonProjectDocuments = this.removeHiddenDocuments(this.resourceData.nonProjectDocuments);\r\n this.resourceData.projectDocuments = this.removeHiddenDocuments(this.resourceData.projectDocuments);\r\n this.availableYears = success.data.availableYears;\r\n this.reset();\r\n this.route.queryParams.subscribe(params => {\r\n this.currentQueryParams = params;\r\n if(this.currentQueryParams.sector) {\r\n this.filterBySector(this.currentQueryParams.sector)\r\n }\r\n if(this.currentQueryParams.group) {\r\n this.filterByType(this.currentQueryParams.group)\r\n }\r\n });\r\n this.router.navigate([], { queryParams: { year: year }, queryParamsHandling: 'merge' });\r\n },\r\n (error) => {\r\n console.log(error)\r\n });\r\n }\r\n\r\n getSelectedDocument(documentId: number) {\r\n this.memberService.AWSSelectedDocument(documentId, this.organisationId).subscribe(\r\n a => { window.open(a.data.documentUrl) }\r\n );\r\n }\r\n\r\n showDocuments(projectId: number) {\r\n if(this.selectedProject == projectId){\r\n this.selectedProject = null;\r\n } else {\r\n this.selectedProject = projectId;\r\n }\r\n }\r\n\r\n displayEventDocuments() {\r\n this.sector = null; \r\n this.filteredType = null; \r\n this.hideShowSector = false;\r\n this.reset();\r\n }\r\n\r\n filteredRowCount(project) {\r\n let rowCount = project.filter(data => data.documentCategoryName == this.filteredType).length;\r\n if(this.filteredType) {\r\n if(rowCount > 0) {\r\n return rowCount;\r\n } else {\r\n return '0';\r\n }\r\n }\r\n }\r\n \r\n reset() {\r\n this.nonProjectDocuments = false;\r\n this.selectedsector = null;\r\n this.searchText = null;\r\n this.router.navigate([], { queryParams: { year: this.selectedYear, sector: null, group: null }, queryParamsHandling: 'merge' });\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ResourcesComponent } from './resources.component';\r\nimport { ResourcesRoutingModule } from './resources-routing.module';\r\nimport { AccordionModule, CollapseModule } from 'ngx-bootstrap';\r\nimport { AuthGuardService } from 'app/utilities/services/auth-guard.service';\r\nimport { AuthService } from 'app/utilities/services/auth.service';\r\nimport { SafePipeModule } from 'app/utilities/pipes/safe-pipe.module';\r\nimport { ResponsiveModule } from 'ngx-responsive';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgPipesModule } from 'ngx-pipes';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ResourcesRoutingModule,\r\n ResponsiveModule,\r\n CollapseModule,\r\n SafePipeModule,\r\n NgPipesModule,\r\n AccordionModule.forRoot(),\r\n ],\r\n declarations: [ResourcesComponent],\r\n providers: [AuthService, AuthGuardService],\r\n})\r\nexport class ResourcesModule {}","module.exports = \"\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jc3YtZG93bmxvYWQvY3N2LWRvd25sb2FkLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, Input, OnInit } from '@angular/core';\r\nimport { CsvDownload } from 'app/utilities/classes/csv/csv-download';\r\n\r\n@Component({\r\n selector: 'app-csv-download',\r\n templateUrl: './csv-download.component.html',\r\n styleUrls: ['./csv-download.component.scss']\r\n})\r\nexport class CsvDownloadComponent implements OnInit {\r\n\r\n @Input() result: any;\r\n @Input() csvSettings: CsvDownload;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n if(this.csvSettings.styling == false) {\r\n this.exportCSV(this.result)\r\n }\r\n }\r\n\r\n public exportCSV(data): void {\r\n let csvData = this.convertToCsv(data, this.csvSettings.headers, this.csvSettings.keys);\r\n let blob = new Blob(['\\ufeff' + csvData], { type: 'text/csv;charset=utf-8;' });\r\n let dwldLink = document.createElement(\"a\");\r\n let url = URL.createObjectURL(blob);\r\n let isSafariBrowser = navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1;\r\n if (isSafariBrowser) { \r\n dwldLink.setAttribute(\"target\", \"_blank\");\r\n }\r\n dwldLink.setAttribute(\"href\", url);\r\n dwldLink.setAttribute(\"download\", `${this.csvSettings.fileName}.csv`);\r\n dwldLink.style.visibility = \"hidden\";\r\n document.body.appendChild(dwldLink);\r\n dwldLink.click();\r\n document.body.removeChild(dwldLink);\r\n }\r\n\r\n private convertToCsv(objArray: any, arrHeader: Array, keys): string {\r\n let array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;\r\n\r\n let str = '';\r\n let row = '';\r\n for (let index in arrHeader) {\r\n row += arrHeader[index] + ',';\r\n }\r\n row = row.slice(0, -1);\r\n str += row + '\\r\\n';\r\n for (let i = 0; i < array.length; i++) {\r\n let line = '';\r\n for (let index in arrHeader) {\r\n let head = keys[index];\r\n line += this.strRep(array[i][head]) + ',';\r\n }\r\n str += line + '\\r\\n';\r\n }\r\n return str;\r\n }\r\n\r\n private strRep(data): string {\r\n data ? data = data.toString().replace(/,/g, \" \").replace(/\\n/g, \" \") : \"undefined\";\r\n if (data == undefined || data == \"undefined\") {\r\n return \"\";\r\n }\r\n else if (data == null) {\r\n return \"\";\r\n }\r\n else {\r\n return data;\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { CsvDownloadComponent } from \"app/shared/csv-download/csv-download.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ],\r\n declarations: [CsvDownloadComponent],\r\n exports: [CsvDownloadComponent]\r\n})\r\nexport class CsvDownloadModule {}\r\n","module.exports = \"View more...\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Member Project Reports for {{ projectName }}
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Document NameSubmission NameService Name
\\r\\n \\r\\n {{ doc.documentName }}\\r\\n \\r\\n {{ doc.submissionName || '-' }}{{ doc.serviceItemName || '-' }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \".mr-1 {\\n margin-right: 0.5em; }\\n\\n.mt-2 {\\n margin-top: 1em; }\\n\\n.modal-lg {\\n width: 70%; }\\n\\n.view-more {\\n font-size: 16px; }\\n\\n.view-more:hover {\\n cursor: pointer; }\\n\\n.filter-select {\\n display: inline-block;\\n width: auto; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2RvY3VtZW50LXBhbmVsL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxhcHBcXHNoYXJlZFxcZG9jdW1lbnQtcGFuZWxcXGRvY3VtZW50LXBhbmVsLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQVEsbUJBQW1CLEVBQUE7O0FBQzNCO0VBQVEsZUFBZSxFQUFBOztBQUV2QjtFQUNJLFVBQVUsRUFBQTs7QUFHZDtFQUNJLGVBQWUsRUFBQTs7QUFEbkI7SUFHUSxlQUFlLEVBQUE7O0FBSXZCO0VBQ0kscUJBQXFCO0VBQ3JCLFdBQVcsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9kb2N1bWVudC1wYW5lbC9kb2N1bWVudC1wYW5lbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5tci0xIHsgbWFyZ2luLXJpZ2h0OiAwLjVlbTsgfVxyXG4ubXQtMiB7IG1hcmdpbi10b3A6IDFlbTsgfVxyXG5cclxuLm1vZGFsLWxnIHtcclxuICAgIHdpZHRoOiA3MCU7XHJcbn1cclxuXHJcbi52aWV3LW1vcmUge1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgfVxyXG59XHJcblxyXG4uZmlsdGVyLXNlbGVjdCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB3aWR0aDogYXV0bztcclxufSJdfQ== */\"","import { Component, Input, OnChanges, ViewChild } from '@angular/core';\r\nimport { MemberService } from 'app/utilities/services/member.service';\r\nimport { ModalDirective } from 'ngx-bootstrap';\r\nimport { OrderByPipe, UniquePipe } from 'ngx-pipes';\r\n\r\n@Component({\r\n selector: 'app-document-panel',\r\n templateUrl: './document-panel.component.html',\r\n styleUrls: ['./document-panel.component.scss'],\r\n providers: [ UniquePipe, OrderByPipe ]\r\n})\r\nexport class DocumentPanelComponent implements OnChanges {\r\n\r\n @Input() public projectName: string;\r\n @Input() public documents: any;\r\n @Input() public openDocumentModal?: boolean;\r\n\r\n @ViewChild('documentModal') public documentModal:ModalDirective;\r\n\r\n public rawDocuments: any;\r\n public selectedYear: string;\r\n public filters: any;\r\n\r\n constructor(\r\n private memberService: MemberService,\r\n public unique: UniquePipe,\r\n public orderBy: OrderByPipe\r\n ) { }\r\n\r\n ngOnChanges() {\r\n if (this.documents) {\r\n this.rawDocuments = JSON.parse(JSON.stringify(this.documents));\r\n this.selectedYear = Object.keys(this.documents)[0];\r\n this.createFilters(this.documents);\r\n if (this.openDocumentModal == true) {\r\n setTimeout(() => { this.documentModal.show(); }, 1000);\r\n } \r\n }\r\n }\r\n\r\n public createFilters(documents: any): void {\r\n // Create filters\r\n let submissionOptions = this.unique.transform(documents[this.selectedYear].map(doc => doc.submissionName));\r\n let serviceItemOptions = this.unique.transform(documents[this.selectedYear].map(doc => doc.serviceItemName));\r\n this.filters = [\r\n { key: 'submissionName', name: 'submission', orderBy: 'submissionName', options: this.orderBy.transform(submissionOptions) },\r\n { key: 'serviceItemName', name: 'service', orderBy: 'serviceItemName', options: this.orderBy.transform(serviceItemOptions) },\r\n ]\r\n // Remove nulls from options\r\n this.filters.forEach(filter => {\r\n filter.options = filter.options.filter(f => f !== null);\r\n });\r\n }\r\n\r\n public selectFilter(filter: any, option: string): void {\r\n this.documents[this.selectedYear] = this.rawDocuments[this.selectedYear].filter(doc => doc[filter.key] == option);\r\n }\r\n\r\n public clearFilters(): void {\r\n this.documents[this.selectedYear] = this.rawDocuments[this.selectedYear];\r\n }\r\n\r\n public getSelectedDocument(documentId: number): void {\r\n this.memberService.AWSSelectedDocument(documentId).subscribe(\r\n doc => { window.open(doc.data.documentUrl) }\r\n );\r\n }\r\n\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { DocumentPanelComponent } from \"./document-panel.component\";\r\nimport { ModalModule } from \"ngx-bootstrap/modal\";\r\nimport { TabsModule } from \"ngx-bootstrap\";\r\nimport { NgPipesModule } from \"ngx-pipes\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ModalModule.forRoot(),\r\n TabsModule.forRoot(),\r\n NgPipesModule\r\n ],\r\n declarations: [DocumentPanelComponent],\r\n exports: [DocumentPanelComponent]\r\n})\r\nexport class DocumentPanelModule {}","module.exports = \"\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n Info\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n

Report Information

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Report ID{{ infoPanel.reportId }}
Report Name{{ infoPanel.reportName }}
Organisation Type{{ infoPanel.organisationType }}
Tags{{ infoPanel.tags?.join(', ') }}
Factor{{ infoPanel.factor }}
Options{{ infoPanel.options.join(', ') }}
Map URL{{ infoPanel.mapUrl }}
Submissions/Map Count{{ infoPanel.noResults }}/{{ infoPanel.noMapAreas }}
Components
\\r\\n
\\r\\n
{{ type[0] }}:
\\r\\n
\\r\\n {{ c.id }}: {{ c.name }}\\r\\n
\\r\\n Source: {{ c.source }}\\r\\n
\\r\\n
{{ c.description }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Numerators:
\\r\\n
\\r\\n {{ n.dataItemId }}: {{ n.dataItemName }}\\r\\n
\\r\\n Code: {{ n.dataItemCode }}\\r\\n
\\r\\n
\\r\\n Source: {{ n.dataSource }}\\r\\n
\\r\\n
{{ n.dataItemDescription }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Denominators:
\\r\\n
\\r\\n {{ n.dataItemId }}: {{ n.dataItemName }}\\r\\n
\\r\\n Code: {{ n.dataItemCode }}\\r\\n
\\r\\n
\\r\\n Source: {{ n.dataSource }}\\r\\n
\\r\\n
{{ n.dataItemDescription }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \".display-inline {\\n display: inline-block !important; }\\n\\n.position-relative {\\n position: relative !important; }\\n\\n.mt-1 {\\n margin-top: 0.25em !important; }\\n\\n.mt-2 {\\n margin-top: 0.5em !important; }\\n\\n.mt-3 {\\n margin-top: 0.75em !important; }\\n\\n.mt-4 {\\n margin-top: 1.5em !important; }\\n\\n.mt-5 {\\n margin-top: 1.75em !important; }\\n\\n.mr-1 {\\n margin-right: 0.25em !important; }\\n\\n.mr-2 {\\n margin-right: 0.5em !important; }\\n\\n.mr-3 {\\n margin-right: 0.75em !important; }\\n\\n.mr-4 {\\n margin-right: 1.5em !important; }\\n\\n.mr-5 {\\n margin-right: 1.75em !important; }\\n\\n.mb-1 {\\n margin-bottom: 0.25em !important; }\\n\\n.mb-2 {\\n margin-bottom: 0.5em !important; }\\n\\n.mb-3 {\\n margin-bottom: 0.75em !important; }\\n\\n.mb-4 {\\n margin-bottom: 1.5em !important; }\\n\\n.mb-5 {\\n margin-bottom: 1.75em !important; }\\n\\n.btn {\\n border-radius: 3px !important; }\\n\\n.btn-white {\\n color: #005EB8;\\n background-color: transparent;\\n font-weight: bold; }\\n\\n.btn-white:hover {\\n cursor: pointer;\\n opacity: 0.8; }\\n\\n.custom-modal {\\n position: fixed;\\n left: 50%;\\n -webkit-transform: translate(-50%, 0);\\n transform: translate(-50%, 0);\\n top: 20vh;\\n padding: 1.5em 2em 4em 1.5em;\\n border: 1px solid #CCC;\\n border-radius: 4px;\\n box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.22);\\n z-index: 10000;\\n background-color: white;\\n height: 50vh;\\n width: 50vw;\\n overflow-y: scroll;\\n -ms-overflow-style: none;\\n scrollbar-width: none;\\n cursor: auto;\\n font-weight: 400; }\\n\\n.custom-modal::-webkit-scrollbar {\\n display: none; }\\n\\n.custom-modal h3 {\\n margin-top: 0; }\\n\\n.table-sm th,\\n.table-sm td {\\n padding-top: 4px;\\n padding-bottom: 4px; }\\n\\n.font-weight-bold {\\n font-weight: bold !important; }\\n\\n.bg-active-admin {\\n background-color: #FDBC30;\\n padding-left: 8px;\\n padding-right: 8px; }\\n\\n.bg-light {\\n background-color: #F3F3F3 !important; }\\n\\n@media only screen and (max-width: 750px) {\\n .custom-modal {\\n left: 2vw;\\n width: 96vw;\\n -webkit-transform: none;\\n transform: none; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2luZm8tcGFuZWwvQzpcXFVzZXJzXFxCcmlhbkdpbGxldHQtU21pdGhcXENvZGVcXG5ocy9zcmNcXGFwcFxcc2hhcmVkXFxpbmZvLXBhbmVsXFxpbmZvLXBhbmVsLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvaW5mby1wYW5lbC9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcX3ZhcmlhYmxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0ksZ0NBQWdDLEVBQUE7O0FBR3BDO0VBQ0ksNkJBQTZCLEVBQUE7O0FBR2pDO0VBQVEsNkJBQThCLEVBQUE7O0FBQ3RDO0VBQVEsNEJBQTZCLEVBQUE7O0FBQ3JDO0VBQVEsNkJBQThCLEVBQUE7O0FBQ3RDO0VBQVEsNEJBQTZCLEVBQUE7O0FBQ3JDO0VBQVEsNkJBQThCLEVBQUE7O0FBRXRDO0VBQVEsK0JBQWdDLEVBQUE7O0FBQ3hDO0VBQVEsOEJBQStCLEVBQUE7O0FBQ3ZDO0VBQVEsK0JBQWdDLEVBQUE7O0FBQ3hDO0VBQVEsOEJBQStCLEVBQUE7O0FBQ3ZDO0VBQVEsK0JBQWdDLEVBQUE7O0FBRXhDO0VBQVEsZ0NBQWlDLEVBQUE7O0FBQ3pDO0VBQVEsK0JBQWdDLEVBQUE7O0FBQ3hDO0VBQVEsZ0NBQWlDLEVBQUE7O0FBQ3pDO0VBQVEsK0JBQWdDLEVBQUE7O0FBQ3hDO0VBQVEsZ0NBQWlDLEVBQUE7O0FBR3pDO0VBQ0ksNkJBQTZCLEVBQUE7O0FBR2pDO0VBQ0ksY0FBYztFQUNkLDZCQUE2QjtFQUM3QixpQkFBaUIsRUFBQTs7QUFIckI7SUFLUSxlQUFlO0lBQ2YsWUFBWSxFQUFBOztBQUlwQjtFQUNJLGVBQWU7RUFDZixTQUFTO0VBQ1QscUNBQTZCO1VBQTdCLDZCQUE2QjtFQUM3QixTQUFTO0VBQ1QsNEJBQTRCO0VBQzVCLHNCQUFzQjtFQUN0QixrQkFBa0I7RUFDbEIsMkVBQXNFO0VBQ3RFLGNBQWM7RUFDZCx1QkFBdUI7RUFDdkIsWUFBWTtFQUNaLFdBQVc7RUFDWCxrQkFBa0I7RUFDbEIsd0JBQXdCO0VBQ3hCLHFCQUFxQjtFQUNyQixZQUFZO0VBQ1osZ0JBQWdCLEVBQUE7O0FBR3BCO0VBQ0ksYUFBYSxFQUFBOztBQUdqQjtFQUNJLGFBQWEsRUFBQTs7QUFHakI7O0VBRUksZ0JBQWdCO0VBQ2hCLG1CQUFtQixFQUFBOztBQUd2QjtFQUFvQiw0QkFBNkIsRUFBQTs7QUFDakQ7RUFDSSx5QkN4RXlCO0VEeUV6QixpQkFBaUI7RUFDakIsa0JBQWtCLEVBQUE7O0FBR3RCO0VBQ0ksb0NBQW9DLEVBQUE7O0FBR3hDO0VBQ0k7SUFDSSxTQUFTO0lBQ1QsV0FBVztJQUNYLHVCQUFlO1lBQWYsZUFBZSxFQUFBLEVBQ2xCIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2luZm8tcGFuZWwvaW5mby1wYW5lbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL3ZhcmlhYmxlcyc7XHJcblxyXG4uZGlzcGxheS1pbmxpbmUge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5wb3NpdGlvbi1yZWxhdGl2ZSB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLm10LTEgeyBtYXJnaW4tdG9wOiAwLjI1ZW0gIWltcG9ydGFudCB9XHJcbi5tdC0yIHsgbWFyZ2luLXRvcDogMC41ZW0gIWltcG9ydGFudCB9XHJcbi5tdC0zIHsgbWFyZ2luLXRvcDogMC43NWVtICFpbXBvcnRhbnQgfVxyXG4ubXQtNCB7IG1hcmdpbi10b3A6IDEuNWVtICFpbXBvcnRhbnQgfVxyXG4ubXQtNSB7IG1hcmdpbi10b3A6IDEuNzVlbSAhaW1wb3J0YW50IH1cclxuXHJcbi5tci0xIHsgbWFyZ2luLXJpZ2h0OiAwLjI1ZW0gIWltcG9ydGFudCB9XHJcbi5tci0yIHsgbWFyZ2luLXJpZ2h0OiAwLjVlbSAhaW1wb3J0YW50IH1cclxuLm1yLTMgeyBtYXJnaW4tcmlnaHQ6IDAuNzVlbSAhaW1wb3J0YW50IH1cclxuLm1yLTQgeyBtYXJnaW4tcmlnaHQ6IDEuNWVtICFpbXBvcnRhbnQgfVxyXG4ubXItNSB7IG1hcmdpbi1yaWdodDogMS43NWVtICFpbXBvcnRhbnQgfVxyXG5cclxuLm1iLTEgeyBtYXJnaW4tYm90dG9tOiAwLjI1ZW0gIWltcG9ydGFudCB9XHJcbi5tYi0yIHsgbWFyZ2luLWJvdHRvbTogMC41ZW0gIWltcG9ydGFudCB9XHJcbi5tYi0zIHsgbWFyZ2luLWJvdHRvbTogMC43NWVtICFpbXBvcnRhbnQgfVxyXG4ubWItNCB7IG1hcmdpbi1ib3R0b206IDEuNWVtICFpbXBvcnRhbnQgfVxyXG4ubWItNSB7IG1hcmdpbi1ib3R0b206IDEuNzVlbSAhaW1wb3J0YW50IH1cclxuXHJcblxyXG4uYnRuIHtcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uYnRuLXdoaXRlIHtcclxuICAgIGNvbG9yOiAjMDA1RUI4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICY6aG92ZXIge1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBvcGFjaXR5OiAwLjg7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5jdXN0b20tbW9kYWwge1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgbGVmdDogNTAlO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCk7XHJcbiAgICB0b3A6IDIwdmg7XHJcbiAgICBwYWRkaW5nOiAxLjVlbSAyZW0gNGVtIDEuNWVtO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0NDQztcclxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgIGJveC1zaGFkb3c6IDAgMTlweCAzOHB4IHJnYmEoMCwwLDAsMC4zMCksIDAgMTVweCAxMnB4IHJnYmEoMCwwLDAsMC4yMik7XHJcbiAgICB6LWluZGV4OiAxMDAwMDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgaGVpZ2h0OiA1MHZoO1xyXG4gICAgd2lkdGg6IDUwdnc7XHJcbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XHJcbiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IG5vbmU7XHJcbiAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XHJcbiAgICBjdXJzb3I6IGF1dG87XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG59XHJcblxyXG4uY3VzdG9tLW1vZGFsOjotd2Via2l0LXNjcm9sbGJhciB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4uY3VzdG9tLW1vZGFsIGgzIHtcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbn1cclxuXHJcbi50YWJsZS1zbSB0aCxcclxuLnRhYmxlLXNtIHRkIHtcclxuICAgIHBhZGRpbmctdG9wOiA0cHg7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogNHB4O1xyXG59XHJcblxyXG4uZm9udC13ZWlnaHQtYm9sZCB7IGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQgfVxyXG4uYmctYWN0aXZlLWFkbWluIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY3RpdmUtYWRtaW4teWVsbG93O1xyXG4gICAgcGFkZGluZy1sZWZ0OiA4cHg7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7XHJcbn1cclxuXHJcbi5iZy1saWdodCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGM0YzICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzUwcHgpIHtcclxuICAgIC5jdXN0b20tbW9kYWwge1xyXG4gICAgICAgIGxlZnQ6IDJ2dztcclxuICAgICAgICB3aWR0aDogOTZ2dztcclxuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XHJcbiAgICB9XHJcbn0iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\r\nimport { DynamicInfoPanel } from 'app/utilities/classes/dynamic-info-panel/dynamic-info-panel';\r\nimport { OrderByPipe } from 'ngx-pipes';\r\n\r\n@Component({\r\n selector: 'app-info-panel',\r\n templateUrl: './info-panel.component.html',\r\n styleUrls: ['./info-panel.component.scss'],\r\n providers: [ OrderByPipe ]\r\n})\r\nexport class InfoPanelComponent implements OnInit {\r\n @Input() infoPanel: DynamicInfoPanel;\r\n @Input() onInfoPanelClick: (info: string) => void;\r\n \r\n constructor() { }\r\n\r\n ngOnInit() { }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { InfoPanelComponent } from \"./info-panel.component\";\r\nimport { Ng2HighchartsModule } from \"ng2-highcharts\";\r\nimport { NgPipesModule } from \"ngx-pipes\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n NgPipesModule,\r\n Ng2HighchartsModule\r\n ],\r\n declarations: [InfoPanelComponent],\r\n exports: [InfoPanelComponent]\r\n})\r\nexport class InfoPanelModule {}","module.exports = \"
1\\\" style=\\\"margin: 5px;\\\">\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ title }}
\\r\\n \\r\\n
\\r\\n
\\r\\n If you are interested in connecting with other members from this project, the NHSBN Support Team can facilitate this. Please contact \\r\\n enquiries@nhsbenchmarking.nhs.uk with: \\r\\n \\r\\n
    \\r\\n
  • The name of the project
  • \\r\\n
  • The name of the member organisation(s) you wish to be connected with
  • \\r\\n
  • A short paragraph explaining what you would like to achieve from the connection
  • \\r\\n
\\r\\n We will forward your email onto relevant contacts at the member organisation(s). The final decision to engage is with the receiving member. \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{ item }}
\\r\\n {{ items }}
\\r\\n {{ item.subName[i] }}\\r\\n {{ item.contactEmail[i] }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9wb3B1cC1tb2RhbC9wb3B1cC1tb2RhbC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, Input, OnChanges } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-popup-modal',\r\n templateUrl: './popup-modal.component.html',\r\n styleUrls: ['./popup-modal.component.scss']\r\n})\r\nexport class PopupModalComponent implements OnChanges {\r\n \r\n @Input() data: any;\r\n @Input() title: string;\r\n public connectWithMemberInfo: boolean = false;\r\n public extraInfoToggler: boolean = false;\r\n\r\n constructor() {}\r\n\r\n ngOnChanges() {}\r\n\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { PopupModalComponent } from \"./popup-modal.component\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule\r\n ],\r\n declarations: [PopupModalComponent],\r\n exports: [PopupModalComponent]\r\n})\r\nexport class PopupModalModule {}","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { UserAdministrationComponent } from './user-administration.component'\r\n\r\nimport { AuthGuardService } from '../utilities/services/auth-guard.service'\r\n\r\nconst useradministrationRoutes: Routes = [\r\n { path: 'user-administration', component: UserAdministrationComponent, canActivate: [AuthGuardService] }\r\n];\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(useradministrationRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\nexport class UserAdministrationRoutingModule { }","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n Back to Home\\r\\n \\r\\n
\\r\\n
\\r\\n
1\\\">\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n {{ o.organisationName }}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n {{\\r\\n o.organisationName\\r\\n }}\\r\\n

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

User Administration

\\r\\n

\\r\\n This page allows you to see and manage the users within your\\r\\n organisation.\\r\\n

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

\\r\\n This page allows you to see the users within your organisation.\\r\\n You do not have the necessary permissions to add users or\\r\\n deactivate/activate user accounts. Please contact the Membership\\r\\n Lead for these changes.\\r\\n

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

\\r\\n Loading list of users...\\r\\n

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

User Roles

\\r\\n \\r\\n ×\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
ProductProjectYearRoleService
{{ u.productName || \\\"N/A\\\" }}{{ u.projectName || \\\"N/A\\\" }}{{ u.roleYear || \\\"N/A\\\" }}{{ u.roleName || \\\"N/A\\\" }}{{ u.serviceItemName || \\\"N/A\\\" }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

Create a New User Account

\\r\\n \\r\\n ×\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

\\r\\n Please complete the fields below, in order to create a new user\\r\\n account. An account will be created with read-only access, and the\\r\\n logon details emailed to the new user.\\r\\n

\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.logonName }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.fullName }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.jobTitle }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.phoneNo }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n

Unable to add user

\\r\\n

{{ errorMessage }}

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n Add User\\r\\n \\r\\n \\r\\n Cancel\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","module.exports = \"#containerUserAdmin {\\n padding-bottom: 6em;\\n background-color: #f3f3f3; }\\n\\nh1 {\\n font-weight: 600;\\n margin-top: 1em; }\\n\\nh4 {\\n margin: 0; }\\n\\n.breaker {\\n margin-top: 1.5em; }\\n\\n.users {\\n border-bottom: 1px solid #eee; }\\n\\n.users:hover {\\n background-color: #f2f7fb; }\\n\\n.users .actions {\\n text-align: right; }\\n\\n.users button {\\n margin-left: 5px;\\n margin-top: 5px; }\\n\\n.disabled,\\n.disabled small {\\n color: #768692 !important;\\n background-color: #fafafa; }\\n\\n.user-row {\\n padding: 1em 0.5em; }\\n\\n.vcenter {\\n display: inline-block;\\n vertical-align: middle;\\n float: none; }\\n\\n.projects-loading {\\n color: #005EB8;\\n font-size: 1.5em;\\n font-weight: 600;\\n margin-top: 2em; }\\n\\n.project-loading-spinner {\\n font-size: 2.5em;\\n color: #005EB8;\\n margin: 1em 0; }\\n\\n.disabled span {\\n margin-right: 1em; }\\n\\n.membership-lead {\\n margin-bottom: 3em;\\n background-color: white;\\n padding: 1em;\\n border: 1px solid #ccc;\\n border-radius: 5px; }\\n\\n.membership-lead p {\\n margin: 0; }\\n\\n#selectorBar {\\n background-color: #005EB8;\\n margin-top: -2em; }\\n\\n#selectorBar .btn-back {\\n color: white;\\n font-size: 17px;\\n line-height: 2.5em; }\\n\\n#selectorBar .btn-back .fa {\\n margin-right: 5px; }\\n\\n#selectorBar .btn-back:hover {\\n cursor: pointer; }\\n\\n#selectorBar .form-group {\\n padding: 5px 0;\\n margin-bottom: 0;\\n background-color: #004485; }\\n\\n#selectorBar .form-control {\\n background-color: #004485;\\n color: white;\\n border: none;\\n height: auto;\\n box-shadow: none; }\\n\\n#selectorBar .form-control:focus {\\n outline: none;\\n box-shadow: none; }\\n\\nhr {\\n margin-bottom: 0px; }\\n\\n.search-empty {\\n color: #768692 !important;\\n padding-left: 0.5em;\\n margin-top: 1em;\\n margin-bottom: 1em;\\n margin-left: 0;\\n margin-right: 0; }\\n\\n.search-message {\\n color: #768692 !important;\\n padding-left: 0.5em;\\n margin: 0px;\\n padding-top: 1em; }\\n\\n.one-organisation {\\n color: white; }\\n\\n.far {\\n color: white;\\n padding-left: 1.5rem;\\n padding-top: 1.5rem; }\\n\\n.details-link:hover {\\n cursor: pointer; }\\n\\n.far:hover {\\n color: white; }\\n\\n.user-card {\\n background-color: white;\\n padding: 1em;\\n border: 1px solid #ccc;\\n border-radius: 5px;\\n position: relative; }\\n\\n.button-clicked {\\n border-color: gray;\\n background-color: gray; }\\n\\nbutton,\\ninput {\\n border-radius: 5px; }\\n\\n.view-rolesbutton {\\n border: 2px solid #005EB8;\\n color: #005EB8;\\n font-size: 13px;\\n font-weight: 600; }\\n\\n.view-rolesbutton:hover {\\n background-color: #005EB8;\\n color: white; }\\n\\n.disable-accbutton {\\n border: 2px solid #dc3545;\\n color: #dc3545;\\n font-size: 13px;\\n font-weight: 600; }\\n\\n.disable-accbutton:hover {\\n background-color: #dc3545;\\n color: white; }\\n\\n.enable-accbutton {\\n border: 2px solid #005EB8;\\n color: #005EB8;\\n font-size: 13px;\\n font-weight: 600; }\\n\\n.enable-accbutton:hover {\\n background-color: #005EB8;\\n color: white; }\\n\\n.hidden {\\n display: none; }\\n\\n@media screen and (max-width: 768px) {\\n .users .actions {\\n text-align: left; }\\n .users button {\\n margin-left: 0;\\n margin-right: 5px;\\n margin-top: 5px; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdXNlci1hZG1pbmlzdHJhdGlvbi9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFx1c2VyLWFkbWluaXN0cmF0aW9uXFx1c2VyLWFkbWluaXN0cmF0aW9uLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC91c2VyLWFkbWluaXN0cmF0aW9uL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxfdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDRSxtQkFBbUI7RUFDbkIseUJBQXlCLEVBQUE7O0FBRzNCO0VBQ0UsZ0JBQWdCO0VBQ2hCLGVBQWUsRUFBQTs7QUFHakI7RUFDRSxTQUFTLEVBQUE7O0FBR1g7RUFDRSxpQkFBaUIsRUFBQTs7QUFHbkI7RUFDRSw2QkFBNkIsRUFBQTs7QUFHL0I7RUFDRSx5QkFBeUIsRUFBQTs7QUFHM0I7RUFDRSxpQkFBaUIsRUFBQTs7QUFHbkI7RUFDRSxnQkFBZ0I7RUFDaEIsZUFBZSxFQUFBOztBQUdqQjs7RUFFRSx5QkFBMkI7RUFDM0IseUJBQXlCLEVBQUE7O0FBRzNCO0VBQ0Usa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UscUJBQXFCO0VBQ3JCLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxjQ25EZ0I7RURvRGhCLGdCQUFnQjtFQUNoQixnQkFBZ0I7RUFDaEIsZUFBZSxFQUFBOztBQUdqQjtFQUNFLGdCQUFnQjtFQUVoQixjQzVEZ0I7RUQ2RGhCLGFBQWEsRUFBQTs7QUFHZjtFQUNFLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGtCQUFrQjtFQUNsQix1QkFBdUI7RUFDdkIsWUFBWTtFQUNaLHNCQUFzQjtFQUN0QixrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxTQUFTLEVBQUE7O0FBSVg7RUFDRSx5QkNsRmdCO0VEbUZoQixnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxZQUFZO0VBQ1osZUFBZTtFQUNmLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGVBQWUsRUFBQTs7QUFHakI7RUFDRSxjQUFjO0VBQ2QsZ0JBQWdCO0VBQ2hCLHlCQUF5QixFQUFBOztBQUczQjtFQUNFLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1osWUFBWTtFQUNaLFlBQVk7RUFDWixnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxhQUFhO0VBQ2IsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0Usa0JBQWtCLEVBQUE7O0FBSXBCO0VBQ0UseUJBQTJCO0VBQzNCLG1CQUFtQjtFQUNuQixlQUFlO0VBQ2Ysa0JBQWtCO0VBQ2xCLGNBQWM7RUFDZCxlQUFlLEVBQUE7O0FBR2pCO0VBQ0UseUJBQTJCO0VBQzNCLG1CQUFtQjtFQUNuQixXQUFXO0VBQ1gsZ0JBQWdCLEVBQUE7O0FBSWxCO0VBQ0UsWUFBWSxFQUFBOztBQUlkO0VBQ0UsWUFBWTtFQUNaLG9CQUFvQjtFQUNwQixtQkFBbUIsRUFBQTs7QUFHckI7RUFDRSxlQUFlLEVBQUE7O0FBR2pCO0VBQ0UsWUFBWSxFQUFBOztBQUlkO0VBQ0UsdUJBQXVCO0VBQ3ZCLFlBQVk7RUFDWixzQkFBc0I7RUFDdEIsa0JBQWtCO0VBQ2xCLGtCQUFrQixFQUFBOztBQUlwQjtFQUNFLGtCQUFrQjtFQUNsQixzQkFBc0IsRUFBQTs7QUFHeEI7O0VBRUUsa0JBQWtCLEVBQUE7O0FBR3BCO0VBQ0UseUJDckxnQjtFRHNMaEIsY0N0TGdCO0VEdUxoQixlQUFlO0VBQ2YsZ0JBQWdCLEVBQUE7O0FBSmxCO0lBTUkseUJDMUxjO0lEMkxkLFlBQVksRUFBQTs7QUFJaEI7RUFDRSx5QkFBeUI7RUFDekIsY0FBYztFQUNkLGVBQWU7RUFDZixnQkFBZ0IsRUFBQTs7QUFKbEI7SUFNSSx5QkFBeUI7SUFDekIsWUFBWSxFQUFBOztBQUloQjtFQUNFLHlCQzNNZ0I7RUQ0TWhCLGNDNU1nQjtFRDZNaEIsZUFBZTtFQUNmLGdCQUFnQixFQUFBOztBQUpsQjtJQU1JLHlCQ2hOYztJRGlOZCxZQUFZLEVBQUE7O0FBSWhCO0VBQ0UsYUFBYSxFQUFBOztBQUdmO0VBQ0U7SUFDRSxnQkFBZ0IsRUFBQTtFQUVsQjtJQUNFLGNBQWM7SUFDZCxpQkFBaUI7SUFDakIsZUFBZSxFQUFBLEVBQ2hCIiwiZmlsZSI6InNyYy9hcHAvdXNlci1hZG1pbmlzdHJhdGlvbi91c2VyLWFkbWluaXN0cmF0aW9uLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcIi4uLy4uL3ZhcmlhYmxlc1wiO1xyXG5cclxuI2NvbnRhaW5lclVzZXJBZG1pbiB7XHJcbiAgcGFkZGluZy1ib3R0b206IDZlbTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzO1xyXG59XHJcblxyXG5oMSB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBtYXJnaW4tdG9wOiAxZW07XHJcbn1cclxuXHJcbmg0IHtcclxuICBtYXJnaW46IDA7XHJcbn1cclxuXHJcbi5icmVha2VyIHtcclxuICBtYXJnaW4tdG9wOiAxLjVlbTtcclxufVxyXG5cclxuLnVzZXJzIHtcclxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZTtcclxufVxyXG5cclxuLnVzZXJzOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmN2ZiO1xyXG59XHJcblxyXG4udXNlcnMgLmFjdGlvbnMge1xyXG4gIHRleHQtYWxpZ246IHJpZ2h0O1xyXG59XHJcblxyXG4udXNlcnMgYnV0dG9uIHtcclxuICBtYXJnaW4tbGVmdDogNXB4O1xyXG4gIG1hcmdpbi10b3A6IDVweDtcclxufVxyXG5cclxuLmRpc2FibGVkLFxyXG4uZGlzYWJsZWQgc21hbGwge1xyXG4gIGNvbG9yOiAkbmhzLWdyZXkgIWltcG9ydGFudDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xyXG59XHJcblxyXG4udXNlci1yb3cge1xyXG4gIHBhZGRpbmc6IDFlbSAwLjVlbTtcclxufVxyXG5cclxuLnZjZW50ZXIge1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gIGZsb2F0OiBub25lO1xyXG59XHJcblxyXG4ucHJvamVjdHMtbG9hZGluZyB7XHJcbiAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICBmb250LXNpemU6IDEuNWVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgbWFyZ2luLXRvcDogMmVtO1xyXG59XHJcblxyXG4ucHJvamVjdC1sb2FkaW5nLXNwaW5uZXIge1xyXG4gIGZvbnQtc2l6ZTogMi41ZW07XHJcblxyXG4gIGNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgbWFyZ2luOiAxZW0gMDtcclxufVxyXG5cclxuLmRpc2FibGVkIHNwYW4ge1xyXG4gIG1hcmdpbi1yaWdodDogMWVtO1xyXG59XHJcblxyXG4ubWVtYmVyc2hpcC1sZWFkIHtcclxuICBtYXJnaW4tYm90dG9tOiAzZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgcGFkZGluZzogMWVtO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG59XHJcblxyXG4ubWVtYmVyc2hpcC1sZWFkIHAge1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLy8gU2VsZWN0b3JCYXJcclxuI3NlbGVjdG9yQmFyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgbWFyZ2luLXRvcDogLTJlbTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idG4tYmFjayB7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGZvbnQtc2l6ZTogMTdweDtcclxuICBsaW5lLWhlaWdodDogMi41ZW07XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuYnRuLWJhY2sgLmZhIHtcclxuICBtYXJnaW4tcmlnaHQ6IDVweDtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idG4tYmFjazpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmZvcm0tZ3JvdXAge1xyXG4gIHBhZGRpbmc6IDVweCAwO1xyXG4gIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDQ4NTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5mb3JtLWNvbnRyb2wge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDQ0ODU7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5mb3JtLWNvbnRyb2w6Zm9jdXMge1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuaHIge1xyXG4gIG1hcmdpbi1ib3R0b206IDBweDtcclxufVxyXG5cclxuLy8gU2VhcmNoIGVycm9yIGFuZCB1c2VyIGNvdW50XHJcbi5zZWFyY2gtZW1wdHkge1xyXG4gIGNvbG9yOiAkbmhzLWdyZXkgIWltcG9ydGFudDtcclxuICBwYWRkaW5nLWxlZnQ6IDAuNWVtO1xyXG4gIG1hcmdpbi10b3A6IDFlbTtcclxuICBtYXJnaW4tYm90dG9tOiAxZW07XHJcbiAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgbWFyZ2luLXJpZ2h0OiAwO1xyXG59XHJcblxyXG4uc2VhcmNoLW1lc3NhZ2Uge1xyXG4gIGNvbG9yOiAkbmhzLWdyZXkgIWltcG9ydGFudDtcclxuICBwYWRkaW5nLWxlZnQ6IDAuNWVtO1xyXG4gIG1hcmdpbjogMHB4O1xyXG4gIHBhZGRpbmctdG9wOiAxZW07XHJcbn1cclxuXHJcbi8vIENvbG9yIG9mIG9uZSBPcmdhbmlzYXRpb25cclxuLm9uZS1vcmdhbmlzYXRpb24ge1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxufVxyXG5cclxuLy8gSW5mb3JtYXRpb24gSWNvblxyXG4uZmFyIHtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XHJcbiAgcGFkZGluZy10b3A6IDEuNXJlbTtcclxufVxyXG5cclxuLmRldGFpbHMtbGluazpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uZmFyOmhvdmVyIHtcclxuICBjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbi8vIENhcmQgTGF5b3V0XHJcbi51c2VyLWNhcmQge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gIHBhZGRpbmc6IDFlbTtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi8vIEJ1dHRvbnMgJiBzZWFyY2hcclxuLmJ1dHRvbi1jbGlja2VkIHtcclxuICBib3JkZXItY29sb3I6IGdyYXk7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogZ3JheTtcclxufVxyXG5cclxuYnV0dG9uLFxyXG5pbnB1dCB7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG59XHJcblxyXG4udmlldy1yb2xlc2J1dHRvbiB7XHJcbiAgYm9yZGVyOiAycHggc29saWQgJG5ocy1ibHVlO1xyXG4gIGNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgZm9udC1zaXplOiAxM3B4O1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgJjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgfVxyXG59XHJcblxyXG4uZGlzYWJsZS1hY2NidXR0b24ge1xyXG4gIGJvcmRlcjogMnB4IHNvbGlkICNkYzM1NDU7XHJcbiAgY29sb3I6ICNkYzM1NDU7XHJcbiAgZm9udC1zaXplOiAxM3B4O1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgJjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1O1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gIH1cclxufVxyXG5cclxuLmVuYWJsZS1hY2NidXR0b24ge1xyXG4gIGJvcmRlcjogMnB4IHNvbGlkICRuaHMtYmx1ZTtcclxuICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gIGZvbnQtc2l6ZTogMTNweDtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gICY6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5ocy1ibHVlO1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gIH1cclxufVxyXG5cclxuLmhpZGRlbiB7XHJcbiAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcclxuICAudXNlcnMgLmFjdGlvbnMge1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICB9XHJcbiAgLnVzZXJzIGJ1dHRvbiB7XHJcbiAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgIG1hcmdpbi1yaWdodDogNXB4O1xyXG4gICAgbWFyZ2luLXRvcDogNXB4O1xyXG4gIH1cclxufVxyXG4iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiXX0= */\"","import { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { FormGroup, Validators, FormBuilder } from \"@angular/forms\";\r\nimport { Meta, Title } from \"@angular/platform-browser\";\r\nimport { Router } from \"@angular/router\";\r\n\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { ModalDirective } from \"ngx-bootstrap\";\r\n\r\nimport { DataService } from \"../utilities/services/data.service\";\r\nimport { MemberService } from \"../utilities/services/member.service\";\r\nimport { UserRegistration } from \"../utilities/classes/user/user-registration\";\r\nimport { User } from \"../utilities/classes/user/user\";\r\nimport { CsvDownload } from \"app/utilities/classes/csv/csv-download\";\r\nimport { FlattenPipe, UniquePipe } from \"ngx-pipes\";\r\n\r\n@Component({\r\n selector: \"app-user-administration\",\r\n templateUrl: \"./user-administration.component.html\",\r\n styleUrls: [\"./user-administration.component.scss\"],\r\n providers: [ FlattenPipe ]\r\n})\r\nexport class UserAdministrationComponent implements OnInit {\r\n @ViewChild(\"rolesModal\") public rolesModal: ModalDirective;\r\n @ViewChild(\"passwordModal\") public passwordModal: ModalDirective;\r\n @ViewChild(\"addUserModal\") public addUserModal: ModalDirective;\r\n user: User = {\r\n userId: 0,\r\n fullName: \"\",\r\n logonName: \"\",\r\n jobTitle: \"\",\r\n phoneNo: \"\",\r\n lastLogon: new Date(),\r\n roles: null,\r\n welcomeDialogDismissed: \"Y\",\r\n mailchimpOptIn: \"\",\r\n notificationOptIn: \"\",\r\n };\r\n\r\n csvSettings: CsvDownload = {\r\n fileName: 'Users',\r\n buttonText: 'Download Users (.csv)',\r\n buttonStyle: 'btn btn-outline-primary',\r\n icon: '',\r\n headers: ['Name', 'Active', 'Email'],\r\n keys: ['fullName', 'isActive', 'logonName'],\r\n styling: true\r\n }\r\n\r\n registerUser: FormGroup;\r\n organisation;\r\n currentOrganisation;\r\n users;\r\n orgPermission: number;\r\n userRoles;\r\n productLead;\r\n errorMessage;\r\n showDeactivatedAccounts: boolean = false;\r\n userHasProductId2: boolean;\r\n organisationsLength: number;\r\n searchText: string;\r\n\r\n uniqueProductList: any = [];\r\n\r\n metaTitle: string = 'User Administration | NHS Benchmarking Network';\r\n\r\n constructor(\r\n fb: FormBuilder,\r\n private dataService: DataService,\r\n private memberService: MemberService,\r\n private toastr: ToastrService,\r\n private router: Router, // Set page titles\r\n private titleService: Title, // Set page titles\r\n private meta: Meta,\r\n private flatten: FlattenPipe,\r\n private unique: UniquePipe\r\n ) {\r\n this.registerUser = fb.group({\r\n logonName: [\"\", [Validators.required, Validators.maxLength(60), Validators.email]],\r\n fullName: [\"\", [Validators.required, Validators.maxLength(60)]],\r\n jobTitle: [\"\", [Validators.required, Validators.maxLength(60)]],\r\n phoneNo: [\"\", [Validators.required, Validators.maxLength(40)]],\r\n productId: [\"\"]\r\n });\r\n\r\n this.registerUser.valueChanges.subscribe((data) =>\r\n this.onValueChanged(data)\r\n );\r\n\r\n this.onValueChanged();\r\n }\r\n\r\n ngOnInit() {\r\n this.titleService.setTitle(this.metaTitle); // Set page title\r\n this.meta.updateTag({property: 'og:title', content: this.metaTitle});\r\n this.meta.updateTag({name: 'twitter:title', content: this.metaTitle});\r\n this.userRoles = null;\r\n this.getUserDetails();\r\n }\r\n\r\n getUserDetails() {\r\n this.memberService.User().subscribe((u) => {\r\n this.user = u.data;\r\n this.dataService.setUser(u.data);\r\n this.getOrganisationsByUser(this.user.roles);\r\n });\r\n }\r\n\r\n getOrganisationsByUser(userRoles?) {\r\n let currentOrg = this.dataService.getSelectedOrganisation();\r\n this.memberService.OrganisationsByUser().subscribe((o) => {\r\n this.organisation = o.data;\r\n this.currentOrganisation = currentOrg\r\n ? currentOrg\r\n : this.organisation[0].organisationId;\r\n\r\n if (currentOrg)\r\n this.orgPermission = this.organisation.filter(\r\n (o) => o.organisationId == currentOrg\r\n )[0].minRole;\r\n else this.orgPermission = this.organisation[0].minRole;\r\n\r\n this.organisationsLength = o.data.length;\r\n this.setUserPermission(this.orgPermission);\r\n this.dataService.setOrganisation(o.data);\r\n this.getOrganisationUserAdmin(this.currentOrganisation);\r\n this.getOrganisationProducts(userRoles, this.currentOrganisation);\r\n });\r\n }\r\n\r\n getOrganisationProducts(userRoles, currentOrganisation) {\r\n // Get unique list of products for which current user has permissions\r\n this.uniqueProductList = [];\r\n userRoles = Object.keys(userRoles).map(org => userRoles[org]);\r\n userRoles = this.flatten.transform(userRoles).filter(role => role.organisationId == currentOrganisation);\r\n let uniqueProductIds = this.unique.transform(userRoles.map(role => role.productId)).sort(function (a, b) { return a - b });\r\n uniqueProductIds.forEach(id => {\r\n this.uniqueProductList.push({ \r\n productId: id, \r\n productName: userRoles.find(role => role.productId == id).productName\r\n })\r\n });\r\n // Update registration form\r\n this.registerUser.patchValue({ productId: this.uniqueProductList[0].productId });\r\n }\r\n\r\n // Fix API to return only data relevant to the user permission\r\n setUserPermission(permission: number) {\r\n // Product Lead, Deputy Product Lead, Project Lead & Deputy Project Lead have Active/Deactive permissions\r\n if (permission <= 3 || permission == 8) this.userHasProductId2 = true;\r\n else this.userHasProductId2 = false;\r\n }\r\n\r\n getOrganisationUserAdmin(organisationId: number) {\r\n this.memberService.OrganisationsUserAdmin(organisationId).subscribe((o) => {\r\n this.users = o.data.userList;\r\n this.productLead = o.data.productLeadList.filter(\r\n (p) => p.productId == 1\r\n )[0];\r\n });\r\n }\r\n\r\n getUserRoles(userId: number, organisationId: number) {\r\n this.memberService.UserViewRoles(userId, organisationId).subscribe((u) => {\r\n this.userRoles = u.data;\r\n });\r\n }\r\n\r\n setUserState(userId: number, organisationId: number, state: string) {\r\n this.memberService.UserState(userId, organisationId, state).subscribe(\r\n (s) => {\r\n this.getOrganisationUserAdmin(organisationId);\r\n this.toastr.success(\"User state updated.\", \"User Administration\");\r\n },\r\n (e) => {\r\n this.toastr.success(\r\n \"Unable to update user state.\",\r\n \"User Administration\"\r\n );\r\n }\r\n );\r\n }\r\n\r\n createNewUser(userRegData: UserRegistration) {\r\n this.memberService.RegisterUser(userRegData).subscribe(\r\n (data) => {\r\n this.addUserModal.hide();\r\n this.toastr.success(\r\n \"User has been added successfully.\",\r\n \"User Administration\"\r\n );\r\n },\r\n (error) => {\r\n this.errorMessage = error.error.error.message;\r\n }\r\n );\r\n }\r\n\r\n showAddUser() {\r\n this.registerUser.patchValue({ productId: this.uniqueProductList[0].productId });\r\n this.errorMessage = null;\r\n this.addUserModal.show();\r\n }\r\n\r\n addUser() {\r\n let userRegData: UserRegistration = this.registerUser.value;\r\n\r\n userRegData.organisationId = this.currentOrganisation;\r\n\r\n this.createNewUser(userRegData);\r\n }\r\n\r\n onOrgChange(message: number) {\r\n this.dataService.setSelectedOrganisation(message);\r\n\r\n this.users = null;\r\n\r\n this.orgPermission = this.organisation.filter(\r\n (o) => o.organisationId == message\r\n )[0].minRole;\r\n\r\n this.setUserPermission(this.orgPermission);\r\n\r\n this.currentOrganisation = message;\r\n\r\n this.getOrganisationUserAdmin(message);\r\n this.getOrganisationProducts(this.user.roles, message);\r\n }\r\n\r\n viewRoles(userId: number) {\r\n this.getUserRoles(userId, this.currentOrganisation);\r\n\r\n this.rolesModal.show();\r\n }\r\n\r\n resetPassword(userId: number) {\r\n this.passwordModal.show();\r\n }\r\n\r\n accountState(userId: number, isActive: string) {\r\n if (isActive == \"Y\") {\r\n this.setUserState(userId, this.currentOrganisation, \"N\");\r\n }\r\n\r\n if (isActive == \"N\") {\r\n this.setUserState(userId, this.currentOrganisation, \"Y\");\r\n }\r\n }\r\n\r\n onValueChanged(data?: any) {\r\n if (!this.registerUser) {\r\n return;\r\n }\r\n const form = this.registerUser;\r\n\r\n for (const field in this.formErrors) {\r\n // clear previous error message (if any)\r\n this.formErrors[field] = \"\";\r\n const control = form.get(field);\r\n\r\n if (control && control.dirty && !control.valid) {\r\n const messages = this.validationMessages[field];\r\n\r\n for (const key in control.errors) {\r\n this.formErrors[field] += messages[key] + \" \";\r\n }\r\n }\r\n }\r\n }\r\n\r\n navHome() {\r\n this.router.navigate([\"/home\"]);\r\n }\r\n\r\n formErrors = {\r\n logonName: \"\",\r\n fullName: \"\",\r\n jobTitle: \"\",\r\n phoneNo: \"\",\r\n };\r\n\r\n validationMessages = {\r\n logonName: {\r\n required: \"Email Address is required.\",\r\n maxlength: \"Email Address cannot be longer than 60 characters.\",\r\n email: \"Email Address is not valid.\",\r\n },\r\n fullName: {\r\n required: \"Full name is required.\",\r\n maxlength: \"Full name cannot be longer than 60 characters.\",\r\n },\r\n jobTitle: {\r\n required: \"Job title is required.\",\r\n maxlength: \"Job title cannot be longer than 60 characters.\",\r\n },\r\n phoneNo: {\r\n required: \"Phone number is required.\",\r\n maxlength: \"Phone number cannot be longer than 40 characters.\",\r\n },\r\n };\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\n\r\nimport { ToastrModule } from \"ngx-toastr\";\r\nimport { ModalModule } from \"ngx-bootstrap\";\r\nimport { TooltipModule } from \"ngx-bootstrap/tooltip\";\r\n\r\nimport { UserAdministrationComponent } from \"./user-administration.component\";\r\nimport { UserAdministrationRoutingModule } from \"./user-administration-routing.module\";\r\n\r\nimport { SafePipeModule } from \"../utilities/pipes/safe-pipe.module\";\r\nimport { NgPipesModule } from \"ngx-pipes\";\r\nimport { Angular2CsvModule } from \"angular2-csv\";\r\nimport { CsvDownloadModule } from \"app/shared/csv-download/csv-download.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ToastrModule.forRoot(),\r\n ModalModule.forRoot(),\r\n UserAdministrationRoutingModule,\r\n TooltipModule,\r\n SafePipeModule,\r\n NgPipesModule,\r\n Angular2CsvModule,\r\n CsvDownloadModule\r\n ],\r\n declarations: [UserAdministrationComponent],\r\n})\r\nexport class UserAdministrationModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { UserCheckComponent } from './user-check.component';\r\n\r\nconst userCheckRoutes: Routes = [\r\n { path: 'userCheck', component: UserCheckComponent }\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forChild(userCheckRoutes)\r\n ],\r\n exports: [\r\n RouterModule\r\n ]\r\n})\r\n\r\nexport class UserCheckRoutingModule { }","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Update your details

\\r\\n

\\r\\n Please take a minute to check that the details below are up-to-date. There are two steps, and both need to be completed.\\r\\n

\\r\\n

\\r\\n If you need any further support, please contact our Support Team.\\r\\n

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

\\r\\n Loading user profile...\\r\\n

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

Step 1 of 2: Confirm your organisation(s)

\\r\\n

\\r\\n Please select all the organisations you currently work within by clicking the toggle next to the name. Leave unselected any organisations that you do not currently work within. Once complete, click Confirm Selection.\\r\\n

\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ allOrganisations[i].organisationName }}\\r\\n \\r\\n 0 ? progressBarWidth = progressBarWidth - 50 : ''\\\"\\r\\n type=\\\"checkbox\\\" [id]=\\\"i\\\" [formControlName]=\\\"i\\\" />\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n If you no longer work within any of the organisations listed above, please click Not associated with any listed organisation.\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Step 2 of 2: Update your profile

\\r\\n

\\r\\n Please review your contact information below and click Confirm Profile Information.\\r\\n

\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n If you need to change your email address, please contact the\\r\\n Support Team\\r\\n on 0161 266 1797.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.fullName }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.jobTitle }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.phoneNo }}\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

Newsletter Preferences

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Select 'I want to receive updates' above to receive monthly and quarterly bulletins from the NHS Benchmarking Network.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.mailchimpOptIn }}\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Notifications are accessible from the navigation at the\\r\\n top of this page at any time. To receive a daily digest of\\r\\n your new notifications, select 'I want to receive\\r\\n notifications' above.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n {{ formErrors.notificationOptIn }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n To continue, please click Confirm Profile Information even if no information has changed.\\r\\n
\\r\\n \\r\\n Must select newsletter preferences\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

Completion...

\\r\\n

Completion 100%

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

Organisation: \\r\\n

\\r\\n

Details:

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

Redirected in {{ seconds }}

\\r\\n
\\r\\n
\\r\\n \\r\\n  Log out and complete later\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"#selectorBar {\\n background-color: #005EB8;\\n margin-top: -2em; }\\n\\n#selectorBar .btn-back {\\n color: white;\\n font-size: 17px;\\n line-height: 2.5em; }\\n\\n#selectorBar .btn-back .fa {\\n margin-right: 5px; }\\n\\n#selectorBar .btn-back:hover {\\n cursor: pointer; }\\n\\n#selectorBar .form-group {\\n padding: 5px 0;\\n margin-bottom: 0;\\n background-color: #004485; }\\n\\n#selectorBar .form-control {\\n background-color: #004485;\\n color: white;\\n border: none;\\n height: auto;\\n box-shadow: none; }\\n\\n#selectorBar .form-control:focus {\\n outline: none;\\n box-shadow: none; }\\n\\n#containerProfile {\\n padding-bottom: 6em;\\n background-color: #f3f3f3; }\\n\\n#containerProfile .form-control {\\n font-size: 17px;\\n border-radius: 5px; }\\n\\n#containerProfile h4 {\\n font-weight: 600;\\n font-size: 1.25em;\\n margin-bottom: 1em;\\n color: #768692; }\\n\\n#roles hr {\\n padding-bottom: 0.15em;\\n margin-top: 0.5em; }\\n\\n.role-title {\\n font-weight: 600; }\\n\\n#containerProfile .form-group .control-label {\\n text-align: left;\\n font-size: 17px; }\\n\\n.user {\\n padding-top: 1.5em;\\n padding-bottom: 0.5em; }\\n\\n.user:nth-child(odd) {\\n background-color: #f2f7fb; }\\n\\n.stickyCard {\\n position: -webkit-sticky;\\n position: sticky;\\n top: 20px;\\n margin-top: -20px; }\\n\\n.log-out:hover {\\n color: #005EB8;\\n cursor: pointer; }\\n\\n#containerProfile button span {\\n opacity: 0;\\n margin-left: -18px; }\\n\\n#containerProfile button.is-loading span {\\n opacity: 1;\\n margin-left: 5px; }\\n\\n#containerProfile ul {\\n padding-left: 1.1em; }\\n\\n.explainer {\\n margin-right: 1em; }\\n\\n.help-block {\\n margin-top: 0.5em;\\n color: #768692; }\\n\\n.alert-info {\\n margin-top: 1em;\\n margin-bottom: 0; }\\n\\nh1 {\\n font-weight: 600;\\n margin-top: 1em; }\\n\\n.view-card {\\n background-color: white;\\n padding-bottom: 2em;\\n padding-left: 2em;\\n padding-right: 2em;\\n border: 1px solid #ccc;\\n border-radius: 5px;\\n position: relative; }\\n\\n.projects-loading {\\n color: #005EB8;\\n font-size: 1.5em;\\n font-weight: 600;\\n margin-top: 2em; }\\n\\n.project-loading-spinner {\\n font-size: 2.5em;\\n color: #005EB8;\\n margin: 1em 0; }\\n\\n.container {\\n padding: 2rem 0rem; }\\n\\nh4 {\\n margin: 2rem 0rem 1rem; }\\n\\n.table-image td, .table-image th {\\n vertical-align: middle; }\\n\\n[type=\\\"checkbox\\\"]:not(:checked),\\n[type=\\\"checkbox\\\"]:checked {\\n position: absolute;\\n opacity: 0.01; }\\n\\n[type=\\\"checkbox\\\"]:not(:checked) + label,\\n[type=\\\"checkbox\\\"]:checked + label {\\n position: relative;\\n padding-left: 4.5em;\\n cursor: pointer;\\n margin-top: 2px; }\\n\\n[type=\\\"checkbox\\\"]:not(:checked) + label:before,\\n[type=\\\"checkbox\\\"]:checked + label:before,\\n[type=\\\"checkbox\\\"]:not(:checked) + label:after,\\n[type=\\\"checkbox\\\"]:checked + label:after {\\n content: '';\\n position: absolute; }\\n\\n[type=\\\"checkbox\\\"]:not(:checked) + label:before,\\n[type=\\\"checkbox\\\"]:checked + label:before {\\n left: 0;\\n top: -.1em;\\n width: 3.5em;\\n height: 1.85em;\\n background: #DDDDDD;\\n border-radius: 1em;\\n transition: background-color .2s; }\\n\\n[type=\\\"checkbox\\\"]:not(:checked) + label:after,\\n[type=\\\"checkbox\\\"]:checked + label:after {\\n width: 1.4em;\\n height: 1.4em;\\n transition: all .2s;\\n border-radius: 50%;\\n background: white;\\n top: .12em;\\n left: .24em; }\\n\\n.text {\\n display: inline-block;\\n vertical-align: middle; }\\n\\n/* on checked */\\n\\n[type=\\\"checkbox\\\"]:checked + label:before {\\n background: green; }\\n\\n[type=\\\"checkbox\\\"]:checked + label:after {\\n left: 1.9em; }\\n\\n[type=\\\"checkbox\\\"]:checked + label .ui,\\n[type=\\\"checkbox\\\"]:not(:checked) + label .ui:before,\\n[type=\\\"checkbox\\\"]:checked + label .ui:after {\\n position: absolute;\\n left: .6em;\\n width: 6em;\\n border-radius: 1em;\\n font-size: .875em;\\n font-weight: bold;\\n font-size: 1em;\\n transition: all .2s; }\\n\\n[type=\\\"checkbox\\\"]:not(:checked) + label .ui:before {\\n left: 2em;\\n top: .2em; }\\n\\n[type=\\\"checkbox\\\"]:checked + label .ui:after {\\n font-family: 'Font Awesome 5 Pro';\\n font-weight: 700;\\n content: \\\"\\\\f00c\\\";\\n top: .2em;\\n left: 0em;\\n color: white; }\\n\\n[type=\\\"checkbox\\\"]:focus + label:before {\\n box-sizing: border-box; }\\n\\nform p {\\n margin: 1.5em auto; }\\n\\n.fa-check-circle {\\n color: green; }\\n\\n.progress-bar {\\n background-color: green; }\\n\\n.progress {\\n border-radius: 5px; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdXNlci1jaGVjay9DOlxcVXNlcnNcXEJyaWFuR2lsbGV0dC1TbWl0aFxcQ29kZVxcbmhzL3NyY1xcYXBwXFx1c2VyLWNoZWNrXFx1c2VyLWNoZWNrLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC91c2VyLWNoZWNrL0M6XFxVc2Vyc1xcQnJpYW5HaWxsZXR0LVNtaXRoXFxDb2RlXFxuaHMvc3JjXFxfdmFyaWFibGVzLnNjc3MiLCJzcmMvYXBwL3VzZXItY2hlY2svdXNlci1jaGVjay5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNFLHlCQ0RnQjtFREVoQixnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxZQUFZO0VBQ1osZUFBZTtFQUNmLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGVBQWUsRUFBQTs7QUFHakI7RUFDRSxjQUFjO0VBQ2QsZ0JBQWdCO0VBQ2hCLHlCQUF5QixFQUFBOztBQUczQjtFQUNFLHlCQUF5QjtFQUN6QixZQUFZO0VBQ1osWUFBWTtFQUNaLFlBQVk7RUFDWixnQkFBZ0IsRUFBQTs7QUFHbEI7RUFDRSxhQUFhO0VBQ2IsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0UsbUJBQW1CO0VBQ25CLHlCQUF5QixFQUFBOztBQUczQjtFQUNFLGVBQWU7RUFDZixrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxnQkFBZ0I7RUFDaEIsaUJBQWlCO0VBQ2pCLGtCQUFrQjtFQUNsQixjQ2xEZ0IsRUFBQTs7QURxRGxCO0VBQ0Usc0JBQXNCO0VBQ3RCLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGdCQUFnQixFQUFBOztBQUdsQjtFQUNFLGdCQUFnQjtFQUNoQixlQUFlLEVBQUE7O0FBR2pCO0VBQ0Usa0JBQWtCO0VBQ2xCLHFCQUFxQixFQUFBOztBQUd2QjtFQUNFLHlCQUF5QixFQUFBOztBQUczQjtFQUNFLHdCQUFnQjtFQUFoQixnQkFBZ0I7RUFDaEIsU0FBUztFQUNULGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGNDckZnQjtFRHNGaEIsZUFBZSxFQUFBOztBQUdqQjtFQUNFLFVBQVU7RUFDVixrQkFBa0IsRUFBQTs7QUFHcEI7RUFDRSxVQUFVO0VBQ1YsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0UsbUJBQW1CLEVBQUE7O0FBR3JCO0VBQ0UsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsaUJBQWlCO0VBQ2pCLGNDM0dnQixFQUFBOztBRDhHbEI7RUFDRSxlQUFlO0VBQ2YsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0UsZ0JBQWdCO0VBQ2hCLGVBQWUsRUFBQTs7QUFJakI7RUFDRSx1QkFBdUI7RUFDdkIsbUJBQW1CO0VBQ25CLGlCQUFpQjtFQUNqQixrQkFBa0I7RUFDbEIsc0JBQXNCO0VBQ3RCLGtCQUFrQjtFQUNsQixrQkFBa0IsRUFBQTs7QUFJcEI7RUFDRSxjQ3ZJZ0I7RUR3SWhCLGdCQUFnQjtFQUNoQixnQkFBZ0I7RUFDaEIsZUFBZSxFQUFBOztBQUdqQjtFQUNFLGdCQUFnQjtFQUVoQixjQ2hKZ0I7RURpSmhCLGFBQWEsRUFBQTs7QUFHZjtFQUNFLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLHNCQUFzQixFQUFBOztBQUd4QjtFQUVJLHNCQUFzQixFQUFBOztBRWxDMUI7O0VGd0NFLGtCQUFrQjtFQUNsQixhQUFhLEVBQUE7O0FFcENmOztFRndDRSxrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQ25CLGVBQWU7RUFDZixlQUFlLEVBQUE7O0FFcENqQjs7OztFRjBDRSxXQUFXO0VBQ1gsa0JBQWtCLEVBQUE7O0FFcENwQjs7RUZ3Q0UsT0FBTztFQUFFLFVBQVU7RUFDbkIsWUFBWTtFQUFFLGNBQWM7RUFDNUIsbUJBQW1CO0VBQ25CLGtCQUFrQjtFQUNsQixnQ0FBZ0MsRUFBQTs7QUVsQ2xDOztFRnVDRSxZQUFZO0VBQUUsYUFBYTtFQUMzQixtQkFBbUI7RUFDbkIsa0JBQWtCO0VBQ2xCLGlCQUFpQjtFQUNqQixVQUFVO0VBQUUsV0FBVyxFQUFBOztBQUV6QjtFQUNFLHFCQUFxQjtFQUNyQixzQkFBc0IsRUFBQTs7QUFHeEIsZUFBQTs7QUVuQ0E7RUZxQ0UsaUJBQWlCLEVBQUE7O0FFbENuQjtFRnFDRSxXQUFXLEVBQUE7O0FFbENiOzs7RUZ3Q0Usa0JBQWtCO0VBQ2xCLFVBQVU7RUFDVixVQUFVO0VBQ1Ysa0JBQWtCO0VBQ2xCLGlCQUFpQjtFQUNqQixpQkFBaUI7RUFDakIsY0FBYztFQUNkLG1CQUFtQixFQUFBOztBRW5DckI7RUZzQ0UsU0FBUztFQUNULFNBQVMsRUFBQTs7QUVuQ1g7RUZzQ0UsaUNBQWlDO0VBQ2pDLGdCQUFnQjtFQUNoQixnQkFBZ0I7RUFDaEIsU0FBUztFQUNULFNBQVM7RUFDVCxZQUFZLEVBQUE7O0FFbkNkO0VGc0NFLHNCQUFzQixFQUFBOztBQUV4QjtFQUNFLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLFlBQVksRUFBQTs7QUFHZDtFQUNFLHVCQUF1QixFQUFBOztBQUd6QjtFQUNFLGtCQUFrQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvdXNlci1jaGVjay91c2VyLWNoZWNrLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcIi4uLy4uL3ZhcmlhYmxlc1wiO1xyXG5cclxuLy8gU2VsZWN0b3JCYXJcclxuI3NlbGVjdG9yQmFyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgbWFyZ2luLXRvcDogLTJlbTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idG4tYmFjayB7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGZvbnQtc2l6ZTogMTdweDtcclxuICBsaW5lLWhlaWdodDogMi41ZW07XHJcbn1cclxuXHJcbiNzZWxlY3RvckJhciAuYnRuLWJhY2sgLmZhIHtcclxuICBtYXJnaW4tcmlnaHQ6IDVweDtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5idG4tYmFjazpob3ZlciB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4jc2VsZWN0b3JCYXIgLmZvcm0tZ3JvdXAge1xyXG4gIHBhZGRpbmc6IDVweCAwO1xyXG4gIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDQ4NTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5mb3JtLWNvbnRyb2wge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDQ0ODU7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuI3NlbGVjdG9yQmFyIC5mb3JtLWNvbnRyb2w6Zm9jdXMge1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuI2NvbnRhaW5lclByb2ZpbGUge1xyXG4gIHBhZGRpbmctYm90dG9tOiA2ZW07XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMztcclxufVxyXG5cclxuI2NvbnRhaW5lclByb2ZpbGUgLmZvcm0tY29udHJvbCB7XHJcbiAgZm9udC1zaXplOiAxN3B4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxufVxyXG5cclxuI2NvbnRhaW5lclByb2ZpbGUgaDQge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1zaXplOiAxLjI1ZW07XHJcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xyXG4gIGNvbG9yOiAkbmhzLWdyZXk7XHJcbn1cclxuXHJcbiNyb2xlcyBociB7XHJcbiAgcGFkZGluZy1ib3R0b206IDAuMTVlbTtcclxuICBtYXJnaW4tdG9wOiAwLjVlbTtcclxufVxyXG5cclxuLnJvbGUtdGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcbiNjb250YWluZXJQcm9maWxlIC5mb3JtLWdyb3VwIC5jb250cm9sLWxhYmVsIHtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIGZvbnQtc2l6ZTogMTdweDtcclxufVxyXG5cclxuLnVzZXIge1xyXG4gIHBhZGRpbmctdG9wOiAxLjVlbTtcclxuICBwYWRkaW5nLWJvdHRvbTogMC41ZW07XHJcbn1cclxuXHJcbi51c2VyOm50aC1jaGlsZChvZGQpIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmN2ZiO1xyXG59XHJcblxyXG4uc3RpY2t5Q2FyZCB7XHJcbiAgcG9zaXRpb246IHN0aWNreTtcclxuICB0b3A6IDIwcHg7XHJcbiAgbWFyZ2luLXRvcDogLTIwcHg7XHJcbn1cclxuXHJcbi5sb2ctb3V0OmhvdmVyIHtcclxuICBjb2xvcjogJG5ocy1ibHVlO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuI2NvbnRhaW5lclByb2ZpbGUgYnV0dG9uIHNwYW4ge1xyXG4gIG9wYWNpdHk6IDA7XHJcbiAgbWFyZ2luLWxlZnQ6IC0xOHB4O1xyXG59XHJcblxyXG4jY29udGFpbmVyUHJvZmlsZSBidXR0b24uaXMtbG9hZGluZyBzcGFuIHtcclxuICBvcGFjaXR5OiAxO1xyXG4gIG1hcmdpbi1sZWZ0OiA1cHg7XHJcbn1cclxuXHJcbiNjb250YWluZXJQcm9maWxlIHVsIHtcclxuICBwYWRkaW5nLWxlZnQ6IDEuMWVtO1xyXG59XHJcblxyXG4uZXhwbGFpbmVyIHtcclxuICBtYXJnaW4tcmlnaHQ6IDFlbTtcclxufVxyXG5cclxuLmhlbHAtYmxvY2sge1xyXG4gIG1hcmdpbi10b3A6IDAuNWVtO1xyXG4gIGNvbG9yOiAkbmhzLWdyZXk7XHJcbn1cclxuXHJcbi5hbGVydC1pbmZvIHtcclxuICBtYXJnaW4tdG9wOiAxZW07XHJcbiAgbWFyZ2luLWJvdHRvbTogMDtcclxufVxyXG5cclxuaDEge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgbWFyZ2luLXRvcDogMWVtO1xyXG59XHJcblxyXG4vLyBDYXJkIExheW91dFxyXG4udmlldy1jYXJkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICBwYWRkaW5nLWJvdHRvbTogMmVtO1xyXG4gIHBhZGRpbmctbGVmdDogMmVtO1xyXG4gIHBhZGRpbmctcmlnaHQ6IDJlbTtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi8vIExvYWRpbmcgc3Bpbm5lclxyXG4ucHJvamVjdHMtbG9hZGluZyB7XHJcbiAgY29sb3I6ICRuaHMtYmx1ZTtcclxuICBmb250LXNpemU6IDEuNWVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgbWFyZ2luLXRvcDogMmVtO1xyXG59XHJcblxyXG4ucHJvamVjdC1sb2FkaW5nLXNwaW5uZXIge1xyXG4gIGZvbnQtc2l6ZTogMi41ZW07XHJcblxyXG4gIGNvbG9yOiAkbmhzLWJsdWU7XHJcbiAgbWFyZ2luOiAxZW0gMDtcclxufVxyXG5cclxuLmNvbnRhaW5lciB7XHJcbiAgcGFkZGluZzogMnJlbSAwcmVtO1xyXG59XHJcblxyXG5oNCB7XHJcbiAgbWFyZ2luOiAycmVtIDByZW0gMXJlbTtcclxufVxyXG5cclxuLnRhYmxlLWltYWdlIHtcclxuICB0ZCwgdGgge1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICB9XHJcbn1cclxuXHJcblt0eXBlPVwiY2hlY2tib3hcIl06bm90KDpjaGVja2VkKSxcclxuW3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgb3BhY2l0eTogMC4wMTtcclxufVxyXG5bdHlwZT1cImNoZWNrYm94XCJdOm5vdCg6Y2hlY2tlZCkgKyBsYWJlbCxcclxuW3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkICsgbGFiZWwge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBwYWRkaW5nLWxlZnQ6IDQuNWVtO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBtYXJnaW4tdG9wOiAycHg7XHJcbn1cclxuW3R5cGU9XCJjaGVja2JveFwiXTpub3QoOmNoZWNrZWQpICsgbGFiZWw6YmVmb3JlLFxyXG5bdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQgKyBsYWJlbDpiZWZvcmUsXHJcblt0eXBlPVwiY2hlY2tib3hcIl06bm90KDpjaGVja2VkKSArIGxhYmVsOmFmdGVyLFxyXG5bdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQgKyBsYWJlbDphZnRlciB7XHJcbiAgY29udGVudDogJyc7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG59XHJcblt0eXBlPVwiY2hlY2tib3hcIl06bm90KDpjaGVja2VkKSArIGxhYmVsOmJlZm9yZSxcclxuW3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcclxuICBsZWZ0OiAwOyB0b3A6IC0uMWVtO1xyXG4gIHdpZHRoOiAzLjVlbTsgaGVpZ2h0OiAxLjg1ZW07XHJcbiAgYmFja2dyb3VuZDogI0RERERERDtcclxuICBib3JkZXItcmFkaXVzOiAxZW07XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMnM7XHJcbiAgXHJcbn1cclxuW3R5cGU9XCJjaGVja2JveFwiXTpub3QoOmNoZWNrZWQpICsgbGFiZWw6YWZ0ZXIsXHJcblt0eXBlPVwiY2hlY2tib3hcIl06Y2hlY2tlZCArIGxhYmVsOmFmdGVyIHtcclxuICB3aWR0aDogMS40ZW07IGhlaWdodDogMS40ZW07XHJcbiAgdHJhbnNpdGlvbjogYWxsIC4ycztcclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgYmFja2dyb3VuZDogd2hpdGU7XHJcbiAgdG9wOiAuMTJlbTsgbGVmdDogLjI0ZW07XHJcbn1cclxuLnRleHQge1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG59XHJcblxyXG4vKiBvbiBjaGVja2VkICovXHJcblt0eXBlPVwiY2hlY2tib3hcIl06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7XHJcbiAgYmFja2dyb3VuZDogZ3JlZW47IFxyXG59XHJcblt0eXBlPVwiY2hlY2tib3hcIl06Y2hlY2tlZCArIGxhYmVsOmFmdGVyIHtcclxuICBsZWZ0OiAxLjllbTtcclxufVxyXG5cclxuW3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkICsgbGFiZWwgLnVpLFxyXG5bdHlwZT1cImNoZWNrYm94XCJdOm5vdCg6Y2hlY2tlZCkgKyBsYWJlbCAudWk6YmVmb3JlLFxyXG5bdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQgKyBsYWJlbCAudWk6YWZ0ZXIge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBsZWZ0OiAuNmVtO1xyXG4gIHdpZHRoOiA2ZW07XHJcbiAgYm9yZGVyLXJhZGl1czogMWVtO1xyXG4gIGZvbnQtc2l6ZTogLjg3NWVtO1xyXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gIGZvbnQtc2l6ZTogMWVtO1xyXG4gIHRyYW5zaXRpb246IGFsbCAuMnM7XHJcbn1cclxuW3R5cGU9XCJjaGVja2JveFwiXTpub3QoOmNoZWNrZWQpICsgbGFiZWwgLnVpOmJlZm9yZSB7XHJcbiAgbGVmdDogMmVtO1xyXG4gIHRvcDogLjJlbTtcclxufVxyXG5bdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQgKyBsYWJlbCAudWk6YWZ0ZXIge1xyXG4gIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgUHJvJztcclxuICBmb250LXdlaWdodDogNzAwO1xyXG4gIGNvbnRlbnQ6IFwiXFxmMDBjXCI7XHJcbiAgdG9wOiAuMmVtO1xyXG4gIGxlZnQ6IDBlbTtcclxuICBjb2xvcjogd2hpdGU7XHJcbn1cclxuW3R5cGU9XCJjaGVja2JveFwiXTpmb2N1cyArIGxhYmVsOmJlZm9yZSB7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5mb3JtIHAge1xyXG4gIG1hcmdpbjogMS41ZW0gYXV0bztcclxufVxyXG5cclxuLmZhLWNoZWNrLWNpcmNsZSB7XHJcbiAgY29sb3I6IGdyZWVuO1xyXG59XHJcblxyXG4ucHJvZ3Jlc3MtYmFyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjtcclxufVxyXG5cclxuLnByb2dyZXNzIHtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbn0iLCIkaWNvbi1mb250LXBhdGg6ICcuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwLXNhc3MvYXNzZXRzL2ZvbnRzL2Jvb3RzdHJhcC8nO1xyXG5cclxuLy8gQ3VzdG9tIHZhcmlhYmxlc1xyXG4kbmhzLWJsdWU6ICMwMDVFQjg7XHJcbiRuaHMtZGFyay1ibHVlOiAjMDA0NDg1O1xyXG4kbmhzLWdyZXk6ICM3Njg2OTI7XHJcbiRuaHMtZmFkZWQtYmx1ZTogI0YyRjdGQjtcclxuJGFjdGl2ZS1hZG1pbi15ZWxsb3c6ICNGREJDMzA7XHJcbiRhY3RpdmUtYWRtaW4tZGFya3llbGxvdzogI0U1OTkwMDtcclxuIFxyXG4vLyBCb290c3RyYXAgdmFyaWFibGVzXHJcbiR0ZXh0LWNvbG9yOiBibGFjaztcclxuJGJvcmRlci1yYWRpdXMtYmFzZTogMDtcclxuJGJvcmRlci1yYWRpdXMtc21hbGw6IDA7XHJcbiRicmFuZC1wcmltYXJ5OiAkbmhzLWJsdWU7XHJcbiRicmFuZC1zdWNjZXNzOiBncmVlbjtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuJGZvbnQtc2l6ZS1oNDogMTdweDtcclxuJG5hdmJhci1tYXJnaW4tYm90dG9tOiAwO1xyXG4kbmF2YmFyLWhlaWdodDogNjBweDtcclxuJG5hdmJhci1kZWZhdWx0LWxpbmstY29sb3I6IGJsYWNrO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1ob3Zlci1jb2xvcjogJG5ocy1ibHVlO1xyXG4kbmF2YmFyLWRlZmF1bHQtbGluay1hY3RpdmUtY29sb3I6ICRuaHMtYmx1ZTtcclxuJG5hdmJhci1kZWZhdWx0LWJnOiB3aGl0ZTtcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ib3JkZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2YmFyLWRlZmF1bHQtdG9nZ2xlLWljb24tYmFyLWJnOiBibGFjaztcclxuJG5hdmJhci1kZWZhdWx0LXRvZ2dsZS1ob3Zlci1iZzogd2hpdGU7XHJcblxyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJnOiAkbmhzLWJsdWU7XHJcbiRuYXYtcGlsbHMtYWN0aXZlLWxpbmstaG92ZXItY29sb3I6IHdoaXRlO1xyXG4kbmF2LXBpbGxzLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiRuYXYtcGlsbHMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4kbmF2LXBpbGxzLWFjdGl2ZS1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiR0YWJsZS1iZy1ob3ZlcjogJG5ocy1mYWRlZC1ibHVlO1xyXG4kaGVhZGluZ3Mtc21hbGwtY29sb3I6ICRuaHMtZ3JleTsiLCIjc2VsZWN0b3JCYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA1RUI4O1xuICBtYXJnaW4tdG9wOiAtMmVtOyB9XG5cbiNzZWxlY3RvckJhciAuYnRuLWJhY2sge1xuICBjb2xvcjogd2hpdGU7XG4gIGZvbnQtc2l6ZTogMTdweDtcbiAgbGluZS1oZWlnaHQ6IDIuNWVtOyB9XG5cbiNzZWxlY3RvckJhciAuYnRuLWJhY2sgLmZhIHtcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7IH1cblxuI3NlbGVjdG9yQmFyIC5idG4tYmFjazpob3ZlciB7XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuXG4jc2VsZWN0b3JCYXIgLmZvcm0tZ3JvdXAge1xuICBwYWRkaW5nOiA1cHggMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDQ4NTsgfVxuXG4jc2VsZWN0b3JCYXIgLmZvcm0tY29udHJvbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDQ0ODU7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyOiBub25lO1xuICBoZWlnaHQ6IGF1dG87XG4gIGJveC1zaGFkb3c6IG5vbmU7IH1cblxuI3NlbGVjdG9yQmFyIC5mb3JtLWNvbnRyb2w6Zm9jdXMge1xuICBvdXRsaW5lOiBub25lO1xuICBib3gtc2hhZG93OiBub25lOyB9XG5cbiNjb250YWluZXJQcm9maWxlIHtcbiAgcGFkZGluZy1ib3R0b206IDZlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMzsgfVxuXG4jY29udGFpbmVyUHJvZmlsZSAuZm9ybS1jb250cm9sIHtcbiAgZm9udC1zaXplOiAxN3B4O1xuICBib3JkZXItcmFkaXVzOiA1cHg7IH1cblxuI2NvbnRhaW5lclByb2ZpbGUgaDQge1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXNpemU6IDEuMjVlbTtcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICBjb2xvcjogIzc2ODY5MjsgfVxuXG4jcm9sZXMgaHIge1xuICBwYWRkaW5nLWJvdHRvbTogMC4xNWVtO1xuICBtYXJnaW4tdG9wOiAwLjVlbTsgfVxuXG4ucm9sZS10aXRsZSB7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7IH1cblxuI2NvbnRhaW5lclByb2ZpbGUgLmZvcm0tZ3JvdXAgLmNvbnRyb2wtbGFiZWwge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBmb250LXNpemU6IDE3cHg7IH1cblxuLnVzZXIge1xuICBwYWRkaW5nLXRvcDogMS41ZW07XG4gIHBhZGRpbmctYm90dG9tOiAwLjVlbTsgfVxuXG4udXNlcjpudGgtY2hpbGQob2RkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMmY3ZmI7IH1cblxuLnN0aWNreUNhcmQge1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDIwcHg7XG4gIG1hcmdpbi10b3A6IC0yMHB4OyB9XG5cbi5sb2ctb3V0OmhvdmVyIHtcbiAgY29sb3I6ICMwMDVFQjg7XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuXG4jY29udGFpbmVyUHJvZmlsZSBidXR0b24gc3BhbiB7XG4gIG9wYWNpdHk6IDA7XG4gIG1hcmdpbi1sZWZ0OiAtMThweDsgfVxuXG4jY29udGFpbmVyUHJvZmlsZSBidXR0b24uaXMtbG9hZGluZyBzcGFuIHtcbiAgb3BhY2l0eTogMTtcbiAgbWFyZ2luLWxlZnQ6IDVweDsgfVxuXG4jY29udGFpbmVyUHJvZmlsZSB1bCB7XG4gIHBhZGRpbmctbGVmdDogMS4xZW07IH1cblxuLmV4cGxhaW5lciB7XG4gIG1hcmdpbi1yaWdodDogMWVtOyB9XG5cbi5oZWxwLWJsb2NrIHtcbiAgbWFyZ2luLXRvcDogMC41ZW07XG4gIGNvbG9yOiAjNzY4NjkyOyB9XG5cbi5hbGVydC1pbmZvIHtcbiAgbWFyZ2luLXRvcDogMWVtO1xuICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbmgxIHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbWFyZ2luLXRvcDogMWVtOyB9XG5cbi52aWV3LWNhcmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgcGFkZGluZy1ib3R0b206IDJlbTtcbiAgcGFkZGluZy1sZWZ0OiAyZW07XG4gIHBhZGRpbmctcmlnaHQ6IDJlbTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cblxuLnByb2plY3RzLWxvYWRpbmcge1xuICBjb2xvcjogIzAwNUVCODtcbiAgZm9udC1zaXplOiAxLjVlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbWFyZ2luLXRvcDogMmVtOyB9XG5cbi5wcm9qZWN0LWxvYWRpbmctc3Bpbm5lciB7XG4gIGZvbnQtc2l6ZTogMi41ZW07XG4gIGNvbG9yOiAjMDA1RUI4O1xuICBtYXJnaW46IDFlbSAwOyB9XG5cbi5jb250YWluZXIge1xuICBwYWRkaW5nOiAycmVtIDByZW07IH1cblxuaDQge1xuICBtYXJnaW46IDJyZW0gMHJlbSAxcmVtOyB9XG5cbi50YWJsZS1pbWFnZSB0ZCwgLnRhYmxlLWltYWdlIHRoIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG5bdHlwZT1cImNoZWNrYm94XCJdOm5vdCg6Y2hlY2tlZCksXG5bdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG9wYWNpdHk6IDAuMDE7IH1cblxuW3R5cGU9XCJjaGVja2JveFwiXTpub3QoOmNoZWNrZWQpICsgbGFiZWwsXG5bdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQgKyBsYWJlbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1sZWZ0OiA0LjVlbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBtYXJnaW4tdG9wOiAycHg7IH1cblxuW3R5cGU9XCJjaGVja2JveFwiXTpub3QoOmNoZWNrZWQpICsgbGFiZWw6YmVmb3JlLFxuW3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkICsgbGFiZWw6YmVmb3JlLFxuW3R5cGU9XCJjaGVja2JveFwiXTpub3QoOmNoZWNrZWQpICsgbGFiZWw6YWZ0ZXIsXG5bdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQgKyBsYWJlbDphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7IH1cblxuW3R5cGU9XCJjaGVja2JveFwiXTpub3QoOmNoZWNrZWQpICsgbGFiZWw6YmVmb3JlLFxuW3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcbiAgbGVmdDogMDtcbiAgdG9wOiAtLjFlbTtcbiAgd2lkdGg6IDMuNWVtO1xuICBoZWlnaHQ6IDEuODVlbTtcbiAgYmFja2dyb3VuZDogI0RERERERDtcbiAgYm9yZGVyLXJhZGl1czogMWVtO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4yczsgfVxuXG5bdHlwZT1cImNoZWNrYm94XCJdOm5vdCg6Y2hlY2tlZCkgKyBsYWJlbDphZnRlcixcblt0eXBlPVwiY2hlY2tib3hcIl06Y2hlY2tlZCArIGxhYmVsOmFmdGVyIHtcbiAgd2lkdGg6IDEuNGVtO1xuICBoZWlnaHQ6IDEuNGVtO1xuICB0cmFuc2l0aW9uOiBhbGwgLjJzO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICB0b3A6IC4xMmVtO1xuICBsZWZ0OiAuMjRlbTsgfVxuXG4udGV4dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG4vKiBvbiBjaGVja2VkICovXG5bdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQgKyBsYWJlbDpiZWZvcmUge1xuICBiYWNrZ3JvdW5kOiBncmVlbjsgfVxuXG5bdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQgKyBsYWJlbDphZnRlciB7XG4gIGxlZnQ6IDEuOWVtOyB9XG5cblt0eXBlPVwiY2hlY2tib3hcIl06Y2hlY2tlZCArIGxhYmVsIC51aSxcblt0eXBlPVwiY2hlY2tib3hcIl06bm90KDpjaGVja2VkKSArIGxhYmVsIC51aTpiZWZvcmUsXG5bdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQgKyBsYWJlbCAudWk6YWZ0ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IC42ZW07XG4gIHdpZHRoOiA2ZW07XG4gIGJvcmRlci1yYWRpdXM6IDFlbTtcbiAgZm9udC1zaXplOiAuODc1ZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXNpemU6IDFlbTtcbiAgdHJhbnNpdGlvbjogYWxsIC4yczsgfVxuXG5bdHlwZT1cImNoZWNrYm94XCJdOm5vdCg6Y2hlY2tlZCkgKyBsYWJlbCAudWk6YmVmb3JlIHtcbiAgbGVmdDogMmVtO1xuICB0b3A6IC4yZW07IH1cblxuW3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkICsgbGFiZWwgLnVpOmFmdGVyIHtcbiAgZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSBQcm8nO1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb250ZW50OiBcIlxcZjAwY1wiO1xuICB0b3A6IC4yZW07XG4gIGxlZnQ6IDBlbTtcbiAgY29sb3I6IHdoaXRlOyB9XG5cblt0eXBlPVwiY2hlY2tib3hcIl06Zm9jdXMgKyBsYWJlbDpiZWZvcmUge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG5cbmZvcm0gcCB7XG4gIG1hcmdpbjogMS41ZW0gYXV0bzsgfVxuXG4uZmEtY2hlY2stY2lyY2xlIHtcbiAgY29sb3I6IGdyZWVuOyB9XG5cbi5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgfVxuXG4ucHJvZ3Jlc3Mge1xuICBib3JkZXItcmFkaXVzOiA1cHg7IH1cbiJdfQ== */\"","import { Component, OnInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators, FormArray, FormControl, ValidatorFn } from '@angular/forms';\r\nimport { Title, Meta } from '@angular/platform-browser';\r\nimport { Router } from '@angular/router';\r\nimport { Angular2PromiseButtonModule } from 'angular2-promise-buttons';\r\nimport { User } from 'app/utilities/classes/user/user';\r\nimport { AuthService } from 'app/utilities/services/auth.service';\r\nimport { DataService } from 'app/utilities/services/data.service';\r\nimport { HtmlService } from 'app/utilities/services/html.service';\r\nimport { MemberService } from 'app/utilities/services/member.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: \"app-user-check\",\r\n templateUrl: \"./user-check.component.html\",\r\n styleUrls: [\"./user-check.component.scss\"],\r\n})\r\nexport class UserCheckComponent implements OnInit {\r\n public user: User;\r\n public countdown: any;\r\n public form: FormGroup;\r\n public updatedUser: any;\r\n public roles: FormGroup;\r\n public seconds: number = 3;\r\n public myProfile: FormGroup;\r\n public allOrganisations = [];\r\n public organisationsData = [];\r\n public progressBarWidth: number = 0;\r\n public selectedorganisationIds = {};\r\n public progressBarWidthProfile: number;\r\n public organisationsSelected: boolean = false;\r\n public metaTitle: string = \"UserCheck | NHS Benchmarking Network\";\r\n newsletterUpdates: string;\r\n notificationUpdates: string;\r\n \r\n constructor(\r\n private meta: Meta,\r\n private router: Router,\r\n private fb: FormBuilder,\r\n public auth: AuthService,\r\n private titleService: Title,\r\n private toastr: ToastrService,\r\n private dataService: DataService,\r\n private htmlService: HtmlService,\r\n private formBuilder: FormBuilder,\r\n private authService: AuthService,\r\n private memberService: MemberService,\r\n private profileSpinner: Angular2PromiseButtonModule,\r\n public passwordSpinner: Angular2PromiseButtonModule\r\n ) {\r\n this.myProfile = fb.group({\r\n logonName: [{ value: null, disabled: true }],\r\n fullName: [null, [Validators.required, Validators.maxLength(60)]],\r\n jobTitle: [null, [Validators.required, Validators.maxLength(60)]],\r\n phoneNo: [null, [Validators.required, Validators.maxLength(40)]],\r\n mailchimpOptIn: [null, [Validators.maxLength(1)]],\r\n notificationOptIn: [null, [Validators.maxLength(1)]],\r\n });\r\n\r\n this.myProfile.valueChanges.subscribe((data) => this.onValueChanged(data));\r\n\r\n this.onValueChanged();\r\n this.form = this.formBuilder.group({\r\n organisations: new FormArray([], this.minSelectedCheckboxes(1)),\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n // if (this.authService.authenticated()) {\r\n // this.router.navigate(['/']);\r\n // }\r\n this.titleService.setTitle(this.metaTitle);\r\n this.meta.updateTag({ property: \"og:title\", content: this.metaTitle });\r\n this.meta.updateTag({ name: \"twitter:title\", content: this.metaTitle });\r\n this.getUserDetails();\r\n }\r\n\r\n // Confirm Organisation\r\n private addCheckboxes() {\r\n for (let key in this.organisationsData) {\r\n let child = this.organisationsData[key];\r\n this.allOrganisations.push(child[0]);\r\n this.organisationsFormArray.push(new FormControl(false));\r\n }\r\n }\r\n\r\n get organisationsFormArray() {\r\n return this.form.controls.organisations as FormArray;\r\n }\r\n\r\n minSelectedCheckboxes(min = 1) {\r\n const validator: ValidatorFn = (formArray: FormArray) => {\r\n const totalSelected = formArray.controls\r\n .map((control) => control.value)\r\n .reduce((prev, next) => (next ? prev + next : prev), 0);\r\n\r\n return totalSelected >= min ? null : { required: true };\r\n };\r\n\r\n return validator;\r\n }\r\n\r\n submitOrganisation() {\r\n this.progressBarWidth += 50;\r\n this.organisationsSelected = true;\r\n this.selectedorganisationIds[\"OrganisationId\"] =\r\n this.form.value.organisations.map((checked, i) =>\r\n checked ? null : this.allOrganisations[i].organisationId).filter((v) => v !== null);\r\n }\r\n\r\n // My Details\r\n getUserDetails() {\r\n this.memberService.User().subscribe((u) => {\r\n (this.user = u.data),\r\n this.dataService.setUser(u.data),\r\n this.myProfile.get(\"logonName\").setValue(this.user.logonName),\r\n this.myProfile.get(\"fullName\").setValue(this.user.fullName),\r\n this.myProfile.get(\"jobTitle\").setValue(this.user.jobTitle),\r\n this.myProfile.get(\"phoneNo\").setValue(this.user.phoneNo),\r\n this.myProfile.get(\"mailchimpOptIn\").setValue(this.user.mailchimpOptIn),\r\n this.myProfile.get(\"notificationOptIn\").setValue(this.user.notificationOptIn);\r\n this.organisationsData = this.user.roles;\r\n this.addCheckboxes();\r\n this.newsletterUpdates = null\r\n this.notificationUpdates = this.user.notificationOptIn\r\n },\r\n (e) => {\r\n this.router.navigate([\"/landing\"]);\r\n console.log(e);\r\n });\r\n }\r\n\r\n updateUser() {\r\n this.progressBarWidthProfile = 50;\r\n let payload = this.myProfile;\r\n let user = {};\r\n\r\n Object.keys(payload.controls).forEach((key) => {\r\n if (payload.controls[key].dirty) {\r\n user[key] = payload.controls[key].value;\r\n }\r\n });\r\n\r\n // console.log(user['userDetailsLastReviewed'] = \"2021-10-24T00:00:00.000Z\")\r\n this.updatedUser = user;\r\n if(Object.keys(this.updatedUser).length === 0) {\r\n user['logonName'] = this.user.logonName\r\n }\r\n\r\n this.profileSpinner = new Promise((resolve, reject) => {\r\n setTimeout(resolve, 3000);\r\n });\r\n\r\n }\r\n\r\n onValueChanged(data?: any) {\r\n this.progressBarWidthProfile = 0;\r\n if (!this.myProfile) {\r\n return;\r\n }\r\n const form = this.myProfile;\r\n\r\n for (const field in this.formErrors) {\r\n // clear previous error message (if any)\r\n this.formErrors[field] = \"\";\r\n const control = form.get(field);\r\n\r\n if (control && control.dirty && !control.valid) {\r\n const messages = this.validationMessages[field];\r\n\r\n for (const key in control.errors) {\r\n this.formErrors[field] += messages[key] + \" \";\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Submit & Log Out\r\n submitAll() {\r\n this.countdown = setInterval(() => {\r\n this.updateSec();\r\n }, 1000);\r\n }\r\n\r\n updateSec() {\r\n this.seconds--;\r\n if (this.seconds == 0) {\r\n clearInterval(this.countdown);\r\n this.memberService.UserRolesDisabled(this.selectedorganisationIds[\"OrganisationId\"]).subscribe(\r\n (u) => {\r\n this.updateUserDetails(this.updatedUser);\r\n },\r\n (e) => {\r\n console.log(e);\r\n }\r\n );\r\n }\r\n }\r\n\r\n updateUserDetails(user?: Object) {\r\n this.memberService.UserUpdate(user).subscribe(\r\n (r) => {\r\n // On success, update sessionStorage user\r\n let storedUser = JSON.parse(sessionStorage.getItem(\"user\"));\r\n Object.keys(user).forEach((key) => {\r\n storedUser[key] = user[key];\r\n });\r\n sessionStorage.setItem(\"user\", JSON.stringify(storedUser));\r\n this.redirect();\r\n },\r\n (e) => {\r\n this.toastr.error(\r\n \"There was an error whilst trying to update your profile details. Please try again.\"\r\n );\r\n }\r\n );\r\n }\r\n\r\n redirect() {\r\n this.memberService.RegenerateToken().subscribe(\r\n (u) => {\r\n if(Object.keys(this.organisationsData).length == this.selectedorganisationIds[\"OrganisationId\"].length){\r\n this.logout();\r\n } else {\r\n this.router.navigate([\"/\"]);\r\n }\r\n },\r\n (e) => {\r\n console.log(e);\r\n }\r\n );\r\n }\r\n\r\n logout() {\r\n localStorage.removeItem(\"id_token\");\r\n sessionStorage.removeItem(\"savedTiers\");\r\n sessionStorage.removeItem(\"user\");\r\n sessionStorage.removeItem(\"notifications\");\r\n this.router.navigate([\"/landing\"]);\r\n }\r\n\r\n formErrors = {\r\n fullName: \"\",\r\n jobTitle: \"\",\r\n phoneNo: \"\",\r\n password: \"\",\r\n confirmPassword: \"\",\r\n };\r\n\r\n validationMessages = {\r\n fullName: {\r\n required: \"Full name is required.\",\r\n maxlength: \"Full name cannot be longer than 60 characters.\",\r\n },\r\n jobTitle: {\r\n required: \"Job title is required.\",\r\n maxlength: \"Job title cannot be longer than 60 characters.\",\r\n },\r\n phoneNo: {\r\n required: \"Phone number is required.\",\r\n maxlength: \"Phone number cannot be longer than 40 characters.\",\r\n },\r\n password: {\r\n required: \"This field is required to change your password.\",\r\n minlength: \"Password must be a minimum of 8 characters in length.\",\r\n forbiddenName: \"New password cannot include the pound symbol (£).\",\r\n },\r\n confirmPassword: {\r\n required:\r\n \"This field is required to change your password and must match New Password above.\",\r\n },\r\n };\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { ResponsiveModule } from \"ngx-responsive\";\r\nimport { AccordionModule, TabsModule } from \"ngx-bootstrap\";\r\n\r\n\r\nimport { AuthService } from \"../utilities/services/auth.service\";\r\nimport { AuthGuardService } from \"../utilities/services/auth-guard.service\";\r\nimport { UserCheckComponent } from \"./user-check.component\";\r\nimport { UserCheckRoutingModule } from \"./user-check-routing.module\";\r\nimport { ReactiveFormsModule, FormsModule } from \"@angular/forms\";\r\nimport { Angular2PromiseButtonModule } from \"angular2-promise-buttons\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n TabsModule.forRoot(),\r\n Angular2PromiseButtonModule.forRoot({\r\n spinnerTpl: '',\r\n disableBtn: true,\r\n btnLoadingClass: \"is-loading\",\r\n handleCurrentBtnOnly: false,\r\n }), \r\n ResponsiveModule,\r\n UserCheckRoutingModule,\r\n AccordionModule.forRoot(),\r\n ],\r\n declarations: [UserCheckComponent],\r\n providers: [AuthService, AuthGuardService],\r\n})\r\nexport class UserCheckModule {}\r\n","export class CsvDownload {\r\n constructor (\r\n public fileName: string,\r\n public headers: Array,\r\n public keys: Array,\r\n public styling: boolean,\r\n public buttonText?: string,\r\n public buttonStyle?: string,\r\n public icon?: string,\r\n ) {}\r\n}","export class DynamicInfoPanel {\r\n public info: boolean;\r\n public reportId: number;\r\n public reportName: string;\r\n public organisationType: string;\r\n public factor: number;\r\n public options: any;\r\n public mapUrl: any;\r\n public noResults: any;\r\n public noMapAreas: any;\r\n public components: any;\r\n public componentDescriptions: string;\r\n public admin: boolean;\r\n public tags: string[];\r\n\r\n constructor (data: any) {\r\n this.mapInfoPanel(data);\r\n }\r\n\r\n private mapInfoPanel(data: any): void {\r\n this.componentDescriptions = data.componentDescriptions || null;\r\n this.factor = data.factor;\r\n this.reportId = data.reportId;\r\n this.reportName = data.reportName;\r\n this.components = data.components;\r\n this.admin = data.admin || null;\r\n this.info = data.info || null;\r\n this.mapUrl = data.mapUrl || null;\r\n this.options = data.options || null;\r\n this.noResults = data.noResult || null;\r\n this.noMapAreas = data.noMapAreas || null;\r\n this.organisationType = data.organisationType || null;\r\n this.tags = data.tags || [];\r\n }\r\n}","export class Event {\r\n constructor (\r\n public eventId: number,\r\n public eventName: string,\r\n public eventLocation: string,\r\n public eventDt: Date,\r\n public eventEndDt: Date,\r\n public projectCategory: number,\r\n public projectCategoryName: string,\r\n public placesPerOrganisation: number,\r\n public maxCapacity: number,\r\n public eventDescription: string,\r\n public cubeFile: string,\r\n public registrationLink: string,\r\n public registrationEnabled: string,\r\n public isVisible: string,\r\n public isOnline: string,\r\n public when: string,\r\n public documentCount: number,\r\n public requestTags: string,\r\n public regionName: string,\r\n public regionId: number,\r\n public meetingId: string,\r\n public meetingPasscode: string,\r\n public meetingUrl: string\r\n ) {}\r\n}\r\n","export interface IProduct {\r\n productId: number;\r\n productName: string;\r\n}\r\n\r\nexport class Products {\r\n public latitude: number;\r\n public longitude: string;\r\n public organisationId: number;\r\n public organisationName: string;\r\n public organisationTypeId: number;\r\n public organisationTypeName: string;\r\n public products: IProduct;\r\n public sectorDisplayName: string;\r\n public sectorId: number;\r\n public sectorName: string;\r\n\r\n constructor(products: Products) {\r\n this.mapProduct(products);\r\n }\r\n\r\n private mapProducts(products) {\r\n products.forEach((product: IProduct) => {\r\n switch (product.productId) {\r\n case 1:\r\n product.productName = \"Member Programme Projects\";\r\n break;\r\n case 2:\r\n product.productName = \"National Audit of Intermediate Care\";\r\n break;\r\n case 3:\r\n product.productName = \"Patients Association Complainants Survey\";\r\n break;\r\n case 4:\r\n product.productName = \"Community Hospitals Research\";\r\n break;\r\n case 5:\r\n product.productName = \"National Audit for Care at the End of Life\";\r\n break;\r\n case 6:\r\n product.productName = \"NHSI - Learning Disabilities\";\r\n break;\r\n case 7:\r\n product.productName = \"Community Services Covid-19 Dashboard\";\r\n break;\r\n case 8:\r\n product.productName = \"CVDprevent\";\r\n break;\r\n case 9:\r\n product.productName = \"Same Day Emergency Care\";\r\n break;\r\n case 12:\r\n product.productName = \"South East Mental Health Dashboard\";\r\n break;\r\n case 13:\r\n product.productName = \"Workforce Programme\";\r\n break;\r\n case 14:\r\n product.productName = \"Bespoke Mental Health\";\r\n break;\r\n }\r\n });\r\n\r\n return products;\r\n }\r\n\r\n private mapProduct(products: Products): void {\r\n this.latitude = products.latitude;\r\n this.longitude = products.longitude;\r\n this.organisationId = products.organisationId;\r\n this.organisationName = products.organisationName;\r\n this.organisationTypeId = products.organisationTypeId;\r\n this.organisationTypeName = products.organisationTypeName;\r\n this.products = this.mapProducts(products.products);\r\n this.sectorDisplayName = products.sectorDisplayName;\r\n this.sectorId = products.sectorId;\r\n this.sectorName = products.sectorName;\r\n }\r\n}","export class QuestionBase{\r\n questionId: number;\r\n questionText: string;\r\n rawQuestionText: string;\r\n questionHelp: string;\r\n questionType: string;\r\n questionResponseType: string;\r\n questionHeading: Array<{ headingId: number, headingGroupName: string, questionPart: number, headingText: string, headingHelp: string }>;\r\n displaySequence: number;\r\n formatModifier: string;\r\n rangeMin: number;\r\n rangeMax: number;\r\n decimalPlaces: number;\r\n showHeadings: string;\r\n noColumns: number;\r\n totalResponses: number;\r\n options: any; \r\n popupQuestions: Array<{ \r\n displaySequence: number, \r\n questionId: number, \r\n questionText: string,\r\n rawQuestionText: string;\r\n questionHelp: string, \r\n questionType: string, \r\n decimalPlaces: number, \r\n questionPart: number,\r\n formatModifier: string, \r\n headings: Array,\r\n isAutoSum: string,\r\n itemGroup: number,\r\n noColumns: number,\r\n options: Array,\r\n rangeMin: number,\r\n rangeMax: number,\r\n showHeadings: string,\r\n parentQuestionId: number,\r\n parentQuestionText: string,\r\n parentQuestionHelp: string,\r\n dataDefinition: string\r\n }>;\r\n popupDescriptionText: string;\r\n conditionQuestions: Array<{ conditionMin: number, conditionMax: number, conditionType: number, conditionQuestionId: number, conditionQuestionValue, parentConditionMin: number, parentConditionMax: number }>;\r\n isParent: boolean;\r\n modifierType: string;\r\n questionPrefix: string;\r\n parentQuestionId: number;\r\n parentQuestionText: string;\r\n parentQuestionHelp: string;\r\n dataDefinition: string;\r\n responses: Array<{ \r\n uniqueId: string, \r\n questionPart: number, \r\n value: T, \r\n questionType: string, \r\n popupItemQuestionPart: number,\r\n updatedBy: number,\r\n createdBy: number\r\n }>;\r\n\r\n constructor(options: {\r\n questionId?: number,\r\n questionText?: string,\r\n rawQuestionText?: string;\r\n questionHelp?: string,\r\n questionType?: string,\r\n questionResponseType?: string;\r\n questionHeading?: Array<{ headingId: number, headingGroupName: string, questionPart: number, headingText: string, headingHelp: string }>,\r\n displaySequence?: number,\r\n formatModifier?: string,\r\n rangeMin?: number,\r\n rangeMax?: number,\r\n decimalPlaces?: number,\r\n showHeadings?: string,\r\n noColumns?: number,\r\n totalResponses?: number,\r\n options?: any,\r\n popupQuestions?: Array<{ \r\n displaySequence: number, \r\n questionId: number, \r\n questionText: string,\r\n rawQuestionText: string;\r\n questionHelp: string, \r\n questionType: string, \r\n decimalPlaces: number, \r\n questionPart: number,\r\n formatModifier: string, \r\n headings: Array,\r\n isAutoSum: string,\r\n itemGroup: number,\r\n noColumns: number,\r\n options: Array,\r\n rangeMin: number,\r\n rangeMax: number,\r\n showHeadings: string\r\n parentQuestionId: number,\r\n parentQuestionText: string,\r\n parentQuestionHelp: string,\r\n dataDefinition: string\r\n }>,\r\n popupDescriptionText?: string,\r\n conditionQuestions?: Array<{ conditionMin: number, conditionMax: number, conditionType: number, conditionQuestionId: number, conditionQuestionValue: number, parentConditionMin: number, parentConditionMax: number }>;\r\n isParent?: boolean,\r\n modifierType?: string,\r\n questionPrefix?: string;\r\n parentQuestionId?: number;\r\n parentQuestionText?: string;\r\n parentQuestionHelp?: string;\r\n dataDefinition?: string;\r\n responses?: Array<{ \r\n uniqueId: string, \r\n questionPart: number, \r\n value: T, \r\n questionType: string, \r\n popupItemQuestionPart: number,\r\n updatedBy: number,\r\n createdBy: number\r\n }>\r\n } = {}) {\r\n this.questionId = options.questionId;\r\n this.questionText = options.questionText;\r\n this.rawQuestionText = options.rawQuestionText;\r\n this.questionHelp = options.questionHelp || '';\r\n this.questionType = options.questionType;\r\n this.questionResponseType = options.questionResponseType || null;\r\n this.questionHeading = options.questionHeading || [];\r\n this.displaySequence = options.displaySequence === undefined ? 1 : options.displaySequence;\r\n this.formatModifier = options.formatModifier || '';\r\n this.rangeMin = options.rangeMin;\r\n this.rangeMax = options.rangeMax;\r\n this.decimalPlaces = options.decimalPlaces;\r\n this.showHeadings = options.showHeadings || 'N';\r\n this.noColumns = options.noColumns || 0;\r\n this.totalResponses = options.totalResponses || 0;\r\n this.options = options.options || [];\r\n this.popupQuestions = options.popupQuestions;\r\n this.popupDescriptionText = options.popupDescriptionText || '';\r\n this.conditionQuestions = options.conditionQuestions;\r\n this.isParent = options.isParent;\r\n this.modifierType = options.modifierType;\r\n this.questionPrefix = options.questionPrefix;\r\n this.responses = options.responses;\r\n this.parentQuestionId = options.parentQuestionId;\r\n this.parentQuestionText = options.parentQuestionText;\r\n this.parentQuestionHelp = options.parentQuestionHelp;\r\n this.dataDefinition = options.dataDefinition;\r\n }\r\n}","import { QuestionBase } from './question-base';\r\n\r\nexport class DateQuestion extends QuestionBase {\r\n type: string;\r\n\r\n constructor(options: {} = {}) {\r\n super(options);\r\n this.type = 'date';\r\n }\r\n}","import { QuestionBase } from './question-base';\r\n\r\nexport class DropdownQuestion extends QuestionBase {\r\n options: [{ optionId: number, optionName: string, displaySequence: number }];\r\n\r\n constructor(options: {} = {}) {\r\n super(options);\r\n this.options = options['options'] || [];\r\n }\r\n}","import { QuestionBase } from './question-base';\r\n\r\nexport class NarrativeQuestion extends QuestionBase {\r\n type: string;\r\n\r\n constructor(options: {} = {}) {\r\n super(options);\r\n }\r\n}","import { QuestionBase } from './question-base';\r\n\r\nexport class NumberQuestion extends QuestionBase {\r\n type: string;\r\n\r\n constructor(options: {} = {}) {\r\n super(options);\r\n this.type = 'number';\r\n }\r\n}","import { QuestionBase } from './question-base';\r\n\r\nexport class PopupQuestion extends QuestionBase {\r\n popupQuestions: { \r\n displaySequence: number, \r\n questionId: number, \r\n questionText: string, \r\n rawQuestionText: string, \r\n questionHelp: string, \r\n questionType: string, \r\n decimalPlaces: number, \r\n questionPart: number,\r\n formatModifier: string, \r\n headings: Array,\r\n isAutoSum: string,\r\n itemGroup: number,\r\n noColumns: number,\r\n options: Array,\r\n rangeMin: number,\r\n rangeMax: number,\r\n showHeadings: string,\r\n parentQuestionId: number,\r\n parentQuestionText: string,\r\n parentQuestionHelp: string,\r\n dataDefinition: string\r\n }[] = [];\r\n\r\n constructor(popupQuestions: {} = {}) {\r\n super(popupQuestions);\r\n this.popupQuestions = popupQuestions['popupQuestions'] || [];\r\n }\r\n}","import { QuestionBase } from './question-base';\r\n\r\nexport class RadioQuestion extends QuestionBase {\r\n options: [{ optionId: number, optionName: string }];\r\n\r\n constructor(options: {} = {}) {\r\n super(options);\r\n this.options = options['options'] || [];\r\n }\r\n}","import { QuestionBase } from './question-base';\r\n\r\nexport class TextboxQuestion extends QuestionBase {\r\n type: string;\r\n\r\n constructor(options: {} = {}) {\r\n super(options);\r\n this.type = 'text';\r\n }\r\n}","import { QuestionBase } from './question-base';\r\n\r\nexport class TimeQuestion extends QuestionBase {\r\n type: string;\r\n\r\n constructor(options: {} = {}) {\r\n super(options);\r\n this.type = 'time';\r\n }\r\n}","import { UserRole } from './user-role'\r\n\r\nexport class User {\r\n constructor (\r\n public userId: number,\r\n public logonName: string,\r\n public fullName: string,\r\n public jobTitle: string,\r\n public phoneNo: string,\r\n public lastLogon: Date,\r\n public roles: UserRole[],\r\n public welcomeDialogDismissed: string,\r\n public mailchimpOptIn: string,\r\n public notificationOptIn: string\r\n ) {}\r\n}","export class Constants {\r\n \r\n public static readonly currentYear = new Date().getFullYear();\r\n public static readonly currentYearShort: number = +Constants.currentYear.toString().slice(-2);\r\n\r\n public static readonly placeholders = [\r\n { id: 'dym2', name: 'DOUBLE_YEAR_MINUS_2', example: (Constants.currentYear - 2) + '/' + (Constants.currentYearShort - 1) },\r\n { id: 'dym3', name: 'DOUBLE_YEAR_MINUS_3', example: (Constants.currentYear - 3) + '/' + (Constants.currentYearShort - 2) },\r\n { id: 'dyp', name: 'DOUBLE_YEAR_PREVIOUS', example: (Constants.currentYear - 1) + '/' + (Constants.currentYearShort) },\r\n { id: 'dyc', name: 'DOUBLE_YEAR_CURRENT', example: Constants.currentYear + '/' + (Constants.currentYearShort + 1) },\r\n { id: 'dyn', name: 'DOUBLE_YEAR_NEXT', example: (Constants.currentYear + 1) + '/' + (Constants.currentYearShort + 2) },\r\n { id: 'sym3', name: 'SINGLE_YEAR_MINUS_3', example: Constants.currentYear - 3 },\r\n { id: 'sym2', name: 'SINGLE_YEAR_MINUS_2', example: Constants.currentYear - 2 },\r\n { id: 'symp', name: 'SINGLE_YEAR_PREVIOUS', example: Constants.currentYear - 1 },\r\n { id: 'symc', name: 'SINGLE_YEAR_CURRENT', example: Constants.currentYear },\r\n { id: 'symn', name: 'SINGLE_YEAR_NEXT', example: Constants.currentYear + 1 },\r\n ];\r\n\r\n public static readonly products = [\r\n { id: 1, name: 'NHS Benchmarking Network'},\r\n { id: 2, name: 'National Audit of Intermediate Care'},\r\n { id: 3, name: 'Patients Association Complainants Survey'},\r\n { id: 4, name: 'Community Hospitals Research'},\r\n { id: 5, name: 'National Audit for Care at the End of Life'},\r\n { id: 6, name: 'NHSI - Learning Disabilities'},\r\n { id: 7, name: 'Community Services Covid-19 Dashboard'},\r\n { id: 8, name: 'CVDprevent'},\r\n { id: 9, name: 'Same Day Emergency Care'},\r\n { id: 12, name: 'South East Mental Health Dashboard'},\r\n { id: 13, name: 'Workforce Programme'},\r\n { id: 14, name: 'Bespoke Mental Health'},\r\n ];\r\n}","import { Directive, EventEmitter, ElementRef, HostListener, Output } from '@angular/core';\r\n \r\n@Directive({ selector: '[clickElsewhere]' })\r\n\r\nexport class ClickElsewhereDirective {\r\n @Output() clickElsewhere = new EventEmitter(); \r\n \r\n constructor(private elementRef: ElementRef) {}\r\n \r\n @HostListener('document:click', ['$event'])\r\n public onDocumentClick(event: MouseEvent): void {\r\n const targetElement = event.target as HTMLElement;\r\n \r\n // Check if the click was outside the element\r\n if (targetElement && !this.elementRef.nativeElement.contains(targetElement)) {\r\n this.clickElsewhere.emit(event);\r\n }\r\n }\r\n}","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[OnlyNumber]'\r\n})\r\nexport class OnlyNumber {\r\n constructor(private el: ElementRef) { }\r\n\r\n @Input() OnlyNumber: boolean;\r\n\r\n @HostListener('keydown', ['$event']) onKeyDown(event) {\r\n let e = event;\r\n if (this.OnlyNumber) {\r\n if ([46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||\r\n // Allow: Ctrl+A\r\n (e.keyCode === 65 && (e.ctrlKey || e.metaKey)) ||\r\n // Allow: Ctrl+C\r\n (e.keyCode === 67 && (e.ctrlKey || e.metaKey)) ||\r\n // Allow: Ctrl+V\r\n (e.keyCode === 86 && (e.ctrlKey || e.metaKey)) ||\r\n // Allow: Ctrl+X\r\n (e.keyCode === 88 && (e.ctrlKey || e.metaKey)) ||\r\n // Allow: home, end, left, right\r\n (e.keyCode >= 35 && e.keyCode <= 39) ||\r\n // Allow: minus\r\n (e.keyCode === 189 || e.keyCode === 173 || e.keyCode === 109)) {\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n // Ensure that it is a number and stop the keypress\r\n if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { environment } from 'environments/environment';\r\n\r\n@Injectable()\r\nexport class DataService {\r\n private URL: string = environment.icsApiURL;\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) { }\r\n\r\n public getPreferences(): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'preferences', {\r\n headers: new HttpHeaders().set('Authorization', token)\r\n }\r\n );\r\n }\r\n\r\n public getTiers(projectId: number): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'tiers', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: new HttpParams().set('projectId', projectId.toString())\r\n }\r\n );\r\n }\r\n\r\n public getSearchTiers(projectId: number): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'tiers/leaf', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: new HttpParams().set('projectId', projectId.toString())\r\n }\r\n );\r\n }\r\n\r\n public getDetails(reportId: number): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'reports/' + reportId + '/reportDetails', {\r\n headers: new HttpHeaders().set('Authorization', token)\r\n }\r\n );\r\n }\r\n\r\n public getData(reportId: number, categoryIds?, organisationId?, tierId?): Observable {\r\n let token = localStorage.getItem('id_token');\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (organisationId) {\r\n params = params.set('organisationId', organisationId.toString())\r\n }\r\n\r\n if (categoryIds) {\r\n categoryIds.forEach(c => params = params.append('selectedCategory', c.toString()));\r\n }\r\n\r\n // For analytics\r\n if (tierId) {\r\n params = params.append('tierId', tierId.toString());\r\n }\r\n \r\n return this.http.get(\r\n this.URL + 'reports/' + reportId + '/reportDataDatesSpecificOptions', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: params\r\n }\r\n );\r\n }\r\n\r\n public getSeriesData(reportId: number, tierId: number, seriesCategoryTypeID: number, categoryIds?: any): Observable {\r\n let token = localStorage.getItem('id_token');\r\n let params: HttpParams = new HttpParams().set('tierId', tierId.toString()).set('seriesCategoryTypeID', seriesCategoryTypeID.toString())\r\n\r\n\r\n if (categoryIds) {\r\n categoryIds.forEach(c => params = params.append('selectedCategory', c.toString()));\r\n }\r\n \r\n return this.http.get(\r\n this.URL + 'reports/' + reportId + '/seriesData', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: params\r\n }\r\n );\r\n }\r\n\r\n public getRelationships(relationshipType: string): Observable {\r\n let token = localStorage.getItem('id_token');\r\n \r\n return this.http.get(\r\n this.URL + 'organisations/relationshipYearList', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: new HttpParams().set('relationshipType', relationshipType)\r\n }\r\n );\r\n }\r\n\r\n public getNeighbours(organisationId: number): Observable {\r\n let token = localStorage.getItem('id_token');\r\n \r\n return this.http.get(\r\n this.URL + 'organisations/neighbourList', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: new HttpParams().set('organisationId', organisationId.toString())\r\n }\r\n );\r\n }\r\n\r\n public getOrganisations(type?: string): Observable {\r\n let token = localStorage.getItem('id_token');\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (type) {\r\n params = params.append('orgType', type);\r\n }\r\n \r\n return this.http.get(\r\n this.URL + 'organisations/list', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: params\r\n }\r\n );\r\n }\r\n\r\n public setPreference(preference): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.post(\r\n this.URL + 'preferences', JSON.stringify(preference), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public removePreference(preferenceId): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.delete(\r\n this.URL + 'preferences/' + preferenceId, {\r\n headers: new HttpHeaders().set('Authorization', token)\r\n }\r\n );\r\n }\r\n\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { GroupByPipe, OrderByPipe } from 'ngx-pipes';\r\nimport * as moment from 'moment';\r\n\r\n@Injectable()\r\nexport class FormatService {\r\n\r\n constructor(\r\n private group: GroupByPipe,\r\n private order: OrderByPipe\r\n ) { }\r\n\r\n public preferences(preferences: any): Observable {\r\n\r\n // Resolve defaults\r\n ['la', 'ccg', 'ics'].forEach(type => {\r\n if (preferences.hasOwnProperty('default_' + type)) {\r\n preferences['default_' + type] = preferences['default_' + type][0];\r\n }\r\n });\r\n\r\n // Remove unnecessary properties\r\n ['indicators_org', 'welcomeDismissed'].forEach(p => {\r\n if (preferences.hasOwnProperty(p)) {\r\n delete preferences[p];\r\n }\r\n })\r\n\r\n return preferences;\r\n }\r\n\r\n public updatePreferences(preferences: any, organisationType: string, data: any): Observable {\r\n\r\n organisationType = organisationType.toLowerCase();\r\n\r\n // Define default for current data\r\n if (preferences.hasOwnProperty('default_' + organisationType)) {\r\n \r\n let defaultPreference = preferences['default_' + organisationType];\r\n let findOrganisation = data.find(d => d.organisationOnsCode === defaultPreference.preferenceItem);\r\n\r\n if (findOrganisation) {\r\n defaultPreference.organisationId = findOrganisation.organisationId;\r\n defaultPreference.organisationName = findOrganisation.organisationName;\r\n defaultPreference.countryCode = defaultPreference.preferenceItem.substring(0, 1);\r\n defaultPreference.found = true;\r\n // Set the selected default\r\n preferences.selected_default = defaultPreference;\r\n } else {\r\n defaultPreference.organisationId = null;\r\n defaultPreference.organisationName = 'Organisation not in this view.';\r\n defaultPreference.countryCode = null;\r\n defaultPreference.found = false;\r\n // Set the selected default\r\n preferences.selected_default = defaultPreference;\r\n }\r\n\r\n } else {\r\n preferences.selected_default = null;\r\n }\r\n\r\n // Define custom group for current data\r\n if (preferences.hasOwnProperty('custom_group_' + organisationType)) {\r\n preferences.selected_group = preferences['custom_group_' + organisationType];\r\n } else {\r\n preferences.selected_group = null;\r\n }\r\n\r\n return preferences;\r\n }\r\n\r\n public regions(organisations: any, defaultOnsCode: number): Observable {\r\n let regionOrganisations: any = [];\r\n\r\n // Add region or country to organisations\r\n organisations.forEach(o => {\r\n let nhse = o.regionList.find(r => r.regionTypeId === 5);\r\n let lar = o.regionList.find(r => r.regionTypeId === 3);\r\n let country = o.regionList.find(r => r.regionTypeId === 1);\r\n\r\n if (nhse) {\r\n o.regionId = nhse.regionId;\r\n o.regionName = nhse.regionName;\r\n } else if (lar) {\r\n o.regionId = lar.regionId;\r\n o.regionName = lar.regionName;\r\n } else if (country) {\r\n o.regionId = country.regionId;\r\n o.regionName = country.regionName;\r\n }\r\n\r\n });\r\n\r\n // Find default organisation\r\n let organisation = organisations.find(o => o.organisationOnsCode === defaultOnsCode);\r\n \r\n // If there's a default, return organisations in same region\r\n if (organisation) {\r\n organisations.forEach(o => {\r\n if (organisation.regionId === o.regionId) {\r\n regionOrganisations.push(o)\r\n }\r\n })\r\n }\r\n\r\n return regionOrganisations;\r\n }\r\n\r\n public neighbours(neighbours: any): Observable {\r\n let neighbourOrganisations: any = [];\r\n\r\n let years = Object.keys(neighbours);\r\n\r\n if (years.length) {\r\n // TODO: Make this year-specific\r\n // Default to closest, if no match\r\n neighbourOrganisations = neighbours[years[0]];\r\n }\r\n\r\n return neighbourOrganisations;\r\n }\r\n\r\n public tiers(tiers: any): Observable {\r\n let formattedData: any = [];\r\n\r\n tiers.forEach(t1 => {\r\n if (t1.childrenTiers) {\r\n t1.childrenTiers.forEach(t2 => {\r\n formattedData.push({\r\n t1_tierId: t1.tierId,\r\n t1_tierName: t1.tierName,\r\n t2_tierId: t2.tierId,\r\n t2_tierName: t2.tierName,\r\n t2_isVisible: t2.isVisible,\r\n reportId: t2.reportId,\r\n tierTags: t2.tierTags\r\n });\r\n if (t2.childrenTiers) {\r\n t2.childrenTiers.forEach(t3 => {\r\n formattedData.push({\r\n t1_tierId: t1.tierId,\r\n t1_tierName: t1.tierName,\r\n t2_tierId: t2.tierId,\r\n t2_tierName: t2.tierName,\r\n t2_isVisible: t2.isVisible,\r\n t3_tierId: t3.tierId,\r\n t3_tierName: t3.tierName,\r\n t3_isVisible: t3.isVisible,\r\n t3_children: t3.childrenTiers,\r\n reportId: t3.reportId,\r\n tierTags: t3.tierTags\r\n });\r\n if (t3.childrenTiers) {\r\n t3.childrenTiers.forEach(t4 => {\r\n formattedData.push({\r\n t1_tierId: t1.tierId,\r\n t1_tierName: t1.tierName,\r\n t2_tierId: t2.tierId,\r\n t2_tierName: t2.tierName,\r\n t2_isVisible: t2.isVisible,\r\n t3_tierId: t3.tierId,\r\n t3_tierName: t3.tierName,\r\n t3_isVisible: t3.isVisible,\r\n t4_tierId: t4.tierId,\r\n t4_tierName: t4.tierName,\r\n t4_isVisible: t4.isVisible,\r\n t4_children: t4.childrenTiers,\r\n reportId: t4.reportId,\r\n tierTags: t4.tierTags\r\n });\r\n if (t4.childrenTiers) {\r\n t4.childrenTiers.forEach(t5 => {\r\n formattedData.push({\r\n t1_tierId: t1.tierId,\r\n t1_tierName: t1.tierName,\r\n t2_tierId: t2.tierId,\r\n t2_tierName: t2.tierName,\r\n t2_isVisible: t2.isVisible,\r\n t3_tierId: t3.tierId,\r\n t3_tierName: t3.tierName,\r\n t3_isVisible: t3.isVisible,\r\n t4_tierId: t4.tierId,\r\n t4_tierName: t4.tierName,\r\n t4_isVisible: t4.isVisible,\r\n t4_children: t4.childrenTiers,\r\n t5_tierId: t5.tierId,\r\n t5_tierName: t5.tierName,\r\n t5_isVisible: t5.isVisible,\r\n t5_children: t5.childrenTiers,\r\n reportId: t5.reportId,\r\n tierTags: t5.tierTags\r\n });\r\n if (t5.childrenTiers) {\r\n t5.childrenTiers.forEach(t6 => {\r\n formattedData.push({\r\n t1_tierId: t1.tierId,\r\n t1_tierName: t1.tierName,\r\n t2_tierId: t2.tierId,\r\n t2_tierName: t2.tierName,\r\n t2_isVisible: t2.isVisible,\r\n t3_tierId: t3.tierId,\r\n t3_tierName: t3.tierName,\r\n t3_isVisible: t3.isVisible,\r\n t4_tierId: t4.tierId,\r\n t4_tierName: t4.tierName,\r\n t4_isVisible: t4.isVisible,\r\n t5_tierId: t5.tierId,\r\n t5_tierName: t5.tierName,\r\n t5_isVisible: t5.isVisible,\r\n t6_tierId: t6.tierId,\r\n t6_tierName: t6.tierName,\r\n t6_isVisible: t6.isVisible,\r\n reportId: t6.reportId,\r\n tierTags: t6.tierTags\r\n });\r\n })\r\n }\r\n })\r\n }\r\n })\r\n }\r\n })\r\n }\r\n })\r\n }\r\n });\r\n\r\n // Create tier map\r\n formattedData.forEach(o => {\r\n o.tierIdMap = [\r\n o.t1_tierId, \r\n o.t2_tierId ? o.t2_tierId : null, \r\n o.t3_tierId ? o.t3_tierId : null, \r\n o.t4_tierId ? o.t4_tierId : null,\r\n o.t5_tierId ? o.t5_tierId : null,\r\n o.t6_tierId ? o.t6_tierId : null\r\n ];\r\n o.tierNameMap = [\r\n o.t1_tierName, \r\n o.t2_tierName ? o.t2_tierName : null, \r\n o.t3_tierName ? o.t3_tierName : null, \r\n o.t4_tierName ? o.t4_tierName : null,\r\n o.t5_tierName ? o.t5_tierName : null,\r\n o.t6_tierName ? o.t6_tierName : null\r\n ];\r\n });\r\n\r\n // Remove null reports\r\n formattedData = formattedData.filter(t => t.reportId !== null);\r\n\r\n formattedData.forEach(o => {\r\n o.tierIdMap = o.tierIdMap.filter(t => t !== null);\r\n o.tierNameMap = o.tierNameMap.filter(t => t !== null);\r\n });\r\n\r\n // Last tier\r\n formattedData.forEach(o => {\r\n o.searchName = o.tierNameMap.pop();\r\n o.searchTier = o.tierIdMap.pop();\r\n });\r\n\r\n // Secondary tiers\r\n formattedData.forEach(o => {\r\n o.children = [o.t5_children, o.t4_children, o.t3_children].find(children => children && children.length) || null;\r\n });\r\n\r\n return formattedData;\r\n }\r\n\r\n public tags(tiers: any): string[] {\r\n const uniqueTags = new Set();\r\n\r\n tiers.forEach(data => {\r\n if (data.tierTags && Array.isArray(data.tierTags)) {\r\n data.tierTags.forEach(tag => uniqueTags.add(tag));\r\n }\r\n });\r\n\r\n return Array.from(uniqueTags).sort((a, b) => a.localeCompare(b));\r\n }\r\n\r\n public details(data: any): Observable {\r\n\r\n // ORGANISATION TYPE\r\n let organisationType;\r\n if (data.organisationTypeName === 'Local Authority') {\r\n organisationType = 'LA'\r\n } else if (data.organisationTypeName === 'NHSE Region') {\r\n organisationType = 'Region'\r\n } else if (data.organisationTypeName === 'Ambulance Service') {\r\n organisationType = 'Ambulance'\r\n } else if (data.organisationTypeName === 'Local Authority Region') {\r\n organisationType = 'LAR'\r\n } else {\r\n organisationType = data.organisationTypeName\r\n }\r\n\r\n // CATEGORIES\r\n let categoryTypes = [];\r\n Object.keys(data.categories).forEach(cd => {\r\n // Only include category types with more\r\n // than one category within it\r\n if (data.categories[cd].length > 1) {\r\n data.categories[cd].forEach(c => {\r\n categoryTypes.push({\r\n categoryTypeId: c.categoryTypeId,\r\n categoryTypeName: cd,\r\n categoryId: c.categoryId,\r\n categoryName: c.categoryName,\r\n displaySequence: c.displaySequence,\r\n selected: null\r\n })\r\n })\r\n }\r\n });\r\n\r\n // COMPONENTS\r\n let components = [];\r\n Object.keys(data.componentDescriptions).forEach(c => {\r\n data.componentDescriptions[c].forEach(cd => {\r\n components.push({\r\n type: c === 'N' ? 'Numerators' : 'Denominators',\r\n id: cd.dataItemId,\r\n name: cd.dataItemName,\r\n description: cd.dataItemDescription,\r\n source: cd.dataSource,\r\n sourceUrl: cd.componentUrl\r\n })\r\n })\r\n });\r\n\r\n // GET LINKED REPORT ID\r\n let linkedReport = data.reportOptions.find(r => r.reportOption == 'LR') || null;\r\n\r\n // CHECK IF RETIRED\r\n let retiredData = data.reportOptions.find(r => r.reportOption == 'RET') || null;\r\n\r\n // FORMATTED DATA\r\n let formattedData: any = {\r\n reportId: data.reportId,\r\n reportName: data.reportName,\r\n formatModifier: data.formatModifier,\r\n organisationType: organisationType,\r\n categories: categoryTypes,\r\n options: data.reportOptions.map(ro => ro.reportOption),\r\n components: components,\r\n factor: data.factor,\r\n aggregationType: data.aggregationType,\r\n linkedReportId: linkedReport ? linkedReport.displaySequence : null,\r\n retired: retiredData ? true : false\r\n }\r\n\r\n return formattedData;\r\n }\r\n\r\n public data(data: any, defaultOnsCode?: string): Observable {\r\n let formattedData: any = [];\r\n\r\n // DATA\r\n data.availableDates.forEach(ad => {\r\n\r\n // Flatten submissions\r\n let submissions = [];\r\n ad.organisationList.forEach(ol => {\r\n ol.submissionData.forEach(sd => { \r\n submissions.push({\r\n organisationId: ol.organisationId,\r\n organisationName: ol.organisationName,\r\n organisationOnsCode: ol.organisationOnsCode ? ol.organisationOnsCode : ol.organisationCode,\r\n submissionId: sd.submissionId,\r\n submissionCode: sd.submissionCode,\r\n submissionResult: sd.result,\r\n color: ol.organisationOnsCode == defaultOnsCode ? '#E03616' : '#005EB8'\r\n })\r\n });\r\n });\r\n\r\n // Order submissions by result DESC\r\n submissions = this.order.transform(submissions, '-submissionResult');\r\n\r\n // Get default organisation result\r\n let defaultResult = null;\r\n if (defaultOnsCode) {\r\n let defaultSubmission = submissions.find(s => s.organisationOnsCode === defaultOnsCode);\r\n defaultResult = defaultSubmission ? defaultSubmission.submissionResult : null;\r\n }\r\n\r\n // Correct period name\r\n let periodFrom = moment(ad.dateFrom).format('MMM-YY');\r\n let periodTo = moment(ad.dateTo).format('MMM-YY');\r\n let periodName;\r\n if (periodFrom === periodTo) {\r\n periodName = periodFrom;\r\n } else {\r\n periodName = periodFrom + ' to ' + periodTo;\r\n }\r\n let periodFy = this.getFY(ad.dateFrom);\r\n\r\n // Remove Wales data if default is not Wales\r\n let mean: any, median;\r\n if (defaultOnsCode && defaultOnsCode.substring(0, 1) !== 'W') {\r\n submissions = submissions.filter(s => s.organisationOnsCode.substring(0, 1) !== 'W');\r\n if (submissions.length) {\r\n mean = this.averages(submissions)['mean'];\r\n median = this.averages(submissions)['median'];\r\n }\r\n } else {\r\n submissions = submissions;\r\n if (submissions.length) {\r\n mean = data.dateAverages[ad.dateId];\r\n median = data.dateMedians[ad.dateId];\r\n }\r\n }\r\n\r\n // Return formatted data\r\n formattedData.push({\r\n periodId: ad.dateId,\r\n periodName: periodName,\r\n periodFy: periodFy,\r\n periodFrom: moment(ad.dateFrom).format('YYMMDD'),\r\n submissions: submissions,\r\n mean: mean,\r\n median: median,\r\n defaultResult: defaultResult\r\n });\r\n\r\n });\r\n\r\n return formattedData.reverse();\r\n }\r\n\r\n public seriesData(data: any, categories: any, categoryTypeId: number): Observable {\r\n let formattedData: any = [];\r\n let availableCategories = categories.filter(c => c.categoryTypeId === categoryTypeId);\r\n\r\n // DATA\r\n data.availableDates.forEach(ad => {\r\n\r\n // Flatten submissions\r\n let submissions = [];\r\n ad.organisationList.forEach(ol => {\r\n ol.submissionData.forEach(sd => {\r\n\r\n // Match results to categories, adding nulls where necessary\r\n let results = [];\r\n availableCategories.forEach(ac => {\r\n let findResult = sd.seriesList.find(sd => sd.categoryId === ac.categoryId);\r\n if (findResult) {\r\n results.push(findResult)\r\n } else {\r\n results.push({\r\n categoryId: ac.categoryId,\r\n categoryName: ac.categoryName,\r\n result: null\r\n })\r\n }\r\n });\r\n\r\n submissions.push({\r\n organisationId: ol.organisationId,\r\n organisationName: ol.organisationName,\r\n organisationOnsCode: ol.organisationOnsCode ? ol.organisationOnsCode : ol.organisationCode,\r\n submissionId: sd.submissionId,\r\n submissionCode: sd.submissionCode,\r\n submissionResults: results,\r\n submissionResultsOrder: results.slice(-1)[0].result\r\n })\r\n });\r\n });\r\n\r\n // Order submissions by result DESC\r\n submissions = this.order.transform(submissions, '-submissionResultsOrder');\r\n\r\n // Correct period name\r\n let periodFrom = moment(ad.dateFrom).format('MMM-YY');\r\n let periodTo = moment(ad.dateTo).format('MMM-YY');\r\n let periodName;\r\n if (periodFrom === periodTo) {\r\n periodName = periodFrom;\r\n } else {\r\n periodName = periodFrom + ' to ' + periodTo;\r\n }\r\n\r\n let periodFy = this.getFY(ad.dateFrom);\r\n\r\n // Return formatted data\r\n formattedData.push({\r\n periodId: ad.dateId,\r\n periodName: periodName,\r\n periodFy: periodFy,\r\n periodFrom: moment(ad.dateFrom).format('YYMMDD'),\r\n submissions: submissions,\r\n mean: data.dateAverages[ad.dateId],\r\n median: data.dateMedians[ad.dateId]\r\n });\r\n\r\n });\r\n\r\n // Format to Highcharts\r\n formattedData.forEach(fd => {\r\n\r\n // Create series\r\n let series = [];\r\n availableCategories.forEach((ac, i) => {\r\n series.push({\r\n name: ac.categoryName,\r\n data: fd.submissions.map(s => s.submissionResults[i].result)\r\n })\r\n })\r\n\r\n // Add categories and series\r\n fd.categories = fd.submissions.map(s => s.organisationName);\r\n fd.series = series\r\n })\r\n\r\n return formattedData.reverse();\r\n }\r\n\r\n public averages(data: any): Observable {\r\n let formattedData: any = {};\r\n\r\n let values = data.map(s => s.submissionResult),\r\n sorted = values.sort((a, b) => { return a-b }),\r\n half = Math.floor(sorted.length / 2),\r\n count = sorted.length,\r\n mean = sorted.reduce((a, b) => a + b, 0) / count,\r\n median = count % 2 ? sorted[half] : (sorted[half - 1] + sorted[half]) / 2,\r\n min = sorted.reduce((a, b) => Math.min(a, b)),\r\n max = sorted.reduce((a, b) => Math.max(a, b)),\r\n per25 = Math.floor(count * 0.25) - 1,\r\n per75 = Math.floor(count * 0.75) - 1,\r\n quartile25 = sorted[per25],\r\n quartile75 = sorted[per75]\r\n\r\n formattedData = {\r\n min: min,\r\n max: max,\r\n mean: mean,\r\n median: median,\r\n count: count,\r\n quartile25: quartile25,\r\n quartile75: quartile75\r\n };\r\n\r\n return formattedData;\r\n }\r\n\r\n public relationships(relationshipYears: any): Observable {\r\n let formattedData: any = [];\r\n\r\n Object.keys(relationshipYears).forEach(year => {\r\n\r\n // Add period from and financial year\r\n let dateFrom = new Date(+year, 3, 1);\r\n let periodFy = this.getFY(dateFrom);\r\n\r\n formattedData.push({\r\n year: +year,\r\n periodFy: periodFy,\r\n periodFrom: moment(dateFrom).format('YYMMDD'),\r\n relationships: relationshipYears[year].map(ry => {\r\n return {\r\n parentId: ry.childOrganisationId,\r\n parentOnsCode: ry.childOrganisationOnsCode,\r\n parentName: ry.childOrganisationName,\r\n childId: ry.parentOrganisationId,\r\n childOnsCode: ry.parentOrganisationOnsCode,\r\n childName: ry.parentOrganisationName,\r\n factor: ry.relationshipFactor,\r\n proportion: ry.relationshipProportion\r\n }\r\n })\r\n });\r\n\r\n });\r\n\r\n return formattedData;\r\n }\r\n\r\n public aggregate(data: any, relationships: any, aggregationType: string, defaultOnsCode?: string, reportDetails?: any): Observable {\r\n\r\n // Add parent and proportion/factor information to submission\r\n data.forEach(d => {\r\n d.newSubmissions = [];\r\n d.submissions.forEach(s => {\r\n\r\n // Match all future years to 2324 relationships\r\n let periodCheck = d.periodFy > 2324 ? 2324 : d.periodFy;\r\n\r\n // Plus 1 financial year for QOF reports\r\n if (reportDetails.reportName.substring(0,3) == 'QOF') {\r\n periodCheck = periodCheck + 101;\r\n }\r\n\r\n let relationshipPeriod = relationships.find(r => r.periodFy === periodCheck);\r\n let findRelationships;\r\n\r\n if (relationshipPeriod) {\r\n findRelationships = relationshipPeriod.relationships.filter(r => r.childOnsCode === s.organisationOnsCode);\r\n }\r\n\r\n if (relationshipPeriod && findRelationships.length) {\r\n findRelationships.forEach(fr => {\r\n d.newSubmissions.push({\r\n childId: fr.childId,\r\n childOnsCode: fr.childOnsCode,\r\n childName: fr.childName,\r\n result: s.submissionResult,\r\n parentId: fr.parentId,\r\n parentOnsCode: fr.parentOnsCode,\r\n parentName: fr.parentName,\r\n factor: fr.factor,\r\n proportion: fr.proportion,\r\n factoredResult: s.submissionResult && fr.factor ? s.submissionResult * fr.factor : null,\r\n proportionedResult: s.submissionResult && fr.proportion ? s.submissionResult * fr.proportion : null\r\n })\r\n })\r\n }\r\n });\r\n });\r\n\r\n // Group data by parent into new array\r\n data.forEach(d => {\r\n d.aggregated = this.group.transform(d.newSubmissions, 'parentOnsCode');\r\n })\r\n\r\n // Add necessary information\r\n data.forEach(d => {\r\n let aggregated = [];\r\n Object.keys(d.aggregated).forEach(agg => {\r\n // Checks for parent then creates group\r\n if (agg !== 'undefined') {\r\n aggregated.push({\r\n organisationId: d.aggregated[agg][0].parentId,\r\n organisationOnsCode: agg,\r\n organisationName: d.aggregated[agg][0].parentName,\r\n relationships: d.aggregated[agg],\r\n color: d.aggregated[agg][0].parentOnsCode == defaultOnsCode ? '#E03616' : '#005EB8'\r\n });\r\n }\r\n });\r\n d.aggregated = aggregated;\r\n })\r\n\r\n // Check for flagged aggregations\r\n // Child areas aggregating without data\r\n data.forEach(d => {\r\n d.flaggedAggregations = []\r\n\r\n // Match all future years to 2223 relationships\r\n let periodCheck = d.periodFy > 2223 ? 2223 : d.periodFy;\r\n\r\n // Add flag for aggregated data\r\n d.aggregatedData = true;\r\n\r\n // Push relationship year on for QOF reports\r\n if (reportDetails.reportName.substring(0,3) == 'QOF') {\r\n periodCheck = periodCheck + 101;\r\n }\r\n\r\n // Get relationships for the period\r\n let relationshipPeriod = relationships.find(r => r.periodFy === periodCheck);\r\n\r\n d.aggregated.forEach(a => {\r\n // Find number of relationships\r\n a.allRelationships = relationshipPeriod.relationships.filter(r => r.parentOnsCode === a.organisationOnsCode);\r\n\r\n // Keep only if relationships match aggregations\r\n if (a.relationships.length !== a.allRelationships.length) {\r\n d.flaggedAggregations.push(a)\r\n }\r\n });\r\n });\r\n\r\n // Calculate aggregated result\r\n data.forEach(d => {\r\n d.aggregated.forEach(agg => {\r\n if (aggregationType === 'Factor') {\r\n agg.submissionResult = agg.relationships.map(g => g.factoredResult).reduce((a, b) => a + b, 0);;\r\n } else {\r\n agg.submissionResult = agg.relationships.map(g => g.proportionedResult).reduce((a, b) => a + b, 0);\r\n }\r\n });\r\n });\r\n\r\n return data;\r\n }\r\n\r\n public aggregateSeries(data: any, relationships: any, categories: any, categoryTypeId: number, aggregationType: string): Observable {\r\n\r\n let availableCategories = categories.filter(c => c.categoryTypeId === categoryTypeId);\r\n\r\n // Add parent and proportion/factor information to submission\r\n data.forEach(d => {\r\n d.submissions.forEach(s => {\r\n let relationshipPeriod = relationships.find(r => r.periodFy === d.periodFy);\r\n let relationship; \r\n\r\n if (relationshipPeriod) {\r\n relationship = relationshipPeriod.relationships.find(r => r.childOnsCode === s.organisationOnsCode);\r\n }\r\n \r\n if (relationshipPeriod && relationship) {\r\n\r\n let submissionResults = [];\r\n s.submissionResults.forEach(sr => {\r\n submissionResults.push({\r\n categoryId: sr.categoryId,\r\n factoredResult: sr.result && relationship.factor ? sr.result * relationship.factor : null,\r\n proportionedResult: sr.result && relationship.proportion ? sr.result * relationship.proportion : null\r\n })\r\n });\r\n\r\n s.parentId = relationship.parentId,\r\n s.parentOnsCode = relationship.parentOnsCode,\r\n s.parentName = relationship.parentName,\r\n s.factor = relationship.factor,\r\n s.proportion = relationship.proportion\r\n s.submissionResults = submissionResults ? submissionResults : null\r\n }\r\n });\r\n });\r\n\r\n // Group data by parent into new array\r\n data.forEach(d => {\r\n d.aggregatedSeries = this.group.transform(d.submissions, 'parentOnsCode');\r\n })\r\n\r\n // Add necessary information\r\n data.forEach(d => {\r\n let aggregated = [];\r\n Object.keys(d.aggregatedSeries).forEach(agg => {\r\n // Checks for parent then creates group\r\n if (agg !== 'undefined') {\r\n aggregated.push({\r\n organisationOnsCode: agg,\r\n organisationName: d.aggregatedSeries[agg][0].parentName,\r\n relationships: d.aggregatedSeries[agg]\r\n });\r\n }\r\n });\r\n d.aggregatedSeries = aggregated;\r\n });\r\n\r\n data.forEach(d => {\r\n d.aggregatedSeries.forEach(s => {\r\n let results = [];\r\n availableCategories.forEach((c, i) => {\r\n results.push({\r\n categoryId: c.categoryId,\r\n proportionedResult: s.relationships.map(r => r.submissionResults[i].proportionedResult).reduce((a, b) => a + b, 0),\r\n factoredResult: s.relationships.map(r => r.submissionResults[i].factoredResult).reduce((a, b) => a + b, 0)\r\n })\r\n })\r\n s.aggregatedResults = results;\r\n });\r\n });\r\n\r\n // Format to Highcharts\r\n data.forEach(d => {\r\n\r\n // Create series\r\n let series = [];\r\n availableCategories.forEach((ac, i) => {\r\n series.push({\r\n name: ac.categoryName,\r\n data: d.aggregatedSeries.map(s => { \r\n return { \r\n y: aggregationType == 'Factor' ? s.aggregatedResults[i].factoredResult : s.aggregatedResults[i].proportionedResult,\r\n organisation: s.organisationName\r\n }\r\n })\r\n })\r\n })\r\n\r\n // Add categories and series\r\n d.aggregatedCategories = d.aggregatedSeries.map(s => s.organisationName);\r\n d.aggregatedSeries = series;\r\n\r\n })\r\n\r\n return data;\r\n }\r\n\r\n public highlightSeries(data: any, categories: any, categoryTypeId: number, highlights: any): Observable {\r\n let availableCategories = categories.filter(c => c.categoryTypeId === categoryTypeId);\r\n \r\n data.forEach(d => {\r\n let availableSubmissions = [];\r\n\r\n // Filter to just highlighted organisations\r\n d.submissions.forEach(s => {\r\n if (highlights.includes(s.organisationOnsCode)) {\r\n availableSubmissions.push(s);\r\n }\r\n })\r\n\r\n // Overwrite submissions\r\n d.submissions = availableSubmissions;\r\n\r\n // Recreate series\r\n let series = [];\r\n availableCategories.forEach((ac, i) => {\r\n series.push({\r\n name: ac.categoryName,\r\n data: d.submissions.map(s => s.submissionResults[i].result)\r\n })\r\n })\r\n\r\n // Re-add categories and series\r\n d.categories = d.submissions.map(s => s.organisationName);\r\n d.series = series\r\n });\r\n\r\n return data;\r\n }\r\n\r\n public periodMatch(data: any, secondaryData: any, aggregating: boolean): Observable {\r\n let matches: any = { data: null, secondaryData: null };\r\n\r\n // Reorder by reverse financial year\r\n data = this.order.transform(data, 'periodFy');\r\n secondaryData = this.order.transform(secondaryData, 'periodFy');\r\n\r\n // Find matching \r\n data.forEach(d => {\r\n let matchingSecondary;\r\n if (aggregating) {\r\n secondaryData.find(r => r.periodFy === d.periodFy && d.aggregated.length);\r\n } else {\r\n secondaryData.find(r => r.periodFy === d.periodFy);\r\n }\r\n if (matchingSecondary) {\r\n d.matchingPeriod = true;\r\n matchingSecondary.matchingPeriod = true;\r\n }\r\n })\r\n\r\n // Check for results\r\n // If no matches, take latest data from both\r\n let check = data.filter(d => d.matchingPeriod).length;\r\n if (check === 0) {\r\n let primary = data[data.length - 1],\r\n secondary = secondaryData[secondaryData.length - 1];\r\n\r\n primary.matchingPeriod = true;\r\n secondary.matchingPeriod = true\r\n }\r\n\r\n // Filter the data to just matching time periods\r\n matches.data = data.filter(d => d.matchingPeriod);\r\n matches.secondaryData = secondaryData.filter(d => d.matchingPeriod);\r\n\r\n return matches;\r\n }\r\n\r\n public combine(data: any, secondaryData: any): Observable {\r\n console.log('Matching organisation types')\r\n\r\n // Combine *matching* organisation types\r\n let primary = data[0];\r\n let secondary = secondaryData[0];\r\n primary.secondarySubmissions = secondary.submissions;\r\n\r\n // Add secondary result\r\n data.forEach(d => {\r\n d.submissions.forEach(s => {\r\n if (d.secondarySubmissions) {\r\n let secondarySubmission = d.secondarySubmissions.find(sd => sd.organisationOnsCode === s.organisationOnsCode);\r\n if (secondarySubmission) { s.secondaryResult = secondarySubmission.submissionResult }\r\n }\r\n })\r\n });\r\n\r\n // Remove any data without secondary results\r\n data.forEach(d => {\r\n d.combined = d.submissions.filter(sd => sd.secondaryResult);\r\n });\r\n\r\n // Remove any periods without any secondary data\r\n data = data.filter(d => d.secondarySubmissions && d.secondarySubmissions.length);\r\n\r\n // Return data\r\n return data;\r\n }\r\n\r\n public combineAggregated(data: any, secondaryData: any): Observable {\r\n console.log('Non-matching organisation types');\r\n\r\n // Combined *non-matching* organisation types\r\n let primary = data[0];\r\n let secondary = secondaryData[0];\r\n\r\n // Preserve a copy of the aggregated results\r\n primary.primaryAggregated = JSON.parse(JSON.stringify(primary.aggregated));\r\n\r\n // TODO: NOT SURE WHY!!\r\n primary.secondaryAggregated = secondary.aggregated;\r\n\r\n // Add secondary result\r\n data.forEach(d => {\r\n d.aggregated.forEach(agg => {\r\n if (d.secondaryAggregated) {\r\n let secondarySubmission = d.secondaryAggregated.find(sd => sd.organisationOnsCode === agg.organisationOnsCode);\r\n if (secondarySubmission) {\r\n agg.secondaryResult = secondarySubmission.submissionResult\r\n }\r\n }\r\n });\r\n });\r\n\r\n // Remove any periods without any secondary data\r\n data = data.filter(d => d.secondaryAggregated && d.secondaryAggregated.length);\r\n\r\n // Standardise data as combined\r\n data.forEach(d => {\r\n d.combined = d.aggregated;\r\n delete d.aggregated;\r\n });\r\n\r\n // Return data\r\n return data;\r\n }\r\n\r\n // UTILITIES \r\n\r\n getFY(dateFrom) {\r\n let quarter = moment(dateFrom).quarter();\r\n let fyFrom = +moment(dateFrom).format('YY');\r\n let periodFy;\r\n if (quarter == 1) {\r\n periodFy = (fyFrom - 1).toString() + fyFrom.toString();\r\n } else {\r\n periodFy = fyFrom.toString() + (fyFrom + 1).toString();\r\n }\r\n return +periodFy;\r\n }\r\n\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'highlight'\r\n})\r\n\r\nexport class HighlightPipe implements PipeTransform {\r\n\r\n transform(value: any, args: any): any {\r\n if (!args) {return value;}\r\n var re = new RegExp(args, 'gi'); //'gi' for case insensitive and can use 'g' if you want the search to be case sensitive.\r\n return value.replace(re, \"\" + args + \"\");\r\n }\r\n}","import { Pipe, PipeTransform, Injectable } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"search\",\r\n pure: false,\r\n})\r\n@Injectable()\r\nexport class OrgSearchPipe implements PipeTransform {\r\n transform(items: any[], args: any): any[] {\r\n if (args.length >= 2) {\r\n var isSearch = (data: any): boolean => {\r\n var isAll = false;\r\n if (typeof data === \"object\") {\r\n for (var z in data) {\r\n if ((isAll = isSearch(data[z]))) {\r\n break;\r\n }\r\n }\r\n } else {\r\n if (typeof args === \"number\") {\r\n isAll = data === args;\r\n } else {\r\n isAll = data.toString().match(new RegExp(args, \"i\"));\r\n }\r\n }\r\n return isAll;\r\n };\r\n\r\n return items.filter(isSearch);\r\n }\r\n }\r\n}\r\n","import { Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'reverse'\r\n })\r\n export class ReversePipe {\r\n transform(arr) {\r\n var copy = arr.slice();\r\n return copy.reverse();\r\n }\r\n}","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { SafePipe } from '../pipes/safe.pipe';\r\n\r\n@NgModule({\r\n imports: [BrowserModule],\r\n declarations: [SafePipe],\r\n exports: [SafePipe]\r\n})\r\nexport class SafePipeModule { }","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl } from '@angular/platform-browser';\r\n\r\n@Pipe({ name: 'safe' })\r\nexport class SafePipe implements PipeTransform {\r\n\tconstructor(protected _sanitizer: DomSanitizer) {\r\n\r\n\t}\r\n\r\n\tpublic transform(value: string, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\r\n\t\tswitch (type) {\r\n\t\t\tcase 'html':\r\n\t\t\t\treturn this._sanitizer.bypassSecurityTrustHtml(value);\r\n\t\t\tcase 'style':\r\n\t\t\t\treturn this._sanitizer.bypassSecurityTrustStyle(value);\r\n\t\t\tcase 'script':\r\n\t\t\t\treturn this._sanitizer.bypassSecurityTrustScript(value);\r\n\t\t\tcase 'url':\r\n\t\t\t\treturn this._sanitizer.bypassSecurityTrustUrl(value);\r\n\t\t\tcase 'resourceUrl':\r\n\t\t\t\treturn this._sanitizer.bypassSecurityTrustResourceUrl(value);\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(`Unable to bypass security for invalid type: ${type}`);\r\n\t\t}\r\n\t}\r\n}","import { Pipe, PipeTransform, Injectable } from '@angular/core';\r\n\r\n@Pipe({\r\n\tname: 'search',\r\n\tpure: false\r\n})\r\n\r\n@Injectable()\r\nexport class SearchPipe implements PipeTransform {\r\n\t transform(items:any[], args:any):any[] {\r\n\t\tvar isSearch = (data:any): boolean => {\r\n\t\t\tvar isAll = false;\r\n\t\t\tif(typeof data === 'object' ){\r\n\t\t\t\tfor (var z in data) {\r\n\t\t\t\t\tif(isAll = isSearch(data[z]) ){\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif(typeof args === 'number'){\r\n\t\t\t\t\tisAll = data === args;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tisAll = data.toString().match( new RegExp(args, 'i') );\r\n\t\t\t\t}\r\n\t\t\t} \r\n\t\t\treturn isAll;\r\n\t\t};\r\n\r\n\t\treturn items.filter(isSearch);\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\n\r\nimport { AuthService } from './auth.service';\r\nimport { MemberService } from './member.service';\r\n\r\n@Injectable()\r\nexport class AuthGuardService {\r\n constructor(\r\n private authService: AuthService,\r\n private router: Router,\r\n private memberService: MemberService\r\n ) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n if (this.authService.authenticated()) {\r\n if (this.authService.confirmed()) {\r\n return true;\r\n } else {\r\n this.router.navigate([\"/userCheck\"]);\r\n return false;\r\n }\r\n } else {\r\n this.router.navigate([\"/landing\"], { queryParams: { returnUrl: state.url }, });\r\n return false;\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\n\r\n@Injectable()\r\nexport class AuthService {\r\n constructor(public jwtHelper: JwtHelperService) { }\r\n\r\n public authenticated() {\r\n return !this.jwtHelper.isTokenExpired();\r\n }\r\n\r\n public confirmed() {\r\n let token = localStorage.getItem(\"id_token\");\r\n const decodedToken = this.jwtHelper.decodeToken(token);\r\n return decodedToken.reviewUserDetails == false;\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\nimport { User } from '../classes/user/user'\r\nimport { Organisation } from '../classes/organisation/organisation'\r\n\r\n@Injectable()\r\nexport class DataService {\r\n constructor() { }\r\n\r\n storage() {\r\n let sessionCheck: boolean = true;\r\n if (typeof sessionStorage === null) false; \r\n\r\n return sessionCheck;\r\n }\r\n\r\n setUser(user: User) {\r\n sessionStorage.setItem(\"user\", JSON.stringify(user));\r\n }\r\n\r\n getUser() {\r\n return JSON.parse(sessionStorage.getItem(\"user\"));\r\n }\r\n\r\n setOrganisation(organisation: Organisation) {\r\n sessionStorage.setItem(\"organisation\", JSON.stringify(organisation));\r\n }\r\n\r\n getOrganisation() { \r\n return JSON.parse(sessionStorage.getItem(\"organisation\"));\r\n }\r\n\r\n setSelectedOrganisation(organisationId: number) {\r\n sessionStorage.setItem(\"organisationId\", organisationId.toString());\r\n }\r\n\r\n getSelectedOrganisation() {\r\n return +sessionStorage.getItem(\"organisationId\");\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\n\r\n@Injectable()\r\nexport class ErrorService {\r\n constructor() { }\r\n\r\n getErrorMessage(statusCode: number) {\r\n switch (statusCode) {\r\n case 3101: {\r\n return 'The delegate does not have the necessary permissions to register for this event. Please contact the Support Team.';\r\n }\r\n case 3102: {\r\n return 'This event is no longer available for registration.';\r\n }\r\n case 3103: {\r\n return 'The delegate is already registered for this event.';\r\n }\r\n case 4201: {\r\n return 'Registration is not available.';\r\n }\r\n }\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\ndeclare let gtag: Function;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GoogleAnalyticsService {\r\n\r\n constructor() { }\r\n\r\n // Data from Classic View link\r\n public classicViewLandingPage(name: string) {\r\n gtag('event', name)\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class HtmlService {\r\n keys(object: {}) {\r\n return Object.keys(object);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { environment } from 'environments/environment'\r\n\r\n@Injectable()\r\nexport class IcsService {\r\n private URL: string = environment.icsApiURL;\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n public getOrganisations(type?: string): Observable {\r\n let token = localStorage.getItem('id_token');\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (type) {\r\n params = params.append('orgType', type);\r\n }\r\n \r\n return this.http.get(\r\n this.URL + 'organisations', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: params\r\n }\r\n );\r\n }\r\n\r\n public getTiers(projectId: number): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'tiers', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: new HttpParams().set('projectId', projectId.toString())\r\n }\r\n );\r\n }\r\n\r\n public getPreferences(): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'preferences', {\r\n headers: new HttpHeaders().set('Authorization', token)\r\n }\r\n );\r\n }\r\n\r\n public getReportData(reportId: number, tierId?): Observable {\r\n let token = localStorage.getItem('id_token');\r\n let params: HttpParams = new HttpParams();\r\n\r\n params = params.set('reportId', reportId.toString());\r\n\r\n if (tierId) {\r\n params = params.append('tierId', tierId.toString());\r\n }\r\n\r\n return this.http.get(\r\n this.URL + 'reports/' + reportId + '/data', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: params\r\n }\r\n );\r\n }\r\n\r\n public setPreference(preference): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.post(\r\n this.URL + 'preferences', JSON.stringify(preference), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public removePreference(preferenceId): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.delete(\r\n this.URL + 'preferences/' + preferenceId, {\r\n headers: new HttpHeaders().set('Authorization', token)\r\n }\r\n );\r\n }\r\n\r\n // BENCHMARKER\r\n\r\n public reportDetails(reportId: number): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'reports/' + reportId + '/reportDetails', {\r\n headers: new HttpHeaders().set('Authorization', token)\r\n }\r\n );\r\n }\r\n\r\n public reportData(reportId: number, dateId: number, categoryIds?): Observable {\r\n let token = localStorage.getItem('id_token');\r\n let params: HttpParams = new HttpParams();\r\n\r\n params = params.set('dateId', dateId.toString());\r\n\r\n if (categoryIds) {\r\n categoryIds.forEach(c => params = params.append('selectedCategory', c.toString()));\r\n }\r\n \r\n return this.http.get(\r\n this.URL + 'reports/' + reportId + '/reportDataSpecificOptions', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: params\r\n }\r\n );\r\n }\r\n\r\n public supplementaryData(reportId: number): Observable {\r\n let token = localStorage.getItem('id_token');\r\n \r\n return this.http.get(\r\n this.URL + 'reports/' + reportId + '/supplementaryData', {\r\n headers: new HttpHeaders().set('Authorization', token)\r\n }\r\n );\r\n }\r\n\r\n public reportDataAll(reportId: number, categoryIds?, organisationId?): Observable {\r\n let token = localStorage.getItem('id_token');\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (organisationId) {\r\n params = params.set('organisationId', organisationId.toString())\r\n }\r\n\r\n if (categoryIds) {\r\n categoryIds.forEach(c => params = params.append('selectedCategory', c.toString()));\r\n }\r\n \r\n return this.http.get(\r\n this.URL + 'reports/' + reportId + '/reportDataDatesSpecificOptions', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: params\r\n }\r\n );\r\n }\r\n\r\n public reportDataSeries(reportId: number, organisationId?): Observable {\r\n let token = localStorage.getItem('id_token');\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (organisationId) {\r\n params = params.set('organisationId', organisationId.toString())\r\n }\r\n \r\n return this.http.get(\r\n this.URL + 'reports/' + reportId + '/categoryData', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: params\r\n }\r\n );\r\n }\r\n\r\n public timeseriesData(reportId: number, organisationId: number, categoryIds?): Observable {\r\n let token = localStorage.getItem('id_token');\r\n let params: HttpParams = new HttpParams();\r\n\r\n params = params.set('selectedOrg', organisationId.toString());\r\n\r\n if (categoryIds) {\r\n categoryIds.forEach(c => params = params.append('selectedCategory', c.toString()));\r\n }\r\n\r\n return this.http.get(\r\n this.URL + 'reports/' + reportId + '/reportTimeseries', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: params\r\n }\r\n );\r\n }\r\n\r\n public dashboard(projectId: number, submissionId?: number, dateId?: number, groupName?: string): Observable {\r\n let token = localStorage.getItem('id_token');\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (submissionId) {\r\n params = params.set('submissionId', submissionId.toString());\r\n }\r\n\r\n if (dateId) {\r\n params = params.append('dateId', dateId.toString());\r\n }\r\n\r\n if (groupName) {\r\n params = params.append('groupName', groupName);\r\n }\r\n \r\n return this.http.get(\r\n this.URL + 'projects/' + projectId + '/dashboard', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: params\r\n }\r\n );\r\n }\r\n\r\n public reportGroups(projectId: number, groupType?: string): Observable {\r\n let token = localStorage.getItem('id_token');\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (groupType) {\r\n params = params.set('groupType', groupType);\r\n }\r\n \r\n return this.http.get(\r\n this.URL + 'projects/' + projectId + '/reportGroups', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: params\r\n }\r\n );\r\n }\r\n\r\n public report(projectId: number, dateId: number, organisationId?: number): Observable {\r\n let token = localStorage.getItem('id_token');\r\n let params: HttpParams = new HttpParams();\r\n\r\n params = params.set('dateId', dateId.toString());\r\n\r\n if (organisationId) {\r\n params = params.append('organisationId', organisationId.toString());\r\n }\r\n \r\n return this.http.get(\r\n this.URL + 'projects/' + projectId + '/pdfReport', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: params\r\n }\r\n );\r\n }\r\n\r\n public participants(projectId: number, dateId?: number): Observable {\r\n let token = localStorage.getItem('id_token');\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (dateId) {\r\n params = params.set('dateId', dateId.toString());\r\n }\r\n \r\n return this.http.get(\r\n this.URL + 'projects/' + projectId + '/participants', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: params\r\n }\r\n );\r\n }\r\n\r\n public participantSubmissions(projectId: number, dateId?: number): Observable {\r\n let token = localStorage.getItem('id_token');\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (dateId) {\r\n params = params.set('dateId', dateId.toString());\r\n }\r\n \r\n return this.http.get(\r\n this.URL + 'projects/' + projectId + '/participantSubmissions', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: params\r\n }\r\n );\r\n }\r\n\r\n // REGISTRATION\r\n\r\n public addSubmissions(projectId: number, submissions) {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.post(\r\n this.URL + 'projects/' + projectId + '/addSubmissions', JSON.stringify(submissions), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public modifySubmission(projectId: number, externalSubmissionId: number, submission) {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.post(\r\n this.URL + 'projects/' + projectId + '/modifySubmission', JSON.stringify(submission), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json'),\r\n params: new HttpParams().set('externalSubmissionId', externalSubmissionId.toString())\r\n }\r\n );\r\n }\r\n\r\n public deleteSubmission(projectId: number, externalSubmissionId: number) {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.delete(\r\n this.URL + 'projects/' + projectId + '/deleteSubmission', {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json'),\r\n params: new HttpParams().set('externalSubmissionId', externalSubmissionId.toString())\r\n }\r\n );\r\n }\r\n\r\n // COLLECTION\r\n\r\n public submissions(projectId: number): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'projects/' + projectId + '/submissions', {\r\n headers: new HttpHeaders().set('Authorization', token)\r\n }\r\n );\r\n }\r\n\r\n public collection(projectId: number, dateId: number, submissionId: number): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'projects/' + projectId + '/dataCollection', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: new HttpParams().set('dateId', dateId.toString()).set('submissionId', submissionId.toString())\r\n }\r\n );\r\n }\r\n\r\n public saveResponses(projectId: number, dateId: number, submissionId: number, responses) {\r\n let token = localStorage.getItem('id_token');\r\n let params: HttpParams = new HttpParams();\r\n\r\n params = params.set('dateId', dateId.toString()).set('submissionId', submissionId.toString());\r\n\r\n return this.http\r\n .post(this.URL + 'projects/' + projectId + '/saveResponses', JSON.stringify(responses), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json'),\r\n params: params\r\n });\r\n }\r\n\r\n public getConsent(projectId: number, organisationCode: string, organisationType: string): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'projects/' + projectId + '/getOrganisationConsent', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: new HttpParams().set('organisationCode', organisationCode.toString()).set('organisationType', organisationType.toString())\r\n }\r\n );\r\n }\r\n\r\n public saveConsent(projectId: number, consent) {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http\r\n .post(this.URL + 'projects/' + projectId + '/setOrganisationConsent', JSON.stringify(consent), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json')\r\n });\r\n }\r\n\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { environment } from 'environments/environment'\r\n\r\n@Injectable()\r\nexport class KenService {\r\n private URL: string = environment.apiURL;\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n public getProjects(): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'projects', {\r\n headers: new HttpHeaders().set('Authorization', token)\r\n }\r\n );\r\n }\r\n\r\n public getRequests(): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'knowledgeExchange/allRequests', {\r\n headers: new HttpHeaders().set('Authorization', token)\r\n }\r\n );\r\n }\r\n\r\n public getRequest(request: number): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http\r\n .get(this.URL + 'knowledgeExchange/' + request + '/details', {\r\n headers: new HttpHeaders().set('Authorization', token)\r\n });\r\n }\r\n\r\n public addRequest(request): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.post(\r\n this.URL + 'knowledgeExchange/addRequest', JSON.stringify(request), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public addComment(request: number, comment): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.post(\r\n this.URL + 'knowledgeExchange/' + request + '/addComment', JSON.stringify(comment), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public hideComment(comment): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.post(\r\n this.URL + 'knowledgeExchange/hideComment', JSON.stringify(comment), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public reportComment(comment): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.post(\r\n this.URL + 'knowledgeExchange/reportComment', JSON.stringify(comment), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public getProjectRequests(projectId: number): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'knowledgeExchange/getProjectRequests', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: new HttpParams().set('projectId', projectId.toString())\r\n }\r\n );\r\n }\r\n\r\n public submitRequestProjects(requestId: number, projectIds): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.post(\r\n this.URL + 'knowledgeExchange/' + requestId + '/addRequestProjects', JSON.stringify({ projectList: projectIds }), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public removeRequestProjects(requestId: number, projectIds): Observable {\r\n let token = localStorage.getItem('id_token');\r\n let options = {\r\n body: JSON.stringify({ projectList: projectIds }), \r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json')\r\n };\r\n\r\n return this.http.delete(this.URL + 'knowledgeExchange/' + requestId + '/removeRequestProjects', options);\r\n }\r\n\r\n public editRequest(requestId: number, requestDetails): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.patch(this.URL + 'knowledgeExchange/' + requestId + '/modifyRequest', JSON.stringify(requestDetails), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json')\r\n });\r\n }\r\n\r\n}","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpErrorResponse,\r\n HttpResponse,\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor\r\n} from '@angular/common/http';\r\nimport { Observable } from 'rxjs/Observable';\r\nimport { LoaderService } from './loader.service';\r\n\r\n@Injectable()\r\nexport class LoaderInterceptor implements HttpInterceptor {\r\n private requests: HttpRequest[] = [];\r\n\r\n constructor(private loaderService: LoaderService) { }\r\n\r\n removeRequest(req: HttpRequest) {\r\n const i = this.requests.indexOf(req);\r\n if (i >= 0) {\r\n this.requests.splice(i, 1);\r\n\r\n }\r\n this.loaderService.isLoading.next(this.requests.length > 0);\r\n }\r\n\r\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n this.requests.push(req);\r\n this.loaderService.isLoading.next(true);\r\n return Observable.create(observer => {\r\n const subscription = next.handle(req)\r\n .subscribe(\r\n event => {\r\n if (event instanceof HttpResponse) {\r\n this.removeRequest(req);\r\n observer.next(event);\r\n }\r\n },\r\n err => { this.removeRequest(req); observer.error(err); },\r\n () => { this.removeRequest(req); observer.complete(); });\r\n // teardown logic in case of cancelled requests\r\n return () => {\r\n this.removeRequest(req);\r\n subscription.unsubscribe();\r\n };\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs/Observable';\r\nimport { ReplaySubject } from 'rxjs/ReplaySubject';\r\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\r\n\r\n\r\n@Injectable()\r\nexport class LoaderService {\r\n public isLoading = new BehaviorSubject(false);\r\n\r\n constructor() {}\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { tap } from \"rxjs/operators\";\r\n\r\nimport { EventRegistration } from \"../classes/event/event-registration\";\r\nimport { UserRegistration } from \"../classes/user/user-registration\";\r\nimport { environment } from \"environments/environment\";\r\nimport { isConstructorDeclaration } from \"typescript\";\r\n\r\n@Injectable()\r\nexport class MemberService {\r\n private URL: string = environment.apiURL;\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n public OrganisationList(): Observable {\r\n return this.http.get(this.URL + \"unauthenticated/organisationList\");\r\n }\r\n\r\n public OrganisationListWithProducts(): Observable {\r\n return this.http.get(this.URL + \"unauthenticated/organisationProductList\");\r\n }\r\n\r\n public Login(username, password): Observable {\r\n return this.http\r\n .get(this.URL + \"authentication\", {\r\n headers: new HttpHeaders().append(\r\n \"Authorization\",\r\n \"Basic \" + btoa(username + \":\" + password)\r\n ),\r\n })\r\n .pipe(tap((data) => localStorage.setItem(\"id_token\", data.data.token)));\r\n }\r\n\r\n public RegenerateToken(): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n return this.http\r\n .get(this.URL + \"authentication/regenerateToken\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token)\r\n })\r\n .pipe(tap((data) => localStorage.setItem(\"id_token\", data.data.token)));\r\n }\r\n\r\n public Events(): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(this.URL + \"events/\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n });\r\n }\r\n\r\n public User(): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(this.URL + \"users/details\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n });\r\n }\r\n\r\n public UserRolesDisabled(organisationList) {\r\n let token = localStorage.getItem(\"id_token\");\r\n const body = { organisationList: organisationList };\r\n\r\n return this.http.post(\r\n this.URL + \"users/disableOrgRoles\", body, {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public UserRoles(userId: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(this.URL + \"users/\" + userId, {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n });\r\n }\r\n\r\n public UserViewRoles(\r\n userId: number,\r\n organisationId: number\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(this.URL + \"users/\" + userId + \"/roles\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams().set(\"organisationId\", organisationId.toString()),\r\n });\r\n }\r\n\r\n public ContactForm(organisation: String, phone: String, subject: String, message: String, project: String): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(this.URL + \"users/contactUs\",\r\n {\r\n organisation: organisation,\r\n phoneNo: phone,\r\n subject: subject,\r\n message: message,\r\n project: project,\r\n },\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public UserUpdate(user?: Object): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.patch(this.URL + \"users\", user, {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n });\r\n }\r\n\r\n public UserState(\r\n userId: number,\r\n organisationId: number,\r\n state: string\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(this.URL + \"users/\" + userId + \"/setActive\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams()\r\n .set(\"organisationId\", organisationId.toString())\r\n .set(\"isActive\", state),\r\n });\r\n }\r\n\r\n public getNotifications(): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(this.URL + \"notifications/getNotifications\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n });\r\n }\r\n\r\n public dismissNotification(notificationId: number, dismissed) {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL + \"notifications/\" + notificationId + \"/setDismissed\",\r\n JSON.stringify(dismissed),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public OrganisationsByUser(projectId?: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (projectId) params = params.set(\"projectId\", projectId.toString());\r\n\r\n return this.http.get(this.URL + \"users/organisations\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: params,\r\n });\r\n }\r\n\r\n public OrganisationsUserAdmin(organisationId: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(\r\n this.URL + \"organisations/\" + organisationId + \"/users\",\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n }\r\n );\r\n }\r\n\r\n public OrganisationProducts(organisationId: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(\r\n this.URL + \"organisations/\" + organisationId + \"/products\",\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n }\r\n );\r\n }\r\n\r\n public ProjectAccess(organisationId: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(\r\n this.URL +\r\n \"projects/categoryProjectAccessList?organisationId=\" +\r\n organisationId,\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n }\r\n );\r\n }\r\n\r\n // Organisation Participation Overview (3yrs)\r\n public ProjectParticipation(organisationId: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(\r\n this.URL +\r\n \"projects/projectParticipation?organisationId=\" +\r\n organisationId,\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n }\r\n );\r\n }\r\n\r\n public ProjectInformation(projectId: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(\r\n this.URL + \"projects/\" + projectId + \"/projectDetails\",\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n }\r\n );\r\n }\r\n\r\n public modifyProject(projectId: number, newProjectDetails): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.patch(\r\n this.URL + \"projects/\" + projectId + \"/modifyProject\",\r\n JSON.stringify(newProjectDetails),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public ProjectOverview(projectId: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(this.URL + \"projects/\" + projectId + \"/overview\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n });\r\n }\r\n\r\n public ProjectOverviewOrganisations(projectId: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(\r\n this.URL + \"projects/\" + projectId + \"/overviewOrganisations\",\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n }\r\n );\r\n }\r\n\r\n public ValidationConversationHistory(validationId: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n return this.http.get(\r\n this.URL + \"validation/getValidationConversationHistory\", {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: new HttpParams().set('validationId', validationId.toString()).set('resetAlert', 'Y')\r\n });\r\n }\r\n\r\n public ProjectOverviewSubmissions(\r\n projectId: number,\r\n organisationId: number\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(\r\n this.URL + \"projects/\" + projectId + \"/organisationOverview\",\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams().set(\r\n \"organisationId\",\r\n organisationId.toString()\r\n ),\r\n }\r\n );\r\n }\r\n\r\n // public OrganisationProjectOverview(projectId: number, organisationId: number): Observable {\r\n // let token = localStorage.getItem('id_token');\r\n // let params: HttpParams = new HttpParams();\r\n\r\n // return this.http\r\n // .get(this.URL + 'projects/' + projectId + '/overview', {\r\n // headers: new HttpHeaders().set('Authorization', token),\r\n // params: new HttpParams().set('organisationId', organisationId.toString())\r\n // });\r\n // }\r\n\r\n public QuestionGroups(\r\n projectId: number,\r\n year: number,\r\n groupLevel: string,\r\n submissionId?: number,\r\n serviceItemId?: number\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n let params: HttpParams = new HttpParams();\r\n\r\n params = params\r\n .set(\"questionYear\", year.toString())\r\n .set(\"groupLevel\", groupLevel);\r\n\r\n if (serviceItemId)\r\n params = params.append(\"serviceId\", serviceItemId.toString());\r\n if (submissionId)\r\n params = params.append(\"submissionId\", submissionId.toString());\r\n\r\n return this.http.get(\r\n this.URL + \"projects/\" + projectId + \"/questionGroups\",\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: params,\r\n }\r\n );\r\n }\r\n\r\n public CNRCodes(submissionId: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(\r\n this.URL + \"submissions/\" + submissionId + \"/caseCodes\",\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n }\r\n );\r\n }\r\n\r\n public Questions(\r\n projectId: number,\r\n submissionId: number,\r\n groupId: number,\r\n serviceItemId?: number,\r\n caseNoteReviewCode?: string\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n let params: HttpParams = new HttpParams();\r\n\r\n params = params\r\n .set(\"submissionId\", submissionId.toString())\r\n .set(\"groupId\", groupId.toString());\r\n\r\n if (serviceItemId)\r\n params = params.append(\"serviceId\", serviceItemId.toString());\r\n\r\n if (caseNoteReviewCode)\r\n params = params.append(\"submissionCaseCode\", caseNoteReviewCode);\r\n\r\n return this.http.get(\r\n this.URL + \"projects/\" + projectId + \"/questionsInGroup\",\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Cache-Control\", \"no-cache\")\r\n .set(\"Pragma\", \"no-cache\"),\r\n params: params,\r\n }\r\n );\r\n }\r\n\r\n public SaveQuestionData(\r\n questionData,\r\n submissionId: number,\r\n serviceItemId?: number,\r\n caseNoteReviewCode?: string\r\n ) {\r\n let token = localStorage.getItem(\"id_token\");\r\n let params: HttpParams = new HttpParams();\r\n\r\n params = params.set(\"submissionId\", submissionId.toString());\r\n\r\n if (serviceItemId)\r\n params = params.append(\"serviceId\", serviceItemId.toString());\r\n\r\n if (caseNoteReviewCode)\r\n params = params.append(\"submissionCaseCode\", caseNoteReviewCode);\r\n\r\n return this.http.post(\r\n this.URL + \"projects/questions\",\r\n JSON.stringify(questionData),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n params: params,\r\n }\r\n );\r\n }\r\n\r\n public modifyQuestion(questionData): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL + \"projects/modifyQuestion\",\r\n JSON.stringify(questionData),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public childResponseCount(\r\n parentIds,\r\n submissionId: number,\r\n serviceItemId: number,\r\n caseCodeId?: number\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n let params: HttpParams = new HttpParams();\r\n\r\n params = params\r\n .set(\"parentIds\", parentIds)\r\n .set(\"submissionId\", submissionId.toString())\r\n .set(\"serviceItemId\", serviceItemId.toString());\r\n if (caseCodeId) params = params.append(\"caseCodeId\", caseCodeId.toString());\r\n\r\n return this.http.get(this.URL + \"projects/childResponseCount\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: params,\r\n });\r\n }\r\n\r\n public purgeResponsesForParent(questionData): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL + \"projects/purgeResponsesForParent\",\r\n JSON.stringify(questionData),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public Tiers(projectId: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(this.URL + \"outputs/tiers\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams().set(\"projectId\", projectId.toString()),\r\n });\r\n }\r\n\r\n public parentTiers(projectId: number, tierId: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(this.URL + \"outputs/tierParents\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams()\r\n .set(\"projectId\", projectId.toString())\r\n .set(\"tierId\", tierId.toString()),\r\n });\r\n }\r\n\r\n public getTierPath(projectId: number, tierId: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(this.URL + \"outputs/tierPath\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams()\r\n .set(\"projectId\", projectId.toString())\r\n .set(\"tierId\", tierId.toString()),\r\n });\r\n }\r\n\r\n public childTiers(projectId: number, parentId?: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n let params: HttpParams = new HttpParams();\r\n\r\n params = params.set(\"projectId\", projectId.toString());\r\n\r\n if (parentId) params = params.append(\"parentId\", parentId.toString());\r\n\r\n return this.http.get(this.URL + \"outputs/childTiers\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: params,\r\n });\r\n }\r\n\r\n public getSearchTiers(projectId: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(this.URL + \"outputs/leafTiers\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams().set(\"projectId\", projectId.toString()),\r\n });\r\n }\r\n\r\n public TierYears(tierId: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(this.URL + \"outputs/tiers/\" + tierId + \"/years\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n });\r\n }\r\n\r\n public TierData(\r\n chartId: number,\r\n organisationId: number,\r\n peerGroup: number,\r\n submissionId?: number,\r\n serviceItemId?: number,\r\n denominatorOptionId?: number,\r\n year?: number,\r\n submissionLevel?: string\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n let params: HttpParams = new HttpParams();\r\n\r\n params = params\r\n .set(\"organisationId\", organisationId.toString())\r\n .set(\"peerGroup\", peerGroup.toString());\r\n\r\n if (submissionId)\r\n params = params.append(\"submissionId\", submissionId.toString());\r\n\r\n if (serviceItemId)\r\n params = params.append(\"serviceItemId\", serviceItemId.toString());\r\n\r\n if (denominatorOptionId)\r\n params = params.append(\r\n \"denominatorOptionId\",\r\n denominatorOptionId.toString()\r\n );\r\n\r\n if (year) params = params.append(\"year\", year.toString());\r\n\r\n if (submissionLevel)\r\n params = params.append(\"submissionLevel\", submissionLevel.toString());\r\n\r\n return this.http.get(this.URL + \"outputs/\" + chartId + \"/data\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: params,\r\n });\r\n }\r\n\r\n public dataSharingCodes(projectId: number, year: number): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'projects/' + projectId.toString() + '/dataSharingCodes', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: new HttpParams().set(\"year\", year.toString()),\r\n }\r\n );\r\n }\r\n\r\n public editReportDetails(reportId: number, details: any): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.post(\r\n this.URL + 'outputs/' + reportId + '/reportDetails', JSON.stringify(details), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public editTierName(reportId: number, details: any): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.patch(\r\n this.URL + 'outputs/' + reportId + '/tierDetails', JSON.stringify(details), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public getPrimaryOptionNames(projectId: number): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'projects/' + projectId + '/primaryOptionNames', {\r\n headers: new HttpHeaders().set('Authorization', token)\r\n }\r\n );\r\n } \r\n\r\n public getSubmissionPeerGroups(projectId: number, year: number): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'projects/' + projectId + '/peerGroupSubmissions', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: new HttpParams().set(\"submissionYear\", year.toString()),\r\n }\r\n );\r\n } \r\n\r\n public SubmissionState(\r\n state: string,\r\n submissionId: number,\r\n organisationId: number\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(\r\n this.URL + \"submissions/\" + submissionId + \"/\" + state,\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams().set(\r\n \"organisationId\",\r\n organisationId.toString()\r\n ),\r\n }\r\n );\r\n }\r\n\r\n public SubmissionDetails(\r\n submissionId: number,\r\n serviceItemId?: number\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (serviceItemId)\r\n params = params.append(\"serviceId\", serviceItemId.toString());\r\n\r\n return this.http.get(\r\n this.URL + \"submissions/\" + submissionId + \"/details\",\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: params,\r\n }\r\n );\r\n }\r\n\r\n public SubmissionCNRCode(submissionId: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n let params: HttpParams = new HttpParams();\r\n\r\n return this.http.get(\r\n this.URL + \"submissions/\" + submissionId + \"/caseCodeToken\",\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: params,\r\n }\r\n );\r\n }\r\n\r\n public RegisterUser(userRegistration: UserRegistration) {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL + \"users/registerUser\",\r\n JSON.stringify(userRegistration),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public RegisterEvent(EventId: number, EventDetails: EventRegistration) {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL + \"events/\" + EventId + \"/register\",\r\n JSON.stringify(EventDetails),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public eventDocuments(eventId: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(this.URL + \"events/\" + eventId + \"/awsDocuments\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n });\r\n }\r\n\r\n public AWSDocuments(projectId: number, organisationId?: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (organisationId) params = params.set(\"organisationId\", organisationId.toString());\r\n\r\n return this.http.get(this.URL + \"projects/\" + projectId + \"/awsDocuments\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: params\r\n });\r\n }\r\n\r\n public ResourceDocuments(year: number, organisationId: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(this.URL + \"awsDocuments/resources\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams().set(\"year\", year.toString()).set(\"organisationId\", organisationId.toString()),\r\n });\r\n }\r\n\r\n public ResetPassword(emailAddress: string) {\r\n return this.http.get(this.URL + \"unauthenticated/getPasswordResetCode\", {\r\n params: new HttpParams().set(\"logonName\", emailAddress.toString()),\r\n });\r\n }\r\n\r\n public ResetPasswordConfirm(resetPassword) {\r\n return this.http.post(\r\n this.URL + \"unauthenticated/resetPassword\",\r\n JSON.stringify(resetPassword),\r\n {\r\n headers: new HttpHeaders().set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public DismissWelcomeDialog(dismiss) {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.patch(this.URL + \"users\", dismiss, {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n });\r\n }\r\n\r\n public AWSSelectedDocument(documentId: number, selectedOrganisation?: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (selectedOrganisation) params = params.append(\"organisationId\", selectedOrganisation.toString());\r\n\r\n return this.http.get(\r\n this.URL + \"awsDocuments/\" + documentId + \"/download\",\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: params\r\n }\r\n );\r\n }\r\n\r\n public DynamicDocuments(projectId: number, year: string): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(\r\n this.URL + 'awsDocuments/dynamic', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: new HttpParams()\r\n .set('projectId', projectId.toString())\r\n .set('year', year)\r\n }\r\n );\r\n }\r\n\r\n public ProjectRegistrationBasicDetails(\r\n projectId: number,\r\n organisationId: number\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(this.URL + \"projectRegistration/projectDetails\", {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Cache-Control\", \"no-cache\")\r\n .set(\"Pragma\", \"no-cache\"),\r\n params: new HttpParams()\r\n .set(\"organisationId\", organisationId.toString())\r\n .set(\"projectId\", projectId.toString()),\r\n });\r\n }\r\n\r\n public ProjectRegistration(\r\n productId: number,\r\n projectId: number,\r\n organisationId: number,\r\n registrationYear?: number\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n let params: HttpParams = new HttpParams();\r\n\r\n params = params\r\n .set(\"productId\", productId.toString())\r\n .set(\"projectId\", projectId.toString())\r\n .set(\"organisationId\", organisationId.toString());\r\n\r\n if (registrationYear) {\r\n params = params.append(\"registrationYear\", registrationYear.toString());\r\n }\r\n\r\n return this.http.get(this.URL + \"projectRegistration/overview\", {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Cache-Control\", \"no-cache\")\r\n .set(\"Pragma\", \"no-cache\"),\r\n params: params,\r\n });\r\n }\r\n\r\n public CreateRegistration(\r\n projectId: number,\r\n organisationId: number\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n let body = {\r\n projectId: projectId,\r\n organisationId: organisationId,\r\n };\r\n\r\n return this.http.post(\r\n this.URL + \"projectRegistration/createRegistration\",\r\n JSON.stringify(body),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public AddProjectLead(\r\n registrationId: number,\r\n productId: number,\r\n projectId: number,\r\n organisationId: number,\r\n projectLeadDetails\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL + \"projectRegistration/\" + registrationId + \"/addProjectLead\",\r\n JSON.stringify(projectLeadDetails),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n params: new HttpParams()\r\n .set(\"productId\", productId.toString())\r\n .set(\"projectId\", projectId.toString())\r\n .set(\"organisationId\", organisationId.toString()),\r\n }\r\n );\r\n }\r\n\r\n public AddDeputyProjectLead(\r\n registrationId: number,\r\n deputyProjectLeadDetails\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL +\r\n \"projectRegistration/\" +\r\n registrationId +\r\n \"/addDeputyProjectLead\",\r\n JSON.stringify(deputyProjectLeadDetails),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public RemoveDeputyProjectLead(\r\n registrationId: number,\r\n userId: number\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.delete(\r\n this.URL +\r\n \"projectRegistration/\" +\r\n registrationId +\r\n \"/removeDeputyProjectLead\",\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams().set(\"userId\", userId.toString()),\r\n }\r\n );\r\n }\r\n\r\n public SubmissionOrganisations(): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(this.URL + \"projectRegistration/commissionerList\", {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n });\r\n }\r\n\r\n public AddOrganisationSubmissionGroup(\r\n registrationId: number,\r\n group\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL +\r\n \"projectRegistration/\" +\r\n registrationId +\r\n \"/addOrganisationToGroup\",\r\n group,\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public RemoveOrganisationSubmissionGroup(\r\n registrationId: number,\r\n organisationId: number,\r\n groupHeaderId: number\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.delete(\r\n this.URL +\r\n \"projectRegistration/\" +\r\n registrationId +\r\n \"/removeOrganisationFromGroup\",\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams()\r\n .set(\"organisationId\", organisationId.toString())\r\n .set(\"groupHeaderId\", groupHeaderId.toString()),\r\n }\r\n );\r\n }\r\n\r\n public AddSubmission(\r\n registrationId: number,\r\n submissionData\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL + \"projectRegistration/\" + registrationId + \"/addSubmission\",\r\n JSON.stringify(submissionData),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public EditSubmission(\r\n registrationId: number,\r\n submissionData\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.patch(\r\n this.URL + \"projectRegistration/\" + registrationId + \"/changeSubmission\",\r\n JSON.stringify(submissionData),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n params: new HttpParams().set(\r\n \"submissionId\",\r\n submissionData.submissionId\r\n ),\r\n }\r\n );\r\n }\r\n\r\n public RemoveSubmission(\r\n registrationId: number,\r\n submissionId: number\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.delete(\r\n this.URL + \"projectRegistration/\" + registrationId + \"/removeSubmission\",\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams().set(\"submissionId\", submissionId.toString()),\r\n }\r\n );\r\n }\r\n\r\n public AddSubmissionLead(\r\n registrationId: number,\r\n submissionId: number,\r\n submissionLeadData\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL + \"projectRegistration/\" + registrationId + \"/addSubmissionLead\",\r\n JSON.stringify(submissionLeadData),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n params: new HttpParams().set(\"submissionId\", submissionId.toString()),\r\n }\r\n );\r\n }\r\n\r\n public RemoveSubmissionLead(\r\n registrationId: number,\r\n submissionId: number,\r\n userId: number\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.delete(\r\n this.URL +\r\n \"projectRegistration/\" +\r\n registrationId +\r\n \"/removeSubmissionLead\",\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams()\r\n .set(\"submissionId\", submissionId.toString())\r\n .set(\"userId\", userId.toString()),\r\n }\r\n );\r\n }\r\n\r\n public AddService(\r\n registrationId: number,\r\n submissionId: number,\r\n serviceItem\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL +\r\n \"projectRegistration/\" +\r\n registrationId +\r\n \"/addSubmissionService\",\r\n serviceItem,\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams().set(\"submissionId\", submissionId.toString()),\r\n }\r\n );\r\n }\r\n\r\n public RemoveService(\r\n registrationId: number,\r\n submissionId: number,\r\n serviceItemId: number\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.delete(\r\n this.URL +\r\n \"projectRegistration/\" +\r\n registrationId +\r\n \"/removeSubmissionService\",\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams()\r\n .set(\"submissionId\", submissionId.toString())\r\n .set(\"serviceItemId\", serviceItemId.toString()),\r\n }\r\n );\r\n }\r\n\r\n public AddServiceLead(\r\n registrationId: number,\r\n submissionId: number,\r\n serviceItemId: number,\r\n serviceLead\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL + \"projectRegistration/\" + registrationId + \"/addServiceLead\",\r\n serviceLead,\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams()\r\n .set(\"submissionId\", submissionId.toString())\r\n .set(\"serviceItemId\", serviceItemId.toString()),\r\n }\r\n );\r\n }\r\n\r\n public RemoveServiceLead(\r\n registrationId: number,\r\n submissionId: number,\r\n serviceItemId: number\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.delete(\r\n this.URL + \"projectRegistration/\" + registrationId + \"/removeServiceLead\",\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams()\r\n .set(\"submissionId\", submissionId.toString())\r\n .set(\"serviceItemId\", serviceItemId.toString()),\r\n }\r\n );\r\n }\r\n\r\n public AddRegistrationAddress(\r\n registrationId: number,\r\n addressDetails\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL + \"projectRegistration/\" + registrationId + \"/addAddress\",\r\n JSON.stringify(addressDetails),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public EditRegistrationAddress(\r\n registrationId: number,\r\n addressDetails\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.patch(\r\n this.URL + \"projectRegistration/\" + registrationId + \"/modifyAddress\",\r\n JSON.stringify(addressDetails),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public RemoveRegistrationAddress(\r\n registrationId: number,\r\n registrationAddressId: number\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.delete(\r\n this.URL + \"projectRegistration/\" + registrationId + \"/removeAddress\",\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams().set(\r\n \"registrationAddressId\",\r\n registrationAddressId.toString()\r\n ),\r\n }\r\n );\r\n }\r\n\r\n public RegisterProject(\r\n registrationId: number,\r\n state: string\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL + \"projectRegistration/\" + registrationId + \"/setLocked\",\r\n null,\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n params: new HttpParams().set(\"locked\", state),\r\n }\r\n );\r\n }\r\n\r\n public IndividualAccess(registrationId: number, user): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL +\r\n \"projectRegistration/\" +\r\n registrationId +\r\n \"/addProjectIndividualAccessUser \",\r\n user,\r\n {\r\n headers: new HttpHeaders().set(\"Authorization\", token),\r\n }\r\n );\r\n }\r\n\r\n public MembershipRegistrationRequest(membershipData) {\r\n return this.http.post(\r\n this.URL + \"membershipRequests\",\r\n JSON.stringify(membershipData),\r\n {\r\n headers: new HttpHeaders().set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public ProjectDashboard(\r\n projectId: number,\r\n submissionId: number,\r\n serviceItemId: number\r\n ): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.get(this.URL + \"projects/\" + projectId + \"/dashboard\", {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n params: new HttpParams()\r\n .set(\"submissionId\", submissionId.toString())\r\n .set(\"serviceItemId\", serviceItemId.toString()),\r\n });\r\n }\r\n\r\n public DashboardMetrics(projectId: number, serviceItemId?: number, year?: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (serviceItemId) params = params.set(\"serviceItemId\", serviceItemId.toString());\r\n\r\n if (year) params = params.append(\"year\", year.toString());\r\n\r\n return this.http.get(\r\n this.URL + \"projects/\" + projectId + \"/dashboardMetrics\",\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n params: params,\r\n }\r\n );\r\n }\r\n\r\n public DashboardMetric(metricId: number, submissionId?: number): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n let params: HttpParams = new HttpParams().set(\"metricId\", metricId.toString());\r\n\r\n if (submissionId) params = params.append(\"submissionId\", submissionId.toString())\r\n\r\n return this.http.get(this.URL + \"projects/dashboardMetricValue\", {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n params: params\r\n });\r\n }\r\n\r\n public addCnrCodes(submissionId: number, newCodeCount): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL + \"submissions/\" + submissionId + \"/addCnrCodes\",\r\n JSON.stringify(newCodeCount),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public editCnrNotes(cnrNote): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL + \"submissions/editCnrNotes\",\r\n JSON.stringify(cnrNote),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public removeCnrCode(submissionId: number, caseCode): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL + \"submissions/\" + submissionId + \"/removeCaseCode\",\r\n JSON.stringify(caseCode),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public purgeCaseCode(caseCode): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL + \"submissions/purgeCaseCode\",\r\n JSON.stringify(caseCode),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public completeCnrCode(submissionId: number, caseCode): Observable {\r\n let token = localStorage.getItem(\"id_token\");\r\n\r\n return this.http.post(\r\n this.URL + \"submissions/\" + submissionId + \"/setCaseCodeCompleted\",\r\n JSON.stringify(caseCode),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Authorization\", token)\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public caseCodeCount(submissionId: number, prefix): Observable {\r\n return this.http.get(\r\n this.URL + \"unauthenticated/\" + submissionId + \"/caseCodeCount\",\r\n {\r\n params: new HttpParams().set(\"prefix\", prefix),\r\n }\r\n );\r\n }\r\n\r\n public LoginRequest(loginRequestData) {\r\n return this.http.post(\r\n this.URL + \"unauthenticated/requestLogin\",\r\n JSON.stringify(loginRequestData),\r\n {\r\n headers: new HttpHeaders().set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n // private handleError (error: Response | any) {\r\n // let errMsg: string;\r\n // if (error instanceof Response) {\r\n // const body = error.json() || '';\r\n // const err = body.error || JSON.stringify(body);\r\n // errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\r\n // }\r\n // else {\r\n // errMsg = error.message ? error.message : error.toString();\r\n // }\r\n\r\n // console.error(errMsg);\r\n\r\n // return observableThrowError(errMsg);\r\n // }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { environment } from \"environments/environment\";\r\nimport { EventRegistrationNonMember } from \"../classes/event/event-registration-non-member\";\r\nimport { Observable } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class NonMemberService {\r\n private URL: string = environment.apiURL;\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n\r\n public RegisterEvent(EventDetails: EventRegistrationNonMember) {\r\n return this.http.post(\r\n this.URL + \"/unauthenticated/nonMemberEventReg\",\r\n JSON.stringify(EventDetails),\r\n {\r\n headers: new HttpHeaders()\r\n .set(\"Content-Type\", \"application/json\"),\r\n }\r\n );\r\n }\r\n\r\n public getEventsList(): Observable {\r\n return this.http.get(this.URL + \"/unauthenticated/getFutureEvents\"); \r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\n\r\n@Injectable()\r\nexport class QuestionControlService {\r\n constructor() { }\r\n\r\n toFormGroup(questions, readOnly: string) {\r\n let isAdmin = JSON.parse(sessionStorage.getItem('user'));\r\n let group: any = {};\r\n\r\n questions.forEach(question => {\r\n // readOnly or disabled if only condition is conditionType = 3\r\n if (isAdmin && isAdmin.isAdmin !== 'Y' && (readOnly == 'Y' || (question.conditionQuestions[0] && question.conditionQuestions[0].conditionType == 3))) {\r\n if (question.questionType == 'date') {\r\n for (var key in question.responses) {\r\n let date = question.responses[key].value;\r\n\r\n if (date) {\r\n date = new Date(question.responses[key].value);\r\n }\r\n else {\r\n date = undefined;\r\n }\r\n\r\n group[question.responses[key].uniqueId] = new FormControl(\r\n { value: date, disabled: true }\r\n );\r\n }\r\n }\r\n\r\n if (question.questionType == 'TM' || question.questionType == 'TM2') {\r\n for (var key in question.responses) {\r\n let r: Date; let rHours, rMinutes, rTime;\r\n\r\n if (question.responses[key].value) {\r\n r = new Date(question.responses[key].value);\r\n rHours = r.getHours().toString().length < 2 ? '0' + r.getHours().toString() : r.getHours();\r\n rMinutes = r.getMinutes().toString().length < 2 ? '0' + r.getMinutes().toString() : r.getMinutes();\r\n\r\n rTime = rHours + ':' + rMinutes; \r\n }\r\n\r\n group[question.responses[key].uniqueId] = new FormControl(\r\n { value: rTime, disabled: true }\r\n );\r\n }\r\n }\r\n\r\n if (question.questionType != 'TM' && question.questionType != 'TM2' && question.questionType != 'date') {\r\n for (var key in question.responses) {\r\n group[question.responses[key].uniqueId] = new FormControl(\r\n { value: question.responses[key].value, disabled: true }\r\n );\r\n }\r\n }\r\n\r\n if (question.questionType == 'popup') {\r\n question.popupQuestions.forEach((popup, i) => {\r\n question.responses.forEach((response, j) => {\r\n\r\n if (popup.questionType == 'DT' && response.responseType == 'date') {\r\n let date = response.value;\r\n\r\n if (date) {\r\n date = new Date(response.value);\r\n }\r\n else {\r\n date = undefined;\r\n }\r\n\r\n group[response.uniqueId] = new FormControl(\r\n { value: date, disabled: true }\r\n );\r\n }\r\n \r\n if (popup.questionType == 'TM' && response.responseType == 'time') {\r\n let r: Date; let rHours, rMinutes, rTime;\r\n \r\n if (response.value) {\r\n r = new Date(response.value);\r\n rHours = r.getHours().toString().length < 2 ? '0' + r.getHours().toString() : r.getHours();\r\n rMinutes = r.getMinutes().toString().length < 2 ? '0' + r.getMinutes().toString() : r.getMinutes();\r\n \r\n rTime = rHours + ':' + rMinutes; \r\n }\r\n \r\n group[response.uniqueId] = new FormControl(\r\n { value: rTime, disabled: true }\r\n );\r\n }\r\n\r\n });\r\n });\r\n }\r\n }\r\n else {\r\n //Narrative\r\n if (question.questionType == 'narrative') {\r\n for (var key in question.responses) {\r\n group[question.responses[key].uniqueId] = new FormControl();\r\n }\r\n }\r\n\r\n //Text \r\n if (question.questionType == 'text') {\r\n for (var key in question.responses) {\r\n group[question.responses[key].uniqueId] = new FormControl(\r\n question.responses[key].value, Validators.maxLength(4000)\r\n );\r\n }\r\n }\r\n\r\n //Dropdown + Radio questions \r\n if (question.questionType == 'dropdown' || question.questionType == 'radio' || question.questionType == 'ldynpicture' || question.questionType == 'ldpicture' || question.questionType == 'ldrange') {\r\n for (var key in question.responses) {\r\n group[question.responses[key].uniqueId] = new FormControl(\r\n question.responses[key].value\r\n );\r\n }\r\n }\r\n\r\n //Date question\r\n if (question.questionType == 'date') {\r\n for (var key in question.responses) {\r\n let date = question.responses[key].value;\r\n\r\n if (date) {\r\n date = new Date(question.responses[key].value);\r\n }\r\n else {\r\n date = undefined;\r\n }\r\n\r\n group[question.responses[key].uniqueId] = new FormControl(\r\n date, [ \r\n DateMin(question.rangeMin),\r\n DateMax(question.rangeMax)\r\n ]\r\n );\r\n }\r\n }\r\n\r\n //Time question\r\n if (question.questionType == 'TM' || question.questionType == 'TM2') {\r\n for (var key in question.responses) {\r\n let r: Date; let rHours, rMinutes, rTime;\r\n\r\n if (question.responses[key].value) {\r\n r = new Date(question.responses[key].value);\r\n rHours = r.getHours().toString().length < 2 ? '0' + r.getHours().toString() : r.getHours();\r\n rMinutes = r.getMinutes().toString().length < 2 ? '0' + r.getMinutes().toString() : r.getMinutes();\r\n\r\n rTime = rHours + ':' + rMinutes; \r\n }\r\n\r\n group[question.responses[key].uniqueId] = new FormControl(\r\n rTime, Validators.pattern('^([01]?[0-9]|2[0-3]):[0-5][0-9]')\r\n );\r\n }\r\n }\r\n\r\n //Multiple dropdown\r\n if (question.questionType == 'multidropdown') {\r\n for (var key in question.responses) {\r\n group[question.responses[key].uniqueId] = new FormControl(\r\n question.responses[key].value\r\n );\r\n }\r\n }\r\n\r\n //Number question\r\n if (question.questionType == 'N1' || question.questionType == 'N2' || question.questionType == 'N3' || question.questionType == 'N4') {\r\n for (var key in question.responses) {\r\n group[question.responses[key].uniqueId] = new FormControl(\r\n question.responses[key].value, [\r\n Validators.min(question.rangeMin),\r\n Validators.max(question.rangeMax),\r\n (question.decimalPlaces != null ? Validators.pattern('^[+-]?[0-9]*(?:\\.[0-9]{0,' + question.decimalPlaces + '})?$') : Validators.pattern('^[+-]?[0-9]*(?:\\.[0-9]{0,10})?$'))\r\n ]\r\n );\r\n }\r\n }\r\n\r\n //Popup question\r\n if (question.questionType == 'popup') {\r\n question.popupQuestions.forEach((popup, i) => {\r\n question.responses.forEach((response, j) => {\r\n \r\n if (popup.questionType == 'N1' || popup.questionType == 'N2' || popup.questionType == 'N3') {\r\n if (response.popupItemQuestionPart == popup.displaySequence) {\r\n group[response.uniqueId] = new FormControl(\r\n response.value, [\r\n Validators.min(popup.rangeMin),\r\n Validators.max(popup.rangeMax),\r\n (popup.decimalPlaces != null ? Validators.pattern('^[+-]?[0-9]*(?:\\.[0-9]{0,' + popup.decimalPlaces + '})?$') : Validators.pattern('^[+-]?[0-9]*(?:\\.[0-9]{0,10})?$'))\r\n ]\r\n );\r\n }\r\n }\r\n\r\n if (popup.questionType == 'LS' || popup.questionType == 'PL') {\r\n if (response.popupItemQuestionPart == popup.displaySequence) {\r\n group[response.uniqueId] = new FormControl(\r\n response.value\r\n );\r\n }\r\n }\r\n\r\n if (popup.questionType == 'YN' || popup.questionType == 'YN2') {\r\n if (response.popupItemQuestionPart == popup.displaySequence) {\r\n group[response.uniqueId] = new FormControl(\r\n response.value\r\n );\r\n }\r\n }\r\n\r\n if (popup.questionType == 'TX') {\r\n if (response.popupItemQuestionPart == popup.displaySequence) {\r\n group[response.uniqueId] = new FormControl(\r\n response.value\r\n );\r\n }\r\n }\r\n\r\n //Date question\r\n if (popup.questionType == 'DT') {\r\n if (response.popupItemQuestionPart == popup.displaySequence) {\r\n if (response.questionPart == popup.questionPart) {\r\n let rawDate = response.value;\r\n let finalDate = undefined;\r\n \r\n if (rawDate) {\r\n finalDate = new Date(response.value).toLocaleDateString('en-GB');\r\n }\r\n \r\n group[response.uniqueId] = new FormControl(\r\n finalDate, [ \r\n DateMin(popup.rangeMin),\r\n DateMax(popup.rangeMax)\r\n ]\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (popup.questionType == 'TM' || popup.questionType == 'TM2') {\r\n if (response.popupItemQuestionPart == popup.displaySequence) {\r\n let r: Date; let rHours, rMinutes, rTime;\r\n\r\n if (response.value) {\r\n r = new Date(response.value);\r\n rHours = r.getHours().toString().length < 2 ? '0' + r.getHours().toString() : r.getHours();\r\n rMinutes = r.getMinutes().toString().length < 2 ? '0' + r.getMinutes().toString() : r.getMinutes();\r\n\r\n rTime = rHours + ':' + rMinutes; \r\n }\r\n\r\n group[response.uniqueId] = new FormControl(\r\n rTime, Validators.pattern('^([01]?[0-9]|2[0-3]):[0-5][0-9]')\r\n );\r\n }\r\n } \r\n\r\n });\r\n });\r\n }\r\n }\r\n });\r\n\r\n return new FormGroup(group);\r\n }\r\n}\r\n\r\nexport function DateMin(date) {\r\n return (c: FormControl): {[key: string]: boolean} => {\r\n let finalDate = c.value;\r\n\r\n if (c.value && c.value.toString().split(\"/\").length > 1)\r\n { \r\n let formDate = c.value.split(\"/\");\r\n let day = formDate[0];\r\n let month = formDate[1];\r\n let year = formDate[2];\r\n finalDate = new Date(year, month - 1, day); \r\n }\r\n \r\n return (finalDate >= date && (c.value != null || c.value != \"\")) || c.value == null || c.value == \"\" || date == \"\" || date == null ? null : {\r\n dateMin: true\r\n }\r\n };\r\n}\r\n\r\nexport function DateMax(date) {\r\n return (c: FormControl): {[key: string]: boolean} => {\r\n let finalDate = c.value;\r\n\r\n if (c.value && c.value.toString().split(\"/\").length > 1)\r\n { \r\n let formDate = c.value.split(\"/\");\r\n let day = formDate[0];\r\n let month = formDate[1];\r\n let year = formDate[2];\r\n finalDate = new Date(year, month - 1, day); \r\n }\r\n\r\n return (finalDate <= date && (c.value != null || c.value != \"\")) || c.value == null || c.value == \"\" || date == \"\" || date == null ? null : {\r\n dateMax: true\r\n }\r\n };\r\n}","import { Injectable } from '@angular/core';\r\n\r\nimport { DropdownQuestion } from '../classes/question/question-dropdown';\r\nimport { NarrativeQuestion } from '../classes/question/question-narrative';\r\nimport { TextboxQuestion } from '../classes/question/question-textbox';\r\nimport { NumberQuestion } from '../classes/question/question-number';\r\nimport { PopupQuestion } from '../classes/question/question-popup';\r\nimport { DateQuestion } from '../classes/question/question-date';\r\nimport { TimeQuestion } from '../classes/question/question-time';\r\nimport { RadioQuestion } from '../classes/question/question-radio';\r\n\r\n@Injectable()\r\nexport class QuestionService {\r\n \r\n constructor() {\r\n }\r\n\r\n getQuestionDetails(questionData) {\r\n let questions = { questionCount: 0, question: [] };\r\n\r\n questionData.questions.forEach(element => {\r\n\r\n let questionPrefix;\r\n if (element.questionPrefix === null) {\r\n questionPrefix = null;\r\n } else {\r\n questionPrefix = element.questionPrefix.trim();\r\n }\r\n\r\n if (element.questionType == 'N1' || element.questionType == 'N2' || element.questionType == 'N3' || element.questionType == 'N4') {\r\n\r\n let isParent;\r\n if (element.conditionQuestions[0] && element.conditionQuestions[0].conditionMin != null) {\r\n isParent = true;\r\n } else {\r\n isParent = false;\r\n }\r\n\r\n questions.question.push(new NumberQuestion({\r\n questionId: element.questionId,\r\n questionText: element.questionText,\r\n rawQuestionText: element.rawQuestionText,\r\n questionHelp: element.questionHelp,\r\n questionType: element.questionType,\r\n questionHeading: element.headings,\r\n responses: element.responses,\r\n totalResponses: element.totalResponses,\r\n displaySequence: element.displaySequence,\r\n formatModifier: element.formatModifier,\r\n rangeMin: element.rangeMin, \r\n rangeMax: element.rangeMax,\r\n decimalPlaces: element.decimalPlaces,\r\n showHeadings: element.showHeadings,\r\n conditionQuestions: element.conditionQuestions,\r\n isParent: isParent,\r\n modifierType: 'numeric',\r\n questionPrefix: questionPrefix,\r\n parentQuestionId: element.parentQuestionId,\r\n parentQuestionText: element.parentQuestionText,\r\n parentQuestionHelp: element.parentQuestionHelp,\r\n dataDefinition: element.dataDefinition\r\n }));\r\n }\r\n\r\n if (element.questionType == 'TX') {\r\n questions.question.push(new TextboxQuestion({\r\n questionId : element.questionId,\r\n questionText: element.questionText,\r\n rawQuestionText: element.rawQuestionText,\r\n questionHelp: element.questionHelp,\r\n questionType: 'text',\r\n responses: element.responses,\r\n displaySequence: element.displaySequence,\r\n formatModifier: element.formatModifier,\r\n conditionQuestions: element.conditionQuestions,\r\n modifierType: 'text',\r\n questionPrefix: questionPrefix,\r\n parentQuestionId: element.parentQuestionId,\r\n parentQuestionText: element.parentQuestionText,\r\n parentQuestionHelp: element.parentQuestionHelp,\r\n dataDefinition: element.dataDefinition\r\n }));\r\n }\r\n\r\n if (element.questionType == 'NR') {\r\n questions.question.push(new NarrativeQuestion({\r\n questionId : element.questionId,\r\n questionText: element.questionText,\r\n rawQuestionText: element.rawQuestionText,\r\n questionHelp: element.questionHelp,\r\n questionType: 'narrative',\r\n displaySequence: element.displaySequence,\r\n formatModifier: element.formatModifier,\r\n conditionQuestions: element.conditionQuestions,\r\n modifierType: 'narrative',\r\n questionPrefix: questionPrefix,\r\n parentQuestionId: element.parentQuestionId,\r\n parentQuestionText: element.parentQuestionText,\r\n parentQuestionHelp: element.parentQuestionHelp,\r\n dataDefinition: element.dataDefinition\r\n }));\r\n }\r\n\r\n if (element.questionType == 'YN' || element.questionType == 'YNX' || element.questionType == 'YNI') {\r\n let optionsYN = [\r\n { optionId: 'Y', optionName: 'Yes', displaySequence: 1 },\r\n { optionId: 'N', optionName: 'No', displaySequence: 2 },\r\n { optionId: '-', optionName: '-', displaySequence: null }\r\n ];\r\n\r\n let optionsYNX = [\r\n { optionId: 'Y', optionName: 'Yes', displaySequence: 1 },\r\n { optionId: 'N', optionName: 'No', displaySequence: 2 },\r\n { optionId: 'X', optionName: 'N/A', displaySequence: 3 },\r\n { optionId: '-', optionName: '-', displaySequence: null }\r\n ]; \r\n\r\n if (element.formatModifier == 'S') {\r\n optionsYN.splice(2, 1);\r\n optionsYNX.splice(3, 1);\r\n }\r\n\r\n let optionsYNI = [\r\n { optionId: 'Y', optionName: 'Yes', displaySequence: 1 },\r\n { optionId: 'N', optionName: 'No', displaySequence: 2 },\r\n { optionId: 'X', optionName: 'N/A (Northern Ireland only)', displaySequence: 3 },\r\n { optionId: '-', optionName: '-', displaySequence: null }\r\n ];\r\n\r\n let isParent;\r\n if (element.conditionQuestions[0] && element.conditionQuestions[0].conditionMin != null) {\r\n isParent = true;\r\n } else {\r\n isParent = false;\r\n }\r\n\r\n let options = element.questionType == 'YN' ? optionsYN : element.questionType == 'YNX' ? optionsYNX : optionsYNI;\r\n\r\n questions.question.push(new DropdownQuestion({\r\n questionId : element.questionId,\r\n questionText: element.questionText,\r\n rawQuestionText: element.rawQuestionText,\r\n questionHelp: element.questionHelp,\r\n questionType: 'dropdown',\r\n questionResponseType: 'YN',\r\n options: options,\r\n responses: element.responses,\r\n displaySequence: element.displaySequence,\r\n formatModifier: element.formatModifier,\r\n conditionQuestions: element.conditionQuestions,\r\n isParent: isParent,\r\n modifierType: 'dropdown',\r\n questionPrefix: questionPrefix,\r\n parentQuestionId: element.parentQuestionId,\r\n parentQuestionText: element.parentQuestionText,\r\n parentQuestionHelp: element.parentQuestionHelp,\r\n dataDefinition: element.dataDefinition\r\n }));\r\n }\r\n\r\n if (element.questionType == 'YN2' || element.questionType == 'YN3') {\r\n let options = [\r\n { optionId: 'Y', optionName: 'Yes', displaySequence: 1 },\r\n { optionId: 'N', optionName: 'No', displaySequence: 2 },\r\n { optionId: '-', optionName: '-', displaySequence: null }\r\n ];\r\n\r\n questions.question.push(new DropdownQuestion({\r\n questionId : element.questionId,\r\n questionText: element.questionText,\r\n rawQuestionText: element.rawQuestionText,\r\n questionHelp: element.questionHelp,\r\n questionHeading: element.headings,\r\n questionType: 'multidropdown',\r\n options: options,\r\n responses: element.responses,\r\n totalResponses: element.totalResponses,\r\n displaySequence: element.displaySequence,\r\n formatModifier: element.formatModifier,\r\n showHeadings: element.showHeadings,\r\n conditionQuestions: element.conditionQuestions,\r\n modifierType: 'dropdown',\r\n questionPrefix: questionPrefix,\r\n parentQuestionId: element.parentQuestionId,\r\n parentQuestionText: element.parentQuestionText,\r\n parentQuestionHelp: element.parentQuestionHelp,\r\n dataDefinition: element.dataDefinition\r\n }));\r\n }\r\n\r\n if (element.questionType == 'LS' || element.questionType == 'PL') {\r\n let options = element.options;\r\n\r\n options.push({ optionId: '-', optionName: '-', displaySequence: null })\r\n\r\n let isParent;\r\n if (element.conditionQuestions[0] && element.conditionQuestions[0].conditionMin != null) {\r\n isParent = true;\r\n } else {\r\n isParent = false;\r\n }\r\n\r\n questions.question.push(new DropdownQuestion({\r\n questionId : element.questionId,\r\n questionText: element.questionText,\r\n rawQuestionText: element.rawQuestionText,\r\n questionHelp: element.questionHelp,\r\n questionType: 'dropdown',\r\n options: options,\r\n responses: element.responses,\r\n displaySequence: element.displaySequence,\r\n conditionQuestions: element.conditionQuestions,\r\n isParent: isParent,\r\n modifierType: 'dropdown',\r\n questionPrefix: questionPrefix,\r\n parentQuestionId: element.parentQuestionId,\r\n parentQuestionText: element.parentQuestionText,\r\n parentQuestionHelp: element.parentQuestionHelp,\r\n dataDefinition: element.dataDefinition\r\n }));\r\n }\r\n\r\n if (element.questionType == 'RD') {\r\n questions.question.push(new RadioQuestion({\r\n questionId : element.questionId,\r\n questionText: element.questionText,\r\n rawQuestionText: element.rawQuestionText,\r\n questionHelp: element.questionHelp,\r\n questionType: 'radio',\r\n options: element.options,\r\n responses: element.responses,\r\n displaySequence: element.displaySequence,\r\n conditionQuestions: element.conditionQuestions,\r\n modifierType: 'radio',\r\n questionPrefix: questionPrefix,\r\n parentQuestionId: element.parentQuestionId,\r\n parentQuestionText: element.parentQuestionText,\r\n parentQuestionHelp: element.parentQuestionHelp,\r\n dataDefinition: element.dataDefinition\r\n }));\r\n }\r\n\r\n if (element.questionType == 'DT') {\r\n questions.question.push(new DateQuestion({\r\n questionId : element.questionId,\r\n questionText: element.questionText,\r\n rawQuestionText: element.rawQuestionText,\r\n questionHelp: element.questionHelp,\r\n questionType: 'date',\r\n options: element.options,\r\n responses: element.responses,\r\n rangeMin: +element.rangeMin ? new Date(+element.rangeMin) : null, \r\n rangeMax: +element.rangeMax ? new Date(+element.rangeMax) : null,\r\n displaySequence: element.displaySequence,\r\n formatModifier: element.formatModifier,\r\n conditionQuestions: element.conditionQuestions,\r\n modifierType: 'datetime',\r\n questionPrefix: questionPrefix,\r\n parentQuestionId: element.parentQuestionId,\r\n parentQuestionText: element.parentQuestionText,\r\n parentQuestionHelp: element.parentQuestionHelp,\r\n dataDefinition: element.dataDefinition\r\n }));\r\n }\r\n\r\n if (element.questionType == 'TM' || element.questionType == 'TM2') {\r\n questions.question.push(new TimeQuestion({\r\n questionId : element.questionId,\r\n questionText: element.questionText,\r\n rawQuestionText: element.rawQuestionText,\r\n questionHelp: element.questionHelp,\r\n questionType: element.questionType,\r\n options: element.options,\r\n responses: element.responses,\r\n displaySequence: element.displaySequence,\r\n formatModifier: element.formatModifier,\r\n conditionQuestions: element.conditionQuestions,\r\n modifierType: 'datetime',\r\n questionPrefix: questionPrefix,\r\n parentQuestionId: element.parentQuestionId,\r\n parentQuestionText: element.parentQuestionText,\r\n parentQuestionHelp: element.parentQuestionHelp,\r\n dataDefinition: element.dataDefinition\r\n }));\r\n }\r\n\r\n if (element.popupQuestions.length > 0) {\r\n element.popupQuestions.forEach(innerElement => {\r\n\r\n innerElement.modifierType = 'popup';\r\n\r\n if (innerElement.questionType == 'DT') {\r\n innerElement.rangeMin = +innerElement.rangeMin ? new Date(+innerElement.rangeMin) : null\r\n innerElement.rangeMax = +innerElement.rangeMax ? new Date(+innerElement.rangeMax) : null\r\n innerElement.modifierType = 'popup-datetime';\r\n }\r\n\r\n if (innerElement.questionType == 'TM2') {\r\n innerElement.modifierType = 'popup-datetime';\r\n }\r\n\r\n if (innerElement.questionType == 'YN' || innerElement.questionType == 'YN2') {\r\n let optionsYN = [\r\n { optionId: 'Y', optionName: 'Yes', displaySequence: 1 },\r\n { optionId: 'N', optionName: 'No', displaySequence: 2 },\r\n { optionId: '-', optionName: '-', displaySequence: null }\r\n ]; \r\n innerElement.options = optionsYN;\r\n innerElement.modifierType = 'popup-dropdown';\r\n }\r\n\r\n if (innerElement.questionType == 'N1' || innerElement.questionType == 'N2' || innerElement.questionType == 'N3' || innerElement.questionType == 'N4') {\r\n innerElement.modifierType = 'popup-numeric';\r\n }\r\n\r\n });\r\n\r\n questions.question.push(new PopupQuestion({\r\n questionId : element.questionId,\r\n questionText: element.questionText,\r\n rawQuestionText: element.rawQuestionText,\r\n questionHelp: element.questionHelp,\r\n questionType: 'popup',\r\n noColumns: element.noColumns,\r\n popupQuestions: element.popupQuestions,\r\n popupDescriptionText: element.popupDescriptionText,\r\n responses: element.responses.sort((a, b) => a.popupItemQuestionPart - b.popupItemQuestionPart),\r\n displaySequence: element.displaySequence,\r\n questionPart: element.questionPart,\r\n formatModifier: element.formatModifier,\r\n conditionQuestions: element.conditionQuestions,\r\n modifierType: 'popup',\r\n parentQuestionId: element.parentQuestionId,\r\n parentQuestionText: element.parentQuestionText,\r\n parentQuestionHelp: element.parentQuestionHelp,\r\n dataDefinition: element.dataDefinition\r\n }));\r\n }\r\n\r\n if (element.questionType != 'NR') {\r\n questions.questionCount++;\r\n }\r\n });\r\n\r\n questions.question.sort((a, b) => a.displaySequence - b.displaySequence);\r\n\r\n return questions;\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { environment } from 'environments/environment'\r\n\r\n@Injectable()\r\nexport class ValidationService {\r\n private URL: string = environment.apiURL;\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n public getValidations(projectId, year): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'validation/getValidations', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: new HttpParams().set('projectId', projectId.toString()).set('year', year.toString())\r\n }\r\n );\r\n }\r\n\r\n public getValidation(validationId): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'validation/getValidation', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: new HttpParams().set('validationId', validationId.toString())\r\n }\r\n );\r\n }\r\n\r\n public addValidation(validation): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.post(\r\n this.URL + 'validation/addValidation', JSON.stringify(validation), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public deleteValidation(validationId: number): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.delete(\r\n this.URL + 'validation/deleteValidation', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: new HttpParams().set('validationId', validationId.toString())\r\n }\r\n );\r\n }\r\n\r\n public getValidationResponses(reportId, year, submissionId, serviceItemId): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'validation/getValidationResponses', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: new HttpParams().set('reportId', reportId.toString()).set('year', year.toString()).set('submissionId', submissionId.toString()).set('serviceItemId', serviceItemId.toString())\r\n }\r\n );\r\n }\r\n\r\n public addValidationResponse(validationResponse): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.post(\r\n this.URL + 'validation/addValidationResponse', JSON.stringify(validationResponse), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public getDeputyProjectLeads(projectId, year, submissionId): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.get(\r\n this.URL + 'validation/getDeputyProjectLeads', {\r\n headers: new HttpHeaders().set('Authorization', token),\r\n params: new HttpParams().set('projectId', projectId.toString()).set('year', year.toString()).set('submissionId', submissionId.toString())\r\n }\r\n );\r\n }\r\n\r\n public changeValidationStatus(validation): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.post(\r\n this.URL + 'validation/changeValidationStatus', JSON.stringify(validation), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public changeValidationVisibility(validation): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.post(\r\n this.URL + 'validation/changeValidationVisibility', JSON.stringify(validation), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n public editValidationNote(validation): Observable {\r\n let token = localStorage.getItem('id_token');\r\n\r\n return this.http.post(\r\n this.URL + 'validation/editValidationNote', JSON.stringify(validation), {\r\n headers: new HttpHeaders().set('Authorization', token).set('Content-Type', 'application/json')\r\n }\r\n );\r\n }\r\n\r\n}","/*\r\n Code Source: http://brianflove.com/2016/10/10/angular-2-window-scroll-event-using-hostlistener/\r\n*/\r\n\r\nimport { isPlatformBrowser } from \"@angular/common\";\r\nimport { ClassProvider, FactoryProvider, InjectionToken, PLATFORM_ID } from '@angular/core';\r\n\r\nexport const WINDOW = new InjectionToken('WindowToken');\r\n\r\nexport abstract class WindowRef {\r\n get nativeWindow(): Window | Object {\r\n throw new Error('Not implemented.');\r\n }\r\n}\r\n\r\nexport class BrowserWindowRef extends WindowRef {\r\n constructor() {\r\n super();\r\n }\r\n get nativeWindow(): Window | Object {\r\n return window;\r\n }\r\n}\r\n\r\nexport function windowFactory(browserWindowRef: BrowserWindowRef, platformId: Object): Window | Object {\r\n if (isPlatformBrowser(platformId)) {\r\n return browserWindowRef.nativeWindow;\r\n }\r\n return new Object();\r\n}\r\n\r\nexport const browserWindowProvider: ClassProvider = {\r\n provide: WindowRef,\r\n useClass: BrowserWindowRef\r\n};\r\n\r\nexport const windowProvider: FactoryProvider = {\r\n provide: WINDOW,\r\n useFactory: windowFactory,\r\n deps: [ WindowRef, PLATFORM_ID ]\r\n};\r\n\r\nexport const WINDOW_PROVIDERS = [\r\n browserWindowProvider,\r\n windowProvider\r\n];","import { AbstractControl } from '@angular/forms';\r\n\r\nexport const emailMatcher = (control: AbstractControl): { [key: string]: boolean } => {\r\n const email = control.get('emailAddress');\r\n const confirm = control.get('confirmEmailAddress');\r\n if (!email || !confirm) return null;\r\n return email.value === confirm.value ? null : { nomatch: true };\r\n};","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport function forbiddenNameValidator(nameRe: RegExp): ValidatorFn {\r\n return (control: AbstractControl): {[key: string]: any} | null => {\r\n const forbidden = nameRe.test(control.value);\r\n return forbidden ? {'forbiddenName': {value: control.value}} : null;\r\n };\r\n}","// The file contents for the current environment will overwrite these during build.\r\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\r\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\r\n// The list of which env maps to which file can be found in `.angular-cli.json`.\r\n\r\nexport const environment = {\r\n production: false,\r\n domain: \"membertest.bmchealth.co.uk\",\r\n apiURL: \"https://membersapidev.nhsbenchmarking.nhs.uk/\", //\"http://localhost:1337/\",\r\n icsApiURL: \"https://icsapidev.nhsbenchmarking.nhs.uk/\"\r\n};","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule);\r\n"],"sourceRoot":""}