{"version":3,"file":"js/app-legacy.3cfb3965.js","mappings":"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","sources":["webpack://ossi.web/./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://ossi.web/./src/types/enums.ts","webpack://ossi.web/./src/types/custom.ts","webpack://ossi.web/./src/store/config.module.ts","webpack://ossi.web/./src/store/alert.module.ts","webpack://ossi.web/./src/helpers/auth/authorizationhelper.ts","webpack://ossi.web/./src/services/user.service.ts","webpack://ossi.web/./src/store/authentication.module.ts","webpack://ossi.web/./src/helpers/auth/auth-header.ts","webpack://ossi.web/./src/helpers/datehelper.ts","webpack://ossi.web/./src/helpers/httphelper.ts","webpack://ossi.web/./src/helpers/codehelper.ts","webpack://ossi.web/./src/services/code.service.ts","webpack://ossi.web/./src/store/code.module.ts","webpack://ossi.web/./src/services/member.service.ts","webpack://ossi.web/./src/services/district.service.ts","webpack://ossi.web/./src/services/section.service.ts","webpack://ossi.web/./src/services/meeting.service.ts","webpack://ossi.web/./src/store/districts.module.ts","webpack://ossi.web/./src/store/sections.module.ts","webpack://ossi.web/./src/store/signingAgreement.module.ts","webpack://ossi.web/./src/services/preparednessPlan.service.ts","webpack://ossi.web/./src/store/preparednessPlan.module.ts","webpack://ossi.web/./src/store/members.module.ts","webpack://ossi.web/./src/store/meetings.module.ts","webpack://ossi.web/./src/services/employee.service.ts","webpack://ossi.web/./src/store/employees.module.ts","webpack://ossi.web/./src/services/role.service.ts","webpack://ossi.web/./src/store/roles.module.ts","webpack://ossi.web/./src/services/externalForm.service.ts","webpack://ossi.web/./src/store/externalForm.module.ts","webpack://ossi.web/./src/store/index.ts","webpack://ossi.web/./src/services/main.service.ts","webpack://ossi.web/./src/App.vue?5bc8","webpack://ossi.web/./src/components/layout/Header.vue?e14c","webpack://ossi.web/./src/components/layout/SwitchLanguage.vue?ae4c","webpack://ossi.web/./src/components/layout/SwitchLanguage.vue?06d9","webpack://ossi.web/./src/components/layout/SwitchLanguage.vue?87a6","webpack://ossi.web/./src/components/layout/SwitchLanguage.vue","webpack://ossi.web/./src/components/SPRTickCrossWarning.vue?b0c0","webpack://ossi.web/./src/components/SPRTickCrossWarning.vue?a804","webpack://ossi.web/./src/components/SPRTickCrossWarning.vue?4c14","webpack://ossi.web/./src/components/SPRTickCrossWarning.vue","webpack://ossi.web/./src/components/layout/Header.vue?970e","webpack://ossi.web/./src/components/layout/Header.vue?33d5","webpack://ossi.web/./src/components/layout/Header.vue","webpack://ossi.web/./src/components/layout/Footer.vue?9d6e","webpack://ossi.web/src/components/layout/Footer.vue","webpack://ossi.web/./src/components/layout/Footer.vue?71d3","webpack://ossi.web/./src/components/layout/Footer.vue","webpack://ossi.web/./src/components/Alert.vue?8856","webpack://ossi.web/./src/components/Alert.vue?23ae","webpack://ossi.web/./src/components/Alert.vue?df12","webpack://ossi.web/./src/components/Alert.vue","webpack://ossi.web/./src/components/Loading.vue?4cdc","webpack://ossi.web/./src/components/Spinner.vue?e215","webpack://ossi.web/./src/components/Spinner.vue?689e","webpack://ossi.web/./src/components/Spinner.vue?9a6e","webpack://ossi.web/./src/components/Spinner.vue","webpack://ossi.web/./src/components/Loading.vue?0434","webpack://ossi.web/./src/components/Loading.vue?b3a0","webpack://ossi.web/./src/components/Loading.vue","webpack://ossi.web/./src/App.vue?286c","webpack://ossi.web/./src/App.vue?bd07","webpack://ossi.web/./src/App.vue","webpack://ossi.web/./src/views/Home.vue?0e83","webpack://ossi.web/./src/components/LinkIconBox.vue?a25d","webpack://ossi.web/./src/components/LinkIconBox.vue?534f","webpack://ossi.web/./src/components/LinkIconBox.vue?9595","webpack://ossi.web/./src/components/LinkIconBox.vue","webpack://ossi.web/./src/components/StatisticTile.vue?916a","webpack://ossi.web/./src/components/StatisticTile.vue?d1e1","webpack://ossi.web/./src/components/StatisticTile.vue?f544","webpack://ossi.web/./src/components/StatisticTile.vue","webpack://ossi.web/./src/views/Home.vue?7587","webpack://ossi.web/./src/views/Home.vue?faa5","webpack://ossi.web/./src/views/Home.vue","webpack://ossi.web/./src/views/Error.vue?400d","webpack://ossi.web/./src/views/Error.vue?cc10","webpack://ossi.web/./src/views/Error.vue?76dd","webpack://ossi.web/./src/views/Error.vue","webpack://ossi.web/./src/views/Login.vue?b25f","webpack://ossi.web/./src/components/LoginForm.vue?97cf","webpack://ossi.web/./src/components/forms/SprFormText.vue?156c","webpack://ossi.web/./src/components/Tooltip.vue?bb7f","webpack://ossi.web/./src/components/Tooltip.vue?c6a3","webpack://ossi.web/./src/components/Tooltip.vue?922d","webpack://ossi.web/./src/components/Tooltip.vue","webpack://ossi.web/./src/components/forms/SprFormText.vue?815a","webpack://ossi.web/./src/components/forms/SprFormText.vue?62b1","webpack://ossi.web/./src/components/forms/SprFormText.vue","webpack://ossi.web/./src/components/forms/SprFormPassword.vue?2eec","webpack://ossi.web/./src/components/forms/SprFormPassword.vue?48e6","webpack://ossi.web/./src/components/forms/SprFormPassword.vue?4fc6","webpack://ossi.web/./src/components/forms/SprFormPassword.vue","webpack://ossi.web/./src/components/forms/SprButton.vue?9863","webpack://ossi.web/./src/components/forms/SprButton.vue?1f25","webpack://ossi.web/./src/components/forms/SprButton.vue?20f2","webpack://ossi.web/./src/components/forms/SprButton.vue","webpack://ossi.web/./src/components/LoginForm.vue?487b","webpack://ossi.web/./src/components/LoginForm.vue?4138","webpack://ossi.web/./src/components/LoginForm.vue","webpack://ossi.web/./src/views/Login.vue?e010","webpack://ossi.web/./src/views/Login.vue?d092","webpack://ossi.web/./src/views/Login.vue","webpack://ossi.web/./src/views/Logout.vue?6f6e","webpack://ossi.web/./src/views/Logout.vue?078d","webpack://ossi.web/./src/views/Logout.vue?cbb8","webpack://ossi.web/./src/views/Logout.vue","webpack://ossi.web/./src/views/ADResponse.vue?f872","webpack://ossi.web/./src/views/ADResponse.vue?05c2","webpack://ossi.web/./src/views/ADResponse.vue?1181","webpack://ossi.web/./src/views/ADResponse.vue","webpack://ossi.web/./src/views/Districts.vue?4306","webpack://ossi.web/./src/components/Back.vue?c989","webpack://ossi.web/./src/components/Back.vue?3406","webpack://ossi.web/./src/components/Back.vue?6128","webpack://ossi.web/./src/components/Back.vue","webpack://ossi.web/./src/views/Districts.vue?29c5","webpack://ossi.web/./src/views/Districts.vue?3d1e","webpack://ossi.web/./src/views/Districts.vue","webpack://ossi.web/./src/views/District.vue?944f","webpack://ossi.web/./src/components/meetings/DistrictPositionOfTrustErrors.vue?e508","webpack://ossi.web/./src/components/meetings/DistrictPositionOfTrustErrors.vue?490f","webpack://ossi.web/./src/components/meetings/DistrictPositionOfTrustErrors.vue?d6b5","webpack://ossi.web/./src/components/meetings/DistrictPositionOfTrustErrors.vue","webpack://ossi.web/./src/views/District.vue?801a","webpack://ossi.web/./src/views/District.vue?f25d","webpack://ossi.web/./src/views/District.vue","webpack://ossi.web/./src/views/DistrictMeetings.vue?a395","webpack://ossi.web/./src/components/meetings/MeetingsFilter.vue?ea97","webpack://ossi.web/./src/components/forms/SprFormDropdown.vue?9bcc","webpack://ossi.web/./src/components/forms/SprFormDropdown.vue?833e","webpack://ossi.web/./src/components/forms/SprFormDropdown.vue?3a9d","webpack://ossi.web/./src/components/forms/SprFormDropdown.vue","webpack://ossi.web/./src/components/forms/SprFormCheckboxList.vue?d7f1","webpack://ossi.web/./src/components/forms/SprFormCheckbox.vue?2d36","webpack://ossi.web/./src/components/forms/SprFormCheckbox.vue?6696","webpack://ossi.web/./src/components/forms/SprFormCheckbox.vue?cdf5","webpack://ossi.web/./src/components/forms/SprFormCheckbox.vue","webpack://ossi.web/./src/components/forms/SprFormCheckboxList.vue?56e7","webpack://ossi.web/./src/components/forms/SprFormCheckboxList.vue?8945","webpack://ossi.web/./src/components/forms/SprFormCheckboxList.vue","webpack://ossi.web/./src/components/forms/SprFormDatePicker.vue?8323","webpack://ossi.web/./src/components/forms/SprFormDatePicker.vue?18b8","webpack://ossi.web/./src/components/forms/SprFormDatePicker.vue?9864","webpack://ossi.web/./src/components/forms/SprFormDatePicker.vue","webpack://ossi.web/./src/components/meetings/MeetingsFilter.vue?a61a","webpack://ossi.web/./src/components/meetings/MeetingsFilter.vue?f382","webpack://ossi.web/./src/components/meetings/MeetingsFilter.vue","webpack://ossi.web/./src/components/meetings/MeetingsList.vue?a62d","webpack://ossi.web/./src/components/meetings/MeetingStatus.vue?9e3b","webpack://ossi.web/./src/components/meetings/MeetingStatus.vue?2d3b","webpack://ossi.web/./src/components/meetings/MeetingStatus.vue?2db8","webpack://ossi.web/./src/components/meetings/MeetingStatus.vue","webpack://ossi.web/./src/components/meetings/MeetingsList.vue?0628","webpack://ossi.web/./src/components/meetings/MeetingsList.vue?4a8e","webpack://ossi.web/./src/components/meetings/MeetingsList.vue","webpack://ossi.web/./src/views/DistrictMeetings.vue?bde7","webpack://ossi.web/./src/views/DistrictMeetings.vue?2b24","webpack://ossi.web/./src/views/DistrictMeetings.vue","webpack://ossi.web/./src/views/DistrictMembers.vue?c591","webpack://ossi.web/./src/components/members/MemberSearch.vue?e8be","webpack://ossi.web/./src/components/members/MemberSearchCriteria.vue?dfc7","webpack://ossi.web/./src/components/members/MemberSearchCriteria.vue?bc74","webpack://ossi.web/./src/components/members/MemberSearchCriteria.vue?2b24","webpack://ossi.web/./src/components/members/MemberSearchCriteria.vue","webpack://ossi.web/./src/components/members/MembersList.vue?45fc","webpack://ossi.web/./src/components/members/MemberInfoRow.vue?9adc","webpack://ossi.web/./src/helpers/addresshelper.ts","webpack://ossi.web/./src/components/members/MemberInfoRow.vue?db0f","webpack://ossi.web/./src/components/members/MemberInfoRow.vue?6bee","webpack://ossi.web/./src/components/members/MemberInfoRow.vue","webpack://ossi.web/./src/components/members/MemberBasicInfoRow.vue?a474","webpack://ossi.web/./src/components/members/MemberBasicInfoRow.vue?cd62","webpack://ossi.web/./src/components/members/MemberBasicInfoRow.vue?97f3","webpack://ossi.web/./src/components/members/MemberBasicInfoRow.vue","webpack://ossi.web/./src/components/members/MembersList.vue?5cd3","webpack://ossi.web/./src/components/members/MembersList.vue?feb8","webpack://ossi.web/./src/components/members/MembersList.vue","webpack://ossi.web/./src/components/Pager.vue?c6e8","webpack://ossi.web/./src/components/Pager.vue?56ac","webpack://ossi.web/./src/components/Pager.vue?4c53","webpack://ossi.web/./src/components/Pager.vue","webpack://ossi.web/./src/components/members/MemberSearch.vue?3955","webpack://ossi.web/./src/components/members/MemberSearch.vue?c8de","webpack://ossi.web/./src/components/members/MemberSearch.vue","webpack://ossi.web/./src/components/districts/DistrictRolesList.vue?43cb","webpack://ossi.web/./src/components/sections/SectionRoleItem.vue?25ab","webpack://ossi.web/./src/components/sections/SectionRoleItem.vue?ddf2","webpack://ossi.web/./src/components/sections/SectionRoleItem.vue?0232","webpack://ossi.web/./src/components/sections/SectionRoleItem.vue","webpack://ossi.web/./src/components/districts/DistrictRolesList.vue?e48d","webpack://ossi.web/./src/components/districts/DistrictRolesList.vue?341b","webpack://ossi.web/./src/components/districts/DistrictRolesList.vue","webpack://ossi.web/./src/views/DistrictMembers.vue?512c","webpack://ossi.web/./src/views/DistrictMembers.vue?e616","webpack://ossi.web/./src/views/DistrictMembers.vue","webpack://ossi.web/./src/views/Sections.vue?ee7e","webpack://ossi.web/./src/views/Sections.vue?e35c","webpack://ossi.web/./src/views/Sections.vue?13c8","webpack://ossi.web/./src/views/Sections.vue","webpack://ossi.web/./src/views/Section.vue?f88a","webpack://ossi.web/./src/components/sections/SectionSummary.vue?3867","webpack://ossi.web/./src/components/sections/AddressEditor.vue?895a","webpack://ossi.web/./src/components/sections/AddressEditor.vue?30a3","webpack://ossi.web/./src/components/sections/AddressEditor.vue?04cf","webpack://ossi.web/./src/components/sections/AddressEditor.vue","webpack://ossi.web/./src/components/sections/SectionSummary.vue?ed15","webpack://ossi.web/./src/components/sections/SectionSummary.vue?7481","webpack://ossi.web/./src/components/sections/SectionSummary.vue","webpack://ossi.web/./src/components/sections/ActivePositionsOfTrustSummary.vue?490e","webpack://ossi.web/./src/components/sections/ActivePositionsOfTrustSummary.vue?464c","webpack://ossi.web/./src/components/sections/ActivePositionsOfTrustSummary.vue?a618","webpack://ossi.web/./src/components/sections/ActivePositionsOfTrustSummary.vue","webpack://ossi.web/./src/components/sections/UpcomingPositionsOfTrustSummary.vue?4045","webpack://ossi.web/./src/components/sections/UpcomingPositionsOfTrustSummary.vue?c816","webpack://ossi.web/./src/components/sections/UpcomingPositionsOfTrustSummary.vue?da7e","webpack://ossi.web/./src/components/sections/UpcomingPositionsOfTrustSummary.vue","webpack://ossi.web/./src/views/Section.vue?b5bd","webpack://ossi.web/./src/views/Section.vue?8f5a","webpack://ossi.web/./src/views/Section.vue","webpack://ossi.web/./src/views/PreparednessPlan.vue?ba9a","webpack://ossi.web/./src/components/sections/PreparednessPlan.vue?ead3","webpack://ossi.web/./src/components/sections/PreparednessPlan.vue?0d58","webpack://ossi.web/./src/components/sections/PreparednessPlan.vue?7587","webpack://ossi.web/./src/components/sections/PreparednessPlan.vue","webpack://ossi.web/./src/views/PreparednessPlan.vue?cebe","webpack://ossi.web/./src/views/PreparednessPlan.vue?6c9d","webpack://ossi.web/./src/views/PreparednessPlan.vue","webpack://ossi.web/./src/views/Members.vue?70a7","webpack://ossi.web/./src/views/Members.vue?02a4","webpack://ossi.web/./src/views/Members.vue?de58","webpack://ossi.web/./src/views/Members.vue","webpack://ossi.web/./src/views/SectionMembers.vue?6bf8","webpack://ossi.web/./src/components/sections/SectionRolesList.vue?6da5","webpack://ossi.web/./src/components/sections/SectionRolesList.vue?41ee","webpack://ossi.web/./src/components/sections/SectionRolesList.vue?9fef","webpack://ossi.web/./src/components/sections/SectionRolesList.vue","webpack://ossi.web/./src/components/sections/SectionMembersList.vue?ccec","webpack://ossi.web/./src/components/sections/SectionMembersList.vue?a921","webpack://ossi.web/./src/components/sections/SectionMembersList.vue?bd5f","webpack://ossi.web/./src/components/sections/SectionMembersList.vue","webpack://ossi.web/./src/views/SectionMembers.vue?f57c","webpack://ossi.web/./src/views/SectionMembers.vue?26a6","webpack://ossi.web/./src/views/SectionMembers.vue","webpack://ossi.web/./src/views/EditMember.vue?9204","webpack://ossi.web/./src/helpers/validationhelper.ts","webpack://ossi.web/./src/components/members/MemberDetails.vue?63ab","webpack://ossi.web/./src/components/members/MemberDetails.vue?d8a6","webpack://ossi.web/./src/components/members/MemberDetails.vue?af57","webpack://ossi.web/./src/components/members/MemberDetails.vue","webpack://ossi.web/./src/components/members/MemberRoleDetails.vue?b744","webpack://ossi.web/./src/components/members/MemberRoleDetails.vue?74fd","webpack://ossi.web/./src/components/members/MemberRoleDetails.vue?13aa","webpack://ossi.web/./src/components/members/MemberRoleDetails.vue","webpack://ossi.web/./src/components/members/MemberPositionDetails.vue?30c8","webpack://ossi.web/./src/components/members/MemberPositionDetails.vue?5dc5","webpack://ossi.web/./src/components/members/MemberPositionDetails.vue?0730","webpack://ossi.web/./src/components/members/MemberPositionDetails.vue","webpack://ossi.web/./src/views/EditMember.vue?ab9b","webpack://ossi.web/./src/views/EditMember.vue?343f","webpack://ossi.web/./src/views/EditMember.vue","webpack://ossi.web/./src/views/Meetings.vue?20e9","webpack://ossi.web/./src/views/Meetings.vue?86f3","webpack://ossi.web/./src/views/Meetings.vue?e05d","webpack://ossi.web/./src/views/Meetings.vue","webpack://ossi.web/./src/views/AddMeeting.vue?71bc","webpack://ossi.web/./src/components/meetings/MeetingDetailsForm.vue?6508","webpack://ossi.web/./src/components/forms/SprFormTextArea.vue?a199","webpack://ossi.web/./src/components/forms/SprFormTextArea.vue?20f3","webpack://ossi.web/./src/components/forms/SprFormTextArea.vue?9e85","webpack://ossi.web/./src/components/forms/SprFormTextArea.vue","webpack://ossi.web/./src/components/meetings/MeetingDetailsForm.vue?bb3f","webpack://ossi.web/./src/components/meetings/MeetingDetailsForm.vue?30ee","webpack://ossi.web/./src/components/meetings/MeetingDetailsForm.vue","webpack://ossi.web/./src/views/AddMeeting.vue?1e37","webpack://ossi.web/./src/views/AddMeeting.vue?25b9","webpack://ossi.web/./src/views/AddMeeting.vue","webpack://ossi.web/./src/views/EditMeeting.vue?a73d","webpack://ossi.web/./src/components/meetings/MeetingMinutesForm.vue?4a36","webpack://ossi.web/./src/components/forms/SprFormFileUpload.vue?261a","webpack://ossi.web/./src/components/forms/SprFormFileUpload.vue?cd01","webpack://ossi.web/./src/components/forms/SprFormFileUpload.vue?b32b","webpack://ossi.web/./src/components/forms/SprFormFileUpload.vue","webpack://ossi.web/./src/components/meetings/MeetingMinutesForm.vue?0fb4","webpack://ossi.web/./src/components/meetings/MeetingMinutesForm.vue?416f","webpack://ossi.web/./src/components/meetings/MeetingMinutesForm.vue","webpack://ossi.web/./src/components/meetings/AddMemberPosition.vue?d712","webpack://ossi.web/./src/components/meetings/MemberPositionForm.vue?8bbc","webpack://ossi.web/./src/components/forms/SprTypeahead.vue?7f94","webpack://ossi.web/./src/components/forms/SprTypeahead.vue?ba9a","webpack://ossi.web/./src/components/forms/SprTypeahead.vue?e8b7","webpack://ossi.web/./src/components/forms/SprTypeahead.vue","webpack://ossi.web/./src/components/forms/SprHiddenDateField.vue?a298","webpack://ossi.web/./src/components/forms/SprHiddenDateField.vue?9655","webpack://ossi.web/./src/components/forms/SprHiddenDateField.vue?6cbe","webpack://ossi.web/./src/components/forms/SprHiddenDateField.vue","webpack://ossi.web/./src/components/meetings/MemberPositionForm.vue?c2cc","webpack://ossi.web/./src/components/meetings/MemberPositionForm.vue?efd6","webpack://ossi.web/./src/components/meetings/MemberPositionForm.vue","webpack://ossi.web/./src/components/meetings/AddMemberPosition.vue?707a","webpack://ossi.web/./src/components/meetings/AddMemberPosition.vue?677b","webpack://ossi.web/./src/components/meetings/AddMemberPosition.vue","webpack://ossi.web/./src/components/meetings/MeetingMemberList.vue?eca3","webpack://ossi.web/./src/components/meetings/MeetingMemberList.vue?3c34","webpack://ossi.web/./src/components/meetings/MeetingMemberList.vue?c712","webpack://ossi.web/./src/components/meetings/MeetingMemberList.vue","webpack://ossi.web/./src/components/meetings/MeetingCrmErrors.vue?f137","webpack://ossi.web/./src/components/meetings/MeetingCrmErrors.vue?eec9","webpack://ossi.web/./src/components/meetings/MeetingCrmErrors.vue?cc07","webpack://ossi.web/./src/components/meetings/MeetingCrmErrors.vue","webpack://ossi.web/./src/components/meetings/ActivePositionsOfTrust.vue?beac","webpack://ossi.web/./src/components/meetings/ActivePositionsOfTrust.vue?831d","webpack://ossi.web/./src/components/meetings/ActivePositionsOfTrust.vue?9bec","webpack://ossi.web/./src/components/meetings/ActivePositionsOfTrust.vue","webpack://ossi.web/./src/views/EditMeeting.vue?2cbb","webpack://ossi.web/./src/views/EditMeeting.vue?583c","webpack://ossi.web/./src/views/EditMeeting.vue","webpack://ossi.web/./src/views/EmployeeList.vue?3577","webpack://ossi.web/./src/components/employees/EmployeeDetailsForm.vue?0f46","webpack://ossi.web/./src/components/employees/EmployeeDetailsForm.vue?9f32","webpack://ossi.web/./src/components/employees/EmployeeDetailsForm.vue?636e","webpack://ossi.web/./src/components/employees/EmployeeDetailsForm.vue","webpack://ossi.web/./src/views/EmployeeList.vue?ef56","webpack://ossi.web/./src/views/EmployeeList.vue?d463","webpack://ossi.web/./src/views/EmployeeList.vue","webpack://ossi.web/./src/views/ExternalForms.vue?74db","webpack://ossi.web/./src/views/ExternalFormRow.vue?b707","webpack://ossi.web/./src/views/ExternalFormRow.vue?6f13","webpack://ossi.web/./src/views/ExternalFormRow.vue?217b","webpack://ossi.web/./src/views/ExternalFormRow.vue","webpack://ossi.web/./src/views/ExternalForms.vue?e236","webpack://ossi.web/./src/views/ExternalForms.vue?68ab","webpack://ossi.web/./src/views/ExternalForms.vue","webpack://ossi.web/./src/views/Reports.vue?9962","webpack://ossi.web/./src/components/sections/OfficialLetterRequests.vue?7eb1","webpack://ossi.web/./src/components/sections/OfficialLetterRequests.vue?6b71","webpack://ossi.web/./src/components/sections/OfficialLetterRequests.vue?f4b1","webpack://ossi.web/./src/components/sections/OfficialLetterRequests.vue","webpack://ossi.web/./src/services/signingAgreement.service.ts","webpack://ossi.web/./src/views/Reports.vue?6c5e","webpack://ossi.web/./src/views/Reports.vue?de7d","webpack://ossi.web/./src/views/Reports.vue","webpack://ossi.web/./src/views/OfficialLetterRequests.vue?ac2e","webpack://ossi.web/./src/views/OfficialLetterRequests.vue?df8d","webpack://ossi.web/./src/views/OfficialLetterRequests.vue?a4f7","webpack://ossi.web/./src/views/OfficialLetterRequests.vue","webpack://ossi.web/./src/views/AddOfficialLetterRequest.vue?c3be","webpack://ossi.web/./src/views/AddOfficialLetterRequest.vue?2de8","webpack://ossi.web/./src/views/AddOfficialLetterRequest.vue?723f","webpack://ossi.web/./src/views/AddOfficialLetterRequest.vue","webpack://ossi.web/./src/views/ProcessOfficialLetterRequest.vue?0d17","webpack://ossi.web/./src/views/ProcessOfficialLetterRequest.vue?762a","webpack://ossi.web/./src/views/ProcessOfficialLetterRequest.vue?d37d","webpack://ossi.web/./src/views/ProcessOfficialLetterRequest.vue","webpack://ossi.web/./src/views/NotFound.vue?b324","webpack://ossi.web/./src/views/NotFound.vue?b9f0","webpack://ossi.web/./src/views/NotFound.vue?db8d","webpack://ossi.web/./src/views/NotFound.vue","webpack://ossi.web/./src/router.ts","webpack://ossi.web/./src/i18n.ts","webpack://ossi.web/./src/locales/validation/fi.ts","webpack://ossi.web/./src/locales/validation/sv.ts","webpack://ossi.web/./src/main.ts","webpack://ossi.web/./src/locales|sync|D:/[A-Za-z0-9-_,/s]+/.json$/i","webpack://ossi.web/webpack/bootstrap","webpack://ossi.web/webpack/runtime/chunk loaded","webpack://ossi.web/webpack/runtime/compat get default export","webpack://ossi.web/webpack/runtime/define property getters","webpack://ossi.web/webpack/runtime/ensure chunk","webpack://ossi.web/webpack/runtime/get javascript chunk filename","webpack://ossi.web/webpack/runtime/get mini-css chunk filename","webpack://ossi.web/webpack/runtime/global","webpack://ossi.web/webpack/runtime/hasOwnProperty shorthand","webpack://ossi.web/webpack/runtime/load script","webpack://ossi.web/webpack/runtime/make namespace object","webpack://ossi.web/webpack/runtime/node module decorator","webpack://ossi.web/webpack/runtime/publicPath","webpack://ossi.web/webpack/runtime/jsonp chunk loading","webpack://ossi.web/webpack/startup"],"sourcesContent":["var map = {\n\t\"./af\": 5177,\n\t\"./af.js\": 5177,\n\t\"./ar\": 1509,\n\t\"./ar-dz\": 1488,\n\t\"./ar-dz.js\": 1488,\n\t\"./ar-kw\": 8676,\n\t\"./ar-kw.js\": 8676,\n\t\"./ar-ly\": 2353,\n\t\"./ar-ly.js\": 2353,\n\t\"./ar-ma\": 4496,\n\t\"./ar-ma.js\": 4496,\n\t\"./ar-sa\": 2682,\n\t\"./ar-sa.js\": 2682,\n\t\"./ar-tn\": 9756,\n\t\"./ar-tn.js\": 9756,\n\t\"./ar.js\": 1509,\n\t\"./az\": 5533,\n\t\"./az.js\": 5533,\n\t\"./be\": 8959,\n\t\"./be.js\": 8959,\n\t\"./bg\": 7777,\n\t\"./bg.js\": 7777,\n\t\"./bm\": 4903,\n\t\"./bm.js\": 4903,\n\t\"./bn\": 1290,\n\t\"./bn-bd\": 7357,\n\t\"./bn-bd.js\": 7357,\n\t\"./bn.js\": 1290,\n\t\"./bo\": 1545,\n\t\"./bo.js\": 1545,\n\t\"./br\": 1470,\n\t\"./br.js\": 1470,\n\t\"./bs\": 4429,\n\t\"./bs.js\": 4429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 6464,\n\t\"./cs.js\": 6464,\n\t\"./cv\": 3635,\n\t\"./cv.js\": 3635,\n\t\"./cy\": 4226,\n\t\"./cy.js\": 4226,\n\t\"./da\": 3601,\n\t\"./da.js\": 3601,\n\t\"./de\": 7853,\n\t\"./de-at\": 6111,\n\t\"./de-at.js\": 6111,\n\t\"./de-ch\": 4697,\n\t\"./de-ch.js\": 4697,\n\t\"./de.js\": 7853,\n\t\"./dv\": 708,\n\t\"./dv.js\": 708,\n\t\"./el\": 4691,\n\t\"./el.js\": 4691,\n\t\"./en-au\": 3872,\n\t\"./en-au.js\": 3872,\n\t\"./en-ca\": 8298,\n\t\"./en-ca.js\": 8298,\n\t\"./en-gb\": 6195,\n\t\"./en-gb.js\": 6195,\n\t\"./en-ie\": 6584,\n\t\"./en-ie.js\": 6584,\n\t\"./en-il\": 5543,\n\t\"./en-il.js\": 5543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 9402,\n\t\"./en-nz.js\": 9402,\n\t\"./en-sg\": 3004,\n\t\"./en-sg.js\": 3004,\n\t\"./eo\": 2934,\n\t\"./eo.js\": 2934,\n\t\"./es\": 7650,\n\t\"./es-do\": 838,\n\t\"./es-do.js\": 838,\n\t\"./es-mx\": 7730,\n\t\"./es-mx.js\": 7730,\n\t\"./es-us\": 6575,\n\t\"./es-us.js\": 6575,\n\t\"./es.js\": 7650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 527,\n\t\"./fi.js\": 527,\n\t\"./fil\": 5995,\n\t\"./fil.js\": 5995,\n\t\"./fo\": 2477,\n\t\"./fo.js\": 2477,\n\t\"./fr\": 5498,\n\t\"./fr-ca\": 6435,\n\t\"./fr-ca.js\": 6435,\n\t\"./fr-ch\": 7892,\n\t\"./fr-ch.js\": 7892,\n\t\"./fr.js\": 5498,\n\t\"./fy\": 7071,\n\t\"./fy.js\": 7071,\n\t\"./ga\": 1734,\n\t\"./ga.js\": 1734,\n\t\"./gd\": 217,\n\t\"./gd.js\": 217,\n\t\"./gl\": 7329,\n\t\"./gl.js\": 7329,\n\t\"./gom-deva\": 2124,\n\t\"./gom-deva.js\": 2124,\n\t\"./gom-latn\": 3383,\n\t\"./gom-latn.js\": 3383,\n\t\"./gu\": 5050,\n\t\"./gu.js\": 5050,\n\t\"./he\": 1713,\n\t\"./he.js\": 1713,\n\t\"./hi\": 3861,\n\t\"./hi.js\": 3861,\n\t\"./hr\": 6308,\n\t\"./hr.js\": 6308,\n\t\"./hu\": 609,\n\t\"./hu.js\": 609,\n\t\"./hy-am\": 7160,\n\t\"./hy-am.js\": 7160,\n\t\"./id\": 4063,\n\t\"./id.js\": 4063,\n\t\"./is\": 9374,\n\t\"./is.js\": 9374,\n\t\"./it\": 8383,\n\t\"./it-ch\": 1827,\n\t\"./it-ch.js\": 1827,\n\t\"./it.js\": 8383,\n\t\"./ja\": 3827,\n\t\"./ja.js\": 3827,\n\t\"./jv\": 9722,\n\t\"./jv.js\": 9722,\n\t\"./ka\": 1794,\n\t\"./ka.js\": 1794,\n\t\"./kk\": 4707,\n\t\"./kk.js\": 4707,\n\t\"./km\": 6870,\n\t\"./km.js\": 6870,\n\t\"./kn\": 4451,\n\t\"./kn.js\": 4451,\n\t\"./ko\": 3164,\n\t\"./ko.js\": 3164,\n\t\"./ku\": 8174,\n\t\"./ku.js\": 8174,\n\t\"./ky\": 8474,\n\t\"./ky.js\": 8474,\n\t\"./lb\": 9680,\n\t\"./lb.js\": 9680,\n\t\"./lo\": 5867,\n\t\"./lo.js\": 5867,\n\t\"./lt\": 5766,\n\t\"./lt.js\": 5766,\n\t\"./lv\": 9532,\n\t\"./lv.js\": 9532,\n\t\"./me\": 8076,\n\t\"./me.js\": 8076,\n\t\"./mi\": 1848,\n\t\"./mi.js\": 1848,\n\t\"./mk\": 306,\n\t\"./mk.js\": 306,\n\t\"./ml\": 3739,\n\t\"./ml.js\": 3739,\n\t\"./mn\": 9053,\n\t\"./mn.js\": 9053,\n\t\"./mr\": 6169,\n\t\"./mr.js\": 6169,\n\t\"./ms\": 3386,\n\t\"./ms-my\": 2297,\n\t\"./ms-my.js\": 2297,\n\t\"./ms.js\": 3386,\n\t\"./mt\": 7075,\n\t\"./mt.js\": 7075,\n\t\"./my\": 2264,\n\t\"./my.js\": 2264,\n\t\"./nb\": 2274,\n\t\"./nb.js\": 2274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 2572,\n\t\"./nl-be\": 3784,\n\t\"./nl-be.js\": 3784,\n\t\"./nl.js\": 2572,\n\t\"./nn\": 4566,\n\t\"./nn.js\": 4566,\n\t\"./oc-lnc\": 9330,\n\t\"./oc-lnc.js\": 9330,\n\t\"./pa-in\": 9849,\n\t\"./pa-in.js\": 9849,\n\t\"./pl\": 4418,\n\t\"./pl.js\": 4418,\n\t\"./pt\": 9834,\n\t\"./pt-br\": 8303,\n\t\"./pt-br.js\": 8303,\n\t\"./pt.js\": 9834,\n\t\"./ro\": 4457,\n\t\"./ro.js\": 4457,\n\t\"./ru\": 2271,\n\t\"./ru.js\": 2271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 3478,\n\t\"./se.js\": 3478,\n\t\"./si\": 7538,\n\t\"./si.js\": 7538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 6637,\n\t\"./sl.js\": 6637,\n\t\"./sq\": 6794,\n\t\"./sq.js\": 6794,\n\t\"./sr\": 5719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 5719,\n\t\"./ss\": 6000,\n\t\"./ss.js\": 6000,\n\t\"./sv\": 1011,\n\t\"./sv.js\": 1011,\n\t\"./sw\": 748,\n\t\"./sw.js\": 748,\n\t\"./ta\": 1025,\n\t\"./ta.js\": 1025,\n\t\"./te\": 1885,\n\t\"./te.js\": 1885,\n\t\"./tet\": 8861,\n\t\"./tet.js\": 8861,\n\t\"./tg\": 6571,\n\t\"./tg.js\": 6571,\n\t\"./th\": 5802,\n\t\"./th.js\": 5802,\n\t\"./tk\": 9527,\n\t\"./tk.js\": 9527,\n\t\"./tl-ph\": 9231,\n\t\"./tl-ph.js\": 9231,\n\t\"./tlh\": 1052,\n\t\"./tlh.js\": 1052,\n\t\"./tr\": 5096,\n\t\"./tr.js\": 5096,\n\t\"./tzl\": 9846,\n\t\"./tzl.js\": 9846,\n\t\"./tzm\": 1765,\n\t\"./tzm-latn\": 7711,\n\t\"./tzm-latn.js\": 7711,\n\t\"./tzm.js\": 1765,\n\t\"./ug-cn\": 8414,\n\t\"./ug-cn.js\": 8414,\n\t\"./uk\": 6618,\n\t\"./uk.js\": 6618,\n\t\"./ur\": 158,\n\t\"./ur.js\": 158,\n\t\"./uz\": 7609,\n\t\"./uz-latn\": 2475,\n\t\"./uz-latn.js\": 2475,\n\t\"./uz.js\": 7609,\n\t\"./vi\": 1135,\n\t\"./vi.js\": 1135,\n\t\"./x-pseudo\": 4051,\n\t\"./x-pseudo.js\": 4051,\n\t\"./yo\": 2218,\n\t\"./yo.js\": 2218,\n\t\"./zh-cn\": 2648,\n\t\"./zh-cn.js\": 2648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 1541,\n\t\"./zh-mo.js\": 1541,\n\t\"./zh-tw\": 304,\n\t\"./zh-tw.js\": 304\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 = 5358;","/*\r\nEnsure these match Model/Dbo/Code.cs enums in the back end.\r\n\r\nTODO: Work out a way of maybe dynamically generating this file from the back end? How do we make sure these are consistent?\r\n*/\r\n\r\nexport enum CodeCategory {\r\n MEETING_STATUS = 'MeetingStatus',\r\n MEETING_TYPE = 'MeetingType',\r\n MEMBERSHIP_STATUS = 'MembershipStatus',\r\n MEMBERSHIP_TYPE = 'MembershipType',\r\n MEMBER_POSITION_STATUS = 'MemberPositionStatus',\r\n MEMBER_STATUS = 'MemberStatus',\r\n MINUTES_STATUS = 'MinutesStatus',\r\n SECTION_STATUS = 'SectionStatus',\r\n DISTRICT_STATUS = 'DistrictStatus',\r\n ROLE_STATUS = 'RoleStatus'\r\n}\r\n\r\nexport enum MemberStatus {\r\n ACTIVE = 101,\r\n INACTIVE = 102,\r\n DEAD = 103,\r\n OMANEW = 104,\r\n ELOQUANEW = 105,\r\n REMOVED = 106\r\n}\r\n\r\nexport enum MemberGender {\r\n MALE = 201,\r\n FEMALE = 202,\r\n OTHER = 203\r\n}\r\n\r\nexport enum MemberLanguage {\r\n FINNISH = 301,\r\n SWEDISH = 302,\r\n ENGLISH = 303\r\n}\r\n\r\nexport enum MembershipType {\r\n UNKNOWN = 400,\r\n ANNUAL = 401,\r\n PERMANENT = 402,\r\n YOUTH = 403,\r\n HONORARY = 404\r\n}\r\n\r\nexport enum MembershipStatus {\r\n ALL = 0,\r\n UNKNOWN = 500,\r\n ACTIVE = 501,\r\n RESIGNED = 502,\r\n DEAD = 503,\r\n TRANSFER = 504,\r\n PENDING = 505,\r\n NEW = 506\r\n}\r\n\r\nexport enum SectionStatus {\r\n // TEST = 600,\r\n ACTIVE = 601,\r\n DISBANDED = 602,\r\n MONITORED = 603\r\n}\r\n\r\nexport enum SectionLanguage {\r\n FINNISH = 701,\r\n SWEDISH = 702,\r\n BILINGUAL = 703\r\n}\r\n\r\nexport enum DistrictStatus {\r\n // TEST = 0,\r\n ACTIVE = 801,\r\n DISBANDED = 802\r\n}\r\n\r\nexport enum DistrictLanguage {\r\n FINNISH = 901,\r\n SWEDISH = 902,\r\n BILINGUAL = 903\r\n}\r\n\r\nexport enum MeetingType {\r\n UNKNOWN = 1000,\r\n AUTUMN = 1001,\r\n SPRING = 1002,\r\n BOARD = 1003,\r\n EXTRAORDINARY = 1004,\r\n CRM = 1005\r\n}\r\n\r\nexport enum MeetingStatus {\r\n DRAFT = 1100,\r\n SUBMITTED = 1101,\r\n REVIEWED = 1102,\r\n APPROVED = 1103,\r\n ARCHIVED = 1104,\r\n PENDINGAPPROVAL = 1105\r\n}\r\n\r\nexport enum MinutesStatus {\r\n DRAFT = 1200,\r\n APPROVED = 1201\r\n}\r\n\r\nexport enum MemberPositionStatus {\r\n ACTIVE = 1301,\r\n INACTIVE = 1302\r\n}\r\n\r\nexport enum PositionStatus {\r\n ACTIVE = 1401,\r\n INACTIVE = 1402\r\n}\r\n\r\nexport enum OfficialLetterRequestStatus {\r\n REQUESTED = 1501,\r\n PROCESSED = 1502,\r\n ARCHIVED = 1503\r\n}\r\n\r\nexport enum MeetingDisplayStatus {\r\n UNKNOWN = 0,\r\n CREATED = 1,\r\n SUBMITTED = 2,\r\n REVIEWED = 3,\r\n LATEST = 4,\r\n REPLACED = 5,\r\n ARCHIVED = 6\r\n}\r\n\r\nexport enum MemberRoles {\r\n SUPER_ADMIN = 1,\r\n KT = 2,\r\n DISTRICT_ADMIN = 3,\r\n DISTRICT_USER = 4,\r\n SECTION_ADMIN = 5,\r\n SECTION_USER = 6\r\n}\r\n\r\nexport enum AlertTimeout {\r\n SHORT = 2000,\r\n NORMAL = 6000,\r\n LONG = 15000,\r\n PERMANENT = -1\r\n}\r\n\r\nexport enum LoggedInState {\r\n loggedIn = 'LOGGEDIN',\r\n loggingIn = 'LOGGINGIN',\r\n loggedOut = 'LOGGEDOUT'\r\n}\r\n","import { AlertTimeout } from '@/types/enums'\r\nimport { RequestValidationResult } from '@/types'\r\nimport { TranslateResult } from 'vue-i18n'\r\n\r\n// Auth types\r\nexport interface LoginInfo {\r\n email: string,\r\n password: string\r\n}\r\n\r\nexport interface ADLoginInfo {\r\n token: string,\r\n sessionState: string\r\n}\r\n\r\nexport interface AdInfo {\r\n loginUrl: string,\r\n redirectUri: string,\r\n adAuthorizeUri: string\r\n}\r\n\r\nexport const enum YesNoWarning {\r\n No = 2,\r\n Warning = 3,\r\n Yes = 1\r\n}\r\n\r\nexport interface Claims {\r\n username: string,\r\n ossiId: number,\r\n omaId: string,\r\n crmId: string,\r\n sprId: string,\r\n sectionId: number,\r\n districtId: number,\r\n membershipStatusId: number,\r\n membershipTypeId: number,\r\n isInRoleSuperAdmin: boolean,\r\n isInRoleKT: boolean,\r\n isInRoleDistrictAdmin: boolean,\r\n isInRoleDistrictUser: boolean,\r\n isInRoleSectionAdmin: boolean,\r\n isInRoleSectionUser: boolean,\r\n passwordExpiring: boolean\r\n}\r\n\r\nexport interface MeetingDetailsData {\r\n meetingType?: number,\r\n dateHeld: Date,\r\n name: string,\r\n moreInfo: string\r\n}\r\n\r\n// Alerts\r\n\r\nexport interface AlertOptions {\r\n message: string,\r\n surviveRouteChange: boolean,\r\n timeout: AlertTimeout | number\r\n}\r\n\r\nexport interface Alert {\r\n id: number,\r\n type?: string,\r\n message: string,\r\n surviveRouteChange: boolean,\r\n timeout: AlertTimeout | number,\r\n createTime: Date,\r\n isHtml: boolean\r\n}\r\n\r\nexport class Alert implements Alert {\r\n constructor (id: number, message: string, type?: string, surviveRouteChange?: boolean, timeout?: AlertTimeout | number, isHtml?: boolean) {\r\n this.id = id\r\n this.message = message\r\n this.type = type\r\n this.surviveRouteChange = surviveRouteChange !== undefined ? surviveRouteChange : false\r\n this.timeout = timeout || AlertTimeout.NORMAL\r\n this.createTime = new Date()\r\n this.isHtml = isHtml ?? false\r\n }\r\n}\r\n\r\n// type guard\r\nexport function isRequestValidationResult (response: any | RequestValidationResult): response is RequestValidationResult {\r\n return (response.isValid !== undefined && response.errors !== undefined)\r\n}\r\n\r\nexport interface MeetingFilter {\r\n sectionId?: number,\r\n typeId?: number,\r\n statusIds?: Array,\r\n meetingDate?: Date\r\n}\r\n\r\nexport interface MemberFilter {\r\n name: string,\r\n approved?: boolean,\r\n hasMembership?: boolean,\r\n membershipStatus?: number,\r\n extraMembershipStatuses?: number[]\r\n}\r\n\r\nexport interface MemberPositionFormData {\r\n memberId?: number,\r\n positionId?: number,\r\n nonMemberAddress: string,\r\n nonMemberEmail: string,\r\n nonMemberCompany: string,\r\n nonMemberFirstname: string,\r\n nonMemberLastname: string,\r\n nonMemberPhone: string,\r\n nonMemberPostcode: string,\r\n nonMemberPostoffice: string,\r\n termEnd: Date,\r\n termStart: Date\r\n}\r\n\r\nexport interface DropdownOptions {\r\n text: string | TranslateResult,\r\n value: string\r\n}\r\n\r\nexport interface CheckboxListItem {\r\n id: string | number,\r\n label: string,\r\n checked: boolean\r\n}\r\n\r\n// Basic types and enums\r\n\r\nexport interface BoardMemberData {\r\n id: number,\r\n memberId?: number,\r\n positionId: number\r\n}\r\n\r\n// Key value pair\r\nexport interface StringArray {\r\n [index: string]: string\r\n}","import { Module, ActionTree, MutationTree } from 'vuex'\r\nimport { RootState } from '@/store'\r\n\r\nexport interface ConfigState {\r\n ossiServiceBaseUrl: string,\r\n useMockUserBackend: boolean,\r\n language: string | null\r\n}\r\n\r\nexport const state: ConfigState = {\r\n ossiServiceBaseUrl: 'https://spr-ossi-live-service.azurewebsites.net',\r\n // ossiServiceBaseUrl: 'https://spr-ossi-test-service.azurewebsites.net',\r\n // ossiServiceBaseUrl: 'http://localhost:53189', // The base url for accessing the back end service\r\n useMockUserBackend: false, // Whether to use a mock back end and fake the login (for testing) or use the live one configured above\r\n language: sessionStorage.getItem('locale') ? sessionStorage.getItem('locale') : 'fi'\r\n}\r\n\r\nconst actions: ActionTree = {\r\n}\r\n\r\nconst mutations: MutationTree = {\r\n setLanguage (state, lang) {\r\n state.language = lang\r\n }\r\n}\r\n\r\nexport const config: Module = {\r\n namespaced: true,\r\n state: state,\r\n actions: actions,\r\n mutations: mutations\r\n}\r\n","import { Module } from 'vuex'\r\nimport { Alert, AlertOptions } from '@/types/custom.ts'\r\n\r\nexport interface AlertState {\r\n alerts: Array,\r\n dataLoading: boolean\r\n}\r\n\r\nexport const state: AlertState = {\r\n alerts: [],\r\n dataLoading: false\r\n}\r\nexport const alert: Module = {\r\n namespaced: true,\r\n state: state,\r\n actions: {\r\n // Actions are used to commit mutations and can be asynchromous.\r\n // Actions are triggered from vue components using store.dispatch({name})\r\n // eg store.dispatch('success')\r\n // examples are\r\n // this.$store.dispatch('alert/error', { message: 'Login failed' })\r\n // this.$store.dispatch('alert/success', { message: 'Login failed', timeout: AlertTimeout.PERMANENT }) //never goes away. Can also pass -1\r\n // this.$store.dispatch('alert/success', { message: 'Login failed', timeout: 3000 }) //stays for 3 seconds\r\n // this.$store.dispatch('alert/success', { message: 'Login failed', surviveRouteChange: true }) //stays on the page even after $router.push()\r\n\r\n success ({ commit }, options: AlertOptions) {\r\n commit('success', options)\r\n },\r\n\r\n error ({ commit }, options: AlertOptions) {\r\n commit('error', options)\r\n },\r\n\r\n warning ({ commit }, options: AlertOptions) {\r\n commit('warning', options)\r\n },\r\n\r\n info ({ commit }, options: AlertOptions) {\r\n commit('info', options)\r\n },\r\n\r\n remove ({ commit }, id: number) {\r\n commit('remove', id)\r\n },\r\n\r\n clear ({ commit }, excludeRouteChangeAlerts: boolean) {\r\n commit('clear', excludeRouteChangeAlerts)\r\n }\r\n },\r\n mutations: {\r\n // Mutations change the state of the store. They are synchronous.\r\n\r\n success (state, options: any) {\r\n state.alerts.push(new Alert(new Date().valueOf(), options.message, 'alert-success', options.surviveRouteChange, options.timeout, options.isHtml))\r\n },\r\n\r\n error (state, options: any) {\r\n state.alerts.push(new Alert(new Date().valueOf(), options.message, 'alert-danger', options.surviveRouteChange, options.timeout, options.isHtml))\r\n },\r\n\r\n warning (state, options: any) {\r\n state.alerts.push(new Alert(new Date().valueOf(), options.message, 'alert-warning', options.surviveRouteChange, options.timeout, options.isHtml))\r\n },\r\n\r\n info (state, options: any) {\r\n state.alerts.push(new Alert(new Date().valueOf(), options.message, 'alert-info', options.surviveRouteChange, options.timeout, options.isHtml))\r\n },\r\n\r\n remove (state, id: number) {\r\n if (state.alerts.length) {\r\n state.alerts.splice(state.alerts.findIndex(x => x.id === id), 1)\r\n }\r\n },\r\n\r\n clear (state, excludeRouteChangeAlerts: boolean) {\r\n if (excludeRouteChangeAlerts) {\r\n state.alerts = state.alerts.filter(x => x.surviveRouteChange === true)\r\n } else {\r\n state.alerts = []\r\n }\r\n },\r\n\r\n dataLoading (state) {\r\n state.dataLoading = true\r\n },\r\n\r\n dataLoaded (state) {\r\n state.dataLoading = false\r\n }\r\n }\r\n}\r\n","import JwtDecode from 'jwt-decode'\r\nimport store from '@/store/index'\r\nimport { StringArray, Claims } from '@/types/custom.ts'\r\n\r\n// Override the window fetch method to get a fake user list when you call /users/authenticate\r\nexport function configureFakeBackend (): void {\r\n const users = [{ id: 1, email: 'test', password: 'test', firstName: 'Test', lastName: 'User' }]\r\n const realFetch = window.fetch\r\n window.fetch = function (url, opts) {\r\n return new Promise((resolve, reject) => {\r\n // wrap in timeout to simulate server api call - REMEMBER TO REMOVE THIS!!!!!\r\n setTimeout(() => {\r\n // authenticate\r\n if (url.toString().endsWith(store.state.authentication.loginUrl) && opts && opts.method === 'POST') {\r\n // get parameters from post request\r\n const params = JSON.parse(opts.body ? opts.body.toString() : '{}')\r\n\r\n // find if any user matches login credentials\r\n const filteredUsers = users.filter(user => {\r\n return user.email === params.email && user.password === params.password\r\n })\r\n\r\n if (filteredUsers.length) {\r\n resolve(new Response('fake-jwt-token'))\r\n } else {\r\n // else return error\r\n reject(new Error('Email or password is incorrect'))\r\n }\r\n }\r\n\r\n // fake AD Authentication to the back end\r\n if (url.toString().indexOf(store.state.authentication.activeDirectory.adAuthorizeUri) > -1 && opts && opts.method === 'GET') {\r\n resolve(new Response('fake-jwt-token'))\r\n }\r\n // demo get users\r\n if (url.toString().endsWith('/api/users/all')) {\r\n return users.map(x => {\r\n x.password = ''\r\n return x\r\n })\r\n }\r\n\r\n // pass through any requests not handled above\r\n realFetch(url, opts).then(response => resolve(response))\r\n }, 500)\r\n })\r\n }\r\n}\r\n\r\nexport function tokenStructureIsValid (token: string): boolean {\r\n if (!token) {\r\n return false\r\n }\r\n return token.split('.').length === 3\r\n}\r\n\r\nexport function decodeToken (token: string): Claims {\r\n const claimsTypes = {\r\n username: 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name',\r\n ossiId: 'OssiId',\r\n omaId: 'OmaId',\r\n crmId: 'CrmId',\r\n sprId: 'SprId',\r\n sectionId: 'SectionId',\r\n districtId: 'DistrictId',\r\n PasswordExpiring: 'PasswordExpiring',\r\n membershipStatusId: 'MembershipStatusId',\r\n membershipTypeId: 'MembershipTypeId',\r\n isInRoleSectionUser: 'IsInRoleSectionUser',\r\n isInRoleSectionAdmin: 'IsInRoleSectionAdmin',\r\n isInRoleDistrictUser: 'IsInRoleDistrictUser',\r\n isInRoleDistrictAdmin: 'IsInRoleDistrictAdmin',\r\n isInRoleKT: 'IsInRoleKT',\r\n isInRoleSuperAdmin: 'IsInRoleSuperAdmin'\r\n }\r\n\r\n const decoded: StringArray = JwtDecode(token)\r\n const retObj: Claims = {} as Claims\r\n\r\n retObj.username = decoded[claimsTypes.username]\r\n retObj.ossiId = Number(decoded[claimsTypes.ossiId])\r\n retObj.omaId = decoded[claimsTypes.omaId]\r\n retObj.crmId = decoded[claimsTypes.crmId]\r\n retObj.sprId = decoded[claimsTypes.sprId]\r\n retObj.sectionId = Number(decoded[claimsTypes.sectionId])\r\n retObj.districtId = Number(decoded[claimsTypes.districtId])\r\n retObj.membershipStatusId = Number(decoded[claimsTypes.membershipStatusId])\r\n retObj.membershipTypeId = Number(decoded[claimsTypes.membershipTypeId])\r\n\r\n retObj.passwordExpiring = Boolean(decoded[claimsTypes.PasswordExpiring])\r\n retObj.isInRoleSuperAdmin = Boolean(decoded[claimsTypes.isInRoleSuperAdmin]) || false\r\n retObj.isInRoleKT = Boolean(decoded[claimsTypes.isInRoleKT]) || false\r\n retObj.isInRoleDistrictAdmin = Boolean(decoded[claimsTypes.isInRoleDistrictAdmin]) || false\r\n retObj.isInRoleDistrictUser = Boolean(decoded[claimsTypes.isInRoleDistrictUser]) || false\r\n retObj.isInRoleSectionAdmin = Boolean(decoded[claimsTypes.isInRoleSectionAdmin]) || false\r\n retObj.isInRoleSectionUser = Boolean(decoded[claimsTypes.isInRoleSectionUser]) || false\r\n\r\n return retObj\r\n}\r\n\r\nexport function getRoles (token: string): Array {\r\n const claims: Claims = decodeToken(token)\r\n const arr = [] as Array\r\n\r\n if (claims.isInRoleSuperAdmin) arr.push(1) //Yuck. Hard coded, but MemberRoles.SUPER_ADMIN compiles, but causes error on front end\r\n if (claims.isInRoleKT) arr.push(2)\r\n if (claims.isInRoleDistrictAdmin) arr.push(3)\r\n if (claims.isInRoleDistrictUser) arr.push(4)\r\n if (claims.isInRoleSectionAdmin) arr.push(5)\r\n if (claims.isInRoleSectionUser) arr.push(6)\r\n\r\n return arr\r\n}\r\n","// import config from 'config'\r\nimport store from '@/store'\r\nimport { tokenStructureIsValid } from '@/helpers/auth/authorizationhelper'\r\nimport { LoginInfo, ADLoginInfo } from '@/types/custom'\r\nimport axios from 'axios'\r\n\r\nfunction login (loginInfo: LoginInfo): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(loginInfo)\r\n }\r\n\r\n return axios.post(`${store.state.config.ossiServiceBaseUrl}${store.state.authentication.loginUrl}`, loginInfo, requestOptions)\r\n .then(response => {\r\n // Check authentication status\r\n if (response.status === 200) {\r\n const token = response.data\r\n\r\n // Resolve with the response\r\n return Promise.resolve(token)\r\n } else {\r\n if (response.status === 401) {\r\n // Log them out by sending them to the login page\r\n if (response.data.includes('User has no roles')) {\r\n location.href = '/login'\r\n\r\n // Reject with an error message\r\n return Promise.reject(new Error('Auth failed'))\r\n }\r\n if (response.data.includes('Password has expired')) {\r\n location.href = '/login'\r\n return Promise.reject(Error('Password expired'))\r\n }\r\n }\r\n return Promise.reject(new Error(`Login failed`))\r\n }\r\n })\r\n .then(token => {\r\n if (token) {\r\n // validate basic structure\r\n if (!tokenStructureIsValid(token)) {\r\n return Promise.reject(new Error('Token structure is invalid'))\r\n }\r\n // store jwt token in local storage to keep user logged in between page refreshes\r\n localStorage.setItem('authToken', token)\r\n return Promise.resolve(token)\r\n }\r\n return Promise.reject(new Error('No token'))\r\n })\r\n .catch(error => {\r\n return Promise.reject(error)\r\n })\r\n}\r\n\r\nfunction logout () {\r\n // remove token from local storage to log user out\r\n localStorage.removeItem('authToken')\r\n}\r\n\r\n/// Takes the response from the AD login request and exchanges an SPR token for it\r\nfunction adLogin (adLogin: ADLoginInfo): Promise {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: { 'Content-Type': 'application/json' }\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.authentication.activeDirectory.adAuthorizeUri}?token=${adLogin.token}&sessionState=${adLogin.sessionState}`\r\n\r\n return axios.get(url, requestOptions)\r\n .then(response => {\r\n // Check authentication status\r\n if (response.status === 200) {\r\n return response.data\r\n } else {\r\n return Promise.reject(new Error('Failed to get token'))\r\n }\r\n })\r\n .then(token => {\r\n // login successful if there's a jwt token in the response\r\n if (!token) {\r\n return Promise.reject(new Error('No token'))\r\n }\r\n\r\n if (!tokenStructureIsValid(token)) {\r\n return Promise.reject(new Error('Invalid token'))\r\n }\r\n\r\n // store jwt token in local storage to keep user logged in between page refreshes\r\n localStorage.setItem('authToken', token)\r\n return token\r\n })\r\n .catch(error => {\r\n return Promise.reject(new Error(`Login Failed - ${error}`))\r\n })\r\n}\r\n\r\nexport const userService = {\r\n login,\r\n logout,\r\n adLogin\r\n}\r\n","import { userService } from '@/services/user.service'\r\nimport { router } from '@/router'\r\nimport { Module, ActionTree, MutationTree } from 'vuex'\r\nimport { RootState } from '@/store'\r\nimport { LoginRequest } from '@/types'\r\nimport { AdInfo, ADLoginInfo, Claims } from '@/types/custom'\r\nimport { LoggedInState } from '@/types/enums'\r\nimport { decodeToken, getRoles } from '@/helpers/auth/authorizationhelper'\r\n\r\nexport interface AuthenticationState {\r\n status: LoggedInState,\r\n token?: string,\r\n claims?: Claims,\r\n rolesArray: Array,\r\n login: LoginRequest,\r\n loginUrl: string,\r\n activeDirectory: AdInfo\r\n}\r\n\r\nconst token = localStorage.getItem('authToken') || undefined\r\n\r\nexport const state: AuthenticationState = {\r\n status: token ? LoggedInState.loggedIn : LoggedInState.loggedOut,\r\n token: token,\r\n claims: token ? decodeToken(token) : undefined,\r\n rolesArray: token ? getRoles(token) : [],\r\n login: {\r\n email: '',\r\n password: ''\r\n },\r\n\r\n loginUrl: '/api/account/getlogintoken',\r\n activeDirectory: {\r\n loginUrl: 'https://login.microsoftonline.com/redcross.fi/oauth2/authorize?client_id=8c94c4a5-f31c-4777-ab0b-0a9871791315&response_type=id_token&scope=openid&nonce=7362CAEA-9CA5-4B43-9BA3-34D7C303EBA7&response_mode=fragment',\r\n adAuthorizeUri: '/api/account/adauthorize',\r\n redirectUri: '/adresponse'\r\n }\r\n}\r\n\r\nconst actions: ActionTree = {\r\n loadBaseData ({ dispatch, commit }): Promise {\r\n commit('alert/dataLoading', null, { root: true })\r\n const promises = [\r\n dispatch('districts/loadAll', null, { root: true }),\r\n dispatch('sections/loadAll', null, { root: true }),\r\n dispatch('meetings/getAllPositionsOfTrust', null, { root: true })\r\n ]\r\n\r\n return Promise.all(promises).then(() => {\r\n commit('alert/dataLoaded', null, { root: true })\r\n return Promise.resolve()\r\n })\r\n },\r\n\r\n login ({ dispatch, commit }: any, login: LoginRequest) {\r\n commit('loginRequest', login.email)\r\n\r\n return userService.login(login)\r\n .then(\r\n (token: any) => {\r\n const claims = decodeToken(token)\r\n const rolesArray = getRoles(token)\r\n commit('loginSuccess', { token, claims, rolesArray })\r\n return Promise.resolve()\r\n }, (err: string) => {\r\n commit('loginFailure', err)\r\n return Promise.reject(err)\r\n })\r\n .then(() => {\r\n dispatch('loadBaseData')\r\n })\r\n .catch((error: Error) => {\r\n commit('loginFailure', error)\r\n return Promise.reject(error)\r\n })\r\n },\r\n\r\n adlogin ({ dispatch, commit }: any, adLogin: ADLoginInfo) {\r\n commit('adLoginRequest')\r\n\r\n return userService.adLogin(adLogin)\r\n .then(\r\n (token: any) => {\r\n const claims = decodeToken(token)\r\n const rolesArray = getRoles(token)\r\n commit('loginSuccess', { token, claims, rolesArray })\r\n return Promise.resolve()\r\n })\r\n .then(() => dispatch('loadBaseData'))\r\n .catch((error: any) => {\r\n commit('loginFailure', error)\r\n return Promise.reject(error)\r\n })\r\n },\r\n\r\n loginFailure ({ commit }, error) {\r\n commit('loginFailure', error)\r\n },\r\n\r\n logout ({ commit }) {\r\n userService.logout()\r\n commit('logout')\r\n commit('districts/reset', null, { root: true })\r\n commit('meetings/reset', null, { root: true })\r\n commit('members/reset', null, { root: true })\r\n commit('sections/reset', null, { root: true })\r\n commit('sections/reset', null, { root: true })\r\n // todo : Others\r\n }\r\n}\r\n\r\nconst mutations: MutationTree = {\r\n loginRequest (state, token) {\r\n state.status = LoggedInState.loggingIn\r\n state.token = token\r\n },\r\n\r\n loginSuccess (state, tokenObj) {\r\n state.status = LoggedInState.loggedIn\r\n state.token = tokenObj.token\r\n state.claims = tokenObj.claims\r\n state.rolesArray = tokenObj.rolesArray\r\n },\r\n\r\n loginFailure (state) {\r\n state.status = LoggedInState.loggedOut\r\n state.token = undefined\r\n state.claims = undefined\r\n state.rolesArray = []\r\n },\r\n\r\n adLoginRequest (state) {\r\n state.status = LoggedInState.loggingIn\r\n },\r\n\r\n logout (state) {\r\n state.status = LoggedInState.loggedOut\r\n state.token = undefined\r\n state.claims = undefined\r\n state.rolesArray = []\r\n }\r\n}\r\n\r\nexport const authentication: Module = {\r\n namespaced: true,\r\n state: state,\r\n actions: actions,\r\n mutations: mutations\r\n}\r\n","// Gets the authorization token from local storage\r\nexport default function authHeader (): Headers {\r\n const token = localStorage.getItem('authToken') || undefined\r\n\r\n if (token) {\r\n return new Headers({\r\n Authorization: 'Bearer ' + token,\r\n 'Content-Type': 'application/json'\r\n })\r\n } else {\r\n return new Headers({})\r\n }\r\n}\r\n","import moment from 'moment'\r\n\r\nexport function finnishDate (date: Date): string {\r\n const isDate = date instanceof Date && !isNaN(date.valueOf())\r\n if (!(isDate)) return ''\r\n\r\n return `${date.getDate()}.${date.getMonth() + 1}.${date.getFullYear()}`\r\n}\r\n\r\nexport function finnishShortDate (date: Date): string {\r\n const isDate = date instanceof Date && !isNaN(date.valueOf())\r\n if (!(isDate)) return ''\r\n\r\n return `${date.getDate()}.${date.getMonth() + 1}.${date.getFullYear()}`\r\n}\r\n\r\nexport function finnishShortDateAndTime (date: Date): string {\r\n const isDate = date instanceof Date && !isNaN(date.valueOf())\r\n if (!(isDate)) return ''\r\n\r\n return `${date.getDate()}.${date.getMonth() + 1}.${date.getFullYear()} ${date.getHours()}:${date.getMinutes()}`\r\n}\r\n\r\nexport function convertToUtcZeroedDate (date: Date): Date {\r\n // when a user chooses a date with the datepicker, eg 13.04.2020, it returns a utc date of 12.04.2020:21:00\r\n // what we really want to store is just the date, so 13.04.2020:00:00.\r\n // This function sets this from the supplied date.\r\n // Warning - if you are using the time portion, this will result in bad data\r\n const d = new Date()\r\n d.setUTCFullYear(date.getFullYear())\r\n d.setUTCMonth(date.getMonth())\r\n d.setUTCDate(date.getDate())\r\n d.setHours(0)\r\n d.setMinutes(0)\r\n d.setSeconds(0)\r\n d.setMilliseconds(0)\r\n return d\r\n}\r\n\r\nexport function convertUTCDateToLocalDate (date: Date): Date {\r\n // Convert from a UTC date into a local one, so a meeting on 12.04.2020:21:00 UTC is 13:04:2020:00:00 in local (finnish) time\r\n const newDate = new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000)\r\n\r\n const offset = date.getTimezoneOffset() / 60\r\n const hours = date.getHours()\r\n\r\n newDate.setHours(hours - offset)\r\n\r\n return newDate\r\n}\r\n\r\nexport function getFirstDayOfYear (startYear?: number | undefined): Date {\r\n startYear = startYear || new Date().getUTCFullYear()\r\n\r\n const firstOfNextYear = new Date()\r\n firstOfNextYear.setUTCFullYear(startYear)\r\n firstOfNextYear.setUTCMonth(0)\r\n firstOfNextYear.setUTCDate(1)\r\n firstOfNextYear.setUTCHours(0)\r\n firstOfNextYear.setUTCMinutes(0)\r\n firstOfNextYear.setUTCSeconds(0)\r\n firstOfNextYear.setUTCMilliseconds(0)\r\n\r\n return firstOfNextYear\r\n}\r\n\r\nexport function getLastDayOfYear (startYear?: number | undefined): Date {\r\n const firstDayOfYear = getFirstDayOfYear(startYear)\r\n firstDayOfYear.setUTCFullYear(firstDayOfYear.getUTCFullYear() + 1)\r\n firstDayOfYear.setDate(firstDayOfYear.getDate() - 1)\r\n\r\n return firstDayOfYear\r\n}\r\n\r\n// When you call JSON.parse() on a returned object, dates are parsed as strings.\r\n// By using this, you can convert them automatically to dates.\r\n// Usage: var obj = JSON.parse(json, JsonDateParser)\r\nexport function JsonDateParser (key: string, value: any): string | Date | any {\r\n const reISO = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.?\\d*))(?:Z|(\\+|-)([\\d|:]*))?$/\r\n const reMsAjax = /^\\/Date\\((d|-|.*)\\)[/|\\\\]$/\r\n\r\n if (typeof value === 'string') {\r\n let a = reISO.exec(value)\r\n if (a) {\r\n return new Date(value)\r\n }\r\n a = reMsAjax.exec(value)\r\n if (a) {\r\n const b = a[1].split(/[-+,.]/)\r\n return new Date(b[0] ? +b[0] : 0 - +b[1])\r\n }\r\n }\r\n return value\r\n}","import { JsonDateParser } from './datehelper'\r\nimport { isRequestValidationResult } from '@/types/custom.ts'\r\n\r\n//fetch api doesn't throw an error on non 200s. Force it to.\r\nexport function handleErrors (response: Response): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (!response) {\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n reject({ status: 500, statusText: 'No response returned', body: '' })\r\n }\r\n\r\n if (response.ok) {\r\n resolve(response)\r\n } else {\r\n let body: any = {}\r\n response.clone().text().then(text => {\r\n if (text) {\r\n try {\r\n body = JSON.parse(text)\r\n } catch {\r\n body = text\r\n }\r\n }\r\n\r\n if (response.status === 401) { window.location.href = '\\\\login' }\r\n // should try to always return a RequestValidationResult from errors in the back end\r\n if (isRequestValidationResult(body)) {\r\n reject(body)\r\n }\r\n\r\n // fallback\r\n // eslint-disable-next-line prefer-promise-reject-errors\r\n reject({ status: response.status, statusText: response.statusText, body: body })\r\n })\r\n }\r\n })\r\n}\r\n\r\nexport function processJson (response: Response): Promise | Error {\r\n try {\r\n return response.text()\r\n .then(result => {\r\n if (!result || !result.length) return {}\r\n return JSON.parse(result, JsonDateParser)\r\n },\r\n error => Error(error))\r\n } catch (error) {\r\n // eslint-disable-next-line no-console\r\n console.log('Failed to process json')\r\n return Error(error)\r\n }\r\n}\r\n\r\nexport function debounce (this: any, fn: Function, delay: number): any {\r\n let debounceInterval: NodeJS.Timeout\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n const context = this\r\n // @ts-ignore\r\n return function (...args) {\r\n clearTimeout(debounceInterval)\r\n debounceInterval = setTimeout(() => {\r\n fn.apply(context, args)\r\n }, delay)\r\n }\r\n}\r\n","import { CodeCategory } from '@/types/enums'\r\nimport { CodeState } from '@/store/code.module.ts'\r\n\r\nexport function getCode (state: CodeState, id: number, codeCategory: CodeCategory): Code | undefined {\r\n switch (codeCategory) {\r\n case CodeCategory.MEETING_STATUS:\r\n return state.meetingStatuses.find((x: MeetingStatusCode) => x.id === id)\r\n case CodeCategory.MEETING_TYPE:\r\n return state.meetingTypes.find((x: MeetingTypeCode) => x.id === id)\r\n case CodeCategory.MEMBERSHIP_STATUS:\r\n return state.membershipStatuses.find((x: MembershipStatusCode) => x.id === id)\r\n case CodeCategory.MEMBERSHIP_TYPE:\r\n return state.membershipTypes.find((x: MembershipTypeCode) => x.id === id)\r\n case CodeCategory.MEMBER_POSITION_STATUS:\r\n return state.membershipPositionStatueses.find((x: MemberPositionStatusCode) => x.id === id)\r\n case CodeCategory.MEMBER_STATUS:\r\n return state.memberStatuses.find((x: MemberStatusCode) => x.id === id)\r\n case CodeCategory.MINUTES_STATUS:\r\n return state.minutesStatuses.find((x: MinutesStatusCode) => x.id === id)\r\n case CodeCategory.SECTION_STATUS:\r\n return state.sectionStatuses.find((x: SectionStatusCode) => x.id === id)\r\n case CodeCategory.DISTRICT_STATUS:\r\n return state.districtStatuses.find((x: DistrictStatusCode) => x.id === id)\r\n }\r\n}\r\n\r\nexport class Code {\r\n id: number\r\n\r\n category: CodeCategory\r\n\r\n enumName: string\r\n\r\n constructor (_id: number, _category: CodeCategory, _enumName: string) {\r\n this.id = _id\r\n this.category = _category\r\n this.enumName = _enumName\r\n }\r\n\r\n getTranslationKey (): string {\r\n return `${this.category.toLowerCase()}-${this.id}`\r\n }\r\n}\r\n\r\nexport class MeetingStatusCode extends Code {\r\n constructor (_id: number, _enumName: string) {\r\n super(_id, CodeCategory.MEETING_STATUS, _enumName)\r\n }\r\n}\r\n\r\nexport class MeetingTypeCode extends Code {\r\n constructor (_id: number, _enumName: string) {\r\n super(_id, CodeCategory.MEETING_TYPE, _enumName)\r\n }\r\n}\r\n\r\nexport class MembershipStatusCode extends Code {\r\n constructor (_id: number, _enumName: string) {\r\n super(_id, CodeCategory.MEMBERSHIP_STATUS, _enumName)\r\n }\r\n}\r\n\r\nexport class MembershipTypeCode extends Code {\r\n constructor (_id: number, _enumName: string) {\r\n super(_id, CodeCategory.MEMBERSHIP_TYPE, _enumName)\r\n }\r\n}\r\n\r\nexport class MemberPositionStatusCode extends Code {\r\n constructor (_id: number, _enumName: string) {\r\n super(_id, CodeCategory.MEMBER_POSITION_STATUS, _enumName)\r\n }\r\n}\r\n\r\nexport class MemberStatusCode extends Code {\r\n constructor (_id: number, _enumName: string) {\r\n super(_id, CodeCategory.MEMBER_STATUS, _enumName)\r\n }\r\n}\r\n\r\nexport class MinutesStatusCode extends Code {\r\n constructor (_id: number, _enumName: string) {\r\n super(_id, CodeCategory.MINUTES_STATUS, _enumName)\r\n }\r\n}\r\n\r\nexport class SectionStatusCode extends Code {\r\n constructor (_id: number, _enumName: string) {\r\n super(_id, CodeCategory.SECTION_STATUS, _enumName)\r\n }\r\n}\r\n\r\nexport class DistrictStatusCode extends Code {\r\n constructor (_id: number, _enumName: string) {\r\n super(_id, CodeCategory.DISTRICT_STATUS, _enumName)\r\n }\r\n}","// import config from 'config'\r\nimport store from '@/store'\r\nimport authHeader from '@/helpers/auth/auth-header'\r\nimport { handleErrors, processJson } from '@/helpers/httphelper'\r\nimport { MeetingStatusCode, MeetingTypeCode, MembershipStatusCode, MembershipTypeCode, MemberPositionStatusCode, MemberStatusCode, MinutesStatusCode, SectionStatusCode, DistrictStatusCode } from '@/helpers/codehelper'\r\n\r\nconst requestOptions: RequestInit = {\r\n method: 'GET',\r\n headers: authHeader(),\r\n mode: 'cors'\r\n}\r\n\r\nfunction getMeetingStatuses (): Promise> {\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.codes.getMeetingStatusesUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then((response) => handleErrors(response))\r\n .then((response) => processJson(response))\r\n .then(\r\n (result: Array) => {\r\n return (result as Array).map(x => new MeetingStatusCode(x.id, x.enumName))\r\n }\r\n )\r\n .catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction getMeetingTypes (): Promise> {\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.codes.getMeetingTypesUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then((response) => handleErrors(response))\r\n .then((response) => processJson(response))\r\n .then(\r\n (result: Array) => {\r\n return (result as Array).map(x => new MeetingTypeCode(x.id, x.enumName))\r\n }\r\n )\r\n .catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction getMembershipStatuses (): Promise> {\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.codes.getMembershipStatusesUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then((response) => handleErrors(response))\r\n .then((response) => processJson(response))\r\n .then(\r\n (result: Array) => {\r\n return (result as Array).map(x => new MembershipStatusCode(x.id, x.enumName))\r\n }\r\n )\r\n .catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction getMembershipTypes (): Promise> {\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.codes.getMembershipTypesUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then((response) => handleErrors(response))\r\n .then((response) => processJson(response))\r\n .then(\r\n (result: Array) => {\r\n return (result as Array).map(x => new MembershipTypeCode(x.id, x.enumName))\r\n }\r\n )\r\n .catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction getMembershipPositionStatuses (): Promise> {\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.codes.getMembershipPositionStatuesesUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then((response) => handleErrors(response))\r\n .then((response) => processJson(response))\r\n .then(\r\n (result: Array) => {\r\n return (result as Array).map(x => new MemberPositionStatusCode(x.id, x.enumName))\r\n }\r\n )\r\n .catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction getMemberStatuses (): Promise> {\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.codes.getMemberStatusesUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then((response) => handleErrors(response))\r\n .then((response) => processJson(response))\r\n .then(\r\n (result: Array) => {\r\n return (result as Array).map(x => new MemberStatusCode(x.id, x.enumName))\r\n }\r\n )\r\n .catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction getMinutesStatuses (): Promise> {\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.codes.getMinutesStatusesUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then((response) => handleErrors(response))\r\n .then((response) => processJson(response))\r\n .then(\r\n (result: Array) => {\r\n return (result as Array).map(x => new MinutesStatusCode(x.id, x.enumName))\r\n }\r\n )\r\n .catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction getSectionStatuses (): Promise> {\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.codes.getSectionStatusesUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then((response) => handleErrors(response))\r\n .then((response) => processJson(response))\r\n .then(\r\n (result: Array) => {\r\n return (result as Array).map(x => new SectionStatusCode(x.id, x.enumName))\r\n }\r\n )\r\n .catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction getDistrictStatuses (): Promise> {\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.codes.getDistrictStatusesUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then((response) => handleErrors(response))\r\n .then((response) => processJson(response))\r\n .then(\r\n (result: Array) => {\r\n return (result as Array).map(x => new DistrictStatusCode(x.id, x.enumName))\r\n }\r\n )\r\n .catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction getAllCodes (this: any): Promise> {\r\n requestOptions.headers = authHeader()\r\n\r\n const promises = [\r\n getMeetingStatuses(),\r\n getMeetingTypes(),\r\n getMembershipStatuses(),\r\n getMembershipTypes(),\r\n getMembershipPositionStatuses(),\r\n getMemberStatuses(),\r\n getMinutesStatuses(),\r\n getSectionStatuses(),\r\n getDistrictStatuses()\r\n ]\r\n\r\n return Promise.all(promises)\r\n}\r\n\r\nexport const codeService = {\r\n getAllCodes\r\n}\r\n","import { codeService } from '@/services/code.service'\r\nimport { router } from '@/router'\r\nimport { Module, ActionTree, MutationTree, GetterTree } from 'vuex'\r\nimport { RootState } from '@/store'\r\nimport { CodeCategory } from '@/types/enums'\r\nimport { getCode, MeetingStatusCode, MeetingTypeCode, MembershipStatusCode, MembershipTypeCode, MemberPositionStatusCode, MemberStatusCode, MinutesStatusCode, SectionStatusCode, DistrictStatusCode } from '@/helpers/codehelper'\r\nexport interface CodeState {\r\n meetingStatuses: Array | Array,\r\n meetingTypes: Array | Array,\r\n membershipStatuses: Array | Array,\r\n membershipTypes: Array | Array,\r\n membershipPositionStatueses: Array | Array,\r\n memberStatuses: Array | Array,\r\n minutesStatuses: Array | Array,\r\n sectionStatuses: Array | Array,\r\n districtStatuses: Array | Array,\r\n getMeetingStatusesUrl: string,\r\n getMeetingTypesUrl: string,\r\n getMembershipStatusesUrl: string,\r\n getMembershipTypesUrl: string,\r\n getMembershipPositionStatuesesUrl: string,\r\n getMemberStatusesUrl: string,\r\n getMinutesStatusesUrl: string,\r\n getSectionStatusesUrl: string,\r\n getDistrictStatusesUrl: string,\r\n getOssiWebApiVersionUrl: string\r\n}\r\n\r\nconst getDefaultState = (): CodeState => {\r\n return {\r\n meetingStatuses: [],\r\n meetingTypes: [],\r\n membershipStatuses: [],\r\n membershipTypes: [],\r\n membershipPositionStatueses: [],\r\n memberStatuses: [],\r\n minutesStatuses: [],\r\n sectionStatuses: [],\r\n districtStatuses: [],\r\n getMeetingStatusesUrl: '/api/code/getmeetingstatus',\r\n getMeetingTypesUrl: '/api/code/getmeetingtype',\r\n getMembershipStatusesUrl: '/api/code/getmembershipstatus',\r\n getMembershipTypesUrl: '/api/code/getmembershiptype',\r\n getMembershipPositionStatuesesUrl: '/api/code/getmemberpositionstatus',\r\n getMemberStatusesUrl: '/api/code/getmemberstatus',\r\n getMinutesStatusesUrl: '/api/code/getminutesstatus',\r\n getSectionStatusesUrl: '/api/code/getsectionstatus',\r\n getDistrictStatusesUrl: '/api/code/getdistrictstatus',\r\n getOssiWebApiVersionUrl: '/api/ossiversion'\r\n }\r\n}\r\n\r\nexport const state = getDefaultState()\r\n\r\nconst actions: ActionTree = {\r\n\r\n loadAll ({ commit }) {\r\n return new Promise((resolve, reject) => {\r\n codeService.getAllCodes().then((results) => {\r\n commit('saveMeetingStatuses', results[0])\r\n commit('saveMeetingTypes', results[1])\r\n commit('saveMembershipStatuses', results[2])\r\n commit('saveMembershipTypes', results[3])\r\n commit('saveMembershipPositionStatuses', results[4])\r\n commit('saveMemberStatuses', results[5])\r\n commit('saveMinutesStatuses', results[6])\r\n commit('saveSectionStatuses', results[7])\r\n commit('saveDistrictStatuses', results[8])\r\n resolve()\r\n }, err => reject(err)\r\n )\r\n })\r\n }\r\n}\r\n\r\nconst mutations: MutationTree = {\r\n\r\n saveMeetingStatuses (state, payload) {\r\n state.meetingStatuses = payload\r\n },\r\n\r\n saveMeetingTypes (state, payload) {\r\n state.meetingTypes = payload\r\n },\r\n\r\n saveMembershipStatuses (state, payload) {\r\n state.membershipStatuses = payload\r\n },\r\n\r\n saveMembershipTypes (state, payload) {\r\n state.membershipTypes = payload\r\n },\r\n\r\n saveMembershipPositionStatuses (state, payload) {\r\n state.membershipPositionStatueses = payload\r\n },\r\n\r\n saveMemberStatuses (state, payload) {\r\n state.memberStatuses = payload\r\n },\r\n\r\n saveMinutesStatuses (state, payload) {\r\n state.minutesStatuses = payload\r\n },\r\n\r\n saveSectionStatuses (state, payload) {\r\n state.sectionStatuses = payload\r\n },\r\n\r\n saveDistrictStatuses (state, payload) {\r\n state.districtStatuses = payload\r\n },\r\n\r\n reset (state) {\r\n Object.assign(state, getDefaultState())\r\n }\r\n}\r\n\r\nconst getters: GetterTree = {\r\n getCode: (state: CodeState) => (id: number, codeCategory: CodeCategory) => {\r\n if (codeCategory) {\r\n //we can limit it\r\n return getCode(state, id, codeCategory)\r\n } else {\r\n // we got to search all the codes for this id\r\n // is there a better way of doing this??\r\n // Maybe fill an all codes table?\r\n const meetingStatus = getCode(state, id, CodeCategory.MEETING_STATUS)\r\n if (meetingStatus) return meetingStatus\r\n\r\n const meetingType = getCode(state, id, CodeCategory.MEETING_TYPE)\r\n if (meetingType) return meetingType\r\n\r\n const membershipStatus = getCode(state, id, CodeCategory.MEMBERSHIP_STATUS)\r\n if (membershipStatus) return membershipStatus\r\n\r\n const membershipType = getCode(state, id, CodeCategory.MEMBERSHIP_TYPE)\r\n if (membershipType) return membershipType\r\n\r\n const membershipPositionStatus = getCode(state, id, CodeCategory.MEMBER_POSITION_STATUS)\r\n if (membershipPositionStatus) return membershipPositionStatus\r\n\r\n const memberStatus = getCode(state, id, CodeCategory.MEMBER_STATUS)\r\n if (memberStatus) return memberStatus\r\n\r\n const minutesStatus = getCode(state, id, CodeCategory.MINUTES_STATUS)\r\n if (minutesStatus) return minutesStatus\r\n\r\n const sectionStatus = getCode(state, id, CodeCategory.SECTION_STATUS)\r\n if (sectionStatus) return sectionStatus\r\n\r\n const districtStatus = getCode(state, id, CodeCategory.DISTRICT_STATUS)\r\n if (districtStatus) return districtStatus\r\n\r\n return null\r\n }\r\n },\r\n getMeetingStatusById: (state: CodeState) => (id: number) => {\r\n return state.meetingStatuses.find((x: MeetingStatusCode) => x.id === id)\r\n },\r\n getMeetingTypesById: (state: CodeState) => (id: number) => {\r\n return state.meetingTypes.find((x: MeetingTypeCode) => x.id === id)\r\n },\r\n getMembershipStatusesById: (state: CodeState) => (id: number) => {\r\n return state.membershipStatuses.find((x: MembershipStatusCode) => x.id === id)\r\n },\r\n getMembershipTypesById: (state: CodeState) => (id: number) => {\r\n return state.membershipTypes.find((x: MembershipTypeCode) => x.id === id)\r\n },\r\n getMembershipPositionStatuesesById: (state: CodeState) => (id: number) => {\r\n return state.membershipPositionStatueses.find((x: MemberPositionStatusCode) => x.id === id)\r\n },\r\n getMemberStatusesById: (state: CodeState) => (id: number) => {\r\n return state.memberStatuses.find((x: MemberStatusCode) => x.id === id)\r\n },\r\n getMinutesStatusesById: (state: CodeState) => (id: number) => {\r\n return state.minutesStatuses.find((x: MinutesStatusCode) => x.id === id)\r\n },\r\n getSectionStatusesById: (state: CodeState) => (id: number) => {\r\n return state.sectionStatuses.find((x: SectionStatusCode) => x.id === id)\r\n },\r\n getDistrictStatusesById: (state: CodeState) => (id: number) => {\r\n return state.districtStatuses.find((x: DistrictStatusCode) => x.id === id)\r\n }\r\n}\r\n\r\nexport const codes: Module = {\r\n namespaced: true,\r\n state: state,\r\n actions: actions,\r\n mutations: mutations,\r\n getters: getters\r\n}\r\n","// import config from 'config'\r\nimport store from '@/store'\r\nimport authHeader from '@/helpers/auth/auth-header'\r\nimport { handleErrors, processJson } from '@/helpers/httphelper'\r\nimport { GetDistrictMembersExportRequest, GetSectionMembersExportRequest, FindMemberRequest, BaseFindMemberRequest, PagedListResponse, MemberSummaryResponse, MemberFlatResponse, MemberLightResponse, UpdateRoleRequest, RequestValidationResult } from '@/types'\r\n\r\nfunction getAllSectionMembers (this: any, filter: FindMemberRequest): Promise| Error> {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(filter)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.members.getAllSectionMembersUrl}`\r\n return new Promise((resolve, reject) => {\r\n fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then((pagedresult) => {\r\n resolve(pagedresult as PagedListResponse)\r\n }).catch((error: any) => {\r\n reject(error)\r\n })\r\n })\r\n}\r\nfunction getAllDistrictMembers (this: any, filter: FindMemberRequest): Promise | Error> {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(filter)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.members.getAllDistrictMembersUrl}`\r\n return new Promise((resolve, reject) => {\r\n fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then((pagedresult) => {\r\n resolve(pagedresult as PagedListResponse)\r\n }).catch((error: any) => {\r\n reject(error)\r\n })\r\n })\r\n}\r\n\r\nfunction findDistrictMembers (this: any, filter: FindMemberRequest): Promise | Error> {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(filter)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.members.findDistrictMembersUrl}`\r\n return new Promise((resolve, reject) => {\r\n fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then((pagedresult) => {\r\n resolve(pagedresult as PagedListResponse)\r\n }).catch((error: any) => {\r\n reject(error)\r\n })\r\n })\r\n}\r\n\r\nfunction findSectionMembers (this: any, filter: FindMemberRequest): Promise | Error> {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(filter)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.members.findSectionMembersUrl}`\r\n return new Promise((resolve, reject) => {\r\n fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then((pagedresult) => {\r\n resolve(pagedresult as PagedListResponse)\r\n }).catch((error: any) => {\r\n reject(error)\r\n })\r\n })\r\n}\r\n\r\nfunction findAll (this: any, filter: BaseFindMemberRequest, signal?: AbortSignal): Promise> {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(filter),\r\n signal: signal\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.members.findAllUrl}`\r\n return new Promise((resolve, reject) => {\r\n fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then((pagedresult) => {\r\n resolve(pagedresult as PagedListResponse)\r\n }).catch((error: any) => {\r\n reject(error)\r\n })\r\n })\r\n}\r\n\r\nfunction findBySectionId (this: any, id: number): Promise> {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.members.findBySectionIdUrl}`.replace('{id}', id.toString())\r\n return new Promise((resolve, reject) => {\r\n fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then((members) => {\r\n resolve(members as Array)\r\n }).catch((error: any) => {\r\n reject(error)\r\n })\r\n })\r\n}\r\n\r\nfunction getById (this: any, id: number): Promise {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.members.getByIdUrl}`.replace('{id}', id.toString())\r\n return new Promise((resolve, reject) => {\r\n fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then((member) => {\r\n resolve(member as MemberFlatResponse)\r\n }, (fail) => {\r\n reject(Error('failed to get member'))\r\n }).catch((error: any) => {\r\n // eslint-disable-next-line no-console\r\n console.log('Fetch failed', error)\r\n reject(Error(`Unable to get member - ${error}`))\r\n })\r\n })\r\n}\r\n\r\nfunction getDistrictMembersExportFile (this: any, filter: GetDistrictMembersExportRequest): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(filter)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.members.getDistrictMembersExportFileUrl}`\r\n return new Promise((resolve, reject) => {\r\n fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(\r\n (response: Response) => {\r\n return response.arrayBuffer()\r\n }\r\n )\r\n .then((buffer: ArrayBuffer) => {\r\n resolve(new Blob([buffer], { type: 'text/csv' }))\r\n })\r\n .catch((error: any) => {\r\n // eslint-disable-next-line no-console\r\n console.log('Fetch failed', error)\r\n reject(Error(`Unable to get member export - ${error}`))\r\n })\r\n }\r\n )\r\n}\r\n\r\nfunction getSectionMembersExportFile (this: any, filter: GetSectionMembersExportRequest): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(filter)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.members.getSectionMembersExportFileUrl}`\r\n return new Promise((resolve, reject) => {\r\n fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(\r\n (response: Response) => {\r\n return response.arrayBuffer()\r\n }\r\n )\r\n .then((buffer: ArrayBuffer) => {\r\n resolve(new Blob([buffer], { type: 'text/csv' }))\r\n })\r\n .catch((error: any) => {\r\n // eslint-disable-next-line no-console\r\n console.log('Fetch failed', error)\r\n reject(Error(`Unable to get member export - ${error}`))\r\n })\r\n }\r\n )\r\n}\r\n\r\nfunction updateRoles (memberId: number, roles: Array) {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify({\r\n memberId: memberId,\r\n roles: roles\r\n } as UpdateRoleRequest)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.members.updateRolesUrl}`\r\n return new Promise((resolve, reject) => {\r\n fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(() => {\r\n resolve()\r\n }, (fail) => {\r\n if (fail) {\r\n reject(fail)\r\n }\r\n reject(Error('Unable to update roles'))\r\n }).catch((error: any) => {\r\n reject(Error(`Unable to update roles - ${error}`))\r\n })\r\n })\r\n}\r\n\r\nexport const membersService = {\r\n getAllSectionMembers,\r\n getAllDistrictMembers,\r\n findDistrictMembers,\r\n findSectionMembers,\r\n findAll,\r\n findBySectionId,\r\n getById,\r\n getDistrictMembersExportFile,\r\n getSectionMembersExportFile,\r\n updateRoles\r\n}\r\n","// import config from 'config'\r\nimport store from '@/store'\r\nimport authHeader from '@/helpers/auth/auth-header'\r\nimport { handleErrors, processJson } from '@/helpers/httphelper'\r\nimport { DistrictActiveRoles, DistrictSummaryResponse, DistrictStatisticsResponse } from '@/types'\r\n\r\nfunction getAll (): Promise> {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.districts.allUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n (districts: Array) => {\r\n return districts\r\n }\r\n )\r\n}\r\n\r\nfunction getDistrictRolesById (id: number): Promise {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.districts.getDistrictRolesByIdUrl}`.replace('{id}', id.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n district => {\r\n return district\r\n }\r\n )\r\n}\r\n\r\nfunction getStats (districtId: number): Promise {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.districts.statsUrl}`.replace('{id}', districtId.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n (stats: DistrictStatisticsResponse) => {\r\n return stats\r\n }\r\n )\r\n}\r\n\r\nfunction resetDistrict (districtId: number): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.districts.resetUrl}`.replace('{id}', districtId.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n () => true\r\n )\r\n}\r\n\r\nexport const districtService = {\r\n getAll,\r\n getStats,\r\n resetDistrict,\r\n getDistrictRolesById\r\n}\r\n","// import config from 'config'\r\nimport store from '@/store'\r\nimport authHeader from '@/helpers/auth/auth-header'\r\nimport { handleErrors, processJson } from '@/helpers/httphelper'\r\nimport {\r\n SectionSummaryResponse,\r\n SectionDetailedResponse,\r\n SectionStatisticsResponse,\r\n SectionActiveRoles } from '@/types'\r\n\r\nfunction getAll (): Promise> {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.sections.allUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n sections => {\r\n return sections\r\n }\r\n )\r\n}\r\n\r\nfunction getById (id: number): Promise {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.sections.getByIdUrl}`.replace('{id}', id.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n section => {\r\n return section\r\n }\r\n )\r\n}\r\n\r\nfunction getSectionRolesById (id: number): Promise {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.sections.getSectionRolesByIdUrl}`.replace('{id}', id.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n section => {\r\n return section\r\n }\r\n )\r\n}\r\n\r\nfunction getSectionStatistics (id: number): Promise {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.sections.getSectionStatisticsUrl}`.replace('{id}', id.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n stats => {\r\n return stats\r\n }\r\n )\r\n}\r\n\r\nfunction resetSection (id: number): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.sections.resetSectionUrl}`.replace('{id}', id.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n () => true\r\n )\r\n}\r\n\r\nexport const sectionService = {\r\n getAll,\r\n getById,\r\n getSectionRolesById,\r\n getSectionStatistics,\r\n resetSection\r\n\r\n}\r\n","// import config from 'config'\r\nimport store from '@/store'\r\nimport authHeader from '@/helpers/auth/auth-header'\r\nimport { handleErrors, processJson } from '@/helpers/httphelper'\r\nimport {\r\n MeetingDetailResponse,\r\n MeetingMinutesRequest,\r\n MeetingSummaryResponse,\r\n MinutesFileResponse,\r\n GetMeetingsRequest,\r\n AddOrUpdateMeetingRequest,\r\n AddMemberPositionRequest,\r\n UpdateMemberPositionRequest,\r\n MemberPositionResponse,\r\n MinutesResponse,\r\n MinutesFileRequest,\r\n PositionResponse,\r\n MemberPositionErrorResponse,\r\n RequestValidationResult,\r\n CheckTermLengthRequest,\r\n CheckSerialTermLimitsRequest,\r\n CheckNonMemberSerialTermLimitsRequest\r\n} from '@/types'\r\n\r\nfunction mapAddUpdateMeetingRequest (meeting: MeetingDetailResponse) {\r\n return {\r\n id: meeting.id,\r\n sectionId: meeting.sectionId,\r\n name: meeting.name,\r\n meetingTypeId: meeting.type.id,\r\n dateHeld: meeting.dateHeld,\r\n reportedBy: meeting.reportedBy,\r\n createdBy: meeting.createdBy,\r\n moreInfo: meeting.moreInfo\r\n } as AddOrUpdateMeetingRequest\r\n}\r\n\r\nfunction addMeeting (meeting: AddOrUpdateMeetingRequest): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(meeting)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.addMeetingUrl}`\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(meeting => {\r\n return meeting as MeetingDetailResponse\r\n }).catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction updateMeeting (meeting: MeetingDetailResponse): Promise {\r\n const meetingData = mapAddUpdateMeetingRequest(meeting)\r\n const requestOptions = {\r\n method: 'PUT',\r\n headers: authHeader(),\r\n body: JSON.stringify(meetingData)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.updateMeetingUrl}`\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(response => {\r\n return Promise.resolve(true)\r\n }).catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction deleteMeeting (id: number): Promise {\r\n const requestOptions = {\r\n method: 'DELETE',\r\n headers: authHeader(),\r\n body: id.toString()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.deleteMeetingUrl}`\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(() => {\r\n return Promise.resolve()\r\n }).catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction submitMeeting (id: number): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: id.toString()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.submitMeetingUrl}`\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(success => {\r\n return success as boolean\r\n }).catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction reviewedMeeting (id: number): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: id.toString()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.reviewedMeetingUrl}`\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(success => {\r\n return success as boolean\r\n }).catch(err => Promise.reject(err))\r\n}\r\nfunction archivedMeeting (id: number): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: id.toString()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.archivedMeetingUrl}`\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(success => {\r\n return success as boolean\r\n }).catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction approveMeeting (id: number): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: id.toString()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.approveMeetingUrl}`\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(success => {\r\n return Promise.resolve(success as boolean)\r\n }).catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction addOrUpdateMeetingMinutes (minutes: MeetingMinutesRequest): Promise {\r\n const requestOptions = {\r\n method: 'PUT',\r\n headers: authHeader(),\r\n body: JSON.stringify(minutes)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.addOrUpdateMeetingMinutesUrl}`\r\n return new Promise((resolve, reject) => {\r\n fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(success => {\r\n success ? resolve(success as MinutesResponse) : reject(Error('Failed to update minutes'))\r\n }).catch(err => {\r\n reject(err)\r\n })\r\n })\r\n}\r\n\r\nfunction getMeeting (id: number): Promise {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.getMeetingUrl}`.replace('{meetingid}', id.toString())\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n meeting => {\r\n return (meeting as MeetingDetailResponse)\r\n }\r\n ).catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction uploadDoc (this: any, doc: MinutesFileRequest): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(doc)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.uploadDocUrl}`\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n doc => {\r\n return (doc as MinutesFileResponse)\r\n }\r\n ).catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction removeDoc (this: any, docId: number): Promise {\r\n const requestOptions = {\r\n method: 'DELETE',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.removeDocUrl}`.replace('{id}', docId.toString())\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n (result: boolean) => {\r\n return (result as boolean)\r\n }\r\n ).catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction getMeetings (filter: GetMeetingsRequest): Promise | Error> {\r\n // todo : Return only meetings in the section (filter.sectionId) that this user is allowed to see\r\n // be sure to verify on the back end from the claim of the auth token!\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(filter)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.getMeetingsUrl}`\r\n\r\n return new Promise((resolve, reject) => {\r\n fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n meetings => {\r\n resolve(meetings as Array)\r\n },\r\n fail => {\r\n reject(fail)\r\n }\r\n ).catch(err => {\r\n reject(err)\r\n })\r\n })\r\n}\r\n\r\nfunction addPositionOfTrust (memberPosition: AddMemberPositionRequest): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(memberPosition)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.addPositionOfTrustUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n position => {\r\n return (position as MemberPositionResponse)\r\n }\r\n ).catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction removePositionOfTrust (id: number): Promise {\r\n const requestOptions = {\r\n method: 'DELETE',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.removePositionOfTrustUrl.replace('{id}', id.toString())}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n (ok) => ok as boolean\r\n ).catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction updatePositionOfTrust (memberPosition: UpdateMemberPositionRequest): Promise {\r\n const requestOptions = {\r\n method: 'PUT',\r\n headers: authHeader(),\r\n body: JSON.stringify(memberPosition)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.updatePositionOfTrustUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(position => (position as MemberPositionResponse))\r\n .catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction canEditMeeting (id: number) {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.canEditMeetingUrl.replace('{id}', id.toString())}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(canedit => (canedit as boolean))\r\n .catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction getAllPositionsOfTrust (): Promise> {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.getAllPositionsOfTrustUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n result => {\r\n return (result as Array)\r\n }\r\n ).catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction getDistrictCrmPositionsErrors (districtId: number): Promise> {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.getDistrictCrmPositionsErrorsUrl}`.replace('{districtId}', districtId.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n result => {\r\n return (result as Array)\r\n }\r\n ).catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction checkTermLength (request: CheckTermLengthRequest): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(request)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.checkTermLengthUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n result => {\r\n return (result as RequestValidationResult)\r\n }\r\n ).catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction checkAddSerialTermLimits (request: CheckSerialTermLimitsRequest): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(request)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.checkAddSerialTermLimitsUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n result => {\r\n return (result as RequestValidationResult)\r\n }\r\n ).catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction checkAddNonMemberSerialTermLimits (request: CheckNonMemberSerialTermLimitsRequest): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(request)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.meetings.checkAddNonMemberSerialTermLimitsUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n result => {\r\n return (result as RequestValidationResult)\r\n }\r\n ).catch(err => Promise.reject(err))\r\n}\r\n\r\nexport const meetingService = {\r\n addMeeting,\r\n updateMeeting,\r\n deleteMeeting,\r\n submitMeeting,\r\n reviewedMeeting,\r\n archivedMeeting,\r\n approveMeeting,\r\n addOrUpdateMeetingMinutes,\r\n getMeeting,\r\n uploadDoc,\r\n removeDoc,\r\n getMeetings,\r\n addPositionOfTrust,\r\n removePositionOfTrust,\r\n updatePositionOfTrust,\r\n canEditMeeting,\r\n getAllPositionsOfTrust,\r\n getDistrictCrmPositionsErrors,\r\n checkTermLength,\r\n checkAddSerialTermLimits,\r\n checkAddNonMemberSerialTermLimits\r\n}\r\n","import { districtService } from '@/services'\r\nimport { Module, ActionTree, MutationTree, GetterTree } from 'vuex'\r\nimport { RootState } from '@/store'\r\nimport { DistrictActiveRoles, DistrictSummaryResponse } from '@/types'\r\n\r\nexport interface DistrictState {\r\n districtsLoaded: boolean,\r\n all: Array,\r\n allUrl: string,\r\n statsUrl: string,\r\n resetUrl: string,\r\n districtRoles: DistrictActiveRoles | null,\r\n getDistrictRolesByIdUrl: string\r\n}\r\n\r\nconst getDefaultState = (): DistrictState => {\r\n return {\r\n districtsLoaded: false,\r\n all: [],\r\n allUrl: '/api/districts',\r\n statsUrl: '/api/districts/{id}/stats',\r\n resetUrl: '/api/districts/{id}/reset',\r\n districtRoles: null,\r\n getDistrictRolesByIdUrl: '/api/districts/districtroles/{id}'\r\n }\r\n}\r\n\r\nexport const state = getDefaultState()\r\n\r\nconst actions: ActionTree = {\r\n loadAll ({ commit }) {\r\n commit('loadAllRequest')\r\n\r\n return districtService.getAll()\r\n .then(\r\n districts => commit('loadAllSuccess', districts),\r\n error => commit('loadAllFailure', error)\r\n )\r\n },\r\n \r\n getDistrictRoles (context, districtId: number) {\r\n context.commit('loadDistrictRoles')\r\n\r\n return districtService.getDistrictRolesById(districtId)\r\n .then(\r\n (district: DistrictActiveRoles) => {\r\n context.commit('loadDistrictRolesSuccess', district)\r\n return Promise.resolve()\r\n }\r\n ).catch((err: Error) => {\r\n context.commit('loadDistrictRolesFailure', err)\r\n return Promise.reject(err)\r\n })\r\n }\r\n}\r\n\r\nconst mutations: MutationTree = {\r\n loadAllRequest (state) {\r\n state.all = []\r\n },\r\n\r\n loadAllSuccess (state, districts) {\r\n state.districtsLoaded = true\r\n state.all = districts\r\n },\r\n\r\n loadAllFailure (state, error) {\r\n state.districtsLoaded = false\r\n state.all = []\r\n },\r\n loadDistrictRoles (state) {\r\n state.districtRoles = null\r\n },\r\n\r\n loadDistrictRolesSuccess (state, roles) {\r\n state.districtRoles = roles\r\n },\r\n\r\n loadDistrictRolesFailure (state, error) {\r\n state.districtRoles = null\r\n },\r\n\r\n reset (state) {\r\n Object.assign(state, getDefaultState())\r\n }\r\n}\r\n\r\nconst getters: GetterTree = {\r\n getById: (state: DistrictState) => (id: number) => {\r\n return state.all.find((x) => x.id === id)\r\n }\r\n}\r\n\r\nexport const districts: Module = {\r\n namespaced: true,\r\n state: state,\r\n actions: actions,\r\n mutations: mutations,\r\n getters: getters\r\n}\r\n","import { sectionService } from '@/services'\r\nimport { Module, ActionTree, MutationTree, GetterTree } from 'vuex'\r\nimport { RootState } from '@/store'\r\nimport { SectionSummaryResponse, SectionDetailedResponse, SectionStatisticsResponse, SectionActiveRoles } from '@/types'\r\n\r\nexport interface SectionState {\r\n sectionsLoaded: boolean,\r\n sectionLoaded: boolean,\r\n all: Array,\r\n selectedSection: SectionDetailedResponse | null,\r\n sectionStatistics: SectionStatisticsResponse | null,\r\n sectionRoles: SectionActiveRoles | null,\r\n allUrl: string,\r\n getByIdUrl: string,\r\n getSectionRolesByIdUrl: string,\r\n getSectionStatisticsUrl: string,\r\n resetSectionUrl: string\r\n}\r\n\r\nconst getDefaultState = (): SectionState => {\r\n return {\r\n sectionsLoaded: false,\r\n sectionLoaded: false,\r\n all: [],\r\n selectedSection: null,\r\n sectionStatistics: null,\r\n sectionRoles: null,\r\n allUrl: '/api/sections',\r\n getByIdUrl: '/api/sections/{id}',\r\n getSectionRolesByIdUrl: '/api/sections/sectionroles/{id}',\r\n getSectionStatisticsUrl: '/api/sections/{id}/stats',\r\n resetSectionUrl: '/api/sections/{id}/reset'\r\n }\r\n}\r\n\r\nexport const state = getDefaultState()\r\n\r\nconst actions: ActionTree = {\r\n loadAll ({ commit }) {\r\n commit('loadAllRequest')\r\n\r\n return sectionService.getAll()\r\n .then(\r\n sections => commit('loadAllSuccess', sections)\r\n ).catch(err => {\r\n commit('loadAllFailure', err)\r\n return Promise.reject(err)\r\n })\r\n },\r\n\r\n loadDetailed (context, sectionId: number) {\r\n context.commit('loadDetailedRequest')\r\n\r\n return sectionService.getById(sectionId)\r\n .then(\r\n (section: SectionDetailedResponse) => {\r\n context.commit('loadDetailedSuccess', section)\r\n return Promise.resolve()\r\n }\r\n ).catch((err: Error) => {\r\n context.commit('loadDetailedFailure', err)\r\n return Promise.reject(err)\r\n })\r\n },\r\n\r\n resetSection (context, section: SectionDetailedResponse) {\r\n return sectionService.resetSection(section.id)\r\n },\r\n\r\n getSectionRoles (context, sectionId: number) {\r\n context.commit('loadSectionRoles')\r\n\r\n return sectionService.getSectionRolesById(sectionId)\r\n .then(\r\n (section: SectionActiveRoles) => {\r\n context.commit('loadSectionRolesSuccess', section)\r\n return Promise.resolve()\r\n }\r\n ).catch((err: Error) => {\r\n context.commit('loadSectionRolesFailure', err)\r\n return Promise.reject(err)\r\n })\r\n },\r\n\r\n getSectionStatistics (context, sectionId: number) {\r\n context.commit('loadSectionStatisticsRequest')\r\n\r\n return sectionService.getSectionStatistics(sectionId)\r\n .then(\r\n (section: SectionStatisticsResponse) => {\r\n context.commit('loadSectionStatisticsSuccess', section)\r\n return Promise.resolve()\r\n }\r\n ).catch((err: Error) => {\r\n context.commit('loadSectionStatisticsFailure', err)\r\n return Promise.reject(err)\r\n })\r\n }\r\n}\r\n\r\nconst mutations: MutationTree = {\r\n loadAllRequest (state) {\r\n state.all = []\r\n },\r\n\r\n loadAllSuccess (state, sections) {\r\n state.sectionsLoaded = true\r\n state.all = sections\r\n },\r\n\r\n loadAllFailure (state, error) {\r\n state.sectionsLoaded = false\r\n state.all = []\r\n },\r\n\r\n loadDetailedRequest (state) {\r\n state.selectedSection = null\r\n },\r\n\r\n loadDetailedSuccess (state, section) {\r\n state.sectionLoaded = true\r\n state.selectedSection = section\r\n },\r\n\r\n loadDetailedFailure (state, error) {\r\n state.sectionLoaded = false\r\n state.selectedSection = null\r\n },\r\n\r\n loadSectionRoles (state) {\r\n state.sectionRoles = null\r\n },\r\n\r\n loadSectionRolesSuccess (state, roles) {\r\n state.sectionRoles = roles\r\n },\r\n\r\n loadSectionRolesFailure (state, error) {\r\n state.sectionRoles = null\r\n },\r\n\r\n loadSectionStatisticsRequest (state) {\r\n state.sectionStatistics = null\r\n },\r\n\r\n loadSectionStatisticsSuccess (state, stats) {\r\n state.sectionStatistics = stats\r\n },\r\n\r\n loadSectionStatisticsFailure (state, error) {\r\n state.sectionStatistics = null\r\n },\r\n\r\n reset (state) {\r\n Object.assign(state, getDefaultState())\r\n }\r\n}\r\n\r\nconst getters: GetterTree = {\r\n getById: (state: SectionState) => (id: number) => {\r\n if (state.sectionsLoaded) {\r\n return state.all.find((x) => x.id === id)\r\n }\r\n },\r\n getByDistrictId: (state: SectionState) => (districtId: number) => {\r\n return state.all.filter((x) => x.districtId === districtId)\r\n }\r\n}\r\n\r\nexport const sections: Module = {\r\n namespaced: true,\r\n state: state,\r\n actions: actions,\r\n mutations: mutations,\r\n getters: getters\r\n}\r\n","import { signingAgreementService } from '@/services/signingAgreement.service'\r\nimport { Module, ActionTree, MutationTree, GetterTree } from 'vuex'\r\nimport { RootState } from '@/store'\r\n\r\nexport interface SigningAgreementState {\r\n signingAgreementsLoaded: boolean,\r\n signingAgreementLoaded: boolean,\r\n getBoardMembersPdfUrl: string,\r\n getSigningRightsMembersPdfUrl: string,\r\n getSigningRightsMembersPdfUrlInEnglish: string,\r\n getOfficialLetterRequestsUrl: string,\r\n getOfficialLetterRequestByIdUrl: string,\r\n getSectionRolesByIdUrl: string,\r\n addOfficialLetterRequestUrl: string,\r\n uploadSignedDocUrl: string,\r\n removeSignedDocUrl: string,\r\n approveLetterRequestUrl: string,\r\n archiveLetterRequestUrl: string,\r\n deleteLetterRequestUrl: string\r\n}\r\n\r\nconst getDefaultState = (): SigningAgreementState => {\r\n return {\r\n signingAgreementsLoaded: false,\r\n signingAgreementLoaded: false,\r\n getBoardMembersPdfUrl: '/api/signingagreement/boardmembers/pdf',\r\n getSigningRightsMembersPdfUrl: '/api/signingagreement/signingrightsmembers/{id}/pdf',\r\n getSigningRightsMembersPdfUrlInEnglish: '/api/signingagreement/signingrightsmembersenglish/{id}/pdf',\r\n getOfficialLetterRequestsUrl: '/api/signingagreement/getofficialletterrequests/{id}',\r\n getOfficialLetterRequestByIdUrl: '/api/signingagreement/getofficialletterrequestbyid/{id}',\r\n getSectionRolesByIdUrl: '/api/signingagreement/sectionroles/{id}',\r\n addOfficialLetterRequestUrl: '/api/signingagreement/addofficialletterrequest',\r\n uploadSignedDocUrl: '/api/signingagreement/uploadsigneddocument',\r\n removeSignedDocUrl: '/api/signingagreement/removesigneddocument/{id}',\r\n approveLetterRequestUrl: '/api/signingagreement/approveletterrequest',\r\n archiveLetterRequestUrl: '/api/signingagreement/archiveletterrequest/{id}',\r\n deleteLetterRequestUrl: '/api/signingagreement/deleteletterrequest/{id}'\r\n }\r\n}\r\n\r\nexport const state = getDefaultState()\r\n\r\nconst actions: ActionTree = {\r\n\r\n}\r\n\r\nconst mutations: MutationTree = {\r\n reset (state) {\r\n Object.assign(state, getDefaultState())\r\n }\r\n}\r\n\r\nconst getters: GetterTree = {\r\n\r\n}\r\n\r\nexport const signingAgreement: Module = {\r\n namespaced: true,\r\n state: state,\r\n actions: actions,\r\n mutations: mutations,\r\n getters: getters\r\n}\r\n","// import config from 'config'\r\nimport store from '@/store'\r\nimport authHeader from '@/helpers/auth/auth-header'\r\nimport { handleErrors, processJson } from '@/helpers/httphelper'\r\nimport {\r\n PreparednessPlanDocumentRequest,\r\n PreparednessPlanDocumentResponse\r\n} from '@/types'\r\n\r\nfunction getPreparednessPlans (sectionId?: number): Promise> {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.preparednessPlan.getPreparednessPlansUrl}`.replace('{id}', sectionId ? sectionId.toString() : '')\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n response => response\r\n )\r\n}\r\nfunction getAttachments (sectionId?: number): Promise> {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.preparednessPlan.getAttachmentsUrl}`.replace('{id}', sectionId ? sectionId.toString() : '')\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n response => response\r\n )\r\n}\r\n\r\nfunction getPreparednessPlansById (id: number): Promise {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.preparednessPlan.getPreparednessPlansByIdUrl}`.replace('{id}', id.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n response => response\r\n )\r\n}\r\n\r\nfunction getAttachmentsById (id: number): Promise {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.preparednessPlan.getAttachmentsByIdUrl}`.replace('{id}', id.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n response => response\r\n )\r\n}\r\nfunction fillPreparednessPlan (id: number): Promise {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.preparednessPlan.fillPreparednessPlanUrl}`.replace('{id}', id.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(response => {\r\n return response.text()\r\n }\r\n )\r\n}\r\nfunction uploadPreparednessPlan (this: any, doc: PreparednessPlanDocumentRequest): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(doc)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.preparednessPlan.uploadPreparednessPlansUrl}`\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n doc => {\r\n return (doc as PreparednessPlanDocumentResponse)\r\n }\r\n ).catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction deletePreparednessPlan (id: number): Promise {\r\n const requestOptions = {\r\n method: 'DELETE',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.preparednessPlan.deletePreparednessPlansUrl}`.replace('{id}', id.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(result => { return result as boolean }\r\n )\r\n}\r\n\r\nexport const preparednessPlanService = {\r\n getPreparednessPlans,\r\n getAttachments,\r\n getPreparednessPlansById,\r\n getAttachmentsById,\r\n uploadPreparednessPlan,\r\n deletePreparednessPlan,\r\n fillPreparednessPlan\r\n}\r\n","import { preparednessPlanService } from '@/services/preparednessPlan.service'\r\nimport { Module, ActionTree, MutationTree, GetterTree } from 'vuex'\r\nimport { RootState } from '@/store'\r\n\r\nexport interface PreparednessPlanState {\r\n preparednessPlansLoaded: boolean,\r\n preparednessPlanLoaded: boolean,\r\n getPreparednessPlansUrl: string,\r\n getAttachmentsUrl: string,\r\n getPreparednessPlansByIdUrl: string,\r\n getAttachmentsByIdUrl: string,\r\n uploadPreparednessPlansUrl: string,\r\n deletePreparednessPlansUrl: string,\r\n fillPreparednessPlanUrl: string,\r\n filledUrl: string | null\r\n\r\n}\r\n\r\nconst getDefaultState = (): PreparednessPlanState => {\r\n return {\r\n preparednessPlansLoaded: false,\r\n preparednessPlanLoaded: false,\r\n getPreparednessPlansUrl: '/api/preparednessplan/getpreparednessplans',\r\n getAttachmentsUrl: '/api/preparednessplan/getattachments',\r\n getPreparednessPlansByIdUrl: '/api/preparednessplan/getpreparednessplans/{id}',\r\n getAttachmentsByIdUrl: '/api/preparednessplan/getattachments/{id}',\r\n uploadPreparednessPlansUrl: '/api/preparednessplan/uploadpreparednessplan',\r\n deletePreparednessPlansUrl: '/api/preparednessplan/deletepreparednessplan/{id}',\r\n fillPreparednessPlanUrl: '/api/preparednessplan/{id}/fillpreparednessplan',\r\n filledUrl: ''\r\n\r\n }\r\n}\r\n\r\nexport const state = getDefaultState()\r\n\r\nconst actions: ActionTree = {\r\n\r\n fillPreparednessPlan (context, sectionId: number) {\r\n context.commit('fillPreparednessPlanRequest')\r\n\r\n return preparednessPlanService.fillPreparednessPlan(sectionId)\r\n .then(\r\n (filledUrl: string) => {\r\n context.commit('fillPreparednessPlanSuccess', filledUrl)\r\n return Promise.resolve()\r\n }\r\n ).catch((err: Error) => {\r\n context.commit('fillPreparednessPlanFailure', err)\r\n return Promise.reject(err)\r\n })\r\n }\r\n}\r\n\r\nconst mutations: MutationTree = {\r\n reset (state) {\r\n Object.assign(state, getDefaultState())\r\n },\r\n fillPreparednessPlanRequest (state) {\r\n state.filledUrl = null\r\n },\r\n fillPreparednessPlanSuccess (state, url) {\r\n state.filledUrl = url\r\n },\r\n fillPreparednessPlanFailure (state, error) {\r\n state.filledUrl = null\r\n }\r\n}\r\n\r\nconst getters: GetterTree = {\r\n\r\n}\r\n\r\nexport const preparednessPlan: Module = {\r\n namespaced: true,\r\n state: state,\r\n actions: actions,\r\n mutations: mutations,\r\n getters: getters\r\n}\r\n","import { membersService } from '@/services'\r\nimport { Module, ActionTree, MutationTree } from 'vuex'\r\nimport { RootState } from '@/store'\r\nimport { FindMemberRequest, PagedListResponse, MemberSummaryResponse } from '@/types'\r\n\r\nexport interface MemberState {\r\n filteredMembers: PagedListResponse | undefined,\r\n findDistrictMembersUrl: string,\r\n findSectionMembersUrl: string,\r\n findAllUrl: string,\r\n findBySectionIdUrl: string,\r\n getByIdUrl: string,\r\n getAllSectionMembersUrl: string,\r\n getAllDistrictMembersUrl: string,\r\n getDistrictMembersExportFileUrl: string,\r\n getSectionMembersExportFileUrl: string,\r\n updateRolesUrl: string\r\n}\r\n\r\nconst getDefaultState = (): MemberState => {\r\n return {\r\n filteredMembers: undefined,\r\n getAllSectionMembersUrl: '/api/members/getallsectionmembers',\r\n getAllDistrictMembersUrl: '/api/members/getalldistrictmembers',\r\n\r\n findDistrictMembersUrl: '/api/members/finddistrictmembers',\r\n findSectionMembersUrl: '/api/members/findsectionmembers',\r\n findAllUrl: '/api/members/findall',\r\n findBySectionIdUrl: '/api/members/findbysectionid/{id}',\r\n getByIdUrl: '/api/members/getbyid/{id}',\r\n getDistrictMembersExportFileUrl: '/api/members/getdistrictexportfile',\r\n getSectionMembersExportFileUrl: '/api/members/getsectionexportfile',\r\n updateRolesUrl: '/api/members/updateRoles'\r\n }\r\n}\r\n\r\nexport const state = getDefaultState()\r\n\r\nconst actions: ActionTree = {\r\n getAllSectionMembers (context, filter: FindMemberRequest) {\r\n context.commit('findRequest')\r\n\r\n return new Promise((resolve, reject) => {\r\n membersService.getAllSectionMembers(filter)\r\n .then(\r\n (filteredMembers: PagedListResponse | Error) => {\r\n if (filteredMembers instanceof Error) {\r\n reject(Error('Failed to find members'))\r\n }\r\n context.commit('findSuccess', filteredMembers)\r\n resolve()\r\n }\r\n ).catch(error => {\r\n context.commit('findFailure', error)\r\n reject(error)\r\n })\r\n })\r\n },\r\n getAllDistrictMembers (context, filter: FindMemberRequest) {\r\n context.commit('findRequest')\r\n\r\n return new Promise((resolve, reject) => {\r\n membersService.getAllDistrictMembers(filter)\r\n .then(\r\n (filteredMembers: PagedListResponse | Error) => {\r\n if (filteredMembers instanceof Error) {\r\n reject(Error('Failed to find members'))\r\n }\r\n context.commit('findSuccess', filteredMembers)\r\n resolve()\r\n }\r\n ).catch(error => {\r\n context.commit('findFailure', error)\r\n reject(error)\r\n })\r\n })\r\n },\r\n findDistrictMembers (context, filter: FindMemberRequest) {\r\n context.commit('findRequest')\r\n\r\n return new Promise((resolve, reject) => {\r\n membersService.findDistrictMembers(filter)\r\n .then(\r\n (filteredMembers: PagedListResponse | Error) => {\r\n if (filteredMembers instanceof Error) {\r\n reject(Error('Failed to find members'))\r\n }\r\n context.commit('findSuccess', filteredMembers)\r\n resolve()\r\n }\r\n ).catch(error => {\r\n context.commit('findFailure', error)\r\n reject(error)\r\n })\r\n })\r\n },\r\n findSectionMembers (context, filter: FindMemberRequest) {\r\n context.commit('findRequest')\r\n\r\n return new Promise((resolve, reject) => {\r\n membersService.findSectionMembers(filter)\r\n .then(\r\n (filteredMembers: PagedListResponse | Error) => {\r\n if (filteredMembers instanceof Error) {\r\n reject(Error('Failed to find members'))\r\n }\r\n context.commit('findSuccess', filteredMembers)\r\n resolve()\r\n }\r\n ).catch(error => {\r\n context.commit('findFailure', error)\r\n reject(error)\r\n })\r\n })\r\n }\r\n\r\n}\r\n\r\nconst mutations: MutationTree = {\r\n\r\n findRequest (state) {\r\n state.filteredMembers = undefined\r\n },\r\n\r\n findSuccess (state, searchresult) {\r\n state.filteredMembers = searchresult\r\n },\r\n\r\n findFailure (state, error) {\r\n state.filteredMembers = undefined\r\n },\r\n\r\n reset (state) {\r\n Object.assign(state, getDefaultState())\r\n }\r\n}\r\n\r\nexport const members: Module = {\r\n namespaced: true,\r\n state: state,\r\n actions: actions,\r\n mutations: mutations\r\n}\r\n","import { meetingService } from '@/services'\r\nimport { Module, ActionTree, MutationTree, GetterTree } from 'vuex'\r\nimport { RootState } from '@/store'\r\nimport { AddOrUpdateMeetingRequest, MeetingDetailResponse, MinutesFileRequest, MinutesDocumentResponse, GetMeetingsRequest, AddMemberPositionRequest, UpdateMemberPositionRequest, MemberPositionResponse, MeetingMinutesRequest, Code, PositionResponse, MinutesResponse, MeetingSummaryResponse } from '@/types'\r\nimport { MeetingType, PositionStatus } from '@/types/enums'\r\nimport { MeetingDetailsData } from '@/types/custom'\r\n\r\nexport interface MeetingState {\r\n meetingsLoaded: boolean,\r\n selectedMeeting: MeetingDetailResponse | undefined,\r\n allUrl: string,\r\n isFileUploading: boolean,\r\n meetings: Array,\r\n positionsOfTrust: Array,\r\n meetingsUrl: string,\r\n addMeetingUrl: string,\r\n getMeetingUrl: string,\r\n deleteMeetingUrl: string,\r\n getMeetingsUrl: string,\r\n addPositionOfTrustUrl: string,\r\n removePositionOfTrustUrl: string,\r\n updatePositionOfTrustUrl: string,\r\n canEditMeetingUrl: string,\r\n getAllPositionsOfTrustUrl: string,\r\n updateMeetingUrl: string,\r\n submitMeetingUrl: string,\r\n reviewedMeetingUrl: string,\r\n archivedMeetingUrl: string,\r\n approveMeetingUrl: string,\r\n addOrUpdateMeetingMinutesUrl: string,\r\n uploadDocUrl: string,\r\n removeDocUrl: string,\r\n getDistrictCrmPositionsErrorsUrl: string,\r\n checkTermLengthUrl: string,\r\n checkAddSerialTermLimitsUrl: string,\r\n checkAddNonMemberSerialTermLimitsUrl: string,\r\n meetingTypeDefaultYearUrl: string,\r\n getDefaultEndDateForPositionUrl: string\r\n}\r\n\r\n/*\r\nSTATE\r\n\r\nThese are the properties available at this.$store.state.meetings.\r\n\r\nDo not ever manipulate them via this.$store.state.meetings. Instead use an Action below\r\n*/\r\nconst getDefaultState = (): MeetingState => {\r\n return {\r\n meetingsLoaded: false,\r\n selectedMeeting: undefined,\r\n allUrl: '/api/meetings/all',\r\n isFileUploading: false,\r\n meetings: [],\r\n positionsOfTrust: [],\r\n meetingsUrl: '/api/sections/meetings',\r\n meetingTypeDefaultYearUrl: '/api/Meetings/getmeetingtypedefaultyear/{meetingType}',\r\n getDefaultEndDateForPositionUrl: '/api/Meetings/getdefaultenddateforposition/{meetingType}/{dateHeld}/{positionId}',\r\n addMeetingUrl: '/api/meetings/add',\r\n getMeetingUrl: '/api/meetings/{meetingid}',\r\n deleteMeetingUrl: '/api/meetings/deletemeeting',\r\n getMeetingsUrl: '/api/meetings',\r\n addPositionOfTrustUrl: '/api/meetings/addpositionoftrust',\r\n removePositionOfTrustUrl: '/api/meetings/removepositionoftrust/{id}',\r\n updatePositionOfTrustUrl: '/api/meetings/updatepositionoftrust',\r\n canEditMeetingUrl: '/api/meetings/caneditmeeting/{id}',\r\n getAllPositionsOfTrustUrl: '/api/meetings/getallpositionsoftrust',\r\n updateMeetingUrl: '/api/meetings/update',\r\n submitMeetingUrl: '/api/meetings/submitmeeting',\r\n reviewedMeetingUrl: '/api/meetings/reviewedmeeting',\r\n archivedMeetingUrl: '/api/meetings/archivedmeeting',\r\n approveMeetingUrl: '/api/meetings/approvemeeting',\r\n addOrUpdateMeetingMinutesUrl: '/api/meetings/addorupdatemeetingminutes',\r\n uploadDocUrl: '/api/meetings/uploaddoc',\r\n removeDocUrl: '/api/meetings/removedoc/{id}',\r\n getDistrictCrmPositionsErrorsUrl: '/api/meetings/getdistrictcrmpositionserrors/{districtId}',\r\n checkTermLengthUrl: '/api/meetings/checktermlength',\r\n checkAddSerialTermLimitsUrl: '/api/meetings/checkaddserialtermlimits',\r\n checkAddNonMemberSerialTermLimitsUrl: '/api/meetings/checkaddnonmemberserialtermlimits'\r\n }\r\n}\r\n\r\nexport const state = getDefaultState()\r\n\r\n/*\r\nACTIONS\r\n\r\nActions are called by front end components to do something to the data. They can be asynchronous operations.\r\nThese are essentially events and contain the business logic.\r\nAn Action can dispatch multiple mutations. It does not change the state in itself.\r\n\r\nThese are called by this.$store.dispatch('meetings/')\r\n*/\r\nconst actions: ActionTree = {\r\n\r\n // Create the initial meeting\r\n saveMeeting (context, initialMeeting: AddOrUpdateMeetingRequest) {\r\n if (!initialMeeting) return Promise.reject(Error('No meeting selected'))\r\n return meetingService.addMeeting(initialMeeting as AddOrUpdateMeetingRequest)\r\n .then(\r\n (result) => {\r\n return new Promise((resolve, reject) => {\r\n if (result && (result as MeetingDetailResponse).id) {\r\n context.commit('deleteSelectedMeeting')\r\n context.commit('saveMeeting', result)\r\n resolve(result.id)\r\n } else {\r\n reject(result)\r\n }\r\n })\r\n }\r\n ).catch(err => Promise.reject(err))\r\n },\r\n\r\n deleteMeeting (context, meetingId) {\r\n if (!context.state.selectedMeeting) return Promise.reject(Error('No meeting Id supplied'))\r\n return meetingService.deleteMeeting(meetingId)\r\n .then(() => {\r\n context.commit('deleteSelectedMeeting')\r\n return Promise.resolve()\r\n }, (err: Error) => {\r\n return Promise.reject(err)\r\n }).catch(err => Promise.reject(err))\r\n },\r\n\r\n updateMeeting (context, meeting: MeetingDetailResponse) {\r\n return meetingService.updateMeeting(meeting)\r\n },\r\n\r\n submitMeeting (context, meetingId: number) {\r\n return meetingService.submitMeeting(meetingId)\r\n },\r\n\r\n reviewedMeeting (context, meetingId: number) {\r\n return meetingService.reviewedMeeting(meetingId)\r\n },\r\n archivedMeeting (context, meetingId: number) {\r\n return meetingService.archivedMeeting(meetingId)\r\n },\r\n approveMeeting (context, meetingId: number) {\r\n return meetingService.approveMeeting(meetingId)\r\n },\r\n\r\n updateMeetingMinutesSentByMail (context, val: boolean) {\r\n const minutes = context.state?.selectedMeeting?.minutes\r\n\r\n if (!minutes) return\r\n\r\n const data = {\r\n id: minutes.id || null,\r\n meetingId: minutes.meetingId,\r\n status: minutes.status,\r\n isSentByMail: val\r\n } as MeetingMinutesRequest\r\n\r\n return meetingService.addOrUpdateMeetingMinutes(data).then((minutes: MinutesResponse) => {\r\n context.commit('addOrUpdateMeetingMinutes', minutes)\r\n return Promise.resolve(true)\r\n }).catch(err => Promise.reject(err))\r\n },\r\n\r\n addOrUpdateMeetingMinutes (context, minutes: MeetingMinutesRequest) {\r\n return meetingService.addOrUpdateMeetingMinutes(minutes).then((minutes: MinutesResponse) => {\r\n context.commit('addOrUpdateMeetingMinutes', minutes)\r\n return Promise.resolve(minutes)\r\n }).catch(err => Promise.reject(err))\r\n },\r\n\r\n getMeeting (context, id) {\r\n return meetingService.getMeeting(id)\r\n .then(\r\n meeting => {\r\n context.commit('saveMeeting', meeting)\r\n return Promise.resolve(meeting)\r\n },\r\n fail => {\r\n // eslint-disable-next-line no-console\r\n console.log('failed', fail)\r\n return Promise.reject(fail)\r\n }\r\n ).catch(err => {\r\n // eslint-disable-next-line no-console\r\n console.log('fail', err)\r\n return Promise.reject(err)\r\n })\r\n },\r\n\r\n deleteSelectedMeeting ({ commit }) {\r\n return new Promise((resolve, reject) => {\r\n commit('deleteSelectedMeeting')\r\n resolve(true)\r\n })\r\n },\r\n\r\n uploadDoc (context, doc: MinutesFileRequest) {\r\n context.commit('uploadingDoc')\r\n return new Promise((resolve, reject) => {\r\n if (!doc) {\r\n context.commit('uploadDocFailure', 'no doc supplied')\r\n reject(new Error('failed to upload doc'))\r\n }\r\n\r\n if (!context.state.selectedMeeting?.minutes?.documents) {\r\n context.commit('uploadDocFailure', 'no documents to add')\r\n reject(new Error('failed to upload doc'))\r\n }\r\n\r\n meetingService.uploadDoc(doc)\r\n .then(\r\n docWithUrl => {\r\n context.commit('uploadDoc', docWithUrl)\r\n resolve(docWithUrl)\r\n }\r\n ).catch(err => {\r\n context.commit('uploadDocFailure', err)\r\n reject(err)\r\n })\r\n })\r\n },\r\n\r\n removeDoc (context, docId: number): Promise {\r\n //first remove from blob storage, then from here\r\n return meetingService.removeDoc(docId)\r\n .then(\r\n (success) => {\r\n context.commit('removeDoc', docId)\r\n return Promise.resolve(success)\r\n }\r\n ).catch((err: Error) => Promise.reject(err))\r\n },\r\n\r\n getMeetings ({ commit }, filter: GetMeetingsRequest) {\r\n commit('getMeetingsRequest')\r\n\r\n return new Promise((resolve, reject) => {\r\n meetingService.getMeetings(filter)\r\n .then(\r\n meetings => {\r\n commit('getMeetingsSuccess', meetings)\r\n resolve(meetings)\r\n },\r\n error => {\r\n commit('getMeetingsFailure', error)\r\n // eslint-disable-next-line no-console\r\n console.log('Error getting meetings', error)\r\n reject(error)\r\n }\r\n )\r\n })\r\n },\r\n\r\n addPositionOfTrust ({ commit }, memberPosition: AddMemberPositionRequest): Promise {\r\n return meetingService.addPositionOfTrust(memberPosition)\r\n .then(\r\n position => {\r\n commit('addMemberPosition', position)\r\n return Promise.resolve(position)\r\n },\r\n (error) => {\r\n // eslint-disable-next-line no-console\r\n console.log('Error saving position of trust', error)\r\n return Promise.reject(error)\r\n }\r\n ).catch(err => Promise.reject(err))\r\n },\r\n\r\n updatePositionOfTrust ({ commit }, memberPosition: UpdateMemberPositionRequest): Promise {\r\n return meetingService.updatePositionOfTrust(memberPosition)\r\n .then(\r\n position => {\r\n commit('updateMemberPosition', position)\r\n return Promise.resolve(position)\r\n },\r\n (error) => {\r\n // eslint-disable-next-line no-console\r\n console.log('Error updating position of trust', error)\r\n return Promise.reject(error)\r\n }\r\n ).catch(err => Promise.reject(err))\r\n },\r\n\r\n removePositionOfTrust ({ commit }, id: number): Promise {\r\n return meetingService.removePositionOfTrust(id)\r\n .then(\r\n ok => {\r\n commit('removeMemberPosition', id)\r\n return Promise.resolve(ok)\r\n },\r\n (error) => {\r\n // eslint-disable-next-line no-console\r\n console.log('Error removing position of trust', error)\r\n return Promise.reject(Error('Failed to remove position'))\r\n }\r\n ).catch(err => Promise.reject(err))\r\n },\r\n\r\n getAllPositionsOfTrust ({ commit }) {\r\n return meetingService.getAllPositionsOfTrust()\r\n .then(\r\n pot => {\r\n commit('savePositionsOfTrust', pot)\r\n return Promise.resolve(pot)\r\n }\r\n ).catch(err => Promise.reject(err))\r\n }\r\n}\r\n\r\n/*\r\nMUTATIONS\r\n\r\nMutations modify the store data. They are synchronous operations. This is the only way to modify the state.\r\n\r\nThese are called by this.$store.commit('meetings/')\r\n*/\r\nconst mutations: MutationTree = {\r\n\r\n createMeeting (state, meeting) {\r\n state.selectedMeeting = meeting\r\n state.isFileUploading = false\r\n },\r\n\r\n updateMeetingDetails (state, details: MeetingDetailsData) {\r\n if (!state.selectedMeeting) return\r\n state.selectedMeeting.type.id = details.meetingType && !isNaN(details.meetingType) ? details.meetingType : MeetingType.UNKNOWN\r\n state.selectedMeeting.dateHeld = details.dateHeld\r\n state.selectedMeeting.name = details.name\r\n state.selectedMeeting.moreInfo = details.moreInfo\r\n },\r\n\r\n saveMeeting (state, meeting) {\r\n state.selectedMeeting = meeting\r\n },\r\n\r\n deleteSelectedMeeting (state) {\r\n state.selectedMeeting = undefined\r\n },\r\n\r\n uploadingDoc (state) {\r\n state.isFileUploading = true\r\n },\r\n\r\n uploadDoc (state, doc) {\r\n if (state.selectedMeeting) {\r\n state.selectedMeeting.minutes.documents.push(doc)\r\n state.isFileUploading = false\r\n }\r\n },\r\n\r\n uploadDocFailure (state, doc) {\r\n state.isFileUploading = false\r\n },\r\n\r\n removeDoc (state, id) {\r\n if (!state.selectedMeeting || !state.selectedMeeting.minutes.documents) return\r\n const docs = (state.selectedMeeting.minutes.documents as Array)\r\n const clonedDocs = [...docs]\r\n const dIndex = clonedDocs.findIndex(x => x.id === id)\r\n if (dIndex > -1) {\r\n clonedDocs.splice(dIndex, 1)\r\n }\r\n // Vue sometimes doesnt pick up on array changes, so replace it with a new one.\r\n state.selectedMeeting.minutes.documents = clonedDocs\r\n state.isFileUploading = false\r\n },\r\n\r\n addOrUpdateMeetingMinutes (state, minutes) {\r\n if (!state.selectedMeeting || state.selectedMeeting.minutes) return\r\n state.selectedMeeting.minutes = minutes\r\n state.selectedMeeting.minutesId = minutes.id\r\n },\r\n\r\n getMeetingsRequest (state) {\r\n state.meetings = []\r\n },\r\n\r\n getMeetingsSuccess (state, meetings) {\r\n state.meetings = meetings\r\n },\r\n\r\n getMeetingsFailure (state, error) {\r\n state.meetings = []\r\n },\r\n\r\n addMemberPosition (state, memberPosition) {\r\n if (state.selectedMeeting) {\r\n state.selectedMeeting.memberPositions.push(memberPosition)\r\n }\r\n },\r\n\r\n removeMemberPosition (state, id: number) {\r\n if (state.selectedMeeting) {\r\n const index = state.selectedMeeting.memberPositions.findIndex((x: MemberPositionResponse) => {\r\n return x.id === id\r\n })\r\n if (index > -1) {\r\n state.selectedMeeting.memberPositions.splice(index, 1)\r\n }\r\n }\r\n },\r\n\r\n updateMemberPosition (state, memberPosition: MemberPositionResponse) {\r\n if (state.selectedMeeting && state.selectedMeeting.memberPositions) {\r\n const index = state.selectedMeeting.memberPositions.findIndex((x: MemberPositionResponse) => x.id === memberPosition.id)\r\n const clone = [...state.selectedMeeting.memberPositions]\r\n clone[index] = memberPosition\r\n state.selectedMeeting.memberPositions = clone\r\n }\r\n },\r\n\r\n savePositionsOfTrust (state, pot: Array) {\r\n state.positionsOfTrust = pot\r\n },\r\n\r\n reset (state) {\r\n Object.assign(state, getDefaultState())\r\n }\r\n}\r\n\r\nconst getters: GetterTree = {\r\n getActivePositionsOfTrust: (state: MeetingState) => (id: number) => {\r\n return state.positionsOfTrust.filter((x: PositionResponse) => x.status.id === PositionStatus.ACTIVE)\r\n }\r\n}\r\n\r\nexport const meetings: Module = {\r\n namespaced: true,\r\n state: state,\r\n actions: actions,\r\n mutations: mutations,\r\n getters: getters\r\n}\r\n","import { EmployeeDto } from '@/types'\r\nimport store from '@/store'\r\nimport authHeader from '@/helpers/auth/auth-header'\r\nimport { handleErrors, processJson } from '@/helpers/httphelper'\r\n\r\n// Add a request interceptor to include the authentication header\r\nfunction getAll(): Promise {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.employees.allUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n (employees: Array) => {\r\n return employees\r\n }\r\n )\r\n\r\n}\r\n\r\nfunction getEmployeeById(id: number): Promise {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.employees.getByIdUrl}`.replace('{id}', id.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n (employee: EmployeeDto) => {\r\n return employee\r\n }\r\n )\r\n}\r\n\r\nfunction addEmployee(employee: EmployeeDto): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(employee)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.employees.addUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n (employee: EmployeeDto) => {\r\n return employee\r\n }\r\n )\r\n}\r\n\r\nfunction updateEmployee(employee: EmployeeDto): Promise {\r\n const requestOptions = {\r\n method: 'PUT',\r\n headers: authHeader(),\r\n body: JSON.stringify(employee)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.employees.updateUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n (employee: EmployeeDto) => {\r\n return employee\r\n }\r\n )\r\n}\r\n\r\nfunction deleteEmployee(id: number): Promise {\r\n const requestOptions = {\r\n method: 'DELETE',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.employees.deleteUrl}`.replace('{id}', id.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n () => {\r\n return \r\n }\r\n )\r\n}\r\n\r\nexport const employeeService = {\r\n getAll,\r\n getEmployeeById,\r\n addEmployee,\r\n updateEmployee,\r\n deleteEmployee\r\n}","import { employeeService } from '@/services/employee.service'\r\nimport { Module, ActionTree, MutationTree, GetterTree } from 'vuex'\r\nimport { RootState } from '@/store'\r\nimport { EmployeeDto } from '@/types'\r\n\r\nexport interface EmployeeState {\r\n employeesLoaded: boolean,\r\n all: Array,\r\n allUrl: string,\r\n getByIdUrl: string,\r\n addUrl: string,\r\n updateUrl: string,\r\n deleteUrl: string\r\n}\r\n\r\nconst getDefaultState = (): EmployeeState => {\r\n return {\r\n employeesLoaded: false,\r\n all: [],\r\n allUrl: '/api/Employee/GetAll',\r\n getByIdUrl: '/api/Employee/{id}',\r\n addUrl: '/api/Employee/Add',\r\n updateUrl: '/api/Employee/Update',\r\n deleteUrl: '/api/Employee/Delete/{id}'\r\n }\r\n}\r\n\r\nexport const state = getDefaultState()\r\n\r\nconst actions: ActionTree = {\r\n loadAll ({ commit }) {\r\n commit('loadAllRequest')\r\n\r\n return employeeService.getAll()\r\n .then(\r\n employees => commit('loadAllSuccess', employees),\r\n error => commit('loadAllFailure', error)\r\n )\r\n },\r\n\r\n getEmployeeById (context, employeeId: number) {\r\n context.commit('loadEmployeeRequest')\r\n\r\n return employeeService.getEmployeeById(employeeId)\r\n .then(\r\n (employee: EmployeeDto) => {\r\n context.commit('loadEmployeeSuccess', employee)\r\n return Promise.resolve()\r\n }\r\n ).catch((err: Error) => {\r\n context.commit('loadEmployeeFailure', err)\r\n return Promise.reject(err)\r\n })\r\n },\r\n\r\n addEmployee (context, employeeDto: EmployeeDto) {\r\n return employeeService.addEmployee(employeeDto)\r\n .then(\r\n (employee: EmployeeDto) => {\r\n context.commit('addEmployeeSuccess', employee)\r\n return Promise.resolve()\r\n }\r\n ).catch((err: Error) => {\r\n context.commit('addEmployeeFailure', err)\r\n return Promise.reject(err)\r\n })\r\n },\r\n\r\n updateEmployee (context, employeeDto: EmployeeDto) {\r\n return employeeService.updateEmployee(employeeDto)\r\n .then(\r\n (employee: EmployeeDto) => {\r\n context.commit('updateEmployeeSuccess', employee)\r\n return Promise.resolve()\r\n }\r\n ).catch((err: Error) => {\r\n context.commit('updateEmployeeFailure', err)\r\n return Promise.reject(err)\r\n })\r\n },\r\n\r\n deleteEmployee (context, employeeId: number) {\r\n return employeeService.deleteEmployee(employeeId)\r\n .then(\r\n () => {\r\n context.commit('deleteEmployeeSuccess', employeeId)\r\n return Promise.resolve()\r\n }\r\n ).catch((err: Error) => {\r\n context.commit('deleteEmployeeFailure', err)\r\n return Promise.reject(err)\r\n })\r\n }\r\n}\r\n\r\nconst mutations: MutationTree = {\r\n loadAllRequest (state) {\r\n state.all = []\r\n },\r\n\r\n loadAllSuccess (state, employees) {\r\n state.employeesLoaded = true\r\n state.all = employees\r\n },\r\n\r\n loadAllFailure (state, error) {\r\n state.employeesLoaded = false\r\n state.all = []\r\n },\r\n\r\n loadEmployeeRequest (state) {\r\n // Handle loading state if needed\r\n },\r\n\r\n loadEmployeeSuccess (state, employee) {\r\n // Handle success state if needed\r\n },\r\n\r\n loadEmployeeFailure (state, error) {\r\n // Handle failure state if needed\r\n },\r\n\r\n addEmployeeSuccess (state, employee) {\r\n state.all.push(employee)\r\n },\r\n\r\n addEmployeeFailure (state, error) {\r\n // Handle failure state if needed\r\n },\r\n\r\n updateEmployeeSuccess (state, updatedEmployee) {\r\n const index = state.all.findIndex(emp => emp.id === updatedEmployee.id)\r\n if (index !== -1) {\r\n state.all.splice(index, 1, updatedEmployee)\r\n }\r\n },\r\n\r\n updateEmployeeFailure (state, error) {\r\n // Handle failure state if needed\r\n },\r\n\r\n deleteEmployeeSuccess (state, employeeId) {\r\n state.all = state.all.filter(emp => emp.id !== employeeId)\r\n },\r\n\r\n deleteEmployeeFailure (state, error) {\r\n // Handle failure state if needed\r\n },\r\n\r\n reset (state) {\r\n Object.assign(state, getDefaultState())\r\n }\r\n}\r\n\r\nconst getters: GetterTree = {\r\n getById: (state: EmployeeState) => (id: number) => {\r\n return state.all.find((x) => x.id === id)\r\n }\r\n}\r\n\r\nexport const employees: Module = {\r\n namespaced: true,\r\n state: state,\r\n actions: actions,\r\n mutations: mutations,\r\n getters: getters\r\n}","import { RoleDto } from '@/types'\r\nimport store from '@/store'\r\nimport authHeader from '@/helpers/auth/auth-header'\r\nimport { handleErrors, processJson } from '@/helpers/httphelper'\r\n\r\n// Add a request interceptor to include the authentication header\r\nfunction getAll(): Promise {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.roles.allUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n (roles: Array) => {\r\n return roles\r\n }\r\n )\r\n}\r\n\r\nexport const roleService = {\r\n getAll\r\n}","import { roleService } from '@/services/role.service'\r\nimport { Module, ActionTree, MutationTree, GetterTree } from 'vuex'\r\nimport { RootState } from '@/store'\r\nimport { RoleDto } from '@/types/index'\r\n\r\nexport interface RoleState {\r\n rolesLoaded: boolean,\r\n all: Array,\r\n allUrl: string,\r\n}\r\n\r\nconst getDefaultState = (): RoleState => {\r\n return {\r\n rolesLoaded: false,\r\n all: [],\r\n allUrl: '/api/role/GetAll',\r\n }\r\n}\r\n\r\nexport const state = getDefaultState()\r\n\r\nconst actions: ActionTree = {\r\n loadAll ({ commit }) {\r\n commit('loadAllRequest')\r\n\r\n return roleService.getAll()\r\n .then(\r\n roles => commit('loadAllSuccess', roles),\r\n error => commit('loadAllFailure', error)\r\n )\r\n },\r\n}\r\n\r\nconst mutations: MutationTree = {\r\n\r\n loadAllSuccess (state, roles) {\r\n state.rolesLoaded = true\r\n state.all = roles\r\n },\r\n\r\n loadAllFailure (state, error) {\r\n state.rolesLoaded = false\r\n state.all = []\r\n },\r\n\r\n reset (state) {\r\n Object.assign(state, getDefaultState())\r\n }\r\n}\r\n\r\nconst getters: GetterTree = {\r\n getById: (state: RoleState) => (id: number) => {\r\n return state.all.find((x) => x.roleId === id)\r\n }\r\n}\r\n\r\n\r\nexport const roles: Module = {\r\n namespaced: true,\r\n state: state,\r\n actions: actions,\r\n mutations: mutations,\r\n getters: getters\r\n}","import { ExternalFormDto } from '@/types'\r\nimport store from '@/store'\r\nimport authHeader from '@/helpers/auth/auth-header'\r\nimport { handleErrors, processJson } from '@/helpers/httphelper'\r\n\r\n// Add a request interceptor to include the authentication header\r\nfunction getAll (): Promise {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.externalForms.allUrl}`\r\n //console.log('${store.state.externalForms.allUrl', store.state.externalForms.allUrl) ///api/ExternalForms/GetAll\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n (externalforms: Array) => {\r\n return externalforms\r\n }\r\n )\r\n}\r\n\r\nfunction getFormById (id: number): Promise {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.externalForms.getByIdUrl}`.replace('{id}', id.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n (form: ExternalFormDto) => {\r\n return form\r\n }\r\n )\r\n}\r\n\r\nfunction getFormByName (name: string): Promise {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.externalForms.getByNameUrl}`.replace('{id}', name)\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n (form: ExternalFormDto) => {\r\n return form\r\n }\r\n )\r\n}\r\n\r\nfunction addForm (form: ExternalFormDto): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(form)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.externalForms.addUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n (form: ExternalFormDto) => {\r\n return form\r\n }\r\n )\r\n}\r\n\r\nfunction updateForm (form: ExternalFormDto): Promise {\r\n const requestOptions = {\r\n method: 'PUT',\r\n headers: authHeader(),\r\n body: JSON.stringify(form)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.externalForms.updateUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n (form: ExternalFormDto) => {\r\n return form\r\n }\r\n )\r\n}\r\n\r\nfunction deleteForm (id: number): Promise {\r\n const requestOptions = {\r\n method: 'DELETE',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.externalForms.deleteUrl}`.replace('{id}', id.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n}\r\n\r\nexport const externalFormService = {\r\n getAll,\r\n getFormById,\r\n getFormByName,\r\n addForm,\r\n updateForm,\r\n deleteForm\r\n}","import { externalFormService } from '@/services/externalForm.service'\r\nimport { Module, ActionTree, MutationTree, GetterTree } from 'vuex'\r\nimport { RootState } from '@/store'\r\nimport { ExternalFormUpdateDto, ExternalFormDto } from '@/types'\r\n\r\nexport interface ExternalFormState {\r\n formsLoaded: boolean,\r\n all: Array,\r\n allUrl: string,\r\n getByIdUrl: string,\r\n getByNameUrl: string,\r\n addUrl: string,\r\n updateUrl: string,\r\n deleteUrl: string\r\n}\r\n\r\nconst getDefaultState = (): ExternalFormState => {\r\n return {\r\n formsLoaded: false,\r\n all: [],\r\n allUrl: '/api/ExternalForms/GetAll',\r\n getByIdUrl: '/api/ExternalForms/Get/{id}',\r\n getByNameUrl: '/api/ExternalForms/GetByName/{name}',\r\n addUrl: '/api/ExternalForms/Add',\r\n updateUrl: '/api/ExternalForms/Update/{id}',\r\n deleteUrl: '/api/ExternalForms/Delete/{id}'\r\n }\r\n}\r\n\r\nexport const state = getDefaultState()\r\n\r\nconst actions: ActionTree = {\r\n loadAll ({ commit }) {\r\n commit('loadAllRequest')\r\n\r\n return externalFormService.getAll()\r\n .then(\r\n forms => commit('loadAllSuccess', forms),\r\n error => commit('loadAllFailure', error)\r\n )\r\n },\r\n\r\n getFormById (context, formId: number) {\r\n context.commit('loadExternalFormRequest')\r\n\r\n return externalFormService.getFormById(formId)\r\n .then(\r\n (form: ExternalFormUpdateDto) => {\r\n context.commit('loadExternalFormSuccess', form)\r\n return Promise.resolve()\r\n }\r\n ).catch((err: Error) => {\r\n context.commit('loadExternalFormFailure', err)\r\n return Promise.reject(err)\r\n })\r\n },\r\n getFormByName (context, formName: string) {\r\n context.commit('loadExternalFormRequest')\r\n return externalFormService.getFormByName(formName)\r\n .then(\r\n (form: ExternalFormDto) => {\r\n context.commit('loadExternalFormSuccess', form)\r\n return Promise.resolve()\r\n }\r\n ).catch((err: Error) => {\r\n context.commit('loadExternalFormFailure', err)\r\n return Promise.reject(err)\r\n })\r\n },\r\n\r\n addForm (context, externalFormDto: ExternalFormDto) {\r\n return externalFormService.addForm(externalFormDto)\r\n .then(\r\n (form: ExternalFormDto) => {\r\n context.commit('addFormSuccess', form)\r\n return Promise.resolve()\r\n }\r\n ).catch((err: Error) => {\r\n context.commit('addExternalFormFailure', err)\r\n return Promise.reject(err)\r\n })\r\n },\r\n\r\n updateForm (context, externalFormDto: ExternalFormDto) {\r\n return externalFormService.updateForm(externalFormDto)\r\n .then(\r\n (form: ExternalFormDto) => {\r\n context.commit('updateExternalFormSuccess', form)\r\n return Promise.resolve()\r\n }\r\n ).catch((err: Error) => {\r\n context.commit('updateExternalFormFailure', err)\r\n return Promise.reject(err)\r\n })\r\n },\r\n\r\n deleteForm (context, formId: number) {\r\n return externalFormService.deleteForm(formId)\r\n .then(\r\n () => {\r\n context.commit('deleteFormSuccess', formId)\r\n return Promise.resolve()\r\n }\r\n ).catch((err: Error) => {\r\n context.commit('deleteFormFailure', err)\r\n return Promise.reject(err)\r\n })\r\n }\r\n}\r\n\r\nconst mutations: MutationTree = {\r\n loadAllRequest (state) {\r\n state.all = []\r\n },\r\n\r\n loadAllSuccess (state, forms) {\r\n state.formsLoaded = true\r\n state.all = forms\r\n },\r\n\r\n loadAllFailure (state, error) {\r\n state.formsLoaded = false\r\n state.all = []\r\n },\r\n\r\n loadFormRequest (state) {\r\n // Handle loading state if needed\r\n },\r\n\r\n loadFormSuccess (state, form) {\r\n // Handle success state if needed\r\n },\r\n\r\n loadFormFailure (state, error) {\r\n // Handle failure state if needed\r\n },\r\n\r\n addFormSuccess (state, form) {\r\n state.all.push(form)\r\n },\r\n\r\n addFormFailure (state, error) {\r\n // Handle failure state if needed\r\n },\r\n\r\n updateFormSuccess (state, updatedForm) {\r\n const index = state.all.findIndex(emp => emp.id === updatedForm.id)\r\n if (index !== -1) {\r\n state.all.splice(index, 1, updatedForm)\r\n }\r\n },\r\n\r\n updateFormFailure (state, error) {\r\n // Handle failure state if needed\r\n },\r\n\r\n deleteFormSuccess (state, formId) {\r\n state.all = state.all.filter(emp => emp.id !== formId)\r\n },\r\n\r\n deleteFormFailure (state, error) {\r\n // Handle failure state if needed\r\n },\r\n\r\n reset (state) {\r\n Object.assign(state, getDefaultState())\r\n }\r\n}\r\n\r\nconst getters: GetterTree = {\r\n getById: (state: ExternalFormState) => (id: number) => {\r\n return state.all.find((x) => x.id === id)\r\n }\r\n}\r\n\r\nexport const externalForms: Module = {\r\n namespaced: true,\r\n state: state,\r\n actions: actions,\r\n mutations: mutations,\r\n getters: getters\r\n}","import Vue from 'vue'\r\nimport Vuex, { StoreOptions } from 'vuex'\r\nimport { config, ConfigState } from './config.module'\r\nimport { alert, AlertState } from './alert.module'\r\nimport { authentication, AuthenticationState } from './authentication.module'\r\nimport { codes, CodeState } from './code.module'\r\nimport { districts, DistrictState } from './districts.module'\r\nimport { sections, SectionState } from './sections.module'\r\nimport { signingAgreement, SigningAgreementState } from './signingAgreement.module'\r\nimport { preparednessPlan, PreparednessPlanState } from './preparednessPlan.module'\r\nimport { members, MemberState } from './members.module'\r\nimport { meetings, MeetingState } from './meetings.module'\r\nimport { employees, EmployeeState } from './employees.module'\r\nimport { roles, RoleState } from './roles.module'\r\nimport { externalForms, ExternalFormState } from './externalForm.module'\r\n\r\nVue.use(Vuex)\r\n\r\n// add any store state properties in here\r\nexport interface RootState {\r\n config: ConfigState,\r\n alert: AlertState,\r\n authentication: AuthenticationState,\r\n codes: CodeState,\r\n districts: DistrictState,\r\n sections: SectionState,\r\n members: MemberState,\r\n meetings: MeetingState,\r\n employees: EmployeeState,\r\n externalForms: ExternalFormState,\r\n roles: RoleState,\r\n signingAgreement: SigningAgreementState,\r\n preparednessPlan: PreparednessPlanState\r\n}\r\n\r\nconst store: StoreOptions = {\r\n modules: {\r\n config,\r\n alert,\r\n authentication,\r\n codes,\r\n districts,\r\n sections,\r\n members,\r\n meetings,\r\n employees,\r\n externalForms,\r\n roles,\r\n signingAgreement,\r\n preparednessPlan\r\n }\r\n}\r\nexport default new Vuex.Store(store)\r\n","// import config from 'config'\r\nimport store from '@/store'\r\nimport { LoggedInState } from '@/types/enums'\r\n\r\nfunction handleAfterAuthenticated (): Promise {\r\n if (store.state.authentication.status === LoggedInState.loggedIn) {\r\n const promises = [\r\n store.dispatch('codes/loadAll'),\r\n store.dispatch('authentication/loadBaseData', null, { root: true })\r\n ]\r\n return Promise.all(promises)\r\n }\r\n return Promise.resolve()\r\n}\r\n\r\nexport const mainService = {\r\n handleAfterAuthenticated\r\n}\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{attrs:{\"id\":\"app\"}},[_c('Alert'),(_vm.isDataLoading)?_c('Loading'):_vm._e(),_c('Header'),_c('div',{attrs:{\"id\":\"main\"}},[_c('div',{staticClass:\"container\"},[_c('router-view')],1)]),_c('Footer')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"header align-left\"},[_c('div',[_c('router-link',{staticClass:\"homelink\",attrs:{\"to\":\"/\"}},[_c('img',{staticClass:\"logo align-middle\",attrs:{\"src\":require(\"@/assets/img/punainen-risti-logo.svg\"),\"alt\":\"Punainen Risti Logo\"}})])],1),_c('div',{staticClass:\"title align-middle\"},[_c('h2',[_vm._v(\" \"+_vm._s(_vm.$t('header.title'))+\" \")]),_c('SwitchLanguage')],1),(_vm.bannerVisible)?_c('div',{staticClass:\"banner\"},[_c('div',{staticClass:\"option warning-banner\"},[_c('div',{staticClass:\"option-value warning-option\"},[_c('tickcrosswarning',{attrs:{\"value\":_vm.option1Value}})],1),_c('div',{staticClass:\"option-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('banner.globalmessage'))+\" \")])])]):_vm._e(),(_vm.isLoggedIn)?_c('div',{staticClass:\"logout\"},[_c('div',{staticClass:\"user\"},[_vm._v(\" \"+_vm._s(_vm.username)+\" \")]),_c('router-link',{attrs:{\"to\":\"/logout\"}},[_vm._v(\" \"+_vm._s(_vm.$t('header.logout'))+\" \")])],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"switch-language\"},[_c('span',{class:{ selected: _vm.fiSelected },on:{\"click\":function($event){return _vm.changeLanguage('fi')}}},[_vm._v(\"fi\")]),_c('span',{class:{ selected: _vm.svSelected },on:{\"click\":function($event){return _vm.changeLanguage('sv')}}},[_vm._v(\"sv\")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { mapState } from 'vuex'\r\n\r\nexport default Vue.extend({\r\n name: 'Switchlanguage',\r\n computed: {\r\n ...mapState({\r\n language: (state: any) => state.config.language\r\n }),\r\n fiSelected (): boolean {\r\n return this.$store.state.config.language === 'fi'\r\n },\r\n svSelected (): boolean {\r\n return this.$store.state.config.language === 'sv'\r\n }\r\n },\r\n methods: {\r\n changeLanguage (lang: string): void {\r\n this.$store.commit('config/setLanguage', lang)\r\n localStorage.setItem('preferredLanguage', lang)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SwitchLanguage.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SwitchLanguage.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SwitchLanguage.vue?vue&type=template&id=4bb93f41\"\nimport script from \"./SwitchLanguage.vue?vue&type=script&lang=ts\"\nexport * from \"./SwitchLanguage.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SwitchLanguage.vue?vue&type=style&index=0&id=4bb93f41&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"tickcrosswarning\"},[(_vm.isYes)?_c('font-awesome-icon',{staticClass:\"tick\",attrs:{\"icon\":['far', 'check-circle']}}):_vm._e(),(_vm.isNo)?_c('font-awesome-icon',{staticClass:\"cross\",attrs:{\"icon\":['far', 'times-circle']}}):_vm._e(),(_vm.isWarning)?_c('font-awesome-icon',{staticClass:\"warning\",attrs:{\"icon\":['fas', 'exclamation-triangle']}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { YesNoWarning } from '@/types/custom'\r\n\r\nexport default Vue.extend({\r\n name: 'TickCrossWarning',\r\n props: {\r\n value: {\r\n type: Number as () => YesNoWarning,\r\n default: YesNoWarning.No\r\n }\r\n },\r\n computed: {\r\n isYes (): boolean {\r\n return this.value === YesNoWarning.Yes\r\n },\r\n isNo (): boolean {\r\n return this.value === YesNoWarning.No\r\n },\r\n isWarning (): boolean {\r\n return this.value === YesNoWarning.Warning\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRTickCrossWarning.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SPRTickCrossWarning.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SPRTickCrossWarning.vue?vue&type=template&id=1f4588b4&scoped=true\"\nimport script from \"./SPRTickCrossWarning.vue?vue&type=script&lang=ts\"\nexport * from \"./SPRTickCrossWarning.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SPRTickCrossWarning.vue?vue&type=style&index=0&id=1f4588b4&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1f4588b4\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport SwitchLanguage from '@/components/layout/SwitchLanguage.vue'\r\nimport tickcrosswarning from '@/components/SPRTickCrossWarning.vue'\r\n\r\nexport default Vue.extend({\r\n name: 'Header',\r\n components: { SwitchLanguage, tickcrosswarning },\r\n props: {\r\n option1Value: {\r\n type: Number,\r\n required: false,\r\n default: 3 // 3 - Warning\r\n }\r\n },\r\n computed: {\r\n bannerVisible (): string {\r\n return '' //this.$t('join.personalHeaderBanner').toString()\r\n },\r\n isLoggedIn (): boolean {\r\n return this.$store.state.authentication.status === 'LOGGEDIN'\r\n },\r\n username (): string {\r\n return this.$store.state.authentication?.claims?.username\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Header.vue?vue&type=template&id=503dedaa\"\nimport script from \"./Header.vue?vue&type=script&lang=ts\"\nexport * from \"./Header.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Header.vue?vue&type=style&index=0&id=503dedaa&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"footer\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('ul',{staticClass:\"footernav align-middle\"},[_c('li',{staticClass:\"footerlink\"},[_vm._v(\" \"+_vm._s(_vm.$t('footer.copyright'))+\" \"+_vm._s(_vm.currentYear)+\" \")]),_c('li',{staticClass:\"footerlink\"},[_c('a',{attrs:{\"href\":\"https://www.punainenristi.fi/tietosuoja\"}},[_vm._v(_vm._s(_vm.$t('footer.privacy')))])]),_c('li',{staticClass:\"version-info\"},[_vm._v(\" \"+_vm._s(_vm.versionInfo)+\" \"+_vm._s(_vm.versionInfoSeparator)+\" \"),(_vm.ossiWebApiVersionLink)?_c('a',{staticClass:\"footer-link-basic\",attrs:{\"href\":_vm.ossiWebApiVersionLink,\"target\":\"_blank\",\"tabindex\":\"0\"}},[_vm._v(\" Ossi Web API Version?\")]):_vm._e()])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Footer.vue?vue&type=template&id=07abbab0\"\nimport script from \"./Footer.vue?vue&type=script&lang=js\"\nexport * from \"./Footer.vue?vue&type=script&lang=js\"\nimport style0 from \"./Footer.vue?vue&type=style&index=0&id=07abbab0&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"alert-box\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[(_vm.alerts)?_c('div',{staticClass:\"alerts\"},_vm._l((_vm.alerts),function(alert){return _c('div',{key:alert.id,class:`alert ${alert.type}`,staticStyle:{\"opacity\":\"1\"},attrs:{\"id\":'alert_' + alert.id}},[(alert.isHtml)?_c('div',{domProps:{\"innerHTML\":_vm._s(alert.message)}}):_c('div',[_vm._v(\" \"+_vm._s(alert.message)+\" \")]),_c('div',{staticClass:\"remove\"},[_c('a',{on:{\"click\":function($event){return _vm.removeAlert(alert.id)}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"times\",\"title\":_vm.$t('alert.dismiss')}})],1)])])}),0):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { Alert } from '@/types/custom.ts'\r\nimport { AlertTimeout } from '@/types/enums'\r\n\r\nexport default Vue.extend({\r\n name: 'Alert',\r\n computed: {\r\n alerts (): Array {\r\n return this.$store.state.alert.alerts\r\n }\r\n },\r\n data () {\r\n return {\r\n alertShouldStayUntilCleared: false\r\n }\r\n },\r\n watch: {\r\n $route (to, from) {\r\n // clear alert on location change, keep the alerts across route change\r\n this.$store.dispatch('alert/clear', true)\r\n },\r\n alerts (alerts) {\r\n // get the last one and start a countdown on it to make it disappear after a while\r\n if (alerts.length && !this.alertShouldStayUntilCleared) {\r\n const lastAlert = alerts[alerts.length - 1]\r\n if (lastAlert.timeout && lastAlert.timeout === AlertTimeout.PERMANENT) return\r\n\r\n window.setTimeout((alert: Alert) => {\r\n this.removeAlert(alert.id)\r\n }, lastAlert.timeout || AlertTimeout.NORMAL, lastAlert)\r\n }\r\n }\r\n },\r\n methods: {\r\n removeAlert (id: number) {\r\n const interval = setInterval((id: number) => {\r\n const item = document.getElementById(`alert_${id}`)\r\n if (item) {\r\n let opacity = Number(item ? item.style.opacity : 0)\r\n opacity -= 0.01\r\n // @ts-ignore because its a string officially...\r\n item.style.opacity = opacity\r\n if (opacity < 0) {\r\n this.$store.dispatch('alert/remove', id)\r\n clearInterval(interval)\r\n }\r\n }\r\n }, 5, id)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Alert.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Alert.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Alert.vue?vue&type=template&id=0f6ea675\"\nimport script from \"./Alert.vue?vue&type=script&lang=ts\"\nexport * from \"./Alert.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Alert.vue?vue&type=style&index=0&id=0f6ea675&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"loading\"},[_c('Spinner')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"spinner\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"spinner\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\n\r\nexport default Vue.extend({\r\n name: 'Spinner'\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Spinner.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Spinner.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Spinner.vue?vue&type=template&id=0c8c01ae&scoped=true\"\nimport script from \"./Spinner.vue?vue&type=script&lang=ts\"\nexport * from \"./Spinner.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Spinner.vue?vue&type=style&index=0&id=0c8c01ae&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0c8c01ae\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport Spinner from '@/components/Spinner.vue'\r\n\r\nexport default Vue.extend({\r\n name: 'Loading',\r\n components: { Spinner }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Loading.vue?vue&type=template&id=47065fb1&scoped=true\"\nimport script from \"./Loading.vue?vue&type=script&lang=ts\"\nexport * from \"./Loading.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Loading.vue?vue&type=style&index=0&id=47065fb1&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"47065fb1\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport Header from '@/components/layout/Header.vue'\r\nimport Footer from '@/components/layout/Footer.vue' // @ is an alias to /src\r\nimport Alert from '@/components/Alert.vue'\r\nimport Loading from '@/components/Loading.vue'\r\n\r\nexport default Vue.extend({\r\n name: 'App',\r\n components: {\r\n Header,\r\n Footer,\r\n Alert,\r\n Loading\r\n },\r\n created () {\r\n // suggested language handling\r\n // get language cookie\r\n // if its not finnish, dispatch config/changelanguage\r\n // that sets store language\r\n // plus calls i18n.locale = 'se'\r\n },\r\n computed: {\r\n isDataLoading (): boolean {\r\n return this.$store.state.alert.dataLoading\r\n }\r\n }\r\n})\r\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=5805ecab\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=5805ecab&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"home\"},[(_vm.sectionId)?_c('div',[_c('div',{staticClass:\"row link-icon-boxes\"},_vm._l((_vm.itemsToShow),function(item,index){return _c('div',{key:index,staticClass:\"link-icon-box\"},[_c('LinkIconBox',{attrs:{\"font-awesome-icon\":item.icon,\"title\":_vm.$t(item.titleKey),\"subtitle\":_vm.$t(item.subtitleKey)},on:{\"clicked\":item.onClick}})],1)}),0),_c('div',{staticClass:\"row stats\"},[_c('div',{staticClass:\"col-sm\"},[_c('StatisticTile',{attrs:{\"name\":\"Stat1\",\"value\":\"3456\",\"subtext\":\"This is some interesting sub text.\"},on:{\"click\":_vm.statisticClicked}})],1),_c('div',{staticClass:\"col-sm\"},[_c('StatisticTile',{attrs:{\"name\":\"Stat2\",\"value\":\"6\",\"subtext\":\"This is some even more interesting text.\"},on:{\"click\":_vm.statisticClicked}})],1),_c('div',{staticClass:\"col-sm\"},[_c('StatisticTile',{attrs:{\"name\":\"Stat3\",\"value\":\"24\",\"subtext\":\"This text really isn't that interesting.\"},on:{\"click\":_vm.statisticClicked}})],1)])]):_c('div',[_c('Loading')],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"linkicon-box\",on:{\"click\":function($event){return _vm.$emit('clicked')}}},[(_vm.iconLink)?_c('div',{staticClass:\"icon\"},[_c('font-awesome-icon',{attrs:{\"icon\":_vm.iconLink}})],1):_vm._e(),_c('div',{staticClass:\"maintext\"},[_c('h5',[_vm._v(_vm._s(_vm.title))])]),_c('div',{staticClass:\"subtext\"},[_c('div',[_vm._v(_vm._s(_vm.subtitle))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\n\r\nexport default Vue.extend({\r\n name: 'LinkIconBox',\r\n props: {\r\n // Note the icons you use should be loaded in main.ts as all icons are not in by default to save loading time.\r\n // this requires the string name, eg list-alt\r\n // but you should load in main by the name of the icon in node_modules, eg faListAlt\r\n fontAwesomeIcon: {\r\n type: String,\r\n default: ''\r\n },\r\n id: {\r\n type: String,\r\n default: ''\r\n },\r\n title: {\r\n type: String,\r\n default: ''\r\n },\r\n subtitle: {\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n computed: {\r\n iconLink (): string {\r\n if (this.fontAwesomeIcon.length) {\r\n return this.fontAwesomeIcon\r\n } else {\r\n return ''\r\n }\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LinkIconBox.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LinkIconBox.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./LinkIconBox.vue?vue&type=template&id=6d898a84&scoped=true\"\nimport script from \"./LinkIconBox.vue?vue&type=script&lang=ts\"\nexport * from \"./LinkIconBox.vue?vue&type=script&lang=ts\"\nimport style0 from \"./LinkIconBox.vue?vue&type=style&index=0&id=6d898a84&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d898a84\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"statistictile\"},[_c('div',{staticClass:\"stat\",on:{\"click\":_vm.statClicked}},[_vm._v(\" \"+_vm._s(_vm.value)+\" \")]),_c('div',{staticClass:\"subtext\"},[_c('div',[_vm._v(_vm._s(_vm.subtext))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\n\r\nexport default Vue.extend({\r\n name: 'StatisticTile',\r\n props: {\r\n name: {\r\n type: String,\r\n default: ''\r\n },\r\n value: {\r\n type: [String, Number],\r\n default: ''\r\n },\r\n subtext: {\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n methods: {\r\n statClicked (this: any) {\r\n this.$emit('click', this.name)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StatisticTile.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StatisticTile.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./StatisticTile.vue?vue&type=template&id=3bb1bd17&scoped=true\"\nimport script from \"./StatisticTile.vue?vue&type=script&lang=ts\"\nexport * from \"./StatisticTile.vue?vue&type=script&lang=ts\"\nimport style0 from \"./StatisticTile.vue?vue&type=style&index=0&id=3bb1bd17&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3bb1bd17\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport LinkIconBox from '@/components/LinkIconBox.vue'\r\nimport StatisticTile from '@/components/StatisticTile.vue'\r\nimport Loading from '@/components/Loading.vue'\r\nimport { decodeToken } from '@/helpers/auth/authorizationhelper'\r\n\r\ninterface Item {\r\n icon: string,\r\n titleKey: string,\r\n subtitleKey: string,\r\n onClick: () => void\r\n}\r\n\r\nexport default Vue.extend({\r\n name: 'Home',\r\n components: {\r\n LinkIconBox,\r\n StatisticTile,\r\n Loading\r\n },\r\n methods: {\r\n districtsClicked () {\r\n this.$router.push('/districts')\r\n },\r\n officialLetterRequestsClicked () {\r\n this.$router.push('/officialletterrequests')\r\n },\r\n usersClicked () {\r\n this.$router.push(`/members`)\r\n },\r\n employeesClicked () {\r\n this.$router.push(`/employees`)\r\n },\r\n externalFormsClicked () {\r\n this.$router.push(`/externalForms`)\r\n },\r\n statisticClicked (name: string) {\r\n // eslint-disable-next-line no-console\r\n console.log(`${name} stat was clicked`)\r\n }\r\n },\r\n data () {\r\n return {\r\n loaded: false\r\n }\r\n },\r\n mounted () {\r\n // admins can see this page\r\n if (this.hasAdminAccess) return\r\n\r\n // district admin levels go to their district homepages\r\n if (this.hasDistrictAccess) {\r\n this.$router.push({ path: `/districts/${this.districtId}` })\r\n return\r\n }\r\n\r\n // section admin levels go to their section homepages\r\n if (this.hasSectionAccess) {\r\n this.$router.push({ path: `/sections/${this.sectionId}` })\r\n return\r\n }\r\n\r\n //shouldnt get here.\r\n this.$router.push({ path: '/404' })\r\n },\r\n computed: {\r\n itemsToShow (): Item[] {\r\n const items = [\r\n { icon: 'sitemap', titleKey: 'districts', subtitleKey: 'home.districts-desc', onClick: this.districtsClicked },\r\n { icon: 'file-alt', titleKey: 'officialletterrequests', subtitleKey: 'home.officialletterrequests-desc', onClick: this.officialLetterRequestsClicked },\r\n { icon: 'user', titleKey: 'members', subtitleKey: 'home.members-desc', onClick: this.usersClicked },\r\n { icon: 'user-tie', titleKey: 'employees', subtitleKey: 'home.employees-desc', onClick: this.employeesClicked },\r\n { icon: 'file-lines', titleKey: 'externalforms', subtitleKey: 'home.externalforms-desc', onClick: this.externalFormsClicked }\r\n ]\r\n\r\n return items\r\n },\r\n sectionId (): number {\r\n return Number(decodeToken(this.$store.state.authentication.token).sectionId) || -1\r\n },\r\n districtId (): number {\r\n return Number(decodeToken(this.$store.state.authentication.token).districtId) || -1\r\n },\r\n SuperAdminOnly (): boolean {\r\n return this.$store.state.authentication.claims.isInRoleSuperAdmin\r\n },\r\n hasAdminAccess (): boolean {\r\n // Can view all districts\r\n return (\r\n this.$store.state.authentication.claims.isInRoleSuperAdmin ||\r\n this.$store.state.authentication.claims.isInRoleKT)\r\n },\r\n hasDistrictAccess (): boolean {\r\n // can view all sections in a district\r\n return (\r\n this.$store.state.authentication.claims.isInRoleDistrictAdmin ||\r\n this.$store.state.authentication.claims.isInRoleDistrictUser)\r\n },\r\n hasSectionAccess (): boolean {\r\n // can only view the section they are in\r\n return (\r\n (\r\n this.$store.state.authentication.claims.isInRoleSectionUser ||\r\n this.$store.state.authentication.claims.isInRoleSectionAdmin\r\n ) && (\r\n !this.hasDistrictAccess &&\r\n !this.hasAdminAccess\r\n )\r\n )\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=d3ece646&scoped=true\"\nimport script from \"./Home.vue?vue&type=script&lang=ts\"\nexport * from \"./Home.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Home.vue?vue&type=style&index=0&id=d3ece646&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d3ece646\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"error\"},[_c('div',{staticClass:\"message\",domProps:{\"innerHTML\":_vm._s(_vm.$t('error'))}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\n\r\nexport default Vue.extend({\r\n name: 'Error'\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Error.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Error.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Error.vue?vue&type=template&id=0542fdf7\"\nimport script from \"./Error.vue?vue&type=script&lang=ts\"\nexport * from \"./Error.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Error.vue?vue&type=style&index=0&id=0542fdf7&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"login\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 login-form\"},[_c('LoginForm',{on:{\"onLogin\":_vm.onLogin}})],1),_c('div',{staticClass:\"col-12 ad-login-text text-center\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":_vm.onAdLogin}},[_vm._v(\" \"+_vm._s(_vm.$t('login.adlogin'))+\" \")])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"loginform\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-4 offset-sm-4\"},[_c('SprFormText',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"label\":_vm.$t('login.email'),\"name\":\"login.email\",\"required\":\"\",\"has-error\":_vm.errors.has('login.email')},on:{\"input\":_vm.updateEmail},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-4 offset-sm-4 mt-4\"},[_c('SprFormPassword',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"label\":_vm.$t('login.password'),\"name\":\"login.password\",\"required\":true,\"has-error\":_vm.errors.has('login.password')},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-4 offset-sm-4 mt-4\"},[_c('SprButton',{attrs:{\"compact\":\"\",\"text\":_vm.$t('login.login')},on:{\"click\":_vm.onLogin}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"sprformtext\"},[_c('div',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.label)+\" \"),(_vm.required)?_c('span',{staticClass:\"is-required\"},[_vm._v(\"*\")]):_vm._e(),(_vm.useTooltip)?_c('span',{staticClass:\"tooltip-style\"},[_c('Tooltip',{attrs:{\"tooltip-message\":_vm.tooltipMessage,\"tooltip-target-id-name\":_vm.tooltipId,\"value\":true}})],1):_vm._e()]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.localValue),expression:\"localValue\"},{name:\"validate\",rawName:\"v-validate\",value:(_vm.validations),expression:\"validations\"}],class:{ 'has-error': _vm.hasError },attrs:{\"type\":\"text\",\"aria-label\":_vm.label,\"required\":_vm.required,\"placeholder\":_vm.placeholder,\"name\":_vm.name},domProps:{\"value\":(_vm.localValue)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.localValue=$event.target.value},function($event){return _vm.$emit('input', _vm.localValue)}]}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.value)?_c('span',{staticClass:\"tooltip-container\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"info-circle\",\"id\":_vm.tooltipTargetIdName}}),_c('b-tooltip',{attrs:{\"target\":_vm.tooltipTargetIdName,\"triggers\":\"hover\"}},[_vm._v(\" \"+_vm._s(_vm.tooltipMessage)+\" \")])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\n\r\nexport default Vue.extend({\r\n name: 'Tooltip',\r\n props: {\r\n tooltipMessage: {\r\n type: String,\r\n required: true\r\n },\r\n tooltipTargetIdName: {\r\n type: String,\r\n required: true\r\n },\r\n value: {\r\n type: Boolean, // Show the tooltip?\r\n default: false\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Tooltip.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Tooltip.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Tooltip.vue?vue&type=template&id=421990e4&scoped=true\"\nimport script from \"./Tooltip.vue?vue&type=script&lang=ts\"\nexport * from \"./Tooltip.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Tooltip.vue?vue&type=style&index=0&id=421990e4&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"421990e4\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport Tooltip from '@/components/Tooltip.vue'\r\n\r\nexport default Vue.extend({\r\n name: 'SprFormText',\r\n components: { Tooltip },\r\n inject: ['$validator'], //need to inject the parent validator or the field will not be available on the parent if it fails. Also inject into any parent components until you get to the top button\r\n props: {\r\n value: {\r\n type: String,\r\n default: ''\r\n },\r\n label: {\r\n type: String,\r\n default: ''\r\n },\r\n required: {\r\n type: Boolean,\r\n default: false\r\n },\r\n hasError: {\r\n type: Boolean,\r\n default: false\r\n },\r\n validations: {\r\n type: [String, Object],\r\n default: undefined\r\n },\r\n name: {\r\n type: String,\r\n default: ''\r\n },\r\n placeholder: {\r\n type: String,\r\n default: ''\r\n },\r\n useTooltip: {\r\n type: Boolean,\r\n default: false\r\n },\r\n tooltipMessage: {\r\n type: String,\r\n default: null\r\n }\r\n },\r\n data () {\r\n return {\r\n localValue: '',\r\n tooltipId: 'tooltipText_'\r\n\r\n }\r\n },\r\n methods: {\r\n generateUUID (): string {\r\n let d = new Date().getTime()\r\n\r\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\r\n d += performance.now() //use high-precision timer if available\r\n }\r\n\r\n const newGuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n const r = (d + Math.random() * 16) % 16 | 0\r\n d = Math.floor(d / 16)\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16)\r\n })\r\n\r\n return newGuid\r\n }\r\n },\r\n mounted () {\r\n // local copies to prevent 'props being modified directly' warning.\r\n this.localValue = this.value\r\n this.tooltipId = 'tooltipDropDown_' + this.generateUUID()\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprFormText.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprFormText.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SprFormText.vue?vue&type=template&id=856fe048&scoped=true\"\nimport script from \"./SprFormText.vue?vue&type=script&lang=ts\"\nexport * from \"./SprFormText.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SprFormText.vue?vue&type=style&index=0&id=856fe048&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"856fe048\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"sprformpassword\"},[_c('div',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.label)+\" \"),(_vm.required)?_c('span',{staticClass:\"is-required\"},[_vm._v(\"*\")]):_vm._e()]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.localValue),expression:\"localValue\"}],class:{ 'has-error': _vm.hasError },attrs:{\"type\":\"password\",\"aria-label\":_vm.label},domProps:{\"value\":(_vm.localValue)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.localValue=$event.target.value},function($event){return _vm.$emit('input', _vm.localValue)}]}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\n\r\nexport default Vue.extend({\r\n name: 'SprFormPassword',\r\n props: {\r\n value: {\r\n type: String,\r\n default: ''\r\n },\r\n label: {\r\n type: String,\r\n default: ''\r\n },\r\n required: {\r\n type: Boolean,\r\n default: false\r\n },\r\n hasError: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data () {\r\n return {\r\n localValue: ''\r\n }\r\n },\r\n mounted () {\r\n // local copies to prevent 'props being modified directly' warning.\r\n this.localValue = this.value\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprFormPassword.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprFormPassword.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SprFormPassword.vue?vue&type=template&id=1d58e542&scoped=true\"\nimport script from \"./SprFormPassword.vue?vue&type=script&lang=ts\"\nexport * from \"./SprFormPassword.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SprFormPassword.vue?vue&type=style&index=0&id=1d58e542&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d58e542\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"sprbutton\"},[_c('input',{class:{'primary': _vm.primary, 'compact': _vm.compact, 'min-padding': _vm.minPadding },attrs:{\"type\":_vm.type,\"aria-label\":_vm.text,\"disabled\":_vm.disabled},domProps:{\"value\":_vm.text},on:{\"click\":_vm.buttonClicked}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\n\r\n/// Example\r\n/// \r\nexport default Vue.extend({\r\n name: 'SprButton',\r\n props: {\r\n type: {\r\n type: String,\r\n default: 'button'\r\n },\r\n disabled: Boolean,\r\n text: {\r\n type: String,\r\n default: ''\r\n },\r\n // whether the button should be shown as a main call to action\r\n primary: {\r\n type: Boolean,\r\n default: false\r\n },\r\n // Whether to stick to 100% of bootstrap column width (compact=false) or to be width auto with some padding (compact=true).\r\n compact: {\r\n type: Boolean,\r\n default: false\r\n },\r\n minPadding: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n methods: {\r\n buttonClicked ($evt: any) {\r\n this.$emit('click', $evt)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprButton.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprButton.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SprButton.vue?vue&type=template&id=0203c4f4&scoped=true\"\nimport script from \"./SprButton.vue?vue&type=script&lang=ts\"\nexport * from \"./SprButton.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SprButton.vue?vue&type=style&index=0&id=0203c4f4&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0203c4f4\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport { LoginRequest } from '@/types'\r\nimport SprFormText from '@/components/forms/SprFormText.vue'\r\nimport SprFormPassword from '@/components/forms/SprFormPassword.vue'\r\nimport SprButton from '@/components/forms/SprButton.vue'\r\n\r\nexport default Vue.extend({\r\n name: 'LoginForm',\r\n components: {\r\n SprFormText,\r\n SprFormPassword,\r\n SprButton\r\n },\r\n data () {\r\n return {\r\n email: '',\r\n password: ''\r\n }\r\n },\r\n methods: {\r\n updateEmail (val: string): string {\r\n return val\r\n },\r\n onLogin () {\r\n // todo : validation\r\n const data: LoginRequest = {\r\n email: this.email,\r\n password: this.password\r\n }\r\n this.$emit('onLogin', data)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=e6e1cc8a&scoped=true\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=ts\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e6e1cc8a\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport LoginForm from '@/components/LoginForm.vue'\r\nimport { LoginRequest } from '@/types'\r\nimport { mainService } from '@/services/main.service'\r\nimport { AlertTimeout } from '@/types/enums'\r\n\r\nexport default Vue.extend({\r\n name: 'Login',\r\n components: {\r\n LoginForm\r\n },\r\n data () {\r\n return {\r\n submitted: false\r\n }\r\n },\r\n created () {\r\n // reset login status\r\n this.$store.dispatch('authentication/logout')\r\n },\r\n methods: {\r\n onLogin (login: LoginRequest) {\r\n this.submitted = true\r\n\r\n if (login.email && login.password) {\r\n this.$store.dispatch('authentication/login', login).then(success => {\r\n mainService.handleAfterAuthenticated().then(() => {\r\n if (this.$store.state.authentication.claims.passwordExpiring) {\r\n setTimeout(() => {\r\n this.$store.dispatch('alert/info', { message: this.$t('login.passwordexpiring'), timeout: AlertTimeout.LONG })\r\n }, 0)\r\n }\r\n \r\n if (this.$route.path !== '/') {\r\n this.$router.push('/')\r\n }\r\n })\r\n }, fail => {\r\n //show noroles error, if we are returning the specific error message.\r\n //otherwise return the generic one\r\n if (fail.response.data.includes('Password has expired')) {\r\n this.$store.dispatch('alert/error', { message: this.$t('login.passwordexpired'), surviveRouteChange: true, isHtml: true })\r\n } else if (fail.response.data.includes('no roles')) {\r\n this.$store.dispatch('alert/error', { message: this.$t('login.noroles'), surviveRouteChange: true, isHtml: true })\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('login.loginfailed') })\r\n }\r\n }).catch(err => {\r\n // eslint-disable-next-line no-console\r\n console.log('Error logging in', err)\r\n this.$store.dispatch('alert/error', { message: this.$t('login.loginfailed') })\r\n })\r\n }\r\n },\r\n onAdLogin () {\r\n const baseUrl = window.location.origin\r\n const adInfo = this.$store.state.authentication.activeDirectory\r\n const adLoginUrl = `${adInfo.loginUrl}&redirect_uri=${baseUrl}${adInfo.redirectUri}`\r\n window.location.href = adLoginUrl\r\n }\r\n },\r\n computed: {\r\n loggingIn (): boolean {\r\n return this.$store.state.authentication.status.loggingIn\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=c82bd1aa\"\nimport script from \"./Login.vue?vue&type=script&lang=ts\"\nexport * from \"./Login.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=c82bd1aa&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"logout\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(\"Logout\")])]),_c('div',{staticClass:\"col-12\"},[_vm._v(\" Logging out.... \")])])])\n}]\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\n\r\nexport default Vue.extend({\r\n name: 'Logout',\r\n created () {\r\n // log em out\r\n this.$store.dispatch('authentication/logout')\r\n this.$router.push('/login')\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Logout.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Logout.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Logout.vue?vue&type=template&id=54b12080\"\nimport script from \"./Logout.vue?vue&type=script&lang=ts\"\nexport * from \"./Logout.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"adresponse\"},[_c('div',{staticClass:\"row my-3\"},[_c('div',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('ad.loggingin'))+\" \")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { StringArray, ADLoginInfo } from '@/types/custom'\r\nimport { mainService } from '@/services/main.service'\r\ninterface ADDataObject {\r\n adState: StringArray | null\r\n}\r\n\r\nexport default Vue.extend({\r\n name: 'ADResponse',\r\n created () {\r\n this.adState = this.getAdState()\r\n if (this.adState && this.adState['id_token'] && this.adState['session_state']) {\r\n const data: ADLoginInfo = {\r\n token: this.adState['id_token'],\r\n sessionState: this.adState['session_state']\r\n }\r\n this.$store.dispatch('authentication/adlogin', data).then(success => {\r\n mainService.handleAfterAuthenticated().then(() => {\r\n if (this.$route.path !== '/') {\r\n this.$router.push('/')\r\n }\r\n\r\n })\r\n }).catch(err => {\r\n // eslint-disable-next-line no-console\r\n if ((err + '').includes('Auth failed')) {\r\n this.$store.dispatch('alert/error', { message: this.$t('login.noroles'), surviveRouteChange: true, isHtml: true })\r\n } else {\r\n //this.$store.dispatch('alert/error', { message: this.$t('login.noroles'), surviveRouteChange: true, isHtml: true })\r\n this.$store.dispatch('alert/error', { message: this.$t('login.loginfailed'), surviveRouteChange: true })\r\n }\r\n //this.$store.dispatch('alert/error', { message: this.$t('login.loginfailed'), surviveRouteChange: true })\r\n this.$store.dispatch('authentication/loginFailure', err)\r\n this.$router.push('/login')\r\n })\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('login.loginfailed'), surviveRouteChange: true })\r\n this.$store.dispatch('authentication/loginFailure')\r\n this.$router.push('/login')\r\n }\r\n },\r\n data (): ADDataObject {\r\n return {\r\n adState: null\r\n }\r\n },\r\n methods: {\r\n getAdState () {\r\n const uri = window.location.href\r\n if (!uri || uri.indexOf('#') < 0) {\r\n return null\r\n }\r\n\r\n const fragment = uri.split('#')[1]\r\n\r\n if (!fragment || fragment.indexOf('id_token=') < 0) {\r\n return null\r\n }\r\n\r\n const params = fragment.split('&')\r\n const rv: StringArray = {}\r\n params.forEach(function (val) {\r\n const pair = val.split('=')\r\n if (pair.length === 2) {\r\n rv[pair[0]] = pair[1]\r\n }\r\n })\r\n\r\n return rv\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ADResponse.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ADResponse.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ADResponse.vue?vue&type=template&id=1e61d4d4\"\nimport script from \"./ADResponse.vue?vue&type=script&lang=ts\"\nexport * from \"./ADResponse.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"districts\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 backlink\"},[_c('Back')],1)]),(_vm.districts && _vm.$store.state.districts.districtsLoaded)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('districts')))])])]),_c('div',{staticClass:\"row\"},_vm._l((_vm.sortedDistricts),function(district){return _c('div',{key:district.id,staticClass:\"col-12 col-sm-6 col-md-4\"},[_c('a',{staticClass:\"districtlink\",class:_vm.getDistrictClass(district.statusId),on:{\"click\":function($event){return _vm.onDistrictClicked(district)}}},[_vm._v(\" \"+_vm._s(district.name)+\" \"),(district.isTrainingDistrict)?_c('span',{staticClass:\"attention\"},[_vm._v(\"(Koulutus)\")]):_vm._e()]),_c('div',{staticClass:\"section\"},_vm._l((_vm.getSections(district.id)),function(section){return _c('div',{key:section.id},[_c('div',{staticClass:\"sectionname\",class:_vm.getSectionClass(section.statusId),on:{\"click\":function($event){return _vm.onSectionClicked(section)}}},[_vm._v(\" \"+_vm._s(section.name)+\" \"),(!_vm.isActive(section.status))?_c('span',[_vm._v(\"(\"+_vm._s(_vm.getSectionStatusTranslation(section.status.id))+\")\")]):_vm._e(),(section.isTrainingSection)?_c('span',{staticClass:\"attention\"},[_vm._v(\"(Koulutus)\")]):_vm._e()])])}),0)])}),0)]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"back\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"angle-left\"}}),_c('a',{on:{\"click\":_vm.onBack}},[_vm._v(_vm._s(_vm.$t('back')))])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\n\r\nexport default Vue.extend({\r\n name: 'Back',\r\n methods: {\r\n onBack () {\r\n this.$router.go(-1)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Back.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Back.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Back.vue?vue&type=template&id=5c0ed0ce&scoped=true\"\nimport script from \"./Back.vue?vue&type=script&lang=ts\"\nexport * from \"./Back.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Back.vue?vue&type=style&index=0&id=5c0ed0ce&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5c0ed0ce\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport Back from '@/components/Back.vue'\r\nimport { TranslateResult } from 'vue-i18n'\r\nimport { DistrictSummaryResponse, SectionSummaryResponse, Code } from '@/types'\r\nimport { CodeCategory, DistrictStatus, SectionStatus } from '@/types/enums'\r\n\r\nexport default Vue.extend({\r\n name: 'Districts',\r\n components: {\r\n Back\r\n },\r\n computed: {\r\n districts (this: any): Array {\r\n return this.$store.state.districts.all\r\n },\r\n sortedDistricts () {\r\n return this.districts.slice(0).sort((a: DistrictSummaryResponse, b: DistrictSummaryResponse) => {\r\n return a.name.localeCompare(b.name, 'fi', { sensitivity: 'base' })\r\n })\r\n }\r\n },\r\n methods: {\r\n onDistrictClicked (district: DistrictSummaryResponse): void {\r\n this.$router.push(`/districts/${district.id}`)\r\n },\r\n onSectionClicked (section: SectionSummaryResponse): void {\r\n this.$router.push(`/sections/${section.id}`)\r\n },\r\n getSections (districtId: number) {\r\n return Object.assign({}, this.$store.getters['sections/getByDistrictId'](districtId))\r\n },\r\n getSectionStatusTranslation (statusId: number): TranslateResult {\r\n return this.$t(`sectionstatus-${statusId}`)\r\n },\r\n isActive (status: Code): boolean {\r\n return status.id === SectionStatus.ACTIVE\r\n },\r\n getDistrictClass (this: any, statusId: number): string {\r\n switch (statusId) {\r\n case DistrictStatus.ACTIVE:\r\n return 'status-active'\r\n\r\n case DistrictStatus.DISBANDED:\r\n return 'status-discontinued'\r\n }\r\n\r\n return ''\r\n },\r\n getSectionClass (this: any, statusId: number): string {\r\n switch (statusId) {\r\n case SectionStatus.ACTIVE:\r\n return 'status-active'\r\n\r\n case SectionStatus.MONITORED:\r\n return 'status-observing'\r\n\r\n case SectionStatus.DISBANDED:\r\n return 'status-discontinued'\r\n }\r\n\r\n return ''\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Districts.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Districts.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Districts.vue?vue&type=template&id=5c85e5e9&scoped=true\"\nimport script from \"./Districts.vue?vue&type=script&lang=ts\"\nexport * from \"./Districts.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Districts.vue?vue&type=style&index=0&id=5c85e5e9&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5c85e5e9\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"districthome\"},[(_vm.district && _vm.district.id)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h1',[_vm._v(_vm._s(_vm.district.name))])])]),_c('div',{staticClass:\"row linkiconboxes\"},[_c('div',{staticClass:\"col-12 col-sm\"},[_c('LinkIconBox',{attrs:{\"font-awesome-icon\":\"calendar-alt\",\"title\":_vm.$t('meetings'),\"subtitle\":_vm.$t('home.meetings-desc')},on:{\"clicked\":_vm.meetingsClicked}})],1),_c('div',{staticClass:\"col-12 col-sm\"},[_c('LinkIconBox',{attrs:{\"font-awesome-icon\":\"th\",\"title\":_vm.$t('sections'),\"subtitle\":_vm.$t('home.sections-desc')},on:{\"clicked\":_vm.sectionsClicked}})],1),_c('div',{staticClass:\"col-12 col-sm\"},[_c('LinkIconBox',{attrs:{\"font-awesome-icon\":\"user\",\"title\":_vm.$t('members'),\"subtitle\":_vm.$t('home.members-desc')},on:{\"clicked\":_vm.usersClicked}})],1)]),(_vm.canEditDistrict)?_c('div',{staticClass:\"row pot-errors\"},[_c('div',{staticClass:\"col-12\"},[_c('DistrictPositionOfTrustErrors',{attrs:{\"district-id\":_vm.district.id}})],1)]):_vm._e(),_c('div',{staticClass:\"row stats\"},[_c('div',{staticClass:\"col-6 col-md-3\"},[_c('StatisticTile',{attrs:{\"name\":\"Meetings Requiring Action\",\"value\":_vm.statMeetingsRequiringActionValue,\"subtext\":_vm.statMeetingsRequiringActionText},on:{\"click\":_vm.actionMeetingsClicked}})],1),_c('div',{staticClass:\"col-6 col-md-3\"},[_c('StatisticTile',{attrs:{\"name\":\"Total Members\",\"value\":_vm.statDistrictTotalMembersValue,\"subtext\":_vm.statDistrictTotalMembersText}})],1),_c('div',{staticClass:\"col-6 col-md-3\"},[_c('StatisticTile',{attrs:{\"name\":\"Members who have paid membership\",\"value\":_vm.statDistrictPaidMembersValue,\"subtext\":_vm.statDistrictPaidMembersText}})],1),_c('div',{staticClass:\"col-6 col-md-3\"},[_c('StatisticTile',{attrs:{\"name\":\"Members who started this year\",\"value\":_vm.statDistrictNewMembersValue,\"subtext\":_vm.statDistrictNewMembersText}})],1)]),(_vm.district.isTrainingDistrict)?_c('div',{staticClass:\"row attention\"},[_c('div',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('districts.traininginfo'))+\" \")])]):_vm._e(),(_vm.district.isTrainingDistrict && _vm.canResetDistrict)?_c('div',{staticClass:\"row reset\"},[_c('div',{staticClass:\"col-sm\"},[_c('SprButton',{attrs:{\"compact\":\"\",\"text\":_vm.$t('districts.reset')},on:{\"click\":_vm.onReset}})],1)]):_vm._e()]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.crmErrors && _vm.crmErrors.length)?_c('div',{staticClass:\"district-position-of-trust-errors\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('districts.positionsneedingattention')))])])]),_c('div',{staticClass:\"row meetingstable\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"table-responsive-sm\"},[_c('table',{staticClass:\"table\"},[_c('caption',[_vm._v(\"Positions Of Trust requiring your attention\")]),_c('thead',[_c('tr',[_c('th',{staticClass:\"d-table-cell d-md-none status\"}),_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('meeting.section'))+\" \")]),_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('meeting.name-short'))+\" \")]),_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('memberposition.position'))+\" \")]),_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('memberposition.errors'))+\" \")])])]),_c('tbody',_vm._l((_vm.crmErrors),function(error){return _c('tr',{key:error.id},[_c('td',{staticClass:\"d-table-cell d-md-none\"}),_c('td',{attrs:{\"scope\":\"row\"}},[_vm._v(\" \"+_vm._s(_vm.getSection(error.sectionId))+\" \")]),_c('td',[_c('a',{staticClass:\"meetingname\",on:{\"click\":function($event){return _vm.onMeetingClicked(error)}}},[_vm._v(\" \"+_vm._s(error.meetingName)+\" \")])]),_c('td',[_vm._v(\" \"+_vm._s(_vm.getPosition(error.positionId))+\" \")]),_c('td',[_c('ul',{staticClass:\"error-list\"},_vm._l((error.errors),function(errorStr){return _c('li',{key:errorStr},[_vm._v(\" \"+_vm._s(errorStr)+\" \")])}),0)])])}),0)])])])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { TranslateResult } from 'vue-i18n'\r\nimport SprFormDropdown from '@/components/forms/SprFormDropdown.vue'\r\nimport MeetingStatus from '@/components/meetings/MeetingStatus.vue'\r\nimport { finnishShortDate } from '@/helpers/datehelper'\r\nimport { MeetingSummaryResponse, MemberPositionErrorResponse, MemberPositionResponse } from '@/types'\r\nimport { DropdownOptions } from '@/types/custom.ts'\r\nimport { CodeCategory } from '@/types/enums'\r\nimport { meetingService } from '@/services/meeting.service.ts'\r\n\r\nexport default Vue.extend({\r\n name: 'DistrictPositionOfTrustErrors',\r\n props: {\r\n districtId: {\r\n type: Number,\r\n required: true\r\n }\r\n },\r\n data () {\r\n return {\r\n crmErrors: [] as Array\r\n }\r\n },\r\n mounted () {\r\n // @ts-ignore\r\n meetingService.getDistrictCrmPositionsErrors(this.districtId).then((result: Array) => {\r\n this.crmErrors = result\r\n })\r\n },\r\n methods: {\r\n getSection (sectionId: number) {\r\n const section = this.$store.getters['sections/getById'](sectionId)\r\n return section?.name\r\n },\r\n getPosition (positionId: number): string {\r\n const position = (this.$store.state.meetings.positionsOfTrust.find((x: MemberPositionResponse) => x.id === positionId))\r\n return position ? position.name : ''\r\n },\r\n onMeetingClicked (error: MemberPositionErrorResponse) {\r\n this.$router.push(`/sections/${error.sectionId}/meetings/${error.meetingId}`)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DistrictPositionOfTrustErrors.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DistrictPositionOfTrustErrors.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DistrictPositionOfTrustErrors.vue?vue&type=template&id=3343fe09&scoped=true\"\nimport script from \"./DistrictPositionOfTrustErrors.vue?vue&type=script&lang=ts\"\nexport * from \"./DistrictPositionOfTrustErrors.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DistrictPositionOfTrustErrors.vue?vue&type=style&index=0&id=3343fe09&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3343fe09\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport { TranslateResult } from 'vue-i18n'\r\nimport LinkIconBox from '@/components/LinkIconBox.vue'\r\nimport DistrictPositionOfTrustErrors from '@/components/meetings/DistrictPositionOfTrustErrors.vue'\r\nimport StatisticTile from '@/components/StatisticTile.vue'\r\nimport { DistrictSummaryResponse, DistrictStatisticsResponse } from '@/types'\r\nimport { MeetingStatus, AlertTimeout } from '@/types/enums'\r\nimport { districtService } from '@/services/district.service'\r\nimport SprButton from '@/components/forms/SprButton.vue'\r\n\r\nexport default Vue.extend({\r\n name: 'District',\r\n components: {\r\n LinkIconBox,\r\n StatisticTile,\r\n DistrictPositionOfTrustErrors,\r\n SprButton\r\n },\r\n props: {\r\n districtId: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n data () {\r\n return {\r\n stats: {\r\n created: 0,\r\n submitted: 0,\r\n reviewed: 0,\r\n approved: 0,\r\n archived: 0,\r\n totalMembers: 0,\r\n paidMembers: 0,\r\n newMembers: 0\r\n } as DistrictStatisticsResponse\r\n }\r\n },\r\n mounted () {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n districtService.getStats(Number(this.districtId)).then((result) => {\r\n this.stats = result\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n })\r\n },\r\n methods: {\r\n usersClicked () {\r\n if (this.district !== null) {\r\n // @ts-ignore - object is possibly null. No it frickin isn't.\r\n this.$router.push(`/districts/${this.district.id}/members`)\r\n }\r\n },\r\n meetingsClicked () {\r\n if (this.district !== null) {\r\n // @ts-ignore\r\n this.$router.push(`/districts/${this.district.id}/meetings`)\r\n }\r\n },\r\n sectionsClicked () {\r\n if (this.district !== null) {\r\n // @ts-ignore\r\n this.$router.push(`/districts/${this.district.id}/sections`)\r\n }\r\n },\r\n actionMeetingsClicked (name: string) {\r\n this.$router.push(`/districts/${this.district.id}/meetings?statuses=${MeetingStatus.SUBMITTED},${MeetingStatus.REVIEWED}`)\r\n },\r\n onReset () {\r\n if (confirm(this.$t('districts.resetconfirm').toString())) {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n districtService.resetDistrict(Number(this.districtId)).then((result) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$store.dispatch('alert/success', { message: this.$t('districts.resetsuccesful'), timeout: AlertTimeout.SHORT })\r\n })\r\n }\r\n }\r\n },\r\n computed: {\r\n district (): DistrictSummaryResponse {\r\n if (this.$store.state.districts.districtsLoaded) {\r\n return this.$store.state.districts.all.find((x: DistrictSummaryResponse) => x.id === Number(this.districtId))\r\n }\r\n return {} as DistrictSummaryResponse\r\n },\r\n statMeetingsRequiringActionValue (): number {\r\n return this.stats.submitted + this.stats.reviewed // Lähetetty or Tarkistettu\r\n },\r\n statMeetingsRequiringActionText (): TranslateResult {\r\n return this.$t('stats.meetingsrequiringaction')\r\n },\r\n statDistrictTotalMembersValue (): number {\r\n return this.stats.totalMembers\r\n },\r\n statDistrictTotalMembersText (): TranslateResult {\r\n return this.$t('stats.districttotalmembers')\r\n },\r\n statDistrictPaidMembersValue (): number {\r\n return this.stats.paidMembers\r\n },\r\n statDistrictPaidMembersText (): TranslateResult {\r\n return this.$t('stats.paidmembers')\r\n },\r\n statDistrictNewMembersValue (): number {\r\n return this.stats.newMembers\r\n },\r\n statDistrictNewMembersText (): TranslateResult {\r\n return this.$t('stats.newmembers')\r\n },\r\n canEditDistrict (): boolean {\r\n const claims = this.$store.state.authentication.claims\r\n return claims.isInRoleSuperAdmin ||\r\n claims.isInRoleKT ||\r\n claims.isInRoleDistrictAdmin\r\n },\r\n canResetDistrict (): boolean {\r\n return (this.$store.state.authentication.claims.isInRoleDistrictAdmin || this.$store.state.authentication.claims.isInRoleSuperAdmin)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./District.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./District.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./District.vue?vue&type=template&id=077184f5&scoped=true\"\nimport script from \"./District.vue?vue&type=script&lang=ts\"\nexport * from \"./District.vue?vue&type=script&lang=ts\"\nimport style0 from \"./District.vue?vue&type=style&index=0&id=077184f5&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"077184f5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"districtmeetings\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 backlink\"},[_c('Back')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h1',[_vm._v(_vm._s(_vm.districtName))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('meetings')))])]),_c('div',{staticClass:\"col-12 meetings\"},[_c('div',{staticClass:\"filter\"},[_c('MeetingsFilter',{attrs:{\"filter\":_vm.meetingsFilter,\"sections\":_vm.sections},on:{\"FilterChanged\":_vm.onFilterChanged}})],1),_c('MeetingsList',{attrs:{\"value\":_vm.meetings}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"meetingsfilter\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-8\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-10 section\"},[_c('spr-form-dropdown',{attrs:{\"label\":_vm.sectionLabel,\"name\":\"filter.section\",\"value\":_vm.filterSectionIdStr,\"options\":_vm.sectionData},on:{\"input\":_vm.onSectionChosen}})],1),_c('div',{staticClass:\"col-12 col-sm-10 type\"},[_c('spr-form-dropdown',{attrs:{\"label\":_vm.typeLabel,\"name\":\"filter.type\",\"value\":_vm.filterTypeIdStr,\"options\":_vm.typeData},on:{\"input\":_vm.onTypeChosen}})],1),_c('div',{staticClass:\"col-12 col-sm-10 meetingdate\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormDatePicker',{ref:\"meetingdate\",attrs:{\"label\":_vm.meetingDateLabel,\"value\":_vm.filter.meetingDate,\"name\":\"filter.meetingdate\"},on:{\"input\":_vm.onMeetingDateChosen}})],1)])])]),_c('div',{staticClass:\"col-12 col-sm-4\"},[_c('spr-form-checkbox-list',{attrs:{\"value\":_vm.statusData,\"label\":_vm.statusLabel},on:{\"input\":_vm.onStatusClicked}})],1)]),(_vm.filterChanged)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-right\"},[_c('a',{staticClass:\"clear\",on:{\"click\":_vm.onClear}},[_vm._v(_vm._s(_vm.clearLabel))])])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"sprformdropdown\",class:{ 'is-compact': _vm.compact }},[_c('div',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.label)+\" \"),(_vm.required)?_c('span',{staticClass:\"is-required\"},[_vm._v(\"*\")]):_vm._e(),(_vm.useTooltip)?_c('span',{staticClass:\"tooltip-style\"},[_c('Tooltip',{attrs:{\"tooltip-message\":_vm.tooltipMessage,\"tooltip-target-id-name\":_vm.tooltipId,\"value\":true}})],1):_vm._e()]),_c('select',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.validations),expression:\"validations\"}],class:{ 'has-error': _vm.hasError },attrs:{\"required\":_vm.required,\"name\":_vm.name,\"aria-label\":_vm.label},domProps:{\"value\":_vm.localValue},on:{\"change\":function($event){return _vm.selectValue($event)}}},_vm._l((_vm.options),function(opt){return _c('option',{key:opt.value,domProps:{\"value\":opt.value}},[_vm._v(\" \"+_vm._s(opt.text)+\" \")])}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport Tooltip from '@/components/Tooltip.vue'\r\nimport { DropdownOptions } from '@/types/custom'\r\n\r\nexport default Vue.extend({\r\n name: 'SprFormDropdown',\r\n components: { Tooltip },\r\n inject: ['$validator'],\r\n props: {\r\n value: {\r\n type: String,\r\n default: ''\r\n },\r\n name: {\r\n type: String,\r\n default: ''\r\n },\r\n label: {\r\n type: String,\r\n default: ''\r\n },\r\n options: {\r\n type: Array as () => Array,\r\n default () {\r\n return [] as Array\r\n }\r\n },\r\n required: {\r\n type: Boolean,\r\n default: false\r\n },\r\n hasError: {\r\n type: Boolean,\r\n default: false\r\n },\r\n useTooltip: {\r\n type: Boolean,\r\n default: false\r\n },\r\n tooltipMessage: {\r\n type: String,\r\n default: null\r\n },\r\n validations: {\r\n type: String,\r\n default: ''\r\n },\r\n compact: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data () {\r\n return {\r\n localValue: '',\r\n tooltipId: 'tooltipDropDown_'\r\n }\r\n },\r\n methods: {\r\n selectValue (e: Event) {\r\n if (e && e.target) {\r\n this.localValue = (e.target as HTMLSelectElement).value\r\n this.$emit('input', this.localValue)\r\n }\r\n },\r\n generateUUID (): string {\r\n let d = new Date().getTime()\r\n\r\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\r\n d += performance.now() //use high-precision timer if available\r\n }\r\n\r\n const newGuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n const r = (d + Math.random() * 16) % 16 | 0\r\n d = Math.floor(d / 16)\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16)\r\n })\r\n\r\n return newGuid\r\n }\r\n },\r\n mounted () {\r\n this.localValue = this.value\r\n this.tooltipId = 'tooltipDropDown_' + this.generateUUID()\r\n },\r\n watch: {\r\n value (newVal) {\r\n this.localValue = newVal\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprFormDropdown.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprFormDropdown.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SprFormDropdown.vue?vue&type=template&id=5ec35ee6&scoped=true\"\nimport script from \"./SprFormDropdown.vue?vue&type=script&lang=ts\"\nexport * from \"./SprFormDropdown.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SprFormDropdown.vue?vue&type=style&index=0&id=5ec35ee6&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ec35ee6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"sprformcheckboxlist\"},[_c('div',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.label)+\" \")]),_vm._l((_vm.value),function(checkbox){return _c('span',{key:checkbox.id,staticClass:\"formcheckbox\"},[_c('spr-form-checkbox',{attrs:{\"value\":checkbox.checked,\"label\":checkbox.label,\"name\":checkbox.label,\"label-left\":_vm.labelLeft},on:{\"input\":function($event){return _vm.onCheckboxChanged(checkbox)}}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"sprformcheckbox\",class:{ 'readonly': _vm.readonly }},[_c('label',[(_vm.labelLeft)?_c('span',{staticClass:\"labelleft\"},[_vm._v(_vm._s(_vm.label))]):_vm._e(),(_vm.required)?_c('span',{staticClass:\"is-required\"},[_vm._v(\"*\")]):_vm._e(),_c('input',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.validations),expression:\"validations\"}],class:{ 'has-error': _vm.hasError, 'readonly': _vm.readonly },attrs:{\"type\":\"checkbox\",\"required\":_vm.required,\"name\":_vm.name,\"disabled\":_vm.readonly,\"aria-label\":_vm.label},domProps:{\"value\":_vm.value,\"checked\":_vm.value},on:{\"change\":_vm.checked}}),(!_vm.labelLeft)?_c('span',{staticClass:\"labelright\"},[_vm._v(_vm._s(_vm.label))]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\n\r\nexport default Vue.extend({\r\n name: 'SprFormCheckbox',\r\n inject: ['$validator'], //need to inject the parent validator or the field will not be available on the parent if it fails. Also inject into any parent components until you get to the top button\r\n props: {\r\n value: {\r\n type: Boolean,\r\n default: false\r\n },\r\n label: {\r\n type: String,\r\n default: ''\r\n },\r\n required: {\r\n type: Boolean,\r\n default: false\r\n },\r\n readonly: {\r\n type: Boolean,\r\n default: false\r\n },\r\n hasError: {\r\n type: Boolean,\r\n default: false\r\n },\r\n validations: {\r\n type: String,\r\n default: ''\r\n },\r\n name: {\r\n type: String,\r\n default: ''\r\n },\r\n labelLeft: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n methods: {\r\n checked (e: Event) {\r\n if (this.readonly) return\r\n if (e.target) {\r\n this.$emit('input', (e.target as HTMLInputElement).checked)\r\n }\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprFormCheckbox.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprFormCheckbox.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SprFormCheckbox.vue?vue&type=template&id=d5fb68a8&scoped=true\"\nimport script from \"./SprFormCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./SprFormCheckbox.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SprFormCheckbox.vue?vue&type=style&index=0&id=d5fb68a8&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d5fb68a8\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport SprFormCheckbox from '@/components/forms/SprFormCheckbox.vue'\r\nimport { CheckboxListItem } from '@/types/custom.ts'\r\n\r\nexport default Vue.extend({\r\n name: 'SprFormCheckboxList',\r\n components: { SprFormCheckbox },\r\n inject: ['$validator'], //need to inject the parent validator or the field will not be available on the parent if it fails. Also inject into any parent components until you get to the top button\r\n props: {\r\n value: {\r\n type: Array as () => Array,\r\n default () {\r\n return []\r\n }\r\n },\r\n label: {\r\n type: String,\r\n default: ''\r\n },\r\n readonly: {\r\n type: Boolean,\r\n default: false\r\n },\r\n labelLeft: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n methods: {\r\n onCheckboxChanged (value: CheckboxListItem) {\r\n if (this.readonly) return\r\n value.checked = !value.checked\r\n this.$emit('input', value)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprFormCheckboxList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprFormCheckboxList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SprFormCheckboxList.vue?vue&type=template&id=6615b715&scoped=true\"\nimport script from \"./SprFormCheckboxList.vue?vue&type=script&lang=ts\"\nexport * from \"./SprFormCheckboxList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SprFormCheckboxList.vue?vue&type=style&index=0&id=6615b715&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6615b715\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"sprdatepicker\"},[_c('div',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.label)+\" \"),(_vm.required)?_c('span',{staticClass:\"is-required\"},[_vm._v(\"*\")]):_vm._e()]),_c('input',{directives:[{name:\"validate\",rawName:\"v-validate\",value:(_vm.validations),expression:\"validations\"}],staticClass:\"date-picker\",class:{ 'has-error': _vm.hasError },attrs:{\"id\":_vm.id,\"type\":\"text\",\"name\":_vm.name,\"aria-label\":_vm.label},domProps:{\"value\":_vm.formattedDate},on:{\"input\":_vm.onDateChanged}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n/*\r\nNote, that as this date picker does not have a time component, it outputs the time as\r\nthe date at 00:00 UTC.\r\n*/\r\nimport Vue from 'vue'\r\n// @ts-ignore (no type def)\r\nimport TinyDatePicker from 'tiny-date-picker'\r\nimport moment from 'moment'\r\nimport 'tiny-date-picker/tiny-date-picker.css'\r\n\r\nexport default Vue.extend({\r\n name: 'SprDatePicker',\r\n inject: ['$validator'],\r\n props: {\r\n id: {\r\n type: String,\r\n default () {\r\n return 'sprdp-' + Math.floor(Math.random() * 1000000000)\r\n }\r\n },\r\n value: {\r\n type: Date,\r\n default () {\r\n return new Date()\r\n }\r\n },\r\n label: {\r\n type: String,\r\n default: ''\r\n },\r\n required: {\r\n type: Boolean,\r\n default: false\r\n },\r\n validations: {\r\n type: String,\r\n default: ''\r\n },\r\n hasError: {\r\n type: Boolean,\r\n default: false\r\n },\r\n name: {\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n data () {\r\n return {\r\n datePicker: null\r\n }\r\n },\r\n mounted (this: any): void {\r\n const options = {\r\n dayOffset: 1,\r\n lang: {\r\n days: [\r\n this.$t('datepicker.sun'),\r\n this.$t('datepicker.mon'),\r\n this.$t('datepicker.tue'),\r\n this.$t('datepicker.wed'),\r\n this.$t('datepicker.thu'),\r\n this.$t('datepicker.fri'),\r\n this.$t('datepicker.sat')\r\n ],\r\n months: [\r\n this.$t('datepicker.january'),\r\n this.$t('datepicker.february'),\r\n this.$t('datepicker.march'),\r\n this.$t('datepicker.april'),\r\n this.$t('datepicker.may'),\r\n this.$t('datepicker.june'),\r\n this.$t('datepicker.july'),\r\n this.$t('datepicker.august'),\r\n this.$t('datepicker.september'),\r\n this.$t('datepicker.october'),\r\n this.$t('datepicker.november'),\r\n this.$t('datepicker.december')\r\n ],\r\n today: this.$t('datepicker.today'),\r\n clear: this.$t('datepicker.clear'),\r\n close: this.$t('datepicker.close')\r\n },\r\n format (date: Date) {\r\n return `${date.getDate()}.${(date.getMonth() + 1)}.${date.getFullYear()}`\r\n },\r\n parse (str: string) {\r\n const dArr = str.split('.')\r\n if (!(dArr.length === 3)) return new Date(str) // fallback\r\n\r\n const date = new Date()\r\n date.setFullYear(Number(dArr[2]))\r\n date.setMonth(Number(dArr[1]) - 1)\r\n date.setDate(Number(dArr[0]))\r\n date.setUTCHours(0)\r\n date.setUTCMinutes(0)\r\n date.setUTCSeconds(0)\r\n date.setUTCMilliseconds(0)\r\n //@ts-ignore - returns a timestamp, so isNaN works\r\n return isNaN(date) ? new Date() : date\r\n }\r\n }\r\n // @ts-ignore Datepicker stuff no ts support\r\n const dpid = this.id\r\n // @ts-ignore\r\n this.datePicker = TinyDatePicker(document.getElementById(dpid), options)\r\n // @ts-ignore\r\n .on('select', (_, dp: Record) => this.onDateChanged(dp.state.selectedDate))\r\n },\r\n computed: {\r\n formattedDate (): string {\r\n const val = this.value as Date\r\n return `${val.getDate()}.${(val.getMonth() + 1)}.${val.getFullYear()}`\r\n }\r\n },\r\n methods: {\r\n onDateChanged (val: Date) {\r\n // convert to utc 00:00 date\r\n const d = new Date()\r\n d.setUTCFullYear(val.getFullYear())\r\n d.setUTCMonth(val.getMonth())\r\n d.setUTCDate(val.getDate())\r\n d.setUTCHours(0)\r\n d.setUTCMinutes(0)\r\n d.setUTCSeconds(0)\r\n d.setUTCMilliseconds(0)\r\n this.$emit('input', d)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprFormDatePicker.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprFormDatePicker.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SprFormDatePicker.vue?vue&type=template&id=bd9f116c\"\nimport script from \"./SprFormDatePicker.vue?vue&type=script&lang=ts\"\nexport * from \"./SprFormDatePicker.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SprFormDatePicker.vue?vue&type=style&index=0&id=bd9f116c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport SprFormDropdown from '@/components/forms/SprFormDropdown.vue'\r\nimport SprFormCheckboxList from '@/components/forms/SprFormCheckboxList.vue'\r\nimport SprFormDatePicker from '@/components/forms/SprFormDatePicker.vue'\r\nimport { SectionSummaryResponse, Code } from '@/types'\r\nimport { MeetingFilter, DropdownOptions, CheckboxListItem } from '@/types/custom.ts'\r\n\r\nexport default Vue.extend({\r\n name: 'MeetingsFilter',\r\n components: { SprFormDropdown, SprFormCheckboxList, SprFormDatePicker },\r\n props: {\r\n filter: {\r\n type: Object as () => MeetingFilter,\r\n required: true\r\n },\r\n sections: {\r\n type: Array as () => Array,\r\n default () {\r\n return []\r\n }\r\n }\r\n },\r\n data () {\r\n return {\r\n originalFilter: {} as MeetingFilter,\r\n filterChanged: false\r\n }\r\n },\r\n created (this: any) {\r\n this.originalFilter = Object.assign({}, this.filter)\r\n this.originalFilter.statusIds = this.filter.statusIds.map((x: number) => x) // otherwise this array is passed by ref\r\n },\r\n computed: {\r\n sectionLabel () {\r\n return this.$t('meeting.section')\r\n },\r\n typeLabel () {\r\n return this.$t('meeting.type')\r\n },\r\n statusLabel () {\r\n return this.$t('meeting.status')\r\n },\r\n meetingDateLabel () {\r\n return this.$t('meeting.dateheld')\r\n },\r\n clearLabel () {\r\n return this.$t('meeting.clearfilter')\r\n },\r\n filterSectionIdStr () {\r\n return this.filter.sectionId?.toString()\r\n },\r\n filterTypeIdStr () {\r\n return this.filter.typeId?.toString()\r\n },\r\n sectionData (this: any) {\r\n const sections = this.sections.map((x: SectionSummaryResponse) => { return { text: x.name, value: x.id.toString() } as DropdownOptions })\r\n sections.splice(0, 0, { text: this.$t('meetinglist.choose'), value: '0' } as DropdownOptions)\r\n return sections\r\n },\r\n typeData (this: any) {\r\n const types = this.$store.state.codes.meetingTypes.map((x: Code) => { return { text: this.$t(`meetingtype-${x.id}`), value: x.id.toString() } as DropdownOptions })\r\n types.splice(0, 0, { text: this.$t('meetinglist.choose'), value: '0' } as DropdownOptions)\r\n return types\r\n },\r\n statusData (this: any): Array {\r\n return this.$store.state.codes.meetingStatuses.map((x: Code) => { return { label: this.$t(`meetingstatus-${x.id}`), id: x.id, checked: this.filter.statusIds.indexOf(x.id) > -1 } as CheckboxListItem })\r\n }\r\n },\r\n methods: {\r\n onSectionChosen (this: any, val: string) {\r\n const newFilter = Object.assign({}, this.filter)\r\n newFilter.sectionId = Number(val)\r\n this.sendUpdate(newFilter)\r\n },\r\n onTypeChosen (this: any, val: string) {\r\n const newFilter = Object.assign({}, this.filter)\r\n newFilter.typeId = Number(val)\r\n this.sendUpdate(newFilter)\r\n },\r\n onMeetingDateChosen (this: any, val: Date) {\r\n const newFilter = Object.assign({}, this.filter)\r\n newFilter.meetingDate = val\r\n this.sendUpdate(newFilter)\r\n },\r\n onStatusClicked (this: any, val: CheckboxListItem) {\r\n const newFilter = Object.assign({}, this.filter)\r\n const existingIndex = newFilter.statusIds.indexOf(Number(val.id))\r\n\r\n if (val.checked) {\r\n if (existingIndex === -1) {\r\n newFilter.statusIds.push(Number(val.id))\r\n }\r\n } else {\r\n if (existingIndex >= 0) {\r\n newFilter.statusIds.splice(existingIndex, 1)\r\n }\r\n }\r\n\r\n this.sendUpdate(newFilter)\r\n },\r\n onClear (this: any) {\r\n // reset\r\n const clone = Object.assign({}, this.originalFilter)\r\n clone.statusIds = this.originalFilter.statusIds.map((x: number) => x)\r\n this.sendUpdate(clone)\r\n },\r\n sendUpdate (this: any, newFilter: MeetingFilter) {\r\n this.filterChanged = true\r\n this.$emit('FilterChanged', newFilter)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MeetingsFilter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MeetingsFilter.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MeetingsFilter.vue?vue&type=template&id=244c5324&scoped=true\"\nimport script from \"./MeetingsFilter.vue?vue&type=script&lang=ts\"\nexport * from \"./MeetingsFilter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MeetingsFilter.vue?vue&type=style&index=0&id=244c5324&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"244c5324\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"meetingslist\"},[_c('div',{staticClass:\"row sorting\"},[_c('div',{staticClass:\"col-6 col-sm-3\"},[_c('spr-form-dropdown',{attrs:{\"label\":_vm.$t('meetinglist.sortorder'),\"name\":\"meetinglist_sortorder\",\"options\":_vm.sortOrders,\"compact\":true},model:{value:(_vm.sortOrder),callback:function ($$v) {_vm.sortOrder=$$v},expression:\"sortOrder\"}})],1)]),_c('div',{staticClass:\"row meetingstable\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"table-responsive-sm\"},[_c('table',{staticClass:\"table\"},[_c('caption',[_vm._v(\"List of Meetings\")]),_c('thead',[_c('tr',[_c('th',{staticClass:\"d-table-cell d-md-none status\"}),(_vm.hasColumn('Section'))?_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('meeting.section'))+\" \")]):_vm._e(),(_vm.hasColumn('Name'))?_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('meeting.name-short'))+\" \")]):_vm._e(),(_vm.hasColumn('Type'))?_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('meeting.type-short'))+\" \")]):_vm._e(),(_vm.hasColumn('DateHeld'))?_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('meeting.dateheld'))+\" \")]):_vm._e(),(_vm.hasColumn('ReportedBy'))?_c('th',{staticClass:\"d-none d-md-table-cell\",attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('meeting.reportedby'))+\" \")]):_vm._e(),(_vm.hasColumn('CreatedBy'))?_c('th',{staticClass:\"d-none d-md-table-cell\",attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('meeting.createdby'))+\" \")]):_vm._e(),(_vm.hasColumn('Created'))?_c('th',{staticClass:\"d-none d-md-table-cell\",attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('meeting.created'))+\" \")]):_vm._e(),(_vm.hasColumn('Status'))?_c('th',{attrs:{\"scope\":\"col\"}}):_vm._e()])]),(_vm.value && _vm.value.length)?_c('tbody',_vm._l((_vm.sortedList),function(meeting){return _c('tr',{key:meeting.id,class:{ 'hascrmerrors': _vm.isDistrictAdminAndAbove && meeting.hasCrmErrors }},[_c('td',{staticClass:\"d-table-cell d-md-none\",class:`status status-${meeting.status.id}`}),(_vm.hasColumn('Section'))?_c('td',{attrs:{\"scope\":\"row\"}},[_vm._v(\" \"+_vm._s(_vm.getSection(meeting.sectionId))+\" \")]):_vm._e(),(_vm.hasColumn('Name') && !_vm.isOnlySectionUser)?_c('td',[_c('a',{staticClass:\"meetingname\",on:{\"click\":function($event){return _vm.onMeetingClicked(meeting)}}},[_vm._v(\" \"+_vm._s(meeting.name)+\" \")]),(_vm.isDistrictAdminAndAbove && meeting.hasCrmErrors)?_c('span',{staticClass:\"warning\",attrs:{\"title\":_vm.$t('meeting.hasCrmErrors')}},[_c('font-awesome-icon',{attrs:{\"icon\":\"exclamation-triangle\"}})],1):_vm._e()]):_c('td',[_vm._v(\" \"+_vm._s(meeting.name)+\" \")]),(_vm.hasColumn('Type'))?_c('td',[_vm._v(\" \"+_vm._s(_vm.getMeetingType(meeting.type.id))+\" \")]):_vm._e(),(_vm.hasColumn('DateHeld'))?_c('td',[_vm._v(\" \"+_vm._s(_vm.getShortDate(meeting.dateHeld))+\" \")]):_vm._e(),(_vm.hasColumn('ReportedBy'))?_c('td',{staticClass:\"d-none d-md-table-cell\"},[_vm._v(\" \"+_vm._s(meeting.reportedBy)+\" \")]):_vm._e(),(_vm.hasColumn('CreatedBy'))?_c('td',{staticClass:\"d-none d-md-table-cell\"},[_vm._v(\" \"+_vm._s(meeting.createdBy)+\" \")]):_vm._e(),(_vm.hasColumn('Created'))?_c('td',{staticClass:\"d-none d-md-table-cell\"},[_vm._v(\" \"+_vm._s(_vm.getShortDate(meeting.created))+\" \")]):_vm._e(),(_vm.hasColumn('Status'))?_c('td',{staticClass:\"d-none d-md-table-cell text-right\"},[_c('MeetingStatus',{attrs:{\"status\":meeting.status.id}})],1):_vm._e()])}),0):_c('tbody',[_c('tr',[_c('td',{staticClass:\"text-center\",attrs:{\"colspan\":\"6\"}},[_vm._v(\" \"+_vm._s(_vm.$t('meetingslist.nomeetings'))+\" \")])])])])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"meetingstatus\",class:_vm.statusCssClass},[_vm._v(\" \"+_vm._s(_vm.statusText)+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { TranslateResult } from 'vue-i18n'\r\nimport { MeetingStatusCode } from '@/helpers/codehelper'\r\nimport { MeetingStatus, MeetingDisplayStatus, CodeCategory } from '@/types/enums'\r\n\r\nexport default Vue.extend({\r\n name: 'MeetingStatus',\r\n props: {\r\n status: {\r\n type: Number as () => MeetingStatus,\r\n default: 0\r\n }\r\n },\r\n computed: {\r\n statusText (this: any): TranslateResult {\r\n return this.$t(`meetingstatus-${this.status}`)\r\n },\r\n statusCssClass (): string {\r\n return `status-${this.status}`\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MeetingStatus.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MeetingStatus.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MeetingStatus.vue?vue&type=template&id=c992ef28&scoped=true\"\nimport script from \"./MeetingStatus.vue?vue&type=script&lang=ts\"\nexport * from \"./MeetingStatus.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MeetingStatus.vue?vue&type=style&index=0&id=c992ef28&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c992ef28\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport { TranslateResult } from 'vue-i18n'\r\nimport SprFormDropdown from '@/components/forms/SprFormDropdown.vue'\r\nimport MeetingStatus from '@/components/meetings/MeetingStatus.vue'\r\nimport { finnishShortDate } from '@/helpers/datehelper'\r\nimport { MeetingSummaryResponse } from '@/types'\r\nimport { DropdownOptions } from '@/types/custom.ts'\r\n\r\nexport default Vue.extend({\r\n name: 'MeetingsList',\r\n components: { MeetingStatus, SprFormDropdown },\r\n props: {\r\n value: {\r\n type: Array,\r\n default: undefined\r\n },\r\n columns: {\r\n type: Array,\r\n default () {\r\n return ['Section', 'Name', 'Type', 'Status', 'Created', 'DateHeld', 'ReportedBy', 'CreatedBy']\r\n },\r\n required: false,\r\n validator (value: Array) {\r\n return value.every(x => ['Section', 'Name', 'Type', 'Status', 'Created', 'DateHeld', 'ReportedBy', 'CreatedBy'].indexOf(x) !== -1)\r\n }\r\n }\r\n },\r\n data () {\r\n return {\r\n sortOrder: 'Created'\r\n }\r\n },\r\n computed: {\r\n isDistrictAdminAndAbove (): boolean {\r\n const claims = this.$store.state.authentication.claims\r\n return claims.isInRoleSuperAdmin ||\r\n claims.isInRoleKT ||\r\n claims.isInRoleDistrictAdmin\r\n },\r\n isOnlySectionUser (): boolean {\r\n const claims = this.$store.state.authentication.claims\r\n return claims.isInRoleSectionUser && !(claims.isInRoleSuperAdmin ||\r\n claims.isInRoleKT ||\r\n claims.isInRoleDistrictAdmin ||\r\n claims.isInRoleSectionAdmin)\r\n },\r\n sortOrders (): Array {\r\n return [\r\n { text: this.$t('meeting.section'), value: 'Section' },\r\n { text: this.$t('meeting.name-short'), value: 'Name' },\r\n { text: this.$t('meeting.type-short'), value: 'Type' },\r\n { text: this.$t('meeting.status'), value: 'Status' },\r\n { text: this.$t('meeting.created'), value: 'Created' },\r\n { text: this.$t('meeting.dateheld'), value: 'DateHeld' },\r\n { text: this.$t('meeting.reportedby'), value: 'ReportedBy' },\r\n { text: this.$t('meeting.createdby'), value: 'CreatedBy' }\r\n ] as Array\r\n },\r\n sortedList (): any {\r\n // @ts-ignore\r\n const tempSortOrder = this.sortOrder\r\n // @ts-ignore\r\n const getSection = this.getSection\r\n const val: Array = this.value as Array\r\n return val.sort((a: MeetingSummaryResponse, b: MeetingSummaryResponse) => {\r\n switch (tempSortOrder) {\r\n case 'Section':\r\n return getSection(a.sectionId).localeCompare(getSection(b.sectionId))\r\n case 'Name':\r\n return a.name.localeCompare(b.name)\r\n case 'Type':\r\n return a.type.id - b.type.id\r\n case 'Status':\r\n return a.status.id - b.status.id\r\n case 'DateHeld':\r\n return b.dateHeld.getTime() - a.dateHeld.getTime()\r\n case 'ReportedBy':\r\n return a.reportedBy.localeCompare(b.reportedBy)\r\n case 'CreatedBy':\r\n return a.createdBy.localeCompare(b.createdBy)\r\n default:\r\n return (b.created && a.created) ? b.created.getTime() - a.created.getTime() : true\r\n }\r\n })\r\n }\r\n },\r\n methods: {\r\n hasColumn (col: string): boolean {\r\n return this.columns.indexOf(col) >= 0\r\n },\r\n getShortDate (date: Date) {\r\n return finnishShortDate(date)\r\n },\r\n getSection (sectionId: number) {\r\n const section = this.$store.getters['sections/getById'](sectionId)\r\n return section?.name\r\n },\r\n onMeetingClicked (meeting: MeetingSummaryResponse) {\r\n this.$router.push(`/sections/${meeting.sectionId}/meetings/${meeting.id}`)\r\n },\r\n getMeetingType (typeid: number): TranslateResult {\r\n return this.$t(`meetingtype-${typeid}`)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MeetingsList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MeetingsList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MeetingsList.vue?vue&type=template&id=7f3f2a48&scoped=true\"\nimport script from \"./MeetingsList.vue?vue&type=script&lang=ts\"\nexport * from \"./MeetingsList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MeetingsList.vue?vue&type=style&index=0&id=7f3f2a48&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7f3f2a48\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport Back from '@/components/Back.vue'\r\nimport { TranslateResult } from 'vue-i18n'\r\nimport { SectionSummaryResponse, MemberSummaryResponse, MeetingSummaryResponse, GetMeetingsRequest, DistrictSummaryResponse } from '@/types'\r\nimport { MeetingFilter } from '@/types/custom.ts'\r\nimport { CodeCategory, MeetingStatus } from '@/types/enums'\r\nimport MeetingsFilter from '@/components/meetings/MeetingsFilter.vue'\r\nimport MeetingsList from '@/components/meetings/MeetingsList.vue'\r\nimport { membersService } from '@/services'\r\n\r\nexport default Vue.extend({\r\n name: 'DistrictMeetings',\r\n components: {\r\n Back,\r\n MeetingsFilter,\r\n MeetingsList\r\n },\r\n props: {\r\n districtId: {\r\n type: String,\r\n default: '0'\r\n }\r\n },\r\n data () {\r\n return {\r\n meetingsFilter: {\r\n sectionId: 0,\r\n typeId: 0,\r\n statusIds: [MeetingStatus.DRAFT, MeetingStatus.SUBMITTED, MeetingStatus.REVIEWED, MeetingStatus.PENDINGAPPROVAL, MeetingStatus.APPROVED, MeetingStatus.ARCHIVED],\r\n meetingDate: new Date()\r\n } as MeetingFilter\r\n }\r\n },\r\n computed: {\r\n districtIdNumber () {\r\n return Number(this.districtId)\r\n },\r\n sections (this: any): Array {\r\n if (this.districtIdNumber > 0) {\r\n return this.$store.state.sections.all.filter((x: SectionSummaryResponse) => x.districtId === this.districtIdNumber)\r\n }\r\n return this.$store.state.sections.all\r\n },\r\n canViewMembers () {\r\n const claims = this.$store.state.authentication.claims\r\n return claims.isInRoleSuperAdmin ||\r\n claims.isInRoleKT ||\r\n claims.isInRoleDistrictAdmin ||\r\n claims.isInRoleSectionAdmin\r\n },\r\n districtName (): string {\r\n if (this.$store.state.districts.districtsLoaded) {\r\n const district = this.$store.state.districts.all.find((x: DistrictSummaryResponse) => x.id === Number(this.districtIdNumber))\r\n return district ? district.name : ''\r\n }\r\n return ''\r\n },\r\n meetings (): Array {\r\n return this.$store.state.meetings.meetings\r\n },\r\n filter (this: any): GetMeetingsRequest {\r\n return {\r\n districts: [this.districtIdNumber],\r\n sections: this.meetingsFilter.sectionId === 0 ? null : [this.meetingsFilter.sectionId],\r\n types: this.meetingsFilter.typeId === 0 ? null : [this.meetingsFilter.typeId],\r\n statuses: this.meetingsFilter.statusIds.length === 0 ? null : this.meetingsFilter.statusIds,\r\n dateHeldFrom: this.meetingsFilter.meetingDate || null\r\n } as GetMeetingsRequest\r\n }\r\n },\r\n created (this: any) {\r\n if (this.$route.query) {\r\n if (this.$route.query.statuses) {\r\n this.meetingsFilter.statusIds = this.$route.query.statuses.split(',').map((x: string) => Number(x))\r\n }\r\n }\r\n\r\n const today = new Date()\r\n this.meetingsFilter.meetingDate = new Date(today.getUTCFullYear() - 1, today.getUTCMonth(), today.getUTCDate())\r\n this.loadMeetingsIntoStore()\r\n },\r\n methods: {\r\n loadMeetingsIntoStore (this: any) {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n this.$store.dispatch('meetings/getMeetings', this.filter).then((success: any) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n },\r\n (fail: any) => {\r\n /* eslint-disable no-console */\r\n console.log('failed to load meetings', fail)\r\n if (fail.status && fail.status === 403) {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$router.push({ path: '/404' })\r\n }\r\n })\r\n },\r\n onFilterChanged (this: any, filter: MeetingFilter) {\r\n this.meetingsFilter.sectionId = filter.sectionId\r\n this.meetingsFilter.typeId = filter.typeId\r\n this.meetingsFilter.statusIds = filter.statusIds\r\n this.meetingsFilter.meetingDate = filter.meetingDate\r\n this.loadMeetingsIntoStore()\r\n },\r\n onSectionClicked (section: SectionSummaryResponse): void {\r\n this.$router.push(`/sections/${section.id}`)\r\n },\r\n onMembersClicked (section: SectionSummaryResponse): void {\r\n this.$router.push(`/sections/${section.id}/members`)\r\n },\r\n onMeetingsClicked (section: SectionSummaryResponse): void {\r\n this.$router.push(`/sections/${section.id}/meetings`)\r\n },\r\n onAddMeetingClicked (section: SectionSummaryResponse): void {\r\n this.$router.push(`/sections/${section.id}/meetings/add`)\r\n },\r\n getStatus (statusId: number): TranslateResult {\r\n return this.$t(`sectionstatus-${statusId}`)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DistrictMeetings.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DistrictMeetings.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DistrictMeetings.vue?vue&type=template&id=32561f1b&scoped=true\"\nimport script from \"./DistrictMeetings.vue?vue&type=script&lang=ts\"\nexport * from \"./DistrictMeetings.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DistrictMeetings.vue?vue&type=style&index=0&id=32561f1b&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"32561f1b\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"members\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 backlink\"},[_c('Back')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('members')))])])]),_c('div',{staticClass:\"flexcontainer comp-horizontal-navigation\"},[_c('div',{class:{'listvisible': _vm.memberListVisible, 'flexitem opt': true},on:{\"click\":_vm.sectionMembersClicked}},[_vm._v(\" \"+_vm._s(_vm.$t('members'))+\" \")]),(_vm.isDistrictAdminAndAbove)?_c('div',{class:{'listvisible': _vm.memberRolesVisible, 'flexitem opt': true},on:{\"click\":_vm.sectionRolesClicked}},[_vm._v(\" \"+_vm._s(_vm.$t('sectionMemberRoles'))+\" \")]):_vm._e()]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 flexcontainer header-margin\"},[_c('div',{staticClass:\"align-end\"},[_c('h3',[_vm._v(_vm._s(_vm.districtname))])]),(_vm.isDistrictUserAndAbove && _vm.memberListVisible)?_c('div',{staticClass:\"inline-button justify-end\"},[(_vm.isDistrictUserAndAbove)?_c('SprButton',{attrs:{\"compact\":\"\",\"primary\":\"\",\"text\":_vm.$t('sectionmembers.export')},on:{\"click\":function($event){return _vm.onExport(_vm.filter)}}}):_vm._e()],1):_vm._e()])]),(_vm.memberListVisible)?_c('div',[_c('MemberSearch',{attrs:{\"id\":_vm.districtId,\"mode\":\"District\",\"has-current-membership\":true,\"is-membership-approved\":true,\"include-membership-positions\":false},on:{\"onFilterChanged\":_vm.onFilterChanged}})],1):_vm._e(),(_vm.memberRolesVisible)?_c('div',[_c('div',{staticClass:\"flexcontainer vertical\"},[_c('DistrictRolesList',{attrs:{\"district-id\":_vm.districtId}})],1)]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('MemberSearchCriteria',{attrs:{\"mode\":_vm.mode,\"search-criteria\":_vm.searchCriteria,\"membership-statuses\":_vm.membershipStatuses},on:{\"input\":_vm.onMemberFilterChanged,\"reset\":_vm.onMemberFilterReset}})],1)]),_vm._m(0),(_vm.memberSearchResult)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('MembersList',{attrs:{\"mode\":_vm.mode,\"district-id\":_vm.id,\"search-criteria\":_vm.searchCriteria,\"value\":_vm.memberSearchResult.results}})],1),_c('div',{staticClass:\"col-12\"},[(_vm.memberSearchResult && _vm.memberSearchResult.total)?_c('Pager',{attrs:{\"skip\":_vm.memberSearchResult.skip,\"take\":_vm.memberSearchResult.take,\"total\":_vm.memberSearchResult.total},on:{\"pageToStart\":_vm.pageToStart,\"pageToEnd\":_vm.pageToEnd,\"pageBack\":_vm.pageBack,\"pageForward\":_vm.pageForward}}):_vm._e()],1)]):_vm._e()])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"resultseparator\"},[_c('hr')])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"memberfilter\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-4 col-lg-7\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormText',{attrs:{\"value\":_vm.searchCriteria.name,\"label\":_vm.$t('memberfilter.name'),\"name\":\"memberfilter_name\"},on:{\"input\":_vm.onNameSelected}})],1)]),(_vm.showMembershipStatusCriteria)?_c('div',{staticClass:\"col-12 col-sm-4 col-lg-2\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormDropdown',{attrs:{\"value\":_vm.membershipStatusString,\"label\":_vm.$t('memberfilter.membershipstatus'),\"name\":\"memberfilter.membershipstatus\",\"options\":_vm.membershipStatusList},on:{\"input\":_vm.onMembershipStatusSelected}})],1)]):_vm._e(),_c('div',{staticClass:\"col-12 col-sm-4 col-lg-3\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormDropdown',{attrs:{\"value\":_vm.hasMembershipString,\"label\":_vm.$t('memberfilter.hasmembership'),\"use-tooltip\":true,\"tooltip-message\":_vm.$t('info.memberfee'),\"name\":\"memberfilter_hasmembership\",\"options\":_vm.membershipList},on:{\"input\":_vm.onHasMembershipSelected}})],1)]),_c('div',{staticClass:\"col-12 text-right\"},[(_vm.hasSearched)?_c('div',{staticClass:\"reset\",on:{\"click\":_vm.onReset}},[_vm._v(\" \"+_vm._s(_vm.$t('memberfilter.clearfilter'))+\" \")]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport SprFormText from '@/components/forms/SprFormText.vue'\r\nimport SprFormDropdown from '@/components/forms/SprFormDropdown.vue'\r\nimport { DropdownOptions, MemberFilter } from '@/types/custom'\r\nimport { MembershipStatus } from '@/types/enums'\r\n\r\nexport default Vue.extend({\r\n name: 'MemberSearchCriteria',\r\n components: { SprFormText, SprFormDropdown },\r\n props: {\r\n mode: {\r\n type: String,\r\n required: true\r\n },\r\n searchCriteria: {\r\n type: Object,\r\n required: true,\r\n default () {\r\n return {\r\n name: '',\r\n approved: true,\r\n hasMembership: true,\r\n membershipStatus: MembershipStatus.ACTIVE\r\n } as MemberFilter\r\n }\r\n },\r\n membershipStatuses: {\r\n type: Array as () => Array,\r\n default: [\r\n MembershipStatus.ALL,\r\n MembershipStatus.ACTIVE,\r\n MembershipStatus.RESIGNED,\r\n MembershipStatus.DEAD,\r\n MembershipStatus.TRANSFER,\r\n MembershipStatus.PENDING,\r\n MembershipStatus.NEW\r\n ]\r\n }\r\n },\r\n data () {\r\n return {\r\n hasSearched: false\r\n }\r\n },\r\n computed: {\r\n approvedString (): string {\r\n return this.searchCriteria && this.searchCriteria.approved !== undefined ? this.searchCriteria.approved.toString() : ''\r\n },\r\n hasMembershipString (): string {\r\n return this.searchCriteria && this.searchCriteria.hasMembership !== undefined ? this.searchCriteria.hasMembership.toString() : ''\r\n },\r\n membershipStatusString (): string {\r\n return this.searchCriteria && this.searchCriteria.membershipStatus !== undefined ? this.searchCriteria.membershipStatus.toString() : ''\r\n },\r\n membershipList () {\r\n return [\r\n { text: this.$t('all'), value: '' },\r\n { text: this.$t('yes'), value: 'true' },\r\n { text: this.$t('no'), value: 'false' }\r\n ]\r\n },\r\n membershipStatusList (): Array {\r\n const initialList = this.membershipStatuses.map((status: MembershipStatus) => {\r\n return { text: this.$t(`membershipstatus-${status}`), value: status.toString() }\r\n })\r\n\r\n // const emptyOption = { text: this.$t('all'), value: '0' } as DropdownOptions\r\n // initialList.splice(0, 0, emptyOption)\r\n return initialList\r\n },\r\n showMembershipStatusCriteria (): boolean {\r\n if (this.mode === 'District') {\r\n return false\r\n }\r\n if (this.mode === 'Section') {\r\n return false\r\n }\r\n return true\r\n }\r\n },\r\n methods: {\r\n onNameSelected (val: string): void {\r\n this.hasSearched = true\r\n const clone = Object.assign({}, this.searchCriteria) as MemberFilter\r\n clone.name = val\r\n this.$emit('input', clone)\r\n },\r\n onApprovedSelected (val: string): void {\r\n this.hasSearched = true\r\n const clone = Object.assign({}, this.searchCriteria) as MemberFilter\r\n clone.approved = val.length ? val === 'true' : undefined\r\n this.$emit('input', clone)\r\n },\r\n onHasMembershipSelected (val: string): void {\r\n this.hasSearched = true\r\n const clone = Object.assign({}, this.searchCriteria) as MemberFilter\r\n clone.hasMembership = val.length ? val === 'true' : undefined\r\n this.$emit('input', clone)\r\n },\r\n onMembershipStatusSelected (val: string): void {\r\n this.hasSearched = true\r\n const clone = Object.assign({}, this.searchCriteria) as MemberFilter\r\n clone.membershipStatus = val.length ? Number(val) : undefined\r\n this.$emit('input', clone)\r\n },\r\n onReset (): void {\r\n this.$emit('reset')\r\n this.hasSearched = false\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MemberSearchCriteria.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MemberSearchCriteria.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MemberSearchCriteria.vue?vue&type=template&id=59e1fa4a&scoped=true\"\nimport script from \"./MemberSearchCriteria.vue?vue&type=script&lang=ts\"\nexport * from \"./MemberSearchCriteria.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MemberSearchCriteria.vue?vue&type=style&index=0&id=59e1fa4a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59e1fa4a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"memberslist\"},[_vm._l((_vm.value),function(member){return _c(_vm.memberInfoComponent,{key:member.membershipId,tag:\"component\",attrs:{\"member\":member,\"show-section\":_vm.showSection}})}),(_vm.noResults)?_c('div',{staticClass:\"noresults\"},[_vm._v(\" \"+_vm._s(_vm.$t('memberfilter.noresults'))+\" \")]):_c('div',{staticClass:\"row mt-3\"},[_c('div',{staticClass:\"row export\"},[_c('div',{staticClass:\"col-12\"},[(_vm.dataLoading)?_c('Loading'):_vm._e()],1)])])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"memberinforow\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-5 col-lg-4\"},[_c('div',{staticClass:\"fullnamedetails\"},[_c('a',{staticClass:\"fullname\",attrs:{\"aria-label\":\"Member full name\"},on:{\"click\":_vm.fullnameClicked}},[_vm._v(\" \"+_vm._s(_vm.fullName)+\" \")])])]),(_vm.showSection)?_c('div',{staticClass:\"col d-none d-lg-block\"},[_c('div',{staticClass:\"section\",attrs:{\"aria-label\":\"Section name\"}},[_vm._v(\" \"+_vm._s(_vm.sectionName)+\" \")])]):_vm._e(),_c('div',{staticClass:\"col-6 col-lg-5 phonedetails\"},[(!_vm.member.isPublishProhibited && _vm.member.email)?_c('div',{staticClass:\"email\",attrs:{\"aria-label\":\"Email\"}},[_c('font-awesome-icon',{attrs:{\"icon\":\"envelope\",\"title\":_vm.$t('member.email')}}),_vm._v(\" \"+_vm._s(_vm.member.email)+\" \")],1):_vm._e(),(_vm.member.isPublishProhibited)?_c('div',{staticClass:\"contactdetails-prohibited\"},[_c('div',{staticClass:\"email\",attrs:{\"title\":_vm.$t('member.publishprohibited')}},[_c('font-awesome-icon',{attrs:{\"icon\":\"envelope\"}}),_vm._v(\" hidden@test.com \")],1)]):_vm._e(),(!_vm.member.isPublishProhibited && _vm.member.phone)?_c('div',{staticClass:\"phone\",attrs:{\"aria-label\":\"Phone\"}},[_c('font-awesome-icon',{attrs:{\"icon\":\"phone\",\"title\":_vm.$t('member.phone')}}),_vm._v(\" \"+_vm._s(_vm.member.phone)+\" \")],1):_vm._e(),(_vm.member.isPublishProhibited)?_c('div',{staticClass:\"contactdetails-prohibited\"},[_c('div',{staticClass:\"phone\",attrs:{\"title\":_vm.$t('member.publishprohibited')}},[_c('font-awesome-icon',{attrs:{\"icon\":\"phone\"}}),_vm._v(\" 555 555 5555 \")],1)]):_vm._e()]),_c('div',{staticClass:\"col-lg-2 d-none d-lg-block\"},[(_vm.hasAddress)?_c('div',[_c('div',[_vm._v(_vm._s(_vm.member.address.address1)+\" \"+_vm._s(_vm.member.address.address2))]),_c('div',[_vm._v(_vm._s(_vm.member.address.postalCode)+\" \"+_vm._s(_vm.member.address.city))])]):_vm._e()]),_c('div',{staticClass:\"col-1\"},[_c('div',{staticClass:\"showdetailscaret text-right\",on:{\"click\":function($event){_vm.isMoreDetailsShown = !_vm.isMoreDetailsShown}}},[(!_vm.isMoreDetailsShown)?_c('font-awesome-icon',{attrs:{\"icon\":\"angle-down\",\"title\":_vm.$t('memberinforow.showmoredetails')}}):_c('font-awesome-icon',{attrs:{\"icon\":\"angle-up\",\"title\":_vm.$t('memberinforow.hidemoredetails')}})],1)])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isMoreDetailsShown),expression:\"isMoreDetailsShown\"}],staticClass:\"row moredetails\"},[_c('div',{staticClass:\"col-5 col-lg-4\"},[_c('div',{staticClass:\"basicdetails\"},[_c('div',{staticClass:\"membershipno\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"id-card\",\"title\":_vm.$t('member.sprid'),\"aria-label\":\"spr id\"}}),_vm._v(\" \"+_vm._s(_vm.member.sprId)+\" \")],1),_c('div',{staticClass:\"paymentdate\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"euro-sign\",\"title\":_vm.$t('member.paymentdate'),\"aria-label\":\"payment date\"}}),_vm._v(\" \"+_vm._s(_vm.paymentDate)+\" \")],1),_c('div',{staticClass:\"membersince\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"handshake\",\"title\":_vm.$t('member.membershipapproved'),\"aria-label\":\"Membership approved date\"}}),_vm._v(\" \"+_vm._s(_vm.membershipApproved)+\" \")],1)])]),_c('div',{staticClass:\"col-6 col-lg-5\"},[_c('div',{staticClass:\"sectiondetails\"},[_c('div',{staticClass:\"positions\"},[(_vm.noPositions)?_c('div',[_c('font-awesome-icon',{attrs:{\"icon\":\"user\",\"title\":_vm.$t('member.sprid'),\"aria-label\":\"spr id\"}}),_vm._v(\" \"+_vm._s(_vm.$t('memberinforow.memberhasnopositions'))+\" \")],1):_c('div',_vm._l((_vm.orderedPositions),function(position){return _c('div',{key:position.id},[_c('font-awesome-icon',{attrs:{\"icon\":\"user\",\"title\":_vm.$t('member.sprid'),\"aria-label\":\"spr id\"}}),_vm._v(\" \"+_vm._s(_vm.formatDate(position.termStart))+\" – \"+_vm._s(_vm.formatDate(position.termEnd))+\" \"),_c('div',{staticClass:\"position\"},[(position.position)?_c('span',[_vm._v(_vm._s(position.position.name))]):_vm._e()])],1)}),0)])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { AddressResponse } from '@/types'\r\n\r\nexport function isAddressEmpty (address: AddressResponse): boolean {\r\n if (!address) return true\r\n return !address.address1 &&\r\n !address.address2 &&\r\n !address.postalCode &&\r\n !address.city &&\r\n !address.country\r\n}\r\n\r\nexport function formatAddress (address: AddressResponse): string {\r\n let add = ''\r\n if (address.address1) add = add.concat(address.address1, ' ')\r\n if (address.address2) add = add.concat(address.address2, ' ')\r\n if (address.postalCode) add = add.concat(address.postalCode, ' ')\r\n if (address.city) add = add.concat(address.city, ' ')\r\n if (address.country) add = add.concat(address.country, ' ')\r\n return add\r\n}","\r\nimport Vue from 'vue'\r\nimport moment from 'moment'\r\nimport { isAddressEmpty } from '@/helpers/addresshelper'\r\nimport { MemberSummaryResponse, MemberPositionSummaryResponse, AddressResponse } from '@/types'\r\nimport { finnishShortDate } from '@/helpers/datehelper'\r\n\r\nexport default Vue.extend({\r\n name: 'MemberInfoRow',\r\n props: {\r\n member: {\r\n type: Object as () => MemberSummaryResponse,\r\n default: undefined\r\n },\r\n showSection: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data () {\r\n return {\r\n isMoreDetailsShown: false\r\n }\r\n },\r\n computed: {\r\n fullName (): string {\r\n return `${this.member.firstName} ${this.member.lastName}`\r\n },\r\n noPositions () {\r\n return this.member.memberPositions && this.member.memberPositions.length === 0\r\n },\r\n paymentDate (): string {\r\n return this.member.paymentDate ? finnishShortDate(this.member.paymentDate) : '-'\r\n },\r\n membershipApproved (): string {\r\n return this.member.membershipApproved ? finnishShortDate(this.member.membershipApproved) : '-'\r\n },\r\n sectionName (): string {\r\n const section = this.$store.getters['sections/getById'](this.member.sectionId)\r\n return section ? section.name : ''\r\n },\r\n orderedPositions (): Array {\r\n // slice to clone sorted array\r\n if (!this.member.memberPositions) return []\r\n return this.member.memberPositions.slice(0).sort((a: MemberPositionSummaryResponse, b: MemberPositionSummaryResponse) => {\r\n const starta: number = a.termStart.valueOf()\r\n const startb: number = b.termStart.valueOf()\r\n if (starta > startb) return -1\r\n if (starta === startb) return 0\r\n return 1\r\n })\r\n },\r\n hasAddress (): boolean {\r\n return !isAddressEmpty(this.member.address)\r\n }\r\n },\r\n methods: {\r\n dob (date: Date) {\r\n return finnishShortDate(date)\r\n },\r\n formatDate (date: Date) {\r\n return finnishShortDate(date)\r\n },\r\n fullnameClicked () {\r\n this.$router.push(`/sections/${this.member.sectionId}/members/${this.member.id}`)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MemberInfoRow.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MemberInfoRow.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MemberInfoRow.vue?vue&type=template&id=320f0384&scoped=true\"\nimport script from \"./MemberInfoRow.vue?vue&type=script&lang=ts\"\nexport * from \"./MemberInfoRow.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MemberInfoRow.vue?vue&type=style&index=0&id=320f0384&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"320f0384\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"memberbasicinforow\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-9 col-md-5\"},[_c('div',{staticClass:\"fullnamedetails\"},[_c('a',{staticClass:\"fullname\",attrs:{\"aria-label\":\"Member full name\"},on:{\"click\":_vm.fullnameClicked}},[_vm._v(\" \"+_vm._s(_vm.fullName)+\" \")])])]),_c('div',{staticClass:\"col-4 col-md-5 d-none d-md-block\"},[_c('div',{staticClass:\"section\"},[_c('a',{attrs:{\"aria-label\":\"Section name\"},on:{\"click\":_vm.sectionClicked}},[_vm._v(\" \"+_vm._s(_vm.sectionName)+\" \")])])]),_c('div',{staticClass:\"col-3 col-md-2\"},[_c('div',{staticClass:\"membershipstatus\"},[_vm._v(\" \"+_vm._s(_vm.getMembershipStatus(_vm.member.membershipStatus.id))+\" \")])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { TranslateResult } from 'vue-i18n'\r\nimport { MemberLightResponse } from '@/types'\r\n\r\nexport default Vue.extend({\r\n name: 'MemberBasicInfoRow',\r\n props: {\r\n member: {\r\n type: Object as () => MemberLightResponse,\r\n default: undefined\r\n }\r\n },\r\n data () {\r\n return {\r\n isMoreDetailsShown: false\r\n }\r\n },\r\n computed: {\r\n fullName (): string {\r\n return `${this.member.lastName}, ${this.member.firstName}`\r\n },\r\n sectionName (): string {\r\n const section = this.$store.getters['sections/getById'](this.member.sectionId)\r\n return section ? section.name : ''\r\n }\r\n },\r\n methods: {\r\n getMembershipStatus (statusId: number): TranslateResult {\r\n return this.$t(`membershipstatus-${statusId}`)\r\n },\r\n fullnameClicked () {\r\n this.$router.push(`/sections/${this.member.sectionId}/members/${this.member.id}`)\r\n },\r\n sectionClicked () {\r\n this.$router.push(`/sections/${this.member.sectionId}`)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MemberBasicInfoRow.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MemberBasicInfoRow.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MemberBasicInfoRow.vue?vue&type=template&id=0fbb0b58&scoped=true\"\nimport script from \"./MemberBasicInfoRow.vue?vue&type=script&lang=ts\"\nexport * from \"./MemberBasicInfoRow.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MemberBasicInfoRow.vue?vue&type=style&index=0&id=0fbb0b58&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0fbb0b58\",\n null\n \n)\n\nexport default component.exports","\r\nimport moment from 'moment'\r\nimport Vue from 'vue'\r\nimport Loading from '@/components/Loading.vue'\r\nimport { GetDistrictMembersExportRequest, GetSectionMembersExportRequest, MemberSummaryResponse, MemberLightResponse } from '@/types'\r\nimport MemberInfoRow from '@/components/members/MemberInfoRow.vue'\r\nimport MemberBasicInfoRow from '@/components/members/MemberBasicInfoRow.vue'\r\nimport SprButton from '@/components/forms/SprButton.vue'\r\nimport { membersService } from '@/services/member.service'\r\nimport { MemberFilter } from '@/types/custom'\r\nimport { MembershipStatus } from '@/types/enums'\r\n\r\nexport default Vue.extend({\r\n name: 'MembersList',\r\n components: { Loading, MemberInfoRow, MemberBasicInfoRow, SprButton },\r\n props: {\r\n searchCriteria: {\r\n type: Object,\r\n default () {\r\n return {\r\n name: '',\r\n approved: true,\r\n hasMembership: true,\r\n membershipStatus: MembershipStatus.ALL\r\n } as MemberFilter\r\n }\r\n },\r\n mode: {\r\n type: String,\r\n default: ''\r\n },\r\n districtId: {\r\n type: String,\r\n required: false,\r\n default: null\r\n },\r\n sectionId: {\r\n type: String,\r\n required: false,\r\n default: null\r\n },\r\n value: {\r\n type: Array,\r\n default: undefined\r\n },\r\n listType: {\r\n type: String,\r\n default: 'MemberSummaryResponse' // || MemberLightResponse\r\n },\r\n showSection: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data () {\r\n return {\r\n dataLoading: false,\r\n membersExportFile: null\r\n }\r\n },\r\n computed: {\r\n showExport () {\r\n if (this.dataLoading) {\r\n return false\r\n }\r\n if (this.mode === 'District') {\r\n return true\r\n }\r\n if (this.mode === 'Section') {\r\n return true\r\n }\r\n return false\r\n },\r\n memberInfoComponent (): string {\r\n return this.listType === 'MemberLightResponse'\r\n ? 'MemberBasicInfoRow'\r\n : 'MemberInfoRow'\r\n },\r\n noResults (): boolean {\r\n return !this.value || !this.value.length\r\n }\r\n },\r\n methods: {\r\n onMembersExport () {\r\n if (this.mode === 'Section') {\r\n this.onMembersExportSection()\r\n } else {\r\n this.onMembersExportDistrict()\r\n }\r\n },\r\n onMembersExportDistrict () {\r\n this.dataLoading = true\r\n const extraMembershipStatuses = this.searchCriteria.extraMembershipStatuses\r\n const mergedMembershipStatuses = [this.searchCriteria.membershipStatus].concat(extraMembershipStatuses)\r\n const criteria = {\r\n name: this.searchCriteria.name,\r\n hasCurrentMembership: this.searchCriteria.hasMembership,\r\n isMembershipApproved: this.searchCriteria.approved,\r\n membershipStatuses: mergedMembershipStatuses,\r\n districtId: Number(this.districtId)\r\n } as GetDistrictMembersExportRequest\r\n\r\n membersService.getDistrictMembersExportFile(criteria).then((result: Blob) => {\r\n const dateAsTimestamp = new Date().toISOString().substr(0, 19).replace('T', '-').replace(':', '-').replace(':', '-')\r\n const fileName = `DistrictMembersExport-${this.districtId}-${dateAsTimestamp}.csv`\r\n const dataUrl = window.URL.createObjectURL(result)\r\n const a = document.createElement('a')\r\n document.body.appendChild(a)\r\n a.href = dataUrl\r\n a.download = fileName\r\n a.click()\r\n window.URL.revokeObjectURL(dataUrl)\r\n this.dataLoading = false\r\n }).catch((err: Error) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.dataLoading = false\r\n this.$store.dispatch('alert/error', { message: this.$t('report.failed') })\r\n })\r\n },\r\n onMembersExportSection () {\r\n this.dataLoading = true\r\n const extraMembershipStatuses = this.searchCriteria.extraMembershipStatuses\r\n const mergedMembershipStatuses = [this.searchCriteria.membershipStatus].concat(extraMembershipStatuses)\r\n const criteria = {\r\n name: this.searchCriteria.name,\r\n hasCurrentMembership: this.searchCriteria.hasMembership,\r\n isMembershipApproved: this.searchCriteria.approved,\r\n membershipStatuses: mergedMembershipStatuses,\r\n sectionId: Number(this.sectionId)\r\n } as GetSectionMembersExportRequest\r\n\r\n membersService.getSectionMembersExportFile(criteria).then((result: Blob) => {\r\n const dateAsTimestamp = new Date().toISOString().substr(0, 19).replace('T', '-').replace(':', '-').replace(':', '-')\r\n const fileName = `SectionMembersExport-${this.sectionId}-${dateAsTimestamp}.csv`\r\n const dataUrl = window.URL.createObjectURL(result)\r\n const a = document.createElement('a')\r\n document.body.appendChild(a)\r\n a.href = dataUrl\r\n a.download = fileName\r\n a.click()\r\n window.URL.revokeObjectURL(dataUrl)\r\n this.dataLoading = false\r\n }).catch((err: Error) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.dataLoading = false\r\n this.$store.dispatch('alert/error', { message: this.$t('report.failed') })\r\n })\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MembersList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MembersList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MembersList.vue?vue&type=template&id=427c9ddb&scoped=true\"\nimport script from \"./MembersList.vue?vue&type=script&lang=ts\"\nexport * from \"./MembersList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MembersList.vue?vue&type=style&index=0&id=427c9ddb&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"427c9ddb\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"pager\"},[(_vm.pageBackVisible)?_c('div',{staticClass:\"link\",on:{\"click\":_vm.onPageToStartClicked}},[_vm._v(\" << \")]):_vm._e(),(_vm.pageBackVisible)?_c('div',{staticClass:\"link\",on:{\"click\":_vm.onPageBackClicked}},[_vm._v(\" < \")]):_vm._e(),(_vm.pageLocationVisible)?_c('div',{staticClass:\"pagelocation\"},[_vm._v(\" \"+_vm._s(_vm.fromPager)+\" - \"+_vm._s(_vm.toPager)+\" / \"+_vm._s(_vm.total)+\" \")]):_vm._e(),(_vm.pageForwardVisible)?_c('div',{staticClass:\"link\",on:{\"click\":_vm.onPageForwardClicked}},[_vm._v(\" > \")]):_vm._e(),(_vm.pageForwardVisible)?_c('div',{staticClass:\"link\",on:{\"click\":_vm.onPageToEndClicked}},[_vm._v(\" >> \")]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\n\r\nexport default Vue.extend({\r\n name: 'Pager',\r\n props: {\r\n total: {\r\n type: Number,\r\n default: 0\r\n },\r\n skip: {\r\n type: Number,\r\n default: 0\r\n },\r\n take: {\r\n type: Number,\r\n default: 10\r\n }\r\n },\r\n methods: {\r\n onPageToStartClicked () {\r\n this.$emit('pageToStart')\r\n },\r\n onPageBackClicked () {\r\n this.$emit('pageBack')\r\n },\r\n onPageForwardClicked () {\r\n this.$emit('pageForward')\r\n },\r\n onPageToEndClicked () {\r\n this.$emit('pageToEnd')\r\n }\r\n },\r\n computed: {\r\n fromPager (): number {\r\n return this.skip + 1\r\n },\r\n toPager (): number {\r\n return Math.min(this.skip + this.take, this.total)\r\n },\r\n pageBackVisible (): boolean {\r\n return this.skip >= this.take\r\n },\r\n pageForwardVisible (): boolean {\r\n return this.skip + this.take < this.total\r\n },\r\n pageLocationVisible (): boolean {\r\n return this.total > 0\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Pager.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Pager.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Pager.vue?vue&type=template&id=6c6f9aaa&scoped=true\"\nimport script from \"./Pager.vue?vue&type=script&lang=ts\"\nexport * from \"./Pager.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Pager.vue?vue&type=style&index=0&id=6c6f9aaa&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6c6f9aaa\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport { debounce } from 'debounce'\r\nimport MemberSearchCriteria from '@/components/members/MemberSearchCriteria.vue'\r\nimport { PagedListResponse, FindMemberRequest, MemberSummaryResponse, SectionActiveRoles } from '@/types'\r\nimport MembersList from '@/components/members/MembersList.vue'\r\nimport { MemberFilter as SearchCriteria } from '@/types/custom'\r\nimport { MembershipStatus, MemberStatus } from '@/types/enums'\r\nimport Pager from '@/components/Pager.vue'\r\n\r\nexport default Vue.extend({\r\n name: 'MemberSearch',\r\n components: {\r\n MemberSearchCriteria,\r\n MembersList,\r\n Pager\r\n },\r\n props: {\r\n id: {\r\n type: String,\r\n default: '0'\r\n },\r\n mode: {\r\n type: String,\r\n default: 'section'\r\n },\r\n hasCurrentMembership: {\r\n type: Boolean,\r\n default: undefined\r\n },\r\n isMembershipApproved: {\r\n type: Boolean,\r\n default: true\r\n },\r\n includeMembershipPositions: {\r\n type: Boolean,\r\n default: true\r\n }\r\n },\r\n data () {\r\n return {\r\n sectionMemberRoles: undefined as undefined | SectionActiveRoles,\r\n searchCriteria: { // Export Criteria - must be kept in sync with the Filter!\r\n name: '',\r\n approved: true,\r\n hasMembership: true,\r\n membershipStatus: MembershipStatus.ACTIVE,\r\n extraMembershipStatuses: [MembershipStatus.NEW],\r\n statuses: [MemberStatus.ACTIVE]\r\n } as SearchCriteria,\r\n memberSearchResult: undefined as undefined | PagedListResponse,\r\n filter: { // the actual filter passed to the back end\r\n sections: this.mode === 'section' ? [\r\n Number(this.id)\r\n ] : [],\r\n includeMemberPositions: true,\r\n name: '',\r\n districts: this.mode !== 'section' ? [\r\n Number(this.id)\r\n ] : [],\r\n hasCurrentMembership: undefined, // not used after sync with stats on 23.11.2022\r\n isMembershipApproved: true, // not used after sync with stats on 23.11.2022\r\n membershipStatuses: [MembershipStatus.ACTIVE],\r\n membershipTypes: [],\r\n statuses: [MemberStatus.ACTIVE],\r\n skip: 0,\r\n take: 50\r\n } as FindMemberRequest\r\n\r\n }\r\n },\r\n created () {\r\n this.$set(this.filter, 'hasCurrentMembership', true)\r\n this.$set(this.filter, 'isMembershipApproved', null)\r\n this.$set(this.filter, 'includeMembershipPositions', true)\r\n\r\n this.getMembers()\r\n },\r\n computed: {\r\n sectionName (): undefined | string {\r\n if (this.sectionMemberRoles != null) {\r\n return this.sectionMemberRoles.sectionName\r\n }\r\n return ''\r\n },\r\n membershipStatuses (): Array {\r\n return [\r\n MembershipStatus.ACTIVE,\r\n MembershipStatus.NEW\r\n ]\r\n },\r\n debouncedMemberSearch (): Function {\r\n return debounce(this.getMembers, 800)\r\n },\r\n memberFilter (): SearchCriteria { // the filter object passed to the memberFilter\r\n return { // @ts-ignore\r\n name: this.filter.name, // @ts-ignore\r\n approved: this.filter.isMembershipApproved, // @ts-ignore\r\n hasMembership: this.filter.hasCurrentMembership, // @ts-ignore\r\n membershipStatus: this.filter.membershipStatuses.length ? this.filter.membershipStatuses[0] : undefined\r\n } as SearchCriteria\r\n }\r\n },\r\n methods: {\r\n getMembers (): void {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n if (this.mode === 'section') {\r\n this.$store.dispatch('members/findSectionMembers', this.filter).then(s => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.memberSearchResult = this.$store.state.members.filteredMembers\r\n }).catch(err => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('members.findfailed') })\r\n })\r\n } else {\r\n this.$store.dispatch('members/findDistrictMembers', this.filter).then(s => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.memberSearchResult = this.$store.state.members.filteredMembers\r\n }).catch(err => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('members.findfailed') })\r\n })\r\n }\r\n },\r\n pageToStart (): void {\r\n this.filter.skip = 0\r\n this.getMembers()\r\n },\r\n pageBack (): void {\r\n // @ts-ignore\r\n this.filter.skip -= this.filter.take\r\n this.getMembers()\r\n },\r\n pageForward (): void {\r\n // @ts-ignore\r\n this.filter.skip += this.filter.take\r\n this.getMembers()\r\n },\r\n pageToEnd (): void {\r\n if (this.memberSearchResult) {\r\n // @ts-ignore\r\n this.filter.skip = Math.floor(this.memberSearchResult.total / this.filter.take) * this.filter.take\r\n this.getMembers()\r\n }\r\n },\r\n onMemberFilterChanged: debounce(function (memberFilter: SearchCriteria) {\r\n // @ts-ignore\r\n this.$set(this.filter, 'name', memberFilter.name)\r\n // @ts-ignore\r\n this.$set(this.filter, 'hasCurrentMembership', memberFilter.hasMembership)\r\n if (memberFilter.membershipStatus === 0) {\r\n // @ts-ignore\r\n this.$set(this.filter, 'membershipStatuses', [])\r\n } else {\r\n // @ts-ignore\r\n this.$set(this.filter, 'membershipStatuses', [memberFilter.membershipStatus])\r\n }\r\n // Need to keep Filter and SearchCriteria in sync! Filter = MemberFind, SearchCriteria = MemberExport\r\n // @ts-ignore\r\n this.searchCriteria.name = memberFilter.name\r\n // @ts-ignore\r\n this.searchCriteria.approved = memberFilter.approved\r\n // @ts-ignore\r\n this.searchCriteria.hasMembership = memberFilter.hasMembership\r\n // @ts-ignore\r\n this.searchCriteria.membershipStatus = memberFilter.membershipStatus\r\n // @ts-ignore\r\n this.getMembers()\r\n\r\n // @ts-ignore\r\n this.$emit('onFilterChanged', memberFilter)\r\n }, 600),\r\n onMemberFilterReset () {\r\n this.searchCriteria.name = ''\r\n this.searchCriteria.approved = true\r\n this.searchCriteria.hasMembership = undefined // Kaikki\r\n this.searchCriteria.membershipStatus = MembershipStatus.ACTIVE\r\n this.searchCriteria.extraMembershipStatuses = [MembershipStatus.NEW] // Handle OR type MembershipStatuses (MultiMembershipStatus)\r\n this.filter.membershipStatuses = []\r\n this.filter.membershipTypes = []\r\n this.filter.statuses = []\r\n this.filter.take = 50\r\n this.updateFilter(this.searchCriteria)\r\n },\r\n updateFilter (memberSearchCriteria: SearchCriteria) {\r\n this.$set(this.filter, 'name', memberSearchCriteria.name)\r\n this.$set(this.filter, 'hasCurrentMembership', memberSearchCriteria.hasMembership)\r\n this.$set(this.filter, 'isMembershipApproved', memberSearchCriteria.approved)\r\n if (memberSearchCriteria.membershipStatus === 0) {\r\n this.$set(this.filter, 'membershipStatuses', [])\r\n } else {\r\n this.$set(this.filter, 'membershipStatuses', [memberSearchCriteria.membershipStatus])\r\n }\r\n //this.$set(this.filter, 'membershipStatuses', [memberSearchCriteria.membershipStatus])\r\n this.$set(this.filter, 'skip', 0)\r\n // Need to keep Filter and SearchCriteria in sync! Filter = MemberFind, SearchCriteria = MemberExport\r\n this.searchCriteria.name = memberSearchCriteria.name\r\n this.searchCriteria.approved = memberSearchCriteria.approved\r\n this.searchCriteria.hasMembership = memberSearchCriteria.hasMembership\r\n this.searchCriteria.membershipStatus = memberSearchCriteria.membershipStatus\r\n this.getMembers()\r\n }\r\n }\r\n})\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MemberSearch.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MemberSearch.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MemberSearch.vue?vue&type=template&id=0a878041&scoped=true\"\nimport script from \"./MemberSearch.vue?vue&type=script&lang=ts\"\nexport * from \"./MemberSearch.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MemberSearch.vue?vue&type=style&index=0&id=0a878041&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0a878041\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"rolesList\"},[(_vm.noResults)?_c('div',{staticClass:\"noResults\"},[_vm._v(\" \"+_vm._s(_vm.$t('memberfilter.noresults'))+\" \")]):_c('div',{staticClass:\"flexcontainer vertical\"},_vm._l((_vm.districtMemberRoles.districtRoles),function(sectionItem){return _c('div',{key:sectionItem.sectionId,staticClass:\"flexitem\"},[_vm._v(\" \"+_vm._s(sectionItem.sectionName)+\" \"),_vm._l((sectionItem.sectionRoles),function(roleItem){return _c('div',{key:roleItem.sectionId,staticClass:\"flexitem\"},[_c('SectionRoleItem',{attrs:{\"role-item\":roleItem}})],1)})],2)}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"sectionRoleItem\"},[_c('div',{staticClass:\"flexcontainer\"},[_c('div',{staticClass:\"flexitem itemdetail\"},[_c('a',{staticClass:\"fullName\",attrs:{\"aria-label\":\"Member full name\"},on:{\"click\":_vm.fullNameClicked}},[_vm._v(\" \"+_vm._s(_vm.fullName)+\" \")])]),_c('div',{staticClass:\"flexitem flexright roleCode itemdetail\"},[_vm._v(\" \"+_vm._s(_vm.roleCode)+\" \")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { TranslateResult } from 'vue-i18n'\r\nimport { SectionRole } from '@/types'\r\n\r\nexport default Vue.extend({\r\n name: 'SectionRoleItem',\r\n props: {\r\n roleItem: {\r\n type: Object as () => SectionRole,\r\n required: true,\r\n default: undefined\r\n }\r\n },\r\n computed: {\r\n editUrl (): string {\r\n return `/sections/${this.roleItem.sectionId}/members/${this.roleItem.memberId}`\r\n },\r\n fullName (): string {\r\n return `${this.roleItem.memberInfo.firstName} ${this.roleItem.memberInfo.lastName}`\r\n },\r\n roleCode (): string {\r\n const roleId = this.roleItem.role\r\n return this.getRoleName(roleId).toString()\r\n }\r\n },\r\n methods: {\r\n fullNameClicked () {\r\n this.$router.push(`/sections/${this.roleItem.sectionId}/members/${this.roleItem.memberId}`)\r\n },\r\n getRoleName (type: number): TranslateResult {\r\n return this.$t(`role-${type}`)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionRoleItem.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionRoleItem.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SectionRoleItem.vue?vue&type=template&id=45d94780&scoped=true\"\nimport script from \"./SectionRoleItem.vue?vue&type=script&lang=ts\"\nexport * from \"./SectionRoleItem.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SectionRoleItem.vue?vue&type=style&index=0&id=45d94780&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"45d94780\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport { DistrictActiveRoles } from '@/types'\r\nimport SectionRoleItem from '@/components/sections/SectionRoleItem.vue'\r\n\r\nexport default Vue.extend({\r\n name: 'SectionRolesList',\r\n components: { SectionRoleItem },\r\n props: {\r\n districtId: {\r\n type: String,\r\n required: true,\r\n default: null\r\n }\r\n },\r\n data () {\r\n return {\r\n districtMemberRoles: {\r\n districtExist: false,\r\n districtId: -1,\r\n districtName: 'Must be fetched!'\r\n } as DistrictActiveRoles\r\n }\r\n },\r\n computed: {\r\n noResults (): boolean {\r\n return !this.districtMemberRoles || !this.districtMemberRoles.districtRoles || this.districtMemberRoles.districtRoles.length === 0\r\n },\r\n sectionName (): undefined | string {\r\n if (this.districtMemberRoles != null) {\r\n return this.districtMemberRoles.districtName\r\n }\r\n return ''\r\n }\r\n },\r\n created () {\r\n const districtId = Number(this.districtId)\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n this.$store.dispatch('districts/getDistrictRoles', districtId).then(s => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.districtMemberRoles = this.$store.state.districts.districtRoles\r\n }).catch(err => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('members.findfailed') })\r\n this.districtMemberRoles = {\r\n districtExist: false,\r\n districtId: -1,\r\n districtName: 'Must be fetched!'\r\n } as DistrictActiveRoles\r\n })\r\n }\r\n})\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DistrictRolesList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DistrictRolesList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DistrictRolesList.vue?vue&type=template&id=bffe35fe&scoped=true\"\nimport script from \"./DistrictRolesList.vue?vue&type=script&lang=ts\"\nexport * from \"./DistrictRolesList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DistrictRolesList.vue?vue&type=style&index=0&id=bffe35fe&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bffe35fe\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport Back from '@/components/Back.vue'\r\nimport { DistrictSummaryResponse, PagedListResponse, FindMemberRequest, MemberSummaryResponse } from '@/types'\r\nimport { MembershipStatus, MemberStatus } from '@/types/enums'\r\nimport MemberSearch from '@/components/members/MemberSearch.vue'\r\nimport DistrictRolesList from '@/components/districts/DistrictRolesList.vue'\r\nimport SprButton from '@/components/forms/SprButton.vue'\r\n\r\nimport ExcelJS from 'exceljs'\r\n\r\nexport default Vue.extend({\r\n name: 'DistrictMembers',\r\n components: {\r\n Back,\r\n MemberSearch,\r\n DistrictRolesList,\r\n SprButton\r\n },\r\n props: {\r\n districtId: {\r\n type: String,\r\n default: '0'\r\n }\r\n },\r\n data () {\r\n return {\r\n memberListVisible: true,\r\n memberRolesVisible: false,\r\n mode: 'District',\r\n filter: { // the actual filter passed to the back end\r\n sections: [],\r\n includeMemberPositions: true,\r\n name: '',\r\n districts: [Number(this.districtId)],\r\n hasCurrentMembership: undefined,\r\n isMembershipApproved: undefined,\r\n membershipStatuses: [MembershipStatus.ACTIVE],\r\n membershipTypes: [],\r\n statuses: [MemberStatus.ACTIVE],\r\n skip: 0,\r\n take: 0\r\n } as FindMemberRequest\r\n }\r\n },\r\n computed: {\r\n districtname (): string {\r\n if (this.$store.state.districts.districtsLoaded) {\r\n const district = this.$store.state.districts.all.find((x: DistrictSummaryResponse) => x.id === Number(this.districtId))\r\n return district ? district.name : ''\r\n }\r\n return ''\r\n },\r\n isDistrictAdminAndAbove (): boolean {\r\n \r\n const claims = this.$store.state.authentication.claims\r\n return claims.isInRoleSuperAdmin ||\r\n claims.isInRoleKT ||\r\n claims.isInRoleDistrictAdmin\r\n },\r\n isDistrictUserAndAbove (): boolean { \r\n const claims = this.$store.state.authentication.claims\r\n return claims.isInRoleSuperAdmin ||\r\n claims.isInRoleKT ||\r\n claims.isInRoleDistrictAdmin ||\r\n claims.isInRoleDistrictUser\r\n },\r\n membershipStatuses (): Array {\r\n return [\r\n MembershipStatus.ACTIVE,\r\n MembershipStatus.NEW\r\n ]\r\n }\r\n },\r\n methods: {\r\n sectionRolesClicked () {\r\n this.swapTab('memberroles')\r\n // this.$router.push(`/sections/${this.sectionId}/roles`)\r\n },\r\n sectionMembersClicked () {\r\n this.swapTab('memberlist')\r\n },\r\n swapTab (tabname: string): void {\r\n this.memberListVisible = tabname === 'memberlist'\r\n this.memberRolesVisible = tabname === 'memberroles' && this.isDistrictAdminAndAbove\r\n },\r\n\r\n onFilterChanged (data: any) {\r\n this.filter = data\r\n this.filter.districts = [Number(this.districtId)]\r\n },\r\n\r\n onExport (filter: any) {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n const unpagedFilter = filter\r\n unpagedFilter.take = 0\r\n unpagedFilter.skip = 0\r\n unpagedFilter.districts = [Number(this.districtId)]\r\n this.$store.dispatch('members/getAllDistrictMembers', unpagedFilter).then(s => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n const memberSearchResult = this.$store.state.members?.filteredMembers\r\n if (!memberSearchResult || !memberSearchResult.results || memberSearchResult.results === 0) return null\r\n const workbook = new ExcelJS.Workbook()\r\n\r\n // Add a worksheet to the workbook\r\n const worksheet = workbook.addWorksheet('Members')\r\n\r\n // Define the column headers\r\n worksheet.columns = [\r\n { header: 'FirstName', key: 'firstName', width: 20 },\r\n { header: 'LastName', key: 'lastName', width: 20 },\r\n { header: 'Email', key: 'email', width: 30 },\r\n { header: 'Address 1', key: 'address1', width: 20 },\r\n { header: 'Address 2', key: 'address2', width: 20 },\r\n { header: 'City', key: 'city', width: 20 },\r\n { header: 'Postal Code', key: 'postalCode', width: 20, style: { numFmt: '@' } }, // Set the column as text\r\n { header: 'Country', key: 'country', width: 20 },\r\n { header: 'Payment Date', key: 'paymentdate', width: 20, style: { numFmt: 'dd.MM.yyyy' } }, // Set the date format\r\n { header: 'MemberId', key: 'memberId', width: 20, style: { numFmt: '@' } },\r\n { header: 'IsEmailAllowed', key: 'isEmailAllowed', width: 20 },\r\n { header: 'IsSmsAllowed', key: 'isSmsAllowed', width: 20 },\r\n { header: 'IsContactProhibited', key: 'isContactProhibited', width: 20 }\r\n\r\n ]\r\n\r\n // Apply bold font to the header row\r\n const headerRow = worksheet.getRow(1)\r\n headerRow.font = { bold: true }\r\n\r\n // Add member data to the worksheet\r\n memberSearchResult.results.forEach(function (member: any) {\r\n worksheet.addRow({ firstName: member.firstName,\r\n lastName: member.lastName,\r\n email: member.email,\r\n address1: member.address?.address1,\r\n address2: member.address?.address2,\r\n city: member.address?.city,\r\n postalCode: member.address?.postalCode,\r\n country: member.address?.country,\r\n paymentdate: member.paymentDate,\r\n memberId: member.sprId,\r\n isEmailAllowed: member.isEmailAllowed ? 'Yes' : 'No',\r\n isSmsAllowed: member.isSmsAllowed ? 'Yes' : 'No',\r\n isContactProhibited: member.isContactProhibited ? 'Yes' : 'No' })\r\n })\r\n\r\n // Set filters on the header row\r\n headerRow.eachCell(function (cell) {\r\n cell.alignment = { vertical: 'middle', horizontal: 'center' }\r\n })\r\n worksheet.autoFilter = 'A1:M1' // Apply filters to all columns\r\n\r\n // Generate the Excel file as a binary buffer\r\n return workbook.xlsx.writeBuffer()\r\n })\r\n .then(function (buffer) {\r\n if (buffer === null) return\r\n // Create a Blob object with the Excel file buffer\r\n const link = document.createElement('a')\r\n link.href = URL.createObjectURL(new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }))\r\n link.download = 'member_list.xlsx'\r\n\r\n // Append the link to the document body or any other parent element\r\n document.body.appendChild(link)\r\n\r\n // Trigger the click event to start the download\r\n link.click()\r\n link.remove()\r\n }).catch(err => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('members.findfailed') })\r\n })\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DistrictMembers.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DistrictMembers.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DistrictMembers.vue?vue&type=template&id=1e405bd8&scoped=true\"\nimport script from \"./DistrictMembers.vue?vue&type=script&lang=ts\"\nexport * from \"./DistrictMembers.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DistrictMembers.vue?vue&type=style&index=0&id=1e405bd8&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1e405bd8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"sections\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 backlink\"},[_c('Back')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h1',[_vm._v(_vm._s(_vm.districtName))])])]),(_vm.sections && _vm.$store.state.sections.sectionsLoaded)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('sections')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},_vm._l((_vm.sections),function(section){return _c('div',{key:section.id,staticClass:\"row section\"},[_c('div',{staticClass:\"col-7\"},[_c('div',{staticClass:\"sectionname\",on:{\"click\":function($event){return _vm.onSectionClicked(section)}}},[_vm._v(\" \"+_vm._s(section.name)+\" \")]),_c('div',{staticClass:\"sectionstatus\"},[_vm._v(\" \"+_vm._s(_vm.getStatus(section.status.id))+\" \")]),_c('div',{staticClass:\"tools\"},[_c('a',{staticClass:\"fill-preparedness-plan\",on:{\"click\":function($event){return _vm.onPreparednessPlanDownload(section.id)}}},[_vm._v(\" \"+_vm._s(_vm.getUrl(section.preparednessPlanUrl))+\" \")])])]),_c('div',{staticClass:\"col-5 tools text-right\"},[(_vm.canViewMembers)?_c('a',{staticClass:\"viewmembers\",on:{\"click\":function($event){return _vm.onMembersClicked(section)}}},[_vm._v(\" \"+_vm._s(_vm.$t('members'))+\" \")]):_vm._e(),_c('a',{staticClass:\"viewmeetings\",on:{\"click\":function($event){return _vm.onMeetingsClicked(section)}}},[_vm._v(\" \"+_vm._s(_vm.$t('meetings'))+\" \")]),(_vm.canEditMeetings)?_c('a',{staticClass:\"addmeeting\",on:{\"click\":function($event){return _vm.onAddMeetingClicked(section)}}},[_vm._v(\" \"+_vm._s(_vm.$t('addmeeting'))+\" \")]):_vm._e(),_c('a',{staticClass:\"order-signing-agreement\",on:{\"click\":function($event){return _vm.reportsClicked(section)}}},[_vm._v(\" \"+_vm._s(_vm.$t('ordersigningagreement'))+\" \")]),_c('a',{staticClass:\"fill-preparedness-plan\",on:{\"click\":function($event){return _vm.fillPreparednessClicked(section)}}},[_vm._v(\" \"+_vm._s(_vm.$t('fillPreparednessPlan'))+\" \")]),_c('a',{staticClass:\"fill-preparedness-plan\",on:{\"click\":function($event){return _vm.uploadPreparednessClicked(section)}}},[_vm._v(\" \"+_vm._s(_vm.$t('uploadPreparednessPlan'))+\" \")])])])}),0)])]):_vm._e(),_c('input',{ref:\"fileInput\",staticClass:\"form-control-file\",staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\",\"aria-label\":''},on:{\"change\":_vm.onFileChange}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport Back from '@/components/Back.vue'\r\nimport { TranslateResult } from 'vue-i18n'\r\nimport { SectionSummaryResponse, DistrictSummaryResponse, PreparednessPlanDocumentRequest, PreparednessPlanDocumentResponse } from '@/types'\r\nimport { CodeCategory, AlertTimeout } from '@/types/enums'\r\nimport { membersService } from '@/services'\r\nimport { preparednessPlanService } from '@/services/preparednessPlan.service'\r\n\r\ninterface TemplateComponentData {\r\n currentSection: SectionSummaryResponse,\r\n preparednessPlanUrl: string,\r\n request: PreparednessPlanDocumentResponse\r\n\r\n}\r\n\r\nexport default Vue.extend({\r\n name: 'Sections',\r\n components: {\r\n Back\r\n },\r\n props: {\r\n districtId: {\r\n type: String,\r\n default: '0'\r\n }\r\n },\r\n computed: {\r\n districtIdNumber (): number {\r\n return Number(this.districtId)\r\n },\r\n sections (): Array {\r\n if (this.districtIdNumber > 0) {\r\n return this.$store.state.sections.all.filter((x: SectionSummaryResponse) => x.districtId === this.districtIdNumber)\r\n }\r\n return this.$store.state.sections.all\r\n },\r\n canEditMeetings (): boolean {\r\n const claims = this.$store.state.authentication.claims\r\n return claims.isInRoleSuperAdmin ||\r\n claims.isInRoleKT ||\r\n claims.isInRoleDistrictAdmin ||\r\n claims.isInRoleSectionAdmin\r\n },\r\n canViewMembers (): boolean {\r\n const claims = this.$store.state.authentication.claims\r\n return claims.isInRoleSuperAdmin ||\r\n claims.isInRoleKT ||\r\n claims.isInRoleDistrictAdmin ||\r\n claims.isInRoleSectionAdmin\r\n },\r\n districtName (): string {\r\n if (this.$store.state.districts.districtsLoaded) {\r\n const district = this.$store.state.districts.all.find((x: DistrictSummaryResponse) => x.id === this.districtIdNumber)\r\n return district ? district.name : ''\r\n }\r\n return ''\r\n }\r\n },\r\n data (): TemplateComponentData {\r\n return {\r\n currentSection: {} as SectionSummaryResponse,\r\n preparednessPlanUrl: '',\r\n request: {} as PreparednessPlanDocumentResponse\r\n\r\n }\r\n },\r\n methods: {\r\n reportsClicked (section: SectionSummaryResponse): void {\r\n console.log('reportsClicked', section)\r\n if (section !== null) {\r\n this.$router.push(`/sections/${section.id}/reports`)\r\n }\r\n },\r\n onFileChange (e: Event): void {\r\n const target = e.target as HTMLInputElement\r\n if (!target || !target.files) return\r\n const files = target.files\r\n if (!files.length) return\r\n this.readFile(files[0])\r\n target.files = null\r\n target.value = ''\r\n },\r\n uploadPreparednessClicked (section: SectionSummaryResponse): void {\r\n this.currentSection = section\r\n const fileInput = this.$refs.fileInput as HTMLInputElement\r\n if (fileInput) {\r\n fileInput.click()\r\n }\r\n },\r\n async onPreparednessPlanDownload (id: number) {\r\n if (!this.preparednessPlanUrl) {\r\n preparednessPlanService.getPreparednessPlansById(id).then(result => {\r\n window.open(result.url)\r\n }).catch((err: Error) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('report.failed') })\r\n })\r\n }\r\n },\r\n readFile (file: File): void {\r\n const reader = new FileReader()\r\n reader.onload = (readerEvt: ProgressEvent) => {\r\n const raw = reader.result as string\r\n // var base64 = btoa(binaryString);\r\n this.processUploadedFile(file.name, file.type, raw).then((success: PreparednessPlanDocumentResponse) => {\r\n if (success) {\r\n // reload with the file\r\n this.$store.dispatch('alert/success', { message: this.$t('officialletterrequest.uploadsuccess') })\r\n this.getPreparednessPlanRequest(Number(this.currentSection.id))\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.uploadfailed') })\r\n }\r\n }).catch((err: Error) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.uploadfailed') })\r\n })\r\n }\r\n reader.readAsBinaryString(file)\r\n },\r\n processUploadedFile (name: string, type: string, rawString: string | null): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (!rawString) reject(new Error('No file.'))\r\n const doc: PreparednessPlanDocumentRequest = {\r\n name: name,\r\n // @ts-ignore-next-line\r\n sectionId: this.currentSection.id || null,\r\n blob: rawString ? btoa(rawString) : '',\r\n fileType: type\r\n }\r\n\r\n if (doc.name.length > 800) {\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.uploadnametoolarge') })\r\n reject(new Error('File length too long'))\r\n }\r\n\r\n if (doc.fileType.length > 255) {\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.removedocumentfailed') })\r\n reject(new Error('File type too long'))\r\n }\r\n\r\n preparednessPlanService.uploadPreparednessPlan(doc).then(success => {\r\n if (success) {\r\n resolve(success)\r\n this.$store.dispatch('sections/loadAll', null, { root: true })\r\n } else {\r\n reject(success)\r\n }\r\n }, (err) => {\r\n // eslint-disable-next-line no-console\r\n reject(err)\r\n })\r\n })\r\n },\r\n getPreparednessPlanRequest (id: number): void {\r\n if (id === 0) id = this.currentSection.id\r\n preparednessPlanService.getPreparednessPlansById(id).then(result => {\r\n this.request = result\r\n this.preparednessPlanUrl = this.request.url\r\n }).catch((err: Error) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('report.failed') })\r\n })\r\n },\r\n fillPreparednessClicked (section: SectionSummaryResponse): void {\r\n // this will open the preparedness plan form, which is a kobotoolbox form\r\n // we need to know the url of the form and the section id, so we can fill in the form\r\n this.$store.dispatch('preparednessPlan/fillPreparednessPlan', section.id).then(s => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n const url = this.$store.state.preparednessPlan.filledUrl\r\n if (url) {\r\n window.open(url, '_blank')\r\n }\r\n })\r\n },\r\n onSectionClicked (section: SectionSummaryResponse): void {\r\n this.$router.push(`/sections/${section.id}`)\r\n },\r\n onMembersClicked (section: SectionSummaryResponse): void {\r\n this.$router.push(`/sections/${section.id}/members`)\r\n },\r\n onMeetingsClicked (section: SectionSummaryResponse): void {\r\n this.$router.push(`/sections/${section.id}/meetings`)\r\n },\r\n onAddMeetingClicked (section: SectionSummaryResponse): void {\r\n this.$router.push(`/sections/${section.id}/meetings/add`)\r\n },\r\n getStatus (statusId: number): TranslateResult {\r\n return this.$t(`sectionstatus-${statusId}`)\r\n },\r\n getUrl (url: string): TranslateResult {\r\n if (url && url.length > 0) {\r\n return this.$t('viewPreparednessPlan')\r\n } else return ''\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Sections.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Sections.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Sections.vue?vue&type=template&id=cf86e0a4&scoped=true\"\nimport script from \"./Sections.vue?vue&type=script&lang=ts\"\nexport * from \"./Sections.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Sections.vue?vue&type=style&index=0&id=cf86e0a4&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cf86e0a4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"section\"},[(_vm.section.id)?_c('div',[_c('div',{staticClass:\"link-icon-boxes\"},[(_vm.isCreateMeetingAccess)?_c('div',{staticClass:\"link-icon-box\"},[_c('LinkIconBox',{attrs:{\"font-awesome-icon\":\"calendar-plus\",\"title\":_vm.$t('addmeeting'),\"subtitle\":_vm.$t('home.addmeeting-desc')},on:{\"clicked\":_vm.addMeetingClicked}})],1):_vm._e(),(_vm.isSectionBasicAccess)?_c('div',{staticClass:\"link-icon-box\"},[_c('LinkIconBox',{attrs:{\"font-awesome-icon\":\"calendar-alt\",\"title\":_vm.$t('meetings'),\"subtitle\":_vm.$t('home.meetings-desc')},on:{\"clicked\":_vm.meetingsClicked}})],1):_vm._e(),(_vm.isSectionBasicAccess)?_c('div',{staticClass:\"link-icon-box\"},[_c('LinkIconBox',{attrs:{\"font-awesome-icon\":\"user\",\"title\":_vm.$t('members'),\"subtitle\":_vm.$t('home.members-desc')},on:{\"clicked\":_vm.usersClicked}})],1):_vm._e(),(_vm.isSectionBasicAccess)?_c('div',{staticClass:\"link-icon-box\"},[_c('LinkIconBox',{attrs:{\"font-awesome-icon\":\"file-download\",\"title\":_vm.$t('reports'),\"subtitle\":_vm.$t('home.reports-desc')},on:{\"clicked\":_vm.reportsClicked}})],1):_vm._e(),_c('div',{staticClass:\"link-icon-box\"},[_c('LinkIconBox',{attrs:{\"font-awesome-icon\":\"house-chimney-crack\",\"title\":_vm.$t('preparednessplan.title'),\"subtitle\":_vm.$t('preparednessplan.description')},on:{\"clicked\":_vm.preparednessPlanClicked}})],1)]),_c('div',{staticClass:\"row overview\"},[_c('div',{staticClass:\"col-12\"},[_c('SectionSummary',{attrs:{\"section\":_vm.section,\"is-editable\":_vm.isSectionEditAccess,\"number-of-active-members\":_vm.statSectionTotalMembersValue},on:{\"reset\":_vm.resetSectionSummary}})],1)]),_c('div',{staticClass:\"row positionsoftrust\"},[_c('div',{staticClass:\"col-12\"},[_c('ActivePositionsOfTrustSummary',{attrs:{\"positions\":_vm.activePositionsOfTrust}})],1)]),_c('div',{staticClass:\"row positionsoftrust\"},[_c('div',{staticClass:\"col-12\"},[_c('UpcomingPositionsOfTrustSummary',{attrs:{\"positions\":_vm.upcomingPositionsOfTrust}})],1)]),_c('div',{staticClass:\"row stats\"},[_c('div',{staticClass:\"col-6 col-md-4\"},[_c('StatisticTile',{attrs:{\"name\":\"Total Members\",\"value\":_vm.statSectionTotalMembersValue,\"subtext\":_vm.statSectionTotalMembersText}})],1),_c('div',{staticClass:\"col-6 col-md-4\"},[_c('StatisticTile',{attrs:{\"name\":\"Members who have paid membership\",\"value\":_vm.statSectionPaidMembersValue,\"subtext\":_vm.statSectionPaidMembersText}})],1),_c('div',{staticClass:\"col-6 col-md-4\"},[_c('StatisticTile',{attrs:{\"name\":\"Members who started this year\",\"value\":_vm.statSectionNewMembersValue,\"subtext\":_vm.statSectionNewMembersText}})],1)])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"sectionsummary\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-10\"},[_c('h2',[_vm._v(_vm._s(_vm.localSection.name))])]),_c('div',{staticClass:\"col-12 details\"},[(_vm.hasAddress(_vm.localSection.billingAddress))?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-sm-3 col-md-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('section.billingaddress'))+\" \")]),_c('dd',{staticClass:\"col-sm-9 col-md-10 address\"},[_vm._v(\" \"+_vm._s(_vm.formatAddress(_vm.localSection.billingAddress))+\" \")])]):_vm._e(),(_vm.hasAddress(_vm.localSection.shippingAddress))?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-sm-3 col-md-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('section.officeaddress'))+\" \")]),_c('dd',{staticClass:\"col-sm-9 col-md-10 address\"},[_vm._v(\" \"+_vm._s(_vm.formatAddress(_vm.localSection.shippingAddress))+\" \")])]):_vm._e(),(_vm.localSection.phone)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-sm-3 col-md-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('section.phone'))+\" \")]),_c('dd',{staticClass:\"col-sm-9 col-md-10 phone\"},[_vm._v(\" \"+_vm._s(_vm.localSection.phone)+\" \")])]):_vm._e(),(_vm.localSection.email)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-sm-3 col-md-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('section.email'))+\" \")]),_c('dd',{staticClass:\"col-sm-9 col-md-10 email\"},[_vm._v(\" \"+_vm._s(_vm.localSection.email)+\" \")])]):_vm._e(),(_vm.localSection.url)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-sm-3 col-md-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('section.url'))+\" \")]),_c('dd',{staticClass:\"col-sm-9 col-md-10 url\"},[_vm._v(\" \"+_vm._s(_vm.localSection.url)+\" \")])]):_vm._e()]),_c('div',{staticClass:\"col-12 moredetails\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-6\"},[(_vm.localSection.status)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-sm-4\"},[_vm._v(\" \"+_vm._s(_vm.$t('section.status'))+\" \")]),_c('dd',{staticClass:\"col-sm-8 status\"},[_vm._v(\" \"+_vm._s(_vm.statusTranslation)+\" \")])]):_vm._e(),(_vm.localSection.language)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-sm-4\"},[_vm._v(\" \"+_vm._s(_vm.$t('section.language'))+\" \")]),_c('dd',{staticClass:\"col-sm-8 language\"},[_vm._v(\" \"+_vm._s(_vm.languageTranslation)+\" \")])]):_vm._e(),(_vm.numberOfActiveMembers)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-sm-4\"},[_vm._v(\" \"+_vm._s(_vm.$t('section.members'))+\" \")]),_c('dd',{staticClass:\"col-sm-8 membercount\"},[_vm._v(\" \"+_vm._s(_vm.numberOfActiveMembers)+\" \")])]):_vm._e()]),_c('div',{staticClass:\"col-12 col-md-6\"},[(_vm.localSection.establishedDate)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-sm-4\"},[_vm._v(\" \"+_vm._s(_vm.$t('section.establisheddate'))+\" \")]),_c('dd',{staticClass:\"col-sm-8 established\"},[_vm._v(\" \"+_vm._s(_vm.formatDate(_vm.localSection.establishedDate))+\" \")])]):_vm._e(),(_vm.localSection.businessId)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-sm-4\"},[_vm._v(\" \"+_vm._s(_vm.$t('section.businessid'))+\" \")]),_c('dd',{staticClass:\"col-sm-8 businessid\"},[_vm._v(\" \"+_vm._s(_vm.localSection.businessId)+\" \")])]):_vm._e(),(_vm.localSection.accountId)?_c('dl',{staticClass:\"row\"},[_c('dt',{staticClass:\"col-sm-4\"},[_vm._v(\" \"+_vm._s(_vm.$t('section.accountid'))+\" \")]),_c('dd',{staticClass:\"col-sm-8 accountid\"},[_vm._v(\" \"+_vm._s(_vm.localSection.accountId)+\" \")])]):_vm._e()])]),(_vm.localSection.isTrainingSection)?_c('div',{staticClass:\"row attention\"},[_c('div',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('section.traininginfo'))+\" \")])]):_vm._e(),(_vm.localSection.isTrainingSection && _vm.canResetSection)?_c('div',{staticClass:\"row reset\"},[_c('div',{staticClass:\"col-sm\"},[_c('SprButton',{attrs:{\"compact\":\"\",\"text\":_vm.$t('section.reset')},on:{\"click\":_vm.onReset}})],1)]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"addresseditor\"},[(_vm.label)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 addresslabel\"},[_c('h2',[_vm._v(_vm._s(_vm.label))])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-10 col-lg-8\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormText',{attrs:{\"value\":_vm.localVal.address1,\"label\":_vm.$t('address.address1'),\"name\":\"address_address1\",\"validations\":\"max:250\",\"has-error\":_vm.errors.has('address_address1')},on:{\"input\":_vm.address1Changed}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('address_address1')))])],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-10 col-lg-8\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormText',{attrs:{\"value\":_vm.localVal.address2,\"label\":_vm.$t('address.address2'),\"name\":\"address_address2\",\"validations\":\"max:250\",\"has-error\":_vm.errors.has('address_address2')},on:{\"input\":_vm.address2Changed}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('address_address2')))])],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-5\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormText',{attrs:{\"value\":_vm.localVal.postalCode,\"label\":_vm.$t('address.postalCode'),\"name\":\"address_postalcode\",\"validations\":\"max:12\",\"has-error\":_vm.errors.has('address_postalcode')},on:{\"input\":_vm.postalCodeChanged}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('address_postalcode')))])],1)]),_c('div',{staticClass:\"col-12 col-md-5\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormText',{attrs:{\"value\":_vm.localVal.city,\"label\":_vm.$t('address.city'),\"name\":\"address_city\",\"validations\":\"max:50\",\"has-error\":_vm.errors.has('address_city')},on:{\"input\":_vm.cityChanged}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('address_city')))])],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-8\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormText',{attrs:{\"value\":_vm.localVal.country,\"label\":_vm.$t('address.country'),\"name\":\"address_country\",\"validations\":\"max:50\",\"has-error\":_vm.errors.has('address_country')},on:{\"input\":_vm.countryChanged}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('address_country')))])],1)])])])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport SprFormText from '@/components/forms/SprFormText.vue'\r\nimport { isAddressEmpty } from '@/helpers/addresshelper'\r\nimport { AddressResponse } from '@/types'\r\n\r\nexport default Vue.extend({\r\n name: 'AddressEditor',\r\n components: { SprFormText },\r\n props: {\r\n value: {\r\n type: Object as () => AddressResponse,\r\n default: null\r\n },\r\n label: {\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n methods: {\r\n address1Changed (newVal: string): void {\r\n this.localVal.address1 = newVal\r\n this.addressChanged()\r\n },\r\n address2Changed (newVal: string): void {\r\n this.localVal.address2 = newVal\r\n this.addressChanged()\r\n },\r\n postalCodeChanged (newVal: string): void {\r\n this.localVal.postalCode = newVal\r\n this.addressChanged()\r\n },\r\n cityChanged (newVal: string): void {\r\n this.localVal.city = newVal\r\n this.addressChanged()\r\n },\r\n countryChanged (newVal: string): void {\r\n this.localVal.country = newVal\r\n this.addressChanged()\r\n },\r\n addressChanged () {\r\n // @ts-ignore-next-line\r\n this.$emit('input', this.localVal)\r\n }\r\n },\r\n computed: {\r\n localVal () {\r\n return this.value || {\r\n address1: '',\r\n address2: '',\r\n postalCode: '',\r\n city: '',\r\n country: ''\r\n } as AddressResponse\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddressEditor.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddressEditor.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AddressEditor.vue?vue&type=template&id=363d66b2&scoped=true\"\nimport script from \"./AddressEditor.vue?vue&type=script&lang=ts\"\nexport * from \"./AddressEditor.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AddressEditor.vue?vue&type=style&index=0&id=363d66b2&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"363d66b2\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport SprFormText from '@/components/forms/SprFormText.vue'\r\nimport SprButton from '@/components/forms/SprButton.vue'\r\nimport AddressEditor from '@/components/sections/AddressEditor.vue'\r\nimport { isAddressEmpty, formatAddress } from '@/helpers/addresshelper'\r\nimport { formatErrors } from '@/helpers/validationhelper'\r\nimport { finnishShortDate } from '@/helpers/datehelper'\r\nimport { SectionDetailedResponse, AddressResponse, RequestValidationResult, ErrorResult } from '@/types'\r\nimport { isRequestValidationResult } from '@/types/custom.ts'\r\nimport {AlertTimeout } from '@/types/enums'\r\n\r\nexport default Vue.extend({\r\n name: 'SectionSummary',\r\n components: { SprFormText, SprButton, AddressEditor },\r\n props: {\r\n section: {\r\n type: Object as () => SectionDetailedResponse,\r\n required: true\r\n },\r\n isEditable: {\r\n type: Boolean,\r\n default: false\r\n },\r\n numberOfActiveMembers: {\r\n type: [String, Number],\r\n default: ''\r\n }\r\n },\r\n data () {\r\n return {\r\n isEditing: false\r\n }\r\n },\r\n methods: {\r\n hasAddress (add: AddressResponse): boolean {\r\n return !isAddressEmpty(add)\r\n },\r\n formatAddress (add: AddressResponse): string {\r\n return formatAddress(add)\r\n },\r\n formatDate (date: Date): string {\r\n return finnishShortDate(date)\r\n },\r\n billingAddressChanged (newVal: AddressResponse) {\r\n this.localSection.billingAddress = newVal\r\n },\r\n shippingAddressChanged (newVal: AddressResponse) {\r\n this.localSection.shippingAddress = newVal\r\n },\r\n onReset () {\r\n if (confirm(this.$t('section.resetconfirm').toString())) {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n this.$store.dispatch('sections/resetSection', this.localSection).then(() => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$store.dispatch('alert/success', { message: this.$t('section.resetsuccesful'), timeout: AlertTimeout.SHORT })\r\n })\r\n }\r\n }\r\n },\r\n computed: {\r\n localSection () {\r\n return this.section\r\n },\r\n languageTranslation () {\r\n return this.$t(`sectionlanguage-${this.section.language.id}`)\r\n },\r\n statusTranslation () { //Tila\r\n return this.$t(`sectionstatus-${this.section.status.id}`)\r\n },\r\n canResetSection (): boolean {\r\n return (this.$store.state.authentication.claims.isInRoleSectionAdmin || this.$store.state.authentication.claims.isInRoleDistrictAdmin || this.$store.state.authentication.claims.isInRoleSuperAdmin)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionSummary.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionSummary.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SectionSummary.vue?vue&type=template&id=4431f490&scoped=true\"\nimport script from \"./SectionSummary.vue?vue&type=script&lang=ts\"\nexport * from \"./SectionSummary.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SectionSummary.vue?vue&type=style&index=0&id=4431f490&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4431f490\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"activepositionsoftrustsummary\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('section.activememberstitle')))])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"table-responsive\"},[_c('table',{staticClass:\"table table-borderless\"},[_c('caption',{staticClass:\"sr-only\"},[_vm._v(\" List of active section board members \")]),_c('thead',[_c('tr',[_c('th',{attrs:{\"scope\":\"col\"}}),_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('memberposition.position'))+\" \")]),_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('memberposition.term'))+\" \")]),_c('th',{staticClass:\"d-none d-sm-table-cell\",attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('member.phone'))+\" \")]),_c('th',{staticClass:\"d-none d-md-table-cell\",attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('member.email'))+\" \")])])]),_c('tbody',_vm._l((_vm.sortedPositions),function(position){return _c('tr',{key:position.id},[_c('td',[(position.isNonMember)?_c('span',{staticClass:\"nonmember\"},[_vm._v(\" \"+_vm._s(position.nonMember.firstName)+\" \"+_vm._s(position.nonMember.lastName)+\" \")]):(position.member && position.member.hasDifferentSection && !_vm.canSeeMemberInfo(position))?_c('span',{staticClass:\"nonmember\",attrs:{\"title\":_vm.$t('memberposition.nonmemberdifferentsection')}},[_vm._v(_vm._s(position.member.firstName)+\" \"+_vm._s(position.member.lastName)+\" \")]):(position.member && position.member.hasDifferentSection && _vm.canSeeMemberInfo(position))?_c('span',{staticClass:\"member\",attrs:{\"title\":_vm.$t('memberposition.nonmemberdifferentsection')},on:{\"click\":function($event){return _vm.gotoMember(position.member)}}},[_vm._v(_vm._s(position.member.firstName)+\" \"+_vm._s(position.member.lastName)+\" \")]):_c('span',{staticClass:\"member\",on:{\"click\":function($event){return _vm.gotoMember(position.member)}}},[_vm._v(_vm._s(position.member.firstName)+\" \"+_vm._s(position.member.lastName)+\" \")]),(position.member && position.member.hasDifferentSection)?_c('span',{staticClass:\"nonmember\",attrs:{\"title\":_vm.$t('memberposition.nonmemberdifferentsection')}},[_c('font-awesome-icon',{attrs:{\"icon\":\"fa-star\",\"title\":_vm.$t('memberposition.hasdifferentsection')}})],1):_vm._e(),(position.isNonMember)?_c('span',{staticClass:\"nonmember\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"user-slash\",\"title\":_vm.$t('memberposition.isnonmember')}})],1):_vm._e()]),_c('td',[_vm._v(\" \"+_vm._s(_vm.getPositionTranslation(position.positionId))+\" \")]),_c('td',[_vm._v(_vm._s(_vm.formatDate(position.termStart))+\" - \"+_vm._s(_vm.formatDate(position.termEnd)))]),_c('td',{staticClass:\"d-none d-sm-table-cell\"},[(position.isNonMember)?_c('span',[_vm._v(_vm._s(position.nonMember.phone))]):_c('span',[_vm._v(_vm._s(position.member.phone))])]),_c('td',{staticClass:\"d-none d-md-table-cell\"},[(position.isNonMember)?_c('span',[_vm._v(_vm._s(position.nonMember.email))]):_c('span',[_vm._v(_vm._s(position.member.email))])])])}),0)])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { isAddressEmpty, formatAddress } from '@/helpers/addresshelper'\r\nimport { MemberPositionSummaryResponse, AddressResponse, MemberSummaryResponse, MemberSummaryDetails } from '@/types'\r\nimport { finnishShortDate } from '@/helpers/datehelper'\r\nimport { MemberPositionStatus } from '@/types/enums'\r\n\r\nexport default Vue.extend({\r\n name: 'ActivePositionsOfTrustSummary',\r\n props: {\r\n positions: {\r\n type: Array as () => Array,\r\n required: false,\r\n default: []\r\n }\r\n },\r\n methods: {\r\n canSeeMemberInfo (pos: MemberPositionSummaryResponse): boolean {\r\n const v = pos.member as MemberSummaryDetails\r\n const IsMemberOnThisSection = v && !v.hasDifferentSection\r\n const CanViewMemberOnOtherSection = this.hasAccessToOtherSections(pos) && (v && v.hasDifferentSection)\r\n if (CanViewMemberOnOtherSection || IsMemberOnThisSection) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n },\r\n getPositionTranslation (positionId: number) {\r\n const positionCode = 'positionId-' + positionId.toString()\r\n return this.$t(positionCode)\r\n },\r\n hasAccessToOtherSections (pos: MemberPositionSummaryResponse) {\r\n return this.$store.state.authentication.claims.isInRoleSuperAdmin ||\r\n this.$store.state.authentication.claims.isInRoleKT ||\r\n this.$store.state.authentication.claims.isInRoleDistrictAdmin ||\r\n this.$store.state.authentication.claims.isInRoleDistrictUser\r\n },\r\n formatDate (date: Date) {\r\n return finnishShortDate(date)\r\n },\r\n gotoMember (member: MemberSummaryResponse) {\r\n this.$router.push(`/sections/${member.sectionId}/members/${member.id}`)\r\n }\r\n },\r\n computed: {\r\n sortedPositions () {\r\n if (!this.positions) return\r\n return this.positions\r\n .filter((x: MemberPositionSummaryResponse) => {\r\n return x.status.id === MemberPositionStatus.ACTIVE\r\n })\r\n .sort((x: MemberPositionSummaryResponse, y: MemberPositionSummaryResponse) => {\r\n return y.termEnd.getTime() - x.termEnd.getTime()\r\n })\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ActivePositionsOfTrustSummary.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ActivePositionsOfTrustSummary.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ActivePositionsOfTrustSummary.vue?vue&type=template&id=468c7c40&scoped=true\"\nimport script from \"./ActivePositionsOfTrustSummary.vue?vue&type=script&lang=ts\"\nexport * from \"./ActivePositionsOfTrustSummary.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ActivePositionsOfTrustSummary.vue?vue&type=style&index=0&id=468c7c40&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"468c7c40\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"upcomingpositionsoftrustsummary\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('section.upcomingmemberstitle')))])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"table-responsive\"},[_c('table',{staticClass:\"table table-borderless\"},[_c('caption',{staticClass:\"sr-only\"},[_vm._v(\" List of upcoming section board members \")]),_c('thead',[_c('tr',[_c('th',{attrs:{\"scope\":\"col\"}}),_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('memberposition.position'))+\" \")]),_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('memberposition.term'))+\" \")]),_c('th',{staticClass:\"d-none d-sm-table-cell\",attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('member.phone'))+\" \")]),_c('th',{staticClass:\"d-none d-md-table-cell\",attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('member.email'))+\" \")]),_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('member.status'))+\" \")])])]),_c('tbody',_vm._l((_vm.sortedPositions),function(position){return _c('tr',{key:position.id},[_c('td',{staticClass:\"d-table-cell d-md-none\",class:`status status-${position.meetingStatus.id}`,on:{\"click\":function($event){return _vm.gotoMeeting(position)}}}),_c('td',[(position.isNonMember)?_c('span',{staticClass:\"nonmember\"},[_vm._v(\" \"+_vm._s(position.nonMember.firstName)+\" \"+_vm._s(position.nonMember.lastName)+\" \")]):(position.member && position.member.hasDifferentSection && !_vm.hasAccessToOtherSections(position))?_c('span',{staticClass:\"nonmember\"},[_vm._v(_vm._s(position.member.firstName)+\" \"+_vm._s(position.member.lastName)+\" \")]):_c('span',{staticClass:\"member\",on:{\"click\":function($event){return _vm.gotoMember(position.member)}}},[_vm._v(_vm._s(position.member.firstName)+\" \"+_vm._s(position.member.lastName)+\" \")]),(position.member && position.member.hasDifferentSection)?_c('span',{staticClass:\"nonmember\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"fa-star\",\"title\":_vm.$t('memberposition.hasdifferentsection')}})],1):_vm._e(),(position.isNonMember)?_c('span',{staticClass:\"nonmember\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"user-slash\",\"title\":_vm.$t('memberposition.isnonmember')}})],1):_vm._e()]),_c('td',[_vm._v(\" \"+_vm._s(_vm.getPositionTranslation(position.positionId))+\" \")]),_c('td',[_vm._v(_vm._s(_vm.formatDate(position.termStart))+\" - \"+_vm._s(_vm.formatDate(position.termEnd)))]),_c('td',{staticClass:\"d-none d-sm-table-cell\"},[(position.isNonMember)?_c('span',[_vm._v(_vm._s(position.nonMember.phone))]):_c('span',[_vm._v(_vm._s(position.member.phone))])]),_c('td',{staticClass:\"d-none d-md-table-cell\"},[(position.isNonMember)?_c('span',[_vm._v(_vm._s(position.nonMember.email))]):_c('span',[_vm._v(_vm._s(position.member.email))])]),_c('td',{staticClass:\"d-none d-md-table-cell bigstatus\"},[_c('span',{on:{\"click\":function($event){return _vm.gotoMeeting(position)}}},[_c('MeetingStatus',{attrs:{\"status\":position.meetingStatus.id}})],1)])])}),0)])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport MeetingStatus from '@/components/meetings/MeetingStatus.vue'\r\nimport { isAddressEmpty, formatAddress } from '@/helpers/addresshelper'\r\nimport { MemberPositionSummaryResponse, AddressResponse, MemberSummaryResponse } from '@/types'\r\nimport { finnishShortDate } from '@/helpers/datehelper.ts'\r\nimport { MemberPositionStatus } from '@/types/enums'\r\n\r\nexport default Vue.extend({\r\n name: 'UpcomingPositionsOfTrustSummary',\r\n components: { MeetingStatus },\r\n props: {\r\n positions: {\r\n type: Array as () => Array,\r\n required: true\r\n }\r\n },\r\n methods: {\r\n getPositionTranslation (positionId: number) {\r\n const positionCode = 'positionId-' + positionId.toString()\r\n return this.$t(positionCode)\r\n },\r\n hasAccessToOtherSections (pos: MemberPositionSummaryResponse) {\r\n return this.$store.state.authentication.claims.isInRoleSuperAdmin ||\r\n this.$store.state.authentication.claims.isInRoleKT ||\r\n this.$store.state.authentication.claims.isInRoleDistrictAdmin ||\r\n this.$store.state.authentication.claims.isInRoleDistrictUser\r\n },\r\n formatDate (date: Date) {\r\n return finnishShortDate(date)\r\n },\r\n gotoMember (member: MemberSummaryResponse) {\r\n this.$router.push(`/sections/${member.sectionId}/members/${member.id}`)\r\n },\r\n gotoMeeting (position: MemberPositionSummaryResponse) {\r\n this.$router.push(`/sections/${position.meetingSectionId}/meetings/${position.meetingId}`)\r\n }\r\n },\r\n computed: {\r\n sortedPositions () {\r\n if (!this.positions) return\r\n return this.positions\r\n .filter((x: MemberPositionSummaryResponse) => {\r\n return x.status.id === MemberPositionStatus.ACTIVE\r\n })\r\n .sort((x: MemberPositionSummaryResponse, y: MemberPositionSummaryResponse) => {\r\n return y.termEnd.getTime() - x.termEnd.getTime()\r\n })\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpcomingPositionsOfTrustSummary.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpcomingPositionsOfTrustSummary.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UpcomingPositionsOfTrustSummary.vue?vue&type=template&id=1b1e4cf3&scoped=true\"\nimport script from \"./UpcomingPositionsOfTrustSummary.vue?vue&type=script&lang=ts\"\nexport * from \"./UpcomingPositionsOfTrustSummary.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UpcomingPositionsOfTrustSummary.vue?vue&type=style&index=0&id=1b1e4cf3&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1b1e4cf3\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport LinkIconBox from '@/components/LinkIconBox.vue'\r\nimport StatisticTile from '@/components/StatisticTile.vue'\r\nimport SectionSummary from '@/components/sections/SectionSummary.vue'\r\nimport ActivePositionsOfTrustSummary from '@/components/sections/ActivePositionsOfTrustSummary.vue'\r\nimport UpcomingPositionsOfTrustSummary from '@/components/sections/UpcomingPositionsOfTrustSummary.vue'\r\nimport { MemberPositionSummaryResponse, SectionDetailedResponse, SectionStatisticsResponse } from '@/types'\r\nimport demoNavTileImage1 from '@/assets/img/demonavtile1.png'\r\nimport demoNavTileImage2 from '@/assets/img/demonavtile2.png'\r\nimport demoNavTileImage3 from '@/assets/img/demonavtile3.png'\r\nimport { TranslateResult } from 'vue-i18n'\r\n\r\nimport { MeetingStatus, AlertTimeout } from '@/types/enums'\r\n\r\n// Just demo images, waiting for some more design guides\r\n// define dataobject for the component\r\ninterface TemplateComponentData {\r\n dataLoading: boolean,\r\n section: SectionDetailedResponse,\r\n demoImage1: unknown,\r\n demoImage2: unknown | null,\r\n demoImage3: unknown,\r\n stats: SectionStatisticsResponse\r\n}\r\nexport default Vue.extend({\r\n name: 'Section',\r\n components: {\r\n LinkIconBox,\r\n StatisticTile,\r\n SectionSummary,\r\n ActivePositionsOfTrustSummary,\r\n UpcomingPositionsOfTrustSummary\r\n },\r\n props: {\r\n sectionId: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n methods: {\r\n reportsClicked () {\r\n if (this.section !== null) {\r\n this.$router.push(`/sections/${this.section.id}/reports`)\r\n }\r\n },\r\n usersClicked () {\r\n if (this.section !== null) {\r\n // @ts-ignore - object is possibly null. No it frickin isn't.\r\n this.$router.push(`/sections/${this.section.id}/members`)\r\n }\r\n },\r\n addMeetingClicked () {\r\n if (this.section !== null) {\r\n // @ts-ignore\r\n this.$router.push(`/sections/${this.section.id}/meetings/add`)\r\n }\r\n },\r\n preparednessPlanClicked () {\r\n if (this.section !== null) {\r\n // @ts-ignore\r\n this.$router.push(`/sections/${this.section.id}/preparednessplan`)\r\n }\r\n },\r\n meetingsClicked () {\r\n if (this.section !== null) {\r\n // @ts-ignore\r\n this.$router.push(`/sections/${this.section.id}/meetings`)\r\n }\r\n },\r\n statisticClicked (name: string) {\r\n // eslint-disable-next-line no-console\r\n console.log(`${name} stat was clicked`)\r\n },\r\n resetSectionSummary () {\r\n this.loadSection()\r\n },\r\n loadSection () {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n const userSectionId = Number(this.sectionId)\r\n // load the detailed section info and stats into the store\r\n const promises = [\r\n this.$store.dispatch('sections/getSectionStatistics', userSectionId),\r\n this.$store.dispatch('sections/loadDetailed', userSectionId)\r\n ]\r\n\r\n Promise.all(promises)\r\n .then(results => {\r\n this.stats = this.$store.state.sections.sectionStatistics\r\n this.section = this.$store.state.sections.selectedSection\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n })\r\n .catch((err: any) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('error'), surviveRouteChange: true })\r\n })\r\n }\r\n },\r\n data (): TemplateComponentData {\r\n return {\r\n section: {} as SectionDetailedResponse,\r\n demoImage1: demoNavTileImage1,\r\n demoImage2: demoNavTileImage2,\r\n demoImage3: demoNavTileImage3,\r\n stats: {\r\n totalMembers: 0,\r\n paidMembers: 0,\r\n newMembers: 0\r\n } as SectionStatisticsResponse,\r\n dataLoading: false\r\n } as TemplateComponentData\r\n },\r\n mounted () {\r\n this.loadSection()\r\n },\r\n computed: {\r\n isSectionEditAccess (): boolean {\r\n return false // Section can be edited only in the CRM! (CRM 2.x)\r\n },\r\n isSectionBasicAccess (): boolean {\r\n // Can only view the section they are in\r\n return (\r\n this.$store.state.authentication.claims.isInRoleSuperAdmin ||\r\n this.$store.state.authentication.claims.isInRoleKT ||\r\n this.$store.state.authentication.claims.isInRoleDistrictAdmin ||\r\n this.$store.state.authentication.claims.isInRoleDistrictUser ||\r\n this.$store.state.authentication.claims.isInRoleSectionAdmin ||\r\n this.$store.state.authentication.claims.isInRoleSectionUser\r\n )\r\n },\r\n isSectionReport (): boolean {\r\n return false // Disabled for now #6129. Replace isSectionReport with isSectionBasicAccess once enabling!\r\n },\r\n isCreateMeetingAccess (): boolean {\r\n return this.$store.state.authentication.claims.isInRoleSectionAdmin\r\n },\r\n activePositionsOfTrust (): Array {\r\n return this.section.positionsOfTrust.filter(x => {\r\n return x.termStart < new Date() && x.meetingStatus.id === MeetingStatus.APPROVED\r\n })\r\n },\r\n upcomingPositionsOfTrust (): Array {\r\n return this.section.positionsOfTrust.filter(x => {\r\n return x.termStart > new Date()\r\n })\r\n },\r\n statSectionTotalMembersValue (): number {\r\n return this.stats.totalMembers\r\n },\r\n statSectionTotalMembersText (): TranslateResult {\r\n return this.$t('stats.sectiontotalmembers')\r\n },\r\n statSectionPaidMembersValue (): number {\r\n return this.stats.paidMembers\r\n },\r\n statSectionPaidMembersText (): TranslateResult {\r\n return this.$t('stats.paidmembers')\r\n },\r\n statSectionNewMembersValue (): number {\r\n return this.stats.newMembers\r\n },\r\n statSectionNewMembersText (): TranslateResult {\r\n return this.$t('stats.newmembers')\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Section.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Section.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Section.vue?vue&type=template&id=29bf864a&scoped=true\"\nimport script from \"./Section.vue?vue&type=script&lang=ts\"\nexport * from \"./Section.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Section.vue?vue&type=style&index=0&id=29bf864a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"29bf864a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"preparednessplan\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 backlink\"},[_c('Back')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-10\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('preparednessplan.title'))+\" - \"+_vm._s(_vm.section.name))])])]),_c('div',{staticClass:\"row preparedness\"},[_c('div',{staticClass:\"col-12\"},[_c('PreparednessPlan',{ref:\"preparednessPlan\",attrs:{\"section-id\":Number(_vm.sectionId),\"has-plan\":_vm.hasPlan,\"created\":_vm.planCreatedDate},on:{\"file-uploaded\":_vm.onPreparednessPlanUploaded,\"fill-preparedness\":_vm.onFillPreparednessPlan,\"attachment-uploaded\":_vm.onAttachmentUploaded,\"download-preparedness\":_vm.onPreparednessPlanDownload}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"upcomingpositionsoftrustsummary\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-9\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('section.preparedness')))])]),_c('div',{staticClass:\"col-3 expiration\"},[(_vm.hasPlan)?_c('div',[_vm._v(\" \"+_vm._s(_vm.$t('section.expiration'))+\" \"+_vm._s(_vm.formattedExpirationDate)+\" \")]):_vm._e()])]),_c('div',{staticClass:\"row margin\"},[_c('div',{staticClass:\"col-md-4 d-flex justify-content-center\"},[_c('sprbutton',{attrs:{\"compact\":\"\",\"primary\":\"\",\"text\":_vm.$t('fillPreparednessPlan')},on:{\"click\":_vm.fillPreparednessClicked}})],1),_c('div',{staticClass:\"col-md-4 d-flex justify-content-center\"},[_c('sprbutton',{staticClass:\"action\",attrs:{\"compact\":\"\",\"primary\":\"\",\"text\":_vm.$t('uploadPreparednessPlan')},on:{\"click\":_vm.triggerFileInput}})],1),_c('div',{staticClass:\"col-md-4 d-flex justify-content-center\"},[(_vm.hasPlan)?_c('sprbutton',{attrs:{\"compact\":\"\",\"primary\":\"\",\"text\":_vm.$t('viewPreparednessPlan')},on:{\"click\":_vm.viewPreparednessClicked}}):_vm._e()],1)]),_c('input',{ref:\"fileInput\",staticClass:\"form-control-file\",class:{ 'has-error': _vm.hasError },staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\",\"aria-label\":''},on:{\"change\":_vm.onFileChange}}),_c('hr',{staticClass:\"separator\"}),_c('div',{staticClass:\"preparedness-plan\"},[_c('div',{staticClass:\"col-12 header\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('preparednessPlan.attachments')))]),_c('sprbutton',{staticClass:\"action\",attrs:{\"compact\":\"\",\"primary\":\"\",\"text\":_vm.$t('uploadPreparednessPlanAttachment'),\"disabled\":_vm.maximumAttachmentsReached,\"title\":_vm.maximumAttachmentsReached ? _vm.$t('preparednessPlan.maxAttachmentsReached') : ''},on:{\"click\":_vm.triggerAttachmentInput}})],1)]),_c('div',{staticClass:\"attachment-list\"},_vm._l((_vm.attachments),function(attachment){return _c('div',{key:attachment.id,staticClass:\"attachment-item\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.downloadAttachment(attachment.url, attachment.name)}}},[_vm._v(_vm._s(attachment.name))]),_c('font-awesome-icon',{staticClass:\"delete-icon\",attrs:{\"icon\":\"trash-alt\"},on:{\"click\":function($event){return _vm.deleteAttachment(attachment.id, attachment.name)}}})],1)}),0),_c('input',{ref:\"attachmentInput\",staticClass:\"form-control-file\",class:{ 'has-error': _vm.hasError },staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\",\"aria-label\":''},on:{\"change\":_vm.onAttachmentChange}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport moment from 'moment'\r\n\r\nimport sprbutton from '@/components/forms/SprButton.vue'\r\nimport { PreparednessPlanDocumentResponse } from '@/types'\r\n\r\nimport { preparednessPlanService } from '@/services/preparednessPlan.service'\r\n\r\ninterface TemplateComponentData {\r\n attachments: PreparednessPlanDocumentResponse[]\r\n}\r\nexport default Vue.extend({\r\n name: 'PreparednessPlan',\r\n components: { sprbutton },\r\n props: {\r\n hasError: {\r\n type: Boolean,\r\n default: false\r\n },\r\n sectionId: {\r\n type: Number,\r\n required: true\r\n },\r\n hasPlan: {\r\n type: Boolean,\r\n default: false\r\n },\r\n created: {\r\n type: Date,\r\n default: new Date()\r\n }\r\n },\r\n data (): TemplateComponentData {\r\n return {\r\n attachments: []\r\n } as TemplateComponentData\r\n },\r\n mounted () {\r\n this.getAttachments(this.sectionId)\r\n },\r\n computed: {\r\n maximumAttachmentsReached (): boolean {\r\n return this.attachments.length >= 20\r\n },\r\n formattedExpirationDate (): string {\r\n if (this.hasPlan) {\r\n return this.created ? moment(this.created).add(36, 'months').format('DD.MM.YYYY') : ''\r\n } else {\r\n return ''\r\n }\r\n }\r\n },\r\n methods: {\r\n fillPreparednessClicked (): void {\r\n this.$emit('fill-preparedness')\r\n },\r\n deleteAttachment (id: number, name: string) {\r\n // Implement your deletion logic here\r\n if (confirm(this.$t('preparednessplan.removeattachmentconfirm').toString().replace('{0}', name))) {\r\n preparednessPlanService.deletePreparednessPlan(id).then(success => {\r\n if (success) {\r\n this.$store.dispatch('alert/success', { message: this.$t('preparednessPlan.deleteSuccess') })\r\n this.getAttachments(this.sectionId)\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('preparednessPlan.deleteFailed') })\r\n }\r\n }, (err) => {\r\n // eslint-disable-next-line no-console\r\n this.$store.dispatch('alert/error', { message: this.$t('preparednessPlan.deleteFailed') })\r\n\r\n console.log(err)\r\n })\r\n }\r\n },\r\n getAttachments (id: number): void {\r\n console.log('we are here now with id:', id)\r\n preparednessPlanService.getAttachmentsById(id).then(result => {\r\n this.attachments = result\r\n }).catch((err: Error) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('report.failed') })\r\n })\r\n },\r\n async downloadAttachment (url: string, name: string) {\r\n try {\r\n const response = await fetch(url, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/octet-stream'\r\n }\r\n })\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`)\r\n }\r\n\r\n const blob = await response.blob()\r\n const link = document.createElement('a')\r\n link.href = URL.createObjectURL(blob)\r\n link.download = name\r\n document.body.appendChild(link)\r\n link.click()\r\n document.body.removeChild(link)\r\n URL.revokeObjectURL(link.href)\r\n } catch (error) {\r\n console.error('Error downloading the file', error)\r\n this.$store.dispatch('alert/error', { message: this.$t('report.failed') })\r\n }\r\n },\r\n triggerFileInput () {\r\n const fileInput = this.$refs.fileInput as HTMLInputElement\r\n if (fileInput) {\r\n fileInput.click()\r\n }\r\n },\r\n triggerAttachmentInput () {\r\n const attachmentInput = this.$refs.attachmentInput as HTMLInputElement\r\n if (attachmentInput) {\r\n attachmentInput.click()\r\n }\r\n },\r\n viewPreparednessClicked (): void {\r\n this.$emit('download-preparedness')\r\n },\r\n onFileChange (e: Event) {\r\n const target = e.target as HTMLInputElement\r\n if (!target || !target.files) return\r\n const files = target.files\r\n if (!files.length) return\r\n this.$emit('file-uploaded', files[0])\r\n target.files = null\r\n target.value = ''\r\n },\r\n onAttachmentChange (e: Event) {\r\n const target = e.target as HTMLInputElement\r\n if (!target || !target.files) return\r\n const files = target.files\r\n if (!files.length) return\r\n this.$emit('attachment-uploaded', files[0])\r\n target.files = null\r\n target.value = ''\r\n this.getAttachments(this.sectionId)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PreparednessPlan.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PreparednessPlan.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PreparednessPlan.vue?vue&type=template&id=4d033289&scoped=true\"\nimport script from \"./PreparednessPlan.vue?vue&type=script&lang=ts\"\nexport * from \"./PreparednessPlan.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PreparednessPlan.vue?vue&type=style&index=0&id=4d033289&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4d033289\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport { SectionDetailedResponse, PreparednessPlanDocumentRequest, PreparednessPlanDocumentResponse } from '@/types'\r\nimport { AlertTimeout } from '@/types/enums'\r\nimport PreparednessPlan from '@/components/sections/PreparednessPlan.vue'\r\nimport Back from '@/components/Back.vue'\r\n\r\nimport { preparednessPlanService } from '@/services/preparednessPlan.service'\r\n\r\ninterface TemplateComponentData {\r\n dataLoading: boolean,\r\n preparednessPlanUrl: string,\r\n request: PreparednessPlanDocumentResponse,\r\n section: SectionDetailedResponse,\r\n planCreatedDate: Date\r\n}\r\n// Just demo images, waiting for some more design guides\r\n\r\nexport default Vue.extend({\r\n name: 'Section',\r\n components: {\r\n PreparednessPlan,\r\n Back\r\n },\r\n props: {\r\n sectionId: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n data (): TemplateComponentData {\r\n return {\r\n section: {} as SectionDetailedResponse,\r\n preparednessPlanUrl: '',\r\n planCreatedDate: new Date(),\r\n dataLoading: false,\r\n request: {} as PreparednessPlanDocumentResponse\r\n } as TemplateComponentData\r\n },\r\n mounted () {\r\n this.loadSection()\r\n this.getPreparednessPlanRequest(Number(this.sectionId))\r\n },\r\n computed: {\r\n hasPlan (): boolean {\r\n return !!this.preparednessPlanUrl\r\n }\r\n },\r\n methods: {\r\n onPreparednessPlanUploaded (file: File | null) {\r\n if (file) {\r\n this.readFile(file, false)\r\n }\r\n },\r\n onAttachmentUploaded (file: File | null) {\r\n if (file) {\r\n this.readFile(file, true)\r\n }\r\n },\r\n onFillPreparednessPlan (): void {\r\n // this will open the preparedness plan form, which is a kobotoolbox form\r\n // we need to know the url of the form and the section id, so we can fill in the form\r\n this.$store.dispatch('preparednessPlan/fillPreparednessPlan', this.sectionId).then(s => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n const url = this.$store.state.preparednessPlan.filledUrl\r\n if (url) {\r\n window.open(url, '_blank')\r\n }\r\n })\r\n },\r\n async onPreparednessPlanDownload () {\r\n if (!this.preparednessPlanUrl) {\r\n await this.getPreparednessPlanRequest(Number(this.sectionId))\r\n window.open(this.request.url)\r\n }\r\n window.open(this.request.url)\r\n },\r\n readFile (file: File, isAttachment: boolean) {\r\n const reader = new FileReader()\r\n this.dataLoading = true\r\n reader.onload = (readerEvt: ProgressEvent) => {\r\n const raw = reader.result as string\r\n // var base64 = btoa(binaryString);\r\n this.processUploadedFile(file.name, file.type, raw, isAttachment).then(success => {\r\n if (success) {\r\n // reload with the file\r\n this.$store.dispatch('alert/success', { message: this.$t('officialletterrequest.uploadsuccess') })\r\n this.getPreparednessPlanRequest(Number(this.sectionId))\r\n const preparednessPlan = this.$refs.preparednessPlan as Vue & { getAttachments: (id: number) => void }\r\n preparednessPlan.getAttachments(Number(this.sectionId))\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.uploadfailed') })\r\n this.dataLoading = false\r\n }\r\n }).catch(err => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.uploadfailed') })\r\n this.dataLoading = false\r\n })\r\n }\r\n\r\n reader.readAsBinaryString(file)\r\n },\r\n processUploadedFile (name: string, type: string, rawString: string | null, isAttachment: boolean): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (!rawString) reject(new Error('No file.'))\r\n const doc: PreparednessPlanDocumentRequest = {\r\n name: name,\r\n // @ts-ignore-next-line\r\n sectionId: this.sectionId || null,\r\n blob: rawString ? btoa(rawString) : '',\r\n fileType: type,\r\n attachment: isAttachment\r\n\r\n }\r\n\r\n if (doc.name.length > 800) {\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.uploadnametoolarge') })\r\n reject(new Error('File length too long'))\r\n }\r\n\r\n if (doc.fileType.length > 255) {\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.removedocumentfailed') })\r\n reject(new Error('File type too long'))\r\n }\r\n if (isAttachment) {\r\n preparednessPlanService.uploadPreparednessPlan(doc).then(success => {\r\n if (success) {\r\n resolve(success)\r\n } else {\r\n reject(success)\r\n }\r\n }, (err) => {\r\n // eslint-disable-next-line no-console\r\n reject(err)\r\n })\r\n } else {\r\n preparednessPlanService.uploadPreparednessPlan(doc).then(success => {\r\n if (success) {\r\n resolve(success)\r\n } else {\r\n reject(success)\r\n }\r\n }, (err) => {\r\n // eslint-disable-next-line no-console\r\n reject(err)\r\n })\r\n }\r\n })\r\n },\r\n getPreparednessPlanRequest: function (id: number) {\r\n this.dataLoading = true\r\n preparednessPlanService.getPreparednessPlansById(id).then(result => {\r\n this.request = result\r\n this.preparednessPlanUrl = this.request.url\r\n this.planCreatedDate = this.request.created ? new Date(this.request.created) : new Date()\r\n this.dataLoading = false\r\n }).catch((err: Error) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.dataLoading = false\r\n this.$store.dispatch('alert/error', { message: this.$t('report.failed') })\r\n })\r\n },\r\n loadSection () {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n const userSectionId = Number(this.sectionId)\r\n\r\n // load the detailed section info\r\n this.$store.dispatch('sections/loadDetailed', userSectionId)\r\n .then(results => {\r\n this.section = this.$store.state.sections.selectedSection\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n })\r\n .catch((err: any) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('error'), surviveRouteChange: true })\r\n })\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PreparednessPlan.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PreparednessPlan.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PreparednessPlan.vue?vue&type=template&id=a5580454&scoped=true\"\nimport script from \"./PreparednessPlan.vue?vue&type=script&lang=ts\"\nexport * from \"./PreparednessPlan.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PreparednessPlan.vue?vue&type=style&index=0&id=a5580454&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a5580454\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"members\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 backlink\"},[_c('Back')],1)]),_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('members')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6 col-md-4\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormText',{attrs:{\"value\":_vm.filter.name,\"label\":_vm.$t('memberfilter.name'),\"name\":\"memberfilter_name\"},on:{\"input\":_vm.onNameSelected}})],1)])]),(_vm.memberSearchResult)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('MembersList',{attrs:{\"value\":_vm.memberSearchResult.results,\"list-type\":\"MemberLightResponse\"}})],1),_c('div',{staticClass:\"col-12\"},[(_vm.memberSearchResult && _vm.memberSearchResult.total)?_c('Pager',{attrs:{\"skip\":_vm.memberSearchResult.skip,\"take\":_vm.memberSearchResult.take,\"total\":_vm.memberSearchResult.total},on:{\"pageToStart\":_vm.pageToStart,\"pageToEnd\":_vm.pageToEnd,\"pageBack\":_vm.pageBack,\"pageForward\":_vm.pageForward}}):_vm._e()],1)]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport Back from '@/components/Back.vue'\r\nimport MembersList from '@/components/members/MembersList.vue'\r\nimport SprFormText from '@/components/forms/SprFormText.vue'\r\nimport Pager from '@/components/Pager.vue'\r\nimport debounce from 'debounce'\r\nimport { PagedListResponse, BaseFindMemberRequest, MemberLightResponse } from '@/types'\r\nimport { membersService } from '@/services/member.service'\r\n\r\nexport default Vue.extend({\r\n name: 'Members',\r\n components: {\r\n Back,\r\n MembersList,\r\n SprFormText,\r\n Pager\r\n },\r\n props: {\r\n sectionId: {\r\n type: String,\r\n default: '0'\r\n }\r\n },\r\n data () {\r\n return {\r\n memberSearchResult: undefined as undefined | PagedListResponse,\r\n filter: { // the actual filter passed to the back end\r\n name: '',\r\n skip: 0,\r\n take: 50\r\n } as BaseFindMemberRequest,\r\n abortController: undefined as undefined | AbortController\r\n }\r\n },\r\n computed: {\r\n debouncedMemberSearch (): Function {\r\n return debounce(this.getMembers, 800)\r\n }\r\n },\r\n methods: {\r\n getMembers (): void {\r\n // if there is currently a request going on, abort it\r\n if (this.abortController && !this.abortController.signal.aborted) {\r\n this.abortController.abort()\r\n }\r\n this.abortController = new AbortController()\r\n\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n membersService.findAll(this.filter, this.abortController.signal).then((results: PagedListResponse) => {\r\n this.memberSearchResult = results\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n }, (err: Error) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n if (err.name !== 'AbortError') { // do not show error message if its just an abort\r\n this.$store.dispatch('alert/error', { message: this.$t('members.findfailed') })\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n }\r\n }).catch(err => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('members.findfailed') })\r\n })\r\n },\r\n onNameSelected (filterstr: string): void {\r\n this.filter.name = filterstr\r\n this.debouncedMemberSearch()\r\n },\r\n pageToStart (): void {\r\n this.filter.skip = 0\r\n this.getMembers()\r\n },\r\n pageBack (): void {\r\n // @ts-ignore\r\n this.filter.skip -= this.filter.take\r\n this.getMembers()\r\n },\r\n pageForward (): void {\r\n // @ts-ignore\r\n this.filter.skip += this.filter.take\r\n this.getMembers()\r\n },\r\n pageToEnd (): void {\r\n if (this.memberSearchResult) {\r\n // @ts-ignore\r\n this.filter.skip = Math.floor(this.memberSearchResult.total / this.filter.take) * this.filter.take\r\n this.getMembers()\r\n }\r\n }\r\n },\r\n created (this: any): void {\r\n this.getMembers()\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Members.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Members.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Members.vue?vue&type=template&id=17c0d4d8&scoped=true\"\nimport script from \"./Members.vue?vue&type=script&lang=ts\"\nexport * from \"./Members.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Members.vue?vue&type=style&index=0&id=17c0d4d8&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17c0d4d8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"members\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 backlink\"},[_c('Back')],1)]),_c('div',[_c('div',{staticClass:\"flexcontainer comp-horizontal-navigation\"},[_c('div',{class:{'listvisible': _vm.memberListVisible, 'flexitem opt': true},on:{\"click\":_vm.sectionMembersClicked}},[_vm._v(\" \"+_vm._s(_vm.$t('members'))+\" \")]),(_vm.isSectionAdminAndAbove)?_c('div',{class:{'listvisible': _vm.memberRolesVisible, 'flexitem opt': true},on:{\"click\":_vm.sectionRolesClicked}},[_vm._v(\" \"+_vm._s(_vm.$t('sectionMemberRoles'))+\" \")]):_vm._e()]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 flexcontainer header-margin\"},[_c('div',{staticClass:\"align-end\"},[_c('h3',[_vm._v(\" \"+_vm._s(_vm.sectionname)+\" \")])]),(_vm.isSectionAdminAndAbove && _vm.memberListVisible)?_c('div',{staticClass:\"inline-button justify-end\"},[(_vm.isSectionAdminAndAbove)?_c('SprButton',{attrs:{\"compact\":\"\",\"primary\":\"\",\"text\":_vm.$t('sectionmembers.export'),\"disabled\":!_vm.canExport},on:{\"click\":function($event){return _vm.onExport(_vm.filter)}}}):_vm._e()],1):_vm._e()])]),(_vm.memberListVisible)?_c('div',[_c('SectionMembersList',{attrs:{\"section-id\":_vm.sectionId,\"mode\":\"section\"},on:{\"members-updated\":_vm.handleMembersUpdated}})],1):_vm._e(),(_vm.memberRolesVisible && _vm.isSectionAdminAndAbove)?_c('div',[_c('div',{staticClass:\"flexcontainer vertical\"},[_c('SectionRolesList',{attrs:{\"section-id\":_vm.sectionId}})],1)]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"rolesList\"},[(_vm.noResults)?_c('div',{staticClass:\"noResults\"},[_vm._v(\" \"+_vm._s(_vm.$t('memberfilter.noresults'))+\" \")]):_c('div',{staticClass:\"flexcontainer vertical\"},_vm._l((_vm.sectionMemberRoles.sectionRoles),function(roleItem){return _c('div',{key:roleItem.memberId,staticClass:\"flexitem\"},[_c('SectionRoleItem',{attrs:{\"role-item\":roleItem}})],1)}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { SectionActiveRoles } from '@/types'\r\nimport SectionRoleItem from '@/components/sections/SectionRoleItem.vue'\r\n\r\nexport default Vue.extend({\r\n name: 'SectionRolesList',\r\n components: { SectionRoleItem },\r\n props: {\r\n sectionId: {\r\n type: String,\r\n required: true,\r\n default: null\r\n }\r\n },\r\n data () {\r\n return {\r\n sectionMemberRoles: {\r\n sectionExist: false,\r\n sectionId: -1,\r\n sectionName: 'Must be fetched!'\r\n } as SectionActiveRoles\r\n }\r\n },\r\n computed: {\r\n noResults (): boolean {\r\n return !this.sectionMemberRoles || !this.sectionMemberRoles.sectionRoles || this.sectionMemberRoles.sectionRoles.length === 0\r\n },\r\n sectionName (): undefined | string {\r\n if (this.sectionMemberRoles != null) {\r\n return this.sectionMemberRoles.sectionName\r\n }\r\n return ''\r\n }\r\n },\r\n created () {\r\n const sectionId = Number(this.sectionId)\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n this.$store.dispatch('sections/getSectionRoles', sectionId).then(s => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.sectionMemberRoles = this.$store.state.sections.sectionRoles\r\n }).catch(err => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('members.findfailed') })\r\n this.sectionMemberRoles = {\r\n sectionExist: false,\r\n sectionId: -1,\r\n sectionName: 'Must be fetched!'\r\n } as SectionActiveRoles\r\n })\r\n }\r\n})\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionRolesList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionRolesList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SectionRolesList.vue?vue&type=template&id=7f33e350&scoped=true\"\nimport script from \"./SectionRolesList.vue?vue&type=script&lang=ts\"\nexport * from \"./SectionRolesList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SectionRolesList.vue?vue&type=style&index=0&id=7f33e350&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7f33e350\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('MemberSearchCriteria',{attrs:{\"mode\":_vm.mode,\"search-criteria\":_vm.searchCriteria,\"membership-statuses\":_vm.membershipStatuses},on:{\"input\":_vm.onMemberFilterChanged,\"reset\":_vm.onMemberFilterReset}})],1)]),_vm._m(0),(_vm.memberSearchResult)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('MembersList',{attrs:{\"mode\":_vm.mode,\"section-id\":_vm.sectionId,\"search-criteria\":_vm.searchCriteria,\"value\":_vm.memberSearchResult.results}})],1),_c('div',{staticClass:\"col-12\"},[(_vm.memberSearchResult && _vm.memberSearchResult.total)?_c('Pager',{attrs:{\"skip\":_vm.memberSearchResult.skip,\"take\":_vm.memberSearchResult.take,\"total\":_vm.memberSearchResult.total},on:{\"pageToStart\":_vm.pageToStart,\"pageToEnd\":_vm.pageToEnd,\"pageBack\":_vm.pageBack,\"pageForward\":_vm.pageForward}}):_vm._e()],1)]):_vm._e()])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"resultseparator\"},[_c('hr')])\n}]\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { debounce } from 'debounce'\r\nimport MemberSearchCriteria from '@/components/members/MemberSearchCriteria.vue'\r\nimport { PagedListResponse, FindMemberRequest, MemberSummaryResponse, SectionActiveRoles } from '@/types'\r\nimport MembersList from '@/components/members/MembersList.vue'\r\nimport { MemberFilter as SearchCriteria } from '@/types/custom'\r\nimport { MembershipStatus } from '@/types/enums'\r\nimport Pager from '@/components/Pager.vue'\r\n\r\nexport default Vue.extend({\r\n name: 'SectionMembersList',\r\n components: {\r\n MemberSearchCriteria,\r\n MembersList,\r\n Pager\r\n },\r\n props: {\r\n sectionId: {\r\n type: String,\r\n default: '0'\r\n },\r\n mode: {\r\n type: String,\r\n default: 'section'\r\n }\r\n },\r\n data () {\r\n return {\r\n sectionMemberRoles: undefined as undefined | SectionActiveRoles,\r\n searchCriteria: { // Export Criteria - must be kept in sync with the Filter!\r\n name: '',\r\n approved: undefined,\r\n hasMembership: undefined,\r\n membershipStatus: MembershipStatus.ACTIVE,\r\n extraMembershipStatuses: [MembershipStatus.NEW]\r\n } as SearchCriteria,\r\n memberSearchResult: undefined as undefined | PagedListResponse,\r\n filter: { // the actual filter passed to the back end\r\n sections: [\r\n Number(this.sectionId)\r\n ],\r\n includeMemberPositions: true,\r\n name: '',\r\n districts: [],\r\n hasCurrentMembership: undefined,\r\n isMembershipApproved: undefined,\r\n membershipStatuses: [MembershipStatus.ACTIVE],\r\n membershipTypes: [],\r\n statuses: [],\r\n skip: 0,\r\n take: 50\r\n } as FindMemberRequest\r\n\r\n }\r\n },\r\n created () {\r\n this.getMembers()\r\n },\r\n computed: {\r\n sectionName (): undefined | string {\r\n if (this.sectionMemberRoles != null) {\r\n return this.sectionMemberRoles.sectionName\r\n }\r\n return ''\r\n },\r\n membershipStatuses (): Array {\r\n return [\r\n MembershipStatus.ACTIVE,\r\n MembershipStatus.NEW\r\n ]\r\n },\r\n debouncedMemberSearch (): Function {\r\n return debounce(this.getMembers, 800)\r\n },\r\n memberFilter (): SearchCriteria { // the filter object passed to the memberFilter\r\n return { // @ts-ignore\r\n name: this.filter.name, // @ts-ignore\r\n approved: this.filter.isMembershipApproved, // @ts-ignore\r\n hasMembership: this.filter.hasCurrentMembership, // @ts-ignore\r\n membershipStatus: this.filter.membershipStatuses.length ? this.filter.membershipStatuses[0] : undefined\r\n } as SearchCriteria\r\n }\r\n },\r\n methods: {\r\n getMemberRoles (): void {\r\n const sectionId = Number(this.sectionId)\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n this.$store.dispatch('sections/getSectionRoles', sectionId).then(s => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.sectionMemberRoles = this.$store.state.sections.sectionRoles\r\n }).catch(err => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('members.findfailed') })\r\n })\r\n },\r\n getMembers (): void {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n this.$store.dispatch('members/findSectionMembers', this.filter).then(s => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$emit('members-updated', this.$store.state.members.filteredMembers.results, this.filter)\r\n this.memberSearchResult = this.$store.state.members.filteredMembers\r\n }).catch(err => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('members.findfailed') })\r\n })\r\n },\r\n pageToStart (): void {\r\n this.filter.skip = 0\r\n this.getMembers()\r\n },\r\n pageBack (): void {\r\n // @ts-ignore\r\n this.filter.skip -= this.filter.take\r\n this.getMembers()\r\n },\r\n pageForward (): void {\r\n // @ts-ignore\r\n this.filter.skip += this.filter.take\r\n this.getMembers()\r\n },\r\n pageToEnd (): void {\r\n if (this.memberSearchResult) {\r\n // @ts-ignore\r\n this.filter.skip = Math.floor(this.memberSearchResult.total / this.filter.take) * this.filter.take\r\n this.getMembers()\r\n }\r\n },\r\n onMemberFilterChanged (memberFilter: SearchCriteria) {\r\n this.$set(this.filter, 'name', memberFilter.name)\r\n this.$set(this.filter, 'hasCurrentMembership', memberFilter.hasMembership)\r\n if (memberFilter.membershipStatus === 0) {\r\n this.$set(this.filter, 'membershipStatuses', [])\r\n } else {\r\n this.$set(this.filter, 'membershipStatuses', [memberFilter.membershipStatus])\r\n }\r\n\r\n // Need to keep Filter and SearchCriteria in sync! Filter = MemberFind, SearchCriteria = MemberExport\r\n this.searchCriteria.name = memberFilter.name\r\n this.searchCriteria.approved = memberFilter.approved\r\n this.searchCriteria.hasMembership = memberFilter.hasMembership\r\n this.searchCriteria.membershipStatus = memberFilter.membershipStatus\r\n this.debouncedMemberSearch()\r\n },\r\n onMemberFilterReset () {\r\n this.searchCriteria.name = ''\r\n this.searchCriteria.approved = undefined\r\n this.searchCriteria.hasMembership = undefined // Kaikki\r\n this.searchCriteria.membershipStatus = MembershipStatus.ACTIVE\r\n this.searchCriteria.extraMembershipStatuses = [MembershipStatus.NEW] // Handle OR type MembershipStatuses (MultiMembershipStatus)\r\n this.filter.membershipStatuses = []\r\n this.filter.membershipTypes = []\r\n this.filter.statuses = []\r\n this.filter.take = 50\r\n this.updateFilter(this.searchCriteria)\r\n },\r\n updateFilter (memberSearchCriteria: SearchCriteria) {\r\n this.$set(this.filter, 'name', memberSearchCriteria.name)\r\n this.$set(this.filter, 'hasCurrentMembership', memberSearchCriteria.hasMembership)\r\n this.$set(this.filter, 'isMembershipApproved', memberSearchCriteria.approved)\r\n if (memberSearchCriteria.membershipStatus === 0) {\r\n this.$set(this.filter, 'membershipStatuses', [])\r\n } else {\r\n this.$set(this.filter, 'membershipStatuses', [memberSearchCriteria.membershipStatus])\r\n }\r\n this.$set(this.filter, 'membershipStatuses', [memberSearchCriteria.membershipStatus])\r\n this.$set(this.filter, 'skip', 0)\r\n // Need to keep Filter and SearchCriteria in sync! Filter = MemberFind, SearchCriteria = MemberExport\r\n this.searchCriteria.name = memberSearchCriteria.name\r\n this.searchCriteria.approved = memberSearchCriteria.approved\r\n this.searchCriteria.hasMembership = memberSearchCriteria.hasMembership\r\n this.searchCriteria.membershipStatus = memberSearchCriteria.membershipStatus\r\n this.getMembers()\r\n }\r\n }\r\n})\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionMembersList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionMembersList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SectionMembersList.vue?vue&type=template&id=b6e58b4e&scoped=true\"\nimport script from \"./SectionMembersList.vue?vue&type=script&lang=ts\"\nexport * from \"./SectionMembersList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SectionMembersList.vue?vue&type=style&index=0&id=b6e58b4e&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b6e58b4e\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport Back from '@/components/Back.vue'\r\nimport { SectionSummaryResponse, SectionActiveRoles, FindMemberRequest } from '@/types'\r\nimport SectionRolesList from '@/components/sections/SectionRolesList.vue'\r\nimport SectionMembersList from '@/components/sections/SectionMembersList.vue'\r\nimport { MembershipStatus } from '@/types/enums'\r\nimport SprButton from '@/components/forms/SprButton.vue'\r\nimport ExcelJS from 'exceljs'\r\nexport default Vue.extend({\r\n\r\n name: 'SectionMembers',\r\n components: {\r\n Back,\r\n SectionRolesList,\r\n SectionMembersList,\r\n SprButton\r\n },\r\n props: {\r\n sectionId: {\r\n type: String,\r\n default: '0'\r\n }\r\n },\r\n data () {\r\n return {\r\n membersList: [],\r\n memberRolesVisible: false,\r\n memberListVisible: true,\r\n filter: { // the actual filter passed to the back end\r\n sections: [\r\n Number(this.sectionId)\r\n ],\r\n includeMemberPositions: true,\r\n name: '',\r\n districts: [],\r\n hasCurrentMembership: undefined,\r\n isMembershipApproved: undefined,\r\n membershipStatuses: [MembershipStatus.ACTIVE],\r\n membershipTypes: [],\r\n statuses: [],\r\n skip: 0,\r\n take: 0\r\n } as FindMemberRequest\r\n }\r\n },\r\n computed: {\r\n canExport (): boolean {\r\n return this.membersList.length > 0\r\n },\r\n sectionname (): string {\r\n if (this.$store.state.sections.sectionsLoaded) {\r\n const section = this.$store.state.sections.all.find((x: SectionSummaryResponse) => x.id === Number(this.sectionId))\r\n return section ? section.name : ''\r\n }\r\n return ''\r\n },\r\n isSectionAdminAndAbove (): boolean {\r\n const claims = this.$store.state.authentication.claims\r\n return claims.isInRoleSuperAdmin ||\r\n claims.isInRoleKT ||\r\n claims.isInRoleDistrictAdmin ||\r\n claims.isInRoleSectionAdmin\r\n }\r\n },\r\n methods: {\r\n handleMembersUpdated (updatedMembersList: any, filter: any) {\r\n this.membersList = updatedMembersList\r\n this.filter = filter\r\n },\r\n sectionRolesClicked () {\r\n this.swapTab('memberroles')\r\n // this.$router.push(`/sections/${this.sectionId}/roles`)\r\n },\r\n sectionMembersClicked () {\r\n this.swapTab('memberlist')\r\n },\r\n swapTab (tabname: string): void {\r\n this.memberListVisible = tabname === 'memberlist'\r\n this.memberRolesVisible = tabname === 'memberroles'\r\n },\r\n onExport (filter: any) {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n const unpagedFilter = filter\r\n unpagedFilter.take = 0\r\n unpagedFilter.skip = 0\r\n this.$store.dispatch('members/getAllSectionMembers', unpagedFilter).then(s => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n const memberSearchResult = this.$store.state.members?.filteredMembers\r\n if (!memberSearchResult || !memberSearchResult.results || memberSearchResult.results === 0) return null\r\n\r\n const workbook = new ExcelJS.Workbook()\r\n\r\n // Add a worksheet to the workbook\r\n const worksheet = workbook.addWorksheet('Members')\r\n\r\n // Define the column headers\r\n worksheet.columns = [\r\n { header: 'FirstName', key: 'firstName', width: 20 },\r\n { header: 'LastName', key: 'lastName', width: 20 },\r\n { header: 'Email', key: 'email', width: 30 },\r\n { header: 'Address 1', key: 'address1', width: 20 },\r\n { header: 'Address 2', key: 'address2', width: 20 },\r\n { header: 'City', key: 'city', width: 20 },\r\n { header: 'Postal Code', key: 'postalCode', width: 20, style: { numFmt: '@' } }, // Set the column as text\r\n { header: 'Country', key: 'country', width: 20 },\r\n { header: 'Payment Date', key: 'paymentdate', width: 20, style: { numFmt: 'dd.MM.yyyy' } }, // Set the date format\r\n { header: 'MemberId', key: 'memberId', width: 20, style: { numFmt: '@' } },\r\n { header: 'IsEmailAllowed', key: 'isEmailAllowed', width: 20 },\r\n { header: 'IsSmsAllowed', key: 'isSmsAllowed', width: 20 },\r\n { header: 'IsContactProhibited', key: 'isContactProhibited', width: 20 },\r\n { header: 'Date of birth', key: 'birthdate', width: 20, style: { numFmt: 'dd.MM.yyyy' } }\r\n\r\n ]\r\n\r\n // Apply bold font to the header row\r\n const headerRow = worksheet.getRow(1)\r\n headerRow.font = { bold: true }\r\n\r\n // Add member data to the worksheet\r\n memberSearchResult.results.forEach(function (member: any) {\r\n worksheet.addRow({ firstName: member.firstName,\r\n lastName: member.lastName,\r\n email: member.email,\r\n address1: member.address?.address1,\r\n address2: member.address?.address2,\r\n city: member.address?.city,\r\n postalCode: member.address?.postalCode,\r\n country: member.address?.country,\r\n paymentdate: member.paymentDate,\r\n memberId: member.sprId,\r\n isEmailAllowed: member.isEmailAllowed ? 'Yes' : 'No',\r\n isSmsAllowed: member.isSmsAllowed ? 'Yes' : 'No',\r\n isContactProhibited: member.isContactProhibited ? 'Yes' : 'No',\r\n birthdate: member.birthDate }\r\n )\r\n })\r\n\r\n // Set filters on the header row\r\n headerRow.eachCell(function (cell) {\r\n cell.alignment = { vertical: 'middle', horizontal: 'center' }\r\n })\r\n worksheet.autoFilter = 'A1:N1' // Apply filters to all columns\r\n\r\n // Generate the Excel file as a binary buffer\r\n return workbook.xlsx.writeBuffer()\r\n })\r\n .then(function (buffer) {\r\n if (buffer === null) return\r\n // Create a Blob object with the Excel file buffer\r\n const link = document.createElement('a')\r\n link.href = URL.createObjectURL(new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }))\r\n link.download = 'member_list.xlsx'\r\n\r\n // Append the link to the document body or any other parent element\r\n document.body.appendChild(link)\r\n\r\n // Trigger the click event to start the download\r\n link.click()\r\n link.remove()\r\n }).catch(err => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('members.findfailed') })\r\n })\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionMembers.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionMembers.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SectionMembers.vue?vue&type=template&id=29c30bff&scoped=true\"\nimport script from \"./SectionMembers.vue?vue&type=script&lang=ts\"\nexport * from \"./SectionMembers.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SectionMembers.vue?vue&type=style&index=0&id=29c30bff&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"29c30bff\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"editmember\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 backlink\"},[_c('Back')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('editmember.memberdetails')))])])]),(_vm.member)?_c('MemberDetails',{attrs:{\"value\":_vm.member}}):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('editmember.memberpositions')))]),_c('MemberPositionDetails',{attrs:{\"value\":_vm.orderedPositions}})],1),(_vm.canEditRoles)?_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('editmember.roles')))]),_c('MemberRoleDetails',{attrs:{\"value\":_vm.member.memberRoles,\"is-read-only\":!_vm.canEditRoles,\"is-save-in-progress\":_vm.isRoleSaveInProgress},on:{\"input\":_vm.onRoleChanged}})],1):_vm._e()])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { ErrorResult, RequestValidationResult } from '@/types'\r\nimport { Validator } from 'vee-validate'\r\nimport { TranslateResult } from 'vue-i18n'\r\n\r\nexport function formatErrors (errs: Array | Array): string {\r\n let htmlString = '
    '\r\n for (const err of errs) {\r\n htmlString += `
  • ${err}
  • `\r\n }\r\n htmlString += '
'\r\n return htmlString\r\n}\r\n\r\nconst DateValidate = {\r\n FUTURE: -1,\r\n PAST: 1\r\n}\r\n\r\nconst finnishDateStringToDate = (value: string): Date | undefined => {\r\n // comes in in dd.mm.yyyy format\r\n const dArr = value.split('.')\r\n if (dArr.length !== 3) return\r\n if (dArr.find((x: string) => isNaN(Number(x)))) { return }\r\n\r\n return new Date(Number(dArr[2]), Number(dArr[1]) - 1, Number(dArr[0]), 0, 0, 0, 0)\r\n}\r\n\r\nconst getCompareDate = (d: Date, dateValidationType: number) => {\r\n // Get a date and add or subtract a day, depending on type\r\n const compare = new Date()\r\n compare.setDate(compare.getDate() + dateValidationType)\r\n compare.setHours(0)\r\n compare.setMinutes(0)\r\n compare.setSeconds(0)\r\n compare.setMilliseconds(0)\r\n\r\n return compare\r\n}\r\n\r\nconst dateInPast = (value: string): boolean => {\r\n const d = finnishDateStringToDate(value)\r\n if (!d) return false\r\n\r\n const compare = getCompareDate(d, DateValidate.PAST)\r\n return (d.getTime() - compare.getTime()) < 0\r\n}\r\n\r\nconst dateInFuture = (value: string): boolean => {\r\n const d = finnishDateStringToDate(value)\r\n if (!d) return false\r\n\r\n const compare = getCompareDate(d, DateValidate.FUTURE)\r\n return (compare.getTime() - d.getTime()) < 0\r\n}\r\n\r\n// Add a rule to vee-validate to validate that a date is not in the future.\r\n// Usage: \r\nValidator.extend('finnishdateinpast', dateInPast)\r\n\r\n// Usage: \r\nValidator.extend('finnishdateinfuture', dateInFuture)\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row memberdetails\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.value.firstName)+\" \"+_vm._s(_vm.value.lastName))])]),_c('div',{staticClass:\"col-12 col-sm-4\"},[(!_vm.value.isPublishProhibited)?_c('div',{staticClass:\"contactdetails\"},[_c('div',[_vm._v(_vm._s(_vm.value.address))]),_c('div',[_vm._v(_vm._s(_vm.value.postalCode)+\" \"+_vm._s(_vm.value.city))]),_c('div',[_vm._v(_vm._s(_vm.value.country))]),_c('div',{staticClass:\"phone\"},[_c('div',[_c('font-awesome-icon',{attrs:{\"icon\":\"phone\",\"title\":_vm.$t('member.phone')}}),_vm._v(\" \"+_vm._s(_vm.value.phone)+\" \")],1),_c('div',[_c('font-awesome-icon',{attrs:{\"icon\":\"envelope\",\"title\":_vm.$t('member.email')}}),_vm._v(\" \"+_vm._s(_vm.value.email)+\" \")],1)])]):_vm._e()]),_c('div',{staticClass:\"col-12 col-sm-4\"},[_c('div',{staticClass:\"basicdetails\"},[_c('div',{staticClass:\"membershipno\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"id-card\",\"title\":_vm.$t('member.sprid'),\"aria-label\":\"spr id\"}}),_vm._v(\" \"+_vm._s(_vm.value.sprId)+\" \")],1),_c('div',{staticClass:\"paymentdate\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"euro-sign\",\"title\":_vm.$t('member.paymentdate'),\"aria-label\":\"payment date\"}}),_vm._v(\" \"+_vm._s(_vm.paymentDate)+\" \")],1),_c('div',{staticClass:\"membersince\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"handshake\",\"title\":_vm.$t('member.membershipapproved'),\"aria-label\":\"Membership approved date\"}}),_vm._v(\" \"+_vm._s(_vm.membershipApproved)+\" \")],1),_c('div',{staticClass:\"birthdate\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"birthday-cake\",\"title\":_vm.$t('member.dateofbirth')}}),_vm._v(\" \"+_vm._s(_vm.dateOfBirth)+\" \")],1),_c('div',{staticClass:\"approvaltitle\"},[_vm._v(\" \"+_vm._s(_vm.$t('member.messageapproval'))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm.$t('member.emailallowed'))+\" \"+_vm._s(\" - \")+\" \"),_c('span',{staticClass:\"bold\"},[_vm._v(_vm._s(_vm.emailAllowed))])]),_c('div',[_vm._v(\" \"+_vm._s(_vm.$t('member.smsallowed'))+\" \"+_vm._s(\" - \")),_c('span',{staticClass:\"bold\"},[_vm._v(_vm._s(_vm.smsAllowed))])]),_c('div',[_vm._v(\" \"+_vm._s(_vm.$t('member.contactprohibited'))+\" \"+_vm._s(\" - \")),_c('span',{staticClass:\"bold\"},[_vm._v(_vm._s(_vm.contactProhibited))])])])]),_c('div',{staticClass:\"col-12 col-sm-4\"},[_c('div',{staticClass:\"statusdetails\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('member.membershiptype')))]),_c('dd',[_vm._v(_vm._s(_vm.membershipType))]),_c('dt',[_vm._v(_vm._s(_vm.$t('member.status')))]),_c('dd',[_vm._v(_vm._s(_vm.status))]),_c('dt',[_vm._v(_vm._s(_vm.$t('member.membershipstatus')))]),_c('dd',[_vm._v(_vm._s(_vm.membershipStatus))])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { TranslateResult } from 'vue-i18n'\r\nimport moment from 'moment'\r\nimport { MemberFlatResponse, MemberPositionResponse } from '@/types'\r\nimport { CodeCategory } from '@/types/enums'\r\nimport { finnishShortDate } from '@/helpers/datehelper'\r\n\r\nexport default Vue.extend({\r\n name: 'MemberDetails',\r\n props: {\r\n value: {\r\n type: Object as () => MemberFlatResponse,\r\n required: true\r\n }\r\n },\r\n computed: {\r\n emailAllowed (): TranslateResult {\r\n return this.booleanToString(this.value.isEmailAllowed)\r\n },\r\n smsAllowed (): TranslateResult {\r\n return this.booleanToString(this.value.isSmsAllowed)\r\n },\r\n contactProhibited (): TranslateResult {\r\n return this.booleanToString(this.value.isContactProhibited) // Invert the value! The new text is a negative.\r\n },\r\n membershipType (): TranslateResult {\r\n return this.value && this.value.membershipType && this.value.membershipType.id ? this.$t(`membershiptype-${this.value.membershipType.id}`) : ''\r\n },\r\n status (): TranslateResult {\r\n return this.value && this.value.status && this.value.status.id ? this.$t(`memberstatus-${this.value.status.id}`) : ''\r\n },\r\n membershipStatus (): TranslateResult {\r\n return this.value && this.value.membershipStatus && this.value.membershipStatus.id ? this.$t(`membershipstatus-${this.value.membershipStatus.id}`) : ''\r\n },\r\n paymentDate (): string {\r\n return this.value.paymentDate ? finnishShortDate(moment(this.value.paymentDate).toDate()) : '-'\r\n },\r\n dateOfBirth (): string {\r\n return this.value.dateOfBirth ? finnishShortDate(moment(this.value.dateOfBirth).toDate()) : '-'\r\n },\r\n membershipApproved (): string {\r\n return this.value.membershipApproved ? finnishShortDate(moment(this.value.membershipApproved).toDate()) : '-'\r\n }\r\n },\r\n methods: {\r\n booleanToString (val: boolean): TranslateResult {\r\n return val ? this.$t('member.allowedyes') : this.$t('member.allowedno')\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MemberDetails.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MemberDetails.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MemberDetails.vue?vue&type=template&id=462afad5&scoped=true\"\nimport script from \"./MemberDetails.vue?vue&type=script&lang=ts\"\nexport * from \"./MemberDetails.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MemberDetails.vue?vue&type=style&index=0&id=462afad5&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"462afad5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"roledetails\"},[(_vm.isReadOnly)?_c('div',[_c('div',{staticClass:\"col-12\"},[(_vm.value.length)?_c('ul',_vm._l((_vm.value),function(roleId){return _c('li',{key:roleId},[_vm._v(\" \"+_vm._s(_vm.getRole(roleId))+\" \")])}),0):_c('div',[_vm._v(\" \"+_vm._s(_vm.$t('memberroledetails.memberhasnoroles'))+\" \")])])]):_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-4\"},[_c('SprFormCheckbox',{attrs:{\"value\":_vm.isSuperAdmin,\"label\":_vm.$t('role-1'),\"name\":\"isSuperAdmin\",\"readonly\":_vm.isReadOnlyCheckbox(_vm.MemberRoles.SUPER_ADMIN)},on:{\"input\":function($event){return _vm.toggleRole(_vm.MemberRoles.SUPER_ADMIN)}}})],1),_c('div',{staticClass:\"col-12 col-sm-8 roleinstructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('role-1-instructions'))+\" \")]),_c('div',{staticClass:\"col-12 col-sm-4\"},[_c('SprFormCheckbox',{attrs:{\"value\":_vm.isKT,\"label\":_vm.$t('role-2'),\"name\":\"isKT\",\"readonly\":_vm.isReadOnlyCheckbox(_vm.MemberRoles.KT)},on:{\"input\":function($event){return _vm.toggleRole(_vm.MemberRoles.KT)}}})],1),_c('div',{staticClass:\"col-12 col-sm-8 roleinstructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('role-2-instructions'))+\" \")]),_c('div',{staticClass:\"col-12 col-sm-4\"},[_c('SprFormCheckbox',{attrs:{\"value\":_vm.isDistrictAdmin,\"label\":_vm.$t('role-3'),\"name\":\"isDistrictAdmin\",\"readonly\":_vm.isReadOnlyCheckbox(_vm.MemberRoles.DISTRICT_ADMIN)},on:{\"input\":function($event){return _vm.toggleRole(_vm.MemberRoles.DISTRICT_ADMIN)}}})],1),_c('div',{staticClass:\"col-12 col-sm-8 roleinstructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('role-3-instructions'))+\" \")]),_c('div',{staticClass:\"col-12 col-sm-4\"},[_c('SprFormCheckbox',{attrs:{\"value\":_vm.isDistrictUser,\"label\":_vm.$t('role-4'),\"name\":\"isDistrictUser\",\"readonly\":_vm.isReadOnlyCheckbox(_vm.MemberRoles.DISTRICT_ADMIN)},on:{\"input\":function($event){return _vm.toggleRole(_vm.MemberRoles.DISTRICT_USER)}}})],1),_c('div',{staticClass:\"col-12 col-sm-8 roleinstructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('role-4-instructions'))+\" \")]),_c('div',{staticClass:\"col-12 col-sm-4\"},[_c('SprFormCheckbox',{attrs:{\"value\":_vm.isSectionAdmin,\"label\":_vm.$t('role-5'),\"name\":\"isSectionAdmin\",\"readonly\":_vm.isReadOnlyCheckbox(_vm.MemberRoles.SECTION_ADMIN)},on:{\"input\":function($event){return _vm.toggleRole(_vm.MemberRoles.SECTION_ADMIN)}}})],1),_c('div',{staticClass:\"col-12 col-sm-8 roleinstructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('role-5-instructions'))+\" \")]),_c('div',{staticClass:\"col-12 col-sm-4\"},[_c('SprFormCheckbox',{attrs:{\"value\":_vm.isSectionUser,\"label\":_vm.$t('role-6'),\"name\":\"isSectionUser\",\"readonly\":_vm.isReadOnlyCheckbox(_vm.MemberRoles.SECTION_ADMIN)},on:{\"input\":function($event){return _vm.toggleRole(_vm.MemberRoles.SECTION_USER)}}})],1),_c('div',{staticClass:\"col-12 col-sm-8 roleinstructions\"},[_vm._v(\" \"+_vm._s(_vm.$t('role-6-instructions'))+\" \")])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { TranslateResult } from 'vue-i18n'\r\nimport { MemberRoles } from '@/types/enums'\r\nimport SprFormCheckbox from '@/components/forms/SprFormCheckbox.vue'\r\n\r\nexport default Vue.extend({\r\n name: 'MemberRoleDetails',\r\n components: { SprFormCheckbox },\r\n props: {\r\n value: {\r\n type: Array as () => Array,\r\n default: () => []\r\n },\r\n isReadOnly: {\r\n type: Boolean,\r\n default: false\r\n },\r\n isSaveInProgress: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data () {\r\n return {\r\n MemberRoles: MemberRoles\r\n }\r\n },\r\n computed: {\r\n isSuperAdmin (): boolean {\r\n return this.value.indexOf(MemberRoles.SUPER_ADMIN) > -1\r\n },\r\n isKT (): boolean {\r\n return this.value.indexOf(MemberRoles.KT) > -1\r\n },\r\n isDistrictAdmin (): boolean {\r\n return this.value.indexOf(MemberRoles.DISTRICT_ADMIN) > -1\r\n },\r\n isDistrictUser (): boolean {\r\n return this.value.indexOf(MemberRoles.DISTRICT_USER) > -1\r\n },\r\n isSectionAdmin (): boolean {\r\n return this.value.indexOf(MemberRoles.SECTION_ADMIN) > -1\r\n },\r\n isSectionUser (): boolean {\r\n return this.value.indexOf(MemberRoles.SECTION_USER) > -1\r\n },\r\n maxUserRole (): number {\r\n const userRoles = this.$store.state.authentication.rolesArray\r\n return Math.min(...userRoles)\r\n }\r\n },\r\n methods: {\r\n isReadOnlyCheckbox (memberRole: MemberRoles): boolean {\r\n return this.isSaveInProgress || (this.maxUserRole > memberRole)\r\n },\r\n getRole (roleId: number): TranslateResult {\r\n return this.$t(`role-${roleId}`)\r\n },\r\n toggleRole (roleId: number): void {\r\n const addOrRemove = (arr: Array, item: number) => arr.includes(roleId) ? arr.filter((i: number) => i !== item) : [...arr, item]\r\n const clone = [].slice.call(this.value)\r\n this.$emit('input', addOrRemove(clone, roleId))\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MemberRoleDetails.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MemberRoleDetails.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MemberRoleDetails.vue?vue&type=template&id=76f046ac&scoped=true\"\nimport script from \"./MemberRoleDetails.vue?vue&type=script&lang=ts\"\nexport * from \"./MemberRoleDetails.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MemberRoleDetails.vue?vue&type=style&index=0&id=76f046ac&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"76f046ac\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row memberpositiondetails\"},[_c('div',{staticClass:\"col-12\"},_vm._l((_vm.value),function(position){return _c('div',{key:position.id,staticClass:\"row positioncontainer\"},[_c('span',{staticClass:\"col-12 col-sm-6 col-md-3 dates\"},[_vm._v(_vm._s(_vm.formatDate(position.termStart))+\" – \"+_vm._s(_vm.formatDate(position.termEnd)))]),_c('div',{staticClass:\"col-12 col-sm-6 col-md-9\"},[_c('span',{staticClass:\"position\"},[_vm._v(_vm._s(_vm.getPosition(position.positionId)))])])])}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { finnishDate } from '@/helpers/datehelper.ts'\r\nimport { MemberPositionResponse } from '@/types'\r\n\r\nexport default Vue.extend({\r\n name: 'MemberPositionDetails',\r\n props: {\r\n value: {\r\n type: Array as () => Array,\r\n default: () => []\r\n }\r\n },\r\n methods: {\r\n getPosition (positionId: number): string {\r\n const position = (this.$store.state.meetings.positionsOfTrust.find((x: MemberPositionResponse) => x.id === positionId))\r\n return position ? position.name : ''\r\n },\r\n formatDate (date: Date) {\r\n return finnishDate(date)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MemberPositionDetails.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MemberPositionDetails.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MemberPositionDetails.vue?vue&type=template&id=0b17c309&scoped=true\"\nimport script from \"./MemberPositionDetails.vue?vue&type=script&lang=ts\"\nexport * from \"./MemberPositionDetails.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MemberPositionDetails.vue?vue&type=style&index=0&id=0b17c309&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0b17c309\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport moment from 'moment'\r\nimport { MemberFlatResponse, MemberPositionSummaryResponse, ErrorResult } from '@/types'\r\nimport { CodeCategory } from '@/types/enums'\r\nimport { membersService } from '@/services'\r\nimport { formatErrors } from '@/helpers/validationhelper'\r\nimport Back from '@/components/Back.vue'\r\nimport MemberDetails from '@/components/members/MemberDetails.vue'\r\nimport MemberRoleDetails from '@/components/members/MemberRoleDetails.vue'\r\nimport MemberPositionDetails from '@/components/members/MemberPositionDetails.vue'\r\n\r\nexport default Vue.extend({\r\n name: 'EditMember',\r\n components: { Back, MemberDetails, MemberRoleDetails, MemberPositionDetails },\r\n props: {\r\n sectionId: {\r\n type: String,\r\n default: undefined\r\n },\r\n memberId: {\r\n type: String,\r\n default: undefined\r\n }\r\n },\r\n data () {\r\n return {\r\n member: {} as MemberFlatResponse,\r\n isRoleSaveInProgress: false\r\n }\r\n },\r\n computed: {\r\n memberIdNumber (): number {\r\n return Number(this.memberId)\r\n },\r\n orderedPositions (): Array {\r\n // slice to clone sorted array\r\n if (!this.member.memberPositions) return [] as Array\r\n return this.member.memberPositions.slice(0).sort((a: MemberPositionSummaryResponse, b: MemberPositionSummaryResponse) => {\r\n const starta: number = moment(a.termStart, 'D.M.YYYY').valueOf()\r\n const startb: number = moment(b.termStart, 'D.M.YYYY').valueOf()\r\n if (starta > startb) return -1\r\n if (starta === startb) return 0\r\n return 1\r\n })\r\n },\r\n canEditRoles (): boolean {\r\n return this.$store.state.authentication.claims.isInRoleSuperAdmin ||\r\n this.$store.state.authentication.claims.isInRoleKT ||\r\n this.$store.state.authentication.claims.isInRoleDistrictAdmin ||\r\n this.$store.state.authentication.claims.isInRoleSectionAdmin\r\n }\r\n },\r\n created (): void {\r\n this.loadMember(this.memberIdNumber).then((member: MemberFlatResponse) => {\r\n this.member = member\r\n })\r\n },\r\n methods: {\r\n loadMember (memberId: number): Promise {\r\n return new Promise((resolve, reject) => {\r\n membersService.getById(this.memberIdNumber)\r\n .then((response: MemberFlatResponse) => {\r\n resolve(response)\r\n }).catch((fail: Error) => {\r\n // eslint-disable-next-line no-console\r\n console.log(fail)\r\n this.$store.dispatch('alert/error', { message: this.$t('editmember.loadfailed'), surviveRouteChange: true }, { root: true })\r\n reject(fail)\r\n })\r\n })\r\n },\r\n onRoleChanged (roles: Array): void {\r\n this.isRoleSaveInProgress = true\r\n membersService.updateRoles(this.memberIdNumber, roles)\r\n .then((response) => {\r\n return this.loadMember(this.memberIdNumber)\r\n }, err => {\r\n if (err && err.body && err.body.isValid !== 'undefined' && !err.body.isValid) {\r\n const validationMessage: string = this.$t('validation.htmlheadertext').toString().replace('{{ errors }}', formatErrors(err.body.errors.map((x: ErrorResult) => this.$t(`validation.${x.translationKey}`))))\r\n this.$store.dispatch('alert/error', { message: validationMessage, isHtml: true })\r\n }\r\n })\r\n .then((member: void | MemberFlatResponse) => {\r\n this.member = member as MemberFlatResponse\r\n this.$store.dispatch('alert/success', { message: this.$t('editmember.updatesuccess') })\r\n this.isRoleSaveInProgress = false\r\n })\r\n .catch((fail: any) => {\r\n // eslint-disable-next-line no-console\r\n console.log(fail)\r\n this.$store.dispatch('alert/error', { message: this.$t('editmember.rolesupdatefailed'), surviveRouteChange: true }, { root: true })\r\n this.isRoleSaveInProgress = false\r\n })\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditMember.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditMember.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EditMember.vue?vue&type=template&id=255edd2f&scoped=true\"\nimport script from \"./EditMember.vue?vue&type=script&lang=ts\"\nexport * from \"./EditMember.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EditMember.vue?vue&type=style&index=0&id=255edd2f&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"255edd2f\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"meetings\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 backlink\"},[_c('Back')],1)]),(_vm.meetings)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('meetings')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.section ? _vm.section.name : ''))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('MeetingsList',{attrs:{\"value\":_vm.meetings,\"columns\":_vm.meetingColumnsToDisplay}})],1)]),_c('div',{staticClass:\"row stats\"},[_c('div',{staticClass:\"col-sm\"},[_c('StatisticTile',{attrs:{\"name\":\"Stat1\",\"value\":_vm.totalMeetings,\"subtext\":\"Total meetings recorded\"},on:{\"click\":_vm.statisticClicked}})],1),_c('div',{staticClass:\"col-sm\"},[_c('StatisticTile',{attrs:{\"name\":\"Stat2\",\"value\":_vm.meetingsToReview,\"subtext\":\"Meetings requiring reviewing\"},on:{\"click\":_vm.statisticClicked}})],1),_c('div',{staticClass:\"col-sm\"},[_c('StatisticTile',{attrs:{\"name\":\"Stat3\",\"value\":_vm.meetingsToApprove,\"subtext\":\"Meetings requiring approval\"},on:{\"click\":_vm.statisticClicked}})],1)])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport Back from '@/components/Back.vue'\r\nimport MeetingsList from '@/components/meetings/MeetingsList.vue'\r\nimport StatisticTile from '@/components/StatisticTile.vue'\r\nimport { GetMeetingsRequest, MeetingSummaryResponse, SectionSummaryResponse } from '@/types'\r\nimport { MeetingStatus, CodeCategory, AlertTimeout } from '@/types/enums'\r\n\r\nexport default Vue.extend({\r\n name: 'Meetings',\r\n components: {\r\n Back,\r\n MeetingsList,\r\n StatisticTile\r\n },\r\n props: {\r\n sectionId: {\r\n type: String, // from the url props\r\n default: '0'\r\n }\r\n },\r\n methods: {\r\n getMeetings () {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n this.$store.dispatch('meetings/getMeetings', this.filter).then(s => {\r\n this.meetings = this.$store.state.meetings.meetings.sort((a: MeetingSummaryResponse, b: MeetingSummaryResponse) => {\r\n if (!a.created || !b.created) return true\r\n return b.created.getTime() - a.created.getTime()\r\n })\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n }, err => {\r\n if (err.status === 403) { // Forbidden\r\n this.$store.dispatch('alert/error', { message: this.$t('403') })\r\n } else if (err.status === 500) {\r\n this.$store.dispatch('alert/error', { message: this.$t('meetings.loadfailed'), timeout: AlertTimeout.PERMANENT })\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('meetings.loadfailed') })\r\n }\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n }).catch(err => {\r\n /* eslint-disable no-console */\r\n console.log('caught error', err)\r\n this.$store.dispatch('alert/error', { message: this.$t('meetings.loadfailed') })\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n })\r\n },\r\n statisticClicked () {\r\n /* eslint-disable no-console */\r\n console.log('clicked')\r\n }\r\n },\r\n data () {\r\n return {\r\n meetings: [],\r\n meetingsLoaded: false,\r\n meetingColumnsToDisplay: ['Name', 'Type', 'Status', 'Created', 'DateHeld', 'CreatedBy']\r\n }\r\n },\r\n created () {\r\n if (!this.sectionId) {\r\n this.$router.push('/404')\r\n }\r\n this.getMeetings()\r\n },\r\n computed: {\r\n filter (): GetMeetingsRequest {\r\n return {\r\n sections: [Number(this.sectionId)]\r\n } as GetMeetingsRequest\r\n },\r\n totalMeetings (): string {\r\n return (this.meetings ? this.meetings.length : 0).toString()\r\n },\r\n meetingsToReview (): string {\r\n if (!this.meetings) return '0'\r\n\r\n return this.meetings.filter((x: MeetingSummaryResponse) => {\r\n return x.status.id === MeetingStatus.SUBMITTED\r\n }).length.toString()\r\n },\r\n meetingsToApprove (): string {\r\n if (!this.meetings) return '0'\r\n\r\n return this.meetings.filter((x: MeetingSummaryResponse) => {\r\n return x.status.id === MeetingStatus.REVIEWED\r\n }).length.toString()\r\n },\r\n section (): SectionSummaryResponse {\r\n return this.$store.state.sections.all.find((x: SectionSummaryResponse) => x.id === Number(this.sectionId))\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Meetings.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Meetings.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Meetings.vue?vue&type=template&id=144063ab&scoped=true\"\nimport script from \"./Meetings.vue?vue&type=script&lang=ts\"\nexport * from \"./Meetings.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Meetings.vue?vue&type=style&index=0&id=144063ab&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"144063ab\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"meeting\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 backlink\"},[_c('Back')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('addmeeting')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"section\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('editmeeting.basicdetails')))])])]),_c('MeetingDetailsForm',{attrs:{\"value\":_vm.meetingDetails,\"is-read-only\":false},on:{\"input\":_vm.onMeetingDetailsUpdated}}),_c('div',{staticClass:\"row mt-3\"},[_c('div',{staticClass:\"col-6 col-lg-3\"},[_c('SprButton',{attrs:{\"compact\":\"\",\"primary\":\"\",\"text\":_vm.$t('addmeeting.save')},on:{\"click\":_vm.onSave}})],1),_c('div',{staticClass:\"col-6 col-lg-3 text-right\"},[_c('SprButton',{attrs:{\"compact\":\"\",\"text\":_vm.$t('addmeeting.cancel')},on:{\"click\":_vm.onDeleteMeeting}})],1)])],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.localVal)?_c('div',{staticClass:\"meetingdetailsform\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6 col-lg-3\"},[(_vm.isReadOnly)?_c('div',{staticClass:\"readonly\"},[_c('div',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.$t('meeting.type'))+\" \")]),_vm._v(\" \"+_vm._s(_vm.getMeetingType(_vm.localVal.meetingType))+\" \")]):_c('div',{staticClass:\"form-group\"},[_c('SprFormDropdown',{attrs:{\"value\":_vm.meetingTypeString,\"label\":_vm.$t('meeting.type'),\"name\":\"meeting_type\",\"options\":_vm.meetingTypes,\"validations\":\"required\",\"required\":true,\"has-error\":_vm.errors.has('meeting_type')},on:{\"input\":_vm.onMeetingTypeUpdated}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('meeting_type')))])],1)]),_c('div',{staticClass:\"col-6 col-lg-3\"},[(_vm.isReadOnly)?_c('div',{staticClass:\"readonly\"},[_c('div',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.$t('meeting.dateheld'))+\" \")]),_vm._v(\" \"+_vm._s(_vm.dateHeldString)+\" \")]):_c('div',{staticClass:\"form-group\"},[_c('DatePicker',{attrs:{\"value\":_vm.dateHeldDate,\"label\":_vm.$t('meeting.dateheld'),\"name\":\"meeting_dateheld\",\"validations\":\"required\",\"required\":true,\"has-error\":_vm.errors.has('meeting_dateheld')},on:{\"input\":_vm.onDateHeldUpdated}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('meeting_dateheld')))])],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-lg-6\"},[(_vm.isReadOnly)?_c('div',{staticClass:\"readonly\"},[_c('div',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.$t('meeting.name'))+\" \")]),_vm._v(\" \"+_vm._s(_vm.localVal.name)+\" \")]):_c('div',{staticClass:\"form-group\"},[_c('SprFormText',{attrs:{\"value\":_vm.localVal.name,\"label\":_vm.$t('meeting.name'),\"name\":\"meeting_name\",\"validations\":\"required|max:100\",\"has-error\":_vm.errors.has('meeting_name'),\"required\":true,\"placeholder\":_vm.$t('meeting.nameplaceholder')},on:{\"input\":_vm.onNameUpdated}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('meeting_name')))])],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-lg-6\"},[(_vm.isReadOnly)?_c('span',{staticClass:\"moreinfo\"},[_vm._v(\" \"+_vm._s(_vm.value.moreInfo)+\" \")]):_c('SprFormTextArea',{attrs:{\"value\":_vm.localVal.moreInfo,\"label\":_vm.$t('meeting.description'),\"name\":\"meeting.description\",\"placeholder\":_vm.$t('meeting.descriptionplaceholder')},on:{\"input\":_vm.onMoreInfoUpdated}})],1)])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"sprformtextarea\"},[_c('div',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.label)+\" \"),(_vm.required)?_c('span',{staticClass:\"is-required\"},[_vm._v(\"*\")]):_vm._e()]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.localVal),expression:\"localVal\"},{name:\"validate\",rawName:\"v-validate\",value:(_vm.validations),expression:\"validations\"}],class:{ 'has-error': _vm.hasError },attrs:{\"aria-label\":_vm.label,\"required\":_vm.required,\"name\":_vm.name,\"placeholder\":_vm.placeholder},domProps:{\"value\":(_vm.localVal)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.localVal=$event.target.value},_vm.onValChanged]}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { debounce } from '@/helpers/httphelper.ts'\r\n\r\nexport default Vue.extend({\r\n name: 'SprFormTextArea',\r\n inject: ['$validator'],\r\n props: {\r\n value: {\r\n type: String,\r\n default: ''\r\n },\r\n label: {\r\n type: String,\r\n default: ''\r\n },\r\n required: {\r\n type: Boolean,\r\n default: false\r\n },\r\n hasError: {\r\n type: Boolean,\r\n default: false\r\n },\r\n name: {\r\n type: String,\r\n default: ''\r\n },\r\n validations: {\r\n type: String,\r\n default: ''\r\n },\r\n placeholder: {\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n data () {\r\n return {\r\n localVal: ''\r\n }\r\n },\r\n methods: {\r\n onValChanged () {\r\n this.$emit('input', this.localVal)\r\n }\r\n },\r\n mounted () {\r\n this.localVal = this.value\r\n },\r\n watch: {\r\n value () {\r\n this.localVal = this.value\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprFormTextArea.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprFormTextArea.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SprFormTextArea.vue?vue&type=template&id=8f460b04&scoped=true\"\nimport script from \"./SprFormTextArea.vue?vue&type=script&lang=ts\"\nexport * from \"./SprFormTextArea.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SprFormTextArea.vue?vue&type=style&index=0&id=8f460b04&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8f460b04\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport { TranslateResult } from 'vue-i18n'\r\nimport DatePicker from '@/components/forms/SprFormDatePicker.vue'\r\nimport SprFormText from '@/components/forms/SprFormText.vue'\r\nimport SprFormDropdown from '@/components/forms/SprFormDropdown.vue'\r\nimport SprFormTextArea from '@/components/forms/SprFormTextArea.vue'\r\nimport { MeetingTypeCode } from '@/helpers/codehelper'\r\nimport { finnishShortDate } from '@/helpers/datehelper'\r\nimport { MeetingType } from '@/types/enums'\r\nimport { MeetingDetailsData } from '@/types/custom.ts'\r\n\r\nexport default Vue.extend({\r\n name: 'MeetingDetailsForm',\r\n inject: ['$validator'],\r\n components: {\r\n DatePicker,\r\n SprFormText,\r\n SprFormDropdown,\r\n SprFormTextArea\r\n },\r\n props: {\r\n value: {\r\n type: Object as () => MeetingDetailsData,\r\n default: null\r\n },\r\n isReadOnly: {\r\n type: Boolean,\r\n default: true\r\n }\r\n },\r\n data () {\r\n return {\r\n meetingTypes: [] as Array\r\n }\r\n },\r\n computed: {\r\n localVal (): MeetingDetailsData {\r\n return this.value as MeetingDetailsData\r\n },\r\n meetingTypeString (this: any): string {\r\n return this.localVal && this.localVal.meetingType ? this.localVal.meetingType.toString() : ''\r\n },\r\n dateHeldString () {\r\n if (!this.localVal) return ''\r\n return finnishShortDate((this.localVal as MeetingDetailsData).dateHeld)\r\n },\r\n dateHeldDate (this: any): Date {\r\n if (!this.localVal) return new Date()\r\n return this.localVal.dateHeld\r\n }\r\n },\r\n methods: {\r\n getMeetingType (type: number): TranslateResult {\r\n return this.$t(`meetingtype-${type}`)\r\n },\r\n onMeetingTypeUpdated (typeId: string) {\r\n if (typeId && !isNaN(Number(typeId))) {\r\n (this.localVal as MeetingDetailsData).meetingType = Number(typeId)\r\n\r\n this.$emit('meetingTypeUpdated', Number(typeId))\r\n // @ts-ignore\r\n this.update()\r\n }\r\n },\r\n onDateHeldUpdated (date: Date) {\r\n (this.localVal as MeetingDetailsData).dateHeld = date\r\n // @ts-ignore\r\n this.update()\r\n },\r\n onNameUpdated (name: string) {\r\n (this.localVal as MeetingDetailsData).name = name\r\n // @ts-ignore\r\n this.update()\r\n },\r\n onMoreInfoUpdated (moreInfo: string) {\r\n (this.localVal as MeetingDetailsData).moreInfo = moreInfo\r\n // @ts-ignore\r\n this.update()\r\n },\r\n update () {\r\n this.$emit('input', this.localVal)\r\n }\r\n },\r\n created (this: any): void {\r\n let types: Array = this.$store.state.codes.meetingTypes\r\n // Type Unknown is for old legacy imported meetings. Do not allow it on new ones.\r\n if (!this.value.id) {\r\n types = this.$store.state.codes.meetingTypes.filter((x: MeetingTypeCode) => x.id !== MeetingType.UNKNOWN)\r\n types = types.filter((x: MeetingTypeCode) => x.id !== MeetingType.CRM)\r\n }\r\n\r\n const arr: Array> = types.map((x: MeetingTypeCode) => {\r\n return { text: this.$t(`meetingtype-${x.id}`), value: x.id.toString() }\r\n })\r\n\r\n arr.unshift({ text: `${this.$t('dropdown.choose')}`, value: '' })\r\n\r\n this.meetingTypes = arr\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MeetingDetailsForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MeetingDetailsForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MeetingDetailsForm.vue?vue&type=template&id=17ef52da&scoped=true\"\nimport script from \"./MeetingDetailsForm.vue?vue&type=script&lang=ts\"\nexport * from \"./MeetingDetailsForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MeetingDetailsForm.vue?vue&type=style&index=0&id=17ef52da&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17ef52da\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport authHeader from '@/helpers/auth/auth-header'\r\nimport { processJson } from '@/helpers/httphelper'\r\nimport Back from '@/components/Back.vue'\r\nimport MeetingDetailsForm from '@/components/meetings/MeetingDetailsForm.vue'\r\nimport SprButton from '@/components/forms/SprButton.vue'\r\nimport { RequestValidationResult, AddOrUpdateMeetingRequest } from '@/types'\r\nimport { isRequestValidationResult, MeetingDetailsData } from '@/types/custom.ts'\r\nimport { MeetingType } from '@/types/enums'\r\n\r\nexport default Vue.extend({\r\n name: 'AddMeeting',\r\n components: {\r\n Back,\r\n MeetingDetailsForm,\r\n SprButton\r\n },\r\n props: {\r\n sectionId: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n data () {\r\n return {\r\n meeting: {\r\n id: undefined,\r\n sectionId: Number(this.sectionId),\r\n name: '',\r\n meetingTypeId: MeetingType.UNKNOWN,\r\n dateHeld: new Date(),\r\n reportedBy: '',\r\n createdBy: '',\r\n created: new Date(),\r\n modified: null,\r\n minutesId: 0,\r\n moreInfo: '',\r\n isLatestMeeting: false,\r\n memberPositions: []\r\n } as AddOrUpdateMeetingRequest\r\n }\r\n },\r\n methods: {\r\n createMeeting () {\r\n const user = this.$store.state.authentication.claims.username\r\n\r\n this.meeting.reportedBy = user\r\n this.meeting.createdBy = user\r\n },\r\n onMeetingTypeUpdated (meetingType: MeetingType) {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${this.$store.state.config.ossiServiceBaseUrl}${this.$store.state.meetings.meetingTypeDefaultYearUrl}`.replace('{meetingType}', meetingType.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(processJson)\r\n .then(date => {\r\n this.meeting.dateHeld = date\r\n }).catch(err => Promise.reject(err))\r\n },\r\n onMeetingDetailsUpdated (data: MeetingDetailsData) {\r\n // Only set the date if the meeting type did not change.\r\n // otherwise let the process for MeetingType set the default date.\r\n if (data.meetingType && data.meetingType !== this.meeting.meetingTypeId) {\r\n this.onMeetingTypeUpdated(data.meetingType)\r\n } else {\r\n this.meeting.dateHeld = data.dateHeld\r\n }\r\n\r\n this.meeting.meetingTypeId = data.meetingType ? data.meetingType : MeetingType.UNKNOWN\r\n this.meeting.name = data.name\r\n this.meeting.moreInfo = data.moreInfo\r\n },\r\n onDeleteMeeting (): void {\r\n this.$store.dispatch('meetings/deleteSelectedMeeting')\r\n this.$router.push('/')\r\n },\r\n // On save\r\n onSave (): void {\r\n this.$validator.validateAll().then((result) => {\r\n if (this.$validator.errors.items.length) return\r\n if (result) {\r\n this.saveMeeting()\r\n }\r\n }, (error) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$store.dispatch('alert/error', { message: error })\r\n })\r\n },\r\n // Save the meeting\r\n saveMeeting (): void {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n const id = this.$store.dispatch('meetings/saveMeeting', this.meeting)\r\n .then((id: number) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$store.dispatch('alert/success', { message: this.$t('addmeeting.savesuccess'), surviveRouteChange: true })\r\n this.$router.push(`/sections/${this.sectionId}/meetings/${id}`)\r\n },\r\n (error: any | RequestValidationResult) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n if (isRequestValidationResult(error)) {\r\n this.displayErrors(error)\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('addmeeting.savefailed') })\r\n }\r\n })\r\n },\r\n // Display error\r\n displayErrors (error: RequestValidationResult): void {\r\n for (const err of error.errors) {\r\n this.$store.dispatch('alert/error', { message: this.$t(`validation.${err.translationKey}`) })\r\n }\r\n }\r\n },\r\n created (): void {\r\n this.createMeeting()\r\n },\r\n computed: {\r\n sectionIdNumber (): number {\r\n // because sectionId from the url is a string\r\n return Number(this.sectionId)\r\n },\r\n isLoading (): boolean {\r\n return this.$store.state.alert.dataLoading\r\n },\r\n meetingDetails (): MeetingDetailsData {\r\n return {\r\n meetingType: this.meeting?.meetingTypeId === MeetingType.UNKNOWN ? undefined : this.meeting?.meetingTypeId,\r\n dateHeld: this.meeting?.dateHeld,\r\n name: this.meeting?.name,\r\n moreInfo: this.meeting?.moreInfo\r\n } as MeetingDetailsData\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddMeeting.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddMeeting.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AddMeeting.vue?vue&type=template&id=2fb8c650&scoped=true\"\nimport script from \"./AddMeeting.vue?vue&type=script&lang=ts\"\nexport * from \"./AddMeeting.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AddMeeting.vue?vue&type=style&index=0&id=2fb8c650&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2fb8c650\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"meeting\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 backlink\"},[_c('Back')],1)]),(_vm.$store.state.meetings.selectedMeeting && _vm.meetingLoaded)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"section\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('editmeeting.basicdetails')))])]),_c('div',{staticClass:\"col-6 text-right\"},[(_vm.$store.state.meetings.selectedMeeting && _vm.$store.state.meetings.selectedMeeting.status)?_c('MeetingStatusIndicator',{attrs:{\"status\":_vm.$store.state.meetings.selectedMeeting.status.id}}):_vm._e()],1)]),_c('MeetingDetailsForm',{attrs:{\"value\":_vm.meetingDetails,\"is-read-only\":_vm.isReadOnly},on:{\"input\":_vm.onMeetingDetailsChanged}})],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"section\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('editmeeting.minutes')))]),_c('MeetingMinutesForm',{attrs:{\"is-read-only\":_vm.isReadOnly},on:{\"sent-by-mail-changed\":_vm.onMeetingMinutesSentByMailChanged}})],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"section\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('section.activememberstitle')))]),(!_vm.isReadOnly)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 activepositionscontainer\"},[_c('ActivePositionsOfTrust',{attrs:{\"positions\":_vm.sectionActivePositionsOfTrust,\"show-meeting-link\":false},on:{\"viewMeetingClicked\":_vm.onViewMeetingClicked}})],1)]):_vm._e()]),_c('div',{staticClass:\"section\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('section.proposedmemberstitle')))]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 meetinglistcontainer\"},[_c('MeetingMemberList',{attrs:{\"value\":_vm.memberPositions,\"section-id\":_vm.sectionIdNumber,\"meeting-id\":_vm.meetingIdNumber,\"is-read-only\":_vm.isReadOnly,\"is-editable\":_vm.isMeetingEditable},on:{\"update-memberposition\":_vm.onUpdateMemberPosition,\"remove-member\":_vm.onRemoveMemberPosition}})],1)])])])]),(!_vm.isReadOnly)?_c('div',{staticClass:\"row addmember\"},[_c('div',{staticClass:\"col add-memberposition\"},[_c('AddMemberPosition',{attrs:{\"section-id\":_vm.sectionIdNumber,\"meeting-id\":_vm.meetingIdNumber},on:{\"add-memberposition\":_vm.onAddMemberPosition}})],1)]):_vm._e(),(_vm.hasCrmErrors)?_c('div',{staticClass:\"row crmerrors\"},[_c('div',{staticClass:\"col-12\"},[_c('MeetingCrmErrors',{attrs:{\"member-positions\":_vm.potWithCrmErrors}})],1)]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12 col-lg-7\"},[_c('div',{staticClass:\"section\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 even-spaced\"},[(_vm.isCreatedStatus && !_vm.isReadOnly)?_c('SprButton',{staticClass:\"state-button\",attrs:{\"primary\":\"\",\"text\":_vm.$t('editmeeting.submit')},on:{\"click\":_vm.onSubmit}}):_vm._e(),((_vm.isReviewedStatus || _vm.isSubmittedStatus) && _vm.canApprove && !_vm.isReadOnly)?_c('SprButton',{staticClass:\"state-button\",attrs:{\"primary\":\"\",\"text\":_vm.$t('editmeeting.approve')},on:{\"click\":_vm.onApproved}}):_vm._e(),(((_vm.isReviewedStatus ||_vm.isSubmittedStatus) && !_vm.isReadOnly) || _vm.adminCanArchive)?_c('SprButton',{staticClass:\"state-button\",attrs:{\"text\":_vm.$t('editmeeting.archive')},on:{\"click\":_vm.onArchived}}):_vm._e(),(_vm.isCreatedStatus && !_vm.isReadOnly)?_c('SprButton',{staticClass:\"state-button\",attrs:{\"primary\":\"\",\"text\":_vm.$t('editmeeting.template')},on:{\"click\":_vm.onTemplate}}):_vm._e(),(!_vm.isReadOnly)?_c('SprButton',{staticClass:\"state-button\",attrs:{\"text\":_vm.$t('editmeeting.delete')},on:{\"click\":_vm.onDelete}}):_vm._e()],1)])])]),_c('div',{staticClass:\"col-sm-12 col-lg-5\"},[_c('div',{staticClass:\"section\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('log.heading')))]),_c('div',{staticClass:\"log\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('meeting.created')))]),_c('dd',[_vm._v(_vm._s(_vm.createdDate))]),_c('dt',[_vm._v(_vm._s(_vm.$t('meeting.modified')))]),_c('dd',[_vm._v(_vm._s(_vm.lastModifiedDate))]),_c('dt',[_vm._v(_vm._s(_vm.$t('meeting.reportedby')))]),_c('dd',[_vm._v(_vm._s(_vm.reportedBy))]),_c('dt',[_vm._v(_vm._s(_vm.$t('meeting.createdby')))]),_c('dd',[_vm._v(_vm._s(_vm.createdBy))])])])])])])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"meetingminutesform\"},[(_vm.localVal)?_c('div',[(_vm.isReadOnly)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[(_vm.localVal.documents && _vm.localVal.documents.length)?_c('div',_vm._l((_vm.localVal.documents),function(doc){return _c('ul',{key:doc.id,staticClass:\"filelist\"},[_c('li',[_c('font-awesome-icon',{attrs:{\"icon\":\"file\"}}),_c('a',{attrs:{\"href\":doc.url}},[_vm._v(_vm._s(doc.name))])],1)])}),0):_c('div',{staticClass:\"nodocs\"},[(_vm.localVal.isSentByMail)?_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('minutes.issentbymail'))+\". \")]):_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('minutesform.nodocuments'))+\" \")])])])]):_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormCheckbox',{attrs:{\"value\":_vm.localVal.isSentByMail,\"label\":_vm.$t('minutes.issentbymail'),\"name\":\"minutes.issentbymail\"},on:{\"input\":_vm.onSentByMailChanged}})],1)]),_c('div',{staticClass:\"col-10 col-md-5\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormFileUpload',{attrs:{\"label\":_vm.$t('minutesform.attachminutesfile'),\"name\":\"minutes.fileupload\"},on:{\"file-uploaded\":_vm.onMinutesFileUploaded}})],1)]),_c('div',{staticClass:\"col-2 col-md-1 spinner-container\"},[(_vm.$store.state.meetings.isFileUploading)?_c('Spinner'):_vm._e()],1),_c('div',{staticClass:\"col-md-6\"},_vm._l((_vm.$store.state.meetings.selectedMeeting.minutes.documents),function(doc){return _c('ul',{key:doc.id,staticClass:\"filelist\"},[_c('li',[_c('font-awesome-icon',{attrs:{\"icon\":\"file\"}}),_c('a',{attrs:{\"href\":doc.url}},[_vm._v(_vm._s(doc.name))]),_c('span',{staticClass:\"remove\",on:{\"click\":function($event){return _vm.removeUploadedFile(doc)}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"times\",\"title\":_vm.$t('minutesform.removefile')}})],1)],1)])}),0)])]):_c('div',[_c('div',{staticClass:\"no-minutes text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t('minutesform.nominutes'))+\" \")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"sprformfileupload\"},[_c('div',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.label)+\" \"),(_vm.required)?_c('span',{staticClass:\"is-required\"},[_vm._v(\"*\")]):_vm._e()]),_c('input',{staticClass:\"form-control-file\",class:{ 'has-error': _vm.hasError },attrs:{\"type\":\"file\",\"aria-label\":_vm.label,\"required\":_vm.required},on:{\"change\":_vm.onFileChange}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\n\r\nexport default Vue.extend({\r\n name: 'SprFormFileUpload',\r\n props: {\r\n label: {\r\n type: String,\r\n default: ''\r\n },\r\n required: {\r\n type: Boolean,\r\n default: false\r\n },\r\n hasError: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n methods: {\r\n onFileChange (e: Event) {\r\n const target = e.target as HTMLInputElement\r\n if (!target || !target.files) return\r\n const files = target.files\r\n if (!files.length) return\r\n this.$emit('file-uploaded', files[0])\r\n target.files = null\r\n target.value = ''\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprFormFileUpload.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprFormFileUpload.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SprFormFileUpload.vue?vue&type=template&id=0df9bd6c&scoped=true\"\nimport script from \"./SprFormFileUpload.vue?vue&type=script&lang=ts\"\nexport * from \"./SprFormFileUpload.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SprFormFileUpload.vue?vue&type=style&index=0&id=0df9bd6c&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0df9bd6c\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport SprFormFileUpload from '@/components/forms/SprFormFileUpload.vue'\r\nimport SprFormCheckbox from '@/components/forms/SprFormCheckbox.vue'\r\nimport Spinner from '@/components/Spinner.vue'\r\nimport { MinutesResponse, MinutesFileRequest, MeetingMinutesRequest, MinutesDocumentResponse } from '@/types'\r\nimport { MinutesStatus } from '@/types/enums'\r\n\r\nexport default Vue.extend({\r\n name: 'MeetingMinutesForm',\r\n components: {\r\n SprFormFileUpload,\r\n SprFormCheckbox,\r\n Spinner\r\n },\r\n props: {\r\n isReadOnly: {\r\n type: Boolean,\r\n default: true\r\n }\r\n },\r\n computed: {\r\n localVal (): MinutesResponse {\r\n return this.$store.state.meetings.selectedMeeting.minutes\r\n }\r\n },\r\n methods: {\r\n onSentByMailChanged (newVal: boolean): void {\r\n this.$emit('sent-by-mail-changed', newVal)\r\n },\r\n processUploadedFile (name: string, type: string, rawString: string | null) {\r\n if (!rawString) return\r\n\r\n if (!this.localVal) return\r\n\r\n // check a file with this name has not been uploaded already\r\n const sameDoc = this.$store.state.meetings.selectedMeeting.minutes.documents.find((doc: MinutesDocumentResponse) => {\r\n return doc.name.toLowerCase() === name.toLowerCase()\r\n })\r\n\r\n if (sameDoc) {\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.minutesfileuploadduplicate') })\r\n return\r\n }\r\n\r\n const doc: MinutesFileRequest = {\r\n id: null,\r\n name: name,\r\n // @ts-ignore-next-line\r\n minutesId: this.localVal.id || null,\r\n blob: rawString ? btoa(rawString) : '',\r\n url: null,\r\n uploadedBy: null,\r\n fileType: type\r\n }\r\n\r\n if (doc.name.length > 800) {\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.minutesfileuploadnametoolarge') })\r\n return\r\n }\r\n\r\n if (doc.fileType.length > 255) {\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.minutesfileuploadtypetoolarge') })\r\n return\r\n }\r\n\r\n this.$store.dispatch('meetings/uploadDoc', doc).then(success => {\r\n this.$store.dispatch('alert/success', { message: this.$t('editmeeting.minutesfileuploadsuccess') })\r\n }).catch(err => {\r\n if (err.body) {\r\n this.$store.dispatch('alert/error', { message: err.body, isHtml: true, timeout: 12000 })\r\n }\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.minutesfileuploadfailed') })\r\n })\r\n },\r\n removeUploadedFile (doc: MinutesDocumentResponse) {\r\n this.$store.dispatch('meetings/removeDoc', doc.id).then(success => {\r\n this.localVal.documents = this.localVal.documents.filter((item) => {\r\n return item.id !== doc.id\r\n })\r\n this.$store.dispatch('alert/success', { message: this.$t('editmeeting.minutesfiledeletesuccess') })\r\n }).catch(err => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.minutesfiledeletefailed') })\r\n })\r\n },\r\n onMinutesFileUploaded (file: File | null) {\r\n if (file) {\r\n // if the meeting minutes do not yet exist, create it first\r\n if (!this.$store.state.meetings.selectedMeeting.minutes) {\r\n const data = {\r\n meetingId: this.$store.state.meetings.selectedMeeting.id,\r\n isSentByMail: this.localVal.isSentByMail\r\n } as MeetingMinutesRequest\r\n this.$store.dispatch('meetings/addOrUpdateMeetingMinutes', data).then((mins) => {\r\n this.readFile(file)\r\n })\r\n } else {\r\n this.readFile(file)\r\n }\r\n }\r\n },\r\n readFile (file: File) {\r\n const reader = new FileReader()\r\n\r\n reader.onload = (readerEvt: ProgressEvent) => {\r\n const raw = reader.result as string\r\n // var base64 = btoa(binaryString);\r\n this.processUploadedFile(file.name, file.type, raw)\r\n }\r\n\r\n reader.readAsBinaryString(file)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MeetingMinutesForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MeetingMinutesForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MeetingMinutesForm.vue?vue&type=template&id=44382fb4&scoped=true\"\nimport script from \"./MeetingMinutesForm.vue?vue&type=script&lang=ts\"\nexport * from \"./MeetingMinutesForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MeetingMinutesForm.vue?vue&type=style&index=0&id=44382fb4&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"44382fb4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"addmemberposition\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showForm),expression:\"showForm\"}],staticClass:\"form\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('MemberPositionForm',{attrs:{\"value\":_vm.memberPositionFormData,\"section-id\":_vm.sectionId,\"is-add\":true},on:{\"input\":_vm.onInputMemberPositionForm,\"positionTypeUpdated\":_vm.onPositionTypeUpdated}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('SprButton',{staticClass:\"savebutton\",attrs:{\"compact\":\"\",\"primary\":\"\",\"text\":_vm.$t('addmemberposition.save')},on:{\"click\":_vm.onSave}}),_c('SprButton',{attrs:{\"compact\":\"\",\"text\":_vm.$t('addmemberposition.cancel')},on:{\"click\":_vm.onCancel}})],1)])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showForm),expression:\"!showForm\"}],staticClass:\"showform\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col text-center\"},[_c('SprButton',{attrs:{\"compact\":\"\",\"text\":_vm.$t('addmemberposition.add')},on:{\"click\":_vm.onAdd}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"memberpositionform\"},[(_vm.isAdd)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-8\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormDropdown',{attrs:{\"value\":_vm.positionTypeString,\"label\":_vm.$t('memberposition.position'),\"name\":\"memberposition_position\",\"options\":_vm.positionsList,\"validations\":\"required\",\"required\":true,\"has-error\":_vm.errors.has('memberposition_position')},on:{\"input\":_vm.onInputPositionType}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('memberposition_position')))])],1)])]):_vm._e(),(_vm.canShowMemberNonMemberSelection)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 ismembercheck\"},[_c('div',{staticClass:\"form-check\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.isMember),expression:\"isMember\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"radio\",\"name\":_vm.isMemberUniqueName},domProps:{\"value\":true,\"checked\":_vm._q(_vm.isMember,true)},on:{\"change\":function($event){_vm.isMember=true}}}),_c('label',{staticClass:\"form-check-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('memberposition.ismember'))+\" \")])]),_c('div',{staticClass:\"form-check\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.isMember),expression:\"isMember\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"radio\",\"name\":_vm.isMemberUniqueName},domProps:{\"value\":false,\"checked\":_vm._q(_vm.isMember,false)},on:{\"change\":function($event){_vm.isMember=false}}}),_c('label',{staticClass:\"form-check-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('memberposition.isnonmember'))+\" \")])])])]):_vm._e(),(_vm.isMember)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-8\"},[_c('div',{staticClass:\"form-group\"},[_c('SprTypeahead',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"value\":_vm.selectedMember,\"values\":_vm.membersList,\"label\":_vm.$t('memberposition.member'),\"name\":\"memberposition_member\",\"has-error\":_vm.errors.has('memberposition_member')},on:{\"hit\":_vm.onMemberSelected,\"input\":_vm.onMemberTextInput}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('memberposition_member')))])],1)])]):_vm._e(),(!_vm.isMember)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6 col-md-4\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormText',{attrs:{\"value\":_vm.value.nonMemberFirstname,\"label\":_vm.$t('memberposition.nonmemberfirstname'),\"name\":\"memberposition_nonmemberfirstname\",\"validations\":\"required|max:100\",\"has-error\":_vm.errors.has('memberposition_nonmemberfirstname'),\"required\":true},on:{\"input\":_vm.onInputNonMemberFirstname}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('memberposition_nonmemberfirstname')))])],1)]),_c('div',{staticClass:\"col-12 col-sm-6 col-md-4\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormText',{attrs:{\"value\":_vm.value.nonMemberLastname,\"label\":_vm.$t('memberposition.nonmemberlastname'),\"name\":\"memberposition_nonmemberlastname\",\"validations\":\"required|max:100\",\"has-error\":_vm.errors.has('memberposition_nonmemberlastname'),\"required\":true},on:{\"input\":_vm.onInputNonMemberLastname}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('memberposition_nonmemberlastname')))])],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormText',{attrs:{\"value\":_vm.value.nonMemberCompany,\"label\":_vm.$t('memberposition.nonmembercompany'),\"name\":\"memberposition_nonmembercompany\",\"validations\":{max:100},\"has-error\":_vm.errors.has('memberposition_nonmembercompany')},on:{\"input\":_vm.onInputNonMemberCompany}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('memberposition_nonmembercompany')))])],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormText',{attrs:{\"value\":_vm.value.nonMemberAddress,\"label\":_vm.$t('memberposition.nonmemberaddress'),\"name\":\"memberposition_nonmemberaddress\",\"validations\":\"required|max:200|min:3\",\"has-error\":_vm.errors.has('memberposition_nonmemberaddress'),\"required\":true},on:{\"input\":_vm.onInputNonMemberAddress}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('memberposition_nonmemberaddress')))])],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-4\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormText',{attrs:{\"value\":_vm.value.nonMemberPostcode,\"label\":_vm.$t('memberposition.nonmemberpostcode'),\"name\":\"memberposition_nonmemberpostcode\",\"validations\":\"required|max:25|min:5\",\"required\":true,\"has-error\":_vm.errors.has('memberposition_nonmemberpostcode')},on:{\"input\":_vm.onInputNonMemberPostcode}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('memberposition_nonmemberpostcode')))])],1)]),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormText',{attrs:{\"value\":_vm.value.nonMemberPostoffice,\"label\":_vm.$t('memberposition.nonmemberpostoffice'),\"name\":\"memberposition_nonmemberpostoffice\",\"validations\":\"required|max:255|min:2\",\"required\":\"true\",\"has-error\":_vm.errors.has('memberposition_nonmemberpostoffice')},on:{\"input\":_vm.onInputNonMemberPostoffice}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('memberposition_nonmemberpostoffice')))])],1)])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-6 col-md-4\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:((!_vm.localVal.nonMemberEmail || !_vm.value.nonMemberEmail || _vm.localVal.nonMemberEmail.length < 1 || _vm.value.nonMemberEmail.length < 1)),expression:\"(!localVal.nonMemberEmail || !value.nonMemberEmail || localVal.nonMemberEmail.length < 1 || value.nonMemberEmail.length < 1)\"}],staticClass:\"form-group\"},[_c('SprFormText',{attrs:{\"value\":_vm.value.nonMemberPhone,\"label\":_vm.$t('memberposition.nonmemberphone-required'),\"name\":\"memberposition_nonmemberphonerequired\",\"validations\":_vm.showErrorNonMemberPhone,\"use-tooltip\":true,\"tooltip-message\":_vm.$t('info.nonregister-emailphone'),\"has-error\":_vm.$validator.errors.has('memberposition_nonmemberphonerequired')},on:{\"input\":_vm.onInputNonMemberPhoneRequired}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('memberposition_nonmemberphonerequired')))])],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!(!_vm.localVal.nonMemberEmail || !_vm.value.nonMemberEmail || _vm.localVal.nonMemberEmail.length < 1 || _vm.value.nonMemberEmail.length < 1)),expression:\"!(!localVal.nonMemberEmail || !value.nonMemberEmail || localVal.nonMemberEmail.length < 1 || value.nonMemberEmail.length < 1)\"}],staticClass:\"form-group\"},[_c('SprFormText',{attrs:{\"value\":_vm.value.nonMemberPhone,\"label\":_vm.$t('memberposition.nonmemberphone'),\"name\":\"memberposition_nonmemberphone\",\"use-tooltip\":true,\"tooltip-message\":_vm.$t('info.nonregister-emailphone'),\"validations\":{regex: /^\\+?([\\(\\)0-9\\s]+)$/, max:100 },\"has-error\":_vm.$validator.errors.has('memberposition_nonmemberphone')},on:{\"input\":_vm.onInputNonMemberPhone}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('memberposition_nonmemberphone')))])],1)]),_c('div',{staticClass:\"col-12 col-sm-6 col-md-4\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:((!_vm.localVal.nonMemberPhone || !_vm.value.nonMemberPhone || _vm.localVal.nonMemberPhone.length < 1 || _vm.value.nonMemberPhone.length < 1)),expression:\"(!localVal.nonMemberPhone || !value.nonMemberPhone || localVal.nonMemberPhone.length < 1 || value.nonMemberPhone.length < 1)\"}],staticClass:\"form-group\"},[_c('SprFormText',{attrs:{\"value\":_vm.value.nonMemberEmail,\"label\":_vm.$t('memberposition.nonmemberemail-required'),\"name\":\"memberposition_nonmemberemailrequired\",\"validations\":_vm.showErrorNonMemberEmail,\"use-tooltip\":true,\"tooltip-message\":_vm.$t('info.nonregister-emailphone'),\"has-error\":_vm.$validator.errors.has('memberposition_nonmemberemailrequired')},on:{\"input\":_vm.onInputNonMemberEmailRequired}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('memberposition_nonmemberemailrequired')))])],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!(!_vm.localVal.nonMemberPhone || !_vm.value.nonMemberPhone || _vm.localVal.nonMemberPhone.length < 1 || _vm.value.nonMemberPhone.length < 1)),expression:\"!(!localVal.nonMemberPhone || !value.nonMemberPhone || localVal.nonMemberPhone.length < 1 || value.nonMemberPhone.length < 1)\"}],staticClass:\"form-group\"},[_c('SprFormText',{attrs:{\"value\":_vm.value.nonMemberEmail,\"label\":_vm.$t('memberposition.nonmemberemail'),\"name\":\"memberposition_nonmemberemail\",\"validations\":\"email|max:100\",\"use-tooltip\":true,\"tooltip-message\":_vm.$t('info.nonregister-emailphone'),\"has-error\":_vm.$validator.errors.has('memberposition_nonmemberemail')},on:{\"input\":_vm.onInputNonMemberEmail}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('memberposition_nonmemberemail')))])],1)])])]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-4\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormDatePicker',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],ref:\"termstart\",attrs:{\"label\":_vm.$t('memberposition.termstart'),\"value\":_vm.value.termStart,\"name\":\"memberposition_termstart\",\"has-error\":_vm.errors.has('memberposition_termstart')},on:{\"input\":_vm.onInputTermStart}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('memberposition_termstart')))]),_c('SprHiddenDateField',{ref:\"electeddate\",attrs:{\"name\":\"memberpositionelecteddate\",\"value\":_vm.meetingDate}})],1)]),_c('div',{staticClass:\"col-12 col-sm-4\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormDatePicker',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|after:termstart'),expression:\"'required|after:termstart'\"}],attrs:{\"label\":_vm.$t('memberposition.termend'),\"value\":_vm.termEndDate,\"name\":\"memberposition_termend\",\"has-error\":_vm.errors.has('memberposition_termend')},on:{\"input\":_vm.onInputTermEnd}}),_c('span',{staticClass:\"errormessage\"},[_vm._v(_vm._s(_vm.errors.first('memberposition_termend')))])],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"sprtypeahead\"},[_c('div',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.label)+\" \"),(_vm.required)?_c('span',{staticClass:\"is-required\"},[_vm._v(\"*\")]):_vm._e()]),_c('VueTypeaheadBootstrap',{attrs:{\"data\":_vm.values,\"value\":_vm.localVal,\"size\":\"lg\",\"serializer\":_vm.serializer,\"input-class\":_vm.inputClass,\"max-matches\":_vm.maxMatches,\"min-matching-chars\":_vm.minMatchingChars,\"input-name\":_vm.name},on:{\"hit\":_vm.onHit,\"input\":_vm.onInput}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport VueTypeaheadBootstrap from 'vue-typeahead-bootstrap/src/components/VueTypeaheadBootstrap.vue'\r\n\r\nexport default Vue.extend({\r\n name: 'SprTypeahead',\r\n components: { VueTypeaheadBootstrap },\r\n // eslint-disable-next-line\r\n $_veeValidate: {\r\n value (this: any) {\r\n return this.localVal\r\n },\r\n rejectsFalse: true\r\n },\r\n props: {\r\n value: {\r\n type: [String, Object],\r\n default: ''\r\n },\r\n values: {\r\n type: Array,\r\n default: () => []\r\n },\r\n label: {\r\n type: String,\r\n default: ''\r\n },\r\n name: {\r\n type: String,\r\n default: ''\r\n },\r\n hasError: {\r\n type: Boolean,\r\n default: false\r\n },\r\n maxMatches: {\r\n type: Number,\r\n default: 20\r\n },\r\n minMatchingChars: {\r\n type: Number,\r\n default: 1\r\n },\r\n serializer: {\r\n type: Function,\r\n default: function (s: any) {\r\n return s.text ?? s\r\n }\r\n },\r\n // whether the field is required\r\n required: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n computed: {\r\n localVal (this: any) {\r\n if (!this.value) return ''\r\n return (typeof this.value === 'string') ? this.value : this.value.text\r\n },\r\n inputClass (this: any) {\r\n return this.hasError ? 'has-error' : ''\r\n }\r\n },\r\n methods: {\r\n // when a value is selected from the dropdown\r\n onHit (val: Record) {\r\n this.$emit('hit', val)\r\n },\r\n onInput (val: Record) {\r\n this.$emit('input', val)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprTypeahead.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprTypeahead.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SprTypeahead.vue?vue&type=template&id=4633b958\"\nimport script from \"./SprTypeahead.vue?vue&type=script&lang=ts\"\nexport * from \"./SprTypeahead.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SprTypeahead.vue?vue&type=style&index=0&id=4633b958&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"sprhiddendatefield\"},[_c('input',{attrs:{\"type\":\"hidden\"},domProps:{\"value\":_vm.value},on:{\"input\":_vm.sendValue}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\n/*\r\n This component seems pointless, but is needed to validate v-validate :before and :after validations if you do not use a field with a date set.\r\n This forces the output to date rather than a string from a normal input hidden field.\r\n*/\r\nexport default Vue.extend({\r\n name: 'SprHiddenDateField',\r\n props: {\r\n value: {\r\n type: Date,\r\n required: true\r\n }\r\n },\r\n methods: {\r\n sendValue (val: Date) {\r\n this.$emit('input', new Date(val))\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprHiddenDateField.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SprHiddenDateField.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SprHiddenDateField.vue?vue&type=template&id=748adc08&scoped=true\"\nimport script from \"./SprHiddenDateField.vue?vue&type=script&lang=ts\"\nexport * from \"./SprHiddenDateField.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SprHiddenDateField.vue?vue&type=style&index=0&id=748adc08&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"748adc08\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport { TranslateResult } from 'vue-i18n'\r\nimport SprFormDropdown from '@/components/forms/SprFormDropdown.vue'\r\nimport SprFormDatePicker from '@/components/forms/SprFormDatePicker.vue'\r\nimport SprTypeahead from '@/components/forms/SprTypeahead.vue'\r\nimport SprFormText from '@/components/forms/SprFormText.vue'\r\nimport SprHiddenDateField from '@/components/forms/SprHiddenDateField.vue'\r\nimport { getFirstDayOfYear, getLastDayOfYear } from '@/helpers/datehelper'\r\nimport { MemberLightResponse, PositionResponse } from '@/types'\r\nimport { MemberPositionFormData } from '@/types/custom'\r\nimport { membersService } from '@/services'\r\nimport { MembershipStatus } from '@/types/enums'\r\n\r\n\r\n\r\nexport default Vue.extend({\r\n name: 'MemberPositionForm',\r\n inject: ['$validator'], // inject the parent validator as it is the external button that does the validation\r\n components: { SprFormDropdown, SprFormDatePicker, SprTypeahead, SprFormText, SprHiddenDateField },\r\n props: {\r\n sectionId: {\r\n type: Number,\r\n required: true\r\n },\r\n value: {\r\n type: Object as () => MemberPositionFormData,\r\n required: true\r\n },\r\n isAdd: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data (this: Vue) {\r\n return {\r\n members: [] as Array,\r\n positions: [] as Array,\r\n isMember: true\r\n }\r\n },\r\n computed: {\r\n localVal (): MemberPositionFormData {\r\n return Vue.observable(this.value as MemberPositionFormData)\r\n },\r\n termEndDate (): Date {\r\n if (!this.localVal) return new Date()\r\n return this.localVal.termEnd\r\n },\r\n isMemberUniqueName (): string {\r\n const unique = Date.now()\r\n return `ismember_${unique}`\r\n },\r\n selectedMember (): string {\r\n if (this.value.memberId) {\r\n // @ts-ignore\r\n const member = this.membersList.find(x => x.value === this.value.memberId.toString())\r\n\r\n if (member) {\r\n return member.text\r\n }\r\n }\r\n return ''\r\n },\r\n canShowMemberNonMemberSelection (): boolean {\r\n // if the position is only for members, hide the choice\r\n const position = this.positions.find((x: PositionResponse) => x.id === this.value.positionId)\r\n return position ? !position.requiresMembership : false\r\n },\r\n positionTypeString (): string {\r\n // @ts-ignore\r\n if (this.value.positionId) {\r\n // @ts-ignore\r\n return this.value.positionId.toString()\r\n } else {\r\n return ''\r\n }\r\n },\r\n membersList (): Array> {\r\n const memberArr = this.members as Array\r\n const retArr = memberArr.filter(x => x.membershipStatus.id === MembershipStatus.ACTIVE).map((member: MemberLightResponse) => {\r\n return { text: this.getMemberString(member), value: member.id.toString() }\r\n })\r\n\r\n return retArr\r\n },\r\n positionsList (): Array> {\r\n const isMember = this.isMember\r\n const allowedPositions = this.positions.filter((x: PositionResponse) => {\r\n return !isMember ? !x.requiresMembership : true // for non members, only allow assigning to non member positions\r\n }) as Array\r\n let retArr = allowedPositions?.map((position: PositionResponse) => {\r\n // return { text: position.name.toString(), value: position.id.toString() }\r\n const positionIdName = this.getPositionIdName(position.id)\r\n return { text: positionIdName, value: position.id.toString() }\r\n })\r\n\r\n if (!retArr) retArr = []\r\n retArr.unshift({ text: `${this.$t('dropdown.choose')}`, value: '' })\r\n return retArr\r\n },\r\n meetingDate (): Date {\r\n const meetingDate = this.$store.state.meetings.selectedMeeting.dateHeld\r\n meetingDate.setUTCHours(0)\r\n meetingDate.setUTCMinutes(0)\r\n meetingDate.setUTCSeconds(0)\r\n meetingDate.setUTCMilliseconds(0)\r\n return meetingDate\r\n },\r\n hasNoPhone (): boolean {\r\n return this.value.nonMemberPhone.length === 0\r\n },\r\n hasNoEmail (): boolean {\r\n return this.value.nonMemberEmail.length === 0\r\n },\r\n showErrorNonMemberPhone (): object {\r\n // email address AND phone number need to be \"in error\" only if both of the fields are empty.\r\n if (this.value.nonMemberEmail.length === 0) {\r\n //console.log('email is empty, phone should be required')\r\n return { required: true, regex: /^\\+?([\\(\\)0-9\\s]+)$/, max: 100 } //return true in :has-errors\r\n } else {\r\n //console.log('email has value, phone should not be required')\r\n return { regex: /^\\+?([\\(\\)0-9\\s]+)$/, max: 100 }\r\n }\r\n },\r\n showErrorNonMemberEmail (): string {\r\n // email address AND phone number need to be \"in error\" only if both of the fields are empty.\r\n if (this.value.nonMemberPhone.length === 0) {\r\n //console.log('phone is empty, email should be required')\r\n return 'required|email|max:100' //return true in :has-errors\r\n } else {\r\n //console.log('phone has value, email should not be required')\r\n return 'email|max:100'\r\n }\r\n }\r\n },\r\n methods: {\r\n getMemberString (member: MemberLightResponse): string {\r\n let str = `${member.lastName}, ${member.firstName}`\r\n let substr = ``\r\n if (member.address && !member.isPublishProhibited) {\r\n substr += `${member.address}`\r\n if (substr) { substr += ` ,` }\r\n substr += `${member.phoneNumber}`\r\n if (substr) { substr += ` ,` }\r\n substr += `${member.emailAddress}`\r\n }\r\n\r\n if (substr) { str += ` (${substr})` }\r\n\r\n return str\r\n },\r\n getPositionIdName (type: number): TranslateResult {\r\n return this.$t(`positionId-${type}`)\r\n },\r\n findMemberByName (this: any, name: string): MemberLightResponse | undefined {\r\n return this.members.find((x: MemberLightResponse) => this.getMemberString(x).toLowerCase() === name)\r\n },\r\n findMember (this: any, id: number): MemberLightResponse | undefined {\r\n return this.members.find((x: MemberLightResponse) => x.id === id)\r\n },\r\n findPosition (this: any, id: number): PositionResponse {\r\n return this.positions.find((x: PositionResponse) => x.id === id)\r\n },\r\n onMemberSelected (val: Record) {\r\n const temp = Object.assign({}, this.value) as MemberPositionFormData\r\n temp.memberId = Number(val.value)\r\n // @ts-ignore\r\n this.send(temp)\r\n },\r\n onMemberTextInput (val: string) {\r\n // if this name does not exist in the list of members, clear the memberposition\r\n // @ts-ignore\r\n if (!this.findMemberByName(val)) {\r\n const temp = Object.assign({}, this.value) as MemberPositionFormData\r\n temp.memberId = 0\r\n // @ts-ignore\r\n this.send(temp)\r\n }\r\n },\r\n onInputPositionType (val: string) {\r\n const temp = Object.assign({}, this.value) as MemberPositionFormData\r\n temp.positionId = Number(val)\r\n // Set the default term length on changing position\r\n const position: PositionResponse | null = this.$store.state.meetings.positionsOfTrust.find((x: PositionResponse) => {\r\n return x.id === temp.positionId\r\n })\r\n\r\n if (!position) {\r\n return\r\n }\r\n\r\n this.$emit('positionTypeUpdated', Number(temp.positionId))\r\n\r\n this.send(temp)\r\n },\r\n onInputNonMemberFirstname (val: string) {\r\n const temp = Object.assign({}, this.value) as MemberPositionFormData\r\n temp.nonMemberFirstname = val\r\n // @ts-ignore\r\n this.send(temp)\r\n },\r\n onInputNonMemberLastname (val: string) {\r\n const temp = Object.assign({}, this.value) as MemberPositionFormData\r\n temp.nonMemberLastname = val\r\n // @ts-ignore\r\n this.send(temp)\r\n },\r\n onInputNonMemberCompany (val: string) {\r\n const temp = Object.assign({}, this.value) as MemberPositionFormData\r\n temp.nonMemberCompany = val\r\n // @ts-ignore\r\n this.send(temp)\r\n },\r\n onInputNonMemberAddress (val: string) {\r\n const temp = Object.assign({}, this.value) as MemberPositionFormData\r\n temp.nonMemberAddress = val\r\n // @ts-ignore\r\n this.send(temp)\r\n },\r\n onInputNonMemberPostcode (val: string) {\r\n const temp = Object.assign({}, this.value) as MemberPositionFormData\r\n temp.nonMemberPostcode = val\r\n // @ts-ignore\r\n this.send(temp)\r\n },\r\n onInputNonMemberPostoffice (val: string) {\r\n const temp = Object.assign({}, this.value) as MemberPositionFormData\r\n temp.nonMemberPostoffice = val\r\n // @ts-ignore\r\n this.send(temp)\r\n },\r\n onInputNonMemberPhone (val: string) {\r\n const temp = Object.assign({}, this.value) as MemberPositionFormData\r\n temp.nonMemberPhone = val\r\n this.localVal.nonMemberPhone = val\r\n // @ts-ignore\r\n this.send(temp)\r\n setTimeout(() => {\r\n this.$validator.validate('memberposition_nonmemberemail')\r\n this.$validator.validate('memberposition_nonmemberphone')\r\n }, 0)\r\n },\r\n onInputNonMemberEmail (val: string) {\r\n const temp = Object.assign({}, this.value) as MemberPositionFormData\r\n temp.nonMemberEmail = val\r\n this.localVal.nonMemberEmail = val\r\n // @ts-ignore\r\n this.send(temp)\r\n setTimeout(() => {\r\n this.$validator.validate('memberposition_nonmemberemail')\r\n this.$validator.validate('memberposition_nonmemberphone')\r\n }, 0)\r\n },\r\n onInputNonMemberPhoneRequired (val: string) {\r\n const temp = Object.assign({}, this.value) as MemberPositionFormData\r\n temp.nonMemberPhone = val\r\n this.localVal.nonMemberPhone = val\r\n // @ts-ignore\r\n this.send(temp)\r\n setTimeout(() => {\r\n this.$validator.validate('memberposition_nonmemberemailrequired')\r\n this.$validator.validate('memberposition_nonmemberphonerequired')\r\n }, 0)\r\n },\r\n onInputNonMemberEmailRequired (val: string) {\r\n const temp = Object.assign({}, this.value) as MemberPositionFormData\r\n temp.nonMemberEmail = val\r\n this.localVal.nonMemberEmail = val\r\n // @ts-ignore\r\n this.send(temp)\r\n setTimeout(() => {\r\n this.$validator.validate('memberposition_nonmemberemailrequired')\r\n this.$validator.validate('memberposition_nonmemberphonerequired')\r\n }, 0)\r\n },\r\n onInputTermStart (val: Date) {\r\n const temp = Object.assign({}, this.value) as MemberPositionFormData\r\n temp.termStart = val\r\n // @ts-ignore\r\n this.send(temp)\r\n },\r\n onInputTermEnd (val: Date) {\r\n const temp = Object.assign({}, this.value) as MemberPositionFormData\r\n temp.termEnd = val\r\n // @ts-ignore\r\n this.send(temp)\r\n },\r\n send (data: MemberPositionFormData) {\r\n // If member selected, remove non member data and vice versa\r\n if (this.isMember) {\r\n data.nonMemberAddress =\r\n data.nonMemberPostcode =\r\n data.nonMemberPostoffice =\r\n data.nonMemberEmail =\r\n data.nonMemberFirstname =\r\n data.nonMemberLastname =\r\n data.nonMemberCompany =\r\n data.nonMemberPhone = ''\r\n } else {\r\n data.memberId = undefined\r\n }\r\n this.$emit('input', data)\r\n }\r\n },\r\n\r\n created (this: any): void {\r\n // this.$store.commit('alert/dataLoading', null, { root: true })\r\n membersService.findBySectionId(Number(this.sectionId))\r\n .then(\r\n (sectionMembers: Array) => {\r\n this.members = sectionMembers\r\n // this.$store.commit('alert/dataLoaded', null, { root: true })\r\n },\r\n (error: any) => {\r\n // @ts-ignore\r\n this.$store.dispatch('alert/error', { message: this.$t('addmemberposition.getmembersfailed') })\r\n // eslint-disable-next-line no-console\r\n console.log(error)\r\n // this.$store.commit('alert/dataLoaded', null, { root: true })\r\n }\r\n )\r\n\r\n // only show active positions of trust\r\n this.positions = this.$store.getters['meetings/getActivePositionsOfTrust']()\r\n },\r\n mounted () {\r\n this.isMember = Boolean(this.value && this.value.memberId !== null)\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MemberPositionForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MemberPositionForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MemberPositionForm.vue?vue&type=template&id=ce5f7854&scoped=true\"\nimport script from \"./MemberPositionForm.vue?vue&type=script&lang=ts\"\nexport * from \"./MemberPositionForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MemberPositionForm.vue?vue&type=style&index=0&id=ce5f7854&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ce5f7854\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport authHeader from '@/helpers/auth/auth-header'\r\nimport { processJson } from '@/helpers/httphelper'\r\nimport SprButton from '@/components/forms/SprButton.vue'\r\nimport MemberPositionForm from '@/components/meetings/MemberPositionForm.vue'\r\nimport { formatErrors } from '@/helpers/validationhelper'\r\nimport { AddMemberPositionRequest, CheckSerialTermLimitsRequest, CheckNonMemberSerialTermLimitsRequest, CheckTermLengthRequest, RequestValidationResult, ErrorResult, MemberPositionResponse } from '@/types'\r\nimport { meetingService } from '@/services'\r\nimport { MemberPositionFormData, isRequestValidationResult } from '@/types/custom'\r\nimport { AlertTimeout, MeetingType } from '@/types/enums'\r\n\r\nexport default Vue.extend({\r\n name: 'AddMemberPosition',\r\n components: { MemberPositionForm, SprButton },\r\n props: {\r\n sectionId: {\r\n type: Number,\r\n required: true\r\n },\r\n meetingId: {\r\n type: Number,\r\n required: true\r\n }\r\n },\r\n data (this: Vue) {\r\n return {\r\n memberPosition: {} as AddMemberPositionRequest,\r\n showForm: false\r\n }\r\n },\r\n computed: {\r\n termEndByMeetingType () {\r\n // defaultPositionEndDate is set on the Backend MeetingDefaultPositionInfo.GetDefaultPositionEndDate(), accessed via GetMeeting or Add on Meetings Controller.\r\n const endFromInfo = this.$store.state.meetings.selectedMeeting.meetingDefaultPositionInfo.defaultPositionEndDate\r\n\r\n return endFromInfo\r\n },\r\n termStartByMeetingType () {\r\n // defaultPositionStartDate is set on the Backend MeetingDefaultPositionInfo.GetDefaultPositionStartDate(), accessed via GetMeeting or Add on Meetings Controller.\r\n const startFromInfo = this.$store.state.meetings.selectedMeeting.meetingDefaultPositionInfo.defaultPositionStartDate\r\n\r\n return startFromInfo\r\n },\r\n memberPositionFormData () {\r\n return {\r\n memberId: this.memberPosition.memberId,\r\n positionId: this.memberPosition.positionId,\r\n nonMemberAddress: this.memberPosition.nonMember.address,\r\n nonMemberEmail: this.memberPosition.nonMember.email,\r\n nonMemberFirstname: this.memberPosition.nonMember.firstname,\r\n nonMemberLastname: this.memberPosition.nonMember.lastname,\r\n nonMemberCompany: this.memberPosition.nonMember.company,\r\n nonMemberPhone: this.memberPosition.nonMember.phone,\r\n nonMemberPostcode: this.memberPosition.nonMember.postcode,\r\n nonMemberPostoffice: this.memberPosition.nonMember.postoffice,\r\n termEnd: this.memberPosition.termEnd,\r\n termStart: this.memberPosition.termStart\r\n } as MemberPositionFormData\r\n }\r\n },\r\n methods: {\r\n formatParametrizedError (err: ErrorResult): string {\r\n const template = err.translationKey ? this.$t(err.translationKey) : err.error\r\n let errorMessage = template.toString()\r\n if (err.hasTranslationParameters) {\r\n const parameters = err.translationParameters\r\n parameters.forEach(parameter => {\r\n errorMessage = errorMessage.toString().replace(parameter.key, parameter.value)\r\n })\r\n }\r\n return errorMessage\r\n },\r\n getValidationHtml (this: any, err: RequestValidationResult): string {\r\n const hasAnyParamerizedErrors = this.hasParamerizedErrors(err)\r\n if (hasAnyParamerizedErrors) {\r\n const errorMessages = err.errors.map((x: ErrorResult) => this.formatParametrizedError(x))\r\n const message = this.$t('validation.htmlheadertext').toString().replace('{{ errors }}', formatErrors(errorMessages))\r\n return message\r\n }\r\n const errorMessages = err.errors.map((x: ErrorResult) => x.translationKey ? this.$t(`validation.${x.translationKey}`) : x.error)\r\n const message = this.$t('validation.htmlheadertext').toString().replace('{{ errors }}', formatErrors(errorMessages))\r\n return message\r\n },\r\n hasParamerizedErrors (this: any, err: RequestValidationResult): boolean {\r\n let anyParamerizedErrors = false\r\n err.errors.forEach(element => {\r\n if (element.hasTranslationParameters) {\r\n anyParamerizedErrors = true\r\n }\r\n })\r\n return anyParamerizedErrors\r\n },\r\n reset (this: any): void {\r\n this.$validator.reset()\r\n this.memberPosition = this.getMemberPosition()\r\n this.showForm = false\r\n },\r\n getMemberPosition (this: any): AddMemberPositionRequest {\r\n const meetingDate = this.$store.state.meetings.selectedMeeting.dateHeld\r\n meetingDate.setUTCHours(0)\r\n meetingDate.setUTCMinutes(0)\r\n meetingDate.setUTCSeconds(0)\r\n meetingDate.setUTCMilliseconds(0)\r\n\r\n return {\r\n memberId: undefined,\r\n positionId: 0,\r\n meetingId: this.meetingId,\r\n nonMember: {\r\n firstname: '',\r\n lastname: '',\r\n address: '',\r\n phone: '',\r\n email: '',\r\n company: '',\r\n postcode: '',\r\n postoffice: ''\r\n },\r\n termStart: this.termStartByMeetingType, // firstOfNextYear, // should default to 1.1.(this year + 1)\r\n termEnd: this.termEndByMeetingType // endYear // should default to 31.12.(this year + 1)\r\n } as AddMemberPositionRequest\r\n },\r\n onInputMemberPositionForm (val: MemberPositionFormData) {\r\n if (val.positionId) {\r\n this.memberPosition.positionId = val.positionId\r\n }\r\n this.memberPosition.memberId = val.memberId\r\n this.memberPosition.nonMember.firstname = val.nonMemberFirstname\r\n this.memberPosition.nonMember.lastname = val.nonMemberLastname\r\n this.memberPosition.nonMember.address = val.nonMemberAddress\r\n this.memberPosition.nonMember.phone = val.nonMemberPhone\r\n this.memberPosition.nonMember.email = val.nonMemberEmail\r\n this.memberPosition.nonMember.company = val.nonMemberCompany\r\n this.memberPosition.nonMember.postcode = val.nonMemberPostcode\r\n this.memberPosition.nonMember.postoffice = val.nonMemberPostoffice\r\n this.memberPosition.termStart = val.termStart\r\n this.memberPosition.termEnd = val.termEnd\r\n },\r\n onPositionTypeUpdated (positionType: number) {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const meetingType = this.$store.state.meetings.selectedMeeting.type.id\r\n const dateHeld = this.$store.state.meetings.selectedMeeting.dateHeld\r\n\r\n const yearUrl = `${this.$store.state.config.ossiServiceBaseUrl}${this.$store.state.meetings.meetingTypeDefaultYearUrl}`.replace('{meetingType}', meetingType)\r\n const defaultDateEndForPosition = `${this.$store.state.config.ossiServiceBaseUrl}${this.$store.state.meetings.getDefaultEndDateForPositionUrl}`\r\n .replace('{dateHeld}', dateHeld.toISOString())\r\n .replace('{positionId}', positionType.toString())\r\n .replace('{meetingType}', meetingType)\r\n\r\n const yearPromise = fetch(yearUrl, requestOptions)\r\n .then(processJson)\r\n .catch(err => Promise.reject(err))\r\n\r\n const defaultDateEndForPositionPromise = fetch(defaultDateEndForPosition, requestOptions)\r\n .then(processJson)\r\n .catch(err => Promise.reject(err))\r\n\r\n return Promise.all([yearPromise, defaultDateEndForPositionPromise])\r\n .then(([year, defaultDateEnd]) => {\r\n Vue.set(this.memberPositionFormData, 'termEnd', defaultDateEnd)\r\n })\r\n .catch(err => Promise.reject(err))\r\n },\r\n onAdd (this: any): void {\r\n this.showForm = true\r\n },\r\n onCancel (this: any): void {\r\n this.reset()\r\n },\r\n onSave (this: any): void {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n this.$validator.validateAll()\r\n .then((success: boolean) => {\r\n if (!success) {\r\n return Promise.reject(new Error('Validation failed'))\r\n }\r\n // Check the proposed position is within term limits\r\n const termData: CheckTermLengthRequest = {\r\n positionId: this.memberPosition.positionId,\r\n termStart: this.memberPosition.termStart,\r\n termEnd: this.memberPosition.termEnd\r\n }\r\n\r\n return meetingService.checkTermLength(termData)\r\n })\r\n .then((termLengthValidationResult: RequestValidationResult): Promise => {\r\n // Check this position does not exceed serial term limits (eg cannot be a Puheenjohtaja more than 3 times in a row)\r\n return new Promise((resolve, reject) => {\r\n // If they are members, check the term limits\r\n if (this.memberPosition.memberId) {\r\n const serialData: CheckSerialTermLimitsRequest = {\r\n meetingId: this.meetingId,\r\n positionId: this.memberPosition.positionId,\r\n memberId: this.memberPosition.memberId\r\n }\r\n meetingService.checkAddSerialTermLimits(serialData).then((serialTermsValidationResult: RequestValidationResult) => {\r\n if (!termLengthValidationResult.isValid) {\r\n // amalgamate the term validation errors to this one\r\n for (const err of termLengthValidationResult.errors) {\r\n serialTermsValidationResult.errors.push(err)\r\n }\r\n }\r\n resolve(serialTermsValidationResult)\r\n })\r\n } else {\r\n // check non member term limits\r\n const serialData: CheckNonMemberSerialTermLimitsRequest = {\r\n meetingId: this.meetingId,\r\n positionId: this.memberPosition.positionId,\r\n firstName: this.memberPosition.nonMember.firstname,\r\n lastName: this.memberPosition.nonMember.lastname\r\n }\r\n meetingService.checkAddNonMemberSerialTermLimits(serialData).then((serialTermsValidationResult: RequestValidationResult) => {\r\n if (!termLengthValidationResult.isValid) {\r\n // amalgamate the term validation errors to this one\r\n for (const err of termLengthValidationResult.errors) {\r\n serialTermsValidationResult.errors.push(err)\r\n }\r\n }\r\n resolve(serialTermsValidationResult)\r\n })\r\n }\r\n })\r\n })\r\n .then((result: RequestValidationResult) => {\r\n //check this member position doesn't already exist\r\n return new Promise((resolve, reject) => {\r\n let existing: MemberPositionResponse | undefined\r\n if (this.memberPosition.memberId) {\r\n existing = this.$store.state.meetings.selectedMeeting.memberPositions.find((x: MemberPositionResponse) => x.position?.id === this.memberPosition.positionId && x.member?.id === this.memberPosition.memberId)\r\n } else {\r\n existing = this.$store.state.meetings.selectedMeeting.memberPositions.find((x: MemberPositionResponse) => x.position?.id === this.memberPosition.positionId && x.nonMember.firstName?.toLowerCase() === this.memberPosition.nonMember.firstname?.toLowerCase() && x.nonMember.lastName?.toLowerCase() === this.memberPosition.nonMember.lastname?.toLowerCase())\r\n }\r\n\r\n if (existing) {\r\n result.errors.push(\r\n {\r\n error: this.$t('editmeeting.memberpositionalreadyexists')\r\n } as ErrorResult\r\n )\r\n result.isValid = false\r\n }\r\n if (result.isValid) {\r\n // All good so far, try saving next.\r\n resolve(result)\r\n } else {\r\n // We have collected all the errors at this point. No point in carrying on to saving, reject and show them\r\n reject(result)\r\n }\r\n })\r\n })\r\n .then((result: RequestValidationResult) => {\r\n // Do the actual saving, if there are no errors\r\n return new Promise((resolve, reject) => {\r\n this.$store.dispatch('meetings/addPositionOfTrust', this.memberPosition).then((success: MemberPositionResponse) => {\r\n resolve(success)\r\n }, (err: any | RequestValidationResult) => {\r\n reject(err)\r\n })\r\n })\r\n })\r\n .then((response: MemberPositionResponse) => {\r\n this.$emit('add-memberposition', response)\r\n this.reset()\r\n this.$store.dispatch('alert/success', { message: this.$t('editmeeting.updatesuccess'), timeout: AlertTimeout.SHORT })\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n })\r\n .catch((errors: any | RequestValidationResult) => {\r\n // Show the errors if there are any\r\n const checkIsRequestValidationResult = isRequestValidationResult(errors)\r\n if (checkIsRequestValidationResult) {\r\n this.$store.dispatch('alert/error', { message: this.getValidationHtml(errors, this.$t), isHtml: true })\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.memberpositionaddfailed') })\r\n }\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n })\r\n }\r\n },\r\n created (this: any): void {\r\n this.reset()\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddMemberPosition.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddMemberPosition.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AddMemberPosition.vue?vue&type=template&id=95da5720&scoped=true\"\nimport script from \"./AddMemberPosition.vue?vue&type=script&lang=ts\"\nexport * from \"./AddMemberPosition.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AddMemberPosition.vue?vue&type=style&index=0&id=95da5720&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"95da5720\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"meetingmemberlist\"},[(_vm.value.length === 0)?_c('div',{staticClass:\"no-members\"},[_vm._v(\" \"+_vm._s(_vm.$t('meetingmemberlist.nomembers'))+\" \")]):_vm._e(),_vm._l((_vm.value),function(mempos,index){return _c('div',{key:index,staticClass:\"member\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-10 col-sm-5 col-md-5 positiondetails\"},[_c('div',{staticClass:\"position\",attrs:{\"aria-label\":\"Toggle to edit the member, if you have permissions\"},on:{\"click\":function($event){return _vm.viewMember(mempos.id)}}},[_vm._v(\" \"+_vm._s(_vm.getPositionIdName(mempos.position.id))+\" \"),(mempos.crmErrorMessages)?_c('span',{staticClass:\"crm-error-warning\",attrs:{\"title\":_vm.$t('memberposition.crmerrorstitle')}},[_c('font-awesome-icon',{attrs:{\"icon\":\"exclamation-triangle\"}})],1):_vm._e()]),(!_vm.isEditing || _vm.isEditing && _vm.shownRow !== mempos.id)?_c('div',{staticClass:\"fullname\",attrs:{\"aria-label\":\"The full name of the member\"}},[(mempos.isNonMember)?_c('span',[_vm._v(_vm._s(mempos.nonMember.firstName)+\" \"+_vm._s(mempos.nonMember.lastName))]):_c('span',[_vm._v(_vm._s(mempos.member.firstName)+\" \"+_vm._s(mempos.member.lastName))]),(mempos.isNonMember)?_c('font-awesome-icon',{attrs:{\"icon\":\"user-slash\",\"title\":_vm.$t('memberposition.isnonmember')}}):_vm._e()],1):_vm._e()]),_c('div',{staticClass:\"col-2 col-sm-2 col-md-1 order-sm-last order-md-last order-lg-last text-right\"},[(!_vm.isEditable && _vm.isRowShown(mempos.id))?_c('font-awesome-icon',{staticClass:\"action\",attrs:{\"icon\":\"angle-up\",\"title\":_vm.$t('meetingmemberlist.moreinfo'),\"aria-label\":\"View more information about the member.\"},on:{\"click\":function($event){return _vm.showHideMoreDetails(mempos.id)}}}):_vm._e(),(!_vm.isEditable && !_vm.isRowShown(mempos.id))?_c('font-awesome-icon',{staticClass:\"action\",attrs:{\"icon\":\"angle-down\",\"title\":_vm.$t('meetingmemberlist.moreinfo'),\"aria-label\":\"Hide more information about the member.\"},on:{\"click\":function($event){return _vm.showHideMoreDetails(mempos.id)}}}):_vm._e(),(_vm.isEditable && !_vm.isEditing)?_c('font-awesome-icon',{staticClass:\"action\",attrs:{\"icon\":\"pencil-alt\",\"title\":_vm.$t('meetingmemberlist.edit'),\"aria-label\":\"Edit the member position.\"},on:{\"click\":function($event){return _vm.editMember(mempos.id)}}}):_vm._e()],1),_c('div',{staticClass:\"col-12 col-sm-5 col-md-6 terminfo\"},[(!_vm.isEditing || _vm.isEditing && _vm.shownRow !== mempos.id)?_c('div',{staticClass:\"term\"},[_vm._v(\" \"+_vm._s(_vm.dateFormat(mempos.termStart))+\" – \"+_vm._s(_vm.dateFormat(mempos.termEnd))+\" \")]):_vm._e()])]),(_vm.isEditing && _vm.shownRow === mempos.id)?_c('div',{staticClass:\"row editrow\"},[_c('div',{staticClass:\"col-12\"},[_c('MemberPositionForm',{attrs:{\"section-id\":_vm.sectionId},model:{value:(_vm.memberPositionData),callback:function ($$v) {_vm.memberPositionData=$$v},expression:\"memberPositionData\"}})],1),_c('div',{staticClass:\"col-12 col-md-8\"},[_c('SprButton',{staticClass:\"button savebutton\",attrs:{\"compact\":\"\",\"primary\":\"\",\"text\":_vm.$t('meetingmemberlist.save')},on:{\"click\":_vm.onSave}}),_c('SprButton',{staticClass:\"button cancelbutton\",attrs:{\"compact\":\"\",\"text\":_vm.$t('meetingmemberlist.cancel')},on:{\"click\":_vm.onCancel}})],1),_c('div',{staticClass:\"col-12 col-md-4 text-right\"},[_c('SprButton',{staticClass:\"button removebutton\",attrs:{\"compact\":\"\",\"text\":_vm.$t('meetingmemberlist.removememberposition')},on:{\"click\":_vm.onRemove}})],1)]):_vm._e(),(!_vm.isEditing && _vm.shownRow === mempos.id)?_c('div',{staticClass:\"row moredetails\"},[_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('div',[(!mempos.isNonMember)?_c('span',{staticClass:\"status\"},[_vm._v(\" \"+_vm._s(_vm.getMembershipStatus(mempos.member.membershipStatus.id))+\" \")]):_vm._e()]),(mempos.isNonMember)?_c('div',[_vm._v(\" \"+_vm._s(mempos.nonMember.email)+\" \")]):_vm._e(),(!mempos.isNonMember && !mempos.member.isPublishProhibited)?_c('div',[_c('font-awesome-icon',{attrs:{\"icon\":\"envelope\",\"title\":_vm.$t('member.email')}}),_vm._v(\" \"+_vm._s(mempos.member.email)+\" \")],1):_vm._e(),_c('div',[_c('span',{staticClass:\"dataid\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"id-card\",\"title\":_vm.$t('member.sprid')}})],1),(!mempos.isNonMember)?_c('span',[_vm._v(_vm._s(mempos.member.sprId))]):_c('span',[_vm._v(_vm._s(_vm.$t('memberposition.isnonmember')))])]),(!mempos.isNonMember && mempos.showTermOrdinal)?_c('div',{staticClass:\"termordinal\"},[_vm._v(\" \"+_vm._s(_vm.termOrdinalFormat(mempos.termOrdinal))+\" \")]):_vm._e()]),_c('div',{staticClass:\"col-12 col-sm-6\"},[_c('div',{staticClass:\"feature\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('memberposition.electeddate')))]),_vm._v(\" \"+_vm._s(_vm.dateFormat(mempos.electedDate))+\" \")]),(!mempos.isNonMember)?_c('div',{staticClass:\"feature\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('member.paymentdate-short')))]),_vm._v(\" \"+_vm._s(_vm.dateFormat(mempos.member.paymentDate))+\" \")]):_vm._e()])]):_vm._e()])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { TranslateResult } from 'vue-i18n'\r\nimport moment from 'moment'\r\nimport SprButton from '@/components/forms/SprButton.vue'\r\nimport SprFormDatePicker from '@/components/forms/SprFormDatePicker.vue'\r\nimport MemberPositionForm from '@/components/meetings/MemberPositionForm.vue'\r\nimport { MemberPositionResponse, UpdateMemberPositionRequest } from '@/types'\r\nimport { BoardMemberData, MemberPositionFormData } from '@/types/custom.ts'\r\nimport { CodeCategory } from '@/types/enums'\r\n\r\nexport default Vue.extend({\r\n name: 'MeetingMemberList',\r\n components: { SprButton, MemberPositionForm },\r\n props: {\r\n value: {\r\n type: Array as () => Array,\r\n default: undefined\r\n },\r\n sectionId: {\r\n type: Number,\r\n required: true\r\n },\r\n meetingId: {\r\n type: Number,\r\n required: true\r\n },\r\n isReadOnly: {\r\n type: Boolean,\r\n default: true\r\n },\r\n isEditable: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data () {\r\n return {\r\n shownRow: undefined as undefined | number,\r\n isEditing: false,\r\n memberPositionData: {\r\n memberId: undefined,\r\n positionId: undefined,\r\n nonMemberAddress: '',\r\n nonMemberPostcode: '',\r\n nonMemberPostoffice: '',\r\n nonMemberEmail: '',\r\n nonMemberFirstname: '',\r\n nonMemberLastname: '',\r\n nonMemberCompany: '',\r\n nonMemberPhone: '',\r\n termEnd: new Date(),\r\n termStart: new Date()\r\n } as MemberPositionFormData\r\n }\r\n },\r\n computed: {\r\n updateMemberRequest (this: any) {\r\n return {\r\n id: this.shownRow,\r\n memberId: this.memberPositionData.memberId,\r\n meetingId: this.meetingId,\r\n nonMember: {\r\n address: this.memberPositionData.nonMemberAddress,\r\n postcode: this.memberPositionData.nonMemberPostcode,\r\n postoffice: this.memberPositionData.nonMemberPostoffice,\r\n email: this.memberPositionData.nonMemberEmail,\r\n firstname: this.memberPositionData.nonMemberFirstname,\r\n lastname: this.memberPositionData.nonMemberLastname,\r\n company: this.memberPositionData.nonMemberCompany,\r\n phone: this.memberPositionData.nonMemberPhone\r\n },\r\n termEnd: this.memberPositionData.termEnd,\r\n termStart: this.memberPositionData.termStart\r\n } as UpdateMemberPositionRequest\r\n }\r\n },\r\n methods: {\r\n dateFormat (date: Date): string {\r\n return moment(date).format('D.M.YYYY')\r\n },\r\n termOrdinalFormat (ordinal: string): string {\r\n return `${this.$t('memberposition.termordinal')}: ${ordinal}.`\r\n },\r\n getMembershipStatus (statusId: number): TranslateResult {\r\n return this.$t(`membershipstatus-${statusId}`)\r\n },\r\n getPositionIdName (type: number): TranslateResult {\r\n return this.$t(`positionId-${type}`)\r\n },\r\n viewMember (this: any, id: number) {\r\n this.isEditing = false\r\n if (this.shownRow !== id) {\r\n this.shownRow = id\r\n } else {\r\n this.shownRow = null\r\n }\r\n },\r\n editMember (this: any, id: number) {\r\n this.isEditing = true\r\n if (this.shownRow !== id) {\r\n this.shownRow = id\r\n\r\n const memberPos = this.value.find((x: MemberPositionResponse) => x.id === this.shownRow) as MemberPositionResponse\r\n if (memberPos) {\r\n this.memberPositionData = {\r\n memberId: memberPos.memberId,\r\n positionId: memberPos.positionId,\r\n nonMemberCompany: memberPos.nonMember.company,\r\n nonMemberAddress: memberPos.nonMember.address,\r\n nonMemberPostcode: memberPos.nonMember.postcode,\r\n nonMemberPostoffice: memberPos.nonMember.postoffice,\r\n nonMemberEmail: memberPos.nonMember.email,\r\n nonMemberFirstname: memberPos.nonMember.firstName,\r\n nonMemberLastname: memberPos.nonMember.lastName,\r\n nonMemberPhone: memberPos.nonMember.phone,\r\n termEnd: memberPos.termEnd,\r\n termStart: memberPos.termStart\r\n }\r\n }\r\n }\r\n },\r\n showHideMoreDetails (this: any, id: number) {\r\n this.shownRow = (this.shownRow === id) ? undefined : id\r\n },\r\n isRowShown (this: any, id: number): boolean {\r\n return this.shownRow === id\r\n },\r\n removeMember (mempos: MemberPositionResponse): void {\r\n if (confirm(this.$t('meetingmemberlist.removeconfirm').toString())) {\r\n const removalData = {\r\n id: mempos.id,\r\n positionId: mempos.position?.id,\r\n memberId: mempos.member?.id\r\n } as BoardMemberData\r\n this.$emit('remove-member', removalData)\r\n }\r\n },\r\n onRemove () {\r\n if (!this.shownRow) return\r\n const mempos = this.value.find((x: MemberPositionResponse) => {\r\n return x.id === this.shownRow\r\n })\r\n if (mempos) {\r\n this.removeMember(mempos)\r\n this.isEditing = false\r\n this.shownRow = undefined\r\n }\r\n },\r\n onSave () {\r\n this.$validator.validateAll().then((result: boolean) => {\r\n if (result) {\r\n this.$emit('update-memberposition', this.updateMemberRequest)\r\n this.isEditing = false\r\n this.shownRow = undefined\r\n }\r\n })\r\n },\r\n onCancel () {\r\n this.isEditing = false\r\n this.shownRow = undefined\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MeetingMemberList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MeetingMemberList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MeetingMemberList.vue?vue&type=template&id=2b079f06\"\nimport script from \"./MeetingMemberList.vue?vue&type=script&lang=ts\"\nexport * from \"./MeetingMemberList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MeetingMemberList.vue?vue&type=style&index=0&id=2b079f06&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.memberPositions.length)?_c('div',{staticClass:\"meeting-crm-errors\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('memberposition.crmerrorstitle')))])])]),_c('div',{staticClass:\"row errorstable\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"table-responsive-sm\"},[_c('table',{staticClass:\"table\"},[_c('caption',[_vm._v(\"List of Errors from the CRM\")]),_c('thead',[_c('tr',[_c('th',{staticClass:\"d-table-cell d-md-none status\"}),_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('memberposition.position'))+\" \")]),_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('memberposition.member'))+\" \")]),_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('memberposition.errors'))+\" \")])])]),_c('tbody',_vm._l((_vm.memberPositions),function(mp){return _c('tr',{key:mp.id},[_c('td',{attrs:{\"scope\":\"row\"}},[_c('strong',[_vm._v(_vm._s(mp.position.name))])]),_c('td',[_vm._v(\" \"+_vm._s(mp.member.firstName)+\" \"+_vm._s(mp.member.lastName)+\" \")]),_c('td',[_c('ul',{staticClass:\"error-list\"},_vm._l((mp.crmErrorMessages),function(error){return _c('li',{key:error},[_vm._v(\" \"+_vm._s(error)+\" \")])}),0)])])}),0)])])])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { MemberPositionResponse } from '@/types'\r\n\r\nexport default Vue.extend({\r\n name: 'MeetingCrmErrors',\r\n props: {\r\n memberPositions: {\r\n type: Array,\r\n default: () => [] as Array\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MeetingCrmErrors.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MeetingCrmErrors.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MeetingCrmErrors.vue?vue&type=template&id=ba822d9e&scoped=true\"\nimport script from \"./MeetingCrmErrors.vue?vue&type=script&lang=ts\"\nexport * from \"./MeetingCrmErrors.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MeetingCrmErrors.vue?vue&type=style&index=0&id=ba822d9e&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ba822d9e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row activepositionsoftrust\"},[_c('div',{staticClass:\"col-12\"},[_c('table',{staticClass:\"table\"},[_c('caption',[_vm._v(\"Current Positions Of Trust in the section\")]),_c('tbody',_vm._l((_vm.sortedPositions),function(memberposition){return _c('tr',{key:memberposition.id,staticClass:\"positionoftrust\"},[_c('td',{staticClass:\"positionrow\",attrs:{\"scope\":\"col\"}},[_c('div',{staticClass:\"position\"},[_vm._v(\" \"+_vm._s(_vm.getPositionIdName(memberposition.position.id))+\" \")]),(memberposition.member)?_c('div',{staticClass:\"member\"},[_vm._v(\" \"+_vm._s(memberposition.member.firstName)+\" \"+_vm._s(memberposition.member.lastName)+\" \")]):_c('div',{staticClass:\"member\"},[_vm._v(\" \"+_vm._s(memberposition.nonMember.firstName)+\" \"+_vm._s(memberposition.nonMember.lastName)+\" \")])]),_c('td',{staticClass:\"datecolumn\",attrs:{\"scope\":\"col\"}},[(!_vm.isApprovedMeeting(memberposition))?_c('div',[_c('MeetingStatusIndicator',{attrs:{\"status\":memberposition.meetingStatus.id}})],1):_vm._e(),_vm._v(\" \"+_vm._s(_vm.formatDate(memberposition.termStart))+\" - \"+_vm._s(_vm.formatDate(memberposition.termEnd))+\" \")]),(_vm.hasActions)?_c('td',{staticClass:\"actions\",attrs:{\"scope\":\"col\"}},[_c('div',{staticClass:\"actionlink\"},[(_vm.showMeetingLink)?_c('div',{on:{\"click\":function($event){return _vm.onViewMeetingClicked(memberposition)}}},[_vm._v(\" \"+_vm._s(_vm.$t('meeting.view'))+\" \")]):_vm._e()])]):_vm._e()])}),0)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport MeetingStatusIndicator from '@/components/meetings/MeetingStatus.vue'\r\nimport { MemberPositionSummaryResponse } from '@/types'\r\nimport { TranslateResult } from 'vue-i18n'\r\nimport { finnishShortDate } from '@/helpers/datehelper'\r\nimport { MeetingStatus } from '@/types/enums'\r\n\r\nexport default Vue.extend({\r\n name: 'ActivePositionsOfTrust',\r\n components: { MeetingStatusIndicator },\r\n props: {\r\n positions: {\r\n type: Array as () => Array,\r\n default: []\r\n },\r\n showMeetingLink: {\r\n type: Boolean,\r\n default: true\r\n }\r\n },\r\n computed: {\r\n hasActions (): boolean {\r\n // there will be more actions in the future. For the moment only one.\r\n return this.showMeetingLink\r\n },\r\n sortedPositions (): Array {\r\n // sort by meeting status descending\r\n return this.positions.slice().sort((a: MemberPositionSummaryResponse, b: MemberPositionSummaryResponse) => {\r\n return b.meetingStatus.id - a.meetingStatus.id\r\n })\r\n }\r\n },\r\n methods: {\r\n formatDate (date: Date): string {\r\n return finnishShortDate(date)\r\n },\r\n getPositionIdName (type: number): TranslateResult {\r\n return this.$t(`positionId-${type}`)\r\n },\r\n onViewMeetingClicked (position: MemberPositionSummaryResponse): void {\r\n this.$emit('viewMeetingClicked', position)\r\n },\r\n isApprovedMeeting (position: MemberPositionSummaryResponse): boolean {\r\n return position.meetingStatus.id === MeetingStatus.APPROVED\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ActivePositionsOfTrust.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ActivePositionsOfTrust.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ActivePositionsOfTrust.vue?vue&type=template&id=2ea1b6f8&scoped=true\"\nimport script from \"./ActivePositionsOfTrust.vue?vue&type=script&lang=ts\"\nexport * from \"./ActivePositionsOfTrust.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ActivePositionsOfTrust.vue?vue&type=style&index=0&id=2ea1b6f8&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2ea1b6f8\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport moment from 'moment'\r\nimport Back from '@/components/Back.vue'\r\nimport MeetingDetailsForm from '@/components/meetings/MeetingDetailsForm.vue'\r\nimport MeetingMinutesForm from '@/components/meetings/MeetingMinutesForm.vue'\r\nimport MeetingStatusIndicator from '@/components/meetings/MeetingStatus.vue'\r\nimport AddMemberPosition from '@/components/meetings/AddMemberPosition.vue'\r\nimport MeetingMemberList from '@/components/meetings/MeetingMemberList.vue'\r\nimport MeetingCrmErrors from '@/components/meetings/MeetingCrmErrors.vue'\r\nimport ActivePositionsOfTrust from '@/components/meetings/ActivePositionsOfTrust.vue'\r\nimport SprButton from '@/components/forms/SprButton.vue'\r\nimport { debounce } from '@/helpers/httphelper'\r\nimport { formatErrors } from '@/helpers/validationhelper'\r\nimport { meetingService } from '@/services/meeting.service'\r\nimport { AddMemberPositionRequest, UpdateMemberPositionRequest, MemberPositionResponse, MemberPositionSummaryResponse, ErrorResult, RequestValidationResult } from '@/types'\r\nimport { BoardMemberData, isRequestValidationResult, MeetingDetailsData } from '@/types/custom'\r\nimport { MeetingStatus, AlertTimeout } from '@/types/enums'\r\n\r\nexport default Vue.extend({\r\n name: 'EditMeeting',\r\n components: {\r\n Back,\r\n MeetingStatusIndicator,\r\n MeetingDetailsForm,\r\n MeetingMinutesForm,\r\n AddMemberPosition,\r\n MeetingMemberList,\r\n MeetingCrmErrors,\r\n ActivePositionsOfTrust,\r\n SprButton\r\n },\r\n props: {\r\n sectionId: {\r\n type: String,\r\n required: true\r\n },\r\n meetingId: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n data () {\r\n return {\r\n meetingLoaded: false,\r\n memberPositions: [] as Array,\r\n debouncedFunction: Function as () => {},\r\n isMeetingEditable: false,\r\n sectionActivePositionsOfTrust: [] as Array\r\n }\r\n },\r\n computed: {\r\n createdDate (): string {\r\n return moment(this.$store.state.meetings.selectedMeeting.created).format('DD.MM.YYYY HH:mm')\r\n },\r\n lastModifiedDate (): string {\r\n return moment(this.$store.state.meetings.selectedMeeting.modified).format('DD.MM.YYYY HH:mm')\r\n },\r\n reportedBy (): string {\r\n return this.$store.state.meetings.selectedMeeting.reportedBy\r\n },\r\n createdBy (): string {\r\n return this.$store.state.meetings.selectedMeeting.createdBy\r\n },\r\n sectionIdNumber (): number {\r\n // because sectionId from the url is a string\r\n return Number(this.sectionId)\r\n },\r\n meetingIdNumber (): number {\r\n return Number(this.meetingId)\r\n },\r\n meetingDetails (): MeetingDetailsData {\r\n return {\r\n meetingType: this.$store.state.meetings.selectedMeeting.type.id,\r\n dateHeld: this.$store.state.meetings.selectedMeeting.dateHeld,\r\n name: this.$store.state.meetings.selectedMeeting.name,\r\n moreInfo: this.$store.state.meetings.selectedMeeting.moreInfo\r\n } as MeetingDetailsData\r\n },\r\n canApprove (): boolean {\r\n const claims = this.$store.state.authentication.claims\r\n\r\n return (claims.isInRoleSuperAdmin ||\r\n claims.isInRoleKT ||\r\n claims.isInRoleDistrictAdmin)\r\n },\r\n adminCanArchive (): boolean {\r\n const claims = this.$store.state.authentication.claims\r\n return claims.isInRoleSuperAdmin && this.$store.state.meetings.selectedMeeting.status.id === MeetingStatus.PENDINGAPPROVAL\r\n },\r\n isReadOnly (): boolean {\r\n const claims = this.$store.state.authentication.claims\r\n\r\n if (\r\n this.$store.state.meetings.selectedMeeting.status.id === MeetingStatus.APPROVED ||\r\n this.$store.state.meetings.selectedMeeting.status.id === MeetingStatus.PENDINGAPPROVAL ||\r\n this.$store.state.meetings.selectedMeeting.status.id === MeetingStatus.ARCHIVED) {\r\n return true\r\n }\r\n\r\n if (\r\n claims.isInRoleSuperAdmin ||\r\n claims.isInRoleKT ||\r\n claims.isInRoleDistrictAdmin) {\r\n return false\r\n }\r\n\r\n if (claims.isInRoleSectionAdmin) {\r\n return this.$store.state.meetings.selectedMeeting.status.id !== MeetingStatus.DRAFT\r\n }\r\n\r\n return true\r\n },\r\n isCreatedStatus (): boolean {\r\n return this.$store.state.meetings.selectedMeeting.status.id === MeetingStatus.DRAFT\r\n },\r\n isSubmittedStatus (): boolean {\r\n return this.$store.state.meetings.selectedMeeting.status.id === MeetingStatus.SUBMITTED\r\n },\r\n isReviewedStatus (): boolean {\r\n return this.$store.state.meetings.selectedMeeting.status.id === MeetingStatus.REVIEWED\r\n },\r\n hasCrmErrors (): boolean {\r\n const potErrors = this.memberPositions.filter((x: MemberPositionResponse) => x.crmErrorMessages?.length)\r\n return potErrors.length > 0\r\n },\r\n potWithCrmErrors (): Array {\r\n return this.memberPositions.filter((x: MemberPositionResponse) => x.crmErrorMessages?.length)\r\n }\r\n },\r\n methods: {\r\n loadMeeting (): void {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n meetingService.canEditMeeting(this.meetingIdNumber).then((result) => {\r\n this.isMeetingEditable = result\r\n })\r\n const promises = [\r\n this.$store.dispatch('sections/loadDetailed', this.sectionIdNumber),\r\n this.$store.dispatch('meetings/getMeeting', this.meetingIdNumber)\r\n ]\r\n Promise.all(promises)\r\n .then(() => {\r\n this.memberPositions = this.$store.state.meetings.selectedMeeting.memberPositions\r\n this.sectionActivePositionsOfTrust = this.$store.state.sections.selectedSection.positionsOfTrust\r\n .filter((s: MemberPositionSummaryResponse) => {\r\n return s.termEnd > new Date() &&\r\n s.meetingStatus.id !== MeetingStatus.DRAFT\r\n })\r\n .sort((a: MemberPositionSummaryResponse, b: MemberPositionSummaryResponse) => {\r\n return a.termStart.getTime() - b.termStart.getTime()\r\n })\r\n this.meetingLoaded = true\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n }).catch(fail => {\r\n this.meetingLoaded = true\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n\r\n if (fail.status === 500) {\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.loadfailed'), timeout: AlertTimeout.PERMANENT })\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.loadfailed'), surviveRouteChange: true })\r\n this.$router.push('/')\r\n }\r\n })\r\n },\r\n formatParametrizedError (err: ErrorResult): string {\r\n const template = err.translationKey ? this.$t(err.translationKey) : err.error\r\n let errorMessage = template.toString()\r\n if (err.hasTranslationParameters) {\r\n const parameters = err.translationParameters\r\n parameters.forEach(parameter => {\r\n errorMessage = errorMessage.toString().replace(parameter.key, parameter.value)\r\n })\r\n }\r\n return errorMessage\r\n },\r\n getValidationHtml (this: any, err: RequestValidationResult): string {\r\n const hasAnyParamerizedErrors = this.hasParamerizedErrors(err)\r\n if (hasAnyParamerizedErrors) {\r\n const errorMessages = err.errors.map((x: ErrorResult) => this.formatParametrizedError(x))\r\n const message = this.$t('validation.htmlheadertext').toString().replace('{{ errors }}', formatErrors(errorMessages))\r\n return message\r\n }\r\n const errorMessages = err.errors.map((x: ErrorResult) => x.translationKey ? this.$t(`validation.${x.translationKey}`) : x.error)\r\n const message = this.$t('validation.htmlheadertext').toString().replace('{{ errors }}', formatErrors(errorMessages))\r\n return message\r\n },\r\n hasParamerizedErrors (this: any, err: RequestValidationResult): boolean {\r\n let anyParamerizedErrors = false\r\n err.errors.forEach(element => {\r\n if (element.hasTranslationParameters) {\r\n anyParamerizedErrors = true\r\n }\r\n })\r\n return anyParamerizedErrors\r\n },\r\n showErrors (err: any | RequestValidationResult): void {\r\n // Show the errors if there are any\r\n const checkIsRequestValidationResult = isRequestValidationResult(err)\r\n if (checkIsRequestValidationResult) {\r\n this.$store.dispatch('alert/error', { message: this.getValidationHtml(err), isHtml: true })\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.memberpositionaddfailed') })\r\n }\r\n },\r\n onAddMemberPosition (memberPosition: AddMemberPositionRequest): void {\r\n this.memberPositions = this.$store.state.meetings.selectedMeeting.memberPositions\r\n },\r\n onUpdateMemberPosition (data: UpdateMemberPositionRequest): void {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n this.$store.dispatch('meetings/updatePositionOfTrust', data).then(success => {\r\n this.memberPositions = this.$store.state.meetings.selectedMeeting.memberPositions\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$store.dispatch('alert/success', { message: this.$t('editmeeting.updatesuccess'), timeout: AlertTimeout.SHORT })\r\n }, (err: any | RequestValidationResult) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n if (isRequestValidationResult(err)) {\r\n this.$store.dispatch('alert/error', { message: this.getValidationHtml(err), isHtml: true })\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.memberpositionaddfailed') })\r\n }\r\n }).catch(err => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.memberpositionaddfailed') })\r\n })\r\n },\r\n onRemoveMemberPosition (data: BoardMemberData): void {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n this.$store.dispatch('meetings/removePositionOfTrust', data.id).then(success => {\r\n this.memberPositions = this.$store.state.meetings.selectedMeeting.memberPositions\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$store.dispatch('alert/success', { message: this.$t('editmeeting.updatesuccess'), timeout: AlertTimeout.SHORT })\r\n }).catch(err => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.memberpositionremovefailed') })\r\n })\r\n },\r\n onMeetingDetailsChanged (details: MeetingDetailsData) {\r\n this.$store.commit('meetings/updateMeetingDetails', details)\r\n this.debouncedFunction()\r\n },\r\n debouncedMeetingDetailsChanged () {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n this.$store.dispatch('meetings/updateMeeting', this.$store.state.meetings.selectedMeeting).then(\r\n (result) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$store.dispatch('alert/success', { message: this.$t('editmeeting.updatesuccess'), timeout: AlertTimeout.SHORT })\r\n }, (err: any | RequestValidationResult) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n if (isRequestValidationResult(err)) {\r\n this.$store.dispatch('alert/error', { message: this.getValidationHtml(err), isHtml: true })\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.savefailed') })\r\n }\r\n })\r\n .catch(err => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.savefailed') })\r\n })\r\n },\r\n onMeetingMinutesSentByMailChanged (val: boolean): void {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n this.editSentByMail(val).then((success) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n })\r\n },\r\n editSentByMail (val: boolean): Promise {\r\n return new Promise((resolve, reject) => {\r\n this.$store.dispatch('meetings/updateMeetingMinutesSentByMail', val).then((result) => {\r\n this.$store.dispatch('alert/success', { message: this.$t('editmeeting.updatesuccess'), timeout: AlertTimeout.SHORT })\r\n resolve(result)\r\n }, (err: any | RequestValidationResult) => {\r\n this.showErrors(err)\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n resolve(false)\r\n }).catch((err: Error) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.savefailed') })\r\n resolve(false)\r\n })\r\n })\r\n },\r\n onSubmit (): void {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n this.$store.dispatch('meetings/submitMeeting', this.meetingId).then((success) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n if (success) {\r\n this.$store.dispatch('alert/success', { message: this.$t('editmeeting.submitsuccess'), surviveRouteChange: true })\r\n this.$router.push(`/sections/${this.sectionId}/meetings`)\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.submitfailed') })\r\n }\r\n }, (err: any | RequestValidationResult) => {\r\n this.showErrors(err)\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n }).catch(error => {\r\n // eslint-disable-next-line no-console\r\n console.log(error)\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.submitfailed') })\r\n })\r\n }\r\n }, (error) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$store.dispatch('alert/error', { message: error })\r\n })\r\n },\r\n /* Commented this out for now (#8838). We might still need it in the future? Clean this up if not needed\r\n onReviewed (): void {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n this.$store.dispatch('meetings/reviewedMeeting', this.meetingId).then((success) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n if (success) {\r\n this.$store.dispatch('alert/success', { message: this.$t('editmeeting.reviewedsuccess'), surviveRouteChange: true })\r\n this.$router.push(`/sections/${this.sectionId}/meetings`)\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.reviewfailed') })\r\n }\r\n }, (err: any | RequestValidationResult) => {\r\n this.showErrors(err)\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n }).catch(error => {\r\n // eslint-disable-next-line no-console\r\n console.log(error)\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.reviewfailed') })\r\n })\r\n }\r\n }, (error) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$store.dispatch('alert/error', { message: error })\r\n })\r\n },*/\r\n onArchived (): void {\r\n if (confirm(this.$t('editmeeting.archiveconfirm').toString())) {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n this.$store.dispatch('meetings/archivedMeeting', this.meetingId).then((success) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n if (success) {\r\n this.$store.dispatch('alert/success', { message: this.$t('editmeeting.archivedsuccess'), surviveRouteChange: true })\r\n this.$router.push(`/sections/${this.sectionId}/meetings`)\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.archivefailed') })\r\n }\r\n }, (err: any | RequestValidationResult) => {\r\n this.showErrors(err)\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n }).catch(error => {\r\n // eslint-disable-next-line no-console\r\n console.log(error)\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.archivefailed') })\r\n })\r\n }\r\n }, (error) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$store.dispatch('alert/error', { message: error })\r\n })\r\n }\r\n },\r\n onTemplate (): void {\r\n this.$router.push(`/sections/${this.sectionId}`)\r\n },\r\n onApproved (): void {\r\n if (confirm(this.$t('editmeeting.approveconfirm').toString())) {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n this.$store.dispatch('meetings/approveMeeting', this.meetingId).then((success) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n if (success) {\r\n this.$store.dispatch('alert/success', { message: this.$t('editmeeting.approvedsuccess'), surviveRouteChange: true })\r\n this.$router.push(`/sections/${this.sectionId}/meetings`)\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.approvefailed') })\r\n }\r\n }, (err: any | RequestValidationResult) => {\r\n this.showErrors(err)\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n }).catch(error => {\r\n // eslint-disable-next-line no-console\r\n console.log(error)\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.approvefailed') })\r\n })\r\n }\r\n }, (error) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$store.dispatch('alert/error', { message: error })\r\n })\r\n }\r\n },\r\n onDelete (): void {\r\n if (confirm(this.$t('editmeeting.deleteconfirm').toString())) {\r\n this.$store.dispatch('meetings/deleteMeeting', this.meetingId).then((success) => {\r\n this.$store.dispatch('alert/success', { message: this.$t('editmeeting.deletesuccess'), surviveRouteChange: true })\r\n this.$router.push(`/sections/${this.sectionId}/meetings`)\r\n }).catch(err => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('editmeeting.deletefailed') })\r\n })\r\n }\r\n },\r\n onViewMeetingClicked (position: MemberPositionSummaryResponse): void {\r\n this.$router.push(`/sections/${this.sectionId}/meetings/${position.meetingId}`)\r\n }\r\n },\r\n mounted (): void {\r\n this.loadMeeting()\r\n\r\n this.debouncedFunction = debounce(this.debouncedMeetingDetailsChanged, 800)\r\n },\r\n watch: {\r\n $route (to, from) {\r\n this.loadMeeting()\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditMeeting.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditMeeting.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EditMeeting.vue?vue&type=template&id=73c5a25e&scoped=true\"\nimport script from \"./EditMeeting.vue?vue&type=script&lang=ts\"\nexport * from \"./EditMeeting.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EditMeeting.vue?vue&type=style&index=0&id=73c5a25e&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73c5a25e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"employee-list\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 backlink\"},[_c('Back')],1)]),_c('div',{staticClass:\"header-container\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('employee.employeelisttitle')))]),_c('SprButton',{staticClass:\"add-button\",attrs:{\"text\":_vm.$t('employee.add')},on:{\"click\":_vm.showAddEmployeeForm}})],1),(_vm.showModal)?_c('div',{staticClass:\"modal\"},[_c('div',{staticClass:\"modal-content\"},[_c('EmployeeDetailsForm',{attrs:{\"employee\":_vm.employeeForm,\"is-update\":_vm.isUpdate},on:{\"close\":_vm.closeEmployeeForm}})],1)]):_vm._e(),_c('table',{staticClass:\"table table-borderless\"},[_vm._m(0),_c('tbody',_vm._l((_vm.employees),function(employee){return _c('tr',{key:employee.id},[_c('td',[_vm._v(_vm._s(employee.id))]),_c('td',[_vm._v(_vm._s(employee.firstName))]),_c('td',[_vm._v(_vm._s(employee.lastName))]),_c('td',[_vm._v(_vm._s(employee.email))]),_c('td',[_vm._v(_vm._s(employee.districtName))]),_c('td',[_vm._v(_vm._s(employee.roleName))]),_c('td',[_c('SprButton',{staticClass:\"action download\",attrs:{\"compact\":\"\",\"min-padding\":\"\",\"text\":_vm.$t('employee.update')},on:{\"click\":function($event){return _vm.showUpdateEmployeeForm(employee)}}}),_c('SprButton',{staticClass:\"action download\",attrs:{\"compact\":\"\",\"min-padding\":\"\",\"text\":_vm.$t('employee.delete')},on:{\"click\":function($event){return _vm.deleteEmployee(employee.id)}}})],1)])}),0)])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"ID\")]),_c('th',[_vm._v(\"First Name\")]),_c('th',[_vm._v(\"Last Name\")]),_c('th',[_vm._v(\"Email\")]),_c('th',[_vm._v(\"District\")]),_c('th',[_vm._v(\"Role\")]),_c('th',[_vm._v(\"Actions\")])])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"employeedetailsform\"},[_c('h2',[_vm._v(_vm._s(_vm.isUpdate ? 'Update Employee' : 'Add Employee'))]),_c('form',{on:{\"submit\":function($event){$event.preventDefault();_vm.isUpdate ? _vm.updateEmployee() : _vm.addEmployee()}}},[_c('div',[_c('label',{attrs:{\"for\":\"firstName\"}},[_vm._v(\"First Name:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.employee.firstName),expression:\"employee.firstName\"}],attrs:{\"type\":\"text\",\"required\":\"\"},domProps:{\"value\":(_vm.employee.firstName)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.employee, \"firstName\", $event.target.value)}}})]),_c('div',[_c('label',{attrs:{\"for\":\"lastName\"}},[_vm._v(\"Last Name:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.employee.lastName),expression:\"employee.lastName\"}],attrs:{\"type\":\"text\",\"required\":\"\"},domProps:{\"value\":(_vm.employee.lastName)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.employee, \"lastName\", $event.target.value)}}})]),_c('div',[_c('label',{attrs:{\"for\":\"email\"}},[_vm._v(\"Email:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.employee.email),expression:\"employee.email\"}],attrs:{\"type\":\"email\",\"required\":\"\"},domProps:{\"value\":(_vm.employee.email)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.employee, \"email\", $event.target.value)}}})]),_c('SprFormDropdown',{attrs:{\"options\":_vm.districts,\"label\":\"District\"},model:{value:(_vm.selectedDistrictId),callback:function ($$v) {_vm.selectedDistrictId=$$v},expression:\"selectedDistrictId\"}}),_c('SprFormDropdown',{attrs:{\"options\":_vm.roles,\"label\":\"Role\"},model:{value:(_vm.selectedRoleId),callback:function ($$v) {_vm.selectedRoleId=$$v},expression:\"selectedRoleId\"}}),_c('div',{staticClass:\"form-actions\"},[_c('SprButton',{staticClass:\"savebutton\",attrs:{\"type\":\"submit\",\"compact\":\"\",\"primary\":\"\",\"text\":_vm.submitButtonText}}),_c('SprButton',{attrs:{\"type\":\"button\",\"compact\":\"\",\"text\":_vm.$t('addmemberposition.cancel')},on:{\"click\":_vm.cancelForm}})],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { EmployeeDto, RoleDto, DistrictSummaryResponse } from '@/types/index'\r\nimport SprButton from '@/components/forms/SprButton.vue'\r\nimport SprFormDropdown from '@/components/forms/SprFormDropdown.vue'\r\n\r\nexport interface TemplateComponentData {\r\n acceptedRoles: string[]\r\n}\r\n\r\nexport default Vue.extend({\r\n components: {\r\n SprButton, SprFormDropdown\r\n },\r\n name: 'EmployeeDetailsForm',\r\n props: {\r\n employee: {\r\n type: Object as () => EmployeeDto,\r\n default: () => {\r\n return {\r\n id: undefined,\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n districtId: -1,\r\n districtName: '',\r\n roleId: 0,\r\n roleName: ''\r\n } as EmployeeDto\r\n }\r\n },\r\n isUpdate: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data () {\r\n return {\r\n acceptedRoles: ['SuperAdmin', 'KT', 'DistrictAdmin', 'DistrictUser'] // Define the accepted roles\r\n }\r\n },\r\n methods: {\r\n cancelForm () {\r\n this.$emit('close')\r\n },\r\n addEmployee () {\r\n this.$store.dispatch('employees/addEmployee', this.employee).then(() => {\r\n this.$emit('close')\r\n })\r\n },\r\n updateEmployee () {\r\n this.$store.dispatch('employees/updateEmployee', this.employee).then(() => {\r\n this.$emit('close')\r\n })\r\n }\r\n },\r\n computed: {\r\n selectedRoleId: {\r\n get (): string {\r\n return this.employee.roleId.toString()\r\n },\r\n set (val: string): void {\r\n this.employee.roleId = parseInt(val)\r\n }\r\n },\r\n selectedDistrictId: {\r\n get (): string {\r\n return this.employee.districtId.toString()\r\n },\r\n set (val: string): void {\r\n this.employee.districtId = parseInt(val)\r\n }\r\n },\r\n roles (): any[] {\r\n return this.$store.state.roles.all\r\n .filter((role: RoleDto) => this.acceptedRoles.includes(role.roleName))\r\n .map((role: RoleDto) => {\r\n return {\r\n text: role.roleName,\r\n value: role.roleId\r\n }\r\n })\r\n },\r\n districts (): any[] {\r\n return this.$store.state.districts.all.map((district: DistrictSummaryResponse) => {\r\n return {\r\n text: district.name,\r\n value: district.id\r\n }\r\n })\r\n },\r\n submitButtonText (): string {\r\n return this.isUpdate ? 'Update' : 'Add'\r\n }\r\n }\r\n\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EmployeeDetailsForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EmployeeDetailsForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EmployeeDetailsForm.vue?vue&type=template&id=609f0c46&scoped=true\"\nimport script from \"./EmployeeDetailsForm.vue?vue&type=script&lang=ts\"\nexport * from \"./EmployeeDetailsForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EmployeeDetailsForm.vue?vue&type=style&index=0&id=609f0c46&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"609f0c46\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport EmployeeDetailsForm from '@/components/employees/EmployeeDetailsForm.vue'\r\nimport { EmployeeDto } from '@/types/index'\r\nimport SprButton from '@/components/forms/SprButton.vue'\r\nimport Back from '@/components/Back.vue'\r\n\r\nexport interface TemplateComponentData {\r\n showModal: boolean,\r\n showForm: boolean,\r\n isUpdate: boolean,\r\n employeeForm: EmployeeDto\r\n}\r\n\r\nexport default Vue.extend({\r\n components: {\r\n EmployeeDetailsForm, SprButton, Back\r\n },\r\n data() : TemplateComponentData {\r\n return {\r\n showModal: false,\r\n showForm: false,\r\n isUpdate: false,\r\n employeeForm: {\r\n id: undefined,\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n districtId: 0,\r\n districtName: '',\r\n roleId: 0,\r\n roleName: ''\r\n } as EmployeeDto\r\n } as TemplateComponentData\r\n },\r\n computed: {\r\n employees(): Array {\r\n return this.$store.state.employees.all\r\n }\r\n },\r\n methods: {\r\n loadLists() {\r\n this.$store.dispatch('districts/loadAll')\r\n this.$store.dispatch('roles/loadAll')\r\n },\r\n loadAll() {\r\n this.$store.dispatch('employees/loadAll')\r\n },\r\n deleteEmployee(id: number) {\r\n this.$store.dispatch('employees/deleteEmployee', id)\r\n },\r\n showAddEmployeeForm() {\r\n this.employeeForm = {\r\n id: undefined,\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n districtName: '',\r\n districtId: 0,\r\n roleName: '',\r\n roleId: 0\r\n } as EmployeeDto\r\n this.showModal = true;\r\n },\r\n closeEmployeeForm() {\r\n this.loadAll()\r\n this.showModal = false;\r\n this.isUpdate = false;\r\n },\r\n showUpdateEmployeeForm(employee: any) {\r\n this.employeeForm = { ...employee }\r\n this.showModal = true\r\n this.isUpdate = true\r\n }\r\n },\r\n created() {\r\n this.loadLists()\r\n this.loadAll()\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EmployeeList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EmployeeList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EmployeeList.vue?vue&type=template&id=154d7998&scoped=true\"\nimport script from \"./EmployeeList.vue?vue&type=script&lang=ts\"\nexport * from \"./EmployeeList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EmployeeList.vue?vue&type=style&index=0&id=154d7998&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"154d7998\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"external-form\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 backlink\"},[_c('Back')],1)]),_c('div',{staticClass:\"header-container\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('userAdmin.externalForms')))]),(!_vm.isAddFormVisible)?_c('sprbutton',{attrs:{\"compact\":\"\",\"text\":_vm.$t('userAdmin.externalFormsAdd')},on:{\"click\":_vm.showAddForm}}):_vm._e()],1),((!_vm.loading && _vm.externalFormsAvailable) || _vm.isAddFormVisible)?_c('div',[_c('ul',_vm._l((_vm.externalForms),function(row){return _c('li',{key:row.id},[_c('ExternalFormRow',{attrs:{\"name\":row.name,\"link\":row.link},on:{\"delete\":function($event){return _vm.deleteRow(row.id)}}})],1)}),0),(_vm.isAddFormVisible)?_c('ExternalFormRow',{attrs:{\"is-new\":_vm.isAddFormVisible},on:{\"save\":function($event){return _vm.addRow($event)},\"cancel\":_vm.cancelRow}}):_vm._e()],1):(_vm.loading)?_c('div',{staticClass:\"loading text-center brand-red\"},[_c('div',{staticClass:\"my-2\"}),_c('div',{staticClass:\"my-3\"},[_c('p',[_vm._v(_vm._s(_vm.$t('userAdmin.loading')))])])]):_c('div',{staticClass:\"loading text-center brand-red\"},[_c('div',{staticClass:\"my-3\"},[_vm._v(\" \"+_vm._s(_vm.$t('userAdmin.externalFormsNotAvailable'))+\" \")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(!_vm.isNew)?_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"input-container\"},[_c('span',{staticClass:\"input-text\"},[_vm._v(_vm._s(_vm.name))]),_c('a',{staticClass:\"input-text\",attrs:{\"href\":_vm.link,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.link))])]),_c('sprbutton',{attrs:{\"compact\":\"\",\"min-padding\":\"\",\"text\":_vm.$t('externalForm.delete')},on:{\"click\":_vm.deleteForm}})],1):_c('div',[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"input-container\"},[_c('SprFormText',{staticClass:\"input-text\",attrs:{\"hint\":_vm.$t('externalForm.link'),\"placeholder\":_vm.$t('externalForm.name')},model:{value:(_vm.formData.name),callback:function ($$v) {_vm.$set(_vm.formData, \"name\", $$v)},expression:\"formData.name\"}}),_c('SprFormText',{staticClass:\"input-text\",attrs:{\"hint\":_vm.$t('externalForm.link'),\"placeholder\":_vm.$t('externalForm.link')},model:{value:(_vm.formData.link),callback:function ($$v) {_vm.$set(_vm.formData, \"link\", $$v)},expression:\"formData.link\"}})],1),_c('sprbutton',{attrs:{\"compact\":\"\",\"min-padding\":\"\",\"text\":_vm.isNew ? _vm.$t('externalForm.add') : _vm.$t('externalForm.save')},on:{\"click\":function($event){return _vm.submitForm()}}}),_c('sprbutton',{attrs:{\"compact\":\"\",\"min-padding\":\"\",\"text\":_vm.$t('externalForm.cancel')},on:{\"click\":function($event){return _vm.cancel()}}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport SprFormText from '@/components/forms/SprFormText.vue'\r\n\r\nimport sprbutton from '@/components/forms/SprButton.vue'\r\nimport { ExternalFormUpdateDto } from '@/types/index'\r\n\r\nexport interface TemplateComponentData {\r\n isEditing: boolean,\r\n formData: ExternalFormUpdateDto\r\n }\r\n\r\nexport default Vue.extend({\r\n name: 'ExternalFormRow',\r\n components: { SprFormText, sprbutton },\r\n props: {\r\n name: {\r\n type: String,\r\n default: ''\r\n },\r\n link: {\r\n type: String,\r\n default: ''\r\n },\r\n isNew: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data () {\r\n return {\r\n isEditing: this.isNew,\r\n formData: {\r\n id: 0,\r\n name: this.name,\r\n link: this.link\r\n } as ExternalFormUpdateDto\r\n }\r\n },\r\n methods: {\r\n edit () {\r\n this.isEditing = true\r\n },\r\n cancel () {\r\n this.$emit('cancel')\r\n },\r\n submitForm () {\r\n this.$emit('save', this.formData)\r\n },\r\n deleteForm () {\r\n this.$emit('delete', this.formData.id)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ExternalFormRow.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ExternalFormRow.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ExternalFormRow.vue?vue&type=template&id=55a3618c&scoped=true\"\nimport script from \"./ExternalFormRow.vue?vue&type=script&lang=ts\"\nexport * from \"./ExternalFormRow.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ExternalFormRow.vue?vue&type=style&index=0&id=55a3618c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"55a3618c\",\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue'\r\nimport sprbutton from '@/components/forms/SprButton.vue'\r\nimport ExternalFormRow from './ExternalFormRow.vue'\r\nimport { ExternalFormUpdateDto } from '@/types/index'\r\nimport Back from '@/components/Back.vue'\r\nimport { AlertTimeout } from '@/types/enums'\r\n\r\n// the data object\r\nexport interface TemplateComponentData {\r\n externalForms: ExternalFormUpdateDto[],\r\n isAddFormVisible: boolean,\r\n isEditFormVisible: boolean,\r\n loading: boolean\r\n }\r\n\r\nexport default Vue.extend({\r\n name: 'ExternalForms',\r\n components: { sprbutton, Back, ExternalFormRow },\r\n data (): TemplateComponentData {\r\n return {\r\n externalForms: [] as ExternalFormUpdateDto[],\r\n isAddFormVisible: false,\r\n isEditFormVisible: false,\r\n loading: false\r\n }\r\n },\r\n computed: {\r\n externalFormsAvailable (): boolean {\r\n return this.externalForms && this.externalForms.length > 0\r\n }\r\n },\r\n created () {\r\n this.fetchExternalForms()\r\n },\r\n methods: {\r\n async fetchExternalForms () {\r\n try {\r\n this.loading = true\r\n this.$store.dispatch('externalForms/loadAll').then(s => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.externalForms = this.$store.state.externalForms.all\r\n })\r\n this.loading = false\r\n } catch (error) {\r\n console.error('Error fetching external forms:', error)\r\n }\r\n },\r\n showAddForm () {\r\n this.isAddFormVisible = true\r\n },\r\n async addRow (externalForm: {name: string, link: string }) {\r\n try {\r\n this.$store.dispatch('externalForms/addForm', externalForm).then(s => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n this.$store.dispatch('alert/success', { message: this.$t('externalform.addsuccess'), timeout: AlertTimeout.SHORT })\r\n\r\n this.fetchExternalForms()\r\n })\r\n this.isAddFormVisible = false\r\n } catch (error) {\r\n console.error('Error adding external form:', error)\r\n }\r\n },\r\n async deleteRow (id: number | undefined) {\r\n try {\r\n this.$store.dispatch('externalForms/deleteForm', id)\r\n\r\n this.externalForms = this.externalForms.filter(form => form.id !== id)\r\n this.$store.dispatch('alert/success', { message: this.$t('externalform.deletesuccess'), timeout: AlertTimeout.SHORT })\r\n } catch (error) {\r\n console.error('Error deleting external form:', error)\r\n }\r\n },\r\n cancelRow () {\r\n this.isAddFormVisible = false\r\n this.isEditFormVisible = false\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ExternalForms.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ExternalForms.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ExternalForms.vue?vue&type=template&id=70b732ea&scoped=true\"\nimport script from \"./ExternalForms.vue?vue&type=script&lang=ts\"\nexport * from \"./ExternalForms.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ExternalForms.vue?vue&type=style&index=0&id=70b732ea&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"70b732ea\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"reports\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 backlink\"},[_c('Back')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('reports')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h3',[_vm._v(_vm._s(_vm.sectionname))])])]),_c('div',{staticClass:\"row reportstitle\"},[_c('div',{staticClass:\"col\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('report.reports')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 report\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('report.boardmemberstitle')))])]),_c('div',{staticClass:\"col-12 col-sm-6 col-md-4\"},[_c('DatePicker',{attrs:{\"name\":\"searchdate\",\"label\":_vm.$t('report.searchdate')},model:{value:(_vm.searchDate),callback:function ($$v) {_vm.searchDate=$$v},expression:\"searchDate\"}})],1)]),_c('div',{staticClass:\"row buttons\"},[_c('div',{staticClass:\"col-12\"},[_c('SprButton',{attrs:{\"compact\":\"\",\"primary\":\"\",\"text\":_vm.$t('report.downloadpdf')},on:{\"click\":_vm.onBoardMembersReport}})],1)])])]),_c('div',{staticClass:\"row reportstitle\"},[_c('div',{staticClass:\"col\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('report.officialletterrequests')))])])]),_c('div',{staticClass:\"row officialletterrequeststable\"},[_c('div',{staticClass:\"col-12\"},[_c('OfficialLetterRequests',{attrs:{\"requests\":_vm.officialLetterRequests},on:{\"onDelete\":_vm.onDeleteOfficialLetterRequest}})],1),_c('div',{staticClass:\"col-12 buttons\"},[_c('SprButton',{attrs:{\"compact\":\"\",\"primary\":\"\",\"text\":_vm.$t('report.addnewofficialletterrequest')},on:{\"click\":_vm.onAddNewOfficialLetterRequest}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[(_vm.dataLoading)?_c('Loading'):_vm._e()],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"officialletterrequests\"},[(_vm.sortedRequests && _vm.sortedRequests.length)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"table-responsive\"},[_c('table',{staticClass:\"table table-borderless\"},[_c('caption',{staticClass:\"sr-only\"},[_vm._v(\" List of signing requests \")]),_c('thead',[_c('tr',[_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('officialletterrequest.registrationnumber'))+\" \")]),_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('officialletterrequest.date'))+\" \")]),_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('officialletterrequest.expirydate'))+\" \")]),(_vm.isKTOrAbove)?_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('officialletterrequest.section'))+\" \")]):_vm._e(),_c('th',{staticClass:\"d-none d-lg-table-cell\",attrs:{\"scope\":\"col\"}},[_vm._v(\" \"+_vm._s(_vm.$t('officialletterrequest.createdby'))+\" \")]),_c('th',{attrs:{\"scope\":\"col\",\"colspan\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.$t('officialletterrequest.status'))+\" \")])])]),_c('tbody',_vm._l((_vm.sortedRequests),function(request){return _c('tr',{key:request.id,class:_vm.isExpired(request) ? 'expired' : ''},[_c('td',[_c('span',{staticClass:\"link\",on:{\"click\":function($event){return _vm.gotoDocument(request)}}},[_vm._v(\" \"+_vm._s(request.id)+\" \")])]),_c('td',[(_vm.isKTOrAbove)?_c('span',{staticClass:\"link\",on:{\"click\":function($event){return _vm.gotoDocument(request)}}},[_vm._v(\" \"+_vm._s(_vm.formatDate(request.created))+\" \")]):_c('span',[_vm._v(_vm._s(_vm.formatDate(request.created)))])]),_c('td',[_vm._v(\" \"+_vm._s(_vm.formatDate(request.expiryDate))+\" \"),(_vm.isExpired(request))?_c('font-awesome-icon',{staticClass:\"expiredwarning\",attrs:{\"icon\":\"exclamation-circle\",\"title\":_vm.$t('officialletterrequest.requestexpiredwarning')}}):_vm._e()],1),(_vm.isKTOrAbove)?_c('td',[_vm._v(\" \"+_vm._s(request.section.name)+\" \")]):_vm._e(),_c('td',{staticClass:\"d-none d-lg-table-cell\"},[_vm._v(\" \"+_vm._s(request.requestedBy)+\" \")]),_c('td',[_vm._v(_vm._s(_vm.formatStatus(request.status)))]),_c('td',[(_vm.isKTOrAbove && _vm.isStatusRequested(request.status))?_c('SprButton',{staticClass:\"action\",attrs:{\"compact\":\"\",\"min-padding\":\"\",\"primary\":\"\",\"text\":_vm.$t('officialletterrequest.process')},on:{\"click\":function($event){return _vm.gotoDocument(request)}}}):_vm._e(),(request.document)?_c('SprButton',{staticClass:\"action download\",attrs:{\"compact\":\"\",\"min-padding\":\"\",\"text\":_vm.$t('officialletterrequest.download')},on:{\"click\":function($event){return _vm.downloadDocument(request)}}}):_vm._e(),(_vm.canDelete(request))?_c('SprButton',{staticClass:\"action\",attrs:{\"compact\":\"\",\"min-padding\":\"\",\"text\":_vm.$t('delete')},on:{\"click\":function($event){return _vm.deleteDocument(request)}}}):_vm._e()],1)])}),0)])])])]):_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('span',{staticClass:\"no-results\"},[_vm._v(_vm._s(_vm.$t('officialletterrequest.noresults')))])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport { TranslateResult } from 'vue-i18n'\r\nimport SprButton from '@/components/forms/SprButton.vue'\r\nimport { SignedDocumentResponse, OfficialLetterRequestResponse, OfficialLetterRequestStatusCode } from '@/types'\r\nimport { finnishShortDate } from '@/helpers/datehelper'\r\nimport { OfficialLetterRequestStatus } from '@/types/enums'\r\n\r\nexport default Vue.extend({\r\n name: 'OfficialLetterRequests',\r\n components: { SprButton },\r\n props: {\r\n requests: {\r\n type: Array as () => Array,\r\n required: true\r\n }\r\n },\r\n methods: {\r\n formatDate (date: Date) {\r\n return finnishShortDate(date)\r\n },\r\n formatStatus (status: OfficialLetterRequestStatusCode): TranslateResult {\r\n return this.$t(`officialletterrequeststatus-${status.id}`)\r\n },\r\n isStatusRequested (status: OfficialLetterRequestStatusCode): boolean {\r\n return status.id === OfficialLetterRequestStatus.REQUESTED\r\n },\r\n downloadDocument (request: OfficialLetterRequestResponse) {\r\n window.open(request.document.url)\r\n },\r\n gotoDocument (request: OfficialLetterRequestResponse) {\r\n this.$router.push(`/officialletterrequests/${request.id}`)\r\n },\r\n canDelete (x: OfficialLetterRequestResponse) {\r\n const userId = this.$store.state.authentication.claims?.ossiId\r\n if (!userId) {\r\n return false\r\n }\r\n return this.isKTOrAbove ||\r\n (x.statusId === OfficialLetterRequestStatus.REQUESTED && x.createdByMemberId === userId)\r\n },\r\n deleteDocument (request: OfficialLetterRequestResponse) {\r\n const txt = this.$t('officialletterrequest.deleteconfirm').toString()\r\n if (confirm(txt)) {\r\n this.$emit('onDelete', request)\r\n }\r\n },\r\n isExpired (request: OfficialLetterRequestResponse): boolean {\r\n return request.expiryDate ? new Date(request.expiryDate) < new Date() : false\r\n }\r\n },\r\n computed: {\r\n sortedRequests (): Array {\r\n if (!this.requests) return []\r\n return this.requests\r\n .filter((x: OfficialLetterRequestResponse) => {\r\n return x.statusId === OfficialLetterRequestStatus.REQUESTED || x.statusId === OfficialLetterRequestStatus.PROCESSED\r\n })\r\n .sort((x: OfficialLetterRequestResponse, y: OfficialLetterRequestResponse) => {\r\n return y.created.getTime() - x.created.getTime()\r\n })\r\n },\r\n isKTOrAbove (): boolean {\r\n return (\r\n this.$store.state.authentication.claims.isInRoleSuperAdmin ||\r\n this.$store.state.authentication.claims.isInRoleKT)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OfficialLetterRequests.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OfficialLetterRequests.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./OfficialLetterRequests.vue?vue&type=template&id=66fcd4ac&scoped=true\"\nimport script from \"./OfficialLetterRequests.vue?vue&type=script&lang=ts\"\nexport * from \"./OfficialLetterRequests.vue?vue&type=script&lang=ts\"\nimport style0 from \"./OfficialLetterRequests.vue?vue&type=style&index=0&id=66fcd4ac&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"66fcd4ac\",\n null\n \n)\n\nexport default component.exports","// import config from 'config'\r\nimport store from '@/store'\r\nimport authHeader from '@/helpers/auth/auth-header'\r\nimport { handleErrors, processJson } from '@/helpers/httphelper'\r\nimport {\r\n ReportBoardMembersRequest,\r\n OfficialLetterRequestResponse,\r\n AddOfficialLetterRequestRequest,\r\n ApproveOfficialLetterRequestRequest,\r\n SignedDocumentRequest,\r\n SignedDocumentResponse\r\n} from '@/types'\r\n\r\nfunction getBoardMembersPdf (data: ReportBoardMembersRequest): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(data)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.signingAgreement.getBoardMembersPdfUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(\r\n (response: Response) => {\r\n return response.arrayBuffer()\r\n }\r\n )\r\n .then((buffer: ArrayBuffer) => {\r\n return new Blob([buffer], { type: 'application/pdf' })\r\n })\r\n}\r\n\r\nfunction getSigningRightsMembersPdf (sectionId: number): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.signingAgreement.getSigningRightsMembersPdfUrl}`.replace('{id}', sectionId.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(\r\n (response: Response) => {\r\n return response.arrayBuffer()\r\n }\r\n )\r\n .then((buffer: ArrayBuffer) => {\r\n return new Blob([buffer], { type: 'application/pdf' })\r\n })\r\n}\r\n\r\nfunction getSigningRightsMembersPdfInEnglish (sectionId: number): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.signingAgreement.getSigningRightsMembersPdfUrlInEnglish}`.replace('{id}', sectionId.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(\r\n (response: Response) => {\r\n return response.arrayBuffer()\r\n }\r\n )\r\n .then((buffer: ArrayBuffer) => {\r\n return new Blob([buffer], { type: 'application/pdf' })\r\n })\r\n}\r\n\r\nfunction getOfficialLetterRequests (sectionId?: number): Promise> {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.signingAgreement.getOfficialLetterRequestsUrl}`.replace('{id}', sectionId ? sectionId.toString() : '')\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n response => response\r\n )\r\n}\r\n\r\nfunction getOfficialLetterRequestById (id: number): Promise {\r\n const requestOptions = {\r\n method: 'GET',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.signingAgreement.getOfficialLetterRequestByIdUrl}`.replace('{id}', id.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n response => response\r\n )\r\n}\r\n\r\nfunction addOfficialLetterRequest (data: AddOfficialLetterRequestRequest): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(data)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.signingAgreement.addOfficialLetterRequestUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n (response: boolean) => response\r\n )\r\n}\r\n\r\nfunction uploadSignedDocument (this: any, doc: SignedDocumentRequest): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(doc)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.signingAgreement.uploadSignedDocUrl}`\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n doc => {\r\n return (doc as SignedDocumentResponse)\r\n }\r\n ).catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction removeSignedDocument (id: number): Promise {\r\n const requestOptions = {\r\n method: 'DELETE',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.signingAgreement.removeSignedDocUrl}`.replace('{id}', id.toString())\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(() => true)\r\n .catch(err => Promise.reject(err))\r\n}\r\n\r\nfunction approveLetterRequest (request: ApproveOfficialLetterRequestRequest): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader(),\r\n body: JSON.stringify(request)\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.signingAgreement.approveLetterRequestUrl}`\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n () => true\r\n )\r\n}\r\n\r\nfunction archiveLetterRequest (id: number): Promise {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.signingAgreement.archiveLetterRequestUrl}`.replace('{id}', id.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n () => true\r\n )\r\n}\r\n\r\nfunction deleteLetterRequest (id: number): Promise {\r\n const requestOptions = {\r\n method: 'DELETE',\r\n headers: authHeader()\r\n }\r\n\r\n const url = `${store.state.config.ossiServiceBaseUrl}${store.state.signingAgreement.deleteLetterRequestUrl}`.replace('{id}', id.toString())\r\n\r\n return fetch(url, requestOptions)\r\n .then(handleErrors)\r\n .then(processJson)\r\n .then(\r\n () => true\r\n )\r\n}\r\n\r\nexport const signingAgreementService = {\r\n getBoardMembersPdf,\r\n getSigningRightsMembersPdf,\r\n getSigningRightsMembersPdfInEnglish,\r\n getOfficialLetterRequests,\r\n getOfficialLetterRequestById,\r\n addOfficialLetterRequest,\r\n uploadSignedDocument,\r\n removeSignedDocument,\r\n approveLetterRequest,\r\n archiveLetterRequest,\r\n deleteLetterRequest\r\n}","\r\nimport Vue from 'vue'\r\nimport Back from '@/components/Back.vue'\r\nimport DatePicker from '@/components/forms/SprFormDatePicker.vue'\r\nimport OfficialLetterRequests from '@/components/sections/OfficialLetterRequests.vue'\r\nimport SprButton from '@/components/forms/SprButton.vue'\r\nimport Loading from '@/components/Loading.vue'\r\nimport { SectionSummaryResponse, ReportBoardMembersRequest, SignedDocumentResponse, OfficialLetterRequestResponse } from '@/types'\r\nimport { sectionService } from '@/services/section.service'\r\nimport { signingAgreementService } from '@/services/signingAgreement.service'\r\n\r\nexport default Vue.extend({\r\n name: 'Reports',\r\n components: {\r\n Back,\r\n DatePicker,\r\n SprButton,\r\n OfficialLetterRequests,\r\n Loading\r\n },\r\n props: {\r\n sectionId: {\r\n type: String, // from the url props\r\n default: '0'\r\n }\r\n },\r\n methods: {\r\n onBoardMembersReport () {\r\n this.dataLoading = true\r\n const data = {\r\n sectionId: Number(this.sectionId),\r\n dateFrom: this.searchDate\r\n } as ReportBoardMembersRequest\r\n\r\n signingAgreementService.getBoardMembersPdf(data).then((result: Blob) => {\r\n const dataUrl = window.URL.createObjectURL(result)\r\n window.open(dataUrl)\r\n this.dataLoading = false\r\n }).catch((err: Error) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.dataLoading = false\r\n this.$store.dispatch('alert/error', { message: this.$t('report.failed') })\r\n })\r\n },\r\n getOfficialLetterRequests: function () {\r\n this.dataLoading = true\r\n signingAgreementService.getOfficialLetterRequests(Number(this.sectionId)).then(result => {\r\n this.officialLetterRequests = result\r\n this.dataLoading = false\r\n }).catch((err: Error) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.dataLoading = false\r\n this.$store.dispatch('alert/error', { message: this.$t('report.failed') })\r\n })\r\n },\r\n onAddNewOfficialLetterRequest: function () {\r\n this.$router.push(`/sections/${this.sectionId}/reports/addofficialletterrequest`)\r\n },\r\n onDeleteOfficialLetterRequest: function (request: OfficialLetterRequestResponse) {\r\n this.dataLoading = true\r\n signingAgreementService.deleteLetterRequest(request.id)\r\n .then((success: boolean) => {\r\n if (success) {\r\n this.$store.dispatch('alert/success', { message: this.$t('officialletterrequest.deletesuccess') })\r\n this.getOfficialLetterRequests()\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.deletefailed') })\r\n }\r\n this.dataLoading = false\r\n })\r\n }\r\n },\r\n data () {\r\n return {\r\n searchDate: new Date(),\r\n dataLoading: false,\r\n officialLetterRequests: [] as Array\r\n }\r\n },\r\n created () {\r\n if (!this.sectionId) {\r\n this.$router.push('/404')\r\n }\r\n\r\n this.getOfficialLetterRequests()\r\n },\r\n computed: {\r\n sectionname (): string {\r\n if (this.$store.state.sections.sectionsLoaded) {\r\n const section = this.$store.state.sections.all.find((x: SectionSummaryResponse) => x.id === Number(this.sectionId))\r\n return section ? section.name : ''\r\n }\r\n return ''\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Reports.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Reports.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Reports.vue?vue&type=template&id=30ff30f4&scoped=true\"\nimport script from \"./Reports.vue?vue&type=script&lang=ts\"\nexport * from \"./Reports.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Reports.vue?vue&type=style&index=0&id=30ff30f4&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"30ff30f4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"officialletterrequests\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 backlink\"},[_c('Back')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('officialletterrequests')))])])]),_c('div',{staticClass:\"row officialletterrequeststable\"},[_c('div',{staticClass:\"col-12\"},[_c('OfficialLetterRequestList',{attrs:{\"requests\":_vm.officialLetterRequests},on:{\"onDelete\":_vm.onDeleteOfficialLetterRequest}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[(_vm.dataLoading)?_c('Loading'):_vm._e()],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport Back from '@/components/Back.vue'\r\nimport OfficialLetterRequestList from '@/components/sections/OfficialLetterRequests.vue'\r\nimport SprButton from '@/components/forms/SprButton.vue'\r\nimport Loading from '@/components/Loading.vue'\r\nimport { OfficialLetterRequestResponse, SignedDocumentResponse } from '@/types'\r\nimport { sectionService } from '@/services/section.service'\r\nimport { signingAgreementService } from '@/services/signingAgreement.service'\r\n\r\nexport default Vue.extend({\r\n name: 'OfficialLetterRequests',\r\n components: {\r\n Back,\r\n OfficialLetterRequestList,\r\n Loading\r\n },\r\n methods: {\r\n getOfficialLetterRequests: function () {\r\n this.dataLoading = true\r\n signingAgreementService.getOfficialLetterRequests().then(result => {\r\n this.officialLetterRequests = result\r\n this.dataLoading = false\r\n }).catch((err: Error) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.dataLoading = false\r\n this.$store.dispatch('alert/error', { message: this.$t('report.failed') })\r\n })\r\n },\r\n onDeleteOfficialLetterRequest: function (request: OfficialLetterRequestResponse) {\r\n this.dataLoading = true\r\n signingAgreementService.deleteLetterRequest(request.id)\r\n .then((success: boolean) => {\r\n if (success) {\r\n this.$store.dispatch('alert/success', { message: this.$t('officialletterrequest.deletesuccess') })\r\n this.getOfficialLetterRequests()\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.deletefailed') })\r\n }\r\n this.dataLoading = false\r\n })\r\n }\r\n },\r\n data () {\r\n return {\r\n dataLoading: false,\r\n officialLetterRequests: [] as Array\r\n }\r\n },\r\n created () {\r\n this.getOfficialLetterRequests()\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OfficialLetterRequests.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OfficialLetterRequests.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./OfficialLetterRequests.vue?vue&type=template&id=55bbb249&scoped=true\"\nimport script from \"./OfficialLetterRequests.vue?vue&type=script&lang=ts\"\nexport * from \"./OfficialLetterRequests.vue?vue&type=script&lang=ts\"\nimport style0 from \"./OfficialLetterRequests.vue?vue&type=style&index=0&id=55bbb249&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"55bbb249\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"addofficialletterrequest\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 backlink\"},[_c('Back')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('addofficialletterrequest')))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"section\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('SprFormTextArea',{attrs:{\"label\":_vm.$t('addofficialletterrequest.reason'),\"name\":\"addofficialletterrequest.reason\",\"placeholder\":_vm.$t('addofficialletterrequest.reasonplaceholder')},model:{value:(_vm.request.reasonForRequest),callback:function ($$v) {_vm.$set(_vm.request, \"reasonForRequest\", $$v)},expression:\"request.reasonForRequest\"}})],1)]),_c('div',{staticClass:\"row mt-3\"},[_c('div',{staticClass:\"col-12\"},[_c('SprButton',{staticClass:\"btnsend\",attrs:{\"compact\":\"\",\"primary\":\"\",\"text\":_vm.$t('addofficialletterrequest.send')},on:{\"click\":_vm.onSend}}),_c('SprButton',{attrs:{\"compact\":\"\",\"text\":_vm.$t('cancel')},on:{\"click\":_vm.onCancel}})],1)])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport Back from '@/components/Back.vue'\r\nimport SprFormTextArea from '@/components/forms/SprFormTextArea.vue'\r\nimport SprButton from '@/components/forms/SprButton.vue'\r\nimport { sectionService } from '@/services/section.service'\r\nimport { RequestValidationResult, AddOfficialLetterRequestRequest } from '@/types'\r\nimport { isRequestValidationResult } from '@/types/custom'\r\nimport { signingAgreementService } from '@/services/signingAgreement.service'\r\n\r\nexport default Vue.extend({\r\n name: 'AddOfficialLetterRequest',\r\n components: {\r\n Back,\r\n SprFormTextArea,\r\n SprButton\r\n },\r\n props: {\r\n sectionId: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n data () {\r\n return {\r\n request: {\r\n memberId: this.$store.state.authentication.claims.ossiId,\r\n reasonForRequest: '',\r\n sectionId: Number(this.sectionId)\r\n } as AddOfficialLetterRequestRequest\r\n }\r\n },\r\n methods: {\r\n onCancel (): void {\r\n this.$router.go(-1) // route back to the page where it came from\r\n },\r\n onSend (): void {\r\n this.$validator.validateAll()\r\n .then((result) => {\r\n if (this.$validator.errors.items.length) return\r\n if (result) {\r\n this.$store.commit('alert/dataLoading', null, { root: true })\r\n return signingAgreementService.addOfficialLetterRequest(this.request)\r\n }\r\n })\r\n .then((success) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n if (success) {\r\n this.$store.dispatch('alert/success', { message: this.$t('addofficialletterrequest.addsuccess'), surviveRouteChange: true })\r\n this.$router.go(-1) // route back to the page where it came from\r\n\r\n }\r\n })\r\n .catch((error: Error | RequestValidationResult) => {\r\n this.$store.commit('alert/dataLoaded', null, { root: true })\r\n if (isRequestValidationResult(error)) {\r\n for (const err of error.errors) {\r\n this.$store.dispatch('alert/error', { message: this.$t(`validation.${err.translationKey}`) })\r\n }\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('addofficialletterrequest.addfailed') })\r\n }\r\n })\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddOfficialLetterRequest.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddOfficialLetterRequest.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AddOfficialLetterRequest.vue?vue&type=template&id=2c84d290&scoped=true\"\nimport script from \"./AddOfficialLetterRequest.vue?vue&type=script&lang=ts\"\nexport * from \"./AddOfficialLetterRequest.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AddOfficialLetterRequest.vue?vue&type=style&index=0&id=2c84d290&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2c84d290\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"processofficialletterrequest\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 backlink\"},[_c('Back')],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('officialletterrequests')))])])]),(_vm.request.id)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 request\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('officialletterrequest.id')))]),_c('dd',[_vm._v(_vm._s(_vm.request.id))]),_c('dt',[_vm._v(_vm._s(_vm.$t('officialletterrequest.date')))]),_c('dd',[_vm._v(_vm._s(_vm.formatDate(_vm.request.created)))]),_c('dt',[_vm._v(_vm._s(_vm.$t('officialletterrequest.createdby')))]),_c('dd',[_c('div',{staticClass:\"link\",on:{\"click\":function($event){return _vm.gotoMember(_vm.request)}}},[_vm._v(\" \"+_vm._s(_vm.request.requestedBy)+\" \")])]),_c('dt',[_vm._v(_vm._s(_vm.$t('officialletterrequest.section')))]),_c('dd',[_c('div',{staticClass:\"link\",on:{\"click\":function($event){return _vm.gotoSection(_vm.request.sectionId)}}},[_vm._v(\" \"+_vm._s(_vm.request.section.name)+\" \")])]),_c('dt',[_vm._v(_vm._s(_vm.$t('officialletterrequest.status')))]),_c('dd',[_vm._v(_vm._s(_vm.formatStatus(_vm.request.status)))]),_c('dt',[_vm._v(_vm._s(_vm.$t('addofficialletterrequest.reason')))]),_c('dd',[_vm._v(_vm._s(_vm.request.reason))])])]),(_vm.hasSignedDoc)?_c('div',{staticClass:\"col-12\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('officialletterrequest.signedpdf')))]),_c('dd',[_c('span',{staticClass:\"link\",on:{\"click\":function($event){return _vm.viewDocument()}}},[_vm._v(_vm._s(_vm.request.document.name))]),(_vm.canDeleteDoc)?_c('span',[_c('SprButton',{staticClass:\"action remove\",attrs:{\"compact\":\"\",\"min-padding\":\"\",\"text\":_vm.$t('delete')},on:{\"click\":_vm.deleteDocument}})],1):_vm._e()])])]):_vm._e(),(_vm.isKTOrAbove && _vm.canCreatePdf)?_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"link\",on:{\"click\":_vm.generatePdf}},[_c('p',[_vm._v(_vm._s(_vm.$t('officialletterrequest.generatepdf')))])]),_c('span',{staticClass:\"link\",on:{\"click\":_vm.generateEnglishPdf}},[_c('p',[_vm._v(_vm._s(_vm.$t('officialletterrequest.generateenglishpdf')))])])]):_vm._e(),(!_vm.hasSignedDoc && _vm.isKTOrAbove)?_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"form-group\"},[_c('SprFormFileUpload',{attrs:{\"label\":_vm.$t('officialletterrequest.uploadpdf'),\"name\":\"officialletterrequest.uploadpdf\"},on:{\"file-uploaded\":_vm.onSignedFileUploaded}})],1)]):_vm._e(),(_vm.canProcess)?_c('div',{staticClass:\"col-12 col-sm-6 col-md-4 col-lg-3\"},[_c('SprFormDatePicker',{attrs:{\"label\":_vm.$t('officialletterrequest.expirydate'),\"name\":\"officialletterrequest_expirydate\",\"validations\":\"required|finnishdateinfuture\",\"required\":true,\"has-error\":_vm.errors.has('officialletterrequest_expirydate')},model:{value:(_vm.expiryDate),callback:function ($$v) {_vm.expiryDate=$$v},expression:\"expiryDate\"}})],1):_vm._e(),_c('div',{staticClass:\"col-12\"},[(_vm.errors.has('officialletterrequest_expirydate'))?_c('div',[_c('span',{staticClass:\"haserror\"},[_vm._v(_vm._s(_vm.$t('validation.approveofficialletterrequest_expirydate_required')))])]):_vm._e()]),(_vm.canArchive)?_c('div',{staticClass:\"col-12\"},[_c('dl',[_c('dt',[_vm._v(_vm._s(_vm.$t('officialletterrequest.expirydate')))]),_c('dd',[_vm._v(\" \"+_vm._s(_vm.formatDate(_vm.request.expiryDate))+\" \"),(_vm.hasExpired)?_c('font-awesome-icon',{staticClass:\"expired\",attrs:{\"icon\":\"exclamation-circle\"}}):_vm._e(),(!_vm.hasExpired)?_c('font-awesome-icon',{staticClass:\"not-expired\",attrs:{\"icon\":\"check-circle\"}}):_vm._e()],1)])]):_vm._e(),_c('div',{staticClass:\"col-12 buttons\"},[(_vm.canProcess)?_c('SprButton',{staticClass:\"action\",attrs:{\"primary\":\"\",\"text\":_vm.$t('officialletterrequest.approve')},on:{\"click\":function($event){return _vm.approveRequest()}}}):_vm._e(),(_vm.canArchive)?_c('SprButton',{staticClass:\"action\",attrs:{\"text\":_vm.$t('officialletterrequest.archive')},on:{\"click\":function($event){return _vm.archiveRequest()}}}):_vm._e(),(_vm.canDelete(_vm.request))?_c('SprButton',{staticClass:\"action\",attrs:{\"text\":_vm.$t('delete')},on:{\"click\":function($event){return _vm.confirmDeleteRequest()}}}):_vm._e()],1)]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[(_vm.dataLoading)?_c('Loading'):_vm._e()],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\nimport Back from '@/components/Back.vue'\r\nimport SprButton from '@/components/forms/SprButton.vue'\r\nimport SprFormFileUpload from '@/components/forms/SprFormFileUpload.vue'\r\nimport SprFormDatePicker from '@/components/forms/SprFormDatePicker.vue'\r\nimport Loading from '@/components/Loading.vue'\r\nimport { finnishShortDate } from '@/helpers/datehelper'\r\nimport { OfficialLetterRequestResponse, SignedDocumentResponse, SignedDocumentRequest, OfficialLetterRequestStatusCode, ReportBoardMembersRequest, ApproveOfficialLetterRequestRequest } from '@/types'\r\nimport { OfficialLetterRequestStatus } from '@/types/enums'\r\nimport { signingAgreementService } from '@/services/signingAgreement.service'\r\n\r\n// define dataobject for the component\r\ninterface TemplateComponentData {\r\n dataLoading: boolean,\r\n request: OfficialLetterRequestResponse,\r\n expiryDate: Date\r\n}\r\n\r\nexport default Vue.extend({\r\n name: 'ProcessOfficialLetterRequest',\r\n components: {\r\n Back,\r\n SprFormFileUpload,\r\n SprFormDatePicker,\r\n SprButton,\r\n Loading\r\n },\r\n props: {\r\n id: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n methods: {\r\n getOfficialLetterRequest: function (id: number) {\r\n this.dataLoading = true\r\n signingAgreementService.getOfficialLetterRequestById(id).then(result => {\r\n this.request = result\r\n this.dataLoading = false\r\n }).catch((err: Error) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.dataLoading = false\r\n this.$store.dispatch('alert/error', { message: this.$t('report.failed') })\r\n })\r\n },\r\n gotoSection (sectionId: number) {\r\n this.$router.push(`/sections/${sectionId}`)\r\n },\r\n gotoMember (request: OfficialLetterRequestResponse) {\r\n this.$router.push(`/sections/${request.sectionId}/members/${request.createdByMemberId}`)\r\n },\r\n formatDate (date: Date) {\r\n return finnishShortDate(date)\r\n },\r\n formatStatus (status: OfficialLetterRequestStatusCode) {\r\n return this.$t(`officialletterrequeststatus-${status.id}`)\r\n },\r\n generatePdf () {\r\n this.dataLoading = true\r\n const data = {\r\n sectionId: Number(this.request.sectionId),\r\n dateFrom: new Date()\r\n } as ReportBoardMembersRequest\r\n\r\n signingAgreementService.getSigningRightsMembersPdf(this.request.sectionId).then((result: Blob) => {\r\n const dataUrl = window.URL.createObjectURL(result)\r\n window.open(dataUrl)\r\n this.dataLoading = false\r\n }).catch((err: Error) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.dataLoading = false\r\n this.$store.dispatch('alert/error', { message: this.$t('report.failed') })\r\n })\r\n },\r\n generateEnglishPdf () {\r\n this.dataLoading = true\r\n const data = {\r\n sectionId: Number(this.request.sectionId),\r\n dateFrom: new Date()\r\n } as ReportBoardMembersRequest\r\n\r\n signingAgreementService.getSigningRightsMembersPdfInEnglish(this.request.sectionId).then((result: Blob) => {\r\n const dataUrl = window.URL.createObjectURL(result)\r\n window.open(dataUrl)\r\n this.dataLoading = false\r\n }).catch((err: Error) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.dataLoading = false\r\n this.$store.dispatch('alert/error', { message: this.$t('report.failed') })\r\n })\r\n },\r\n approveRequest () {\r\n this.$validator.validateAll()\r\n .then((success: boolean) => {\r\n if (success) {\r\n this.dataLoading = true\r\n const data = {\r\n officalLetterRequestId: this.request.id,\r\n expiryDate: this.expiryDate\r\n } as ApproveOfficialLetterRequestRequest\r\n signingAgreementService.approveLetterRequest(data)\r\n .then(() => {\r\n this.$store.dispatch('alert/success', { message: this.$t('officialletterrequest.approvesuccess'), surviveRouteChange: true })\r\n this.$router.go(-1) // route back to the page where it came from\r\n }, (err) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.approvefailed') })\r\n this.dataLoading = false\r\n })\r\n }\r\n })\r\n },\r\n canDelete (x: OfficialLetterRequestResponse) {\r\n const userId = this.$store.state.authentication.claims?.ossiId\r\n if (!userId) {\r\n return false\r\n }\r\n return this.isKTOrAbove ||\r\n (x.statusId === OfficialLetterRequestStatus.REQUESTED && x.createdByMemberId === userId)\r\n },\r\n confirmDeleteRequest () {\r\n const txt = this.$t('officialletterrequest.deleteconfirm').toString()\r\n if (confirm(txt)) {\r\n this.deleteRequest()\r\n }\r\n },\r\n deleteRequest () {\r\n this.dataLoading = true\r\n signingAgreementService.deleteLetterRequest(this.request.id)\r\n .then((success: boolean) => {\r\n if (success) {\r\n this.$store.dispatch('alert/success', { message: this.$t('officialletterrequest.deletesuccess'), surviveRouteChange: true })\r\n\r\n this.$router.go(-1) // route back to the page where it came from\r\n } else {\r\n console.log('delete failed')\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.deletefailed') })\r\n }\r\n this.dataLoading = false\r\n })\r\n .catch(err => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.deletefailed') })\r\n this.dataLoading = false\r\n })\r\n },\r\n archiveRequest () {\r\n this.dataLoading = true\r\n signingAgreementService.archiveLetterRequest(this.request.id)\r\n .then((success: boolean) => {\r\n if (success) {\r\n this.$store.dispatch('alert/success', { message: this.$t('officialletterrequest.archivesuccess'), surviveRouteChange: true })\r\n this.$router.go(-1) // route back to the page where it came from\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.archivefailed') })\r\n }\r\n this.dataLoading = false\r\n })\r\n .catch((err: Error) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.archivefailed') })\r\n this.dataLoading = false\r\n })\r\n },\r\n onSignedFileUploaded (file: File | null) {\r\n if (file) {\r\n this.readFile(file)\r\n }\r\n },\r\n readFile (file: File) {\r\n const reader = new FileReader()\r\n this.dataLoading = true\r\n reader.onload = (readerEvt: ProgressEvent) => {\r\n const raw = reader.result as string\r\n // var base64 = btoa(binaryString);\r\n this.processUploadedFile(file.name, file.type, raw).then(success => {\r\n if (success) {\r\n // reload with the file\r\n this.$store.dispatch('alert/success', { message: this.$t('officialletterrequest.uploadsuccess') })\r\n this.getOfficialLetterRequest(this.idNumber)\r\n } else {\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.uploadfailed') })\r\n this.dataLoading = false\r\n }\r\n }).catch(err => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.uploadfailed') })\r\n this.dataLoading = false\r\n })\r\n }\r\n\r\n reader.readAsBinaryString(file)\r\n },\r\n processUploadedFile (name: string, type: string, rawString: string | null): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (!rawString) reject(new Error('No file.'))\r\n\r\n const doc: SignedDocumentRequest = {\r\n name: name,\r\n // @ts-ignore-next-line\r\n officialLetterRequestId: this.idNumber || null,\r\n blob: rawString ? btoa(rawString) : '',\r\n fileType: type\r\n }\r\n\r\n if (doc.name.length > 800) {\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.uploadnametoolarge') })\r\n reject(new Error('File length too long'))\r\n }\r\n\r\n if (doc.fileType.length > 255) {\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.removedocumentfailed') })\r\n reject(new Error('File type too long'))\r\n }\r\n\r\n signingAgreementService.uploadSignedDocument(doc).then(success => {\r\n if (success) {\r\n resolve(success)\r\n } else {\r\n reject(success)\r\n }\r\n }, (err) => {\r\n // eslint-disable-next-line no-console\r\n reject(err)\r\n })\r\n })\r\n },\r\n deleteDocument () {\r\n this.dataLoading = true\r\n signingAgreementService.removeSignedDocument(this.request.id)\r\n .then((success) => {\r\n // @ts-ignore\r\n this.request.document = undefined\r\n this.dataLoading = false\r\n })\r\n .catch((err) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err)\r\n this.$store.dispatch('alert/error', { message: this.$t('officialletterrequest.uploadtypetoolarge') })\r\n this.dataLoading = false\r\n })\r\n },\r\n viewDocument () {\r\n if (this.request.document) {\r\n window.open(this.request.document.url)\r\n }\r\n }\r\n },\r\n data (): TemplateComponentData {\r\n return {\r\n dataLoading: false,\r\n request: {} as OfficialLetterRequestResponse,\r\n expiryDate: new Date() as Date\r\n } as TemplateComponentData\r\n },\r\n created () {\r\n const today = new Date()\r\n const oneWeek = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 7)\r\n this.expiryDate = oneWeek\r\n this.getOfficialLetterRequest(this.idNumber)\r\n },\r\n computed: {\r\n idNumber (): number {\r\n return Number(this.id)\r\n },\r\n hasSignedDoc (): boolean {\r\n if (this.request) {\r\n return Boolean(this.request.document)\r\n }\r\n return false\r\n },\r\n canCreatePdf (): boolean {\r\n return this.request.statusId === OfficialLetterRequestStatus.REQUESTED\r\n },\r\n canProcess (): boolean {\r\n if (this.request) {\r\n return this.hasSignedDoc && this.request.statusId === OfficialLetterRequestStatus.REQUESTED\r\n }\r\n return false\r\n },\r\n canArchive (): boolean {\r\n if (this.request) {\r\n return this.hasSignedDoc && this.request.statusId === OfficialLetterRequestStatus.PROCESSED\r\n }\r\n return false\r\n },\r\n isKTOrAbove (): boolean {\r\n return (\r\n this.$store.state.authentication.claims.isInRoleSuperAdmin ||\r\n this.$store.state.authentication.claims.isInRoleKT)\r\n },\r\n canDeleteDoc (): boolean {\r\n if (this.request) {\r\n return this.request.statusId === OfficialLetterRequestStatus.REQUESTED\r\n }\r\n return false\r\n },\r\n hasExpired (): boolean {\r\n if (this.request) {\r\n return this.request.expiryDate ? new Date(this.request.expiryDate) < new Date() : false\r\n }\r\n return false\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProcessOfficialLetterRequest.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProcessOfficialLetterRequest.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ProcessOfficialLetterRequest.vue?vue&type=template&id=c1d1e654&scoped=true\"\nimport script from \"./ProcessOfficialLetterRequest.vue?vue&type=script&lang=ts\"\nexport * from \"./ProcessOfficialLetterRequest.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ProcessOfficialLetterRequest.vue?vue&type=style&index=0&id=c1d1e654&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c1d1e654\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"notfound\"},[_vm._m(0),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('404'))+\" \")])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('h1',[_vm._v(\"404\")])])])\n}]\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue'\r\n\r\nexport default Vue.extend({\r\n name: 'NotFound'\r\n})\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NotFound.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NotFound.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./NotFound.vue?vue&type=template&id=0534d61f&scoped=true\"\nimport script from \"./NotFound.vue?vue&type=script&lang=ts\"\nexport * from \"./NotFound.vue?vue&type=script&lang=ts\"\nimport style0 from \"./NotFound.vue?vue&type=style&index=0&id=0534d61f&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0534d61f\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\r\nimport Router from 'vue-router'\r\nimport Home from './views/Home.vue'\r\nimport ErrorPage from './views/Error.vue'\r\nimport Login from './views/Login.vue'\r\nimport Logout from './views/Logout.vue'\r\nimport ADResponse from './views/ADResponse.vue'\r\nimport Districts from './views/Districts.vue'\r\nimport District from './views/District.vue'\r\nimport DistrictMeetings from './views/DistrictMeetings.vue'\r\nimport DistrictMembers from './views/DistrictMembers.vue'\r\nimport Sections from './views/Sections.vue'\r\nimport Section from './views/Section.vue'\r\nimport PreparednessPlan from '@/views/PreparednessPlan.vue'\r\nimport Members from './views/Members.vue'\r\nimport SectionMembers from './views/SectionMembers.vue'\r\nimport EditMember from './views/EditMember.vue'\r\nimport Meetings from './views/Meetings.vue'\r\nimport AddMeeting from './views/AddMeeting.vue'\r\nimport EditMeeting from './views/EditMeeting.vue'\r\nimport EmployeeList from './views/EmployeeList.vue'\r\nimport ExternalForms from './views/ExternalForms.vue'\r\nimport Reports from './views/Reports.vue'\r\nimport OfficialLetterRequests from './views/OfficialLetterRequests.vue'\r\nimport AddOfficialLetterRequest from './views/AddOfficialLetterRequest.vue'\r\nimport ProcessOfficialLetterRequest from './views/ProcessOfficialLetterRequest.vue'\r\nimport NotFound from './views/NotFound.vue'\r\nimport { MemberRoles } from '@/types/enums'\r\nimport store from '@/store'\r\n\r\nVue.use(Router)\r\n\r\n// add beforeEnter: Authenticate to any route that requires authentication\r\nconst Authenticate = (to: any, from: any, next: any) => {\r\n const loggedIn = localStorage.getItem('authToken')\r\n if (!loggedIn) {\r\n return next('/login')\r\n }\r\n\r\n // if the allowed roles for this url are not in the users array of roles, send them to the homepage\r\n const accessArray = to.meta.access\r\n if (!accessArray) {\r\n next()\r\n return\r\n }\r\n\r\n const rolesArray = store.state.authentication.rolesArray\r\n if (accessArray.filter((x: number) => {\r\n return rolesArray.indexOf(x) !== -1\r\n }).length === 0) return next('/404')\r\n\r\n next()\r\n}\r\n\r\nexport const router = new Router({\r\n mode: 'history',\r\n base: process.env.BASE_URL,\r\n routes: [\r\n {\r\n path: '/',\r\n name: 'home',\r\n component: Home,\r\n beforeEnter: Authenticate\r\n },\r\n {\r\n path: '/error',\r\n name: 'error',\r\n component: ErrorPage\r\n },\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: Login\r\n },\r\n {\r\n path: '/logout',\r\n name: 'logout',\r\n component: Logout\r\n },\r\n {\r\n path: '/adresponse',\r\n name: 'adresponse',\r\n component: ADResponse\r\n },\r\n {\r\n path: '/officialletterrequests',\r\n name: 'officialletterrequests',\r\n component: OfficialLetterRequests,\r\n beforeEnter: Authenticate\r\n },\r\n {\r\n path: '/officialletterrequests/:id',\r\n name: 'processofficialletterrequest',\r\n component: ProcessOfficialLetterRequest,\r\n beforeEnter: Authenticate,\r\n props: true\r\n },\r\n {\r\n path: '/members',\r\n name: 'members',\r\n component: Members,\r\n beforeEnter: Authenticate,\r\n meta: {\r\n access: [\r\n MemberRoles.SUPER_ADMIN,\r\n MemberRoles.KT\r\n ]\r\n }\r\n },\r\n {\r\n path: '/districts',\r\n name: 'districts',\r\n component: Districts,\r\n beforeEnter: Authenticate,\r\n meta: {\r\n access: [\r\n MemberRoles.SUPER_ADMIN,\r\n MemberRoles.KT\r\n ]\r\n }\r\n },\r\n {\r\n path: '/districts/:districtId',\r\n name: 'district',\r\n component: District,\r\n beforeEnter: Authenticate,\r\n meta: {\r\n access: [\r\n MemberRoles.SUPER_ADMIN,\r\n MemberRoles.KT,\r\n MemberRoles.DISTRICT_ADMIN,\r\n MemberRoles.DISTRICT_USER\r\n ]\r\n },\r\n props: true\r\n },\r\n {\r\n path: '/districts/:districtId/meetings',\r\n name: 'districtmeetings',\r\n component: DistrictMeetings,\r\n beforeEnter: Authenticate,\r\n meta: {\r\n access: [\r\n MemberRoles.SUPER_ADMIN,\r\n MemberRoles.KT,\r\n MemberRoles.DISTRICT_ADMIN,\r\n MemberRoles.DISTRICT_USER\r\n ]\r\n },\r\n props: true\r\n },\r\n {\r\n path: '/districts/:districtId/members',\r\n name: 'districtmembers',\r\n component: DistrictMembers,\r\n beforeEnter: Authenticate,\r\n meta: {\r\n access: [\r\n MemberRoles.SUPER_ADMIN,\r\n MemberRoles.KT,\r\n MemberRoles.DISTRICT_ADMIN,\r\n MemberRoles.DISTRICT_USER\r\n ]\r\n },\r\n props: true\r\n },\r\n {\r\n path: '/districts/:districtId/sections',\r\n name: 'sections',\r\n component: Sections,\r\n beforeEnter: Authenticate,\r\n meta: {\r\n access: [\r\n MemberRoles.SUPER_ADMIN,\r\n MemberRoles.KT,\r\n MemberRoles.DISTRICT_ADMIN,\r\n MemberRoles.DISTRICT_USER\r\n ]\r\n },\r\n props: true\r\n },\r\n {\r\n path: '/sections/:sectionId',\r\n name: 'section',\r\n component: Section,\r\n beforeEnter: Authenticate,\r\n meta: {\r\n access: [\r\n MemberRoles.SUPER_ADMIN,\r\n MemberRoles.KT,\r\n MemberRoles.DISTRICT_ADMIN,\r\n MemberRoles.DISTRICT_USER,\r\n MemberRoles.SECTION_ADMIN,\r\n MemberRoles.SECTION_USER\r\n ]\r\n },\r\n props: true\r\n },\r\n {\r\n path: '/sections/:sectionId/preparednessplan',\r\n name: 'preparednessplan',\r\n component: PreparednessPlan,\r\n beforeEnter: Authenticate,\r\n meta: {\r\n access: [\r\n MemberRoles.SUPER_ADMIN,\r\n MemberRoles.KT,\r\n MemberRoles.DISTRICT_ADMIN,\r\n MemberRoles.DISTRICT_USER,\r\n MemberRoles.SECTION_ADMIN,\r\n MemberRoles.SECTION_USER\r\n ]\r\n },\r\n props: true\r\n },\r\n {\r\n path: '/sections/:sectionId/members',\r\n name: 'sectionmembers',\r\n component: SectionMembers,\r\n beforeEnter: Authenticate,\r\n meta: {\r\n access: [\r\n MemberRoles.SUPER_ADMIN,\r\n MemberRoles.KT,\r\n MemberRoles.DISTRICT_ADMIN,\r\n MemberRoles.DISTRICT_USER,\r\n MemberRoles.SECTION_ADMIN,\r\n MemberRoles.SECTION_USER\r\n ]\r\n },\r\n props: true\r\n },\r\n {\r\n path: '/sections/:sectionId/members/:memberId',\r\n name: 'editmember',\r\n component: EditMember,\r\n beforeEnter: Authenticate,\r\n props: true\r\n },\r\n {\r\n path: '/sections/:sectionId/meetings',\r\n name: 'meetings',\r\n component: Meetings,\r\n beforeEnter: Authenticate,\r\n props: true\r\n },\r\n {\r\n path: '/sections/:sectionId/meetings/add',\r\n name: 'addmeeting',\r\n component: AddMeeting,\r\n beforeEnter: Authenticate,\r\n meta: {\r\n access: [\r\n MemberRoles.SUPER_ADMIN,\r\n MemberRoles.KT,\r\n MemberRoles.DISTRICT_ADMIN,\r\n MemberRoles.DISTRICT_USER,\r\n MemberRoles.SECTION_ADMIN\r\n ]\r\n },\r\n props: true\r\n },\r\n {\r\n path: '/sections/:sectionId/meetings/:meetingId',\r\n name: 'editmeeting',\r\n component: EditMeeting,\r\n beforeEnter: Authenticate,\r\n props: true\r\n },\r\n {\r\n path: '/sections/:sectionId/reports',\r\n name: 'reports',\r\n component: Reports,\r\n beforeEnter: Authenticate,\r\n props: true\r\n },\r\n {\r\n path: '/sections/:sectionId/reports/addofficialletterrequest',\r\n name: 'addofficialletterrequest',\r\n component: AddOfficialLetterRequest,\r\n beforeEnter: Authenticate,\r\n props: true\r\n },\r\n {\r\n path: '/employees',\r\n name: 'employees',\r\n component: EmployeeList,\r\n beforeEnter: Authenticate,\r\n props: true\r\n },\r\n {\r\n path: '/externalForms',\r\n name: 'externalForms',\r\n component: ExternalForms,\r\n beforeEnter: Authenticate,\r\n props: true\r\n },\r\n {\r\n path: '/about',\r\n name: 'about',\r\n // route level code-splitting\r\n // this generates a separate chunk (about.[hash].js) for this route\r\n // which is lazy-loaded when the route is visited.\r\n // good for not so popular pages\r\n component: () => import(/* webpackChunkName: \"about\" */ './views/About.vue'),\r\n beforeEnter: Authenticate\r\n },\r\n {\r\n path: '*',\r\n name: '404',\r\n component: NotFound\r\n }\r\n ]\r\n})\r\n\r\nexport default router\r\n","import Vue from 'vue'\r\nimport store from './store'\r\nimport VueI18n, { LocaleMessages } from 'vue-i18n'\r\n\r\nVue.use(VueI18n)\r\n\r\nfunction loadLocaleMessages (): LocaleMessages {\r\n const locales = require.context('./locales', true, /[A-Za-z0-9-_,\\s]+\\.json$/i)\r\n const messages: LocaleMessages = {}\r\n locales.keys().forEach(key => {\r\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i)\r\n if (matched && matched.length > 1) {\r\n const locale = matched[1]\r\n messages[locale] = locales(key)\r\n }\r\n })\r\n return messages\r\n}\r\n\r\nlet preferredLanguage = localStorage.getItem('preferredLanguage')\r\n\r\nif (!preferredLanguage) {\r\n preferredLanguage = process.env.VUE_APP_I18N_LOCALE || 'fi'\r\n}\r\n\r\nstore.commit('config/setLanguage', preferredLanguage)\r\n\r\nexport default new VueI18n({\r\n locale: store.state.config.language || 'fi',\r\n fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'sv',\r\n messages: loadLocaleMessages()\r\n})\r\n","/* eslint-disable @typescript-eslint/camelcase */\r\nconst messages = {\r\n after: (field: string, [target]: any) => `${field} tulee olla ${target} jälkeen`,\r\n alpha: (field: string) => `${field} voi sisältää vain kirjaimia`,\r\n alpha_dash: (field: string) => `${field} voi sisältää vain kirjaimia, numeroita, ja tavu-, tai alaviivoja`,\r\n alpha_num: (field: string) => `${field} voi sisältää vain kirjaimia ja numeroita`,\r\n before: (field: string, [target]: any) => `${field} tulee olla ennen ${target}`,\r\n between: (field: string, [min, max]: any) => `Kentän ${field} tulee olla ${min} ja ${max} väliltä`,\r\n confirmed: (field: string, [confirmedField]: any) => `${field} ei vastannut ${confirmedField}`,\r\n date_between: (field: string, [min, max]: any) => `${field} tulee olla ${min} ja ${max} väliltä`,\r\n date_format: (field: string, [format]: any) => `${field} tulee olla muodossa ${format}`,\r\n decimal: (field: string, [decimals = '*'] = []) => `${field} tulee olla numeerinen ja voi sisältää${!decimals || decimals === '*' ? '' : ' ' + decimals} desimaalia`,\r\n digits: (field: string, [length]: any) => `${field} tulee olla numeerinen ja tarkalleen ${length} merkkiä`,\r\n dimensions: (field: string, [width, height]: any) => `${field} tulee olla ${width} pikseliä kertaa ${height} pikseliä`,\r\n email: (field: string) => `${field} tulee olla kelvollinen sähköpostiosoite`,\r\n excluded: (field: string) => `${field} tulee olla kelvollinen arvo`,\r\n ext: (field: string) => `${field} tulee olla kelvollinen tiedosto`,\r\n image: (field: string) => `${field} tulee olla kelvollinen kuva`,\r\n included: (field: string) => `${field} tulee olla kelvollinen arvo`,\r\n ip: (field: string) => `${field} tulee olla kelvollinen IP-osoite`,\r\n max: (field: string, [length]: any) => `${field} ei saa olla pidempi kuin ${length} merkkiä`,\r\n mimes: (field: string) => `${field} tulee olla kelvollinen tiedostotyyppi`,\r\n min: (field: string, [length]: any) => `${field} tulee olla vähintään ${length} merkkiä`,\r\n numeric: (field: string) => `${field} voi sisältää vain numeroita`,\r\n regex: (field: string) => `${field} tulee olla kelvollinen säännöllinen lauseke`,\r\n required: (field: string) => `${field} on pakollinen kenttä`,\r\n size: (field: string, [size]: any) => `${field} tulee olla vähemmän kuin ${size}`,\r\n url: (field: string) => `${field} tulee olla kelvollinen URL-osoite. esim. http://www.google.com`,\r\n finnishdateinpast: (field: string) => `${field} ei voi olla tulevaisuudessa`,\r\n finnishdateinfuture: (field: string) => `${field} pitää olla tulevaisuudessa`\r\n}\r\n\r\n// These are the names of the fields, replaced in '${field}' above.\r\nconst attributes = {\r\n meeting_name: 'Kokouksen nimi',\r\n meeting_type: 'Tyyppi',\r\n meeting_dateheld: 'Ajankohta',\r\n memberposition_position: 'Luottamustoimi',\r\n memberposition_member: 'Henkilö',\r\n memberposition_electeddate: 'Valittu',\r\n memberposition_termstart: 'Kausi alkaa',\r\n memberposition_termend: 'Kausi päättyy',\r\n memberposition_nonmemberfirstname: 'Etunimi',\r\n memberposition_nonmemberlastname: 'Sukunimi',\r\n memberposition_nonmemberphone: 'Puhelin',\r\n memberposition_nonmemberphonerequired: 'Puhelin',\r\n memberposition_nonmemberemail: 'Sähköposti',\r\n memberposition_nonmemberemailrequired: 'Sähköposti',\r\n memberposition_nonmemberpostcode: 'Postinumero',\r\n memberposition_nonmemberpostoffice: 'Paikkakunta',\r\n memberposition_nonmembercompany: 'Yritys',\r\n memberposition_nonmemberaddress: 'Katuosoite',\r\n\r\n electeddate: 'Ajankohta',\r\n termstart: 'Kausi alkaa',\r\n section_phone: 'Puhelin',\r\n section_email: 'Sähköposti',\r\n section_url: 'Osasto URL',\r\n address_address1: 'Katuosoite',\r\n address_address2: 'Katuosoite 2',\r\n address_postalcode: 'Postinumero',\r\n address_city: 'Paikkakunta',\r\n address_country: 'Maa'\r\n}\r\n\r\nconst locale = {\r\n name: 'fi',\r\n messages,\r\n attributes: attributes\r\n}\r\n\r\nexport default locale","/* eslint-disable @typescript-eslint/camelcase */\r\nconst messages = {\r\n after: (field: string, [target]: any) => `${field} måste vara efter ${target}`,\r\n alpha: (field: string) => `${field} kan bara innehålla bokstäver`,\r\n alpha_dash: (field: string) => `${field} kan bara innehålla bokstäver och siffror, bindestreck och understryker`,\r\n alpha_num: (field: string) => `${field} kan bara innehålla bokstäver och siffror`,\r\n before: (field: string, [target]: any) => `${field} måste vara före ${target}`,\r\n between: (field: string, [min, max]: any) => `Fäld \"${field}\" måste vara mittemellan ${min} och ${max}`,\r\n confirmed: (field: string, [confirmedField]: any) => `${field} svarade inte på ${confirmedField}`,\r\n date_between: (field: string, [min, max]: any) => `${field} måste vara mittemellan ${min} ovh ${max}`,\r\n date_format: (field: string, [format]: any) => `${field} måste vara i ${format}`,\r\n decimal: (field: string, [decimals = '*'] = []) => `${field} måste vara numeriskt och kan innehålla ${!decimals || decimals === '*' ? '' : ' ' + decimals} decimal`,\r\n digits: (field: string, [length]: any) => `${field} måste vara numeriskt och exakt ${length} tecken`,\r\n dimensions: (field: string, [width, height]: any) => `${field} måste vara ${width} pixlar x ${height} pixlar`,\r\n email: (field: string) => `${field} måste vara giltig e-post`,\r\n excluded: (field: string) => `${field} måste vara giltig värde`,\r\n ext: (field: string) => `${field} måste vara giltig fil`,\r\n image: (field: string) => `${field} måste vara giltig bild`,\r\n included: (field: string) => `${field} måste vara giltig värde`,\r\n ip: (field: string) => `${field} måste vara giltig IP-addressen`,\r\n max: (field: string, [length]: any) => `${field} kan inte vara längre an ${length} tecken`,\r\n mimes: (field: string) => `${field} måste vara giltig filtyp`,\r\n min: (field: string, [length]: any) => `${field} måste vara minst ${length} tecken`,\r\n numeric: (field: string) => `${field} kan innehålla bara siffror`,\r\n regex: (field: string) => `${field} måste vara giltig vanligt uttryck`,\r\n required: (field: string) => `${field} är ett obligatoriskt fält`,\r\n size: (field: string, [size]: any) => `${field} måste vara mindre än ${size}`,\r\n url: (field: string) => `${field} måste vara giltig URL-addressen. till exmpel http://www.google.com`,\r\n finnishdateinpast: (field: string) => `${field} kan inte vara i framtiden`,\r\n finnishdateinfuture: (field: string) => `${field} måste vara i framtiden`\r\n}\r\n\r\n// These are the names of the fields, replaced in '${field}' above.\r\nconst attributes = {\r\n meeting_name: 'Namnet på mötet',\r\n meeting_type: 'Typ',\r\n meeting_dateheld: 'Tidpunkt',\r\n memberposition_position: 'Förtroendeuppdrag',\r\n memberposition_member: 'En person',\r\n memberposition_electeddate: 'Vald',\r\n memberposition_termstart: 'Terminen börjar',\r\n memberposition_termend: 'Terminen tar slut',\r\n memberposition_nonmemberfirstname: 'Förnamn',\r\n memberposition_nonmemberlastname: 'Efternamn',\r\n memberposition_nonmemberphone: 'Telefon',\r\n memberposition_nonmemberphonerequired: 'Telefon',\r\n memberposition_nonmemberemail: 'E-post',\r\n memberposition_nonmemberemailrequired: 'E-post',\r\n memberposition_nonmemberpostcode: 'Postnummer',\r\n memberposition_nonmemberpostoffice: 'Plats',\r\n memberposition_nonmembercompany: 'Företag',\r\n memberposition_nonmemberaddress: 'Gatuadress',\r\n\r\n electeddate: 'Tidpunkt',\r\n termstart: 'Terminen börjar',\r\n section_phone: 'Telefon',\r\n section_email: 'E-post',\r\n section_url: 'Avdelning URL',\r\n address_address1: 'Gatuadress',\r\n address_address2: 'Gatuadress 2',\r\n address_postalcode: 'Postnummer',\r\n address_city: 'Stad',\r\n address_country: 'Land'\r\n}\r\n\r\nconst locale = {\r\n name: 'sv',\r\n messages,\r\n attributes: attributes\r\n}\r\n\r\nexport default locale","import Vue from 'vue'\r\nimport BootstrapVue from 'bootstrap-vue'\r\nimport VeeValidate from 'vee-validate'\r\nimport { mainService } from './services/main.service'\r\n\r\n// Font awesome core\r\nimport { library } from '@fortawesome/fontawesome-svg-core'\r\n\r\n// Enable font awesome component\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'\r\n\r\n// Specify the specific icons the project uses\r\nimport {\r\n faAngleDown,\r\n faAngleLeft,\r\n faAngleUp,\r\n faBirthdayCake,\r\n faCalendar,\r\n faCalendarAlt,\r\n faCalendarPlus,\r\n faCheckCircle,\r\n faEnvelope,\r\n faEuroSign,\r\n faExclamationCircle,\r\n faExclamationTriangle,\r\n faFile,\r\n faFileAlt,\r\n faFilePen,\r\n faFileDownload,\r\n faGrin,\r\n faHandshake,\r\n faIdCard,\r\n faInfo,\r\n faInfoCircle,\r\n faListAlt,\r\n faMoneyCheckAlt,\r\n faPencilAlt,\r\n faPhone,\r\n faSitemap,\r\n faSpinner,\r\n faTasks,\r\n faTh,\r\n faTimes,\r\n faTimesCircle,\r\n faUser,\r\n faUserTie,\r\n faUserFriends,\r\n faUserSlash,\r\n faStar,\r\n faFileLines,\r\n faHouseChimneyCrack,\r\n faTrash,\r\n faTrashAlt\r\n} from '@fortawesome/free-solid-svg-icons'\r\n\r\nimport 'bootstrap/dist/css/bootstrap.css'\r\nimport 'bootstrap-vue/dist/bootstrap-vue.css'\r\nimport './assets/scss/ossi.scss'\r\n\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\nimport i18n from './i18n'\r\nimport { configureFakeBackend } from './helpers/auth/authorizationhelper'\r\nimport validationFi from '@/locales/validation/fi'\r\nimport validationSv from '@/locales/validation/sv'\r\n\r\nVue.component('font-awesome-icon', FontAwesomeIcon)\r\nlibrary.add(\r\n faAngleDown,\r\n faAngleLeft,\r\n faAngleUp,\r\n faBirthdayCake,\r\n faCalendar,\r\n faCalendarAlt,\r\n faCalendarPlus,\r\n faCheckCircle,\r\n faEuroSign,\r\n faExclamationCircle,\r\n faExclamationTriangle,\r\n faStar,\r\n faFile,\r\n faFileAlt,\r\n faFilePen,\r\n faFileDownload,\r\n faEnvelope,\r\n faGrin,\r\n faHandshake,\r\n faIdCard,\r\n faInfo,\r\n faInfoCircle,\r\n faListAlt,\r\n faMoneyCheckAlt,\r\n faPencilAlt,\r\n faPhone,\r\n faSitemap,\r\n faSpinner,\r\n faTasks,\r\n faTh,\r\n faTimes,\r\n faTimesCircle,\r\n faUser,\r\n faUserTie,\r\n faUserFriends,\r\n faUserSlash,\r\n faFileLines,\r\n faHouseChimneyCrack,\r\n faTrash,\r\n faTrashAlt\r\n)\r\n\r\n// https://bootstrap-vue.js.org/docs/\r\nVue.use(BootstrapVue)\r\n\r\nVue.use(VeeValidate, {\r\n i18n,\r\n dictionary: {\r\n [validationFi.name]: validationFi,\r\n [validationSv.name]: validationSv\r\n }\r\n})\r\n\r\nstore.subscribe((mutation, state) => {\r\n if (mutation.type === 'config/setLanguage') {\r\n i18n.locale = store.state.config.language || 'fi'\r\n }\r\n})\r\n\r\nVue.config.productionTip = false\r\n\r\nfunction loadVue (loadedOk: boolean) {\r\n const vue = new Vue({\r\n router,\r\n store,\r\n i18n,\r\n render: h => h(App)\r\n }).$mount('#app')\r\n\r\n if (!loadedOk) {\r\n // failed to get things required from the back end. Show an error page\r\n vue.$store.dispatch('alert/error', { message: vue.$t('main.loadfailed'), surviveRouteChange: true })\r\n vue.$router.push('/error')\r\n }\r\n}\r\n\r\nmainService.handleAfterAuthenticated().then(() => {\r\n loadVue(true)\r\n}).catch((err) => {\r\n loadVue(false)\r\n})\r\n","var map = {\n\t\"./fi.json\": 6808,\n\t\"./sv.json\": 8252\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 = 5432;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + \"about\" + \"-legacy.\" + \"cf195fd3\" + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"ossi.web:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkossi_web\"] = self[\"webpackChunkossi_web\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(804); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","CodeCategory","MemberStatus","MemberGender","MemberLanguage","MembershipType","MembershipStatus","SectionStatus","SectionLanguage","DistrictStatus","DistrictLanguage","MeetingType","MeetingStatus","MinutesStatus","MemberPositionStatus","PositionStatus","OfficialLetterRequestStatus","MeetingDisplayStatus","MemberRoles","AlertTimeout","LoggedInState","YesNoWarning","state","ossiServiceBaseUrl","useMockUserBackend","language","sessionStorage","getItem","actions","mutations","setLanguage","lang","config","namespaced","message","type","surviveRouteChange","timeout","isHtml","this","undefined","NORMAL","createTime","Date","isRequestValidationResult","response","isValid","errors","alerts","dataLoading","success","options","commit","error","warning","info","remove","clear","excludeRouteChangeAlerts","push","Alert","valueOf","length","splice","findIndex","x","filter","dataLoaded","tokenStructureIsValid","token","split","decodeToken","claimsTypes","username","ossiId","omaId","crmId","sprId","sectionId","districtId","PasswordExpiring","membershipStatusId","membershipTypeId","isInRoleSectionUser","isInRoleSectionAdmin","isInRoleDistrictUser","isInRoleDistrictAdmin","isInRoleKT","isInRoleSuperAdmin","decoded","retObj","Number","passwordExpiring","Boolean","getRoles","claims","arr","login","loginInfo","requestOptions","method","headers","body","JSON","stringify","axios","post","authentication","loginUrl","then","status","data","Promise","includes","location","href","reject","localStorage","setItem","catch","logout","removeItem","adLogin","url","activeDirectory","adAuthorizeUri","sessionState","get","userService","loggedIn","loggedOut","rolesArray","email","password","redirectUri","loadBaseData","dispatch","root","promises","all","err","adlogin","loginFailure","loginRequest","loggingIn","loginSuccess","tokenObj","adLoginRequest","authHeader","Headers","Authorization","finnishDate","date","isDate","isNaN","getDate","getMonth","getFullYear","finnishShortDate","JsonDateParser","key","value","reISO","reMsAjax","a","exec","b","handleErrors","statusText","ok","clone","text","parse","window","processJson","result","console","log","debounce","fn","delay","debounceInterval","context","clearTimeout","setTimeout","apply","args","getCode","codeCategory","MEETING_STATUS","meetingStatuses","find","MEETING_TYPE","meetingTypes","MEMBERSHIP_STATUS","membershipStatuses","MEMBERSHIP_TYPE","membershipTypes","MEMBER_POSITION_STATUS","membershipPositionStatueses","MEMBER_STATUS","memberStatuses","MINUTES_STATUS","minutesStatuses","SECTION_STATUS","sectionStatuses","DISTRICT_STATUS","districtStatuses","_id","_category","_enumName","category","enumName","getTranslationKey","toLowerCase","Code","mode","getMeetingStatuses","codes","getMeetingStatusesUrl","fetch","MeetingStatusCode","getMeetingTypes","getMeetingTypesUrl","MeetingTypeCode","getMembershipStatuses","getMembershipStatusesUrl","MembershipStatusCode","getMembershipTypes","getMembershipTypesUrl","MembershipTypeCode","getMembershipPositionStatuses","getMembershipPositionStatuesesUrl","MemberPositionStatusCode","getMemberStatuses","getMemberStatusesUrl","MemberStatusCode","getMinutesStatuses","getMinutesStatusesUrl","MinutesStatusCode","getSectionStatuses","getSectionStatusesUrl","SectionStatusCode","getDistrictStatuses","getDistrictStatusesUrl","DistrictStatusCode","getAllCodes","codeService","getDefaultState","getOssiWebApiVersionUrl","loadAll","results","saveMeetingStatuses","payload","saveMeetingTypes","saveMembershipStatuses","saveMembershipTypes","saveMembershipPositionStatuses","saveMemberStatuses","saveMinutesStatuses","saveSectionStatuses","saveDistrictStatuses","reset","assign","getters","meetingStatus","meetingType","membershipStatus","membershipType","membershipPositionStatus","memberStatus","minutesStatus","sectionStatus","districtStatus","getMeetingStatusById","getMeetingTypesById","getMembershipStatusesById","getMembershipTypesById","getMembershipPositionStatuesesById","getMemberStatusesById","getMinutesStatusesById","getSectionStatusesById","getDistrictStatusesById","getAllSectionMembers","members","getAllSectionMembersUrl","pagedresult","getAllDistrictMembers","getAllDistrictMembersUrl","findDistrictMembers","findDistrictMembersUrl","findSectionMembers","findSectionMembersUrl","findAll","signal","findAllUrl","findBySectionId","findBySectionIdUrl","replace","toString","getById","getByIdUrl","member","fail","getDistrictMembersExportFile","getDistrictMembersExportFileUrl","arrayBuffer","buffer","Blob","getSectionMembersExportFile","getSectionMembersExportFileUrl","updateRoles","memberId","roles","updateRolesUrl","membersService","getAll","districts","allUrl","getDistrictRolesById","getDistrictRolesByIdUrl","district","getStats","statsUrl","stats","resetDistrict","resetUrl","districtService","sections","section","getSectionRolesById","getSectionRolesByIdUrl","getSectionStatistics","getSectionStatisticsUrl","resetSection","resetSectionUrl","sectionService","mapAddUpdateMeetingRequest","meeting","name","meetingTypeId","dateHeld","reportedBy","createdBy","moreInfo","addMeeting","meetings","addMeetingUrl","updateMeeting","meetingData","updateMeetingUrl","deleteMeeting","deleteMeetingUrl","submitMeeting","submitMeetingUrl","reviewedMeeting","reviewedMeetingUrl","archivedMeeting","archivedMeetingUrl","approveMeeting","approveMeetingUrl","addOrUpdateMeetingMinutes","minutes","addOrUpdateMeetingMinutesUrl","getMeeting","getMeetingUrl","uploadDoc","doc","uploadDocUrl","removeDoc","docId","removeDocUrl","getMeetings","getMeetingsUrl","addPositionOfTrust","memberPosition","addPositionOfTrustUrl","position","removePositionOfTrust","removePositionOfTrustUrl","updatePositionOfTrust","updatePositionOfTrustUrl","canEditMeeting","canEditMeetingUrl","canedit","getAllPositionsOfTrust","getAllPositionsOfTrustUrl","getDistrictCrmPositionsErrors","getDistrictCrmPositionsErrorsUrl","checkTermLength","request","checkTermLengthUrl","checkAddSerialTermLimits","checkAddSerialTermLimitsUrl","checkAddNonMemberSerialTermLimits","checkAddNonMemberSerialTermLimitsUrl","meetingService","districtsLoaded","districtRoles","getDistrictRoles","loadAllRequest","loadAllSuccess","loadAllFailure","loadDistrictRoles","loadDistrictRolesSuccess","loadDistrictRolesFailure","sectionsLoaded","sectionLoaded","selectedSection","sectionStatistics","sectionRoles","loadDetailed","getSectionRoles","loadDetailedRequest","loadDetailedSuccess","loadDetailedFailure","loadSectionRoles","loadSectionRolesSuccess","loadSectionRolesFailure","loadSectionStatisticsRequest","loadSectionStatisticsSuccess","loadSectionStatisticsFailure","getByDistrictId","signingAgreementsLoaded","signingAgreementLoaded","getBoardMembersPdfUrl","getSigningRightsMembersPdfUrl","getSigningRightsMembersPdfUrlInEnglish","getOfficialLetterRequestsUrl","getOfficialLetterRequestByIdUrl","addOfficialLetterRequestUrl","uploadSignedDocUrl","removeSignedDocUrl","approveLetterRequestUrl","archiveLetterRequestUrl","deleteLetterRequestUrl","signingAgreement","getPreparednessPlans","preparednessPlan","getPreparednessPlansUrl","getAttachments","getAttachmentsUrl","getPreparednessPlansById","getPreparednessPlansByIdUrl","getAttachmentsById","getAttachmentsByIdUrl","fillPreparednessPlan","fillPreparednessPlanUrl","uploadPreparednessPlan","uploadPreparednessPlansUrl","deletePreparednessPlan","deletePreparednessPlansUrl","preparednessPlanService","preparednessPlansLoaded","preparednessPlanLoaded","filledUrl","fillPreparednessPlanRequest","fillPreparednessPlanSuccess","fillPreparednessPlanFailure","filteredMembers","findRequest","findSuccess","searchresult","findFailure","meetingsLoaded","selectedMeeting","isFileUploading","positionsOfTrust","meetingsUrl","meetingTypeDefaultYearUrl","getDefaultEndDateForPositionUrl","saveMeeting","initialMeeting","meetingId","updateMeetingMinutesSentByMail","val","isSentByMail","deleteSelectedMeeting","documents","docWithUrl","pot","createMeeting","updateMeetingDetails","details","UNKNOWN","uploadingDoc","uploadDocFailure","docs","clonedDocs","dIndex","minutesId","getMeetingsRequest","getMeetingsSuccess","getMeetingsFailure","addMemberPosition","memberPositions","removeMemberPosition","index","updateMemberPosition","savePositionsOfTrust","getActivePositionsOfTrust","ACTIVE","employees","getEmployeeById","employee","addEmployee","addUrl","updateEmployee","updateUrl","deleteEmployee","deleteUrl","employeeService","employeesLoaded","employeeId","employeeDto","loadEmployeeRequest","loadEmployeeSuccess","loadEmployeeFailure","addEmployeeSuccess","addEmployeeFailure","updateEmployeeSuccess","updatedEmployee","emp","updateEmployeeFailure","deleteEmployeeSuccess","deleteEmployeeFailure","roleService","rolesLoaded","roleId","externalForms","externalforms","getFormById","form","getFormByName","getByNameUrl","addForm","updateForm","deleteForm","externalFormService","formsLoaded","forms","formId","formName","externalFormDto","loadFormRequest","loadFormSuccess","loadFormFailure","addFormSuccess","addFormFailure","updateFormSuccess","updatedForm","updateFormFailure","deleteFormSuccess","deleteFormFailure","use","modules","alert","handleAfterAuthenticated","mainService","render","_vm","_c","_self","_setupProxy","attrs","_e","staticClass","staticRenderFns","_v","_s","$t","option1Value","class","selected","fiSelected","on","$event","changeLanguage","svSelected","extend","computed","$store","methods","component","props","default","No","isYes","Yes","isNo","isWarning","Warning","components","SwitchLanguage","tickcrosswarning","required","bannerVisible","isLoggedIn","currentYear","versionInfo","versionInfoSeparator","ossiWebApiVersionLink","getUTCFullYear","appVersion","ossiWebApiVersion","version","_l","staticStyle","domProps","removeAlert","alertShouldStayUntilCleared","watch","$route","to","from","lastAlert","PERMANENT","interval","setInterval","item","document","getElementById","opacity","style","clearInterval","Spinner","Header","Footer","Loading","created","isDataLoading","icon","titleKey","subtitleKey","onClick","statisticClicked","$emit","iconLink","title","subtitle","fontAwesomeIcon","String","statClicked","subtext","LinkIconBox","StatisticTile","districtsClicked","$router","officialLetterRequestsClicked","usersClicked","employeesClicked","externalFormsClicked","loaded","mounted","hasAdminAccess","hasDistrictAccess","path","hasSectionAccess","itemsToShow","items","SuperAdminOnly","onLogin","onAdLogin","directives","rawName","expression","has","updateEmail","model","callback","$$v","label","tooltipMessage","tooltipId","hasError","placeholder","target","composing","localValue","tooltipTargetIdName","Tooltip","inject","validations","useTooltip","generateUUID","d","getTime","performance","now","newGuid","c","r","Math","random","floor","primary","compact","minPadding","disabled","buttonClicked","$evt","SprFormText","SprFormPassword","SprButton","LoginForm","submitted","LONG","baseUrl","origin","adInfo","adLoginUrl","_m","adState","getAdState","uri","indexOf","fragment","params","rv","forEach","pair","getDistrictClass","statusId","onDistrictClicked","getSections","getSectionClass","onSectionClicked","isActive","getSectionStatusTranslation","onBack","go","Back","sortedDistricts","slice","sort","localeCompare","sensitivity","DISBANDED","MONITORED","meetingsClicked","sectionsClicked","statMeetingsRequiringActionValue","statMeetingsRequiringActionText","actionMeetingsClicked","statDistrictTotalMembersValue","statDistrictTotalMembersText","statDistrictPaidMembersValue","statDistrictPaidMembersText","statDistrictNewMembersValue","statDistrictNewMembersText","isTrainingDistrict","canResetDistrict","onReset","crmErrors","getSection","onMeetingClicked","meetingName","getPosition","positionId","errorStr","DistrictPositionOfTrustErrors","reviewed","approved","archived","totalMembers","paidMembers","newMembers","SUBMITTED","REVIEWED","confirm","SHORT","canEditDistrict","districtName","meetingsFilter","onFilterChanged","sectionLabel","filterSectionIdStr","sectionData","onSectionChosen","typeLabel","filterTypeIdStr","typeData","onTypeChosen","ref","meetingDateLabel","meetingDate","onMeetingDateChosen","statusData","statusLabel","onStatusClicked","onClear","clearLabel","selectValue","opt","Array","newVal","checkbox","checked","labelLeft","onCheckboxChanged","readonly","SprFormCheckbox","formattedDate","onDateChanged","datePicker","dayOffset","days","months","today","close","format","str","dArr","setFullYear","setMonth","setDate","setUTCHours","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","dpid","_","dp","selectedDate","setUTCFullYear","setUTCMonth","setUTCDate","SprFormDropdown","SprFormCheckboxList","SprFormDatePicker","originalFilter","filterChanged","statusIds","typeId","types","newFilter","sendUpdate","existingIndex","sortOrders","sortOrder","hasColumn","isDistrictAdminAndAbove","hasCrmErrors","isOnlySectionUser","getMeetingType","getShortDate","statusCssClass","columns","validator","every","sortedList","tempSortOrder","col","typeid","MeetingsFilter","MeetingsList","DRAFT","PENDINGAPPROVAL","APPROVED","ARCHIVED","districtIdNumber","canViewMembers","statuses","dateHeldFrom","query","getUTCMonth","getUTCDate","loadMeetingsIntoStore","onMembersClicked","onMeetingsClicked","onAddMeetingClicked","getStatus","memberListVisible","sectionMembersClicked","memberRolesVisible","sectionRolesClicked","districtname","isDistrictUserAndAbove","onExport","searchCriteria","onMemberFilterChanged","onMemberFilterReset","memberSearchResult","total","skip","take","pageToStart","pageToEnd","pageBack","pageForward","onNameSelected","membershipStatusString","membershipStatusList","onMembershipStatusSelected","hasMembershipString","membershipList","onHasMembershipSelected","hasMembership","ALL","RESIGNED","DEAD","TRANSFER","PENDING","NEW","hasSearched","approvedString","initialList","showMembershipStatusCriteria","onApprovedSelected","memberInfoComponent","membershipId","tag","showSection","fullnameClicked","fullName","sectionName","isPublishProhibited","phone","address","address1","address2","postalCode","city","isMoreDetailsShown","paymentDate","membershipApproved","formatDate","termStart","termEnd","isAddressEmpty","country","formatAddress","add","concat","firstName","lastName","noPositions","orderedPositions","starta","startb","hasAddress","dob","sectionClicked","getMembershipStatus","MemberInfoRow","MemberBasicInfoRow","listType","membersExportFile","showExport","noResults","onMembersExport","onMembersExportSection","onMembersExportDistrict","extraMembershipStatuses","mergedMembershipStatuses","criteria","hasCurrentMembership","isMembershipApproved","dateAsTimestamp","toISOString","substr","fileName","dataUrl","URL","createObjectURL","createElement","appendChild","download","click","revokeObjectURL","onPageToStartClicked","onPageBackClicked","fromPager","toPager","onPageForwardClicked","onPageToEndClicked","min","pageBackVisible","pageForwardVisible","pageLocationVisible","MemberSearchCriteria","MembersList","Pager","includeMembershipPositions","sectionMemberRoles","includeMemberPositions","$set","getMembers","debouncedMemberSearch","memberFilter","s","updateFilter","memberSearchCriteria","districtMemberRoles","sectionItem","roleItem","fullNameClicked","roleCode","editUrl","memberInfo","role","getRoleName","SectionRoleItem","districtExist","MemberSearch","DistrictRolesList","swapTab","tabname","unpagedFilter","workbook","worksheet","addWorksheet","header","width","numFmt","headerRow","getRow","font","bold","addRow","paymentdate","isEmailAllowed","isSmsAllowed","isContactProhibited","eachCell","cell","alignment","vertical","horizontal","autoFilter","xlsx","writeBuffer","link","onPreparednessPlanDownload","getUrl","preparednessPlanUrl","reportsClicked","fillPreparednessClicked","uploadPreparednessClicked","onFileChange","canEditMeetings","currentSection","files","readFile","fileInput","$refs","open","file","reader","FileReader","onload","readerEvt","raw","processUploadedFile","getPreparednessPlanRequest","readAsBinaryString","rawString","blob","btoa","fileType","addMeetingClicked","preparednessPlanClicked","isSectionEditAccess","statSectionTotalMembersValue","resetSectionSummary","activePositionsOfTrust","upcomingPositionsOfTrust","statSectionTotalMembersText","statSectionPaidMembersValue","statSectionPaidMembersText","statSectionNewMembersValue","statSectionNewMembersText","localSection","billingAddress","shippingAddress","statusTranslation","languageTranslation","numberOfActiveMembers","establishedDate","businessId","accountId","isTrainingSection","canResetSection","localVal","address1Changed","first","address2Changed","postalCodeChanged","cityChanged","countryChanged","addressChanged","AddressEditor","isEditable","isEditing","billingAddressChanged","shippingAddressChanged","nonMember","hasDifferentSection","canSeeMemberInfo","gotoMember","getPositionTranslation","positions","pos","v","IsMemberOnThisSection","CanViewMemberOnOtherSection","hasAccessToOtherSections","positionCode","sortedPositions","y","gotoMeeting","meetingSectionId","SectionSummary","ActivePositionsOfTrustSummary","UpcomingPositionsOfTrustSummary","loadSection","userSectionId","demoImage1","demoImage2","demoImage3","isSectionBasicAccess","isSectionReport","isCreateMeetingAccess","hasPlan","planCreatedDate","onPreparednessPlanUploaded","onFillPreparednessPlan","onAttachmentUploaded","formattedExpirationDate","triggerFileInput","viewPreparednessClicked","maximumAttachmentsReached","triggerAttachmentInput","attachment","preventDefault","downloadAttachment","deleteAttachment","onAttachmentChange","sprbutton","attachments","removeChild","attachmentInput","PreparednessPlan","isAttachment","abortController","aborted","abort","AbortController","filterstr","sectionname","isSectionAdminAndAbove","canExport","handleMembersUpdated","sectionExist","getMemberRoles","SectionRolesList","SectionMembersList","membersList","updatedMembersList","birthdate","birthDate","memberRoles","canEditRoles","isRoleSaveInProgress","onRoleChanged","formatErrors","errs","htmlString","DateValidate","FUTURE","PAST","finnishDateStringToDate","getCompareDate","dateValidationType","compare","setHours","setMinutes","setSeconds","setMilliseconds","dateInPast","dateInFuture","dateOfBirth","emailAllowed","smsAllowed","contactProhibited","booleanToString","toDate","getRole","isSuperAdmin","isReadOnlyCheckbox","SUPER_ADMIN","toggleRole","isKT","KT","isDistrictAdmin","DISTRICT_ADMIN","isDistrictUser","DISTRICT_USER","isSectionAdmin","SECTION_ADMIN","isSectionUser","SECTION_USER","isReadOnly","isSaveInProgress","maxUserRole","userRoles","memberRole","addOrRemove","i","call","MemberDetails","MemberRoleDetails","MemberPositionDetails","memberIdNumber","loadMember","validationMessage","translationKey","meetingColumnsToDisplay","totalMeetings","meetingsToReview","meetingsToApprove","meetingDetails","onMeetingDetailsUpdated","onSave","onDeleteMeeting","meetingTypeString","onMeetingTypeUpdated","dateHeldString","dateHeldDate","onDateHeldUpdated","onNameUpdated","onMoreInfoUpdated","onValChanged","DatePicker","SprFormTextArea","update","CRM","unshift","MeetingDetailsForm","modified","isLatestMeeting","user","$validator","validateAll","displayErrors","sectionIdNumber","isLoading","meetingLoaded","onMeetingDetailsChanged","onMeetingMinutesSentByMailChanged","sectionActivePositionsOfTrust","onViewMeetingClicked","meetingIdNumber","isMeetingEditable","onUpdateMemberPosition","onRemoveMemberPosition","onAddMemberPosition","potWithCrmErrors","isCreatedStatus","onSubmit","isReviewedStatus","isSubmittedStatus","canApprove","onApproved","adminCanArchive","onArchived","onTemplate","onDelete","createdDate","lastModifiedDate","onSentByMailChanged","onMinutesFileUploaded","removeUploadedFile","SprFormFileUpload","sameDoc","uploadedBy","mins","memberPositionFormData","onInputMemberPositionForm","onPositionTypeUpdated","onCancel","showForm","onAdd","positionTypeString","positionsList","onInputPositionType","isMemberUniqueName","_q","isMember","selectedMember","onMemberSelected","onMemberTextInput","nonMemberFirstname","onInputNonMemberFirstname","nonMemberLastname","onInputNonMemberLastname","nonMemberCompany","max","onInputNonMemberCompany","nonMemberAddress","onInputNonMemberAddress","nonMemberPostcode","onInputNonMemberPostcode","nonMemberPostoffice","onInputNonMemberPostoffice","nonMemberEmail","nonMemberPhone","showErrorNonMemberPhone","onInputNonMemberPhoneRequired","regex","onInputNonMemberPhone","showErrorNonMemberEmail","onInputNonMemberEmailRequired","onInputNonMemberEmail","onInputTermStart","termEndDate","onInputTermEnd","values","serializer","inputClass","maxMatches","minMatchingChars","onHit","onInput","VueTypeaheadBootstrap","$_veeValidate","rejectsFalse","Function","sendValue","SprTypeahead","SprHiddenDateField","isAdd","observable","unique","canShowMemberNonMemberSelection","requiresMembership","memberArr","retArr","getMemberString","allowedPositions","positionIdName","getPositionIdName","hasNoPhone","hasNoEmail","phoneNumber","emailAddress","findMemberByName","findMember","findPosition","temp","send","validate","sectionMembers","MemberPositionForm","termEndByMeetingType","endFromInfo","meetingDefaultPositionInfo","defaultPositionEndDate","termStartByMeetingType","startFromInfo","defaultPositionStartDate","firstname","lastname","company","postcode","postoffice","formatParametrizedError","template","errorMessage","hasTranslationParameters","parameters","translationParameters","parameter","getValidationHtml","hasAnyParamerizedErrors","hasParamerizedErrors","errorMessages","anyParamerizedErrors","element","getMemberPosition","positionType","yearUrl","defaultDateEndForPosition","yearPromise","defaultDateEndForPositionPromise","defaultDateEnd","termData","termLengthValidationResult","serialData","serialTermsValidationResult","existing","checkIsRequestValidationResult","mempos","viewMember","shownRow","isRowShown","showHideMoreDetails","editMember","dateFormat","memberPositionData","onRemove","isNonMember","showTermOrdinal","termOrdinalFormat","termOrdinal","electedDate","updateMemberRequest","ordinal","memberPos","removeMember","removalData","mp","memberposition","isApprovedMeeting","MeetingStatusIndicator","showMeetingLink","hasActions","MeetingMinutesForm","AddMemberPosition","MeetingMemberList","MeetingCrmErrors","ActivePositionsOfTrust","debouncedFunction","potErrors","crmErrorMessages","loadMeeting","showErrors","debouncedMeetingDetailsChanged","editSentByMail","showAddEmployeeForm","employeeForm","isUpdate","closeEmployeeForm","roleName","showUpdateEmployeeForm","selectedDistrictId","selectedRoleId","submitButtonText","cancelForm","acceptedRoles","set","parseInt","EmployeeDetailsForm","showModal","loadLists","isAddFormVisible","showAddForm","loading","externalFormsAvailable","row","deleteRow","cancelRow","isNew","formData","submitForm","cancel","edit","ExternalFormRow","isEditFormVisible","fetchExternalForms","externalForm","searchDate","onBoardMembersReport","officialLetterRequests","onDeleteOfficialLetterRequest","onAddNewOfficialLetterRequest","sortedRequests","isExpired","gotoDocument","expiryDate","requestedBy","formatStatus","isKTOrAbove","isStatusRequested","downloadDocument","canDelete","deleteDocument","requests","REQUESTED","userId","createdByMemberId","txt","PROCESSED","getBoardMembersPdf","getSigningRightsMembersPdf","getSigningRightsMembersPdfInEnglish","getOfficialLetterRequests","getOfficialLetterRequestById","addOfficialLetterRequest","uploadSignedDocument","removeSignedDocument","approveLetterRequest","archiveLetterRequest","deleteLetterRequest","signingAgreementService","OfficialLetterRequests","dateFrom","OfficialLetterRequestList","onSend","reasonForRequest","gotoSection","reason","viewDocument","canCreatePdf","generatePdf","generateEnglishPdf","hasSignedDoc","onSignedFileUploaded","hasExpired","approveRequest","archiveRequest","confirmDeleteRequest","getOfficialLetterRequest","officalLetterRequestId","deleteRequest","idNumber","officialLetterRequestId","oneWeek","canProcess","canArchive","canDeleteDoc","Authenticate","next","accessArray","meta","access","router","base","routes","Home","beforeEnter","Login","Logout","ADResponse","ProcessOfficialLetterRequest","Members","Districts","District","DistrictMeetings","DistrictMembers","Sections","Section","SectionMembers","EditMember","Meetings","AddMeeting","EditMeeting","Reports","AddOfficialLetterRequest","EmployeeList","ExternalForms","NotFound","loadLocaleMessages","locales","messages","matched","match","locale","preferredLanguage","fallbackLocale","after","field","alpha","alpha_dash","alpha_num","before","between","confirmed","confirmedField","date_between","date_format","decimal","decimals","digits","dimensions","height","excluded","ext","image","included","ip","mimes","numeric","size","finnishdateinpast","finnishdateinfuture","attributes","meeting_name","meeting_type","meeting_dateheld","memberposition_position","memberposition_member","memberposition_electeddate","memberposition_termstart","memberposition_termend","memberposition_nonmemberfirstname","memberposition_nonmemberlastname","memberposition_nonmemberphone","memberposition_nonmemberphonerequired","memberposition_nonmemberemail","memberposition_nonmemberemailrequired","memberposition_nonmemberpostcode","memberposition_nonmemberpostoffice","memberposition_nonmembercompany","memberposition_nonmemberaddress","electeddate","termstart","section_phone","section_email","section_url","address_address1","address_address2","address_postalcode","address_city","address_country","loadVue","loadedOk","vue","store","i18n","h","App","$mount","dictionary","subscribe","mutation","productionTip","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","m","deferred","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","n","getter","__esModule","definition","defineProperty","enumerable","f","chunkId","reduce","u","miniCssF","g","globalThis","obj","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","nc","setAttribute","src","onScriptComplete","prev","event","onerror","doneFns","parentNode","bind","head","Symbol","toStringTag","nmd","paths","children","p","installedChunks","installedChunkData","promise","loadingEnded","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}