{"version":3,"file":"js/app.a591b1bd.js","mappings":"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","sources":["webpack://timit-frontend/./src/components/PassengerSearch.vue?ff5b","webpack://timit-frontend/./src/components/PassengerSearch.vue?8151","webpack://timit-frontend/./src/components/PassengerSearch.vue?79ed","webpack://timit-frontend/./src/components/PassengerSearch.vue","webpack://timit-frontend/./src/components/Passenger/components/DestinationSelector.vue?f08c","webpack://timit-frontend/./src/components/Passenger/components/DestinationSelector.vue?6a9b","webpack://timit-frontend/./src/components/Passenger/components/DestinationSelector.vue?ef9c","webpack://timit-frontend/./src/components/Passenger/components/DestinationSelector.vue","webpack://timit-frontend/./src/components/Passenger/components/GroupPicker.vue?2905","webpack://timit-frontend/./src/components/Passenger/components/GroupPicker.vue","webpack://timit-frontend/./src/components/Passenger/components/GroupPicker.vue?09be","webpack://timit-frontend/./src/components/Passenger/components/PassengerDialog.vue?4a12","webpack://timit-frontend/./src/components/Passenger/components/PassengerDialog.vue?6d9d","webpack://timit-frontend/./src/components/Passenger/components/PassengerDialog.vue?e39b","webpack://timit-frontend/./src/components/Passenger/components/PassengerDialog.vue","webpack://timit-frontend/./src/components/Passenger/components/PassengerEditor.vue?32e0","webpack://timit-frontend/./src/components/Passenger/components/PassengerEditor.vue","webpack://timit-frontend/./src/components/Passenger/components/PassengerEditor.vue?9935","webpack://timit-frontend/./src/components/Passenger/components/PassengerList.vue?ab50","webpack://timit-frontend/./src/components/Passenger/components/PassengerListRow.vue?33d1","webpack://timit-frontend/./src/components/Passenger/components/PassengerListRow.vue?c7a8","webpack://timit-frontend/./src/components/Passenger/components/PassengerListRow.vue?d25d","webpack://timit-frontend/./src/components/Passenger/components/PassengerListRow.vue","webpack://timit-frontend/./src/components/Passenger/components/PassengerList.vue?3795","webpack://timit-frontend/./src/components/Passenger/components/PassengerList.vue?1f67","webpack://timit-frontend/./src/components/Passenger/components/PassengerList.vue","webpack://timit-frontend/./node_modules/moment/locale/ sync en-gb%7Cfi%7Csv","webpack://timit-frontend/./src/AppRoot.vue.html","webpack://timit-frontend/./src/components/Passenger/components/GroupPicker.vue.html","webpack://timit-frontend/./src/components/Passenger/components/PassengerEditor.vue.html","webpack://timit-frontend/./src/components/Timetable/components/TimeOfDayEditor.vue.html","webpack://timit-frontend/./src/components/Timetable/components/TimetableEditor.vue.html","webpack://timit-frontend/./src/components/Timetable/components/TimetableInfoDialog.vue.html","webpack://timit-frontend/./src/AppEvents.ts","webpack://timit-frontend/./src/pages/ArrivalsDeparturesPage.vue?6305","webpack://timit-frontend/./src/components/ArrivalsDepartures/components/ArrivalDepartureListItem.vue?8eda","webpack://timit-frontend/./src/components/ArrivalsDepartures/components/ArrivalDepartureListItem.vue?4d63","webpack://timit-frontend/./src/components/ArrivalsDepartures/components/ArrivalDepartureListItem.vue?4587","webpack://timit-frontend/./src/components/ArrivalsDepartures/components/ArrivalDepartureListItem.vue","webpack://timit-frontend/./src/components/ArrivalsDepartures/components/ArrivalsDeparturesDaySelector.vue?479c","webpack://timit-frontend/./src/components/ArrivalsDepartures/components/ArrivalsDeparturesDaySelector.vue?0762","webpack://timit-frontend/./src/components/ArrivalsDepartures/components/ArrivalsDeparturesDaySelector.vue?c380","webpack://timit-frontend/./src/components/ArrivalsDepartures/components/ArrivalsDeparturesDaySelector.vue","webpack://timit-frontend/./src/components/DatetimePicker.vue?998a","webpack://timit-frontend/./src/components/DatetimePicker.vue?2cc0","webpack://timit-frontend/./src/components/DatetimePicker.vue?082d","webpack://timit-frontend/./src/components/DatetimePicker.vue","webpack://timit-frontend/./src/components/ArrivalsDepartures/models/ArrivalsDeparturesDay.ts","webpack://timit-frontend/./src/pages/ArrivalsDeparturesPage.vue?64b6","webpack://timit-frontend/./src/pages/ArrivalsDeparturesPage.vue?8b90","webpack://timit-frontend/./src/pages/ArrivalsDeparturesPage.vue","webpack://timit-frontend/./src/pages/SignInPage.vue?72d7","webpack://timit-frontend/./src/pages/SignInPage.vue?d9be","webpack://timit-frontend/./src/pages/SignInPage.vue?4507","webpack://timit-frontend/./src/pages/SignInPage.vue","webpack://timit-frontend/./src/pages/SignInAzureAdPage.vue?7cd3","webpack://timit-frontend/./src/pages/SignInAzureAdPage.vue?3b39","webpack://timit-frontend/./src/pages/SignInAzureAdPage.vue?27cb","webpack://timit-frontend/./src/pages/SignInAzureAdPage.vue","webpack://timit-frontend/./src/pages/ForgotPasswordPage.vue?3013","webpack://timit-frontend/./src/pages/ForgotPasswordPage.vue?7af9","webpack://timit-frontend/./src/pages/ForgotPasswordPage.vue?f4dd","webpack://timit-frontend/./src/pages/ForgotPasswordPage.vue","webpack://timit-frontend/./src/pages/ResetPasswordPage.vue?d887","webpack://timit-frontend/./src/pages/ResetPasswordPage.vue?1b90","webpack://timit-frontend/./src/pages/ResetPasswordPage.vue?1103","webpack://timit-frontend/./src/pages/ResetPasswordPage.vue","webpack://timit-frontend/./src/pages/ContactSupportPage.vue?15aa","webpack://timit-frontend/./src/pages/ContactSupportPage.vue?1bf5","webpack://timit-frontend/./src/pages/ContactSupportPage.vue?8175","webpack://timit-frontend/./src/pages/ContactSupportPage.vue","webpack://timit-frontend/./src/pages/DestinationPage.vue?34e2","webpack://timit-frontend/./src/pages/DestinationPage.vue?ae75","webpack://timit-frontend/./src/pages/DestinationPage.vue?9693","webpack://timit-frontend/./src/pages/DestinationPage.vue","webpack://timit-frontend/./src/components/Organization/OrganizationTransportationPermissions.vue?e661","webpack://timit-frontend/./src/components/Organization/PassengerTransportationPermissionTable.vue?6188","webpack://timit-frontend/./src/components/Passenger/components/TransportationPermissionEditor.vue?8de3","webpack://timit-frontend/./src/components/DeductiblePaymentSelect.vue?b240","webpack://timit-frontend/./src/components/DeductiblePaymentSelect.vue?c5fb","webpack://timit-frontend/./src/components/DeductiblePaymentSelect.vue?5818","webpack://timit-frontend/./src/components/DeductiblePaymentSelect.vue","webpack://timit-frontend/./src/components/DeductibleTypeSelect.vue?7353","webpack://timit-frontend/./src/components/DeductibleTypeSelect.vue?7524","webpack://timit-frontend/./src/components/DeductibleTypeSelect.vue?89f7","webpack://timit-frontend/./src/components/DeductibleTypeSelect.vue","webpack://timit-frontend/./src/components/Passenger/components/PriceAreaCard.vue?7c6e","webpack://timit-frontend/./src/models/PriceAreasTable.ts","webpack://timit-frontend/./src/components/Passenger/components/PriceAreaCard.vue?8558","webpack://timit-frontend/./src/components/Passenger/components/PriceAreaCard.vue?bace","webpack://timit-frontend/./src/components/Passenger/components/PriceAreaCard.vue","webpack://timit-frontend/./src/components/Passenger/components/PassengerTransportationPermissionNameInput.vue?fd64","webpack://timit-frontend/./src/components/Passenger/components/PassengerTransportationPermissionNameInput.vue?27c7","webpack://timit-frontend/./src/components/Passenger/components/PassengerTransportationPermissionNameInput.vue?dff9","webpack://timit-frontend/./src/components/Passenger/components/PassengerTransportationPermissionNameInput.vue","webpack://timit-frontend/./src/components/Passenger/components/PassengerTransportationPermissionCostCenterInput.vue?ea06","webpack://timit-frontend/./src/components/Passenger/components/PassengerTransportationPermissionCostCenterInput.vue?95aa","webpack://timit-frontend/./src/components/Passenger/components/PassengerTransportationPermissionCostCenterInput.vue?5ac9","webpack://timit-frontend/./src/components/Passenger/components/PassengerTransportationPermissionCostCenterInput.vue","webpack://timit-frontend/./src/components/QuotaTimeSelect.vue?5829","webpack://timit-frontend/./src/components/QuotaTimeSelect.vue?40e1","webpack://timit-frontend/./src/components/QuotaTimeSelect.vue?4da2","webpack://timit-frontend/./src/components/QuotaTimeSelect.vue","webpack://timit-frontend/./src/components/Passenger/models/TransportationPermissionExtra.ts","webpack://timit-frontend/./src/components/TripDirectionsSelect.vue?f5be","webpack://timit-frontend/./src/components/TripDirectionsSelect.vue?47f2","webpack://timit-frontend/./src/components/TripDirectionsSelect.vue?1b0a","webpack://timit-frontend/./src/components/TripDirectionsSelect.vue","webpack://timit-frontend/./src/components/TripDestinationsSelect.vue?b307","webpack://timit-frontend/./src/components/TripDestinationsSelect.vue?a0c1","webpack://timit-frontend/./src/components/TripDestinationsSelect.vue?ce06","webpack://timit-frontend/./src/components/TripDestinationsSelect.vue","webpack://timit-frontend/./src/components/Passenger/components/TransportationPermissionEditor.vue?eefb","webpack://timit-frontend/./src/components/Passenger/components/TransportationPermissionEditor.vue?6adb","webpack://timit-frontend/./src/components/Passenger/components/TransportationPermissionEditor.vue","webpack://timit-frontend/./src/components/Organization/PassengerTransportationPermissionTable.vue?a944","webpack://timit-frontend/./src/components/Organization/PassengerTransportationPermissionTable.vue?3b81","webpack://timit-frontend/./src/components/Organization/PassengerTransportationPermissionTable.vue","webpack://timit-frontend/./src/components/Organization/OrganizationTransportationPermissions.vue?5c56","webpack://timit-frontend/./src/components/Organization/OrganizationTransportationPermissions.vue?43af","webpack://timit-frontend/./src/components/Organization/OrganizationTransportationPermissions.vue","webpack://timit-frontend/./src/pages/TimetablePage.vue?2a3e","webpack://timit-frontend/./src/components/Timetable/components/TimetableEditor.vue?4738","webpack://timit-frontend/./src/components/Timetable/components/TimetableEditor.vue","webpack://timit-frontend/./src/components/Timetable/components/TimetableEditor.vue?3aa4","webpack://timit-frontend/./src/components/Timetable/components/TimetableInfoDialog.vue?3d35","webpack://timit-frontend/./src/components/Timetable/components/TimetableInfoDialog.vue","webpack://timit-frontend/./src/components/Timetable/components/TimetableInfoDialog.vue?9eb1","webpack://timit-frontend/./src/components/Booking/components/BookingEditor.vue?c06c","webpack://timit-frontend/./src/components/PlacePicker.vue?d9f5","webpack://timit-frontend/./src/components/PlacePicker.vue?1594","webpack://timit-frontend/./src/components/PlacePicker.vue?c5a4","webpack://timit-frontend/./src/components/PlacePicker.vue","webpack://timit-frontend/./src/components/Booking/components/BookingProductListItem.vue?097b","webpack://timit-frontend/./src/components/Booking/components/BookingProductListItem.vue?8989","webpack://timit-frontend/./src/components/Booking/components/BookingProductListItem.vue?4ad0","webpack://timit-frontend/./src/components/Booking/components/BookingProductListItem.vue","webpack://timit-frontend/./src/components/Booking/components/BookingPtpSelect.vue?1c84","webpack://timit-frontend/./src/components/Booking/components/BookingPtpSelect.vue?8bb3","webpack://timit-frontend/./src/components/Booking/components/BookingPtpSelect.vue?6cf1","webpack://timit-frontend/./src/components/Booking/components/BookingPtpSelect.vue","webpack://timit-frontend/./src/components/Booking/components/BookingEditor.vue?37bc","webpack://timit-frontend/./src/components/Booking/components/BookingEditor.vue?7d0b","webpack://timit-frontend/./src/components/Booking/components/BookingEditor.vue","webpack://timit-frontend/./src/components/Booking/components/BookingInfoDialog.vue?cfcf","webpack://timit-frontend/./src/components/Booking/components/BookingInfoDialog.vue?9929","webpack://timit-frontend/./src/components/Booking/components/BookingInfoDialog.vue?cbb8","webpack://timit-frontend/./src/components/Booking/components/BookingInfoDialog.vue","webpack://timit-frontend/./src/pages/TimetablePage.vue?8a25","webpack://timit-frontend/./src/pages/TimetablePage.vue?406e","webpack://timit-frontend/./src/pages/TimetablePage.vue","webpack://timit-frontend/./src/components/Timetable/views/TimetableList.vue?b3ec","webpack://timit-frontend/./src/components/Timetable/components/TimetableListItem.vue?de30","webpack://timit-frontend/./src/components/Timetable/components/TimetableListItem.vue?c13d","webpack://timit-frontend/./src/components/Timetable/components/TimetableListItem.vue?9a97","webpack://timit-frontend/./src/components/Timetable/components/TimetableListItem.vue","webpack://timit-frontend/./src/components/Timetable/views/TimetableList.vue?b9be","webpack://timit-frontend/./src/components/Timetable/views/TimetableList.vue?2e42","webpack://timit-frontend/./src/components/Timetable/views/TimetableList.vue","webpack://timit-frontend/./src/components/Timetable/views/TimetableView.vue?798c","webpack://timit-frontend/./src/components/Timetable/models/WeekDay.ts","webpack://timit-frontend/./src/components/Timetable/components/TimeOfDayEditor.vue?44c5","webpack://timit-frontend/./src/components/Timetable/components/TimeOfDayEditor.vue","webpack://timit-frontend/./src/components/Schedule/enums.ts","webpack://timit-frontend/./src/components/Timetable/components/TimeOfDayEditor.vue?1594","webpack://timit-frontend/./src/components/Timetable/views/TimetableView.vue?b329","webpack://timit-frontend/./src/components/Timetable/views/TimetableView.vue?7b4e","webpack://timit-frontend/./src/components/Timetable/views/TimetableView.vue","webpack://timit-frontend/./src/components/Booking/views/BookingList.vue?a5ec","webpack://timit-frontend/./src/components/Booking/components/BookingListItem.vue?138f","webpack://timit-frontend/./src/components/Booking/components/BookingListItem.vue?50a1","webpack://timit-frontend/./src/components/Booking/components/BookingListItem.vue?0462","webpack://timit-frontend/./src/components/Booking/components/BookingListItem.vue","webpack://timit-frontend/./src/components/Booking/views/BookingList.vue?2f45","webpack://timit-frontend/./src/components/Booking/views/BookingList.vue?2900","webpack://timit-frontend/./src/components/Booking/views/BookingList.vue","webpack://timit-frontend/./src/pages/OrganizationPage.vue?7f5f","webpack://timit-frontend/./src/pages/OrganizationPage.vue?b26a","webpack://timit-frontend/./src/pages/OrganizationPage.vue?a5d3","webpack://timit-frontend/./src/pages/OrganizationPage.vue","webpack://timit-frontend/./src/components/Organization/OrganizationDetails.vue?d92b","webpack://timit-frontend/./src/components/Organization/UsersPage.vue?17f7","webpack://timit-frontend/./src/components/Organization/UsersPage.vue?7916","webpack://timit-frontend/./src/components/Organization/UsersPage.vue?9fd5","webpack://timit-frontend/./src/components/Organization/UsersPage.vue","webpack://timit-frontend/./src/components/Organization/DestinationsPage.vue?2e31","webpack://timit-frontend/./src/components/Organization/CreateDestinationModal.vue?f950","webpack://timit-frontend/./src/components/Organization/CreateDestinationModal.vue?3574","webpack://timit-frontend/./src/components/Organization/CreateDestinationModal.vue?3ac7","webpack://timit-frontend/./src/components/Organization/CreateDestinationModal.vue","webpack://timit-frontend/./src/components/Organization/DestinationsPage.vue?70ed","webpack://timit-frontend/./src/components/Organization/DestinationsPage.vue?7095","webpack://timit-frontend/./src/components/Organization/DestinationsPage.vue","webpack://timit-frontend/./src/components/Organization/PassengerGroupsPage.vue?044c","webpack://timit-frontend/./src/components/Organization/CreatePassengerGroup.vue?55d9","webpack://timit-frontend/./src/components/Organization/CreatePassengerGroup.vue?1402","webpack://timit-frontend/./src/components/Organization/CreatePassengerGroup.vue?765f","webpack://timit-frontend/./src/components/Organization/CreatePassengerGroup.vue","webpack://timit-frontend/./src/components/Organization/PassengerGroupsPage.vue?1425","webpack://timit-frontend/./src/components/Organization/PassengerGroupsPage.vue?01ad","webpack://timit-frontend/./src/components/Organization/PassengerGroupsPage.vue","webpack://timit-frontend/./src/components/Organization/OrganizationDetails.vue?c9ed","webpack://timit-frontend/./src/components/Organization/OrganizationDetails.vue?ab65","webpack://timit-frontend/./src/components/Organization/OrganizationDetails.vue","webpack://timit-frontend/./src/components/Organization/PassengerGroupPassengers.vue?af73","webpack://timit-frontend/./src/components/Organization/OrganizationPassengerPage.vue?6dc8","webpack://timit-frontend/./src/components/Passenger/components/PassengerDetailsEditor.vue?8801","webpack://timit-frontend/./src/components/Passenger/components/PassengerPhonenumberEditor.vue?a49a","webpack://timit-frontend/./src/components/Passenger/components/PassengerPhonenumberEditor.vue?3ffc","webpack://timit-frontend/./src/components/Passenger/components/PassengerPhonenumberEditor.vue?24b1","webpack://timit-frontend/./src/components/Passenger/components/PassengerPhonenumberEditor.vue","webpack://timit-frontend/./src/components/Passenger/components/SsnEditor.vue?5040","webpack://timit-frontend/./src/components/Passenger/components/SsnEditor.vue?eaea","webpack://timit-frontend/./src/components/Passenger/components/SsnEditor.vue?f9c6","webpack://timit-frontend/./src/components/Passenger/components/SsnEditor.vue","webpack://timit-frontend/./src/components/Passenger/components/PassengerDetailsEditor.vue?bff3","webpack://timit-frontend/./src/components/Passenger/components/PassengerDetailsEditor.vue?57f6","webpack://timit-frontend/./src/components/Passenger/components/PassengerDetailsEditor.vue","webpack://timit-frontend/./src/components/Passenger/components/PassengerUtilities.vue?9e17","webpack://timit-frontend/./src/components/Passenger/components/PassengerUtilities.vue?4b57","webpack://timit-frontend/./src/components/Passenger/components/PassengerUtilities.vue?61ad","webpack://timit-frontend/./src/components/Passenger/components/PassengerUtilities.vue","webpack://timit-frontend/./src/components/Organization/OrganizationPassengerPage.vue?b1d3","webpack://timit-frontend/./src/components/Organization/OrganizationPassengerPage.vue?107f","webpack://timit-frontend/./src/components/Organization/OrganizationPassengerPage.vue","webpack://timit-frontend/./src/components/Organization/AddPassengerToPassengerGroup/AddPassengerToPassengerGroupDialog.vue?b378","webpack://timit-frontend/./src/components/Organization/AddPassengerToPassengerGroup/AddPassengerToPassengerGroupForm.vue?ca18","webpack://timit-frontend/./src/components/Organization/AddPassengerToPassengerGroup/PassengerInformationCard.vue?c55c","webpack://timit-frontend/./src/components/Organization/AddPassengerToPassengerGroup/PassengerInformationCard.vue?469a","webpack://timit-frontend/./src/components/Organization/AddPassengerToPassengerGroup/PassengerInformationCard.vue?0f51","webpack://timit-frontend/./src/components/Organization/AddPassengerToPassengerGroup/PassengerInformationCard.vue","webpack://timit-frontend/./src/components/Organization/AddPassengerToPassengerGroup/AddPassengerToPassengerGroupForm.vue?b62b","webpack://timit-frontend/./src/components/Organization/AddPassengerToPassengerGroup/AddPassengerToPassengerGroupForm.vue?ab9a","webpack://timit-frontend/./src/components/Organization/AddPassengerToPassengerGroup/AddPassengerToPassengerGroupForm.vue","webpack://timit-frontend/./src/components/Organization/AddPassengerToPassengerGroup/AddPassengerToPassengerGroupDialog.vue?13be","webpack://timit-frontend/./src/components/Organization/AddPassengerToPassengerGroup/AddPassengerToPassengerGroupDialog.vue?4293","webpack://timit-frontend/./src/components/Organization/AddPassengerToPassengerGroup/AddPassengerToPassengerGroupDialog.vue","webpack://timit-frontend/./src/components/Organization/RemovePassengerFromGroupConfirmationDialog.vue?c7a7","webpack://timit-frontend/./src/components/Organization/RemovePassengerFromGroupConfirmationDialog.vue?d78e","webpack://timit-frontend/./src/components/Organization/RemovePassengerFromGroupConfirmationDialog.vue?1028","webpack://timit-frontend/./src/components/Organization/RemovePassengerFromGroupConfirmationDialog.vue","webpack://timit-frontend/./src/components/Organization/PassengerGroupPassengers.vue?167c","webpack://timit-frontend/./src/components/Organization/PassengerGroupPassengers.vue?43a7","webpack://timit-frontend/./src/components/Organization/PassengerGroupPassengers.vue","webpack://timit-frontend/./src/components/Organization/OrganizationAuthTenantsPage.vue?b298","webpack://timit-frontend/./src/components/Organization/AddTenantDialog.vue?9cab","webpack://timit-frontend/./src/components/Organization/AddTenantDialog.vue?3cad","webpack://timit-frontend/./src/components/Organization/AddTenantDialog.vue?5c2f","webpack://timit-frontend/./src/components/Organization/AddTenantDialog.vue","webpack://timit-frontend/./src/components/Organization/OrganizationAuthTenantsPage.vue?b5fd","webpack://timit-frontend/./src/components/Organization/OrganizationAuthTenantsPage.vue?d8a2","webpack://timit-frontend/./src/components/Organization/OrganizationAuthTenantsPage.vue","webpack://timit-frontend/./src/pages/PassengerPage.vue?96d9","webpack://timit-frontend/./src/components/Passenger/components/PassengerTripList.vue?a5d6","webpack://timit-frontend/./src/components/Passenger/components/PassengerTripList.vue?68dc","webpack://timit-frontend/./src/components/Passenger/components/PassengerTripList.vue?37ad","webpack://timit-frontend/./src/components/Passenger/components/PassengerTripList.vue","webpack://timit-frontend/./src/components/Passenger/models/PassengerDestination.ts","webpack://timit-frontend/./src/components/Passenger/components/TransportationPermissionList.vue?d2da","webpack://timit-frontend/./src/components/Passenger/components/TransportationPermissionList.vue?81a4","webpack://timit-frontend/./src/components/Passenger/components/TransportationPermissionList.vue?8ff4","webpack://timit-frontend/./src/components/Passenger/components/TransportationPermissionList.vue","webpack://timit-frontend/./src/components/Passenger/components/PassengerDestinationPicker.vue?e2a9","webpack://timit-frontend/./src/components/Passenger/components/PassengerDestinationPicker.vue?48d4","webpack://timit-frontend/./src/components/Passenger/components/PassengerDestinationPicker.vue?347b","webpack://timit-frontend/./src/components/Passenger/components/PassengerDestinationPicker.vue","webpack://timit-frontend/./src/components/Passenger/components/SecondaryDestinationPicker.vue?5f88","webpack://timit-frontend/./src/components/Passenger/components/SecondaryDestinationPicker.vue?4b6a","webpack://timit-frontend/./src/components/Passenger/components/SecondaryDestinationPicker.vue?043d","webpack://timit-frontend/./src/components/Passenger/components/SecondaryDestinationPicker.vue","webpack://timit-frontend/./src/components/Schedule/Schedules.vue?acda","webpack://timit-frontend/./src/models/ScheduleItem.ts","webpack://timit-frontend/./src/models/Schedule.ts","webpack://timit-frontend/./src/components/Schedule/ScheduleEditor.vue?7a28","webpack://timit-frontend/./src/filters/dateTimeFilter.ts","webpack://timit-frontend/./src/components/TimePicker.vue?f8e3","webpack://timit-frontend/./src/components/TimePicker.vue?fd3c","webpack://timit-frontend/./src/components/TimePicker.vue?0423","webpack://timit-frontend/./src/components/TimePicker.vue","webpack://timit-frontend/./src/components/Schedule/ScheduleEditor.vue?2fdd","webpack://timit-frontend/./src/components/Schedule/ScheduleEditor.vue?9deb","webpack://timit-frontend/./src/components/Schedule/ScheduleEditor.vue","webpack://timit-frontend/./src/components/Schedule/Schedules.vue?5262","webpack://timit-frontend/./src/components/Schedule/Schedules.vue?0cc8","webpack://timit-frontend/./src/components/Schedule/Schedules.vue","webpack://timit-frontend/./src/models/PassengerGroupPassenger.ts","webpack://timit-frontend/./src/models/PassengerGroup.ts","webpack://timit-frontend/./src/pages/PassengerPage.vue?ff2e","webpack://timit-frontend/./src/pages/PassengerPage.vue?85a3","webpack://timit-frontend/./src/pages/PassengerPage.vue","webpack://timit-frontend/./src/pages/PassengerPageRoot.vue?945d","webpack://timit-frontend/./src/pages/PassengerPageRoot.vue?78ef","webpack://timit-frontend/./src/pages/PassengerPageRoot.vue?7db8","webpack://timit-frontend/./src/pages/PassengerPageRoot.vue","webpack://timit-frontend/./src/components/Importer/PassengerImportsPage.vue?a299","webpack://timit-frontend/./src/components/Importer/FileSelectionStep.vue?3d81","webpack://timit-frontend/./src/components/Importer/ExcelImporter.vue?2ed1","webpack://timit-frontend/./src/components/Importer/ExcelImporter.vue?ec08","webpack://timit-frontend/./src/components/Importer/ExcelImporter.vue?1873","webpack://timit-frontend/./src/components/Importer/ExcelImporter.vue","webpack://timit-frontend/./src/components/Importer/SheetSelect.vue?1da0","webpack://timit-frontend/./src/components/Importer/SheetSelect.vue?4c22","webpack://timit-frontend/./src/components/Importer/SheetSelect.vue?5a47","webpack://timit-frontend/./src/components/Importer/SheetSelect.vue","webpack://timit-frontend/./src/components/Importer/SheetPreview.vue?4d1b","webpack://timit-frontend/./src/components/Importer/SheetPreview.vue?c0e8","webpack://timit-frontend/./src/components/Importer/SheetPreview.vue?5939","webpack://timit-frontend/./src/components/Importer/SheetPreview.vue","webpack://timit-frontend/./src/components/Importer/models/SheetHelper.ts","webpack://timit-frontend/./src/components/Importer/FileSelectionStep.vue?fb09","webpack://timit-frontend/./src/components/Importer/FileSelectionStep.vue?396c","webpack://timit-frontend/./src/components/Importer/FileSelectionStep.vue","webpack://timit-frontend/./src/components/Importer/ImportSelectionStep.vue?3ea3","webpack://timit-frontend/./src/components/Importer/passenger/PassengerImportMapper.vue?39eb","webpack://timit-frontend/./src/components/Importer/MappingPropertyInput.vue?7246","webpack://timit-frontend/./src/components/Importer/MappingHeaderSelect.vue?460d","webpack://timit-frontend/./src/components/Importer/MappingHeaderSelect.vue?585a","webpack://timit-frontend/./src/components/Importer/MappingHeaderSelect.vue?abe4","webpack://timit-frontend/./src/components/Importer/MappingHeaderSelect.vue","webpack://timit-frontend/./src/components/Importer/MappingPropertyInput.vue?33db","webpack://timit-frontend/./src/components/Importer/MappingPropertyInput.vue?f18d","webpack://timit-frontend/./src/components/Importer/MappingPropertyInput.vue","webpack://timit-frontend/./src/components/Importer/passenger/PassengerUtilityMapper.vue?5d4e","webpack://timit-frontend/./src/components/Importer/models/passenger/PassengerMapping.ts","webpack://timit-frontend/./src/components/Importer/passenger/PassengerUtilityMapper.vue?3098","webpack://timit-frontend/./src/components/Importer/passenger/PassengerUtilityMapper.vue?eaed","webpack://timit-frontend/./src/components/Importer/passenger/PassengerUtilityMapper.vue","webpack://timit-frontend/./src/components/Importer/phoneNumber/PhoneNumbersMapper.vue?c496","webpack://timit-frontend/./src/components/Importer/models/phoneNumber/PhoneNumberMapping.ts","webpack://timit-frontend/./src/components/Importer/phoneNumber/PhoneNumberMapper.vue?5a58","webpack://timit-frontend/./src/components/Importer/phoneNumber/PhoneNumberMapper.vue?adbb","webpack://timit-frontend/./src/components/Importer/phoneNumber/PhoneNumberMapper.vue?89fc","webpack://timit-frontend/./src/components/Importer/phoneNumber/PhoneNumberMapper.vue","webpack://timit-frontend/./src/components/Importer/phoneNumber/PhoneNumbersMapper.vue?3b94","webpack://timit-frontend/./src/components/Importer/phoneNumber/PhoneNumbersMapper.vue?6629","webpack://timit-frontend/./src/components/Importer/phoneNumber/PhoneNumbersMapper.vue","webpack://timit-frontend/./src/components/Importer/passenger/PassengerImportMapper.vue?71e2","webpack://timit-frontend/./src/components/Importer/enums.ts","webpack://timit-frontend/./src/components/Importer/passenger/PassengerImportMapper.vue?711f","webpack://timit-frontend/./src/components/Importer/passenger/PassengerImportMapper.vue","webpack://timit-frontend/./src/components/Importer/passenger/PassengerImportsTable.vue?5dca","webpack://timit-frontend/./src/components/Importer/ImportsTableRow.vue?a551","webpack://timit-frontend/./src/components/Importer/ImportsTableCell.vue?9214","webpack://timit-frontend/./src/components/Importer/models/PropertyUpdateHelper.ts","webpack://timit-frontend/./src/components/Importer/ImportsTableCell.vue?7083","webpack://timit-frontend/./src/components/Importer/ImportsTableCell.vue?86a6","webpack://timit-frontend/./src/components/Importer/ImportsTableCell.vue","webpack://timit-frontend/./src/components/Importer/ImportsTableRow.vue?eed9","webpack://timit-frontend/./src/components/Importer/ImportsTableRow.vue?1cde","webpack://timit-frontend/./src/components/Importer/ImportsTableRow.vue","webpack://timit-frontend/./src/components/Importer/PropertyUpdateTable.vue?ad59","webpack://timit-frontend/./src/components/Importer/PropertyUpdateRow.vue?0adb","webpack://timit-frontend/./src/components/Importer/PropertyUpdateRow.vue?2c75","webpack://timit-frontend/./src/components/Importer/PropertyUpdateRow.vue?0c82","webpack://timit-frontend/./src/components/Importer/PropertyUpdateRow.vue","webpack://timit-frontend/./src/components/Importer/PropertyUpdateTable.vue?9a51","webpack://timit-frontend/./src/components/Importer/PropertyUpdateTable.vue?e26a","webpack://timit-frontend/./src/components/Importer/PropertyUpdateTable.vue","webpack://timit-frontend/./src/components/Importer/passenger/PassengerImportsTable.vue?8bbb","webpack://timit-frontend/./src/components/Importer/passenger/PassengerImportsTable.vue?348d","webpack://timit-frontend/./src/components/Importer/passenger/PassengerImportsTable.vue","webpack://timit-frontend/./src/components/Importer/models/passenger/PassengerEntity.ts","webpack://timit-frontend/./src/components/Importer/models/passenger/PassengerImporter.ts","webpack://timit-frontend/./src/components/Importer/passenger/PassengerSearchMapper.vue?b414","webpack://timit-frontend/./src/components/Importer/passenger/PassengerSearchMapper.vue?94fb","webpack://timit-frontend/./src/components/Importer/passenger/PassengerSearchMapper.vue?198e","webpack://timit-frontend/./src/components/Importer/passenger/PassengerSearchMapper.vue","webpack://timit-frontend/./src/components/Importer/models/passenger/PassengerSearchMapping.ts","webpack://timit-frontend/./src/components/Importer/models/phoneNumber/PhoneNumberEntity.ts","webpack://timit-frontend/./src/components/Importer/models/phoneNumber/PhoneNumberImporter.ts","webpack://timit-frontend/./src/components/Importer/models/transportationPermission/TransportationPermissionMapping.ts","webpack://timit-frontend/./src/components/Importer/transportationPermission/TransportationPermissionsMapper.vue?110d","webpack://timit-frontend/./src/components/Importer/transportationPermission/TransportationPermissionMapper.vue?b31f","webpack://timit-frontend/./src/components/Importer/transportationPermission/TransportationPermissionMapper.vue?1c80","webpack://timit-frontend/./src/components/Importer/transportationPermission/TransportationPermissionMapper.vue?5222","webpack://timit-frontend/./src/components/Importer/transportationPermission/TransportationPermissionMapper.vue","webpack://timit-frontend/./src/components/Importer/transportationPermission/TransportationPermissionsMapper.vue?d0e2","webpack://timit-frontend/./src/components/Importer/transportationPermission/TransportationPermissionsMapper.vue?273e","webpack://timit-frontend/./src/components/Importer/transportationPermission/TransportationPermissionsMapper.vue","webpack://timit-frontend/./src/components/Importer/models/transportationPermission/TransportationPermissionEntity.ts","webpack://timit-frontend/./src/components/Importer/models/transportationPermission/TransportationPermissionImporter.ts","webpack://timit-frontend/./src/components/Importer/ImportsTable.vue?c599","webpack://timit-frontend/./src/components/Importer/transportationPermission/TransportationPermissionImportsTable.vue?f28a","webpack://timit-frontend/./src/components/Importer/transportationPermission/TransportationPermissionImportsTable.vue?a970","webpack://timit-frontend/./src/components/Importer/transportationPermission/TransportationPermissionImportsTable.vue?fa8d","webpack://timit-frontend/./src/components/Importer/transportationPermission/TransportationPermissionImportsTable.vue","webpack://timit-frontend/./src/components/Importer/ImportsTable.vue?5d8a","webpack://timit-frontend/./src/components/Importer/ImportsTable.vue?5960","webpack://timit-frontend/./src/components/Importer/ImportsTable.vue","webpack://timit-frontend/./src/components/Importer/ImportSelectionStep.vue?e0a6","webpack://timit-frontend/./src/components/Importer/ImportSelectionStep.vue?c10a","webpack://timit-frontend/./src/components/Importer/ImportSelectionStep.vue","webpack://timit-frontend/./src/components/Importer/PassengerImportsPage.vue?17b3","webpack://timit-frontend/./src/components/Importer/PassengerImportsPage.vue?df9e","webpack://timit-frontend/./src/components/Importer/PassengerImportsPage.vue","webpack://timit-frontend/./src/pages/MassCancellationOfTripsView.vue?956b","webpack://timit-frontend/./src/pages/MassCancellationOfTripsView.vue?6804","webpack://timit-frontend/./src/pages/MassCancellationOfTripsView.vue?8377","webpack://timit-frontend/./src/pages/MassCancellationOfTripsView.vue","webpack://timit-frontend/./src/Routes.ts","webpack://timit-frontend/./src/components/ArrivalsDepartures/models/ArrivalDeparture.ts","webpack://timit-frontend/./src/components/Booking/models/BookingPhase.ts","webpack://timit-frontend/./src/components/Booking/models/BookingPhases.ts","webpack://timit-frontend/./src/components/Booking/models/Booking.ts","webpack://timit-frontend/./src/components/Booking/models/BookingState.ts","webpack://timit-frontend/./src/components/Booking/models/BookingStates.ts","webpack://timit-frontend/./src/components/Booking/models/IAddressViewModel.ts","webpack://timit-frontend/./src/components/Passenger/models/CostCenter.ts","webpack://timit-frontend/./src/components/Passenger/models/Group.ts","webpack://timit-frontend/./src/components/Passenger/models/Passenger.ts","webpack://timit-frontend/./src/components/Passenger/models/TransportationPermission.ts","webpack://timit-frontend/./src/components/Passenger/models/Trip.ts","webpack://timit-frontend/./src/components/Passenger/models/Utility.ts","webpack://timit-frontend/./src/components/Timetable/models/Ride.ts","webpack://timit-frontend/./src/components/Timetable/models/TimeOfDay.ts","webpack://timit-frontend/./src/components/Timetable/models/TimetablePhase.ts","webpack://timit-frontend/./src/components/Timetable/models/TimetablePhases.ts","webpack://timit-frontend/./src/components/Timetable/models/Timetable.ts","webpack://timit-frontend/./src/components/Timetable/models/TimetablePassenger.ts","webpack://timit-frontend/./src/components/Timetable/models/TimetableState.ts","webpack://timit-frontend/./src/components/Timetable/models/TimetableStates.ts","webpack://timit-frontend/./src/plugins/vuetify.js","webpack://timit-frontend/./src/components/Translate/views/TranslateView.vue?df47","webpack://timit-frontend/./src/components/Translate/components/Editable.vue?3816","webpack://timit-frontend/./src/components/Translate/components/Editable.vue?068f","webpack://timit-frontend/./src/components/Translate/components/Editable.vue?0184","webpack://timit-frontend/./src/components/Translate/components/Editable.vue","webpack://timit-frontend/./src/components/Translate/views/TranslateView.vue?753b","webpack://timit-frontend/./src/components/Translate/views/TranslateView.vue?dfd3","webpack://timit-frontend/./src/components/Translate/views/TranslateView.vue","webpack://timit-frontend/./src/models/Version.ts","webpack://timit-frontend/./src/components/OrderSearch.vue?8a87","webpack://timit-frontend/./src/components/OrderSearch.vue?4572","webpack://timit-frontend/./src/AppRoot.vue?e49d","webpack://timit-frontend/./src/components/OrderSearch.vue?9d15","webpack://timit-frontend/./src/components/OrderSearch.vue","webpack://timit-frontend/./src/AppRoot.vue","webpack://timit-frontend/./src/AppRoot.vue?1e5d","webpack://timit-frontend/./src/locales/index.ts","webpack://timit-frontend/./src/themes/default/theme_default.ts","webpack://timit-frontend/./src/themes/kovanen/theme_kovanen.ts","webpack://timit-frontend/./src/themes/espoo/theme_espoo.ts","webpack://timit-frontend/./src/themes/index.ts","webpack://timit-frontend/./src/models/Extra.ts","webpack://timit-frontend/./src/models/Requirement.ts","webpack://timit-frontend/./src/models/MovitInstanceConfig.ts","webpack://timit-frontend/./src/store/AppStore.ts","webpack://timit-frontend/./src/store/UserStore.ts","webpack://timit-frontend/./src/services/AuthService.ts","webpack://timit-frontend/./src/EventBus.ts","webpack://timit-frontend/./src/services/PermissionService.ts","webpack://timit-frontend/./src/store/AuthStore.ts","webpack://timit-frontend/./src/components/Timetable/store/TimetableStore.ts","webpack://timit-frontend/./src/components/Passenger/models/TransportationPermissionInfo.ts","webpack://timit-frontend/./src/components/Passenger/store/PassengerStore.ts","webpack://timit-frontend/./src/components/Passenger/models/Destination.ts","webpack://timit-frontend/./src/components/Passenger/store/DestinationStore.ts","webpack://timit-frontend/./src/components/Timetable/store/RideStore.ts","webpack://timit-frontend/./src/components/ArrivalsDepartures/store/ArrivalDepartureStore.ts","webpack://timit-frontend/./src/components/Booking/store/BookingStore.ts","webpack://timit-frontend/./src/models/Organization.ts","webpack://timit-frontend/./src/store/OrganizationStore.ts","webpack://timit-frontend/./src/components/Importer/store/ImporterStore.ts","webpack://timit-frontend/./src/store/index.ts","webpack://timit-frontend/./src/router.ts","webpack://timit-frontend/./src/plugins/googlemaps/index.ts","webpack://timit-frontend/./src/application-insights.ts","webpack://timit-frontend/./src/main.ts","webpack://timit-frontend/./src/models/AuthTenant.ts","webpack://timit-frontend/./src/models/DestinationRole.ts","webpack://timit-frontend/./src/models/PassengerGroupUseRole.ts","webpack://timit-frontend/./src/models/Role.ts","webpack://timit-frontend/./src/models/User.ts","webpack://timit-frontend/./src/services/BaseService.ts","webpack://timit-frontend/./src/services/restService.ts","webpack://timit-frontend/./src/util/DateHelper.ts","webpack://timit-frontend/./src/util/Helpers.ts","webpack://timit-frontend/./src/components/Booking/data/favoriteplaces/ sync ^\\.\\/.*\\.json$","webpack://timit-frontend/webpack/bootstrap","webpack://timit-frontend/webpack/runtime/chunk loaded","webpack://timit-frontend/webpack/runtime/compat get default export","webpack://timit-frontend/webpack/runtime/define property getters","webpack://timit-frontend/webpack/runtime/ensure chunk","webpack://timit-frontend/webpack/runtime/get javascript chunk filename","webpack://timit-frontend/webpack/runtime/get mini-css chunk filename","webpack://timit-frontend/webpack/runtime/global","webpack://timit-frontend/webpack/runtime/hasOwnProperty shorthand","webpack://timit-frontend/webpack/runtime/load script","webpack://timit-frontend/webpack/runtime/make namespace object","webpack://timit-frontend/webpack/runtime/node module decorator","webpack://timit-frontend/webpack/runtime/publicPath","webpack://timit-frontend/webpack/runtime/css loading","webpack://timit-frontend/webpack/runtime/jsonp chunk loading","webpack://timit-frontend/webpack/startup"],"sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-autocomplete',_vm._b({attrs:{\"value\":_vm.selectedPassenger,\"items\":_vm.passengers,\"search-input\":_vm.search,\"item-text\":\"name\",\"item-value\":\"id\",\"label\":_vm.$t('passenger.search'),\"hide-no-data\":\"\",\"hide-details\":\"\",\"return-object\":\"\",\"append-icon\":\"search\"},on:{\"input\":_vm.selectPassenger,\"update:searchInput\":function($event){_vm.search=$event},\"update:search-input\":function($event){_vm.search=$event}},scopedSlots:_vm._u([{key:\"append-icon\",fn:function(){return [_c('v-icon',[_vm._v(\"search\")])]},proxy:true},{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-list-tile-content',[_c('v-list-tile-title',{class:{'inactive': item.inactive }},[_vm._v(_vm._s(item.name))]),_c('v-list-tile-sub-title',[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.destinationName),expression:\"item.destinationName\"}]},[_vm._v(_vm._s(item.destinationName))]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.destinationName && item.movitInstanceName),expression:\"item.destinationName && item.movitInstanceName\"}]},[_vm._v(\" - \")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.movitInstanceName),expression:\"item.movitInstanceName\"}]},[_vm._v(_vm._s(item.movitInstanceName))]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.movitId),expression:\"item.movitId\"}]},[_vm._v(\" #\"+_vm._s(item.movitId))])]),_c('v-list-tile-sub-title')],1)]}}])},'v-autocomplete',_vm.$attrs,false))}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport restService from \"@/services/restService\"\r\nimport { IPassengerSearchResult } from '@/typings/timit';\r\nimport { Vue, Watch, Component, Prop } from \"vue-property-decorator\";\r\nimport { Destination } from './Passenger/models/Destination';\r\n\r\n@Component\r\nexport default class PassengerSearch extends Vue {\r\n loading: boolean = false;\r\n selectedPassenger: IPassengerSearchResult | null = null;\r\n search = \"\";\r\n searchDebounceTimeout: any = null;\r\n searchDebounceTimeoutDurationMs: number = 1500;\r\n\r\n passengers: IPassengerSearchResult[] = [];\r\n\r\n @Prop({ default: () => [] }) private excludedPassengerIds!: number[];\r\n\r\n @Prop({ default: () => {} }) private searchParams!: any;\r\n\r\n @Watch('search') async searchChanged() {\r\n // Search passengers\r\n if (this.search && this.search.length > 0) {\r\n await this.searchPassengers();\r\n }\r\n }\r\n\r\n async searchPassengers() {\r\n\r\n if (this.searchDebounceTimeout){\r\n clearTimeout(this.searchDebounceTimeout);\r\n }\r\n this.searchDebounceTimeout = setTimeout(\r\n async () => {\r\n if (this.search && this.search.length > 0) {\r\n const result: IPassengerSearchResult[] = await restService.passengers.searchPassengers(this.search, this.searchParams);\r\n const destinations: Destination[] = this.$store.state.destination.destinations;\r\n this.passengers = result\r\n .map(p => {\r\n const destination = destinations.find(d => d.id === p.destinationId);\r\n p.destinationName = destination && destination.alias ? destination.alias : '';\r\n p.movitInstanceName = destination && destination.movitInstanceName ? destination.movitInstanceName : '';\r\n return p;\r\n })\r\n .filter(p => !this.excludedPassengerIds.includes(p.id));\r\n }\r\n }, \r\n this.searchDebounceTimeoutDurationMs\r\n )\r\n }\r\n\r\n selectPassenger(passengerSearchResult: IPassengerSearchResult) {\r\n this.$emit('passengerSelect', passengerSearchResult);\r\n this.selectedPassenger = null;\r\n this.search = '';\r\n this.passengers = [];\r\n }\r\n\r\n}\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerSearch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerSearch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerSearch.vue?vue&type=template&id=00375705&scoped=true&\"\nimport script from \"./PassengerSearch.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerSearch.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PassengerSearch.vue?vue&type=style&index=0&id=00375705&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"00375705\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-autocomplete',_vm._b({attrs:{\"value\":_vm.selectedDestination,\"items\":_vm.destinations,\"item-text\":\"alias\",\"item-value\":\"id\",\"hide-no-data\":\"\",\"hide-details\":\"\",\"return-object\":\"\"},on:{\"input\":_vm.destinationFilter},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-list-tile-content',[_c('v-list-tile-title',[_vm._v(_vm._s(item.alias))]),_c('v-list-tile-sub-title',[_c('span',[_vm._v(_vm._s(item.movitInstanceName))])])],1)]}}])},'v-autocomplete',_vm.$attrs,false))}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport {Vue, Prop, Component, Watch } from 'vue-property-decorator'\r\nimport Destination from '../models/Destination';\r\n@Component({\r\n components: {\r\n\r\n }\r\n})\r\nexport default class DestinationSelector extends Vue {\r\n\r\n @Prop({ default: null }) organizationId: string | null;\r\n\r\nget routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n}\r\n\r\nget selectedDestination() {\r\n if (isNaN(this.routeDestinationId)) {\r\n return null;\r\n }\r\n return this.destinations.find(d => d.id === this.routeDestinationId);\r\n}\r\n\r\nget destinations(): Destination[] {\r\n if (this.organizationId) {\r\n return (this.$store.state.destination.destinations as Destination[]).filter(d => d.organizationId === this.organizationId);\r\n }\r\n return this.$store.state.destination.destinations;\r\n}\r\n\r\ndestinationFilter(e: Destination) {\r\n this.$emit('input', e.id)\r\n}\r\n\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DestinationSelector.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DestinationSelector.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DestinationSelector.vue?vue&type=template&id=751d8bd8&\"\nimport script from \"./DestinationSelector.vue?vue&type=script&lang=ts&\"\nexport * from \"./DestinationSelector.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 { Component, Prop, Watch } from 'vue-property-decorator';\r\nimport './GroupPicker.scss'\r\nimport { Passenger } from '../models/Passenger';\r\nimport Group from '../models/Group';\r\n\r\n@Component({\r\n template: require(\"./GroupPicker.vue.html\"),\r\n components: {\r\n \r\n }\r\n})\r\nexport class GroupPicker extends Vue {\r\n\r\n public static NEW_GROUP_CREATOR_ITEM: string = \"- New tag -\";\r\n\r\n @Prop({default: () => []}) \r\n groups: Group[];\r\n\r\n @Prop({default: () => []}) \r\n selectedGroups: Group[];\r\n\r\n @Prop({default: \"\"}) \r\n label: string;\r\n\r\n @Prop({default: false}) \r\n enableCreation: boolean;\r\n\r\n @Prop({default: true}) \r\n prependIcon: boolean;\r\n\r\n editedSelectedGroups: Group[] = [];\r\n searchInput: string = \"\";\r\n\r\n editedSelectableGroups: Group[] = [];\r\n newGroups: Group[] = [];\r\n\r\n editableSelectedGroups: Group[] = [];\r\n\r\n get newUniqueGroups(): Group[] {\r\n return Group.getUniqueGroups(this.newGroups);\r\n } \r\n\r\n @Watch('selectedGroups', {immediate: true})\r\n onSelectedGroupsChanged(val: Group[], oldVal: Group[]) { \r\n // console.log(\"onSelectedGroupsChanged\", val)\r\n // SelectedGroups prop changed, we should reset local vars\r\n this.editableSelectedGroups = [...val];\r\n this.editedSelectedGroups = [];\r\n this.searchInput = \"\";\r\n }\r\n\r\n get selectableGroups(): Group[]{\r\n const groups = this.groups.filter(g => g.name);\r\n if (this.enableCreation \r\n && this.searchInput \r\n && !groups.find(g => g.name.toLowerCase() === this.searchInput.toLowerCase())){\r\n groups.push({ name: GroupPicker.NEW_GROUP_CREATOR_ITEM, creator: true});\r\n }\r\n return Group.getUniqueGroups(groups);\r\n }\r\n\r\n @Watch('selectableGroups', {immediate: true})\r\n onSelectableGroupsChanged(val: Group[], oldVal: Group[]) { \r\n // console.log(\"onSelectableGroupsChanged\", val);\r\n this.editedSelectableGroups = Group.getUniqueGroups(val.concat(...this.newUniqueGroups));\r\n }\r\n\r\n get selectedGroupNames(): string[]{\r\n const groupNames = this.editableSelectedGroups.concat(this.editedSelectedGroups).map(g => g.name.trim());\r\n return Group.getUniqueGroupNames(groupNames).filter(gn => gn);\r\n }\r\n\r\n set selectedGroupNames(groupNames: string[]){\r\n // console.log(\"set selectedGroupNames()\", \"groupNames:\", groupNames);\r\n const updatedGroupNames: string[] = groupNames.filter(gn => gn !== GroupPicker.NEW_GROUP_CREATOR_ITEM);\r\n if (groupNames.includes(GroupPicker.NEW_GROUP_CREATOR_ITEM)){\r\n updatedGroupNames.push(this.searchInput);\r\n };\r\n this.editedSelectedGroups = Group.getUniqueGroupNames(updatedGroupNames).map(gn => new Group(gn));\r\n this.editableSelectedGroups = this.editedSelectedGroups;\r\n this.emitChangeEvent();\r\n }\r\n\r\n filter(item, queryText, itemText) {\r\n const itemName = item.name.toLowerCase()\r\n const searchText = queryText.toLowerCase()\r\n return itemName.indexOf(searchText) > -1 || \r\n (item.creator && !this.groups.find(g => g.name.toLowerCase() === this.searchInput.toLowerCase()))\r\n }\r\n\r\n emitChangeEvent(){\r\n this.$emit(\"change\", this.editedSelectedGroups);\r\n }\r\n\r\n onCreateGroup(data: any){\r\n // console.log(\"onCreateGroup()\");\r\n const newGroupName = this.searchInput;\r\n const newGroup = new Group(newGroupName);\r\n this.newGroups.push(newGroup);\r\n (this.$refs.inputRef as any).selectItem(newGroupName);\r\n this.emitChangeEvent();\r\n }\r\n\r\n onChange(){\r\n if (this.$refs.inputRef){\r\n (this.$refs.inputRef as any).blur();\r\n }\r\n }\r\n\r\n beforeDestroy(){\r\n this.editedSelectedGroups = [];\r\n }\r\n}\r\n\r\nexport default GroupPicker;\r\n","var render, staticRenderFns\nimport script from \"./GroupPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./GroupPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupPicker.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.passenger)?_c('v-dialog',{attrs:{\"width\":\"unset\"},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',{staticClass:\"passenger-dialog-card\"},[(_vm.passenger.inactive)?_c('v-alert',{attrs:{\"value\":true,\"color\":\"warning\"}},[_vm._v(\" \"+_vm._s(_vm.$t('passenger.dialog.isPassivated'))+\" \")]):_vm._e(),(_vm.passenger.isArchivedOrDeleted)?_c('v-alert',{attrs:{\"value\":true,\"color\":\"error\"}},[_vm._v(\" \"+_vm._s(_vm.$t('passenger.dialog.requestedToBeDeleted'))+\" \")]):_vm._e(),_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"grey\",\"dark\":\"\"},on:{\"click\":function($event){_vm.show = false}}},[_vm._v(_vm._s(_vm.$t('generic.close')))])],1),_c('v-container',[_c('div',{staticClass:\"body-2\"},[_vm._v(\" \"+_vm._s(_vm.passenger.name)+\" \")]),(_vm.passenger.homeAddress)?_c('div',[_vm._v(\" \"+_vm._s(_vm.passenger.homeAddress)+\" \")]):_vm._e(),(_vm.passenger.yearGrade)?_c('div',{staticClass:\"caption grey--text text--darken-1\"},[_vm._v(\" \"+_vm._s(_vm.$t('passenger.prop.yearGrade.label','Grade'))+\" \"+_vm._s(_vm.passenger.yearGrade)+\" \")]):_vm._e(),(_vm.passenger.movitId)?_c('div',{staticClass:\"caption grey--text text--darken-1\"},[_vm._v(\" \"+_vm._s(_vm.$t('passenger.prop.movitId.label','Movit ID'))+\" \"+_vm._s(_vm.passenger.movitId)+\" \")]):_vm._e(),(_vm.passenger.pickupAddress)?_c('div',[_vm._v(\" \"+_vm._s(_vm.passenger.pickupAddress)+\" \")]):_vm._e()]),(_vm.arrivalDeparture)?[_c('v-divider'),_c('v-list',{staticClass:\"passenger-dialog-list\",attrs:{\"dense\":\"\"}},[_c('v-list-tile',[_c('v-list-tile-content',[_c('v-list-tile-title',[_vm._v(\" \"+_vm._s(_vm.arrivalDeparture.transportName)+\" \")]),_c('v-list-tile-sub-title',[(_vm.arrivalDeparture.isDeparture)?[_c('span',{staticClass:\"text departure orange--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('arrival_departure.type.departs', 'Departs'))+\" \")]),_c('span',{staticClass:\"text\"},[_vm._v(\" \"+_vm._s(_vm.arrivalDeparture.atHHMM)+\" \")]),_c('v-icon',{staticStyle:{\"font-size\":\"12px\"},attrs:{\"color\":\"orange\"}},[_vm._v(\"redo\")]),(_vm.arrivalDeparture.atOther)?_c('span',[_vm._v(\" \"+_vm._s(_vm.$t('arrival_departure.other.arrives', 'Arrives'))+\" \"+_vm._s(_vm.arrivalDeparture.atOtherHHMM)+\" \")]):_vm._e()]:_vm._e(),(_vm.arrivalDeparture.isArrival)?[(_vm.arrivalDeparture.atOther)?_c('span',[_vm._v(\" \"+_vm._s(_vm.$t('arrival_departure.other.departed', 'Departed'))+\" \"+_vm._s(_vm.arrivalDeparture.atOtherHHMM)+\" \")]):_vm._e(),_c('v-icon',{staticStyle:{\"font-size\":\"12px\"},attrs:{\"color\":\"green\"}},[_vm._v(\"redo\")]),_c('span',{staticClass:\"text arrival green--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('arrival_departure.type.arrives', 'Arrives'))+\" \")]),_c('span',{staticClass:\"text\"},[_vm._v(\" \"+_vm._s(_vm.arrivalDeparture.atHHMM)+\" \")])]:_vm._e()],2)],1)],1)],1)]:_vm._e(),(_vm.passenger.utilityIds.length > 0)?[_c('v-divider'),_c('v-list',{staticClass:\"passenger-dialog-list\",attrs:{\"dense\":\"\"}},_vm._l((_vm.passenger.utilityIds),function(utilityId){return _c('v-list-tile',{key:utilityId},[_c('v-list-tile-avatar',[_c('span',{staticClass:\"utility\"},[_c('img',{attrs:{\"src\":_vm.utilityIconImageSrc(utilityId)}})])]),_c('v-list-tile-title',[_vm._v(\" \"+_vm._s(_vm.utilityTitle(utilityId))+\" \")])],1)}),1)]:_vm._e(),(_vm.arrivalDeparture)?[(!_vm.arrivalDeparture.cancelled && !_vm.arrivalDeparture.cancelling)?_c('v-form',{model:{value:(_vm.cancelreasonvalid),callback:function ($$v) {_vm.cancelreasonvalid=$$v},expression:\"cancelreasonvalid\"}},[_c('v-divider'),_c('v-container',[_c('v-subheader',{staticClass:\"pa-0\"},[_vm._v(_vm._s(_vm.$t(\"passenger.arrival_departure.cancellation.title\", \"Cancel trip\")))]),_c('v-textarea',{attrs:{\"outline\":\"\",\"name\":\"cancelreason\",\"label\":_vm.$t('passenger.arrival_departure.cancellation.reasonlabel', 'Reason for cancellation'),\"rules\":_vm.cancelreasonrules,\"disabled\":_vm.passenger.inactive},model:{value:(_vm.cancelreason),callback:function ($$v) {_vm.cancelreason=$$v},expression:\"cancelreason\"}}),_c('v-btn',{staticClass:\"ma-0\",attrs:{\"dark\":\"\",\"color\":\"red\",\"disabled\":!_vm.cancelreasonvalid || _vm.passenger.inactive,\"loading\":_vm.sendingArrivalDepartureCancel},on:{\"click\":_vm.onCancelArrivalDepartureClick}},[_vm._v(\" \"+_vm._s(_vm.$t(\"passenger.arrival_departure.cancellation.send_cancellation_request\", \"Cancel trip\"))+\" \")])],1)],1):_vm._e(),(!_vm.arrivalDeparture.cancelled && _vm.arrivalDeparture.cancelling)?_c('v-alert',{staticClass:\"mt-2 mb-0\",attrs:{\"value\":\"true\",\"type\":\"warning\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"passenger.arrival_departure.cancellation.request_sent\", \"Cancellation requested.\"))+\" \")]):_vm._e(),(_vm.arrivalDeparture.cancelled)?_c('v-alert',{staticClass:\"mt-2 mb-0\",attrs:{\"value\":\"true\",\"type\":\"warning\"}},[_c('span',{staticClass:\"cancelled-by\"},[(_vm.arrivalDeparture.cancelledByEmail)?[_vm._v(\" \"+_vm._s(_vm.$t( \"passenger.arrival_departure.cancellation.cancelled_by_name\", \"Cancelled by {name}.\", { name: _vm.arrivalDeparture.cancelledByName } ))+\" \")]:[_vm._v(\" \"+_vm._s(_vm.$t( \"passenger.arrival_departure.cancellation.cancelled_by_movit_user\", \"Cancelled from Movit.\" ))+\" \")]],2)]):_vm._e()]:_vm._e(),(_vm.timetable)?[_c('v-divider'),(_vm.userCanEditTimetables)?_c('v-list',{staticClass:\"passenger-dialog-list\",attrs:{\"dense\":\"\",\"disabled\":_vm.timetable.isLocked}},[(_vm.userCanEditTimetables)?_c('v-list-tile',{attrs:{\"disabled\":_vm.timetable.isLocked},on:{\"click\":_vm.onRemovePassengerRidesFromTimetableClick}},[_c('v-list-tile-title',[_vm._v(\" \"+_vm._s(_vm.$t(\"timetable.passenger.clear_all_rides\", \"Clear start and end times\"))+\" \")])],1):_vm._e(),(_vm.userCanEditTimetables)?_c('v-list-tile',{attrs:{\"disabled\":_vm.timetable.isLocked},on:{\"click\":_vm.onRemovePassengerFromTimetableClick}},[_c('v-list-tile-title',[_vm._v(\" \"+_vm._s(_vm.$t(\"timetable.passenger.remove_from_timetable\", \"Remove from timetable\"))+\" \")])],1):_vm._e()],1):_vm._e()]:_vm._e(),_c('v-divider'),(!_vm.arrivalDeparture && !_vm.timetable)?_c('v-form',[_c('v-container',[_c('v-btn',{staticClass:\"ma-0\",attrs:{\"color\":\"primary\"},on:{\"click\":_vm.onShowProfileClick}},[(_vm.userCanEditPassengers && !_vm.passenger.inactive)?[_vm._v(_vm._s(_vm.$t('passenger.editor.title.openProfile', 'OPEN PROFILE')))]:[_vm._v(\"Henkilön tiedot\")]],2)],1)],1):_vm._e()],2)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport vuetifyToast from 'vuetify-toast';\r\nimport { Passenger } from '@/components/Passenger/models/Passenger';\r\nimport { Timetable } from '@/components/Timetable/models/Timetable';\r\nimport { Utility } from '@/components/Passenger/models/Utility';\r\nimport { Ride } from '@/components/Timetable/models/Ride';\r\nimport { ArrivalDeparture } from '@/components/ArrivalsDepartures/models/ArrivalDeparture';\r\nimport { RolePermission } from '@/models/Role';\r\nimport Routes from '../../../Routes';\r\n\r\n@Component({\r\n components: {\r\n \r\n },\r\n })\r\nexport class PassengerDialog extends Vue {\r\n static EVENT_PASSENGER_DIALOG_SHOW = \"EVENT_PASSENGER_DIALOG_SHOW\";\r\n passenger: Passenger = null;\r\n show: boolean = false;\r\n timetable: Timetable = null;\r\n passengerTimetableRides: Ride[] = [];\r\n arrivalDeparture: ArrivalDeparture = null;\r\n sendingArrivalDepartureCancel: boolean = false;\r\n\r\n cancelreason: string = '';\r\n cancelreasonvalid: boolean = false;\r\n cancelreasonrules: any[] = [val => this.cancelReasonRequired(val)];\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n get me() {\r\n return this.$store.state.user.me;\r\n }\r\n\r\n get userCanEditTimetables(): boolean {\r\n return this.me \r\n ? this.me.hasPermissions(this.routeDestinationId, [RolePermission.UpdateTimetables])\r\n : false;\r\n }\r\n\r\n get userCanEditPassengers(): boolean {\r\n return this.me \r\n ? this.me.hasPermissions(this.routeDestinationId, [RolePermission.UpdatePassengers])\r\n : false;\r\n }\r\n\r\n utilityTitle(utilityId: number): string{\r\n const utility: Utility = Passenger.utilities.find((u: any) => u.id === utilityId);\r\n return utility \r\n ? this.$i18n.translate(\"utility.title.\" + utility.title, utility.title) \r\n : \"Unknown utility\";\r\n }\r\n\r\n utilityIconImageSrc(utilityId: number): string{\r\n const imageBasePath = '/frontend/utilities/';\r\n if (utilityId === 2){\r\n return imageBasePath + 'man-waving-arm-32' + '.png';\r\n } else {\r\n return imageBasePath + 'utility' + utilityId + '.png';\r\n }\r\n }\r\n\r\n created(){\r\n this.$root.$on(PassengerDialog.EVENT_PASSENGER_DIALOG_SHOW, this.onShowPassengerDialog)\r\n }\r\n\r\n cancelReasonRequired(val: string) {\r\n return !!val || Vue.i18n.translate('validation.rules.required', 'Required');\r\n }\r\n\r\n onShowPassengerDialog(passenger: Passenger, data: any){\r\n this.passenger = passenger;\r\n if (data){\r\n this.timetable = data.timetable ? data.timetable : null;\r\n this.passengerTimetableRides = data.rides ? data.rides : [];\r\n this.arrivalDeparture = data.arrivalDeparture ? data.arrivalDeparture : null;\r\n }\r\n this.show = true;\r\n }\r\n\r\n async onCancelArrivalDepartureClick(){\r\n this.sendingArrivalDepartureCancel = true;\r\n this.arrivalDeparture.cancellationReason = this.cancelreason;\r\n try {\r\n await this.$store.dispatch(\r\n 'arrivalDeparture/cancel', \r\n { \r\n data: ArrivalDeparture.toApi(this.arrivalDeparture) \r\n }\r\n );\r\n this.cancelreason = '';\r\n } catch (err){\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n \"arrivalDeparture.cancel.error\", \r\n \"There was an error in sending the cancellation request. Please try again later.\"\r\n ),\r\n {\r\n timeout: 25000,\r\n dismissible: true\r\n }\r\n )\r\n }\r\n this.sendingArrivalDepartureCancel = false;\r\n }\r\n\r\n async onRemovePassengerRidesFromTimetableClick(){\r\n await this.$store.dispatch(\r\n 'ride/deleteRides', \r\n { data: this.passengerTimetableRides.map((r: Ride) => r.id) }\r\n );\r\n this.show = false;\r\n }\r\n\r\n async onRemovePassengerFromTimetableClick(){\r\n this.timetable.removePassengerIds([this.passenger.id]);\r\n await this.$store.dispatch(\r\n 'timetable/updateTimetable', \r\n { params: { id: this.timetable.id}, data: Timetable.toApi(this.timetable) }\r\n );\r\n await this.$store.dispatch(\r\n 'ride/deleteRides', \r\n { data: this.passengerTimetableRides.map((r: Ride) => r.id) }\r\n );\r\n this.show = false;\r\n }\r\n\r\n onShowProfileClick(){\r\n if (this.passenger.passengerDestinations.length > 0) {\r\n this.$router.push({\r\n name: Routes.editPeopleRoute.name, \r\n params: { \r\n passengerId: this.passenger.id.toString(),\r\n destinationId: this.passenger.passengerDestinations[0].destinationId + '', \r\n } \r\n });\r\n } else {\r\n this.$router.push({ \r\n name: Routes.passengerRoute.name, \r\n params: { \r\n passengerId: this.passenger.id.toString(),\r\n destinationId: this.passenger.passengerDestinations[0].destinationId + '', \r\n }\r\n });\r\n }\r\n this.show = false;\r\n }\r\n\r\n beforeDestroy(){ \r\n this.$root.$off(PassengerDialog.EVENT_PASSENGER_DIALOG_SHOW, this.onShowPassengerDialog)\r\n }\r\n}\r\n\r\nexport default PassengerDialog;\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerDialog.vue?vue&type=template&id=54d287d2&\"\nimport script from \"./PassengerDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PassengerDialog.vue?vue&type=style&index=0&id=54d287d2&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 { Component, Prop, Watch } from 'vue-property-decorator';\r\nimport vuetifyToast from 'vuetify-toast';\r\nimport { Passenger } from '../models/Passenger';\r\nimport Destination from '../models/Destination';\r\nimport './PassengerEditor.scss'\r\nimport Group from '../models/Group';\r\nimport GroupPicker from \"./GroupPicker.vue\"\r\nimport { Utility } from '@/components/Passenger/models/Utility';\r\n\r\n@Component({\r\n template: require(\"./PassengerEditor.vue.html\"),\r\n components: {\r\n GroupPicker\r\n }\r\n})\r\nexport class PassengerEditor extends Vue {\r\n\r\n static EVENT_PASSENGER_EDITOR_OPEN = \"EVENT_PASSENGER_EDITOR_OPEN\";\r\n public static NEW_GROUP_CREATOR_ITEM: string = \"- New tag -\";\r\n\r\n show: boolean = false;\r\n editedPassenger: Passenger = new Passenger(null);\r\n valid: boolean = true;\r\n saving: boolean = false;\r\n rules: any = {\r\n required: value => !!value \r\n || this.$i18n.translate(\"validation.rules.required\", \"Required\")\r\n }\r\n \r\n get utilities() {\r\n const utilityOptions = Passenger.utilities.map(u => new Utility(u.id, u.title));\r\n utilityOptions.forEach(u => u.selected = this.editedPassenger.utilityIds.includes(u.id));\r\n return utilityOptions; \r\n }\r\n\r\n utilityIconImageSrc(utilityId: number): string{\r\n const imageBasePath = '/frontend/utilities/';\r\n if (utilityId === 2){\r\n return imageBasePath + 'man-waving-arm-32' + '.png';\r\n } else {\r\n return imageBasePath + 'utility' + utilityId + '.png';\r\n }\r\n }\r\n\r\n utilityTitle(utilityId: number): string{\r\n const utility: Utility = Passenger.utilities.find((u: any) => u.id === utilityId);\r\n return utility \r\n ? this.$i18n.translate(\"utility.title.\" + utility.title, utility.title) \r\n : \"Unknown utility\";\r\n }\r\n\r\n created(){\r\n this.$root.$on(PassengerEditor.EVENT_PASSENGER_EDITOR_OPEN, this.onShowPassengerEditor)\r\n }\r\n\r\n onUtilityClick(utilityId: number) {\r\n this.editedPassenger.toggleUtility(utilityId);\r\n }\r\n \r\n async onSaveClick() {\r\n this.saving = true;\r\n // TODO: Get rid of casting to any\r\n if ((this.$refs.form as any).validate()) {\r\n \r\n try {\r\n if (this.editedPassenger.id > 0) {\r\n // console.log(\"save, update existing: \", this.editedPassenger);\r\n await this.$store.dispatch('passenger/updatePassenger', \r\n { params: { id: this.editedPassenger.id}, data: this.editedPassenger });\r\n } else {\r\n (this.editedPassenger as any).destinationIds = this.editedPassenger\r\n .passengerDestinations.map(pd => pd.destinationId);\r\n // console.log(\"save, create new: \", this.editedPassenger);\r\n await this.$store.dispatch('passenger/createPassenger', { data: this.editedPassenger });\r\n }\r\n this.editedPassenger = new Passenger(null);\r\n this.show = false;\r\n } catch (err) {\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n 'passenger.save.error.generic', \r\n 'There was an error saving the passenger. Please try again later.'\r\n )\r\n )\r\n console.error(\"Error when saving passenger:\", err);\r\n }\r\n\r\n }\r\n this.saving = false;\r\n }\r\n\r\n onShowPassengerEditor(passenger: Passenger, data: any){\r\n this.editedPassenger = Passenger.CopyFrom(passenger);\r\n this.show = true;\r\n }\r\n\r\n onCloseClick() {\r\n // this.$emit(\"onClose\", this.editedPassenger);\r\n this.editedPassenger = new Passenger(null);\r\n this.show = false;\r\n }\r\n\r\n beforeDestroy(){ \r\n this.$root.$off(PassengerEditor.EVENT_PASSENGER_EDITOR_OPEN, this.onShowPassengerEditor)\r\n }\r\n}\r\n\r\nexport default PassengerEditor;\r\n","var render, staticRenderFns\nimport script from \"./PassengerEditor.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerEditor.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerEditor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerEditor.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"passenger-list-card\"},[_c('v-dialog',{attrs:{\"max-width\":\"500px\"},model:{value:(_vm.showGroupAssignDialog),callback:function ($$v) {_vm.showGroupAssignDialog=$$v},expression:\"showGroupAssignDialog\"}},[_c('v-card',[(_vm.singlePassengerToAddGroupsFor)?_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.singlePassengerToAddGroupsFor.name)+\" \")]):_vm._e(),_c('v-card-text',[(_vm.singlePassengerToAddGroupsFor)?_c('group-picker',{attrs:{\"groups\":_vm.assignableGroups,\"selectedGroups\":_vm.singlePassengerToAddGroupsFor.groupObjs,\"enableCreation\":true,\"label\":_vm.$t('generic.tags', 'Tags')},on:{\"change\":_vm.onGroupAssignSingleGroupPickerChange}}):_vm._e()],1),_c('v-card-actions',[_c('v-btn',{on:{\"click\":_vm.onGroupAssignSingleCancelClick}},[_vm._v(_vm._s(_vm.$t(\"generic.cancel\", \"Cancel\")))]),_c('v-spacer'),_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"accent\",\"loading\":_vm.savingPassengerGroups},on:{\"click\":_vm.onGroupAssignSingleOkClick}},[_vm._v(_vm._s(_vm.$t(\"generic.ok\", \"Ok\")))])],1)],1)],1),(_vm.title)?_c('v-card-title',{staticStyle:{\"align-items\":\"unset\",\"flex-direction\":\"column\"}},[_c('v-layout',{attrs:{\"row\":\"\"}},[(_vm.title)?_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.title))]):_vm._e(),_c('v-spacer'),(!_vm.pickMode && _vm.userCanCreatePassengers && !_vm.hideCreateNewButton)?_c('v-btn',{staticClass:\"mb-2\",attrs:{\"dark\":\"\",\"color\":\"accent\"},on:{\"click\":_vm.onCreatePassengerClick}},[_vm._v(\" \"+_vm._s(_vm.$t(\"passenger.list.create_new\", \"Create new\"))+\" \")]):_vm._e()],1),(!_vm.hideShowOnlyActiveToggle)?_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-switch',{attrs:{\"label\":_vm.$t('passengers.showOnlyActive', 'Show only active passengers')},model:{value:(_vm.showOnlyActivePassengers),callback:function ($$v) {_vm.showOnlyActivePassengers=$$v},expression:\"showOnlyActivePassengers\"}})],1):_vm._e(),_c('div',{staticStyle:{\"width\":\"100%\"}},[_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\",\"justify-end\":\"\",\"align-content-end\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm7\":\"\"}}),_c('v-spacer'),_c('v-flex',{attrs:{\"xs12\":\"\",\"sm4\":\"\"}})],1)],1),(_vm.userCanEditGroups)?_c('div',{staticStyle:{\"width\":\"100%\"}},[(!_vm.pickMode)?_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\",\"mt-1\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm7\":\"\"}},[(_vm.groupNamesToAssign.length > 0)?_c('div',[_c('i',[_vm._v(_vm._s(_vm.$t(\"passenger.list.assign-tags.guide\", \"Next, click or tap the Tag cells in the table to assign the selected tags.\")))])]):_vm._e()])],1):_vm._e()],1):_vm._e()],1):_vm._e(),_c('v-card-text',[_c('v-data-table',{ref:\"datatable\",staticClass:\"passenger-datatable\",attrs:{\"headers\":_vm.headers,\"items\":_vm.filteredPassengers,\"select-all\":\"\",\"custom-sort\":_vm.onDatatableSort,\"pagination\":_vm.pagination,\"total-items\":_vm.totalPassengers,\"no-data-text\":_vm.isLoading\n ? _vm.$t('generic.loading', 'Loading...')\n : _vm.$t('passengers.no_passengers_for_destination', 'No people were found for {destinationAlias}.', { destinationAlias: _vm.selectedDestination.alias }),\"rows-per-page-items\":[20, 50, 100, { text: _vm.$t('generic.all', 'All'), value: -1 }],\"rows-per-page-text\":_vm.$t('generic.rows_per_page_with_colon', 'Rows per page:'),\"loading\":_vm.isLoading},on:{\"update:pagination\":function($event){_vm.pagination=$event}},scopedSlots:_vm._u([{key:\"headers\",fn:function(props){return [_c('tr',[(_vm.pickMode)?_c('th'):_vm._e(),_vm._l((props.headers.filter(function (h) { return h.value != 'homeAddress'; })),function(header){return _c('th',{key:header.text,class:['column'],attrs:{\"colspan\":header.value === 'name' ? 2 : 1}},[(header.value === 'name')?[_c('v-text-field',{attrs:{\"label\":_vm.$t('generic.filter.by_name.label', 'Filter by name'),\"small\":\"\",\"dense\":\"\",\"clearable\":\"\",\"single-line\":\"\",\"hide-details\":\"\",\"loading\":_vm.searchLoading},on:{\"input\":_vm.onSearchInput}})]:_vm._e(),(header.value === 'tags')?[_c('group-picker',{attrs:{\"groups\":_vm.destinationGroups,\"enableCreation\":false,\"prependIcon\":false,\"label\":_vm.$t('generic.filter.by_tag.label', 'Filter by tag')},on:{\"change\":_vm.onGroupFilterGroupPickerChange}})]:_vm._e()],2)})],2),_c('tr',[(_vm.pickMode)?_c('th',[(_vm.ready)?_c('v-checkbox',{attrs:{\"primary\":\"\",\"hide-details\":\"\"},model:{value:(_vm.allFilteredItemsSelected),callback:function ($$v) {_vm.allFilteredItemsSelected=$$v},expression:\"allFilteredItemsSelected\"}}):_vm._e()],1):_vm._e(),_vm._l((props.headers),function(header){return _c('th',{key:header.text,class:[\n 'column',\n 'sortable',\n header.align ? 'text-xs-' + header.align : '',\n _vm.pagination.descending ? 'desc' : 'asc',\n header.value === _vm.pagination.sortBy ? 'active' : ''\n ],on:{\"click\":function($event){return _vm.onChangeSort(header.value)}}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"arrow_upward\")]),_vm._v(\" \"+_vm._s(_vm.$t(header.i18n, header.text))+\" \")],1)})],2)]}},{key:\"items\",fn:function(props){return [_c('PassengerListRow',{attrs:{\"passenger\":props.item,\"allTrips\":_vm.allTrips,\"destinationGroups\":_vm.destinationGroups,\"showTripsColumn\":_vm.showTripsColumn,\"userCanEditGroups\":_vm.userCanEditGroups,\"userCanEditPassengers\":_vm.userCanEditPassengers,\"pickMode\":_vm.pickMode},on:{\"toggleItemPicked\":_vm.toggleItemPicked,\"editPassengerClick\":_vm.onEditPassengerClick,\"addGroupClick\":_vm.onAddGroupClick}})]}}])},[_c('v-alert',{attrs:{\"slot\":\"no-results\",\"value\":true,\"color\":\"error\",\"icon\":\"warning\"},slot:\"no-results\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"passenger.list.search.no_results\", \"No people found.\"))+\" \")])],1)],1),(_vm.ready)?_c('v-card-actions',[(_vm.pickMode && !_vm.hideCloseButton)?_c('v-btn',{staticClass:\"left\",attrs:{\"dark\":\"\",\"color\":\"grey\"},on:{\"click\":_vm.onCloseClick}},[_vm._v(\" \"+_vm._s(_vm.$t(\"generic.close\", \"Close\"))+\" \")]):_vm._e(),_c('v-spacer'),(!_vm.pickMode && _vm.userCanCreatePassengers && !_vm.hideCreateNewButton)?_c('v-btn',{staticClass:\"mb-2\",attrs:{\"dark\":\"\",\"color\":\"accent\"},on:{\"click\":_vm.onCreatePassengerClick}},[_vm._v(\" \"+_vm._s(_vm.$t(\"passenger.list.create_new\", \"Create new\"))+\" \")]):_vm._e(),(_vm.pickMode && !_vm.hideSubmitButton)?_c('v-btn',{staticClass:\"right\",attrs:{\"dark\":\"\",\"color\":\"accent\",\"disabled\":_vm.pickedPassengersCount === 0},on:{\"click\":_vm.onSubmitClick}},[_vm._v(\" \"+_vm._s(_vm.$t(\"passenger.list.pick\", \"Add selected ({count})\", { count: _vm.pickedPassengersCount }))+\" \")]):_vm._e()],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{class:{ pickable: _vm.pickMode, inactive: _vm.passenger.inactive },attrs:{\"active\":_vm.passenger.picked}},[(_vm.pickMode)?_c('td',{staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleItemPicked(_vm.passenger, _vm.pickMode && !_vm.passenger.picked)}}},[_c('v-checkbox',{attrs:{\"primary\":\"\",\"hide-details\":\"\",\"disabled\":_vm.passenger.inactive},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleItemPicked(_vm.passenger, !_vm.passenger.picked)}},model:{value:(_vm.passenger.picked),callback:function ($$v) {_vm.$set(_vm.passenger, \"picked\", $$v)},expression:\"passenger.picked\"}})],1):_vm._e(),_c('td',{style:({ cursor: _vm.pickMode ? 'pointer' : 'default' }),on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleItemPicked(_vm.passenger, _vm.pickMode && !_vm.passenger.picked)}}},[_c('v-chip',{staticClass:\"passenger-chip\",style:({ 'background-color': _vm.helpers.getRandomColorWithSeed(_vm.passenger.id, 'light') }),attrs:{\"small\":\"\",\"text-color\":\"black\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onPassengerClick($event, _vm.passenger)}}},[_vm._v(\" \"+_vm._s(_vm.passenger.name)+\" \")])],1),_c('td',{staticClass:\"text-xs-left\"},[_vm._v(_vm._s(_vm.passenger.homeAddress))]),_c('td',{staticClass:\"text-xs-left\"},[_vm._v(_vm._s(_vm.passenger.phone))]),_c('td',{class:{ 'text-xs-left': true, groups: true, addable: _vm.passengerHasAddableGroups },style:({ cursor: _vm.pickMode ? 'pointer' : 'default' }),on:{\"click\":function($event){$event.stopPropagation();return _vm.onGroupCellClick(_vm.passenger)}}},[(!_vm.pickMode && _vm.groupNamesToAssign.length === 0 && !_vm.passenger.inactive)?_c('v-chip',{staticClass:\"add-chip\",attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm.onAddGroupClick(_vm.passenger)}}},[_c('span',{staticStyle:{\"background-color\":\"#81c784\",\"color\":\"#fbfbfb\",\"width\":\"18px\",\"height\":\"18px\",\"border-radius\":\"20px\",\"font-size\":\"18px\",\"display\":\"block\",\"text-align\":\"center\",\"line-height\":\"18px\",\"margin-left\":\"-8px\",\"margin-right\":\"-8px\"}},[_vm._v(\"+\")])]):_vm._e(),_vm._l((_vm.passengerGroupNames),function(group){return _c('v-chip',{directives:[{name:\"show\",rawName:\"v-show\",value:(group),expression:\"group\"}],key:group,class:{ 'chip--select-single': true, pickable: _vm.pickMode },attrs:{\"small\":\"\",\"close\":!_vm.pickMode && _vm.userCanEditGroups},on:{\"input\":function($event){return _vm.onGroupChipInput(_vm.passenger, group)},\"click\":function($event){return _vm.onGroupChipClick(_vm.passenger, group)}}},[_vm._v(\" \"+_vm._s(group)+\" \")])})],2),(_vm.showTripsColumn)?_c('td',{staticStyle:{\"text-align\":\"right\"}},[_vm._v(\" \"+_vm._s(_vm.activeTripsForPassenger)+\" \")]):_vm._e(),(!_vm.pickMode && _vm.userCanSeeActionsColumn)?_c('td',{staticClass:\"text-xs-right px-0\"},[_vm._v(\"\\\", passenger)\\\" > \"),_c('v-icon',{attrs:{\"color\":\"teal\"}},[_vm._v(\"edit\")])],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Watch, Vue, Prop } from \"vue-property-decorator\";\r\nimport Component from \"vue-class-component\";\r\nimport Passenger, { PassengerState } from \"../models/Passenger\";\r\nimport vuetifyToast from \"vuetify-toast\";\r\nimport Helpers from \"../../../util/Helpers\";\r\nimport \"./PassengerList.scss\";\r\nimport { Group } from \"@/components/Passenger/models/Group\";\r\nimport GroupPicker from \"./GroupPicker.vue\";\r\nimport { PassengerDialog } from \"@/components/Passenger/components/PassengerDialog.vue\";\r\nimport Routes from \"../../../Routes\";\r\nimport Trip from \"../models/Trip\";\r\n\r\n@Component({\r\n components: {\r\n GroupPicker\r\n }\r\n})\r\nexport class PassengerListRow extends Vue {\r\n\r\n @Prop({ required: true })\r\n passenger!: Passenger;\r\n\r\n @Prop({ default: false })\r\n pickMode: boolean;\r\n\r\n @Prop({ default: () => []})\r\n allTrips: Trip[];\r\n\r\n @Prop({ default: () => []})\r\n destinationGroups: Group[];\r\n\r\n @Prop({ default: false})\r\n showTripsColumn: boolean;\r\n\r\n @Prop({ default: false})\r\n userCanEditGroups: boolean;\r\n \r\n @Prop({ default: false})\r\n userCanEditPassengers: boolean;\r\n \r\n @Prop({ default: false})\r\n userCanDeletePassengers: boolean;\r\n\r\n\r\n groupNamesToFilterIn: string[] = [];\r\n groupNamesToAssign: string[] = [];\r\n groupNamesToAssignForSinglePassenger: string[] = [];\r\n savingPassengerGroups: boolean = false;\r\n \r\n constructor() {\r\n super();\r\n }\r\n\r\n get passengerGroupNames(): string[] {\r\n if (!this.passenger.groups){\r\n return [\"\"];\r\n }\r\n return this.passenger.groups.split(\",\").map(g => g.trim());\r\n }\r\n\r\n get helpers() {\r\n return Helpers;\r\n }\r\n\r\n get activeTripsForPassenger(): number {\r\n return this.allTrips\r\n .filter((t) => t.passengerId === this.passenger.id)\r\n .filter((t) => !t.cancelledAt).length;\r\n }\r\n\r\n get userCanSeeActionsColumn(): boolean {\r\n return this.userCanEditPassengers && this.userCanDeletePassengers;\r\n }\r\n\r\n get passengerHasAddableGroups(): boolean {\r\n if (this.groupNamesToAssign.length === 0) {\r\n return false;\r\n }\r\n const passengerGroupNames = this.passenger.groups.split(\",\").map(g => g.trim());\r\n return !this.groupNamesToAssign.every(gn =>\r\n passengerGroupNames.includes(gn)\r\n );\r\n }\r\n\r\n async savePassengerGroups(passenger) {\r\n try {\r\n await this.$store.dispatch(\"passenger/updatePassengerGroups\", {\r\n params: { id: passenger.id },\r\n data: passenger\r\n });\r\n } catch (ex) {\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n \"passenger.save.error.generic\",\r\n \"There was an error saving the passenger. Please try again later.\"\r\n )\r\n );\r\n }\r\n }\r\n\r\n onAddGroupClick(passenger: Passenger) {\r\n this.$emit(\"addGroupClick\", passenger);\r\n }\r\n\r\n async onGroupCellClick(passenger: Passenger) {\r\n if (passenger.inactive) {\r\n return;\r\n }\r\n if (this.pickMode) {\r\n this.toggleItemPicked(passenger, !passenger.picked);\r\n } else {\r\n const modified = passenger.addToGroupNames(this.groupNamesToAssign);\r\n if (!modified) {\r\n return;\r\n }\r\n await this.savePassengerGroups(passenger);\r\n }\r\n }\r\n\r\n async onGroupChipClick(passenger: Passenger, groupName: string) {\r\n return;\r\n }\r\n\r\n async onGroupChipInput(passenger: Passenger, groupName: string) {\r\n if (this.pickMode) {\r\n return;\r\n }\r\n const modified = passenger.removeFromGroupNames([groupName]);\r\n if (!modified) {\r\n return;\r\n }\r\n await this.savePassengerGroups(passenger);\r\n }\r\n\r\n toggleItemPicked(passenger: Passenger, value) {\r\n this.$emit(\"toggleItemPicked\", { passenger, value });\r\n }\r\n\r\n onPassengerClick(event: Event, passenger: Passenger) {\r\n this.$root.$emit(PassengerDialog.EVENT_PASSENGER_DIALOG_SHOW, passenger);\r\n }\r\n\r\n async created(){\r\n \r\n }\r\n\r\n beforeDestroy() {\r\n \r\n }\r\n}\r\n\r\nexport default PassengerListRow;\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerListRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerListRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerListRow.vue?vue&type=template&id=44230459&\"\nimport script from \"./PassengerListRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerListRow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Watch, Vue, Prop } from \"vue-property-decorator\";\r\nimport Component from \"vue-class-component\";\r\nimport Passenger, { PassengerState } from \"../models/Passenger\";\r\nimport Destination from \"../models/Destination\";\r\nimport vuetifyToast from \"vuetify-toast\";\r\nimport Helpers from \"../../../util/Helpers\";\r\nimport \"./PassengerList.scss\";\r\nimport { Group } from \"@/components/Passenger/models/Group\";\r\nimport GroupPicker from \"./GroupPicker.vue\";\r\nimport { PassengerEditor } from \"@/components/Passenger/components/PassengerEditor.vue\";\r\nimport { PassengerDialog } from \"@/components/Passenger/components/PassengerDialog.vue\";\r\nimport { RolePermission } from \"@/models/Role\";\r\nimport PassengerDestination from \"@/components/Passenger/models/PassengerDestination\";\r\nimport Routes from \"../../../Routes\";\r\nimport User from \"@/models/User\";\r\nimport { warn } from \"console\";\r\nimport Trip from \"../models/Trip\";\r\nimport PassengerListRow from \"./PassengerListRow.vue\";\r\n\r\n@Component({\r\n components: {\r\n GroupPicker,\r\n PassengerListRow\r\n }\r\n})\r\nexport class PassengerList extends Vue {\r\n public static NEW_GROUP_CREATOR_ITEM: string = \"- New group -\";\r\n\r\n @Prop({ default: null })\r\n destination: Destination;\r\n\r\n @Prop({ default: f => [] })\r\n hiddenPassengers: Passenger[];\r\n @Watch(\"hiddenPassengers\")\r\n async hiddenPassengersChanged(){\r\n await this.getDataFromApi();\r\n }\r\n\r\n @Prop({ default: false })\r\n pickMode: boolean;\r\n\r\n @Prop({ default: null })\r\n title: string;\r\n\r\n @Prop({ default: false })\r\n hideShowOnlyActiveToggle: boolean;\r\n\r\n @Prop({ default: false })\r\n hideCloseButton: boolean;\r\n\r\n @Prop({ default: false })\r\n hideSubmitButton: boolean;\r\n\r\n @Prop({ default: false })\r\n hideCreateNewButton: boolean;\r\n\r\n @Prop({ default: () => []})\r\n extraHeaders: any[];\r\n\r\n @Prop({ default: () => []})\r\n allTrips: Trip[];\r\n\r\n @Prop({ default: false })\r\n onlyShowPassengersWithTrips: boolean;\r\n\r\n pickedPassengersCount: number = 0;\r\n\r\n pagination: any = {\r\n sortBy: \"name\",\r\n descending: false,\r\n rowsPerPage: 20\r\n };\r\n @Watch(\"pagination\", {deep: true})\r\n async paginationChanged(){\r\n await this.getDataFromApi();\r\n }\r\n\r\n async getDataFromApi(){\r\n await this.$store.dispatch(\r\n 'passenger/getPaginatedPassengers',\r\n { \r\n params: \r\n { \r\n destinationIds: [this.routeDestinationId], \r\n index: (this.pagination.page -1) * this.pagination.rowsPerPage, \r\n count: this.pagination.rowsPerPage,\r\n sortBy: this.pagination.sortBy,\r\n descending: this.pagination.descending,\r\n onlyActive: this.showOnlyActivePassengers,\r\n nameOrYearGradeSearch: this.search,\r\n excludeIds: this.hiddenPassengers.map(p => p.id)\r\n }\r\n }\r\n );\r\n }\r\n\r\n searchLoading: boolean = false;\r\n search: string = \"\";\r\n @Watch(\"search\")\r\n async searchChanged(){\r\n this.searchLoading = true;\r\n await this.getDataFromApi();\r\n this.searchLoading = false;\r\n }\r\n\r\n get defaultHeaders(): any[] {\r\n return [\r\n {\r\n i18n: \"passenger.prop.name.label\",\r\n text: \"Name\",\r\n value: \"name\",\r\n sortable: true,\r\n align: \"left\"\r\n },\r\n {\r\n i18n: \"passenger.prop.homeAddress.label\",\r\n text: \"Home address\",\r\n value: \"homeAddress\",\r\n sortable: true,\r\n align: \"left\"\r\n },\r\n {\r\n i18n: \"passenger.prop.phoneNumbers.label\",\r\n text: \"Phone numbers\",\r\n value: \"phone\",\r\n sortable: true,\r\n align: \"left\"\r\n },\r\n {\r\n i18n: \"passenger.prop.tags.label\",\r\n text: \"Tags\",\r\n value: \"tags\",\r\n sortable: true,\r\n align: \"left\"\r\n },\r\n {\r\n i18n: \"passenger.prop.phoneNumbers.label\",\r\n text: \"Phone numbers\",\r\n value: \"phone\",\r\n sortable: true,\r\n align: \"left\",\r\n showInPickMode: false,\r\n hideIfEmpty: true,\r\n hide: true\r\n },\r\n {\r\n i18n: \"passenger.prop.homeAddress.label\",\r\n text: \"Home address\",\r\n value: \"homeAddress\",\r\n sortable: true,\r\n align: \"left\",\r\n hide: true\r\n },\r\n {\r\n i18n: \"passenger.prop.pickupAddress.label\",\r\n text: \"Pickup address\",\r\n value: \"pickupAddress\",\r\n sortable: true,\r\n align: \"left\",\r\n hideIfEmpty: true,\r\n hide: true\r\n }\r\n ]\r\n }\r\n\r\n\r\n get allHeaders(): any[] {\r\n let headers = this.defaultHeaders.concat(this.extraHeaders);\r\n headers.push(\r\n {\r\n i18n: \"passenger.list.header.actions\",\r\n text: \"Actions\",\r\n sortable: false,\r\n showInPickMode: false,\r\n hide: !this.userCanSeeActionsColumn\r\n }\r\n );\r\n return headers;\r\n }\r\n\r\n get showTripsColumn(){\r\n return this.headers.some(h => h.value === \"activeTripsCount\");\r\n }\r\n\r\n @Prop({ default: false })\r\n show: boolean;\r\n\r\n @Watch(\"show\")\r\n onShowChange(val, newVal) {\r\n this.updatePickedPassengersCount();\r\n }\r\n\r\n groupNamesToFilterIn: string[] = [];\r\n groupNamesToAssign: string[] = [];\r\n groupNamesToAssignForSinglePassenger: string[] = [];\r\n singlePassengerToAddGroupsFor: Passenger = null;\r\n savingPassengerGroups: boolean = false;\r\n showGroupAssignDialog: boolean = false;\r\n \r\n ready: boolean = false;\r\n\r\n @Watch(\"ready\")\r\n onReadyChange(val, newVal) {\r\n this.updatePickedPassengersCount();\r\n }\r\n\r\n searchDebounceTimeout: any = null;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n passengerGroupNames(passenger: Passenger): string[] {\r\n const groupsString = passenger.groups ? passenger.groups : \"\";\r\n return groupsString.split(\",\").map(g => g.trim());\r\n }\r\n\r\n get helpers() {\r\n return Helpers;\r\n }\r\n\r\n get datatable() {\r\n // console.log(\"PassengerList\", \"get datatable()\");\r\n return this.$refs.datatable as any;\r\n }\r\n\r\n get headers() {\r\n const headers = this.allHeaders.filter(\r\n h =>\r\n !h.hide &&\r\n (!this.pickMode || (h.showInPickMode !== false && this.pickMode)) &&\r\n (!h.value ||\r\n !h.hideIfEmpty ||\r\n this.destinationPassengers.find(p => p[h.value]))\r\n // || this.destinationPassengers.find(p => p[h.value])\r\n );\r\n return headers;\r\n }\r\n\r\n get filteredItems(): Passenger[] {\r\n return this.filteredPassengers;\r\n }\r\n\r\n get showOnlyActivePassengers(): boolean {\r\n return this.$store.state.passenger.showOnlyActivePassengers;\r\n }\r\n @Watch(\"showOnlyActivePassengers\")\r\n showOnlyActivePassengersChanged(){\r\n this.getDataFromApi();\r\n }\r\n\r\n set showOnlyActivePassengers(value: boolean) {\r\n this.$store.commit(\"passenger/changeShowActivePassengers\", value);\r\n }\r\n\r\n get filteredPassengers(): Passenger[] {\r\n let passengers = this.passengers;\r\n if (this.onlyShowPassengersWithTrips){\r\n const tripPassengerIds = this.allTrips.map(t => t.passengerId);\r\n const uniqueTripPassengerIds = [...new Set(tripPassengerIds)];\r\n\r\n passengers = passengers.filter(p => uniqueTripPassengerIds.includes(p.id));\r\n }\r\n\r\n // Filtering is now done on server-side, disable client side filtering\r\n // if (this.showOnlyActivePassengers) {\r\n // passengers = passengers.filter(p => !p.inactive)\r\n // }\r\n\r\n // passengers = this.search\r\n // ? passengers.filter(\r\n // p =>\r\n // p.nameMatchesSearch(this.search) ||\r\n // p.yearGradeMatchesSearch(this.search)\r\n // )\r\n // : passengers;\r\n\r\n return passengers;\r\n }\r\n\r\n get pickedFilteredItems(): Passenger[] {\r\n return this.filteredItems.filter((p: Passenger) => p.picked);\r\n }\r\n\r\n get allFilteredItemsSelected(): boolean {\r\n return this.filteredItems.every((p: Passenger) => p.picked);\r\n }\r\n\r\n set allFilteredItemsSelected(value) {\r\n this.onToggleAll(value);\r\n }\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n get destinations(): Destination[] {\r\n return this.$store.state.destination.destinations;\r\n }\r\n\r\n get selectedDestination(): Destination | undefined {\r\n return this.destinations.find(d => d.id === this.routeDestinationId);\r\n }\r\n\r\n get storePassengers(): Passenger[] {\r\n return this.$store.state.passenger.paginatedPassengers;\r\n }\r\n\r\n get isLoading(): boolean {\r\n return (\r\n this.$store.state.passenger.pending.paginatedPassengers ||\r\n this.$store.state.destination.pending.destinations\r\n );\r\n }\r\n\r\n get totalPassengers(): number {\r\n return this.$store.state.passenger.paginatedPassengersTotal;\r\n }\r\n\r\n get destinationPassengers(): Passenger[] {\r\n return this.selectedDestination\r\n ? this.storePassengers.filter((p: Passenger) =>\r\n p.passengerDestinations.some(\r\n pd => pd.destinationId === this.selectedDestination.id\r\n )\r\n )\r\n : [];\r\n }\r\n\r\n get passengers(): Passenger[] {\r\n let passengers = this.destinationPassengers.filter((p: Passenger) => {\r\n if (\r\n !this.groupNamesToFilterIn ||\r\n this.groupNamesToFilterIn.length === 0\r\n ) {\r\n return true;\r\n }\r\n\r\n if (p.groups) {\r\n const passengerGroupNames = p.groups.split(\",\").map(g => g.trim());\r\n return passengerGroupNames.some(g =>\r\n this.groupNamesToFilterIn.includes(g)\r\n );\r\n }\r\n return false;\r\n });\r\n\r\n passengers = passengers.filter(\r\n (p: Passenger) => !this.hiddenPassengers.includes(p)\r\n );\r\n return passengers;\r\n }\r\n\r\n set passengers(value) {\r\n // console.log(\"NO-OP: passengers set:\", value);\r\n }\r\n\r\n get destinationGroups(): Group[] {\r\n // TODO: Get the destination passenger groups from API, restService.passengers.getPassengerAvailableDestinationGroups\r\n const groups = [];\r\n\r\n this.destinationPassengers.forEach((p: Passenger) => {\r\n if (p.groups) {\r\n p.groups.split(\",\").forEach(g => {\r\n groups.push({ name: g.trim() });\r\n });\r\n }\r\n });\r\n return groups;\r\n }\r\n\r\n get assignableGroups(): Group[] {\r\n return Group.getUniqueGroups(\r\n this.destinationGroups.concat(\r\n this.groupNamesToAssign.map(gn => new Group(gn))\r\n )\r\n );\r\n }\r\n\r\n activeTripsForPassenger(id: number) {\r\n return this.allTrips\r\n .filter((t) => t.passengerId === id)\r\n .filter((t) => !t.cancelledAt).length;\r\n }\r\n\r\n get me(): User {\r\n return this.$store.state.user.me;\r\n }\r\n\r\n get userCanEditGroups(): boolean {\r\n return this.me\r\n ? this.me.hasPermissions(this.routeDestinationId, [\r\n RolePermission.UpdatePassengerGroups\r\n ])\r\n : false;\r\n }\r\n\r\n get userCanEditPassengers(): boolean {\r\n return this.me\r\n ? this.me.hasPermissions(this.routeDestinationId, [\r\n RolePermission.UpdatePassengers\r\n ])\r\n : false;\r\n }\r\n\r\n get userCanDeletePassengers(): boolean {\r\n return this.me\r\n ? this.me.hasPermissions(this.routeDestinationId, [\r\n RolePermission.DeletePassengers\r\n ])\r\n : false;\r\n }\r\n\r\n get userCanSeeActionsColumn(): boolean {\r\n return this.userCanEditPassengers && this.userCanDeletePassengers;\r\n }\r\n\r\n get userCanCreatePassengers(): boolean {\r\n return this.me\r\n ? this.me.hasPermissions(this.routeDestinationId, [\r\n RolePermission.CreatePassengers\r\n ])\r\n : false;\r\n }\r\n\r\n passengerHasAddableGroups(passenger: Passenger): boolean {\r\n console.log(\"p\")\r\n if (this.groupNamesToAssign.length === 0) {\r\n return false;\r\n }\r\n const passengerGroupNames = passenger.groups.split(\",\").map(g => g.trim());\r\n return !this.groupNamesToAssign.every(gn =>\r\n passengerGroupNames.includes(gn)\r\n );\r\n }\r\n\r\n mounted() {\r\n setTimeout(() => {\r\n this.ready = true;\r\n }, 500);\r\n }\r\n\r\n async onEditPassengerClick(passenger: Passenger) {\r\n this.$router.push({\r\n name: Routes.editPassengerRoute.name,\r\n params: {\r\n passengerId: passenger.id.toString(),\r\n }\r\n });\r\n }\r\n\r\n async onDeletePassengerClick(passenger: Passenger) {\r\n if (\r\n confirm(\r\n this.$i18n.translate(\r\n \"passenger.delete.confirm_with_name\",\r\n \"Are you sure you want to delete {passengerName}?\",\r\n {\r\n passengerName: passenger.name\r\n }\r\n )\r\n )\r\n ) {\r\n try {\r\n await this.$store.dispatch(\"passenger/deleteRequest\", {\r\n params: { id: passenger.id }\r\n });\r\n } catch (err) {\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n \"passenger.delete.error.generic\",\r\n \"There was an error when deleting the passenger. Please try again later.\"\r\n )\r\n );\r\n }\r\n }\r\n }\r\n\r\n async savePassengerGroups(passenger) {\r\n try {\r\n await this.$store.dispatch(\"passenger/updatePassengerGroups\", {\r\n params: { id: passenger.id },\r\n data: passenger\r\n });\r\n } catch (ex) {\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n \"passenger.save.error.generic\",\r\n \"There was an error saving the passenger. Please try again later.\"\r\n )\r\n );\r\n }\r\n }\r\n\r\n onAddGroupClick(passenger: Passenger) {\r\n this.groupNamesToAssignForSinglePassenger = [];\r\n this.singlePassengerToAddGroupsFor = passenger;\r\n this.showGroupAssignDialog = true;\r\n }\r\n\r\n async onGroupCellClick(passenger: Passenger) {\r\n if (passenger.inactive) {\r\n return;\r\n }\r\n if (this.pickMode) {\r\n this.toggleItemPicked({passenger: passenger, value: !passenger.picked});\r\n } else {\r\n const modified = passenger.addToGroupNames(this.groupNamesToAssign);\r\n if (!modified) {\r\n return;\r\n }\r\n await this.savePassengerGroups(passenger);\r\n }\r\n }\r\n\r\n async onGroupChipClick(passenger: Passenger, groupName: string) {\r\n return;\r\n }\r\n\r\n async onGroupChipInput(passenger: Passenger, groupName: string) {\r\n if (this.pickMode) {\r\n return;\r\n }\r\n const modified = passenger.removeFromGroupNames([groupName]);\r\n if (!modified) {\r\n return;\r\n }\r\n await this.savePassengerGroups(passenger);\r\n }\r\n\r\n onSearchInput(val) {\r\n if (this.searchDebounceTimeout) {\r\n clearTimeout(this.searchDebounceTimeout);\r\n }\r\n this.searchDebounceTimeout = setTimeout(() => {\r\n this.search = val;\r\n }, 500);\r\n }\r\n\r\n updatePickedPassengersCount() {\r\n this.pickedPassengersCount = this.pickedFilteredItems.length;\r\n }\r\n\r\n toggleItemPicked({passenger, value}: {passenger: Passenger, value}) {\r\n if (passenger.inactive) {\r\n return;\r\n }\r\n passenger.picked = value;\r\n this.updatePickedPassengersCount();\r\n const pickedPassengers = this.pickedFilteredItems;\r\n this.$emit(\"change\", pickedPassengers);\r\n }\r\n\r\n onToggleAll(value) {\r\n this.filteredItems.forEach((p: Passenger) => {\r\n p.picked = value;\r\n });\r\n this.updatePickedPassengersCount();\r\n const pickedPassengers = this.pickedFilteredItems;\r\n this.$emit(\"change\", pickedPassengers);\r\n }\r\n\r\n onChangeSort(column) {\r\n // console.log(\"onChangeSort\", \"column:\", column)\r\n if (this.pagination.sortBy === column) {\r\n this.pagination.descending = !this.pagination.descending;\r\n } else {\r\n this.pagination.sortBy = column;\r\n this.pagination.descending = false;\r\n }\r\n }\r\n\r\n onDatatableSort(items, index, isDesc) {\r\n items.sort((a: Passenger, b: Passenger) => {\r\n if (isDesc) {\r\n return b[index] < a[index] ? -1 : 1;\r\n } else {\r\n return a[index] < b[index] ? -1 : 1;\r\n }\r\n });\r\n return items;\r\n }\r\n\r\n onPassengerClick(event: Event, passenger: Passenger) {\r\n this.$root.$emit(PassengerDialog.EVENT_PASSENGER_DIALOG_SHOW, passenger);\r\n }\r\n\r\n onCreatePassengerClick() {\r\n this.$store.commit('passenger/resetSelectedPassenger');\r\n this.$router.push({ name: Routes.newPassengerRoute.name });\r\n }\r\n\r\n unpickAllPassengers() {\r\n this.pickedFilteredItems.forEach((p: Passenger) => {\r\n p.picked = false;\r\n });\r\n }\r\n onCloseClick() {\r\n this.pickedPassengersCount = 0;\r\n const pickedPassengers = this.pickedFilteredItems;\r\n this.unpickAllPassengers();\r\n this.$emit(\"close\", pickedPassengers);\r\n }\r\n onSubmitClick() {\r\n const pickedPassengers = this.pickedFilteredItems;\r\n this.unpickAllPassengers();\r\n this.$emit(\"pickPassengers\", pickedPassengers);\r\n this.pickedPassengersCount = 0;\r\n }\r\n onGroupFilterGroupPickerChange(selectedGroups: Group[]) {\r\n this.groupNamesToFilterIn = selectedGroups.map(g => g.name);\r\n }\r\n onGroupAssignGroupPickerChange(selectedGroups: Group[]) {\r\n this.groupNamesToAssign = selectedGroups.map(g => g.name);\r\n }\r\n onGroupAssignSingleGroupPickerChange(selectedGroups: Group[]) {\r\n this.groupNamesToAssignForSinglePassenger = selectedGroups.map(g => g.name);\r\n }\r\n onGroupAssignSingleCancelClick() {\r\n this.groupNamesToAssignForSinglePassenger = [];\r\n this.showGroupAssignDialog = false;\r\n this.singlePassengerToAddGroupsFor = null;\r\n }\r\n async onGroupAssignSingleOkClick() {\r\n const groupsModified: boolean = this.singlePassengerToAddGroupsFor.updateGroups(\r\n this.groupNamesToAssignForSinglePassenger\r\n );\r\n if (groupsModified) {\r\n this.savingPassengerGroups = true;\r\n await this.savePassengerGroups(this.singlePassengerToAddGroupsFor);\r\n this.savingPassengerGroups = false;\r\n }\r\n this.groupNamesToAssignForSinglePassenger = [];\r\n this.showGroupAssignDialog = false;\r\n this.singlePassengerToAddGroupsFor = null;\r\n }\r\n\r\n async created(){\r\n \r\n }\r\n\r\n beforeDestroy() {\r\n // TODO: Temporary workaround for selection sharing bug, handle this better\r\n this.storePassengers\r\n .filter((p: Passenger) => p.picked)\r\n .forEach((p: Passenger) => (p.picked = false));\r\n\r\n // Clear intervals and timeouts\r\n if (this.searchDebounceTimeout) {\r\n clearTimeout(this.searchDebounceTimeout);\r\n }\r\n }\r\n}\r\n\r\nexport default PassengerList;\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerList.vue?vue&type=template&id=590621bb&\"\nimport script from \"./PassengerList.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 map = {\n\t\"./en-gb\": 2243,\n\t\"./en-gb.js\": 2243,\n\t\"./fi\": 1897,\n\t\"./fi.js\": 1897,\n\t\"./fil\": 2549,\n\t\"./fil.js\": 2549,\n\t\"./sv\": 8760,\n\t\"./sv.js\": 8760,\n\t\"moment/locale/en-gb\": 2243,\n\t\"moment/locale/en-gb.js\": 2243,\n\t\"moment/locale/fi\": 1897,\n\t\"moment/locale/fi.js\": 1897,\n\t\"moment/locale/fil\": 2549,\n\t\"moment/locale/fil.js\": 2549,\n\t\"moment/locale/sv\": 8760,\n\t\"moment/locale/sv.js\": 8760\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 = 5498;","module.exports = \"\\r\\n \\r\\n \\r\\n palette\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n close\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n {{ me.email }}\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n : +358102291760\\r\\n \\r\\n \\r\\n \\r\\n : palaute@movit.fi\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ $t('toolbar.app_name_with_version', 'Timit {version}', { version: 'v' + $store.state.app.version.toString() }) }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n 0\\\"\\r\\n flat\\r\\n v-for=\\\"organization in organizations\\\"\\r\\n :key=\\\"organization.name\\\"\\r\\n @click=\\\"$router.push({ params: { organizationId: organization.id }, name: 'Organization' })\\\"\\r\\n >\\r\\n {{ organization.name }}\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n {{ $t('generic.refresh', 'Refresh') }}\\r\\n refresh\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n
\"","module.exports = \"
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n\"","module.exports = \"
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ $t('passenger.editor.title.edit', 'EDIT PERSON') }}\\r\\n \\r\\n \\r\\n {{ $t('passenger.editor.title.new', 'NEW PERSON') }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n {{ $t('passenger.prop.utilities.label','Utilities') }}\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ utilityTitle(utility.id) }}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n {{ $t('generic.close','Close') }}\\r\\n \\r\\n \\r\\n \\r\\n {{ $t('generic.save','Save') }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\"","module.exports = \"
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n {{ $t('generic.close','Close') }}\\r\\n \\r\\n\\r\\n \\r\\n {{ $t('timetable.editor.delete', 'Delete') }}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\"","module.exports = \"
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n {{ $t('timetable.info.title', 'Timetable info') }}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
{{ $t('timetable.info.name.label', 'Name') }}
\\r\\n
{{ timetable.note }}
\\r\\n
\\r\\n\\r\\n \\r\\n
{{ $t('timetable.info.idNumber.label', 'ID number') }}
\\r\\n
#{{ timetable.idNumber }}
\\r\\n
\\r\\n\\r\\n \\r\\n
{{ $t('timetable.info.destination.label', 'Place') }}
\\r\\n
{{ destination.alias }}
\\r\\n
{{ destination.address }}, {{ destination.city }}
\\r\\n
\\r\\n\\r\\n \\r\\n
{{ $t('timetable.info.state.label', 'State') }}
\\r\\n
\\r\\n {{ $t(\\\"timetable.state.\\\" + timetable.stateNameLowerCase + \\\".name.one\\\", timetable.stateName) }}\\r\\n
\\r\\n
{{ timetable.rejectedReason }}
\\r\\n
\\r\\n\\r\\n \\r\\n
{{$t(\\\"timetable.starts\\\", \\\"Starts\\\")}}
\\r\\n
{{ $dateHelper.formatDateWithShortWeekDay(timetable.startDateString) }}
\\r\\n
\\r\\n \\r\\n \\r\\n
{{$t(\\\"timetable.ends\\\", \\\"Ends\\\")}}
\\r\\n
{{ $dateHelper.formatDateWithShortWeekDay(timetable.endDateString) }}
\\r\\n
\\r\\n \\r\\n \\r\\n
{{ $t('timetable.info.createdBy.label', 'Created by') }}
\\r\\n
{{ timetable.createdByEmail }}
\\r\\n
{{ formatDate(timetable.createdAt) }}
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
{{ $t('timetable.info.updatedBy.label', 'Updated by') }}
\\r\\n
{{ timetable.updatedByEmail }}
\\r\\n
{{ formatDate(timetable.updatedAt) }}
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
{{ $t('timetable.info.orderedBy.label', 'Ordered by') }}
\\r\\n
{{ timetable.orderedByEmail }}
\\r\\n
{{ formatDate(timetable.updatedAt) }}
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n {{ $t('generic.close','Close') }}\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\"","import Vue from 'vue';\r\nimport IApiError from './models/IApiError';\r\nimport { ModelStateError } from './services/BaseService';\r\n\r\nclass AppEvents extends Vue {\r\n public static APP_LOGOUT = 'APP_LOGOUT';\r\n public static APP_LOGIN_SUCCESS = 'APP_LOGIN_SUCCESS';\r\n public static APP_API_UNAUTHORIZED = 'APP_API_UNAUTHORIZED';\r\n\r\n private static trimDots(sourceText: string){\r\n return sourceText.replace(/^\\.+/, '').replace(/\\.+$/, '');\r\n }\r\n\r\n static handleApiError(e: any){\r\n let error: string | Error | ModelStateError;\r\n if (!e){\r\n throw new Error(Vue.i18n.translate(\r\n \"generic.error.api.request-error\", \r\n \"An error occurred during the processing of the request. Please try again later or contact support.\")\r\n );\r\n }\r\n\r\n if (!e.response) {\r\n throw e;\r\n }\r\n\r\n const applicationError = e.response.headers['Application-Error'];\r\n if (applicationError) {\r\n throw new Error(applicationError);\r\n }\r\n\r\n if(!e.response.status || !e.response.data)\r\n {\r\n throw e;\r\n }\r\n\r\n if (e.response.data.toString().startsWith(\" 0)?_c('ArrivalsDeparturesDaySelector',{attrs:{\"destination\":_vm.selectedDestination,\"arrivalDepartureDays\":_vm.arrivalDepartureDaysVisible}}):_c('v-container',{attrs:{\"fluid\":\"\",\"pa-5\":\"\",\"text-xs-center\":\"\"}},[(!_vm.isLoading && _vm.selectedDestination)?_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t(\n 'arrival_departure.no_arrivals_departures_for_destination', \n 'No arrivals/departures found for {destinationAlias}.', \n { destinationAlias: _vm.selectedDestination.alias }))}}):_vm._e()])],(_vm.isLoading)?_c('v-container',{attrs:{\"fluid\":\"\",\"pa-5\":\"\",\"text-xs-center\":\"\"}},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":\"primary\",\"text-xs-center\":\"\",\"mx-auto\":\"\"}})],1):_vm._e(),(!_vm.isLoading && _vm.selectedDestination && _vm.arrivalDepartureDay)?_c('div',[_c('v-container',{staticClass:\"arrival-departure-day-list-item\"},[(_vm.arrivalDepartureDay.arrivalsDepartures.length > 0)?_c('div',{staticClass:\"arrival-departure-list\"},[(_vm.search && !_vm.hasPassengersMatchingSearch)?_c('div',{staticStyle:{\"text-align\":\"center\",\"padding\":\"40px\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"arrivals_departures.search.no_results\", \"No results found\"))+\" \")]):_c('table',{staticClass:\"v-table\"},[_c('thead',{staticClass:\"compressible\"},[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.$t(\"generic.header.time.at\", \"At\")))]),_c('th',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(_vm._s(_vm.$t(\"arrivals_departures.table.header.carAndPassenger\", \"Car/Passenger\")))])])]),_c('tbody',_vm._l((_vm.sortedArrivalDepartureGroups),function(arrivalsDeparturesGroup){return _c('ArrivalDepartureListItem',{key:arrivalsDeparturesGroup[0].id,attrs:{\"search\":_vm.search,\"arrivalsDepartures\":arrivalsDeparturesGroup},on:{\"passengerClick\":_vm.onPassengerClick,\"passengerSelectClick\":_vm.onPassengerSelectClick}})}),1)])]):_c('v-container',[_c('div',{staticClass:\"l10n capitalize-first-letter\",domProps:{\"innerHTML\":_vm._s(_vm.$t('arrival_departure.no_arrivals_departures_for_date', \n 'No arrivals/departures found for {date}.', \n { \n date: _vm.$dateHelper.formatDateWithLongWeekDay(_vm.arrivalDepartureDay.dateId) \n }))}})])],1)],1):_vm._e()],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{class:[\n 'arrival-departure-list-item',\n _vm.allArrivalDeparturesCancelled ? 'cancelled' : '',\n _vm.search && !_vm.hasPassengersMatchingSearch ? 'search-no-match' : ''\n ]},[_c('td',{staticClass:\"time min\"},[(_vm.primaryArrivalDeparture.isDeparture)?[_c('div',{staticClass:\"text compressible short departure orange--text\"},[_vm._v(_vm._s(_vm.$t(\"arrival_departure.type.departs_short\", \"Dep.\")))]),_c('div',{staticClass:\"text compressible long departure orange--text\"},[_vm._v(_vm._s(_vm.$t(\"arrival_departure.type.departs\", \"Departs\")))]),_c('v-icon',{staticClass:\"compressible long\",staticStyle:{\"font-size\":\"12px\"},attrs:{\"color\":\"orange\"}},[_vm._v(\"redo\")]),_c('div',[_c('span',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.primaryArrivalDeparture.atHHMM))])])]:_vm._e(),(_vm.primaryArrivalDeparture.isArrival)?[_c('v-icon',{staticClass:\"compressible long\",staticStyle:{\"font-size\":\"12px\"},attrs:{\"color\":\"green\"}},[_vm._v(\"redo\")]),_c('div',{staticClass:\"text compressible short arrival green--text\"},[_vm._v(_vm._s(_vm.$t(\"arrival_departure.type.arrives_short\", \"Arr.\")))]),_c('div',{staticClass:\"text compressible long arrival green--text\"},[_vm._v(_vm._s(_vm.$t(\"arrival_departure.type.arrives\", \"Arrives\")))]),_c('div',[_c('span',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.primaryArrivalDeparture.atHHMM))])])]:_vm._e(),_vm._l((_vm.arrivalsDeparturesFiltered),function(arrivalDeparture){return _c('div',{key:arrivalDeparture.id,class:[\n 'passenger-row',\n _vm.search &&\n !_vm.arrivalDeparturePassenger(arrivalDeparture).nameMatchesSearch(_vm.search)\n ? 'search-no-match'\n : '' ]},[_c('v-chip',{staticClass:\"passenger-chip\",attrs:{\"small\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.atOtherMessageForPassenger(_vm.arrivalDeparturePassenger(arrivalDeparture)))+\" \")])],1)})],2),_c('td',[_c('div',{staticClass:\"text mb-2\"},[_c('span',{staticClass:\"transport-name\"},[_vm._v(\" \"+_vm._s(_vm.primaryArrivalDeparture.transportName || _vm.$t(\"arrival_departure.car_unknown\", \"Car has not been assigned yet\"))+\" \")])]),_vm._l((_vm.arrivalsDeparturesFiltered),function(arrivalDeparture){return _c('div',{key:arrivalDeparture.id,class:[\n 'passenger-row',\n _vm.search &&\n !_vm.arrivalDeparturePassenger(arrivalDeparture).nameMatchesSearch(_vm.search)\n ? 'search-no-match'\n : '',\n arrivalDeparture.cancelled ? 'cancelled' : '',\n arrivalDeparture.completed ? 'completed' : ''\n ],staticStyle:{\"clear\":\"both\"}},[_c('span',{class:{\n 'passenger-checkbox-chip-container': true,\n cancelled: arrivalDeparture.cancelled,\n completed: arrivalDeparture.completed,\n today: _vm.dayIsToday\n },on:{\"click\":function($event){_vm.onPassengerSelectClick($event, _vm.arrivalDeparturePassenger(arrivalDeparture), arrivalDeparture)}}},[(_vm.userCanMarkArrivalDeparturesCompleted && _vm.dayIsToday)?_c('v-checkbox',{staticClass:\"complete-checkbox\",staticStyle:{\"display\":\"inline-block\",\"margin-top\":\"0\",\"padding-top\":\"0\"},attrs:{\"input-value\":arrivalDeparture.completed,\"hide-details\":\"\",\"color\":\"success\",\"disabled\":arrivalDeparture.cancelled ||\n _vm.arrivalDeparturePassenger(arrivalDeparture).inactive}},[_c('div',{attrs:{\"slot\":\"label\"},slot:\"label\"})]):_vm._e(),_c('v-chip',{staticClass:\"passenger-chip\",style:({'background-color': _vm.helpers.getRandomColorWithSeed(arrivalDeparture.passengerId, 'light')}),attrs:{\"small\":\"\",\"title\":_vm.atOtherMessageForPassenger(_vm.arrivalDeparturePassenger(arrivalDeparture)),\"text-color\":\"black\",\"disabled\":true}},[_c('span',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.arrivalDeparturePassenger(arrivalDeparture).name))]),(_vm.arrivalDeparturePassenger(arrivalDeparture).utilityIds.length > 0)?_c('span',{staticClass:\"utilities\"},_vm._l((_vm.arrivalDeparturePassenger(arrivalDeparture).utilityIds),function(utilityId){return _c('span',{key:utilityId,staticClass:\"utility\",attrs:{\"title\":_vm.utilityTitle(utilityId)}},[_c('img',{attrs:{\"src\":_vm.utilityIconImageSrc(utilityId)}})])}),0):_vm._e(),(arrivalDeparture.cancelled)?_c('v-icon',{staticClass:\"ml-1\",attrs:{\"color\":\"grey lighten-1\",\"title\":_vm.$t('arrivalDeparture.cancelled.title', 'Cancelled')}},[_vm._v(\" error_outline \")]):_vm._e()],1)],1),_c('v-btn',{staticClass:\"info-button\",attrs:{\"icon\":\"\",\"disabled\":!_vm.userCanMarkArrivalDeparturesCompleted},on:{\"click\":function($event){_vm.onPassengerClick($event, _vm.arrivalDeparturePassenger(arrivalDeparture), arrivalDeparture)}}},[_c('v-icon',{attrs:{\"color\":arrivalDeparture.cancelling ? 'orange' : 'grey lighten-2'}},[_vm._v(\"info\")])],1)],1)})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Component, Prop, Watch } from \"vue-property-decorator\";\r\nimport \"./ArrivalDepartureListItem.scss\";\r\nimport { ArrivalDeparture } from \"../models/ArrivalDeparture\";\r\nimport Passenger from \"../../Passenger/models/Passenger\";\r\nimport Utility from \"../../Passenger/models/Utility\";\r\nimport { Helpers } from \"../../../util/Helpers\";\r\nimport { Guid } from \"guid-typescript\";\r\nimport vuetifyToast from \"vuetify-toast\";\r\nimport { RolePermission } from \"@/models/Role\";\r\nimport moment from \"moment\";\r\n\r\n@Component({\r\n components: {}\r\n})\r\nexport class ArrivalDepartureListItem extends Vue {\r\n @Prop({ required: true })\r\n arrivalsDepartures: ArrivalDeparture[];\r\n\r\n @Prop({ default: \"\" })\r\n search: string;\r\n\r\n dayIsToday: boolean = false;\r\n\r\n get primaryArrivalDeparture(): ArrivalDeparture {\r\n return this.arrivalsDepartures[0];\r\n }\r\n\r\n get arrivalsDeparturesFiltered(): ArrivalDeparture[] {\r\n return this.arrivalsDepartures.filter(ad => {\r\n const exists = this.arrivalDeparturePassenger(ad);\r\n return exists;\r\n });\r\n }\r\n\r\n get arrivalsDeparturesIds(): Guid[] {\r\n return this.arrivalsDepartures.map((te: ArrivalDeparture) => te.id);\r\n }\r\n\r\n get cancelledArrivalDepartures(): ArrivalDeparture[] {\r\n return this.arrivalsDepartures.filter(te => te.cancelled);\r\n }\r\n\r\n get cancellingArrivalDepartures(): ArrivalDeparture[] {\r\n return this.arrivalsDepartures.filter(te => te.cancelling);\r\n }\r\n\r\n get passengerIds(): number[] {\r\n return this.arrivalsDepartures.map((te: ArrivalDeparture) => te.passengerId);\r\n }\r\n\r\n get cancelledPassengerIds(): number[] {\r\n return this.cancelledArrivalDepartures.map((te: ArrivalDeparture) => te.passengerId);\r\n }\r\n\r\n get cancellingPassengerIds(): number[] {\r\n return this.cancellingArrivalDepartures.map((te: ArrivalDeparture) => te.passengerId);\r\n }\r\n\r\n get storePassengers(): Passenger[] {\r\n return this.$store.state.passenger.arrivalDeparturePassengers;\r\n }\r\n\r\n \r\n\r\n arrivalDeparturePassenger(arrivalDeparture: ArrivalDeparture): Passenger {\r\n let passenger = this.storePassengers.find(p => p.id === arrivalDeparture.passengerId);\r\n // If store did not contain passenger create fake passenger with unknown name and return it\r\n if (!passenger) {\r\n const name = arrivalDeparture.passengerName \r\n || this.$i18n.translate(\"passenger.unknown_name\", \"Unknown passenger\");\r\n\r\n passenger = new Passenger({ id: arrivalDeparture.passengerId, name });\r\n }\r\n return passenger;\r\n }\r\n\r\n // get passengers(): Passenger[] {\r\n // const passengersFromDepartures = [];\r\n // this.arrivalsDepartures.map(arr => {\r\n // const passenger = this.storePassengers.find(p => p.id === arr.passengerId);\r\n // passengersFromDepartures.push(passenger);\r\n // });\r\n // return passengersFromDepartures;\r\n // }\r\n\r\n get allArrivalDeparturesCancelled(): boolean {\r\n return this.arrivalsDepartures.every(te => te.cancelled);\r\n }\r\n\r\n get helpers(): Helpers {\r\n return Helpers;\r\n }\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n get me() {\r\n return this.$store.state.user.me;\r\n }\r\n\r\n get userCanMarkArrivalDeparturesCompleted(): boolean {\r\n return this.me\r\n ? this.me.hasPermissions(this.routeDestinationId, [\r\n RolePermission.UpdateArrivalDepartures\r\n ])\r\n : false;\r\n }\r\n\r\n get routeDateId(): string | undefined {\r\n return this.$store.state.route.params.dateId;\r\n }\r\n\r\n utilityTitle(utilityId: number): string {\r\n const utility: Utility = Passenger.utilities.find(\r\n (u: any) => u.id === utilityId\r\n );\r\n return utility\r\n ? this.$i18n.translate(\"utility.title.\" + utility.title, utility.title)\r\n : \"Unknown utility\";\r\n }\r\n\r\n utilityIconImageSrc(utilityId: number): string {\r\n const imageBasePath = \"/frontend/utilities/\";\r\n if (utilityId === 2) {\r\n return imageBasePath + \"man-waving-arm-32\" + \".png\";\r\n } else {\r\n return imageBasePath + \"utility\" + utilityId + \".png\";\r\n }\r\n }\r\n\r\n isArrivalDepartureCancelledForPassenger(passenger: Passenger): boolean {\r\n return this.cancelledPassengerIds.includes(passenger.id);\r\n }\r\n\r\n isArrivalDepartureCancellingForPassenger(passenger: Passenger): boolean {\r\n const isCancelling = this.cancellingPassengerIds.includes(passenger.id);\r\n const isCancelled = this.isArrivalDepartureCancelledForPassenger(passenger);\r\n return (isCancelling && !isCancelled);\r\n }\r\n\r\n get hasPassengersMatchingSearch(): boolean {\r\n return (this.search && this.storePassengers.some(p => p.nameMatchesSearch(this.search)));\r\n }\r\n\r\n atOtherTimeForPassenger(passenger: Passenger): string {\r\n const arrivalDeparture = this.arrivalDepartureForPassenger(passenger);\r\n return arrivalDeparture.atOther ? arrivalDeparture.atOtherHHMM : \"\";\r\n }\r\n\r\n arrivalDepartureForPassenger(passenger: Passenger): ArrivalDeparture {\r\n return this.arrivalsDepartures.find(ad => ad.passengerId === passenger.id);\r\n }\r\n\r\n atOtherMessageForPassenger(passenger: Passenger): string {\r\n if (!passenger.id || !passenger.movitId) {\r\n return this.$i18n.translate(\r\n \"arrival_departure.no_access_passenger_time\",\r\n \"Access to passenger information invalid\"\r\n );\r\n }\r\n\r\n const arrivalDeparture = this.arrivalsDepartures.find(ad => ad.passengerId === passenger.id);\r\n\r\n if (arrivalDeparture.atOther) {\r\n return arrivalDeparture.isArrival\r\n ? this.$i18n.translate(\r\n \"arrival_departure.departed_at_time\",\r\n \"Departed at {time}\",\r\n {\r\n time: arrivalDeparture.atOtherHHMM\r\n }\r\n )\r\n : this.$i18n.translate(\r\n \"arrival_departure.arrives_at_time\",\r\n \"Will arrive at {time}\",\r\n {\r\n time: arrivalDeparture.atOtherHHMM\r\n }\r\n );\r\n } else {\r\n return arrivalDeparture.isArrival\r\n ? this.$i18n.translate(\r\n \"arrival_departure.departed_at_unknown\",\r\n \"Departure time unknown\"\r\n )\r\n : \"?\"\r\n }\r\n }\r\n\r\n mounted() {\r\n this.dayIsToday = moment().isSame(this.routeDateId, \"day\");\r\n }\r\n\r\n onPassengerClick(event: Event, passenger: Passenger, arrivalDeparture: ArrivalDeparture) {\r\n this.$emit(\"passengerClick\", event, passenger, arrivalDeparture);\r\n }\r\n\r\n onPassengerSelectClick(event: Event, passenger: Passenger, arrivalDeparture: ArrivalDeparture) {\r\n if (passenger.inactive) {\r\n return;\r\n }\r\n if (!this.isArrivalDepartureCancelledForPassenger(passenger) && this.dayIsToday) {\r\n if (this.userCanMarkArrivalDeparturesCompleted) {\r\n this.$emit(\"passengerSelectClick\", event, passenger, arrivalDeparture);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default ArrivalDepartureListItem;\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ArrivalDepartureListItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ArrivalDepartureListItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ArrivalDepartureListItem.vue?vue&type=template&id=c593f924&\"\nimport script from \"./ArrivalDepartureListItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./ArrivalDepartureListItem.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"arrivals-departures-date-selector\"},[_c('v-tabs',{staticClass:\"date-selector-tabs\",attrs:{\"show-arrows\":\"\",\"grow\":\"\",\"hide-slider\":\"\"}},_vm._l((_vm.arrivalDepartureDays),function(arrivalDepartureDay){return _c('v-tab',{key:_vm.destination.id.toString() + '_' + arrivalDepartureDay.dateId,attrs:{\"to\":arrivalDepartureDay.dateId}},[_c('div',[_c('div',[_vm._v(_vm._s(arrivalDepartureDay.weekDayName))]),_c('div',[_vm._v(_vm._s(_vm.$dateHelper.formatDateShort(arrivalDepartureDay.dateId)))])])])}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Watch, Prop } from \"vue-property-decorator\";\r\nimport { ArrivalDeparture } from \"../models/ArrivalDeparture\";\r\nimport { ArrivalsDeparturesDay } from '../models/ArrivalsDeparturesDay';\r\nimport './ArrivalsDeparturesDaySelector.scss'\r\nimport Destination from \"@/components/Passenger/models/Destination\";\r\nimport moment from 'moment';\r\nimport { Passenger } from \"@/components/Passenger/models/Passenger\";\r\nimport Routes from '@/Routes';\r\nimport { DateHelper } from '@/util/DateHelper';\r\n\r\nconst todayYMD = new DateHelper().dateYMD(new Date());\r\n\r\n@Component({\r\n components: {\r\n \r\n },\r\n })\r\nexport class ArrivalsDeparturesDaySelector extends Vue {\r\n\r\n @Prop({required: true}) \r\n destination: Destination;\r\n\r\n @Prop({default: () => []}) \r\n arrivalDepartureDays: ArrivalsDeparturesDay[];\r\n\r\n $dateHelper: DateHelper;\r\n \r\n todayYMD: string = todayYMD;\r\n\r\n get todayArrivalsDeparturesDay(): ArrivalsDeparturesDay {\r\n return this.arrivalDepartureDays.find(ad => ad.dateId === this.todayYMD);\r\n }\r\n\r\n get todayArrivalsDeparturesDayArrivalDepartures(): ArrivalDeparture[] {\r\n const today = this.todayArrivalsDeparturesDay;\r\n if (!today){\r\n return [];\r\n }\r\n return today.arrivalsDepartures;\r\n }\r\n\r\n get todayArrivalsDeparturesDayArrivalDeparturesCount(): number {\r\n return this.todayArrivalsDeparturesDayArrivalDepartures.length;\r\n }\r\n\r\n get nextDayAfterToday(): ArrivalsDeparturesDay {\r\n const todayIndex = this.arrivalDepartureDays.findIndex(ad => ad.dateId === this.todayYMD);\r\n return this.arrivalDepartureDays[todayIndex + 1];\r\n }\r\n\r\n get nextDayAfterTodayIsTomorrow(): boolean {\r\n if (!this.nextDayAfterToday){\r\n return false;\r\n }\r\n return this.nextDayAfterToday.isTomorrow;\r\n }\r\n\r\n get nextDayAfterTodayArrivalDepartures(): ArrivalDeparture[] {\r\n if (!this.nextDayAfterToday){\r\n return [];\r\n }\r\n return this.nextDayAfterToday.arrivalsDepartures;\r\n }\r\n\r\n get nextDayAfterTodayArrivalDeparturesCount(): number {\r\n return this.nextDayAfterTodayArrivalDepartures.length;\r\n }\r\n\r\n get nextDayAfterTodayWeekdayName(): string {\r\n if (this.nextDayAfterTodayIsTomorrow){\r\n return this.$i18n.translate(\"generic.tomorrow.lowercase\", \"tomorrow\");\r\n }\r\n return this.nextDayAfterToday.weekDayName;\r\n }\r\n\r\n get showWeekends(): boolean {\r\n return this.$store.state.user.showWeekends;\r\n }\r\n\r\n get routeDateId(): string | undefined {\r\n return this.$store.state.route.params.dateId;\r\n }\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n get routeName(): string {\r\n return this.$route.name;\r\n }\r\n\r\n redirectToFirstAvailableDay(timeout: number){\r\n setTimeout(f => {\r\n if (this.arrivalDepartureDays.length > 0){\r\n this.$router.replace({\r\n name: 'ArrivalsDeparturesDestinationDay', \r\n params: { \r\n dateId: this.arrivalDepartureDays[0].dateId.toString(),\r\n }\r\n });\r\n }\r\n }, timeout);\r\n }\r\n\r\n @Watch('routeName', { immediate: true }) onRouteNameChanged(val, oldVal){\r\n if (val === Routes.arrivalsDeparturesRoute.name && !this.routeDateId){\r\n this.redirectToFirstAvailableDay(500); \r\n }\r\n }\r\n\r\n @Watch('routeDestinationId', { immediate: true }) onRouteDestinationIdChanged(val, oldVal) {\r\n if (this.routeDestinationId !== val) {\r\n this.redirectToFirstAvailableDay(500);\r\n }\r\n }\r\n}\r\n\r\nexport default ArrivalsDeparturesDaySelector;\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ArrivalsDeparturesDaySelector.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ArrivalsDeparturesDaySelector.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ArrivalsDeparturesDaySelector.vue?vue&type=template&id=e726427a&\"\nimport script from \"./ArrivalsDeparturesDaySelector.vue?vue&type=script&lang=ts&\"\nexport * from \"./ArrivalsDeparturesDaySelector.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-layout',{attrs:{\"row\":\"\"}},[(_vm.editedDate)?_c('v-flex',{attrs:{\"xs12\":\"\",\"sm12\":\"\"}},[_c('v-menu',{ref:\"dateChooser\",attrs:{\"close-on-content-click\":false,\"nudge-right\":30,\"return-value\":_vm.updatedDate,\"lazy\":\"\",\"transition\":\"scale-transition\",\"offset-y\":\"\",\"disabled\":_vm.disabled},on:{\"update:returnValue\":function($event){_vm.updatedDate=$event},\"update:return-value\":function($event){_vm.updatedDate=$event},\"click\":function($event){$event.stopPropagation();0},\"mouseup\":function($event){$event.stopPropagation();0}},model:{value:(_vm.dateChooser),callback:function ($$v) {_vm.dateChooser=$$v},expression:\"dateChooser\"}},[_c('v-text-field',{attrs:{\"slot\":\"activator\",\"label\":_vm.dateLabel,\"prepend-icon\":!_vm.hideIcon && !_vm.appendIcon ? 'event' : '',\"append-icon\":!_vm.hideIcon && _vm.appendIcon ? 'event' : '',\"disabled\":_vm.disabled,\"readonly\":\"\"},slot:\"activator\",model:{value:(_vm.editedDateFormatted),callback:function ($$v) {_vm.editedDateFormatted=$$v},expression:\"editedDateFormatted\"}}),_c('v-card',[(_vm.datePickerTitle)?_c('v-card-title',[_vm._v(_vm._s(_vm.datePickerTitle))]):_vm._e(),_c('v-date-picker',{attrs:{\"no-title\":\"\",\"first-day-of-week\":_vm.$store.state.user.weekStartsOnSunday ? 0 : 1,\"allowed-dates\":_vm.allowedDates,\"locale\":_vm.$i18n.locale(),\"disabled\":_vm.disabled,\"title-date-format\":_vm.$dateHelper.datePickerTitleFormat},on:{\"input\":function($event){return _vm.$refs.dateChooser.save(_vm.editedDate)}},model:{value:(_vm.editedDate),callback:function ($$v) {_vm.editedDate=$$v},expression:\"editedDate\"}})],1)],1)],1):_vm._e(),(_vm.editedTime)?_c('v-flex',{attrs:{\"xs12\":\"\",\"sm12\":\"\"}},[_c('v-menu',{ref:\"timeChooser\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"return-value\":_vm.updatedTime,\"lazy\":\"\",\"transition\":\"scale-transition\",\"offset-y\":\"\",\"full-width\":\"\",\"min-width\":\"290px\",\"disabled\":_vm.disabled},on:{\"update:returnValue\":function($event){_vm.updatedTime=$event},\"update:return-value\":function($event){_vm.updatedTime=$event},\"click\":function($event){$event.stopPropagation();0},\"mouseup\":function($event){$event.stopPropagation();0}},model:{value:(_vm.timeChooser),callback:function ($$v) {_vm.timeChooser=$$v},expression:\"timeChooser\"}},[_c('v-text-field',{attrs:{\"slot\":\"activator\",\"label\":_vm.timeLabel,\"disabled\":_vm.disabled,\"readonly\":\"\"},slot:\"activator\",model:{value:(_vm.editedTime),callback:function ($$v) {_vm.editedTime=$$v},expression:\"editedTime\"}}),_c('v-card',[(_vm.timePickerTitle)?_c('v-card-title',[_vm._v(_vm._s(_vm.timePickerTitle))]):_vm._e(),_c('v-time-picker',{attrs:{\"disabled\":_vm.disabled,\"format\":\"24hr\"},on:{\"change\":function($event){return _vm.$refs.timeChooser.save(_vm.editedTime)}},model:{value:(_vm.editedTime),callback:function ($$v) {_vm.editedTime=$$v},expression:\"editedTime\"}})],1)],1)],1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Watch, Prop } from \"vue-property-decorator\";\r\nimport { DateHelper } from '@/util/DateHelper';\r\n\r\n@Component({\r\n components: {\r\n \r\n },\r\n })\r\nexport class DateTimePicker extends Vue {\r\n \r\n @Prop({default: \"Choose date\"})\r\n dateLabel: string;\r\n\r\n @Prop({default: null})\r\n date: string;\r\n\r\n @Prop({default: '1970-01-01'})\r\n min: string;\r\n\r\n @Prop({default: '2999-01-01'})\r\n max: string;\r\n\r\n @Prop({default: \"Choose time\"})\r\n timeLabel: string;\r\n\r\n @Prop({default: \"\"})\r\n datePickerTitle: string;\r\n\r\n @Prop({default: \"\"})\r\n timePickerTitle: string;\r\n\r\n @Prop({default: null})\r\n time: string;\r\n\r\n @Prop({default: false})\r\n disabled: boolean;\r\n\r\n @Prop({default: false})\r\n hideIcon: boolean;\r\n\r\n @Prop({default: false})\r\n appendIcon: boolean;\r\n\r\n @Prop({default: false})\r\n allowWeekends: boolean;\r\n\r\n $dateHelper: DateHelper;\r\n\r\n editedDate: string = null;\r\n updatedDate: string = null;\r\n dateChooser: boolean = false;\r\n editedTime: string = null;\r\n updatedTime: string = null;\r\n timeChooser: boolean = false;\r\n\r\n @Watch('date', {immediate: true})\r\n onDateChanged(val: string, oldVal: string) { \r\n this.editedDate = val;\r\n if (!val) {\r\n // reset\r\n this.updatedDate = null;\r\n }\r\n }\r\n\r\n @Watch('updatedDate')\r\n onUpdatedDateChanged(val: string, oldVal: string) { \r\n if (val) {\r\n let oldValue = oldVal;\r\n // on first edit, oldVal is null\r\n if (!oldValue) {\r\n // we need to grab the original value from the \"date\" prop\r\n oldValue = this.date;\r\n } \r\n this.$emit(\"date-updated\", val, oldValue);\r\n }\r\n }\r\n\r\n @Watch('time', {immediate: true})\r\n onTimeChanged(val: string, oldVal: string) { \r\n this.editedTime = val;\r\n if (!val) {\r\n // reset\r\n this.updatedTime = null;\r\n }\r\n }\r\n\r\n @Watch('updatedTime')\r\n onUpdatedTimeChanged(val: string, oldVal: string) { \r\n // console.log(\"watch updatedTime:\", \"val:\", val, \"oldVal:\", oldVal);\r\n if (val) {\r\n this.$emit(\"time-updated\", val);\r\n }\r\n }\r\n\r\n get editedDateFormatted(): string {\r\n return this.$dateHelper.formatDateWithShortWeekDay(this.editedDate + ' ');\r\n }\r\n\r\n get minDateStamp(): number {\r\n return new Date(this.min).getTime();\r\n }\r\n\r\n get maxDateStamp(): number {\r\n return new Date(this.max).getTime();\r\n }\r\n\r\n allowedDates(val) {\r\n const valDate = new Date(val);\r\n const valDateStamp = valDate.getTime();\r\n const day = valDate.getDay();\r\n const isWeekend = (day === 6) || (day === 0);\r\n return (!isWeekend || this.allowWeekends || this.$store.state.user.showWeekends) \r\n && valDateStamp >= this.minDateStamp && valDateStamp <= this.maxDateStamp\r\n }\r\n \r\n created() {\r\n this.editedDate = this.date;\r\n this.editedTime = this.time;\r\n };\r\n}\r\n\r\nexport default DateTimePicker;\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DatetimePicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DatetimePicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DatetimePicker.vue?vue&type=template&id=16daba82&\"\nimport script from \"./DatetimePicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./DatetimePicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/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","import { ArrivalDeparture } from '../models/ArrivalDeparture';\r\nimport moment from \"moment\"\r\nimport { DateHelper } from '@/util/DateHelper';\r\n\r\nexport class ArrivalsDeparturesDay {\r\n dateId: string;\r\n arrivalsDepartures: ArrivalDeparture[]; \r\n\r\n constructor(dateId: string) {\r\n this.dateId = dateId;\r\n this.arrivalsDepartures = [];\r\n }\r\n\r\n get date(){\r\n return new Date(this.dateId);\r\n }\r\n\r\n get sortedArrivalDepartureGroups(): ArrivalDeparture[][]{\r\n const sortedArrivalDepartures = ArrivalDeparture.sortByDate(this.arrivalsDepartures);\r\n return sortedArrivalDepartures.reduce(\r\n (arr: ArrivalDeparture[][], item) => {\r\n let arrivalDepartureGroup: ArrivalDeparture[] = arr\r\n .find(g => \r\n g.some(\r\n (ad: ArrivalDeparture) => \r\n ad.arrivalDepartureType === item.arrivalDepartureType\r\n && ad.placeId === item.placeId\r\n && ad.transportName === item.transportName\r\n && ad.atHHMM === item.atHHMM\r\n )\r\n )\r\n if (arrivalDepartureGroup){\r\n arrivalDepartureGroup.push(item);\r\n } else {\r\n arrivalDepartureGroup = [item];\r\n arr.push(arrivalDepartureGroup);\r\n }\r\n return arr;\r\n },\r\n []\r\n );\r\n }\r\n\r\n hasPassed(otherDateId){\r\n // console.log(\"warn:\", \"ArrivalsDeparturesDay\", \"get hasPassed()\", \"is evaluating...\");\r\n return new Date(this.dateId).getTime() < new Date(otherDateId).getTime();\r\n }\r\n\r\n get weekDayName(){\r\n // console.log(\"warn:\", \"ArrivalsDeparturesDay\", \"get weekDayName()\", \"is evaluating...\");\r\n return new DateHelper().formatDateWeekdayName(this.dateId);\r\n }\r\n\r\n get isToday(){\r\n // console.log(\"warn:\", \"ArrivalsDeparturesDay\", \"get isToday()\", \"is evaluating...\");\r\n const todayMoment = moment().startOf('day');\r\n const dateMoment = moment(this.dateId).startOf('day');\r\n return dateMoment.diff(todayMoment, 'days') === 0;\r\n }\r\n\r\n get isTomorrow(){\r\n // console.log(\"warn:\", \"ArrivalsDeparturesDay\", \"get isTomorrow()\", \"is evaluating...\");\r\n const todayMoment = moment().startOf('day');\r\n const dateMoment = moment(this.dateId).startOf('day');\r\n return dateMoment.diff(todayMoment, 'days') === 1;\r\n }\r\n\r\n get isWithinPastOrComingWeek(){\r\n // console.log(\"warn:\", \"ArrivalsDeparturesDay\", \"get isWithinPastOrComingWeek()\", \"is evaluating...\");\r\n const todayMoment = moment().startOf('day');\r\n const dateMoment = moment(this.dateId).startOf('day');\r\n const dateDifference = dateMoment.diff(todayMoment, 'days')\r\n return dateDifference < 7 && dateDifference > -7;\r\n }\r\n\r\n get isWithinComingWeek(){\r\n // console.log(\"warn:\", \"ArrivalsDeparturesDay\", \"get isWithinComingWeek()\", \"is evaluating...\");\r\n const todayMoment = moment().startOf('day');\r\n const dateMoment = moment(this.dateId).startOf('day');\r\n const dateDifference = dateMoment.diff(todayMoment, 'days')\r\n return dateDifference < 7 && dateDifference >= 0;\r\n }\r\n\r\n get isWeekEndDay(){\r\n return this.date.getDay() === 6 || this.date.getDay() === 0;\r\n }\r\n\r\n isDuringDateDay(duringDate: string): boolean{\r\n const duringDateMoment = moment(duringDate).startOf('day');\r\n const dateMoment = moment(this.dateId).startOf('day');\r\n return duringDateMoment.format('YYYY-MM-DD') === dateMoment.format('YYYY-MM-DD');\r\n }\r\n\r\n public static sortByDate(arrivalDepartureDays: ArrivalsDeparturesDay[]): ArrivalsDeparturesDay[] {\r\n return arrivalDepartureDays.sort((a, b) => {\r\n if (a.date.getTime() < b.date.getTime()) {\r\n return -1;\r\n }\r\n if (a.date.getTime() > b.date.getTime()) {\r\n return 1;\r\n }\r\n return 0;\r\n })\r\n }\r\n}\r\n\r\nexport default ArrivalsDeparturesDay;\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport vuetifyToast from 'vuetify-toast';\r\nimport { ArrivalDeparture } from \"@/components/ArrivalsDepartures/models/ArrivalDeparture\";\r\nimport './ArrivalsDeparturesPage.scss'\r\nimport Destination from \"@/components/Passenger/models/Destination\";\r\nimport moment from 'moment';\r\nimport ArrivalDepartureListItem from \"@/components/ArrivalsDepartures/components/ArrivalDepartureListItem.vue\";\r\n/* tslint:disable-next-line:max-line-length */\r\nimport ArrivalsDeparturesDaySelector from \"@/components/ArrivalsDepartures/components/ArrivalsDeparturesDaySelector.vue\";\r\nimport { Passenger } from \"@/components/Passenger/models/Passenger\";\r\nimport DateTimePicker from \"@/components/DatetimePicker.vue\";\r\nimport { ArrivalsDeparturesDay } from '@/components/ArrivalsDepartures/models/ArrivalsDeparturesDay';\r\nimport Routes from '@/Routes';\r\nimport { Utility } from '@/components/Passenger/models/Utility';\r\nimport PassengerEditor from \"@/components/Passenger/components/PassengerEditor.vue\";\r\nimport PassengerDialog from \"@/components/Passenger/components/PassengerDialog.vue\";\r\nimport DateHelper from '@/util/DateHelper';\r\n\r\nconst todayYMD = new DateHelper().dateYMD(new Date());\r\n\r\n@Component({\r\n // template: require(\"./ArrivalsDeparturesPage.vue.html\"),\r\n components: {\r\n DateTimePicker,\r\n ArrivalDepartureListItem,\r\n ArrivalsDeparturesDaySelector,\r\n PassengerEditor,\r\n PassengerDialog\r\n },\r\n })\r\nexport class ArrivalsDeparturesPage extends Vue {\r\n \r\n $dateHelper: DateHelper;\r\n isLoading: boolean = true;\r\n isLoadingTimeout: number;\r\n \r\n todayYMD: string = todayYMD;\r\n\r\n search: string = \"\";\r\n searchDebounceTimeout: any = null;\r\n\r\n get arrivalsDeparturesIsLoading(): boolean {\r\n return this.$store.state.arrivalDeparture.pending.arrivalsDepartures\r\n || this.$store.state.destination.pending.destinations\r\n || this.$store.state.passenger.pending.arrivalDeparturePassengers;\r\n }\r\n\r\n @Watch(\"arrivalsDeparturesIsLoading\", {immediate: true})\r\n onArrivalsDeparturesIsLoadingChange(val, oldVal){\r\n if (this.isLoadingTimeout){\r\n clearTimeout(this.isLoadingTimeout);\r\n }\r\n // When asset loading starts, wait a short time to hide ui\r\n // When assets loading stops, wait longer time to show ui\r\n let timeout = 500;\r\n if (!val){\r\n timeout = 100;\r\n }\r\n this.isLoadingTimeout = window.setTimeout(() => { \r\n this.isLoading = val\r\n }, \r\n timeout\r\n );\r\n }\r\n \r\n get me() {\r\n return this.$store.state.user.me;\r\n }\r\n\r\n get showWeekends() {\r\n return this.$store.state.user.showWeekends;\r\n }\r\n\r\n get arrivalsDepartures(): ArrivalDeparture[] {\r\n return this.$store.state.arrivalDeparture.arrivalsDepartures;\r\n }\r\n\r\n get arrivalsDeparturesCount(){\r\n return this.arrivalsDepartures.length;\r\n }\r\n\r\n get storeArrivalDepartures(): ArrivalDeparture[] {\r\n return this.$store.state.arrivalDeparture.arrivalsDepartures;\r\n }\r\n\r\n get destinationArrivalDepartures(): ArrivalDeparture[] {\r\n return this.selectedDestination \r\n ? this.storeArrivalDepartures.filter((t: ArrivalDeparture) => t.placeId === this.routeDestinationId)\r\n : [];\r\n }\r\n\r\n get arrivalDepartureDays(): ArrivalsDeparturesDay[] {\r\n const arrivalDepartureDays: ArrivalsDeparturesDay[] = this.destinationArrivalDepartures\r\n .reduce(\r\n (arr: ArrivalsDeparturesDay[], arrivalDeparture: ArrivalDeparture) => {\r\n const dateId = arrivalDeparture.atYMD;\r\n let arrivalDepartureDay: ArrivalsDeparturesDay = arr.find(ad => ad.dateId === dateId);\r\n if (!arrivalDepartureDay){\r\n arrivalDepartureDay = new ArrivalsDeparturesDay(dateId);\r\n arrivalDepartureDay.arrivalsDepartures.push(arrivalDeparture);\r\n return arr.concat(arrivalDepartureDay);\r\n } else {\r\n arrivalDepartureDay.arrivalsDepartures.push(arrivalDeparture);\r\n return arr;\r\n }\r\n },\r\n []\r\n )\r\n .filter(ad => ad.isWithinComingWeek)\r\n .filter(ad => this.showWeekends || !ad.isWeekEndDay)\r\n if (!arrivalDepartureDays.find(ad => ad.dateId === this.todayYMD )) {\r\n // Always have today in the list, even if empty\r\n arrivalDepartureDays.push(new ArrivalsDeparturesDay(this.todayYMD));\r\n };\r\n // console.timeEnd(\"get arrivalDepartureDays() \" + this.selectedDestination.id);\r\n return arrivalDepartureDays;\r\n }\r\n\r\n get arrivalDepartureDaysVisible(): ArrivalsDeparturesDay[] {\r\n return ArrivalsDeparturesDay.sortByDate(this.arrivalDepartureDays);\r\n }\r\n\r\n get arrivalDepartureDay(): ArrivalsDeparturesDay | undefined {\r\n const arrivalDepartureDay = this.arrivalDepartureDays.find(\r\n ted => ted.dateId === this.routeDateId\r\n );\r\n return arrivalDepartureDay;\r\n }\r\n\r\n get sortedArrivalDepartureGroups(): ArrivalDeparture[][] {\r\n return this.arrivalDepartureDay ? this.arrivalDepartureDay.sortedArrivalDepartureGroups : []\r\n }\r\n\r\n get hasPassengersMatchingSearch(): boolean {\r\n // console.log(\"SEARCHING...\");\r\n const result = this.search && \r\n this.arrivalDepartureDay && \r\n this.arrivalDepartureDay.arrivalsDepartures\r\n .map((te: ArrivalDeparture) => \r\n this.storePassengers.find(p => p.id === te.passengerId)\r\n )\r\n .filter(p => p)\r\n .some(p => \r\n p.nameMatchesSearch(this.search)\r\n );\r\n // console.log(\"result:\", result)\r\n return result;\r\n }\r\n \r\n get dateShort(){\r\n return this.$dateHelper.formatDateShort(this.arrivalDepartureDay.dateId);\r\n }\r\n\r\n get destinations(): Destination[] {\r\n return this.$store.state.destination.destinations;\r\n }\r\n\r\n get selectedDestination(): Destination | undefined {\r\n return this.destinations.find(d => d.id === this.routeDestinationId);\r\n }\r\n\r\n get storePassengers(): Passenger[] {\r\n return this.$store.state.passenger.arrivalDeparturePassengers;\r\n }\r\n get arrivalDeparturePassengerIds(): number[] {\r\n if (! this.arrivalDepartureDay){\r\n return [];\r\n }\r\n return this.arrivalDepartureDay.arrivalsDepartures\r\n .map(ad => ad.passengerId);\r\n }\r\n @Watch(\"arrivalDeparturePassengerIds\", {immediate: true})\r\n async arrivalDeparturePassengerIdsChanged(val, oldVal){\r\n await this.getArrivalDeparturePassengersFromApi();\r\n }\r\n\r\n async getArrivalDeparturePassengersFromApi(){\r\n await this.$store.dispatch(\r\n 'passenger/getArrivalDeparturePassengers',\r\n { \r\n data: this.arrivalDeparturePassengerIds\r\n }\r\n );\r\n }\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n @Watch('routeDestinationId', { immediate: true }) async onRouteDestinationIdChanged(val, oldVal) {\r\n if (this.destinationArrivalDepartures.length === 0){\r\n try {\r\n\r\n await this.$store.dispatch(\r\n 'arrivalDeparture/getDestinationArrivalDepartures',\r\n { params: { destinationId: this.routeDestinationId } },\r\n );\r\n\r\n } catch (e) {\r\n if ((e as any).response) {\r\n if ((e as any).response.status === 401) {\r\n this.$store.dispatch('auth/authLogout');\r\n }\r\n } else {\r\n console.error(e);\r\n vuetifyToast.error(this.$i18n.translate(\"error.api_connection_error\", \"API connection error.\"));\r\n }\r\n }\r\n }\r\n }\r\n\r\n get routeDateId(): string | undefined {\r\n return this.$store.state.route.params.dateId;\r\n }\r\n\r\n async created(){\r\n\r\n }\r\n\r\n onSearchInput(val){\r\n if (this.searchDebounceTimeout){\r\n clearTimeout(this.searchDebounceTimeout);\r\n }\r\n this.searchDebounceTimeout = setTimeout(\r\n () => {\r\n this.search = val;\r\n }, \r\n 500\r\n )\r\n }\r\n\r\n onPassengerClick(event: Event, passenger: Passenger, arrivalDeparture: ArrivalDeparture){\r\n this.$root.$emit(\r\n PassengerDialog.EVENT_PASSENGER_DIALOG_SHOW, \r\n passenger, \r\n { arrivalDeparture }\r\n )\r\n }\r\n\r\n async onPassengerSelectClick(event: Event, passenger: Passenger, arrivalDeparture: ArrivalDeparture){\r\n arrivalDeparture.completed = !arrivalDeparture.completed;\r\n if (arrivalDeparture.completed){\r\n\r\n try {\r\n await this.$store.dispatch('arrivalDeparture/setComplete', {data: ArrivalDeparture.toApi(arrivalDeparture)}); \r\n } catch (err) {\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n 'arrivalDeparture.save.error.setComplete', \r\n 'There was an error when marking the item as complete. Please reload the page and try again.'\r\n )\r\n )\r\n console.error(\"Error when setting arrivalDeparture as completed:\", err);\r\n arrivalDeparture.completed = !arrivalDeparture.completed;\r\n }\r\n \r\n } else {\r\n\r\n try {\r\n await this.$store.dispatch(\r\n 'arrivalDeparture/setIncomplete', \r\n { data: ArrivalDeparture.toApi(arrivalDeparture) }\r\n );\r\n\r\n } catch (err) {\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n 'arrivalDeparture.save.error.setIncomplete', \r\n 'There was an error when marking the item as incomplete. Please reload the page and try again.'\r\n )\r\n )\r\n console.error(\"Error when setting arrivalDeparture as incomplete:\", err);\r\n arrivalDeparture.completed = !arrivalDeparture.completed;\r\n }\r\n\r\n }\r\n \r\n }\r\n\r\n beforeDestroy(){\r\n // Clear intervals and timeouts\r\n if (this.searchDebounceTimeout){\r\n clearTimeout(this.searchDebounceTimeout);\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default ArrivalsDeparturesPage;\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ArrivalsDeparturesPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ArrivalsDeparturesPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ArrivalsDeparturesPage.vue?vue&type=template&id=406c3b5b&\"\nimport script from \"./ArrivalsDeparturesPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./ArrivalsDeparturesPage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"dark\",attrs:{\"fluid\":\"\",\"fill-height\":\"\"}},[_c('v-layout',{attrs:{\"align-center\":\"\",\"justify-center\":\"\"}},[_c('v-flex',{staticClass:\"main-content-column\",attrs:{\"xs12\":\"\",\"sm8\":\"\",\"md6\":\"\",\"lg4\":\"\"}},[_c('v-card',{staticClass:\"elevation-1 pb-2 login-form-container\"},[_c('v-alert',{attrs:{\"value\":_vm.apiErrors.length,\"color\":\"error\",\"icon\":\"warning\"}},_vm._l((_vm.apiErrors),function(error){return _c('div',{key:error.code},[_vm._v(\" \"+_vm._s(error.code.includes(\"NO_L10N\") ? error.message : _vm.$t(\"api.errors.\" + error.code, error.message))+\" \")])}),0),_c('v-card-title',[_c('div',{staticClass:\"l10n title\"},[_vm._v(_vm._s(_vm.$t('signin.prompt', 'Sign in with your password')))])]),_c('v-card-text',[_c('v-form',{staticClass:\"login-form\"},[_c('v-text-field',{attrs:{\"append-icon\":\"person\",\"label\":_vm.$t('signin.field.username.label', 'Username or email'),\"type\":\"text\",\"persistent-hint\":\"\",\"autocomplete\":\"username\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onSignInClick($event)}},model:{value:(_vm.model.username),callback:function ($$v) {_vm.$set(_vm.model, \"username\", $$v)},expression:\"model.username\"}}),_c('v-text-field',{attrs:{\"append-icon\":_vm.passwordVisible ? 'visibility' : 'visibility_off',\"type\":_vm.passwordVisible ? 'text' : 'password',\"label\":_vm.$t('signin.field.password.label', 'Password'),\"min\":\"8\",\"value\":\"\",\"persistent-hint\":\"\",\"autocomplete\":\"current-password\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onSignInClick($event)},\"click:append\":function($event){_vm.passwordVisible = !_vm.passwordVisible}},model:{value:(_vm.model.password),callback:function ($$v) {_vm.$set(_vm.model, \"password\", $$v)},expression:\"model.password\"}})],1)],1),_c('v-card-actions',[_c('v-btn',{staticStyle:{\"margin-left\":\"6px\"},attrs:{\"dark\":\"\",\"color\":\"accent\",\"loading\":_vm.signingInWithPassword},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSignInClick($event)}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('signin.signin.button.label', 'Sign in'))}})]),_c('v-spacer'),_c('router-link',{staticStyle:{\"padding\":\"0px\",\"margin-right\":\"8px\",\"float\":\"right\"},attrs:{\"to\":_vm.forgotPasswordRoute}},[_vm._v(\" \"+_vm._s(_vm.$t('signin.forgotPassword.link', 'Forgot password?'))+\" \")])],1)],1),_c('v-container',{staticStyle:{\"text-align\":\"center\"}},[_c('span',{staticClass:\"l10n title\",domProps:{\"innerHTML\":_vm._s(_vm.$t('signin.or', 'OR'))}})]),_c('v-card',{staticClass:\"elevation-1 pb-2 login-form-container\"},[_c('v-card-title',[_c('div',{staticClass:\"l10n title\"},[_vm._v(_vm._s(_vm.$t('signin.azuread.prompt', 'Sign in with your organizational account')))])]),_c('v-card-actions',[_c('v-btn',{staticStyle:{\"margin-left\":\"6px\"},attrs:{\"dark\":\"\",\"color\":\"accent\",\"disabled\":_vm.signingInWithPassword,\"loading\":_vm.signingInWithAzureAd},on:{\"click\":function($event){$event.stopPropagation();return _vm.onAzureAdSignInClick($event)}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('signin.azuread.button.label', 'Sign in with Microsoft 365'))}})])],1)],1),_c('v-container',[_c('v-layout',{attrs:{\"align-center\":\"\",\"justify-center\":\"\"}},[(_vm.$i18n.locale() !== 'en')?_c('v-btn',{staticStyle:{\"text-transform\":\"none\"},attrs:{\"flat\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.setLocale('en')}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$tlang('en', 'meta.in_this_language', 'In English'))}})]):_vm._e(),(_vm.$i18n.locale() !== 'fi')?_c('v-btn',{staticStyle:{\"text-transform\":\"none\"},attrs:{\"flat\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.setLocale('fi')}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$tlang('fi', 'meta.in_this_language', 'Suomeksi'))}})]):_vm._e()],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Routes from '@/Routes';\r\nimport { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport AppEvents from '@/AppEvents';\r\nimport { RouteConfig } from 'vue-router';\r\nimport User from '@/models/User';\r\nimport IApiError from '@/models/IApiError';\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class SignInPage extends Vue {\r\n signingInWithPassword: boolean = false;\r\n signingInWithAzureAd: boolean = false;\r\n passwordVisible: boolean = false;\r\n apiErrors: IApiError[] = [];\r\n model: any = {\r\n username: '',\r\n password: ''\r\n }\r\n\r\n $tlang: any;\r\n\r\n setLocale(locale){\r\n this.$store.dispatch(\"app/setLocale\", locale);\r\n }\r\n\r\n get forgotPasswordRoute(): RouteConfig {\r\n return Routes.forgotPasswordRoute;\r\n }\r\n\r\n get isAuthenticated() {\r\n return this.$store.getters[\"auth/isAuthenticated\"];\r\n }\r\n \r\n async onSignInClick() {\r\n this.apiErrors = [];\r\n this.signingInWithPassword = true;\r\n \r\n try {\r\n const loginResult = await this.$store.dispatch(\r\n 'auth/authRequest', \r\n {username: this.model.username, password: this.model.password}\r\n );\r\n await this.onLoginSuccess();\r\n } catch (e) {\r\n this.apiErrors = AppEvents.getApiErrorsFromError(e);\r\n console.error(\"loginError\", e);\r\n }\r\n this.signingInWithPassword = false;\r\n }\r\n\r\n async onAzureAdSignInClick() {\r\n this.signingInWithAzureAd = true;\r\n const routeOptions = { name: Routes.signInAzureAdRoute.name, query: this.$route.query };\r\n const route = this.$router.resolve(routeOptions);\r\n const callbackUrl = new URL(route.href, window.location.href).href;\r\n console.log(callbackUrl);\r\n\r\n const backendAzureAdLoginUrl = [\r\n process.env.VUE_APP_API_HOST,\r\n \"/ExternalAuth/AzureAdSignIn\",\r\n \"?callbackUrl=\",\r\n encodeURIComponent(callbackUrl),\r\n ]\r\n .concat(\r\n this.isValidEmail(this.model.username)\r\n ? [\r\n \"&loginHint=\",\r\n encodeURIComponent(this.model.username)\r\n ]\r\n : []\r\n ).join(\"\");\r\n \r\n console.log(backendAzureAdLoginUrl);\r\n document.location.href = backendAzureAdLoginUrl;\r\n // No need to set signingInWithAzureAd to false, the entire page will now load with another URL\r\n }\r\n\r\n isValidEmail(email: string): boolean {\r\n return /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{1,16})+$/.test(email); \r\n }\r\n\r\n async onLoginSuccess(){\r\n await this.$store.dispatch('user/getMe');\r\n const me: User = (this.$store.state as any).user.me as User;\r\n this.$root.$emit(AppEvents.APP_LOGIN_SUCCESS);\r\n \r\n // check if user has organization access\r\n if (me.organizationIds && me.organizationIds.length > 0) {\r\n this.$router.push({\r\n name: Routes.organizationRoute.name,\r\n params: {\r\n organizationId: me.organizationIds[0],\r\n },\r\n });\r\n } else {\r\n if (this.$route.query && this.$route.query.redirect){\r\n this.$router.push(this.$route.query.redirect.toString());\r\n } else {\r\n this.$router.push(Routes.rootRoute);\r\n }\r\n }\r\n }\r\n};\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SignInPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SignInPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SignInPage.vue?vue&type=template&id=62ac1f40&scoped=true&\"\nimport script from \"./SignInPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./SignInPage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SignInPage.vue?vue&type=style&index=0&id=62ac1f40&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"62ac1f40\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"dark\",attrs:{\"fluid\":\"\",\"fill-height\":\"\"}},[_c('v-layout',{attrs:{\"align-center\":\"\",\"justify-center\":\"\"}},[_c('v-flex',{staticClass:\"main-content-column\",attrs:{\"xs12\":\"\",\"sm8\":\"\",\"md6\":\"\",\"lg4\":\"\"}},[(!_vm.apiErrors.length)?[_c('v-container',{staticStyle:{\"text-align\":\"center\"}},[_c('div',{staticClass:\"l10n title\"},[_vm._v(\" \"+_vm._s(_vm.$t('signin.azuread.title', 'Signing in ...'))+\" \")]),_c('v-progress-circular',{staticClass:\"mt-4\",attrs:{\"indeterminate\":\"\"}})],1)]:[_c('v-card',[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.$t('signin.azuread.errors.login_error_title', 'Login error'))+\" \")]),_c('v-alert',{attrs:{\"value\":_vm.apiErrors.length,\"color\":\"error\",\"icon\":\"warning\"}},_vm._l((_vm.apiErrors),function(error){return _c('div',{key:error.code},[_vm._v(\" \"+_vm._s(error.code.includes(\"NO_L10N\") ? error.message : _vm.$t(\"api.errors.\" + error.code, error.message))+\" \")])}),0),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{staticClass:\"primary\",attrs:{\"to\":_vm.signInRoute}},[_vm._v(\" \"+_vm._s(_vm.$t('generic.back', 'Back'))+\" \")])],1)],1)]],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Routes from '@/Routes';\r\nimport { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport AppEvents from '@/AppEvents';\r\nimport { RouteConfig } from 'vue-router';\r\nimport User from '@/models/User';\r\nimport { ModelStateError } from '@/services/BaseService';\r\nimport IApiError from '@/models/IApiError';\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class SignInAzureAdPage extends Vue {\r\n signingInWithAzureAd: boolean = false;\r\n apiErrors: IApiError[] = [];\r\n\r\n setLocale(locale){\r\n this.$store.dispatch(\"app/setLocale\", locale);\r\n }\r\n\r\n get signInRoute(): RouteConfig {\r\n return Routes.signInRoute;\r\n }\r\n\r\n get isAuthenticated() {\r\n return this.$store.getters[\"auth/isAuthenticated\"];\r\n }\r\n \r\n async onLoginSuccess(){\r\n await this.$store.dispatch('user/getMe');\r\n const me: User = (this.$store.state as any).user.me as User;\r\n this.$root.$emit(AppEvents.APP_LOGIN_SUCCESS);\r\n \r\n // check if user has organization access\r\n if (me.organizationIds && me.organizationIds.length > 0) {\r\n this.$router.push({\r\n name: Routes.organizationRoute.name,\r\n params: {\r\n organizationId: me.organizationIds[0],\r\n },\r\n });\r\n } else {\r\n if (this.$route.query && this.$route.query.redirect){\r\n this.$router.push(this.$route.query.redirect.toString());\r\n } else {\r\n this.$router.push(Routes.rootRoute);\r\n }\r\n }\r\n }\r\n\r\n async created(){\r\n if (this.isAuthenticated) {\r\n this.$router.push(Routes.rootRoute);\r\n }\r\n\r\n if (!this.isAuthenticated) {\r\n this.signingInWithAzureAd = true;\r\n try {\r\n const loginResult = await this.$store.dispatch(\r\n 'auth/azureAdSignInOrSignUp'\r\n );\r\n } catch (e) {\r\n this.apiErrors = AppEvents.getApiErrorsFromError(e);\r\n console.error(\"loginError\", e);\r\n }\r\n if (this.isAuthenticated) {\r\n await this.onLoginSuccess();\r\n this.signingInWithAzureAd = false;\r\n } else {\r\n console.error(\"Something went wrong with the Microsoft 365 login\");\r\n }\r\n }\r\n }\r\n};\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SignInAzureAdPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SignInAzureAdPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SignInAzureAdPage.vue?vue&type=template&id=19d053b6&scoped=true&\"\nimport script from \"./SignInAzureAdPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./SignInAzureAdPage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SignInAzureAdPage.vue?vue&type=style&index=0&id=19d053b6&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"19d053b6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"dark\",attrs:{\"fluid\":\"\",\"fill-height\":\"\"}},[_c('v-layout',{attrs:{\"align-center\":\"\",\"justify-center\":\"\"}},[_c('v-flex',{staticClass:\"main-content-column\",attrs:{\"xs12\":\"\",\"sm8\":\"\",\"md6\":\"\",\"lg4\":\"\"}},[_c('v-alert',{attrs:{\"value\":_vm.apiErrors.length,\"color\":\"error\",\"icon\":\"warning\"}},_vm._l((_vm.apiErrors),function(error){return _c('div',{key:error.code},[_vm._v(\" \"+_vm._s(error.code.includes(\"NO_L10N\") ? error.message : _vm.$t(\"api.errors.\" + error.code, error.message))+\" \")])}),0),_c('v-form',{staticClass:\"forgot-password-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.onSendRecoveryEmailClick()}}},[(!_vm.recoveryEmailSent)?_c('v-card',{staticClass:\"elevation-1 pa-3 login-form-container\"},[_c('v-card-title',[_c('span',{staticClass:\"l10n title\",domProps:{\"innerHTML\":_vm._s(_vm.$t('forgotPassword.title', 'Forgot password?'))}})]),_c('v-card-text',[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('forgotPassword.instructions', 'Enter your username or email address, and we\\'ll send you a recovery email with instruction on how to reset your password.'))}}),_c('v-text-field',{attrs:{\"append-icon\":\"person\",\"label\":_vm.$t('forgotPassword.field.email.label', 'Email'),\"type\":\"text\",\"rules\":[_vm.rules.email, _vm.rules.required],\"persistent-hint\":\"\",\"autocomplete\":\"email\"},model:{value:(_vm.model.email),callback:function ($$v) {_vm.$set(_vm.model, \"email\", $$v)},expression:\"model.email\"}})],1),_c('v-card-actions',[_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"accent\",\"loading\":_vm.loading,\"type\":\"submit\"}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('forgotPassword.sendRecoveryEmail.button.label', 'Send recovery email'))}})])],1)],1):_vm._e()],1),(_vm.recoveryEmailSent)?_c('v-card',{staticClass:\"elevation-1 pa-3 login-form-container\"},[_c('v-card-title',[_c('span',{staticClass:\"l10n title\",domProps:{\"innerHTML\":_vm._s(_vm.$t('forgotPassword.sent-title', 'Email sent'))}})]),_c('v-card-text',[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('forgotPassword.sent-message', 'A message with recovery instructions has been sent to your email address.'))}})])],1):_vm._e(),_c('v-container',[_c('v-layout',{attrs:{\"align-center\":\"\",\"justify-center\":\"\"}},[(_vm.$i18n.locale() !== 'en')?_c('v-btn',{staticStyle:{\"text-transform\":\"none\"},attrs:{\"flat\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.setLocale('en')}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$tlang('en', 'meta.in_this_language', 'In English'))}})]):_vm._e(),(_vm.$i18n.locale() !== 'fi')?_c('v-btn',{staticStyle:{\"text-transform\":\"none\"},attrs:{\"flat\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.setLocale('fi')}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$tlang('fi', 'meta.in_this_language', 'Suomeksi'))}})]):_vm._e()],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Routes from '@/Routes';\r\nimport { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport AppEvents from '@/AppEvents';\r\nimport IApiError from '@/models/IApiError';\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class ForgotPasswordPage extends Vue {\r\n loading: boolean = false\r\n apiErrors: IApiError[] = [];\r\n model: any = {\r\n email: '',\r\n }\r\n rules: any = {\r\n required: value => !!value \r\n || this.$i18n.translate(\"validation.rules.required\", \"Required\"),\r\n email: v => /.+@.+/.test(v) \r\n || this.$i18n.translate(\"validation.rules.email\", \"Must be a valid E-Mail address\"),\r\n }\r\n recoveryEmailSent: boolean = false;\r\n $t: any;\r\n $tlang: any;\r\n\r\n setLocale(locale){\r\n this.$store.dispatch(\"app/setLocale\", locale);\r\n }\r\n \r\n async onSendRecoveryEmailClick() {\r\n this.apiErrors = [];\r\n this.loading = true;\r\n try {\r\n await this.$store.dispatch(\r\n 'user/sendRecoveryEmail', \r\n {\r\n data: this.model\r\n }\r\n );\r\n } catch (e) {\r\n this.apiErrors = AppEvents.getApiErrorsFromError(e);\r\n this.loading = false;\r\n return;\r\n }\r\n this.recoveryEmailSent = true;\r\n this.loading = false;\r\n }\r\n};\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ForgotPasswordPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ForgotPasswordPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ForgotPasswordPage.vue?vue&type=template&id=631be115&scoped=true&\"\nimport script from \"./ForgotPasswordPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./ForgotPasswordPage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ForgotPasswordPage.vue?vue&type=style&index=0&id=631be115&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"631be115\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"dark\",attrs:{\"fluid\":\"\",\"fill-height\":\"\"}},[_c('v-layout',{attrs:{\"align-center\":\"\",\"justify-center\":\"\"}},[(!_vm.validatingEmailAndCode)?_c('v-flex',{staticClass:\"main-content-column\",attrs:{\"xs12\":\"\",\"sm8\":\"\",\"md6\":\"\",\"lg4\":\"\"}},[_c('v-alert',{attrs:{\"value\":_vm.resetPasswordApiErrors.length,\"color\":\"error\",\"icon\":\"warning\"}},_vm._l((_vm.resetPasswordApiErrors),function(error){return _c('div',{key:error.code},[_vm._v(\" \"+_vm._s(error.code.includes(\"NO_L10N\") ? error.message : _vm.$t(\"api.errors.\" + error.code, error.message))+\" \")])}),0),_c('v-alert',{attrs:{\"value\":_vm.signinErrorMessage,\"color\":\"error\",\"icon\":\"warning\"}},[(_vm.signinErrorMessage)?[_vm._v(\" \"+_vm._s(_vm.$t(\"signin.error.\" + _vm.signinErrorMessage, _vm.signinErrorMessage))+\" \")]:_vm._e()],2),(!_vm.newPasswordSaved)?_c('v-card',{staticClass:\"elevation-1 pa-3 login-form-container\"},[_c('v-card-title',[(_vm.requireExternalAuthTenantLogin)?_c('span',{staticClass:\"l10n title\",domProps:{\"innerHTML\":_vm._s(_vm.$t('signin.azuread.prompt', 'Sign in with your organizational account'))}}):_c('span',{staticClass:\"l10n title\",domProps:{\"innerHTML\":_vm._s(_vm.$t('resetPassword.title', 'Choose a new password'))}})]),_c('v-card-text',[_c('v-form',{ref:\"resetPasswordForm\",staticClass:\"login-form\"},[_c('v-text-field',{attrs:{\"append-icon\":\"person\",\"label\":_vm.$t('resetPassword.field.email.label', 'Email'),\"type\":\"text\",\"rules\":[_vm.rules.email, _vm.rules.required],\"persistent-hint\":\"\",\"autocomplete\":\"email\",\"disabled\":_vm.emailInputDisabled},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onSaveNewPasswordClick($event)}},model:{value:(_vm.model.email),callback:function ($$v) {_vm.$set(_vm.model, \"email\", $$v)},expression:\"model.email\"}}),(!_vm.requireExternalAuthTenantLogin)?_c('v-text-field',{attrs:{\"append-icon\":_vm.passwordVisible ? 'visibility' : 'visibility_off',\"type\":_vm.passwordVisible ? 'text' : 'password',\"label\":_vm.$t('resetPassword.field.password.label', 'Password'),\"rules\":[_vm.rules.passwordLength, _vm.rules.passwordContainsUppercase, _vm.rules.passwordContainsLowercase, _vm.rules.passwordContainsNumber],\"value\":\"\",\"autocomplete\":\"new-password\",\"persistent-hint\":\"\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onSaveNewPasswordClick($event)},\"click:append\":function($event){_vm.passwordVisible = !_vm.passwordVisible}},model:{value:(_vm.model.password),callback:function ($$v) {_vm.$set(_vm.model, \"password\", $$v)},expression:\"model.password\"}}):_vm._e(),(!_vm.requireExternalAuthTenantLogin)?_c('v-text-field',{attrs:{\"append-icon\":_vm.passwordVisible ? 'visibility' : 'visibility_off',\"type\":_vm.passwordVisible ? 'text' : 'password',\"label\":_vm.$t('resetPassword.field.password-confirmation.label', 'Confirm password'),\"rules\":[_vm.rules.confirmPassword],\"value\":\"\",\"autocomplete\":\"new-password\",\"persistent-hint\":\"\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onSaveNewPasswordClick($event)},\"click:append\":function($event){_vm.passwordVisible = !_vm.passwordVisible}},model:{value:(_vm.model.confirmPassword),callback:function ($$v) {_vm.$set(_vm.model, \"confirmPassword\", $$v)},expression:\"model.confirmPassword\"}}):_vm._e()],1)],1),_c('v-card-actions',[(_vm.requireExternalAuthTenantLogin)?_c('v-btn',{staticStyle:{\"margin-left\":\"6px\"},attrs:{\"dark\":\"\",\"color\":\"accent\",\"disabled\":_vm.loading},on:{\"click\":function($event){$event.stopPropagation();return _vm.onAzureAdSignInClick($event)}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('signin.azuread.button.label', 'Sign in with Microsoft 365'))}})]):_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"accent\",\"loading\":_vm.loading},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSaveNewPasswordClick($event)}}},[_c('span',{staticClass:\"l10n\"},[_vm._v(\" \"+_vm._s(_vm.$t('resetPassword.saveNewPassword.button.label', 'Save'))+\" \")])])],1)],1):_vm._e(),(_vm.newPasswordSaved)?_c('v-card',{staticClass:\"elevation-1 pa-3 login-form-container\"},[_c('v-card-title',[_c('span',{staticClass:\"l10n title\",domProps:{\"innerHTML\":_vm._s(_vm.$t('resetPassword.sent-title', 'Success'))}})]),_c('v-card-text',[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('resetPassword.sent-message', 'Password set. '))}})]),_c('v-card-actions',[_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"accent\",\"loading\":_vm.loading},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSignInClick($event)}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('generic.sign_in', 'Sign in'))}})])],1)],1):_vm._e(),_c('v-container',[_c('v-layout',{attrs:{\"align-center\":\"\",\"justify-center\":\"\"}},[(_vm.$i18n.locale() !== 'en')?_c('v-btn',{staticStyle:{\"text-transform\":\"none\"},attrs:{\"flat\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.setLocale('en')}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$tlang('en', 'meta.in_this_language', 'In English'))}})]):_vm._e(),(_vm.$i18n.locale() !== 'fi')?_c('v-btn',{staticStyle:{\"text-transform\":\"none\"},attrs:{\"flat\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.setLocale('fi')}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$tlang('fi', 'meta.in_this_language', 'Suomeksi'))}})]):_vm._e()],1)],1)],1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Routes from '@/Routes';\r\nimport { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport AppEvents from '@/AppEvents';\r\nimport IApiError from '@/models/IApiError';\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class ResetPasswordPage extends Vue {\r\n loading: boolean = false;\r\n passwordVisible: boolean = false;\r\n emailInputDisabled: boolean = false;\r\n resetPasswordApiErrors: IApiError[] = [];\r\n get requireExternalAuthTenantLogin(): boolean {\r\n return this.resetPasswordApiErrors.some(apiError => apiError.code.includes(\"email_domain_reserved_for_authtenant\"));\r\n }\r\n\r\n signinErrorMessage: string = null;\r\n model: any = {\r\n email: '',\r\n password: '',\r\n confirmPassword: '',\r\n code: ''\r\n }\r\n validatingEmailAndCode: boolean = false;\r\n newPasswordSaved: boolean = false;\r\n\r\n $tlang: any;\r\n\r\n rules: any = {\r\n required: value => !!value \r\n || this.$i18n.translate(\"validation.rules.required\", \"Required\"),\r\n email: v => /.+@.+/.test(v) \r\n || this.$i18n.translate(\"validation.rules.email\", \"Must be a valid email address\"),\r\n passwordLength: v => v.length >= 8 \r\n || this.$i18n.translate(\r\n \"validation.rules.password\", \r\n \"Password must be at least 8 characters long\"\r\n ),\r\n passwordContainsUppercase: v => {\r\n return (\r\n /[A-Z]/.test(v) \r\n || this.$i18n.translate(\r\n \"validation.rules.passwordContainsUppercase\", \r\n \"Password must contain at least one uppercase character\"\r\n )\r\n )\r\n },\r\n passwordContainsLowercase: v => {\r\n return (\r\n /[a-z]/.test(v) \r\n || this.$i18n.translate(\r\n \"validation.rules.passwordContainsLowercase\", \r\n \"Password must contain at least one lowercase character\"\r\n )\r\n )\r\n },\r\n passwordContainsNumber: v => {\r\n return (\r\n /[0-9]/.test(v) \r\n || this.$i18n.translate(\r\n \"validation.rules.passwordContainsNumber\", \r\n \"Password must contain at least one number\"\r\n )\r\n )\r\n },\r\n confirmPassword: v => {\r\n return (\r\n this.model.password === this.model.confirmPassword \r\n || this.$i18n.translate(\"validation.rules.confirmPassword\", \"Passwords do not match\")\r\n );\r\n }\r\n }\r\n\r\n setLocale(locale){\r\n this.$store.dispatch(\"app/setLocale\", locale);\r\n }\r\n\r\n isValidEmail(email: string): boolean {\r\n return /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{1,16})+$/.test(email); \r\n }\r\n\r\n async created(){\r\n this.model.email = this.$route.query.email;\r\n this.model.code = this.$route.query.code;\r\n\r\n if (this.model.email && this.model.code){\r\n this.validatingEmailAndCode = true;\r\n if(this.isValidEmail(this.model.email)){\r\n this.emailInputDisabled = true;\r\n }\r\n try {\r\n await this.$store.dispatch(\r\n 'user/validateResetPasswordCode', \r\n { \r\n data: {\r\n email: this.model.email,\r\n code: this.model.code\r\n }\r\n }\r\n );\r\n } catch (e) {\r\n this.resetPasswordApiErrors = AppEvents.getApiErrorsFromError(e);\r\n this.loading = false;\r\n }\r\n this.validatingEmailAndCode = false;\r\n }\r\n }\r\n\r\n \r\n async onSaveNewPasswordClick() {\r\n // if (!((this.$refs.resetPasswordForm as any).validate())) {\r\n // return;\r\n // }\r\n this.resetPasswordApiErrors = [];\r\n this.newPasswordSaved = false;\r\n this.loading = true;\r\n try {\r\n await this.$store.dispatch(\r\n 'user/resetPassword', \r\n { \r\n data: this.model \r\n }\r\n );\r\n } catch (e) {\r\n this.resetPasswordApiErrors = AppEvents.getApiErrorsFromError(e);\r\n this.loading = false;\r\n return;\r\n }\r\n this.newPasswordSaved = true;\r\n this.loading = false;\r\n }\r\n\r\n async onSignInClick() {\r\n this.signinErrorMessage = null;\r\n this.loading = true;\r\n try {\r\n const loginResult = await this.$store.dispatch(\r\n 'auth/authRequest', \r\n {username: this.model.email, password: this.model.password}\r\n );\r\n } catch (e) {\r\n this.signinErrorMessage = e.toString();\r\n console.error(\"loginError\", e);\r\n this.loading = false;\r\n return;\r\n }\r\n this.$root.$emit(AppEvents.APP_LOGIN_SUCCESS);\r\n this.loading = false;\r\n // \r\n if (this.$route.query && this.$route.query.redirect){\r\n this.$router.push(this.$route.query.redirect.toString());\r\n } else {\r\n this.$router.push(Routes.rootRoute);\r\n }\r\n }\r\n\r\n async onAzureAdSignInClick() {\r\n const routeOptions = { name: Routes.signInAzureAdRoute.name, query: this.$route.query };\r\n const route = this.$router.resolve(routeOptions);\r\n const callbackUrl = new URL(route.href, window.location.href).href;\r\n console.log(callbackUrl);\r\n\r\n const backendAzureAdLoginUrl = [\r\n process.env.VUE_APP_API_HOST,\r\n \"/ExternalAuth/AzureAdSignIn\",\r\n \"?callbackUrl=\",\r\n encodeURIComponent(callbackUrl),\r\n \"&loginHint=\",\r\n encodeURIComponent(this.model.email)\r\n ].join(\"\");\r\n \r\n console.log(backendAzureAdLoginUrl);\r\n document.location.href = backendAzureAdLoginUrl;\r\n }\r\n};\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ResetPasswordPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ResetPasswordPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ResetPasswordPage.vue?vue&type=template&id=6e8f1ba0&scoped=true&\"\nimport script from \"./ResetPasswordPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./ResetPasswordPage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ResetPasswordPage.vue?vue&type=style&index=0&id=6e8f1ba0&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6e8f1ba0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"contact-support dark\",attrs:{\"fluid\":\"\",\"fill-height\":\"\"}},[_c('v-layout',{attrs:{\"align-center\":\"\",\"justify-center\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm8\":\"\",\"md6\":\"\",\"lg4\":\"\"}},[_c('v-alert',{attrs:{\"value\":_vm.errorMessage,\"color\":\"error\",\"icon\":\"warning\"}},[_vm._v(\" \"+_vm._s(_vm.errorMessage)+\" \")]),(!_vm.supportRequestSent)?_c('v-card',{staticClass:\"elevation-1 pa-3 contact-support-form-container\"},[_c('v-card-title',[_c('div',[_c('span',{staticClass:\"l10n title\",domProps:{\"innerHTML\":_vm._s(_vm.$t('contactSupport.title', 'Contact support'))}})])]),_c('v-card-text',[(_vm.selectedDestination)?_c('div',{staticClass:\"selected-destination\"},[_c('div',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.selectedDestination.alias))]),_c('div',{staticClass:\"category\"},[_vm._v(_vm._s(_vm.selectedDestination.movitInstanceName))])]):_vm._e(),_c('v-form',{staticClass:\"contact-support-form\"},[_c('v-textarea',{attrs:{\"label\":_vm.$t('contactSupport.field.message.label', 'Message'),\"type\":\"text\",\"persistent-hint\":\"\",\"auto-grow\":\"\",\"outline\":\"\",\"rows\":3},model:{value:(_vm.model.message),callback:function ($$v) {_vm.$set(_vm.model, \"message\", $$v)},expression:\"model.message\"}})],1)],1),_c('v-card-actions',[_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"orange\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onBackClick($event)}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('generic.back', 'Back'))}})]),_c('v-spacer'),_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"accent\",\"loading\":_vm.loading},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSendClick($event)}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('contactSupport.send.button.label', 'Send'))}})])],1)],1):_vm._e(),(_vm.supportRequestSent)?_c('v-card',{staticClass:\"elevation-1 pa-3 login-form-container\"},[_c('v-card-title',[_c('span',{staticClass:\"l10n title\",domProps:{\"innerHTML\":_vm._s(_vm.$t('contactSupport.sent-title', 'Message sent'))}})]),_c('v-card-text',[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('contactSupport.sent-message', 'Thank you for your message. We will look into the issue as soon as possible.'))}})]),_c('v-card-actions',[_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"accent\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onBackClick($event)}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('generic.back', 'Back'))}})])],1)],1):_vm._e(),_c('v-container',[_c('v-layout',{attrs:{\"align-center\":\"\",\"justify-center\":\"\"}},[(_vm.$i18n.locale() !== 'en')?_c('v-btn',{staticStyle:{\"text-transform\":\"none\"},attrs:{\"flat\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.setLocale('en')}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$tlang('en', 'meta.in_this_language', 'In English'))}})]):_vm._e(),(_vm.$i18n.locale() !== 'fi')?_c('v-btn',{staticStyle:{\"text-transform\":\"none\"},attrs:{\"flat\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.setLocale('fi')}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$tlang('fi', 'meta.in_this_language', 'Suomeksi'))}})]):_vm._e()],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Routes from '@/Routes';\r\nimport { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport AppEvents from '@/AppEvents';\r\nimport { Destination } from '@/components/Passenger/models/Destination';\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class ContactSupportPage extends Vue {\r\n loading: boolean = false;\r\n errorMessage: string = null;\r\n model: any = {\r\n message: '',\r\n version: this.$store.state.app.version.toString(),\r\n locale: this.$store.state.app.locale,\r\n destinationId: this.routeDestinationId,\r\n url: \"\",\r\n }\r\n supportRequestSent: boolean = false;\r\n\r\n $tlang: any;\r\n\r\n get destinations(): Destination[] {\r\n return this.$store.state.destination.destinations;\r\n }\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n get selectedDestinationId(): number {\r\n return this.routeDestinationId;\r\n }\r\n\r\n get selectedDestination(): Destination {\r\n return this.destinations.find(d => d.id === this.routeDestinationId);\r\n }\r\n\r\n setLocale(locale){\r\n this.$store.dispatch(\"app/setLocale\", locale);\r\n }\r\n\r\n onBackClick() {\r\n this.$router.back();\r\n }\r\n \r\n async onSendClick() {\r\n this.errorMessage = null;\r\n this.loading = true;\r\n this.model.url = document.location.href;\r\n try {\r\n await this.$store.dispatch(\r\n 'user/sendSupportRequest', \r\n { \r\n data: this.model \r\n }\r\n );\r\n } catch (e) {\r\n const message = (e as any).response && (e as any).response.data ? (e as any).response.data : e;\r\n this.errorMessage = this.$i18n.translate(\"contactSupport.error.\" + message.toString(), message.toString());\r\n console.error(\"contactSupport error\", e);\r\n this.loading = false;\r\n return;\r\n }\r\n this.supportRequestSent = true;\r\n this.loading = false;\r\n }\r\n};\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactSupportPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactSupportPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContactSupportPage.vue?vue&type=template&id=02338ff5&scoped=true&\"\nimport script from \"./ContactSupportPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContactSupportPage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ContactSupportPage.vue?vue&type=style&index=0&id=02338ff5&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"02338ff5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.noDestinationsError)?_c('router-view'):_c('v-alert',{attrs:{\"value\":_vm.noDestinationsError,\"color\":\"error\",\"icon\":\"warning\"}},[_vm._v(\" \"+_vm._s(_vm.$t('arrivals_departures.no_destinations_found', 'No destinations found. Please contact an admin to add destinations for your organization.'))+\" \")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport { RouterOptions, RouteConfig } from 'vue-router';\r\nimport Routes from '@/Routes';\r\nimport { Destination } from '@/components/Passenger/models/Destination';\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class DestinationPage extends Vue {\r\n\r\n noDestinationsError: boolean = false;\r\n\r\n get routeName(){\r\n return this.$route.name\r\n }\r\n\r\n get me() {\r\n return this.$store.state.user.me;\r\n }\r\n\r\n get destinations(): Destination[] {\r\n return this.$store.state.destination.destinations;\r\n }\r\n\r\n get isAuthenticated() {\r\n return this.$store.getters['auth/isAuthenticated'];\r\n } \r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n \r\n get navigationRoutes(): any[] {\r\n const topLevelRoutes = (this.$router as any).options.routes;\r\n const childRoutesArr: any[] = topLevelRoutes.map(r => r.children).filter(r => r);\r\n const childRoutes = [].concat(...childRoutesArr);\r\n const allRoutes = topLevelRoutes.concat(childRoutes);\r\n const navRoutes = allRoutes.filter(r => r.meta && r.meta.nav && (r.meta.guest || this.isAuthenticated));\r\n return navRoutes;\r\n }\r\n\r\n get allowedNavigationRoutes(): any[] {\r\n return this.me \r\n ? this.navigationRoutes.filter(r => \r\n !r.meta \r\n || (r.meta \r\n && r.meta.requireDestinationPermissions\r\n && this.me.hasPermissions(this.routeDestinationId, r.meta.requireDestinationPermissions))\r\n )\r\n : []\r\n }\r\n\r\n async redirectToFirstNavigationRoute(alreadyRedirected: boolean = false){\r\n if (this.allowedNavigationRoutes[0]){\r\n if (this.$route.name === Routes.destinationRoute.name){\r\n this.$router.replace(\r\n {\r\n name: this.allowedNavigationRoutes[0].name\r\n }\r\n );\r\n }\r\n } else {\r\n if (this.routeDestinationId === 0 && this.destinations.length > 0 && !alreadyRedirected){\r\n\r\n // console.log(\"WARN\", \"DestinationPage\", \"redirectToFirstNavigationRoute\", \r\n // \"this.routeDestinationId is 0, need to redirect ...\");\r\n\r\n const firstDestinationId = this.destinations[0].id;\r\n\r\n // console.log(\"WARN\", \"DestinationPage\", \"redirectToFirstNavigationRoute\", \r\n // \"Redirecting to first destination, with id \", firstDestinationId);\r\n\r\n await this.$router.replace({\r\n name: Routes.destinationRoute.name,\r\n params: { \r\n destinationId: firstDestinationId.toString(),\r\n }\r\n });\r\n\r\n await this.redirectToFirstNavigationRoute(true);\r\n\r\n } else {\r\n if (this.destinations.length === 0) {\r\n this.noDestinationsError = true;\r\n console.error(\"No destinations available\");\r\n }\r\n }\r\n }\r\n }\r\n\r\n created(){\r\n this.redirectToFirstNavigationRoute(); \r\n }\r\n\r\n @Watch('routeName', { immediate: false })\r\n onRouteNameChanged(val, newVal){\r\n this.redirectToFirstNavigationRoute(); \r\n }\r\n\r\n};\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DestinationPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DestinationPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DestinationPage.vue?vue&type=template&id=3fcd0416&\"\nimport script from \"./DestinationPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./DestinationPage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-editor\"},[_c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\" \"+_vm._s(_vm.$t('passenger.prop.transportationPermissions.label', 'Transportation permissions'))+\" \")])]),_c('v-card-text',[_c('v-layout',{attrs:{\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"sm12\":\"\",\"md12\":\"\"}},[_c('v-tabs',{staticClass:\"timetable-state-tabs my-4\",attrs:{\"show-arrows\":\"\",\"active-class\":\"\",\"grow\":true},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tab',[_vm._v(_vm._s(_vm.$t('generic.all', 'All')))]),_c('v-tab',[_vm._v(_vm._s(_vm.$t('generic.completed', 'Completed')))]),_c('v-tab',[_vm._v(_vm._s(_vm.$t('generic.drafts', 'Drafts')))]),_c('v-tab',[_vm._v(_vm._s(_vm.$t('generic.expired', 'Expired')))])],1),_c('v-tabs-items',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tab-item',[_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"xs2\":\"\",\"sm4\":\"\"}},[_c('v-switch',{attrs:{\"label\":_vm.$t('transportationPermission.showOnlyActivePermissions', 'Show only active permissions')},model:{value:(_vm.showOnlyActivePermissions),callback:function ($$v) {_vm.showOnlyActivePermissions=$$v},expression:\"showOnlyActivePermissions\"}})],1)],1),_c('passenger-transportation-permission-table',{attrs:{\"startDate\":_vm.startDate,\"endDate\":_vm.endDate,\"filterWithDates\":_vm.useDateFilter,\"permissions\":_vm.all},on:{\"startDateChanged\":_vm.setStartDate,\"endDateChanged\":_vm.setEndDate,\"filterWithDatesChanged\":_vm.dateFilterChanged,\"removePermission\":_vm.removePermission,\"updatePermissions\":_vm.updatePermissions}})],1),_c('v-tab-item',[_c('v-switch',{attrs:{\"label\":_vm.$t('transportationPermission.showOnlyActivePermissions', 'Show only active permissions')},model:{value:(_vm.showOnlyActivePermissions),callback:function ($$v) {_vm.showOnlyActivePermissions=$$v},expression:\"showOnlyActivePermissions\"}}),_c('passenger-transportation-permission-table',{attrs:{\"startDate\":_vm.startDate,\"endDate\":_vm.endDate,\"filterWithDates\":_vm.useDateFilter,\"permissions\":_vm.completedPermissions},on:{\"startDateChanged\":_vm.setStartDate,\"endDateChanged\":_vm.setEndDate,\"filterWithDatesChanged\":_vm.dateFilterChanged,\"removePermission\":_vm.removePermission,\"updatePermissions\":_vm.updatePermissions}})],1),_c('v-tab-item',[_c('passenger-transportation-permission-table',{attrs:{\"startDate\":_vm.startDate,\"endDate\":_vm.endDate,\"filterWithDates\":_vm.useDateFilter,\"permissions\":_vm.drafts},on:{\"startDateChanged\":_vm.setStartDate,\"endDateChanged\":_vm.setEndDate,\"filterWithDatesChanged\":_vm.dateFilterChanged,\"removePermission\":_vm.removePermission,\"updatePermissions\":_vm.updatePermissions}})],1),_c('v-tab-item',[_c('passenger-transportation-permission-table',{attrs:{\"startDate\":_vm.startDate,\"endDate\":_vm.endDate,\"filterWithDates\":_vm.useDateFilter,\"permissions\":_vm.expiredPermissions},on:{\"startDateChanged\":_vm.setStartDate,\"endDateChanged\":_vm.setEndDate,\"filterWithDatesChanged\":_vm.dateFilterChanged,\"removePermission\":_vm.removePermission,\"updatePermissions\":_vm.updatePermissions}})],1)],1)],1)],1)],1),_c('v-card-actions',[_c('v-spacer')],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {\nvar this$1 = this;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.selectedPermission)?_c('div',[_c('transportation-permission-editor',{attrs:{\"showTransportationPermissionEditor\":_vm.showTransportationPermissionEditor,\"passenger\":_vm.selectedPassenger},on:{\"updatePermission\":_vm.updatePermission,\"onDelete\":_vm.removePermission,\"close\":_vm.clearSelected},model:{value:(_vm.selectedPermission),callback:function ($$v) {_vm.selectedPermission=$$v},expression:\"selectedPermission\"}})],1):_vm._e(),_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-flex',{attrs:{\"xs4\":\"\"}},[_c('v-text-field',{attrs:{\"append-icon\":\"search\",\"label\":_vm.$t('generic.search', 'Search'),\"clearable\":\"\",\"single-line\":\"\",\"hide-details\":\"\",\"small\":\"\",\"dense\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('v-spacer'),_c('v-flex',{attrs:{\"shrink\":\"\"}},[_c('v-checkbox',{attrs:{\"label\":_vm.$t('transportationPermission.filterByDates'),\"title\":_vm.$t('passenger.prop.transportationPermissions.helperText', 'Filter transportation permission by end date. Example show all permission that end between 01.01.2022 - 31.12.2022.')},on:{\"change\":_vm.dateFilterSet},model:{value:(_vm.dateFilter),callback:function ($$v) {_vm.dateFilter=$$v},expression:\"dateFilter\"}})],1),_c('v-flex',{attrs:{\"shrink\":\"\",\"ml-5\":\"\"}},[_c('DateTimePicker',{attrs:{\"disabled\":!_vm.dateFilter,\"dateLabel\":_vm.$t('passenger.prop.transportationPermissions.startDate', 'Start date'),\"date\":_vm.start,\"max\":_vm.end,\"appendIcon\":true,\"allowWeekends\":true,\"datePickerTitle\":_vm.$t('passenger.prop.transportationPermissions.startDate', 'Start date')},on:{\"date-updated\":function (val) { return (this$1.$emit('startDateChanged', val)); }}})],1),_c('v-flex',{attrs:{\"shrink\":\"\",\"ml-2\":\"\"}},[_c('DateTimePicker',{attrs:{\"disabled\":!_vm.dateFilter,\"dateLabel\":_vm.$t('passenger.prop.transportationPermissions.endDate', 'End date'),\"date\":_vm.end,\"min\":_vm.start,\"allowWeekends\":true,\"appendIcon\":true,\"datePickerTitle\":_vm.$t('passenger.prop.transportationPermissions.endDate', 'End date')},on:{\"date-updated\":function (val) { return (this$1.$emit('endDateChanged', val)); }}})],1)],1),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.permissions,\"search\":_vm.search,\"pagination\":_vm.pagination,\"loading\":_vm.loading},on:{\"update:pagination\":function($event){_vm.pagination=$event}},scopedSlots:_vm._u([{key:\"items\",fn:function(props){return [_c('tr',{on:{\"click\":function($event){return _vm.openPassengerPermission(props.item)}}},[_c('td',[_c('span',{class:{ 'inactive' :props.item.passengerInactive }},[_vm._v(\" \"+_vm._s(props.item.name)+\" \")])]),_c('td',[(props.item.mainPlace)?_c('span',[_vm._v(\" \"+_vm._s(props.item.mainPlace.movitInstanceName)+\" \")]):_vm._e()]),_c('td',[(props.item.mainPlace)?_c('span',[_vm._v(\" \"+_vm._s(props.item.mainPlace.alias)+\" \")]):_c('span',[_vm._v(\" \"+_vm._s(_vm.$t('passenger.prop.noMain'))+\" \")])]),_c('td',[_vm._v(_vm._s(props.item.transportationPermission.name))]),_c('td',[_vm._v(_vm._s(_vm.$dateHelper.formatDateShort(props.item.transportationPermission.startDate)))]),_c('td',[_vm._v(_vm._s(_vm.$dateHelper.formatDateShort(props.item.transportationPermission.endDate)))]),_c('td',[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(props.item.transportationPermission.priceCode),expression:\"props.item.transportationPermission.priceCode\"}]},[_vm._v(\" \"+_vm._s(props.item.transportationPermission.priceCode)+\" € \")])]),_c('td',[_vm._v(\" \"+_vm._s(props.item.transportationPermission.costCenter.name)+\" \")]),_c('td',[(props.item.transportationPermission.isDraft)?_c('span',[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('span',_vm._g({},on),[_c('v-icon',[_vm._v(\"drafts\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t('transportationPermission.isDraft.label', 'Draft')))])])],1):(!props.item.isValid)?_c('span',[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('span',_vm._g({},on),[_c('v-icon',{attrs:{\"color\":\"red darken-2\"}},[_vm._v(\"clear\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t('transportationPermission.expired', 'Permission is expired')))])])],1):_c('span',[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('span',_vm._g({},on),[_c('v-icon',{attrs:{\"color\":\"green darken-2\"}},[_vm._v(\"check\")])],1)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.$t('transportationPermission.complete', 'Complete')))])])],1)])])]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"scrollable\":\"\",\"value\":_vm.showTransportationPermissionEditor},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.closeEditor($event)}}},[(_vm.transportationPermission)?_c('v-card',[_c('v-card-title',[(_vm.transportationPermission.id)?[_vm._v(\" \"+_vm._s(_vm.$t(\"transportationPermission.edit\", \"Edit Transportation Permission\"))+\" \")]:[_vm._v(\" \"+_vm._s(_vm.$t(\"transportationPermission.new\", \"New Transportation Permission\"))+\" \")]],2),_c('v-card-text',[_c('v-form',{model:{value:(_vm.permissionIsValid),callback:function ($$v) {_vm.permissionIsValid=$$v},expression:\"permissionIsValid\"}},[_c('v-layout',{attrs:{\"row\":\"\",\"pl-2\":\"\"}},[_c('v-flex',[_c('strong',[_vm._v(_vm._s(_vm.passenger.name))])])],1),(_vm.destination)?_c('v-layout',{attrs:{\"pl-2\":\"\"}},[_c('v-flex',[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.destination.alias),expression:\"destination.alias\"}]},[_vm._v(_vm._s(_vm.destination.alias))]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.destination.alias),expression:\"!destination.alias\"}]},[_vm._v(_vm._s(_vm.destination.address)+\", \"+_vm._s(_vm.destination.postalCode)+\" \"+_vm._s(_vm.destination.city))])])],1):_vm._e(),_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm12\":\"\",\"md8\":\"\"}},[_c('v-container',{attrs:{\"grid-list-lg\":\"\",\"fluid\":\"\",\"pa-2\":\"\"}},[_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[(_vm.isEspoo)?_c('v-flex',{attrs:{\"xs12\":\"\",\"sm8\":\"\"}},[_c('v-select',{attrs:{\"rules\":[_vm.rules.required],\"items\":_vm.passengerGroupPriceAreas,\"label\":_vm.$t('transportationPermission.name', 'Transportation permission name') + '*'},model:{value:(_vm.transportationPermission.name),callback:function ($$v) {_vm.$set(_vm.transportationPermission, \"name\", $$v)},expression:\"transportationPermission.name\"}})],1):_vm._e()],1),_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[(!_vm.isEspoo)?_c('v-flex',{attrs:{\"xs12\":\"\",\"sm4\":\"\"}},[_c('passenger-transportation-permission-name-input',{attrs:{\"rules\":[_vm.rules.required],\"organizationId\":_vm.passenger.organizationId},model:{value:(_vm.transportationPermission.name),callback:function ($$v) {_vm.$set(_vm.transportationPermission, \"name\", $$v)},expression:\"transportationPermission.name\"}},[_vm._v(\" >\")])],1):_vm._e(),_c('v-flex',{attrs:{\"xs4\":\"\",\"sm2\":\"\"}},[_c('v-text-field',{attrs:{\"type\":\"number\",\"rules\":[_vm.rules.required, _vm.rules.notNegativeValue],\"label\":_vm.$t('transportationPermission.quota', 'Transportation quota') + '*'},model:{value:(_vm.transportationPermission.initialQuota),callback:function ($$v) {_vm.$set(_vm.transportationPermission, \"initialQuota\", _vm._n($$v))},expression:\"transportationPermission.initialQuota\"}})],1),_c('v-flex',{attrs:{\"xs4\":\"\",\"sm2\":\"\"}},[_c('v-text-field',{attrs:{\"rules\":[ _vm.rules.notNegativeValue, _vm.rules.cannotExceedInitialQuota ],\"type\":\"number\",\"label\":_vm.$t('transportationPermission.expressQuota', 'Express quota'),\"disabled\":!_vm.newFeb2021FieldsSupported && !_vm.hasPassengerGroups,\"hint\":_vm.newFeb2021FieldsSupported\n ? ''\n : _vm.fieldNotSupportedInVersionNotificationText,\"persistent-hint\":!_vm.newFeb2021FieldsSupported},model:{value:(_vm.transportationPermission.initialExpressQuota),callback:function ($$v) {_vm.$set(_vm.transportationPermission, \"initialExpressQuota\", _vm._n($$v))},expression:\"transportationPermission.initialExpressQuota\"}},[_vm._v(\"> \")])],1),_c('v-flex',{attrs:{\"xs4\":\"\",\"sm4\":\"\"}},[_c('quota-time-select',{model:{value:(_vm.transportationPermission.quotaTime),callback:function ($$v) {_vm.$set(_vm.transportationPermission, \"quotaTime\", $$v)},expression:\"transportationPermission.quotaTime\"}})],1)],1),_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"xs6\":\"\",\"sm4\":\"\"}},[_c('DateTimePicker',{attrs:{\"dateLabel\":_vm.$t('transportationPermission.startDate', 'Starts from'),\"date\":_vm.transportationPermission.startDateYMD,\"appendIcon\":true,\"datePickerTitle\":_vm.$t('transportationPermission.startDate', 'Starts from')},on:{\"date-updated\":function (val) { return (_vm.transportationPermission.startDateYMD = val); }}})],1),_c('v-flex',{attrs:{\"xs6\":\"\",\"sm4\":\"\"}},[_c('DateTimePicker',{attrs:{\"dateLabel\":_vm.$t('transportationPermission.endDate', 'Valid through'),\"date\":_vm.transportationPermission.endDateYMD,\"min\":_vm.transportationPermission.startDateYMD,\"appendIcon\":true,\"datePickerTitle\":_vm.$t('transportationPermission.endDate', 'Valid through')},on:{\"date-updated\":function (val) { return (_vm.transportationPermission.endDateYMD = val); }}})],1),_c('v-flex',{attrs:{\"xs12\":\"\",\"sm4\":\"\"}},[_c('v-text-field',{attrs:{\"type\":\"number\",\"rules\":[_vm.rules.notNegativeValue],\"label\":_vm.$t('transportationPermission.distanceLimit', 'Distance limit'),\"suffix\":\"km\",\"disabled\":!_vm.newFeb2021FieldsSupported && !_vm.hasPassengerGroups,\"hint\":_vm.newFeb2021FieldsSupported\n ? ''\n : _vm.fieldNotSupportedInVersionNotificationText,\"persistent-hint\":!_vm.newFeb2021FieldsSupported},model:{value:(_vm.transportationPermission.distanceLimit),callback:function ($$v) {_vm.$set(_vm.transportationPermission, \"distanceLimit\", _vm._n($$v))},expression:\"transportationPermission.distanceLimit\"}})],1)],1),_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"xs4\":\"\"}},[_c('trip-destinations-select',{model:{value:(_vm.transportationPermission.tripDestinations),callback:function ($$v) {_vm.$set(_vm.transportationPermission, \"tripDestinations\", $$v)},expression:\"transportationPermission.tripDestinations\"}})],1),_c('v-flex',{attrs:{\"xs4\":\"\"}},[_c('trip-directions-select',{model:{value:(_vm.transportationPermission.tripDirection),callback:function ($$v) {_vm.$set(_vm.transportationPermission, \"tripDirection\", $$v)},expression:\"transportationPermission.tripDirection\"}})],1),_c('v-flex',{attrs:{\"xs4\":\"\"}},[_c('passenger-transportation-permission-cost-center-input',{attrs:{\"rules\":[_vm.rules.required],\"organizationId\":_vm.passenger.organizationId},model:{value:(_vm.transportationPermission.costCenter.name),callback:function ($$v) {_vm.$set(_vm.transportationPermission.costCenter, \"name\", $$v)},expression:\"transportationPermission.costCenter.name\"}})],1)],1),_c('v-textarea',{attrs:{\"box\":\"\",\"rows\":\"3\",\"auto-grow\":\"\",\"label\":_vm.$t('transportationPermission.note', 'Reason')},model:{value:(_vm.transportationPermission.note),callback:function ($$v) {_vm.$set(_vm.transportationPermission, \"note\", $$v)},expression:\"transportationPermission.note\"}}),_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[(_vm.showPriceCodeField)?_c('v-flex',{attrs:{\"xs6\":\"\",\"sm3\":\"\"}},[_c('v-text-field',{attrs:{\"label\":_vm.$t('transportationPermission.price', 'Price'),\"suffix\":\"€\"},model:{value:(_vm.transportationPermission.priceCode),callback:function ($$v) {_vm.$set(_vm.transportationPermission, \"priceCode\", $$v)},expression:\"transportationPermission.priceCode\"}})],1):_vm._e(),_c('v-flex',{attrs:{\"xs6\":\"\",\"sm3\":\"\"}},[_c('deductible-type-select',{attrs:{\"disabled\":!_vm.newFeb2021FieldsSupported && !_vm.hasPassengerGroups,\"hint\":_vm.newFeb2021FieldsSupported && !_vm.hasPassengerGroups? '': _vm.fieldNotSupportedInVersionNotificationText,\"persistentHint\":!_vm.newFeb2021FieldsSupported && !_vm.hasPassengerGroups},model:{value:(_vm.transportationPermission.deductibleType),callback:function ($$v) {_vm.$set(_vm.transportationPermission, \"deductibleType\", $$v)},expression:\"transportationPermission.deductibleType\"}})],1),(_vm.showFixedDeductibleField)?_c('v-flex',{attrs:{\"xs6\":\"\",\"sm3\":\"\"}},[_c('v-text-field',{attrs:{\"type\":\"number\",\"rules\":[_vm.rules.notNegativeValue],\"label\":_vm.$t('transportationPermission.fixedDeductible', 'Excess amount'),\"suffix\":\"€\",\"disabled\":!_vm.newFeb2021FieldsSupported && !_vm.hasPassengerGroups,\"hint\":_vm.newFeb2021FieldsSupported && !_vm.hasPassengerGroups\n ? ''\n : _vm.fieldNotSupportedInVersionNotificationText,\"persistent-hint\":!_vm.newFeb2021FieldsSupported && !_vm.hasPassengerGroups},model:{value:(_vm.transportationPermission.fixedDeductible),callback:function ($$v) {_vm.$set(_vm.transportationPermission, \"fixedDeductible\", _vm._n($$v))},expression:\"transportationPermission.fixedDeductible\"}})],1):_vm._e(),(_vm.showDeductiblePaymentOptions)?_c('v-flex',{attrs:{\"xs6\":\"\",\"sm3\":\"\"}},[_c('deductible-payment-select',{attrs:{\"disabled\":(!_vm.newFeb2021FieldsSupported && !_vm.hasPassengerGroups) || _vm.transportationPermission.deductibleType === _vm.DeductibleTypeEnum.FixedMonthly,\"hint\":_vm.newFeb2021FieldsSupported && !_vm.hasPassengerGroups ? '': _vm.fieldNotSupportedInVersionNotificationText,\"persistent-hint\":!_vm.newFeb2021FieldsSupported && !_vm.hasPassengerGroups},model:{value:(_vm.transportationPermission.deductiblePayment),callback:function ($$v) {_vm.$set(_vm.transportationPermission, \"deductiblePayment\", $$v)},expression:\"transportationPermission.deductiblePayment\"}})],1):_vm._e(),_c('v-flex',{attrs:{\"xs6\":\"\",\"sm3\":\"\"}},[_c('v-checkbox',{attrs:{\"label\":_vm.$t('transportationPermission.passengerIsChild.label', 'Passenger is a child'),\"disabled\":!_vm.newFeb2021FieldsSupported && !_vm.hasPassengerGroups,\"hint\":_vm.newFeb2021FieldsSupported && !_vm.hasPassengerGroups\n ? ''\n : _vm.fieldNotSupportedInVersionNotificationText,\"persistent-hint\":!_vm.newFeb2021FieldsSupported && !_vm.hasPassengerGroups},model:{value:(_vm.transportationPermission.child),callback:function ($$v) {_vm.$set(_vm.transportationPermission, \"child\", $$v)},expression:\"transportationPermission.child\"}})],1),_c('v-flex',{attrs:{\"xs6\":\"\",\"sm3\":\"\"}},[_c('v-checkbox',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.originalIsDraft || !_vm.transportationPermission.id),expression:\"originalIsDraft || !transportationPermission.id\"}],attrs:{\"label\":_vm.$t('transportationPermission.isDraft.label', 'Draft'),\"disabled\":!_vm.newFeb2021FieldsSupported && _vm.hasPassengerGroups,\"hint\":!_vm.passenger.movitId ? _vm.$t('transportationPermission.hint.passengerNotConfirmed', 'Passenger not confirmed in Movit') \n : _vm.newFeb2021FieldsSupported && !_vm.hasPassengerGroups\n ? '' \n : _vm.fieldNotSupportedInVersionNotificationText,\"persistent-hint\":!_vm.newFeb2021FieldsSupported && !_vm.hasPassengerGroups},model:{value:(_vm.transportationPermission.isDraft),callback:function ($$v) {_vm.$set(_vm.transportationPermission, \"isDraft\", $$v)},expression:\"transportationPermission.isDraft\"}})],1)],1)],1)],1),_c('v-flex',{attrs:{\"xs12\":\"\",\"sm12\":\"\",\"md4\":\"\"}},[_c('v-card',{staticClass:\"mx-2\"},[_c('v-card-title',[_c('h4',[_vm._v(\" \"+_vm._s(_vm.$t(\"transportationPermission.extrasAndBenefits\", \"Extras and benefits\"))+\" \")])]),_c('v-card-text',[_c('h5',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.transportationPermission.extras.length < 1),expression:\"transportationPermission.extras.length < 1\"}]},[_vm._v(\" \"+_vm._s(_vm.$t(\"transportationPermission.extras.noExtras\", \"No extras or benefits\"))+\" \")]),_c('v-list',[_vm._l((_vm.transportationPermission.extras),function(extra,index){return [_c('v-list-tile',{key:index},[_c('v-list-tile-content',[_c('v-list-tile-title',[_vm._v(\" \"+_vm._s(extra.name)+\" \"),(!extra.extraId)?[_vm._v(\"/ \"+_vm._s(extra.price)+\" €\")]:_vm._e()],2)],1),_c('v-list-tile-action',[_c('v-icon',{attrs:{\"color\":\"pink\"},on:{\"click\":function($event){return _vm.removeExtra(extra)}}},[_vm._v(\"delete\")])],1)],1),_c('v-divider',{key:'d' + index})]})],2),_c('v-btn',{attrs:{\"fab\":\"\",\"dark\":\"\",\"small\":\"\",\"color\":\"pink\"},on:{\"click\":function($event){_vm.adding = !_vm.adding}}},[(!_vm.adding)?_c('v-icon',{attrs:{\"dark\":\"\"}},[_vm._v(\"add\")]):_c('v-icon',{attrs:{\"dark\":\"\"}},[_vm._v(\"remove\")])],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.adding),expression:\"adding\"}]},[(_vm.instanceConfigHasExtras)?[_c('v-select',{attrs:{\"items\":_vm.availableInstanceConfigExtras,\"item-text\":\"name\",\"item-value\":\"id\",\"return-object\":\"\",\"no-data-text\":_vm.$t('transportationPermission.extra.add.all-selected', 'No Extras/Benefits available'),\"placeholder\":_vm.$t('transportationPermission.extra.add.placeholder', 'Choose Extra/Benefit')},model:{value:(_vm.selectedExtra),callback:function ($$v) {_vm.selectedExtra=$$v},expression:\"selectedExtra\"}})]:[_c('v-text-field',{attrs:{\"label\":_vm.$t('transportationPermission.extra.label', 'Extra/Benefit'),\"clearable\":\"\"},model:{value:(_vm.newExtra.name),callback:function ($$v) {_vm.$set(_vm.newExtra, \"name\", $$v)},expression:\"newExtra.name\"}}),_c('v-text-field',{attrs:{\"label\":_vm.$t('generic.price', 'Price'),\"type\":\"number\",\"clearable\":\"\"},model:{value:(_vm.newExtra.price),callback:function ($$v) {_vm.$set(_vm.newExtra, \"price\", _vm._n($$v))},expression:\"newExtra.price\"}})],_c('v-btn',{attrs:{\"color\":\"success\",\"disabled\":_vm.selectedExtra === null && _vm.newExtra.name.length < 1},on:{\"click\":_vm.addExtra}},[_vm._v(\" \"+_vm._s(_vm.$t(\"generic.add\", \"Add\"))+\" \")])],2)],1)],1),_c('price-area-card',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isEspoo),expression:\"isEspoo\"}],attrs:{\"permissionName\":_vm.transportationPermission.name,\"passengerDestinationId\":_vm.passenger.destinationIds[0],\"permissionPriceCode\":_vm.transportationPermission.priceCode},on:{\"setPrice\":_vm.setPrice}})],1)],1)],1)],1),_c('v-card-actions',[_c('v-btn',{on:{\"click\":_vm.closeEditor}},[_vm._v(_vm._s(_vm.$t(\"generic.close\", \"Close\")))]),(_vm.transportationPermission.id)?_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":_vm.deletePermission}},[_vm._v(\" \"+_vm._s(_vm.$t(\"generic.delete\", \"Delete\"))+\" \")]):_vm._e(),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"success\",\"disabled\":!_vm.permissionIsValid || _vm.loading},on:{\"click\":_vm.savePermission}},[_vm._v(\" \"+_vm._s(_vm.$t(\"generic.save\", \"Save\"))+\" \")])],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-select',{attrs:{\"items\":_vm.deductiblePaymentOptions,\"label\":_vm.$t('transportationPermission.deductiblePayment.label', 'Excess payment method'),\"disabled\":_vm.disabled,\"hint\":_vm.hint,\"persistent-hint\":_vm.persistentHint,\"value\":_vm.selectedDeductiblePayment},on:{\"input\":_vm.selectDeductiblePayment}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport { DeductiblePaymentEnum } from './Passenger/models/TransportationPermission';\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class DeductiblePaymentSelect extends Vue {\r\n selectedDeductiblePayment: DeductiblePaymentEnum;\r\n\r\n constructor() {\r\n super();\r\n this.selectedDeductiblePayment = DeductiblePaymentEnum.Invoice;\r\n }\r\n\r\n @Prop({ required: true }) value: DeductiblePaymentEnum | null;\r\n @Prop({ default: false }) disabled: boolean;\r\n @Prop({ default: ''}) hint: string;\r\n @Prop({ default: ''}) persistentHint: string;\r\n\r\n @Watch('value', { immediate: true }) onValueChanged() {\r\n if (this.value === null || this.value === undefined) {\r\n return this.selectDeductiblePayment(DeductiblePaymentEnum.Car);\r\n }\r\n this.selectedDeductiblePayment = this.value;\r\n }\r\n\r\n get deductiblePaymentOptions() {\r\n return [\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductiblePayment.car', 'Driver'),\r\n value: DeductiblePaymentEnum.Car,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductiblePayment.invoice', 'Invoice'),\r\n value: DeductiblePaymentEnum.Invoice,\r\n },\r\n ];\r\n }\r\n\r\n selectDeductiblePayment(deductiblePayment: DeductiblePaymentEnum) {\r\n this.selectedDeductiblePayment = deductiblePayment;\r\n this.$emit('input', this.selectedDeductiblePayment);\r\n }\r\n\r\n}\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeductiblePaymentSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeductiblePaymentSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DeductiblePaymentSelect.vue?vue&type=template&id=076c7616&\"\nimport script from \"./DeductiblePaymentSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./DeductiblePaymentSelect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-select',{attrs:{\"items\":_vm.deductibleTypeOptions,\"label\":_vm.$t('transportationPermission.deductibleType.label', 'Excess'),\"disabled\":_vm.disabled,\"hint\":_vm.hint,\"persistent-hint\":_vm.persistentHint,\"value\":_vm.selectedDeductibleType},on:{\"input\":_vm.selectDeductibleType}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { locale } from \"moment\";\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport { DeductibleTypeEnum } from './Passenger/models/TransportationPermission';\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class DeductibleTypeSelect extends Vue {\r\n selectedDeductibleType: DeductibleTypeEnum;\r\n\r\n deductibleOptions = [\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.noDeductible', 'No excess'),\r\n value: DeductibleTypeEnum.NoDeductible,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.static', 'Kiinteä / matka'),\r\n value: DeductibleTypeEnum.Static,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.fixedMonthly', 'Kiinteä / kk'),\r\n value: DeductibleTypeEnum.FixedMonthly,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.matkahuolto', 'Matkahuolto'),\r\n value: DeductibleTypeEnum.Matkahuolto,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.walttiHame', 'WalttiHäme'),\r\n value: DeductibleTypeEnum.WalttiHäme,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.riihimaki', 'Riihimäki'),\r\n value: DeductibleTypeEnum.Riihimäki,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.nysse', 'Nysse'),\r\n value: DeductibleTypeEnum.Nysse,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.euraMatkahuolto', 'Eura Matkahuolto'),\r\n value: DeductibleTypeEnum.EuraMatkahuolto,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.kessoteMatkahuolto', 'Kessote Matkahuolto'),\r\n value: DeductibleTypeEnum.KessoteMatkahuolto,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.raumaMatkahuolto', 'Rauma Matkahuolto'),\r\n value: DeductibleTypeEnum.RaumaMatkahuolto,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.poriMatkahuolto', 'Pori Matkahuolto'),\r\n value: DeductibleTypeEnum.PoriMatkahuolto,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.hslTwoZoneMonthly', 'HSL 2 alueen kuukausilippu'),\r\n value: DeductibleTypeEnum.HslTwoZoneMonthly,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.askolaAsiointi', 'Askola Asiointi'),\r\n value: DeductibleTypeEnum.AskolaAsiointi,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.askolaTyo', 'Askola Työ'),\r\n value: DeductibleTypeEnum.AskolaTyo,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.askolaKoulu', 'Askola Koulu'),\r\n value: DeductibleTypeEnum.AskolaOpiskelu,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.loviisa', 'Loviisa'),\r\n value: DeductibleTypeEnum.Loviisa,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.porvooAsiointi', 'Porvoo Asiointi'),\r\n value: DeductibleTypeEnum.PorvooAsiointi,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.porvooTyo', 'Porvoo Työ'),\r\n value: DeductibleTypeEnum.PorvooTyo,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.porvooOpiskelu', 'Porvoo Opiskelu'),\r\n value: DeductibleTypeEnum.PorvooOpiskelu,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.porvooSHL', 'Porvoo SHL'),\r\n value: DeductibleTypeEnum.PorvooSHL,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.sipooAsiointi', 'Sipoo Asiointi'),\r\n value: DeductibleTypeEnum.SipooAsiointi,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.sipooTyo', 'Sipoo Työ'),\r\n value: DeductibleTypeEnum.SipooTyo,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.sipooSHL', 'Sipoo SHL'),\r\n value: DeductibleTypeEnum.SipooSHL,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.hslStudentMonthly', 'HSL monthly ticket (student)'),\r\n value: DeductibleTypeEnum.HslStudentMonthly,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.sipooOpiskelu', 'Sipoo Opiskelu'),\r\n value: DeductibleTypeEnum.SipooOpiskelu,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.walttiJKL', 'Waltti(Jyväskylä)'),\r\n value: DeductibleTypeEnum.WalttiJKL,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.vpl', 'Vpl'),\r\n value: DeductibleTypeEnum.Vpl,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.deductibleType.keusoteMatkahuolto', 'Keusote Matkahuolto'),\r\n value: DeductibleTypeEnum.KeusoteMatkahuolto,\r\n },\r\n ];\r\n\r\n defaultDeductibleTypes = [ \r\n DeductibleTypeEnum.NoDeductible,\r\n DeductibleTypeEnum.Static,\r\n DeductibleTypeEnum.FixedMonthly\r\n ];\r\n\r\n @Prop({ required: true }) value: DeductibleTypeEnum | null;\r\n @Prop({ default: false }) disabled: boolean;\r\n @Prop({ default: ''}) hint: string;\r\n @Prop({ default: ''}) persistentHint: string;\r\n\r\n @Watch('value', { immediate: true }) onValueChanged() {\r\n if (this.value === null || this.value === undefined) {\r\n return this.selectDeductibleType(DeductibleTypeEnum.NoDeductible);\r\n }\r\n this.selectedDeductibleType = this.value;\r\n }\r\n\r\n get organizationId() {\r\n let organizationId = '';\r\n if (this.$route.params.organizationId) {\r\n organizationId = this.$route.params.organizationId;\r\n } else if (this.$route.params.passengerId) {\r\n organizationId = this.$store.getters['passenger/passengerOrganizationId'](this.$route.params.passengerId);\r\n }\r\n return organizationId || null;\r\n }\r\n\r\n get deductibleTypeOptions() {\r\n let types = this.defaultDeductibleTypes;\r\n\r\n if (this.organizationId) {\r\n // tslint:disable-next-line\r\n const deductibleTypeIds: string = this.$store.getters['organization/organizationPtpDeductibleTypeIds'](this.organizationId);\r\n const deductibleTypes = deductibleTypeIds.split(',').filter(x => x).map(id => parseInt(id, 10));\r\n types = deductibleTypes.filter(x => !isNaN(x));\r\n }\r\n const options = types\r\n .map(t => this.deductibleOptions.find(dt => dt.value === t))\r\n .filter(x => x);\r\n\r\n return options.sort((a, b) => a.text.localeCompare(b.text));\r\n }\r\n\r\n selectDeductibleType(deductibleType: DeductibleTypeEnum) {\r\n this.selectedDeductibleType = deductibleType;\r\n this.$emit('input', this.selectedDeductibleType);\r\n }\r\n\r\n}\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeductibleTypeSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeductibleTypeSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DeductibleTypeSelect.vue?vue&type=template&id=67c6c900&\"\nimport script from \"./DeductibleTypeSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./DeductibleTypeSelect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"mx-2\",staticStyle:{\"margin-top\":\"1em\"}},[_c('v-card-title',[_c('h4',[_vm._v(\"Hinta\")])]),_c('v-card-text',[(_vm.priceArea)?_c('div',[_c('div',[_c('strong',[_vm._v(_vm._s(_vm.$t(\"organization.priceArea.priceArea\", \"Price area\")))]),_vm._v(\": \"+_vm._s(_vm.destination.priceArea)+\" \")]),_c('div',[_c('strong',[_vm._v(_vm._s(_vm.$t(\"organization.passengerGroup.singular\", \"Passenger group\")))]),_vm._v(\": \"+_vm._s(_vm.priceArea.passengerGroupName)+\" \")]),_c('div',[_c('strong',[_vm._v(_vm._s(_vm.$t( \"passenger.prop.transportationPermissions.single\", \"Transportation permission\" )))]),_vm._v(\": \"+_vm._s(_vm.priceArea.transportationPermissionName)+\" \")]),_c('div',[_c('strong',[_vm._v(_vm._s(_vm.$t(\"organization.priceArea.price\", \"Price area price\")))]),_vm._v(\": \"+_vm._s(_vm.priceArea.priceAreas[_vm.destination.priceArea - 1])+\" € \")]),_c('div',[_c('strong',[_vm._v(_vm._s(_vm.$t(\"organization.priceArea.priceFromPtp\", \"Entered price\")))]),_vm._v(\": \"+_vm._s(_vm.priceCode)+\" € \")]),(!_vm.priceArea.priceAreas[_vm.destination.priceArea - 1])?_c('div',[_c('v-alert',{attrs:{\"value\":true,\"color\":\"warning\"}},[_vm._v(\" \"+_vm._s(_vm.$t( \"organization.priceArea.alerts.priceAreaPriceNotFound\", \"Price are price not found\" ))+\" \"+_vm._s(_vm.destination.priceArea)+\" \")])],1):_vm._e(),(_vm.priceCode != _vm.priceArea.priceAreas[_vm.destination.priceArea - 1])?[_c('v-alert',{attrs:{\"value\":true,\"color\":\"warning\"}},[_vm._v(\" \"+_vm._s(_vm.$t( \"organization.priceArea.alerts.priceAreaPriceDoesNotMatch\", \"Price area price {0} € does not match entered price\", [ _vm.priceArea.priceAreas[_vm.destination.priceArea - 1] ] ))+\" \")]),_c('div',[_c('v-btn',{staticStyle:{\"margin-left\":\"0px\"},attrs:{\"color\":\"primary\"},on:{\"click\":_vm.setPrice}},[_vm._v(_vm._s(_vm.$t(\"organization.priceArea.setPrice\", \"Set price\")))])],1)]:_vm._e()],2):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { IOrganizationPriceAreaTable, IPriceArea } from \"@/typings/timit\";\r\n\r\nexport class PriceAreasTable {\r\n\r\n public priceTables: IOrganizationPriceAreaTable[] = [ \r\n {\r\n // Espoo oraginaztion pricetable\r\n organizationId: \"626A6858-8C19-4A69-B699-12E577CE012A\",\r\n priceAreas: [ \r\n {\r\n passengerGroupName: 'Vanhukset',\r\n transportationPermissionName: 'Vanhukset / Päivätoiminta',\r\n priceAreas: [8, 9.8, 19, 8, 0, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vanhukset',\r\n transportationPermissionName: 'Vanhukset / Muistipalvelukeskus',\r\n priceAreas: [8, 9.8, 19, 8, 0, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vanhukset',\r\n transportationPermissionName: 'Vanhukset / Kylvetyspalvelu',\r\n priceAreas: [8, 9.8, 19, 8, 0, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vanhukset',\r\n transportationPermissionName: 'Vanhukset / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n // PassengerGroup Vammaiset\r\n {\r\n passengerGroupName: 'Vammaiset',\r\n transportationPermissionName: 'Vammaisten kuljetukset / Työtoiminta (oma)',\r\n priceAreas: [8.9, 13.8, 19, 8.8, 18.9, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vammaiset',\r\n transportationPermissionName: 'Vammaisten kuljetukset / Työtoiminta (osto)',\r\n priceAreas: [8.9, 13.8, 19, 8.8, 18.9, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vammaiset',\r\n transportationPermissionName: 'Vammaisten kuljetukset / Päivätoiminta (oma)',\r\n priceAreas: [8.9, 13.8, 19, 8.8, 18.9, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vammaiset',\r\n transportationPermissionName: 'Vammaisten kuljetukset / Päivätoiminta (osto)',\r\n priceAreas: [8.9, 13.8, 19, 8.8, 18.9, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vammaiset',\r\n transportationPermissionName: 'Vammaisten kuljetukset / Liven opiskelijoiden kuljetukset',\r\n priceAreas: [0, 0, 19, 0, 0, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vammaiset',\r\n transportationPermissionName: 'Vammaisten kuljetukset / Liven lomahoito',\r\n priceAreas: [0, 0, 19, 0, 0, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vammaiset',\r\n transportationPermissionName: 'Vammaisten kuljetukset / Lyhytaikainen hoito',\r\n priceAreas: [34.6, 34.8, 19, 34.8, 30, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vammaiset',\r\n transportationPermissionName: 'Vammaiset / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n {\r\n passengerGroupName: 'Vammaiset',\r\n transportationPermissionName: 'Vammaiset / Yksilökuljetus ulkoinen',\r\n priceAreas: [0, 0, 0, 0, 0, 34.5]\r\n },\r\n // PassengerGroup Ap-/Ip\r\n {\r\n passengerGroupName: 'Ap-/Ip',\r\n transportationPermissionName: 'Ap ip / Ap- ja ip-kuljetus',\r\n priceAreas: [16.18, 16.18, 10.2, 16.18, 21.75, 0]\r\n },\r\n {\r\n passengerGroupName: 'Ap-/Ip',\r\n transportationPermissionName: 'Ap ip / Lomahoito',\r\n priceAreas: [16.18, 16.18, 10.2, 16.18, 21.75, 0]\r\n },\r\n {\r\n passengerGroupName: 'Ap-/Ip',\r\n transportationPermissionName: 'Ap ip / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 31.7]\r\n },\r\n {\r\n passengerGroupName: 'Ap-/Ip',\r\n transportationPermissionName: 'Ap ip / Yksilökuljetus ulkoinen',\r\n priceAreas: [0, 0, 0, 0, 0, 47.55]\r\n },\r\n // PassengerGroup Koulukuljetukset\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Koulukuljetus sisäinen',\r\n priceAreas: [8.74, 10.71, 10.2, 8.74, 26.89, 0]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Koulukuljetus ulkoinen',\r\n priceAreas: [10.71, 16.18, 10.2, 10.71, 26.89, 0]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Koulukuljetus / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 31.7]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Koulukuljetus / Yksilökuljetus ulkoinen',\r\n priceAreas: [0, 0, 0, 0, 0, 47.55]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Erityiskaluston kuljetus',\r\n priceAreas: [20.55, 21.42, 10.2, 20.55, 26.89, 0]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Erityiskaluston kuljetus / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 24.14]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Opetusjärjestelykuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 31.7]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Opetusjärjestelykuljetus / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 24.14]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Tapaturmakuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 31.7]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Tapaturmakuljetus / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 31.7]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Muut erityiskuljetukset',\r\n priceAreas: [0, 0, 0, 0, 0, 31.7]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Muut erityiskuljetukset / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 24.14]\r\n },\r\n // PassengerGroup Varhaiskasvatus\r\n {\r\n passengerGroupName: 'Varhaiskasvatus',\r\n transportationPermissionName: 'Varhaiskasvatus / Esiopetus',\r\n priceAreas: [0, 0, 0, 0, 0, 31.7]\r\n },\r\n {\r\n passengerGroupName: 'Varhaiskasvatus',\r\n transportationPermissionName: 'Varhaiskasvatus / Varhaiskasvatus',\r\n priceAreas: [0, 0, 0, 0, 0, 31.7]\r\n },\r\n {\r\n passengerGroupName: 'Varhaiskasvatus',\r\n transportationPermissionName: 'Varhaiskasvatus / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 31.7]\r\n },\r\n // PassengerGroup Lastensuojelu\r\n {\r\n passengerGroupName: 'Lastensuojelu',\r\n transportationPermissionName: 'Lastensuojelu / Koulukuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n {\r\n passengerGroupName: 'Lastensuojelu',\r\n transportationPermissionName: 'Lastensuojelu / Varhaiskasvatus',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n {\r\n passengerGroupName: 'Lastensuojelu',\r\n transportationPermissionName: 'Lastensuojelu / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n {\r\n passengerGroupName: 'Lastensuojelu',\r\n transportationPermissionName: 'Lastensuojelu / Yksilökuljetus ulkoinen',\r\n priceAreas: [0, 0, 0, 0, 0, 34.5]\r\n },\r\n // Temporary permission\r\n {\r\n passengerGroupName: '',\r\n transportationPermissionName: 'Nimi puuttuu',\r\n priceAreas: [0, 0, 0, 0, 0, 0]\r\n }\r\n ] \r\n },\r\n {\r\n // LUVN pricatable\r\n organizationId: \"17dd2fb9-4253-4503-881d-f5cdb305ceaf\",\r\n priceAreas: [ \r\n {\r\n passengerGroupName: 'Vanhukset',\r\n transportationPermissionName: 'Vanhukset / Päivätoiminta',\r\n priceAreas: [8, 9.8, 19, 8, 0, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vanhukset',\r\n transportationPermissionName: 'Vanhukset / Muistipalvelukeskus',\r\n priceAreas: [8, 9.8, 19, 8, 0, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vanhukset',\r\n transportationPermissionName: 'Vanhukset / Kylvetyspalvelu',\r\n priceAreas: [8, 9.8, 19, 8, 0, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vanhukset',\r\n transportationPermissionName: 'Vanhukset / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n // PassengerGroup Vammaiset\r\n {\r\n passengerGroupName: 'Vammaiset',\r\n transportationPermissionName: 'Vammaisten kuljetukset / Työtoiminta (oma)',\r\n priceAreas: [8.9, 13.8, 19, 8.8, 18.9, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vammaiset',\r\n transportationPermissionName: 'Vammaisten kuljetukset / Työtoiminta (osto)',\r\n priceAreas: [8.9, 13.8, 19, 8.8, 18.9, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vammaiset',\r\n transportationPermissionName: 'Vammaisten kuljetukset / Päivätoiminta (oma)',\r\n priceAreas: [8.9, 13.8, 19, 8.8, 18.9, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vammaiset',\r\n transportationPermissionName: 'Vammaisten kuljetukset / Päivätoiminta (osto)',\r\n priceAreas: [8.9, 13.8, 19, 8.8, 18.9, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vammaiset',\r\n transportationPermissionName: 'Vammaisten kuljetukset / Liven opiskelijoiden kuljetukset',\r\n priceAreas: [0, 0, 19, 0, 0, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vammaiset',\r\n transportationPermissionName: 'Vammaisten kuljetukset / Liven lomahoito',\r\n priceAreas: [0, 0, 19, 0, 0, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vammaiset',\r\n transportationPermissionName: 'Vammaisten kuljetukset / Lyhytaikainen hoito',\r\n priceAreas: [34.6, 34.8, 19, 34.8, 30, 0]\r\n },\r\n {\r\n passengerGroupName: 'Vammaiset',\r\n transportationPermissionName: 'Vammaiset / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n {\r\n passengerGroupName: 'Vammaiset',\r\n transportationPermissionName: 'Vammaiset / Yksilökuljetus ulkoinen',\r\n priceAreas: [0, 0, 0, 0, 0, 34.5]\r\n },\r\n // PassengerGroup Ap-/Ip\r\n {\r\n passengerGroupName: 'Ap-/Ip',\r\n transportationPermissionName: 'Ap ip / Ap- ja ip-kuljetus',\r\n priceAreas: [14.8, 14.8, 9.33, 14.8, 19.9, 0]\r\n },\r\n {\r\n passengerGroupName: 'Ap-/Ip',\r\n transportationPermissionName: 'Ap ip / Lomahoito',\r\n priceAreas: [14.8, 14.8, 9.33, 14.8, 0, 0]\r\n },\r\n {\r\n passengerGroupName: 'Ap-/Ip',\r\n transportationPermissionName: 'Ap ip / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n {\r\n passengerGroupName: 'Ap-/Ip',\r\n transportationPermissionName: 'Ap ip / Yksilökuljetus ulkoinen',\r\n priceAreas: [0, 0, 0, 0, 0, 34.5]\r\n },\r\n // PassengerGroup Koulukuljetukset\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Koulukuljetus sisäinen',\r\n priceAreas: [8, 9.8, 9.33, 8, 24.6, 0]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Koulukuljetus ulkoinen',\r\n priceAreas: [9.8, 9.8, 9.33, 9.8, 24.6, 0]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Koulukuljetus / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Koulukuljetus / Yksilökuljetus ulkoinen',\r\n priceAreas: [0, 0, 0, 0, 0, 34.5]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Erityiskaluston kuljetus',\r\n priceAreas: [18.8, 16, 9.33, 18.8, 24.6, 0]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Erityiskaluston kuljetus / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 24.14]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Opetusjärjestelykuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Opetusjärjestelykuljetus / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 24.14]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Tapaturmakuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Tapaturmakuljetus / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Muut erityiskuljetukset',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n {\r\n passengerGroupName: 'Koulukuljetukset',\r\n transportationPermissionName: 'Muut erityiskuljetukset / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 24.14]\r\n },\r\n // PassengerGroup Varhaiskasvatus\r\n {\r\n passengerGroupName: 'Varhaiskasvatus',\r\n transportationPermissionName: 'Varhaiskasvatus / Esiopetus',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n {\r\n passengerGroupName: 'Varhaiskasvatus',\r\n transportationPermissionName: 'Varhaiskasvatus / Varhaiskasvatus',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n {\r\n passengerGroupName: 'Varhaiskasvatus',\r\n transportationPermissionName: 'Varhaiskasvatus / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n // PassengerGroup Lastensuojelu\r\n {\r\n passengerGroupName: 'Lastensuojelu',\r\n transportationPermissionName: 'Lastensuojelu / Koulukuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n {\r\n passengerGroupName: 'Lastensuojelu',\r\n transportationPermissionName: 'Lastensuojelu / Varhaiskasvatus',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n {\r\n passengerGroupName: 'Lastensuojelu',\r\n transportationPermissionName: 'Lastensuojelu / Yksilökuljetus',\r\n priceAreas: [0, 0, 0, 0, 0, 29]\r\n },\r\n {\r\n passengerGroupName: 'Lastensuojelu',\r\n transportationPermissionName: 'Lastensuojelu / Yksilökuljetus ulkoinen',\r\n priceAreas: [0, 0, 0, 0, 0, 34.5]\r\n },\r\n // Temporary permission\r\n {\r\n passengerGroupName: '',\r\n transportationPermissionName: 'Nimi puuttuu',\r\n priceAreas: [0, 0, 0, 0, 0, 0]\r\n }\r\n ] \r\n }\r\n ];\r\n\r\n // tslint:disable-next-line:no-empty\r\n constructor() {}\r\n\r\n getPriceAreasForPassengerGroups(organizationId: string, groups?: string[], priceArea?: number) {\r\n let result: IPriceArea[] = [];\r\n \r\n const priceTable = this.priceTables.find(p => p.organizationId.toLowerCase() === organizationId.toLowerCase());\r\n if (!priceTable) {\r\n return [\r\n {\r\n passengerGroupName: '',\r\n transportationPermissionName: 'Nimi puuttuu',\r\n priceAreas: [0, 0, 0, 0, 0, 0]\r\n }\r\n ];\r\n }\r\n const areas = priceTable.priceAreas;\r\n if (groups) {\r\n\r\n if (!priceArea) {\r\n result = areas.filter(a => groups.some(g => g === a.passengerGroupName) ||\r\n a.transportationPermissionName === 'Nimi puuttuu')\r\n return result.sort((a, b) => a.transportationPermissionName.localeCompare(b.transportationPermissionName))\r\n }\r\n\r\n result = areas.filter(a => groups.some(g => g === a.passengerGroupName) ||\r\n a.transportationPermissionName === 'Nimi puuttuu')\r\n .filter(g => g.priceAreas[priceArea - 1] > 0 || g.transportationPermissionName === 'Nimi puuttuu');\r\n\r\n if (result.length < 1) {\r\n return areas.sort((a, b) => a.transportationPermissionName.localeCompare(b.transportationPermissionName));\r\n }\r\n\r\n return result.sort((a, b) => a.transportationPermissionName.localeCompare(b.transportationPermissionName));\r\n }\r\n return areas.sort((a, b) => a.transportationPermissionName.localeCompare(b.transportationPermissionName));\r\n }\r\n\r\n // getPrice(transportationPermissionName: string, priceArea: number) {\r\n // const transportationPermission = this.areas\r\n // .find(a => a.transportationPermissionName === transportationPermissionName);\r\n\r\n // if (!transportationPermissionName) {\r\n // return 0;\r\n // }\r\n // return transportationPermission.priceAreas[priceArea - 1];\r\n // }\r\n\r\n}\r\n\r\nexport default PriceAreasTable;\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport PriceAreasTable from \"@/models/PriceAreasTable\";\r\nimport { IPriceArea } from \"@/typings/timit\";\r\nimport { Vue, Prop, Component } from \"vue-property-decorator\";\r\nimport Destination from \"../models/Destination\";\r\n@Component({})\r\nexport default class PriceAreaCard extends Vue {\r\n @Prop({ default: null }) private permissionName!: string | null;\r\n @Prop({ default: null }) private passengerDestinationId: number | null;\r\n @Prop({ default: null }) private permissionPriceCode!: string | null;\r\n\r\n get priceArea() {\r\n if (!this.permissionName) {\r\n return null;\r\n }\r\n\r\n const priceAreas = new PriceAreasTable();\r\n const organizationId = this.destination.organizationId?.toLowerCase() ?? '';\r\n const priceTable = priceAreas.priceTables.find(p => p.organizationId.toLowerCase() === organizationId);\r\n\r\n if (!priceTable) {\r\n return null;\r\n }\r\n\r\n const area = priceTable.priceAreas.find(pt => pt.transportationPermissionName === this.permissionName);\r\n\r\n if (!area) {\r\n const temporaryPermission: IPriceArea = {\r\n transportationPermissionName: this.permissionName,\r\n passengerGroupName: \"\",\r\n priceAreas: [0, 0, 0, 0, 0, 0],\r\n };\r\n return temporaryPermission;\r\n }\r\n \r\n return area;\r\n }\r\n\r\n get destination():Destination | null {\r\n if (this.passengerDestinationId) {\r\n const result = (this.$store.state.destination.destinations as Destination[]).find(\r\n (d) => d.id === this.passengerDestinationId\r\n );\r\n return result;\r\n }\r\n return null;\r\n }\r\n\r\n get priceCode() {\r\n if (this.permissionPriceCode) {\r\n return parseFloat(this.permissionPriceCode);\r\n }\r\n return 0;\r\n }\r\n\r\n setPrice() {\r\n if (this.priceArea && this.destination) {\r\n this.$emit(\r\n \"setPrice\",\r\n this.priceArea.priceAreas[this.destination.priceArea - 1]\r\n );\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PriceAreaCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PriceAreaCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PriceAreaCard.vue?vue&type=template&id=7a1f6378&\"\nimport script from \"./PriceAreaCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./PriceAreaCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(!_vm.canUseAutocomplete)?_c('v-text-field',{attrs:{\"rules\":_vm.rules,\"label\":_vm.$t('transportationPermission.name', 'Transportation permission name') +\n '*'},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}):_c('v-autocomplete',{attrs:{\"search-input\":_vm.text,\"rules\":_vm.rules,\"items\":_vm.ptpNames,\"label\":_vm.$t('transportationPermission.name', 'Transportation permission name') + '*',\"hide-no-data\":\"\",\"hide-details\":\"\",\"clearable\":\"\"},on:{\"update:searchInput\":function($event){_vm.text=$event},\"update:search-input\":function($event){_vm.text=$event}},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.creatingNew),expression:\"creatingNew\"}],staticClass:\"help-block\"},[_c('span',{staticClass:\"warning--text\"},[_vm._v(\"Olet luomassa uuden nimen\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from \"vue-property-decorator\";\r\n@Component({\r\n components: {},\r\n})\r\nexport default class PassengerTransportationPermissionNameInput extends Vue {\r\n text: string = \"\";\r\n creatingNew: boolean = false;\r\n\r\n @Prop() private value!: string\r\n @Prop({default: []}) private rules!: any[];\r\n @Prop() private organizationId: string;\r\n\r\n get name() {\r\n return this.value;\r\n }\r\n\r\n set name(value: string) {\r\n if (!value) {\r\n this.creatingNew = false;\r\n }\r\n this.$emit('input', value);\r\n }\r\n\r\n get canUseAutocomplete() {\r\n return this.organizationId && this.organizationPtpNames.length > 0;\r\n }\r\n\r\n get organizationPtpNames(): string[] {\r\n return this.$store.getters['organization/organizationPtpNames'](this.organizationId);\r\n }\r\n\r\n get ptpNames(): string[] {\r\n let names = this.organizationPtpNames;\r\n\r\n if (!this.text) {\r\n return names;\r\n }\r\n \r\n const search = this.text.toLowerCase();\r\n names = names.filter(n => n.toLowerCase().startsWith(search));\r\n\r\n if (names.length === 0) {\r\n names.push(this.text);\r\n this.creatingNew = true;\r\n } else {\r\n this.creatingNew = false;\r\n }\r\n return names;\r\n }\r\n \r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerTransportationPermissionNameInput.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerTransportationPermissionNameInput.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerTransportationPermissionNameInput.vue?vue&type=template&id=4683ee1e&\"\nimport script from \"./PassengerTransportationPermissionNameInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerTransportationPermissionNameInput.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(!_vm.canUseAutocomplete)?_c('v-text-field',{attrs:{\"rules\":_vm.rules,\"label\":_vm.$t('transportationPermission.costCenter', 'Cost center / Account key') +\n '*'},model:{value:(_vm.costCenter),callback:function ($$v) {_vm.costCenter=$$v},expression:\"costCenter\"}}):_c('v-autocomplete',{attrs:{\"search-input\":_vm.text,\"rules\":_vm.rules,\"items\":_vm.costCenters,\"label\":_vm.$t('transportationPermission.costCenter', 'Cost center / Account key') +\n '*',\"hide-no-data\":\"\",\"hide-details\":\"\",\"clearable\":\"\"},on:{\"update:searchInput\":function($event){_vm.text=$event},\"update:search-input\":function($event){_vm.text=$event}},model:{value:(_vm.costCenter),callback:function ($$v) {_vm.costCenter=$$v},expression:\"costCenter\"}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.creatingNew),expression:\"creatingNew\"}],staticClass:\"help-block\"},[_c('span',{staticClass:\"warning--text\"},[_vm._v(_vm._s(_vm.$t('transportationPermission.creatingNewCostCenter')))])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop} from \"vue-property-decorator\";\r\n@Component({\r\n components: {},\r\n})\r\nexport default class PassengerTransportationPermissionCostCenterInput extends Vue {\r\n text: string = \"\";\r\n\r\n @Prop() private value!: string;\r\n @Prop({ default: [] }) private rules!: any[];\r\n @Prop() private organizationId: string;\r\n\r\n get creatingNew() {\r\n if (this.value) {\r\n const match = this.organizationCostCenters.find(cc => cc.toLowerCase() === this.value.toLowerCase());\r\n if (!match) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n get costCenter() {\r\n return this.value;\r\n }\r\n\r\n set costCenter(value: string) {\r\n this.$emit(\"input\", value);\r\n }\r\n\r\n get canUseAutocomplete() {\r\n return this.organizationId && this.organizationCostCenters.length > 0;\r\n }\r\n\r\n get organizationCostCenters(): string[] {\r\n return this.$store.getters['organization/organizationCostCenterNames'](this.organizationId);\r\n }\r\n\r\n get costCenters(): string[] {\r\n let costCenters = JSON.parse(JSON.stringify(this.organizationCostCenters));\r\n \r\n if (!this.text) {\r\n return costCenters;\r\n }\r\n\r\n const search = this.text.toLowerCase();\r\n costCenters = costCenters.filter(cc => cc.toLowerCase().startsWith(search));\r\n const match = costCenters.find(cc => cc.toLocaleLowerCase() === search);\r\n // if there is no match add typed string to list so user can crete a new costCenter\r\n if (!match) {\r\n costCenters.unshift(this.text);\r\n }\r\n\r\n return costCenters;\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerTransportationPermissionCostCenterInput.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerTransportationPermissionCostCenterInput.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerTransportationPermissionCostCenterInput.vue?vue&type=template&id=3c3e5472&\"\nimport script from \"./PassengerTransportationPermissionCostCenterInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerTransportationPermissionCostCenterInput.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-select',{attrs:{\"items\":_vm.quotaTimes,\"value\":_vm.selectedQuotaTime,\"label\":_vm.$t('transportationPermission.quotaTime', 'Quota timeframe')},on:{\"input\":_vm.selectQuotaTime}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class QuotaTimeSelect extends Vue {\r\n selectedQuotaTime: number;\r\n\r\n @Prop({ required: true }) value: number | null;\r\n \r\n @Watch('value', { immediate: true }) onValueChanged() {\r\n if (this.value === null || this.value === undefined) {\r\n return this.selectQuotaTime(0);\r\n }\r\n this.selectedQuotaTime = this.value;\r\n }\r\n\r\n get quotaTimes() {\r\n return [\r\n { text: this.$i18n.translate(\"transportationPermission.quotaTimes.month\", \"A Month\"), value: 0 },\r\n { text: this.$i18n.translate( \"transportationPermission.quotaTimes.day\", \"A Day\"), value: 1 },\r\n { text: this.$i18n.translate( \"transportationPermission.quotaTimes.week\", \"A Week\" ), value: 2 },\r\n { text: this.$i18n.translate( \"transportationPermission.quotaTimes.year\", \"A Year\" ), value: 3 },\r\n { text: this.$i18n.translate( \"transportationPermission.quotaTimes.fourMonths\", \"Four months\" ), value: 4 },\r\n { text: this.$i18n.translate( \"transportationPermission.quotaTimes.threeMonths\", \"Three months\" ), value: 5 },\r\n ];\r\n }\r\n\r\n selectQuotaTime(selectedQuotaTime: number) {\r\n this.selectedQuotaTime = selectedQuotaTime;\r\n this.$emit('input', this.selectedQuotaTime);\r\n }\r\n\r\n}\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./QuotaTimeSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./QuotaTimeSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./QuotaTimeSelect.vue?vue&type=template&id=6c3bb6eb&\"\nimport script from \"./QuotaTimeSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./QuotaTimeSelect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/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\nexport default class TransportationPermissionExtra {\r\n id: number;\r\n name: string;\r\n price: number;\r\n extraId?: number;\r\n vatPercentage?: number;\r\n passengerTransportationPermissionId: number;\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-select',{attrs:{\"items\":_vm.tripDirections,\"value\":_vm.selectedTripDirections,\"label\":_vm.$t('transportationPermission.direction', 'Trip direction')},on:{\"input\":_vm.selectTripDirections}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class TripDirectionsSelect extends Vue {\r\n selectedTripDirections: number;\r\n\r\n @Prop({ required: true }) value: number | null;\r\n \r\n @Watch('value', { immediate: true }) onValueChanged() {\r\n if (this.value === null || this.value === undefined) {\r\n return this.selectTripDirections(0);\r\n }\r\n this.selectedTripDirections = this.value;\r\n }\r\n\r\n get tripDirections() {\r\n return [\r\n {\r\n text: this.$i18n.translate('transportationPermission.tripDirections.twoWay', 'Two way'),\r\n value: 0,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.tripDirections.departure', 'Departure'),\r\n value: 1,\r\n },\r\n {\r\n text: this.$i18n.translate('transportationPermission.tripDirections.return', 'Return'),\r\n value: 2,\r\n },\r\n ];\r\n }\r\n\r\n selectTripDirections(tripDirections: number) {\r\n this.selectedTripDirections = tripDirections;\r\n this.$emit('input', this.selectedTripDirections);\r\n }\r\n\r\n}\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TripDirectionsSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TripDirectionsSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TripDirectionsSelect.vue?vue&type=template&id=1c289858&\"\nimport script from \"./TripDirectionsSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./TripDirectionsSelect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-select',{attrs:{\"items\":_vm.tripDestinations,\"value\":_vm.selectedTripDestinations,\"label\":_vm.$t('transportationPermission.destinations', 'Trip destinations')},on:{\"input\":_vm.selectTripDestinations}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class TripDestinationsSelect extends Vue {\r\n selectedTripDestinations: number;\r\n\r\n @Prop({ required: true }) value: number | null;\r\n \r\n @Watch('value', { immediate: true }) onValueChanged() {\r\n if (this.value === null || this.value === undefined) {\r\n return this.selectTripDestinations(-1);\r\n }\r\n this.selectedTripDestinations = this.value;\r\n }\r\n\r\n get tripDestinations() {\r\n return [\r\n { \r\n text: this.$i18n.translate(\"generic.select\", \"Select\"), \r\n value: -1 \r\n },\r\n { \r\n text: this.$i18n.translate( \"transportationPermission.tripDestinations.homeToMain\", \"Home-Main place\" ),\r\n value: 0,\r\n },\r\n {\r\n text: this.$i18n.translate(\"transportationPermission.tripDestinations.grouping\", \"Grouping\"),\r\n value: 1,\r\n },\r\n {\r\n text: this.$i18n.translate(\"transportationPermission.tripDestinations.passengerDestinations\", \"Passengers destinations\"),\r\n value: 2,\r\n },\r\n {\r\n text: this.$i18n.translate(\"transportationPermission.tripDestinations.homeSecondary\", \"Home-Secondary place\"),\r\n value: 4,\r\n },\r\n {\r\n text: this.$i18n.translate(\"transportationPermission.tripDestinations.mainSecondary\", \"Main-Secondary place\"),\r\n value: 5,\r\n },\r\n {\r\n text: this.$i18n.translate(\"transportationPermission.tripDestinations.allDestinations\", \"All destinations\"),\r\n value: 3,\r\n },\r\n ];\r\n }\r\n\r\n selectTripDestinations(tripDestinations: number) {\r\n this.selectedTripDestinations = tripDestinations;\r\n this.$emit('input', this.selectedTripDestinations);\r\n }\r\n\r\n}\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TripDestinationsSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TripDestinationsSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TripDestinationsSelect.vue?vue&type=template&id=6b95929e&\"\nimport script from \"./TripDestinationsSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./TripDestinationsSelect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Watch, Vue } from \"vue-property-decorator\";\r\nimport vuetifyToast from \"vuetify-toast\";\r\nimport DateTimePicker from \"@/components/DatetimePicker.vue\";\r\nimport DeductiblePaymentSelect from '@/components/DeductiblePaymentSelect.vue';\r\nimport DeductibleTypeSelect from '@/components/DeductibleTypeSelect.vue';\r\nimport Destination from \"../models/Destination\";\r\nimport Extra from \"@/models/Extra\";\r\nimport MovitInstanceConfig from \"@/models/MovitInstanceConfig\";\r\nimport Passenger from \"../models/Passenger\";\r\nimport { PassengerGroup } from \"@/models/PassengerGroup\";\r\nimport { IPriceArea } from \"@/typings/timit\";\r\nimport PriceAreaCard from \"@/components/Passenger/components/PriceAreaCard.vue\";\r\nimport PassengerTransportationPermissionNameInput from \"@/components/Passenger/components/PassengerTransportationPermissionNameInput.vue\";\r\nimport PassengerTransportationPermissionCostCenterInput from \"@/components/Passenger/components/PassengerTransportationPermissionCostCenterInput.vue\";\r\nimport PriceAreasTable from \"@/models/PriceAreasTable\";\r\nimport QuotaTimeSelect from '@/components/QuotaTimeSelect.vue';\r\nimport TransportationPermission, {\r\n DeductiblePaymentEnum,\r\n DeductibleTypeEnum,\r\n} from \"../models/TransportationPermission\";\r\nimport TransportationPermissionExtra from \"../models/TransportationPermissionExtra\";\r\nimport TripDirectionsSelect from '@/components/TripDirectionsSelect.vue';\r\nimport TripDestinationsSelect from '@/components/TripDestinationsSelect.vue';\r\n\r\n@Component({\r\n components: {\r\n DateTimePicker,\r\n DeductiblePaymentSelect,\r\n DeductibleTypeSelect,\r\n PriceAreaCard,\r\n PassengerTransportationPermissionNameInput,\r\n PassengerTransportationPermissionCostCenterInput,\r\n QuotaTimeSelect,\r\n TripDestinationsSelect,\r\n TripDirectionsSelect,\r\n },\r\n})\r\nexport default class TransportationPermissionEditor extends Vue {\r\n transportationPermission: TransportationPermission | null = null;\r\n DeductibleTypeEnum = DeductibleTypeEnum;\r\n DeductiblePaymentEnum = DeductiblePaymentEnum;\r\n\r\n lastEmitted!: TransportationPermission | null | undefined;\r\n adding: boolean = false;\r\n newExtra = { name: \"\", price: 0 };\r\n selectedExtra: Extra = null;\r\n @Prop({ required: true }) private value!: TransportationPermission;\r\n @Prop({ default: false })\r\n private showTransportationPermissionEditor!: boolean;\r\n @Prop({ default: false }) private hasPassengerGroups!: boolean;\r\n @Prop({ required: true }) private passenger!: Passenger;\r\n @Prop({ default: () => [] }) private passengerGroups!: PassengerGroup[];\r\n showChangedIterator: number = 1;\r\n permissionIsValid: boolean = false;\r\n originalIsDraft = true;\r\n\r\n loading = false;\r\n\r\n rules: any = {\r\n required: (val) => {\r\n return !!val || this.$i18n.translate(\"validation.rules.required\", \"Required\")\r\n },\r\n notNegativeValue: (val) =>\r\n val >= 0 ||\r\n Vue.i18n.translate(\"validation.rules.invalidValue\", \"Invalid value\"),\r\n cannotExceedInitialQuota: (val) => this.cannotExceedInitialQuota(val),\r\n };\r\n\r\n cannotExceedInitialQuota(val: number) {\r\n if (!this.transportationPermission) {\r\n return true;\r\n }\r\n return (\r\n val <= this.transportationPermission.initialQuota ||\r\n Vue.i18n.translate(\r\n \"transportationPermission.expressQuotaExceedsQuota\",\r\n \"Exceeds quota\"\r\n )\r\n );\r\n }\r\n\r\n @Watch(\"showTransportationPermissionEditor\")\r\n showTransportationPermissionEditorChanged(val: boolean, oldVal: boolean) {\r\n if (val !== oldVal) {\r\n this.selectedExtra = null;\r\n this.adding = false;\r\n this.showChangedIterator++;\r\n }\r\n }\r\n\r\n @Watch(\"value\", { immediate: true })\r\n onValueChange(val: any, oldVal: any) {\r\n if (val !== this.lastEmitted) {\r\n if (this.value) {\r\n this.originalIsDraft = this.value.isDraft;\r\n }\r\n this.transportationPermission = this.value;\r\n }\r\n }\r\n\r\n @Watch(\"transportationPermission\", { deep: true })\r\n onTransportationPermissionChange() {\r\n if (this.transportationPermission && !this.transportationPermission.decisionType) {\r\n this.transportationPermission.decisionType = \"TIMIT\";\r\n }\r\n this.lastEmitted = this.transportationPermission;\r\n this.$emit(\"input\", this.transportationPermission);\r\n }\r\n\r\n @Watch(\"transportationPermission.deductibleType\")\r\n onDeductibleTypeChange(val: DeductibleTypeEnum) {\r\n if(val === DeductibleTypeEnum.FixedMonthly) {\r\n this.transportationPermission.deductiblePayment = DeductiblePaymentEnum.Invoice;\r\n }\r\n }\r\n\r\n get me() {\r\n return this.$store.state.user.me;\r\n }\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n get destination(): Destination | null {\r\n if (this.routeDestinationId) {\r\n return this.$store.state.destination.destinations.find(\r\n (d) => d.id === this.routeDestinationId\r\n );\r\n }\r\n\r\n if (this.passenger.destinationIds.length > 0) {\r\n return this.$store.state.destination.destinations.find(\r\n (d) => d.id === this.passenger.destinationIds[0]\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n get isEspoo() {\r\n if (this.destination && this.destination.priceArea === 0 || !this.passenger.organizationId) {\r\n return false;\r\n }\r\n const espooOrganizations: string[] = [\r\n '626a6858-8c19-4a69-b699-12e577ce012a'.toLowerCase(),\r\n '17dd2fb9-4253-4503-881d-f5cdb305ceaf'.toLowerCase(),\r\n ];\r\n \r\n return espooOrganizations.includes(this.passenger.organizationId.toLowerCase());\r\n }\r\n\r\n get storeMovitInstanceConfigs(): MovitInstanceConfig[] {\r\n return this.$store.state.app.movitInstanceConfigs as MovitInstanceConfig[];\r\n }\r\n\r\n get destinationMovitInstanceConfig(): MovitInstanceConfig | undefined {\r\n if (!this.destination) {\r\n return this.storeMovitInstanceConfigs.find(\r\n (mic) => mic.instanceId === this.passenger.movitInstanceId\r\n );\r\n }\r\n\r\n return this.storeMovitInstanceConfigs.find(\r\n (mic) => mic.instanceId === this.destination.movitInstanceId\r\n );\r\n }\r\n\r\n get newFeb2021FieldsSupported(): boolean {\r\n // New Feb2021 fields (#3490) are supported\r\n // if the destinations movitInstance returns a config object (commit 99ad46de)\r\n return this.destinationMovitInstanceConfig ? true : false;\r\n }\r\n\r\n get instanceConfigExtras(): Extra[] {\r\n return this.destinationMovitInstanceConfig\r\n ? this.destinationMovitInstanceConfig.extras\r\n : [];\r\n }\r\n\r\n get availableInstanceConfigExtras(): Extra[] {\r\n if (!this.showChangedIterator) {\r\n return [];\r\n }\r\n if (!this.transportationPermission || !this.transportationPermission.extras || this.transportationPermission.extras.length === 0) {\r\n return this.instanceConfigExtras;\r\n }\r\n return this.instanceConfigExtras.filter(\r\n (ice) =>\r\n this.transportationPermission.extras\r\n .map((e) => e.extraId)\r\n .indexOf(ice.id) === -1\r\n );\r\n }\r\n\r\n get passengerGroupPriceAreas() {\r\n const priceAreas = new PriceAreasTable();\r\n let excitingName;\r\n\r\n if (this.passengerGroups.length > 0 && this.destination.organizationId) {\r\n\r\n const destinationPriceArea = this.destination ? this.destination.priceArea : 0\r\n const priceAreasByGroupNames = priceAreas.getPriceAreasForPassengerGroups(this.destination.organizationId,\r\n this.passengerGroups.map((p) => p.name),\r\n destinationPriceArea\r\n );\r\n\r\n if (this.transportationPermission.name) {\r\n excitingName = priceAreasByGroupNames.find((a) => a.transportationPermissionName.toLowerCase() === this.transportationPermission.name.toLowerCase());\r\n }\r\n if (!excitingName && this.transportationPermission.name) {\r\n const temporaryPermission: IPriceArea = {\r\n transportationPermissionName: this.transportationPermission.name,\r\n passengerGroupName: \"\",\r\n priceAreas: [0, 0, 0, 0, 0, 0],\r\n };\r\n priceAreasByGroupNames.push(temporaryPermission);\r\n }\r\n\r\n return priceAreasByGroupNames.map((t) => t.transportationPermissionName);\r\n }\r\n\r\n const allPriceAreas = priceAreas.getPriceAreasForPassengerGroups(this.destination.organizationId);\r\n\r\n if (this.transportationPermission.name) {\r\n excitingName = allPriceAreas.find((p) => p.passengerGroupName.toLowerCase() === this.transportationPermission.name.toLowerCase());\r\n\r\n if (!excitingName) {\r\n const temporaryPermission: IPriceArea = {\r\n transportationPermissionName: this.transportationPermission.name,\r\n passengerGroupName: \"\",\r\n priceAreas: [0, 0, 0, 0, 0, 0],\r\n };\r\n allPriceAreas.push(temporaryPermission);\r\n }\r\n\r\n }\r\n\r\n return allPriceAreas.map((p) => p.transportationPermissionName);\r\n }\r\n\r\n get instanceConfigHasExtras(): boolean {\r\n return this.instanceConfigExtras && this.instanceConfigExtras.length > 0;\r\n }\r\n\r\n removeExtra(extra: TransportationPermissionExtra) {\r\n let target: TransportationPermissionExtra | null;\r\n let index: number;\r\n if (extra.id > 0) {\r\n target = this.transportationPermission.extras.find(\r\n (e) => e.id === extra.id\r\n );\r\n index = this.transportationPermission.extras.indexOf(target);\r\n this.transportationPermission.extras.splice(index, 1);\r\n } else {\r\n target = this.transportationPermission.extras.find(\r\n (e) => e.name === extra.name && e.price === extra.price\r\n );\r\n index = this.transportationPermission.extras.indexOf(target);\r\n this.transportationPermission.extras.splice(index, 1);\r\n }\r\n }\r\n\r\n addExtra() {\r\n const newExtra = new TransportationPermissionExtra();\r\n if (this.selectedExtra || this.newExtra.name.length > 0) {\r\n newExtra.id = 0;\r\n newExtra.name = this.selectedExtra\r\n ? this.selectedExtra.name\r\n : this.newExtra.name;\r\n newExtra.price = this.selectedExtra\r\n ? this.selectedExtra.defaultPrice\r\n : this.newExtra.price;\r\n newExtra.extraId = this.selectedExtra ? this.selectedExtra.id : null;\r\n newExtra.passengerTransportationPermissionId =\r\n this.transportationPermission.id;\r\n\r\n this.transportationPermission.extras.push(newExtra);\r\n if (this.selectedExtra) {\r\n this.selectedExtra = null;\r\n }\r\n this.newExtra.name = \"\";\r\n this.newExtra.price = 0;\r\n }\r\n }\r\n\r\n get fieldNotSupportedInVersionNotificationText() {\r\n return this.$i18n.translate(\r\n \"destination.warning.field.notAvailable\",\r\n \"Field not available for destination\"\r\n );\r\n }\r\n\r\n get deductiblePaymentOptions() {\r\n return [\r\n {\r\n text: this.$i18n.translate(\r\n \"transportationPermission.deductiblePayment.car\",\r\n \"Driver\"\r\n ),\r\n value: DeductiblePaymentEnum.Car,\r\n },\r\n {\r\n text: this.$i18n.translate(\r\n \"transportationPermission.deductiblePayment.invoice\",\r\n \"Invoice\"\r\n ),\r\n value: DeductiblePaymentEnum.Invoice,\r\n },\r\n ];\r\n }\r\n\r\n get showDeductiblePaymentOptions(): boolean {\r\n if (!this.showChangedIterator) {\r\n return false;\r\n }\r\n return (\r\n this.transportationPermission &&\r\n this.transportationPermission.deductibleType !==\r\n DeductibleTypeEnum.NoDeductible\r\n );\r\n }\r\n\r\n get showPriceCodeField(): boolean {\r\n if (!this.showChangedIterator) {\r\n return false;\r\n }\r\n return (\r\n this.transportationPermission &&\r\n this.transportationPermission.deductibleType != DeductibleTypeEnum.FixedMonthly);\r\n }\r\n\r\n get showFixedDeductibleField(): boolean {\r\n if (!this.showChangedIterator) {\r\n return false;\r\n }\r\n return (\r\n this.transportationPermission &&\r\n (this.transportationPermission.deductibleType === DeductibleTypeEnum.Static ||\r\n this.transportationPermission.deductibleType === DeductibleTypeEnum.FixedMonthly)\r\n );\r\n }\r\n\r\n get deductibleTypeOptions() {\r\n return [\r\n {\r\n text: this.$i18n.translate(\r\n \"transportationPermission.deductibleType.noDeductible\",\r\n \"No excess\"\r\n ),\r\n value: DeductibleTypeEnum.NoDeductible,\r\n },\r\n {\r\n text: this.$i18n.translate(\r\n \"transportationPermission.deductibleType.static\",\r\n \"Fixed amount\"\r\n ),\r\n value: DeductibleTypeEnum.Static,\r\n },\r\n {\r\n text: this.$i18n.translate(\r\n \"transportationPermission.deductibleType.matkahuolto\",\r\n \"Matkahuolto\"\r\n ),\r\n value: DeductibleTypeEnum.Matkahuolto,\r\n },\r\n {\r\n text: this.$i18n.translate(\r\n \"transportationPermission.deductibleType.walttiHame\",\r\n \"WalttiHäme\"\r\n ),\r\n value: DeductibleTypeEnum.WalttiHäme,\r\n },\r\n {\r\n text: this.$i18n.translate(\r\n \"transportationPermission.deductibleType.riihimaki\",\r\n \"Riihimäki\"\r\n ),\r\n value: DeductibleTypeEnum.Riihimäki,\r\n },\r\n ];\r\n }\r\n\r\n setPrice(price: number) {\r\n this.transportationPermission.priceCode = price.toString();\r\n }\r\n\r\n async savePermission() {\r\n this.loading = true;\r\n if (this.transportationPermission.deductibleType !== DeductibleTypeEnum.Static &&\r\n this.transportationPermission.deductibleType !== DeductibleTypeEnum.FixedMonthly) {\r\n // clear out fixedDeductible if deductibleType is not static/fixed\r\n this.transportationPermission.fixedDeductible = null;\r\n }\r\n if (this.transportationPermission.id) {\r\n // update existing\r\n const result = await this.$store.dispatch(\r\n \"passenger/updateTransportationPermission\",\r\n {\r\n params: {\r\n passengerId: this.passenger.id,\r\n transportationPermissionId: this.transportationPermission.id,\r\n },\r\n data: this.transportationPermission,\r\n }\r\n );\r\n const permission: TransportationPermission = new TransportationPermission(result.data);\r\n this.$emit(\"updatePermission\", permission);\r\n } else {\r\n // create new\r\n await this.$store.dispatch(\"passenger/createTransportationPermission\", {\r\n params: {\r\n passengerId: this.passenger.id,\r\n },\r\n data: this.transportationPermission,\r\n });\r\n }\r\n\r\n if (this.passenger.organizationId) {\r\n await this.$store.dispatch(\r\n \"organization/getPtpNamesForOrganization\",\r\n {\r\n params: {\r\n id: this.passenger.organizationId,\r\n },\r\n }\r\n );\r\n\r\n await this.$store.dispatch(\r\n \"organization/getCostCentersForOrganization\",\r\n {\r\n params: {\r\n id: this.passenger.organizationId,\r\n },\r\n }\r\n );\r\n\r\n }\r\n\r\n this.loading = false;\r\n this.closeEditor();\r\n }\r\n\r\n async deletePermission() {\r\n if (!this.transportationPermission.id) {\r\n return;\r\n }\r\n if (!confirm(\"Oletko varma että haluat poistaa matkaoikeuden?\")) {\r\n return;\r\n }\r\n // delete existing\r\n try {\r\n const result = await this.$store.dispatch(\r\n \"passenger/deleteTransportationPermission\",\r\n {\r\n params: {\r\n passengerId: this.passenger.id,\r\n transportationPermissionId: this.transportationPermission.id,\r\n },\r\n }\r\n );\r\n this.$emit(\"onDelete\", new TransportationPermission(result.data));\r\n } catch (err) {\r\n console.error(err);\r\n let message;\r\n if ((err as any).message.includes('Permission has reservations. Can not be deleted.')) {\r\n message = this.$i18n.translate('transportationPermission.error.hasPermission', 'Kuljetuspäätöksellä on matka varauksia eikä sitä voi poistaa.');\r\n } else {\r\n message = this.$i18n.translate('transportationPermission.error.failed', 'Kuljetupäätöksen poistaminen epäonnistui.');\r\n }\r\n vuetifyToast.error(message);\r\n }\r\n this.closeEditor();\r\n \r\n }\r\n\r\n closeEditor() {\r\n this.$emit(\"close\");\r\n this.$emit(\"input\", null);\r\n }\r\n\r\n created() {\r\n (window as any).__tpeditor = this;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TransportationPermissionEditor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TransportationPermissionEditor.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TransportationPermissionEditor.vue?vue&type=template&id=9aac33b6&\"\nimport script from \"./TransportationPermissionEditor.vue?vue&type=script&lang=ts&\"\nexport * from \"./TransportationPermissionEditor.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport {Vue, Prop, Component, Watch} from 'vue-property-decorator';\r\nimport restService from '@/services/restService';\r\nimport vuetifyToast from \"vuetify-toast\";\r\nimport Passenger from '../Passenger/models/Passenger';\r\nimport TransportationPermission from '../Passenger/models/TransportationPermission';\r\nimport TransportationPermissionEditor from '../Passenger/components/TransportationPermissionEditor.vue'\r\nimport { IPermissionWithPassengerName } from './OrganizationTransportationPermissions.vue';\r\nimport { AxiosResponse } from 'axios';\r\nimport DateTimePicker from '../DatetimePicker.vue';\r\n@Component({\r\n components: {\r\n TransportationPermissionEditor,\r\n DateTimePicker,\r\n }\r\n})\r\nexport default class PassengerTransportationPermissionTable extends Vue {\r\n\r\nsearch: string = '';\r\nloading = false;\r\nshowTransportationPermissionEditor = false;\r\nselectedPermission: TransportationPermission | null = null;\r\nselectedPassenger: Passenger | null = null;\r\ndateFilter: boolean = false;\r\nstart: string = '';\r\nend: string = '';\r\npagination = {\r\n rowsPerPage: 25 // -1 for All,\r\n}\r\n@Prop() private startDate: string;\r\n@Prop() private endDate: string;\r\n@Prop() private filterWithDates: boolean;\r\n@Prop({default: () => []}) private permissions: IPermissionWithPassengerName[];\r\n\r\n@Watch('filterWithDates', {immediate: true})\r\nfilterWithDatesChanged(immediate: true) {\r\n this.dateFilter = this.filterWithDates;\r\n}\r\n\r\n@Watch('startDate', {immediate: true})\r\nstartDateChanged() {\r\n this.start = this.startDate;\r\n}\r\n\r\n@Watch('endDate', {immediate: true})\r\nendDatesChanged() {\r\n this.end = this.endDate;\r\n}\r\n\r\nget headers() {\r\n \r\n const headers = [\r\n { text: this.$t('generic.header.passenger.one', 'Passenger'),\r\n value: 'name', align: 'left', sortable: true },\r\n { text: this.$t('generic.instance', 'Instance'),\r\n value: 'mainPlace.movitInstanceName', align: 'left', sortable: true },\r\n { text: this.$t('passenger.prop.destinations.main', 'Main place'),\r\n value: 'mainPlace.alias', align: 'left', sortable: true },\r\n { text: this.$t('passenger.prop.transportationPermissions.single', 'Transportation permission'),\r\n value: 'transportationPermission.name', align: 'left', sortable: true },\r\n { text: this.$t('passenger.prop.transportationPermissions.startDate', 'Start date'),\r\n value: 'transportationPermission.startDate', align: 'left', sortable: true },\r\n { text: this.$t('passenger.prop.transportationPermissions.endDate', 'End date'),\r\n value: 'transportationPermission.endDate', align: 'left', sortable: true },\r\n { text: this.$t('passenger.prop.transportationPermissions.price', 'Price'),\r\n value: 'transportationPermission.priceCode', align: 'left', sortable: true },\r\n { text: this.$t('transportationPermission.costCenter', 'Cost center'),\r\n value: 'transportationPermission.costCenter.name', align: 'left', sortable: true },\r\n { text: this.$t('booking.info.state.label', 'State'),\r\n value: 'transportationpermission.isDraft', align: 'left', sortable: false },\r\n ];\r\n\r\n return headers;\r\n }\r\n\r\n dateFilterSet() {\r\n this.$emit('filterWithDatesChanged', this.dateFilter);\r\n }\r\n\r\n async openPassengerPermission(permission: IPermissionWithPassengerName) {\r\n this.selectedPassenger = (await restService.passengers.getPassengersByIds([permission.transportationPermission.passengerId]))[0];\r\n console.log(\"this.selectedPassenger\", this.selectedPassenger);\r\n if (!this.selectedPassenger){\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n \"passenger.passenger_not_found\",\r\n \"API connection error.\"\r\n )\r\n );\r\n return;\r\n }\r\n await this.$store.dispatch(\r\n \"passenger/getPassengerTransportationPermissionInfo\", \r\n { \r\n params: { \r\n passengerId: this.selectedPassenger.id \r\n }\r\n }\r\n );\r\n this.selectedPermission = permission.transportationPermission;\r\n this.showTransportationPermissionEditor = true;\r\n }\r\n\r\n clearSelected() {\r\n this.selectedPassenger = null;\r\n this.selectedPermission = null;\r\n this.showTransportationPermissionEditor = false;\r\n }\r\n\r\n updatePermission(permission: TransportationPermission) {\r\n this.$emit('updatePermissions', permission);\r\n this.clearSelected();\r\n }\r\n\r\n removePermission(permission: TransportationPermission) {\r\n this.$emit('removePermission', permission);\r\n this.clearSelected();\r\n }\r\n \r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerTransportationPermissionTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerTransportationPermissionTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerTransportationPermissionTable.vue?vue&type=template&id=a2c07a7e&scoped=true&\"\nimport script from \"./PassengerTransportationPermissionTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerTransportationPermissionTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PassengerTransportationPermissionTable.vue?vue&type=style&index=0&id=a2c07a7e&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a2c07a7e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport restService from '@/services/restService';\r\nimport { Vue, Prop, Component } from 'vue-property-decorator';\r\nimport TransportationPermission from '../Passenger/models/TransportationPermission';\r\nimport PassengerTransportationPermissionTable from '@/components/Organization/PassengerTransportationPermissionTable.vue';\r\nimport Passenger from '../Passenger/models/Passenger';\r\nimport Destination from '../Passenger/models/Destination';\r\nimport { remove } from 'jszip';\r\nimport moment from 'moment';\r\nimport DateTimePicker from '../DatetimePicker.vue';\r\n\r\nexport interface IPermissionWithPassengerName {\r\n name: string;\r\n passengerInactive: boolean;\r\n mainPlace: Destination | null;\r\n transportationPermission: TransportationPermission;\r\n isValid: boolean;\r\n}\r\n\r\n@Component({\r\n components : {\r\n PassengerTransportationPermissionTable,\r\n DateTimePicker,\r\n }\r\n})\r\nexport default class OrganizationTransportationPermissions extends Vue {\r\n today: Date = new Date();\r\n tab: number = 0;\r\n transportationPermissions: IPermissionWithPassengerName[] = [];\r\n showOnlyActivePermissions: boolean = false;\r\n useDateFilter: boolean = false;\r\n start = new Date();\r\n end = new Date();\r\n\r\n async mounted() {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n this.today = today;\r\n this.start = new Date(new Date().getFullYear(), 0, 1);\r\n this.end = new Date(new Date().getFullYear() + 1, 0, 1);\r\n this.end.setDate(this.end.getDate() - 1);\r\n await this.getPermissions() \r\n }\r\n\r\n get startDate() {\r\n return moment(this.start).format(\"YYYY-MM-DD\");\r\n }\r\n\r\n setStartDate(val: string) {\r\n this.start = new Date(val);\r\n }\r\n\r\n get endDate() {\r\n return moment(this.end).format(\"YYYY-MM-DD\");\r\n }\r\n\r\n setEndDate(val) {\r\n this.end = new Date(val);\r\n }\r\n\r\n dateFilterChanged(val) {\r\n this.useDateFilter = val;\r\n }\r\n\r\n get routeOrganizationId() {\r\n return this.$route.params.organizationId;\r\n }\r\n\r\n get all() {\r\n if (this.transportationPermissions) {\r\n let content = this.transportationPermissions;\r\n if (this.showOnlyActivePermissions) {\r\n content = content.filter(c => c.isValid);\r\n }\r\n return this.filterPermissionByTimePeriod(content);\r\n }\r\n return [];\r\n }\r\n\r\n get drafts() {\r\n if (this.transportationPermissions) {\r\n const content = this.transportationPermissions.filter(t => t.transportationPermission.isDraft);\r\n return this.filterPermissionByTimePeriod(content);\r\n }\r\n return [];\r\n }\r\n\r\n get completedPermissions() {\r\n if (this.transportationPermissions) {\r\n let content = this.transportationPermissions.filter(t => !t.transportationPermission.isDraft);\r\n if (this.showOnlyActivePermissions) {\r\n content = content.filter(c => c.isValid);\r\n }\r\n return this.filterPermissionByTimePeriod(content)\r\n }\r\n return [];\r\n }\r\n\r\n get expiredPermissions() {\r\n if (this.transportationPermissions) {\r\n // tslint:disable-next-line:max-line-length\r\n const content = this.transportationPermissions.filter(t => !t.isValid && !t.transportationPermission.isDraft);\r\n return this.filterPermissionByTimePeriod(content)\r\n }\r\n }\r\n\r\n async getPermissions() {\r\n const result = await restService.organizations.getTransportationPermissions(this.routeOrganizationId);\r\n const passengerIds = result.map(perm => perm.passengerId);\r\n const passengers = await restService.passengers.getPassengersByIds(passengerIds);\r\n this.transportationPermissions = result.map(r => {\r\n const passenger: Passenger = passengers.find(p => p.id === r.passengerId)\r\n if (!passenger){\r\n return null;\r\n }\r\n const passengerMainPlace = (this.$store.state.destination.destinations as Destination[])\r\n .find(d => passenger.destinationIds.includes(d.id));\r\n let endDate = null;\r\n if (r.endDate) {\r\n endDate = new Date(r.endDate);\r\n }\r\n\r\n const tableContent: IPermissionWithPassengerName = {\r\n name: passenger.name,\r\n passengerInactive: passenger.inactive,\r\n mainPlace: !!passengerMainPlace ? passengerMainPlace : null,\r\n transportationPermission: new TransportationPermission(r),\r\n isValid: endDate.getTime() >= this.today.getTime() || !endDate,\r\n }\r\n\r\n return tableContent;\r\n })\r\n .filter(tp => tp)\r\n }\r\n\r\n filterPermissionByTimePeriod(content: IPermissionWithPassengerName[]) {\r\n if (this.useDateFilter) {\r\n return content.filter(c => {\r\n const permissionEndDate = new Date(c.transportationPermission.endDateYMD);\r\n return permissionEndDate.getTime() >= this.start.getTime() && permissionEndDate.getTime() <= this.end.getTime();\r\n });\r\n }\r\n return content;\r\n }\r\n\r\n updatePermissions(permission: TransportationPermission) {\r\n const target = this.transportationPermissions.find(p => p.transportationPermission.id === permission.id);\r\n if (target) {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n let permissionEndDate = null;\r\n if (permission.endDate) {\r\n permissionEndDate = new Date(permission.endDate);\r\n }\r\n const updatedPermission: IPermissionWithPassengerName = {\r\n name: target.name,\r\n passengerInactive: target.passengerInactive,\r\n mainPlace: target.mainPlace,\r\n transportationPermission: permission,\r\n isValid: permissionEndDate.getTime() >= today.getTime() || !permissionEndDate \r\n };\r\n const index = this.transportationPermissions.indexOf(target);\r\n this.transportationPermissions.splice(index, 1, updatedPermission);\r\n }\r\n\r\n }\r\n \r\n removePermission(permission: TransportationPermission) {\r\n const target = this.transportationPermissions.find(p => p.transportationPermission.id === permission.id);\r\n if (target) {\r\n const index = this.transportationPermissions.indexOf(target);\r\n this.transportationPermissions.splice(index, 1);\r\n }\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrganizationTransportationPermissions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrganizationTransportationPermissions.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OrganizationTransportationPermissions.vue?vue&type=template&id=00e2eafb&\"\nimport script from \"./OrganizationTransportationPermissions.vue?vue&type=script&lang=ts&\"\nexport * from \"./OrganizationTransportationPermissions.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"timetable-page\"},[_c('PassengerEditor'),_c('PassengerDialog'),_c('TimetableEditor'),_c('TimetableInfoDialog'),(_vm.destination.bookingEnabled && _vm.userCanViewBookings)?_c('BookingEditor'):_vm._e(),(_vm.destination.bookingEnabled && _vm.userCanViewBookings)?_c('BookingInfoDialog'):_vm._e(),(_vm.destination.bookingEnabled && _vm.userCanViewBookings && _vm.userCanViewTimeTables)?_c('v-tabs',{attrs:{\"fixed-tabs\":\"\",\"icons-and-text\":\"\"},model:{value:(_vm.selectedBookingRouteTabId),callback:function ($$v) {_vm.selectedBookingRouteTabId=$$v},expression:\"selectedBookingRouteTabId\"}},[_c('v-tab',{attrs:{\"id\":\"0\"},on:{\"click\":_vm.onSingleBookingTabClick}},[_vm._v(_vm._s(_vm.$t('timetable.single'))),_c('v-icon',[_vm._v(\"done\")])],1),_c('v-tab',{attrs:{\"id\":\"1\"},on:{\"click\":_vm.onRecurringBookingTabClick}},[_vm._v(_vm._s(_vm.$t('timetable.recurring'))),_c('v-icon',[_vm._v(\"done_all\")])],1)],1):_vm._e(),_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue';\r\nimport { Component, Prop, Watch } from 'vue-property-decorator';\r\nimport vuetifyToast from 'vuetify-toast';\r\nimport './TimetableEditor.scss'\r\nimport DateTimePicker from '@/components/DatetimePicker.vue';\r\nimport Timetable from '@/components/Timetable/models/Timetable';\r\nimport moment from 'moment';\r\nimport { Ride } from '@/components/Timetable/models/Ride';\r\nimport { TimetableStates } from '@/components/Timetable/models/TimetableStates';\r\nimport { RolePermission } from '@/models/Role';\r\nimport Routes from '../../../Routes';\r\n\r\n@Component({\r\n template: require(\"./TimetableEditor.vue.html\"),\r\n components: {\r\n DateTimePicker\r\n }\r\n})\r\nexport class TimetableEditor extends Vue {\r\n static EVENT_TIMETABLE_EDITOR_OPEN = \"EVENT_TIMETABLE_EDITOR_OPEN\";\r\n static EVENT_TIMETABLE_EDITOR_CLOSE = \"EVENT_TIMETABLE_EDITOR_CLOSE\";\r\n\r\n show: boolean = false;\r\n resetTimeout: any = null;\r\n showEditor: boolean = false;\r\n editedTimetable: Timetable = new Timetable(null);\r\n valid: boolean = true;\r\n saving: boolean = false;\r\n deleting: boolean = false;\r\n $confirm: any;\r\n\r\n startDateString: string = null;\r\n @Watch('startDateString')\r\n onStartDateStringChanged(val, oldVal) {\r\n this.editedTimetable.startDateString = val;\r\n }\r\n\r\n endDateString: string = null;\r\n @Watch('endDateString')\r\n onEndDateStringChanged(val, oldVal) {\r\n this.editedTimetable.endDateString = val;\r\n }\r\n\r\n @Watch('show')\r\n onShowChanged(val, oldVal) {\r\n // console.log(\"onShowChanged\")\r\n if (val) {\r\n if (this.resetTimeout){\r\n clearTimeout(this.resetTimeout);\r\n }\r\n } else {\r\n // Reset to empty after a small delay (after close transition)\r\n this.resetTimeout = setTimeout(() => { \r\n this.startDateString = null;\r\n this.endDateString = null;\r\n this.editedTimetable = new Timetable(null);\r\n }, 500);\r\n }\r\n this.showEditor = val;\r\n }\r\n\r\n get storeTimetables(){\r\n return this.$store.state.timetable.timetables;\r\n }\r\n\r\n get timetableIsLocked(){\r\n return this.editedTimetable.isLocked;\r\n }\r\n\r\n get timetableRides(): Ride[] {\r\n return this.$store.state.ride.rides.filter((ride: Ride) => ride.timetableId === this.editedTimetable.id);\r\n }\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n get me() {\r\n return this.$store.state.user.me;\r\n }\r\n\r\n get userCanDeleteTimetables(): boolean {\r\n return this.me \r\n ? this.me.hasPermissions(this.routeDestinationId, [RolePermission.DeleteTimetables])\r\n : false;\r\n }\r\n\r\n get showWeekends(): boolean {\r\n return this.$store.state.user.showWeekends;\r\n }\r\n\r\n get minStartDateString(): string {\r\n const tomorrowMoment = moment().startOf('day').add(1, 'days');\r\n return tomorrowMoment.format('YYYY-MM-DD');\r\n }\r\n\r\n get minEndDateString(): string {\r\n const tomorrowMoment = moment().startOf('day').add(1, 'days');\r\n const startDateMoment = moment(this.startDateString);\r\n const laterMoment = startDateMoment.isAfter(tomorrowMoment) \r\n ? startDateMoment\r\n : tomorrowMoment;\r\n return laterMoment.format('YYYY-MM-DD');\r\n }\r\n\r\n @Watch('$route', { immediate: true })\r\n onRouteChanged(val, oldVal) {\r\n if (val.name === Routes.timetableListCreateNewRoute.name){\r\n this.openNewTimetableDialog();\r\n } else if (oldVal && oldVal.name === Routes.timetableListCreateNewRoute.name) {\r\n this.closeNewTimetableDialog();\r\n }\r\n }\r\n \r\n closeNewTimetableDialog() {\r\n this.$root.$emit(TimetableEditor.EVENT_TIMETABLE_EDITOR_CLOSE);\r\n }\r\n\r\n openNewTimetableDialog(){\r\n // console.log(\"onCreateTimeTableClick\", \"destinationId:\", destinationId);\r\n const destinationId: number = this.routeDestinationId;\r\n // When Show weekends is on\r\n // - startDate always next day\r\n // When Hide weekends is on\r\n // - startDate monday if current day is fri(5), sat(6), or sun (0 and 7)\r\n // Both cases\r\n // - endDate always same as startDate day\r\n\r\n const startDate = this.showWeekends \r\n ? moment().add(1, \"days\").toDate()\r\n : moment().isoWeekday() === 0 || moment().isoWeekday() >= 5 \r\n ? moment().add(1, \"weeks\").startOf('isoWeek').toDate()\r\n : moment().add(1, \"days\").toDate();\r\n \r\n const newTimetable: Timetable = new Timetable(\r\n {\r\n startDate,\r\n endDate: startDate,\r\n destinationId,\r\n creating: true\r\n }\r\n )\r\n this.onEditTimetable(newTimetable);\r\n }\r\n\r\n created(){\r\n this.$root.$on(TimetableEditor.EVENT_TIMETABLE_EDITOR_OPEN, this.onEditTimetable)\r\n this.$root.$on(TimetableEditor.EVENT_TIMETABLE_EDITOR_CLOSE, this.onCloseEditorEvent)\r\n }\r\n\r\n onCloseEditorEvent(){\r\n this.show = false;\r\n }\r\n\r\n onEditTimetable(timetable: Timetable){\r\n\r\n // console.log(\"TimetableEditor\", \"onEditTimetable()\", \"timetable:\", timetable);\r\n this.editedTimetable = Timetable.CopyFrom(timetable);\r\n this.startDateString = this.editedTimetable.startDateString;\r\n this.endDateString = this.editedTimetable.endDateString;\r\n this.show = true;\r\n }\r\n\r\n async onStartDateStringUpdated(val, oldVal) {\r\n // console.log(\"onStartDateStringUpdated\", \"val:\", val, \"oldVal\", oldVal);\r\n // console.log(\"old startDate:\", oldVal);\r\n // console.log(\"old endDate:\", this.endDateString);\r\n // console.log(\"new startDate:\", val);\r\n if (!this.startDateString){\r\n return;\r\n }\r\n this.startDateString = val;\r\n const startMoment = moment(this.startDateString);\r\n let endMoment = moment(this.endDateString);\r\n \r\n if (startMoment.isAfter(endMoment)){\r\n // new startDate is after old endDate\r\n // get the previous duration, in days\r\n const oldStartMoment = moment(oldVal);\r\n const previousDurationDays = endMoment.diff(oldStartMoment, 'days');\r\n \r\n // set the new end moment to the future so that the duration will be the same\r\n endMoment = startMoment.clone().add(previousDurationDays, \"days\");\r\n // console.log(\r\n // \"new endDate:\", \r\n // val, \" plus \", \r\n // previousDurationDays, \r\n // \"days =\", \r\n // endMoment.format('YYYY-MM-DD')\r\n // );\r\n if (endMoment.isoWeekday() > 5 && !this.showWeekends){\r\n // if the new end moment ended up on a weekend, rewing it to the same week's friday\r\n endMoment.isoWeekday(5);\r\n }\r\n // write out the new endDate \r\n this.endDateString = endMoment.format('YYYY-MM-DD');\r\n // focus the end date picker to catch users attention, to verify autoset date\r\n (this.$refs.endDatePicker as any).$children[0].isActive = true;\r\n } \r\n }\r\n\r\n async onEndDateStringUpdated(e) {\r\n this.endDateString = e;\r\n }\r\n\r\n async onDeleteClick(){\r\n this.deleting = true;\r\n // TODO: Check that timetable state allows for deletion\r\n\r\n // Confirm deletion\r\n let deleteConfirmed = false;\r\n try {\r\n await this.$confirm(\r\n { \r\n title: this.$i18n.translate(\"timetable.delete.confirm.dialog.title\", \"Deleting timetable\"),\r\n message: this.$i18n.translate(\r\n \"timetable.delete.confirm.dialog.message\", \r\n \"Do you really want to delete the timetable?\"\r\n ),\r\n okButton: this.$i18n.translate(\"timetable.delete.confirm.dialog.yes\", \"Yes\"), \r\n cancelButton: this.$i18n.translate(\"timetable.delete.confirm.dialog.no\", \"No\"),\r\n }\r\n )\r\n deleteConfirmed = true;\r\n } catch (err) {\r\n // Confirm deletion was answered \"No\", we are expecting the confirm dialog to throw an error\r\n }\r\n\r\n // Check if deletion was confirmed\r\n if (deleteConfirmed){\r\n // Deletion was confirmed\r\n try {\r\n const destinationId = this.editedTimetable.destinationId;\r\n await this.$store.dispatch('ride/deleteRides', { data: this.timetableRides.map((r: Ride) => r.id) });\r\n await this.$store.dispatch('timetable/deleteTimetable', { params: { id: this.editedTimetable.id} });\r\n this.show = false;\r\n // TODO: If timetable order has been sent in the past, should we notify Movit of deletion?\r\n } catch (err) {\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n 'timetable.delete.error.generic', \r\n 'There was an error deleting the timetable. Please reload the page and try again later.'\r\n )\r\n )\r\n console.error(\"Error when saving passenger:\", err);\r\n }\r\n }\r\n this.deleting = false;\r\n }\r\n\r\n async onSubmit() {\r\n // console.log(\"onSubmit\")\r\n if ((this.$refs.form as any).validate()) {\r\n this.saveTimetable();\r\n }\r\n }\r\n \r\n async saveTimetable() {\r\n // console.log(\"saving timetable\");\r\n console.log(this.editedTimetable);\r\n this.saving = true;\r\n try {\r\n if (this.editedTimetable.creating){\r\n // Make sure we don't have id set to null, but rather undefined\r\n delete this.editedTimetable.id;\r\n // Create\r\n const response = await this.$store.dispatch(\r\n 'timetable/createTimetable', \r\n { \r\n data: Timetable.toApi(this.editedTimetable)\r\n }\r\n );\r\n\r\n const newTimetableId = response.data.id;\r\n \r\n if (this.editedTimetable.createWithAllDestinationPassengers) {\r\n // console.log(\"with passengers\");\r\n this.$router.push({\r\n name: 'Timetable', \r\n params: { \r\n timetableId: newTimetableId.toString()\r\n },\r\n query: { created: \"true\" }\r\n });\r\n } else {\r\n // console.log(\"without passengers?\");\r\n this.$router.push({\r\n name: 'Timetable', \r\n params: { \r\n timetableId: newTimetableId.toString()\r\n },\r\n query: { addpeople: \"true\" }\r\n });\r\n }\r\n } else {\r\n // Update\r\n \r\n await this.$store.dispatch(\r\n 'timetable/updateTimetable', \r\n { \r\n params: { id: this.editedTimetable.id}, \r\n data: Timetable.toApi(this.editedTimetable)\r\n }\r\n );\r\n }\r\n } catch (ex) {\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n \"timetable.edit.save.error\", \r\n \"Something went wrong when saving the timetable. Please try again later.\"\r\n )\r\n );\r\n }\r\n this.saving = false;\r\n this.show = false;\r\n }\r\n\r\n get routeStateNameLowerCase(): string {\r\n return this.$store.state.route.params.state;\r\n }\r\n\r\n get isCreateNewTimetableRoute(): boolean {\r\n return this.$route.name === Routes.timetableListCreateNewRoute.name\r\n }\r\n\r\n onCloseClick() {\r\n if (this.isCreateNewTimetableRoute){\r\n this.$router.push({\r\n name: Routes.timetableListWithStateRoute.name, \r\n params: { \r\n state: this.routeStateNameLowerCase\r\n }\r\n })\r\n } else {\r\n this.show = false;\r\n }\r\n }\r\n\r\n beforeDestroy(){\r\n if (this.resetTimeout){\r\n clearTimeout(this.resetTimeout);\r\n }\r\n this.$root.$off(TimetableEditor.EVENT_TIMETABLE_EDITOR_OPEN, this.onEditTimetable)\r\n }\r\n}\r\n\r\nexport default TimetableEditor;\r\n","var render, staticRenderFns\nimport script from \"./TimetableEditor.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimetableEditor.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimetableEditor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimetableEditor.vue?vue&type=script&lang=ts&\"","\r\nimport Vue from 'vue';\r\nimport { Component, Prop, Watch } from 'vue-property-decorator';\r\nimport vuetifyToast from 'vuetify-toast';\r\nimport './TimetableInfoDialog.scss'\r\nimport Timetable from '@/components/Timetable/models/Timetable';\r\nimport moment from 'moment';\r\nimport { TimetableStates } from '@/components/Timetable/models/TimetableStates';\r\nimport { Destination } from '@/components/Passenger/models/Destination';\r\n\r\n@Component({\r\n template: require(\"./TimetableInfoDialog.vue.html\"),\r\n components: {\r\n \r\n }\r\n})\r\nexport class TimetableInfoDialog extends Vue {\r\n static EVENT_TIMETABLE_INFO_DIALOG_OPEN = \"EVENT_TIMETABLE_INFO_DIALOG_OPEN\";\r\n\r\n show: boolean = false;\r\n timetable: Timetable = null;\r\n\r\n get destination(): Destination {\r\n return this.$store.state.destination.destinations.find(d => d.id === this.timetable.destinationId);\r\n }\r\n\r\n isValidDate(date: Date): boolean {\r\n return date.getTime() > 946684800000;\r\n }\r\n\r\n formatDate(date: Date): string {\r\n return moment(date).locale(this.$i18n.locale()).format('LLL');\r\n }\r\n\r\n created(){\r\n this.$root.$on(TimetableInfoDialog.EVENT_TIMETABLE_INFO_DIALOG_OPEN, this.onOpenDialog)\r\n }\r\n\r\n onOpenDialog(timetable: Timetable){\r\n // console.log(\"TimetableInfoDialog\", \"onOpenDialog()\", \"timetable:\", timetable);\r\n this.timetable = timetable;\r\n this.show = true;\r\n }\r\n\r\n onCloseClick() {\r\n this.show = false;\r\n }\r\n\r\n beforeDestroy(){\r\n this.$root.$off(TimetableInfoDialog.EVENT_TIMETABLE_INFO_DIALOG_OPEN, this.onOpenDialog)\r\n }\r\n}\r\n\r\nexport default TimetableInfoDialog;\r\n","var render, staticRenderFns\nimport script from \"./TimetableInfoDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimetableInfoDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimetableInfoDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimetableInfoDialog.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.editedBooking)?_c('v-dialog',{attrs:{\"persistent\":\"\",\"scrollable\":\"\",\"max-width\":\"500px\"},model:{value:(_vm.showEditor),callback:function ($$v) {_vm.showEditor=$$v},expression:\"showEditor\"}},[_c('v-card',{staticClass:\"booking-editor\"},[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[(_vm.editedBooking.creating)?[_vm._v(\" \"+_vm._s(_vm.$t(\"booking.edit.title_create\", \"Create booking\"))+\" \")]:_vm._e(),(!_vm.editedBooking.creating)?[_vm._v(\" \"+_vm._s(_vm.$t(\"booking.edit.title\", \"Edit booking\"))+\" \")]:_vm._e()],2),_c('v-spacer'),_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"grey\",\"disabled\":_vm.saving || _vm.deleting},on:{\"click\":function($event){$event.stopPropagation();return _vm.onCloseClick($event)}}},[_vm._v(_vm._s(_vm.$t(\"generic.close\", \"Close\")))])],1),_c('v-card-text',{staticClass:\"booking-editor-card-content\"},[_c('v-stepper',{staticClass:\"elevation-0\",attrs:{\"vertical\":\"\"},model:{value:(_vm.step),callback:function ($$v) {_vm.step=$$v},expression:\"step\"}},[_c('v-stepper-step',{attrs:{\"editable\":_vm.priceEstimate && _vm.selectedProduct ? true : false,\"complete\":_vm.step > 1,\"step\":\"1\"}},[_vm._v(\" \"+_vm._s(_vm.$t('generic.header.passenger.one'))+\" \"),_c('small',[(_vm.selectedPassenger && _vm.selectedPassenger.name)?_c('span',[_vm._v(_vm._s(_vm.selectedPassenger.name))]):_vm._e()])]),_c('v-stepper-content',{attrs:{\"step\":\"1\"}},[_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\",\"pl-4\":\"\",\"pt-1\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm12\":\"\",\"pr-2\":\"\"}},[_c('v-autocomplete',{attrs:{\"items\":_vm.passengerOptions,\"clearable\":\"\",\"item-text\":\"name\",\"item-value\":\"id\",\"placeholder\":_vm.$t('generic.searchPassengerByName'),\"chips\":\"\",\"filter\":_vm.passengerSelectFilter,\"max-height\":\"auto\",\"loading\":_vm.searchInProgress,\"hide-no-data\":_vm.searchInProgress || !_vm.passengerSearchInput || _vm.passengerSearchInput.length < 1,\"no-data-text\":_vm.$t('generic.autocomplete.no-data-text', 'No data available'),\"search-input\":_vm.passengerSearchInput},on:{\"update:searchInput\":function($event){_vm.passengerSearchInput=$event},\"update:search-input\":function($event){_vm.passengerSearchInput=$event}},scopedSlots:_vm._u([{key:\"selection\",fn:function(data){return [_c('v-chip',{key:data.item.name,staticClass:\"chip--select-single\",attrs:{\"selected\":data.selected,\"small\":\"\"},on:{\"input\":function($event){return data.parent.selectItem(data.item)}}},[_vm._v(_vm._s(data.item.name))])]}},{key:\"item\",fn:function(data){return [(!data.item.creator)?_c('v-list-tile-content',[_c('v-list-tile-title',{domProps:{\"innerHTML\":_vm._s(data.item.name)}})],1):_vm._e(),(data.item.creator)?_c('v-list-tile-content',[_c('v-list-tile-title',[_vm._v(\" \"+_vm._s(_vm.passengerSearchInput)+\" \"),_c('span',{staticClass:\"grey--text\"},[_vm._v(\"(\"+_vm._s(_vm.$t('passenger.list.create_new', 'Create new'))+\")\")])])],1):_vm._e()]}}],null,false,1702166114),model:{value:(_vm.selectedPassengerId),callback:function ($$v) {_vm.selectedPassengerId=$$v},expression:\"selectedPassengerId\"}})],1)],1),_c('v-layout',[_c('v-spacer'),_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"grey\",\"type\":\"submit\"},on:{\"click\":function($event){_vm.step++}}},[_vm._v(\" \"+_vm._s(_vm.$t('generic.skip'))+\" \")]),_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"accent\",\"type\":\"submit\"},on:{\"click\":function($event){_vm.step++}}},[_vm._v(\" \"+_vm._s(_vm.$t('generic.next'))+\" \")])],1)],1),_c('v-stepper-step',{attrs:{\"editable\":\"\",\"complete\":_vm.step > 2,\"step\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.$t('generic.placeAndTime'))+\" \"),(_vm.step > 2)?_c('small',[_c('span',{staticClass:\"capitalize\"},[_vm._v(_vm._s(_vm.$dateHelper.formatDateTimeWithShortWeekDay(_vm.editedBooking.startDate)))]),_vm._v(\", \"),_c('span',[_vm._v(_vm._s(_vm.editedBooking.fromAddress))])]):_vm._e()]),_c('v-stepper-content',{attrs:{\"step\":\"2\"}},[_c('v-layout',{staticStyle:{\"align-items\":\"baseline\"},attrs:{\"row\":\"\",\"xs12\":\"\",\"pl-4\":\"\",\"pr-2\":\"\"}},[_c('v-icon',[_vm._v(\"event\")]),_c('v-spacer'),_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\",\"pl-2\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm6\":\"\",\"pr-1\":\"\"}},[_c('DateTimePicker',{attrs:{\"dateLabel\":_vm.startDateLabel,\"date\":_vm.startDateString,\"min\":_vm.minStartDateString,\"disabled\":_vm.bookingIsLocked,\"hideIcon\":true,\"datePickerTitle\":_vm.startDateTitle},on:{\"date-updated\":_vm.onStartDateStringUpdated}})],1),_c('v-flex',{attrs:{\"xs12\":\"\",\"sm6\":\"\",\"pr-1\":\"\"}},[_c('DateTimePicker',{attrs:{\"timeLabel\":_vm.startTimeLabel,\"time\":_vm.startTimeString,\"disabled\":_vm.bookingIsLocked,\"timePickerTitle\":_vm.startTimeTitle},on:{\"time-updated\":_vm.onStartTimeStringUpdated}})],1)],1)],1),_c('v-layout',{staticStyle:{\"align-items\":\"baseline\"},attrs:{\"row\":\"\",\"xs12\":\"\",\"pl-4\":\"\",\"pr-2\":\"\"}},[(_vm.allowDropoffTime)?_c('v-flex',{attrs:{\"xs12\":\"\"}},[_c('v-checkbox',{staticClass:\"mt-0\",attrs:{\"label\":_vm.$t('generic.timeIsDropoffTime')},model:{value:(_vm.isDropoffTime),callback:function ($$v) {_vm.isDropoffTime=$$v},expression:\"isDropoffTime\"}})],1):_vm._e()],1),_c('v-layout',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.transportationPermissions.length > 0),expression:\"transportationPermissions.length > 0\"}],attrs:{\"row\":\"\",\"wrap\":\"\",\"pl-4\":\"\",\"pr-4\":\"\"}},[_c('booking-ptp-select',{attrs:{\"permissions\":_vm.transportationPermissions},model:{value:(_vm.editedBooking.transportationPermission),callback:function ($$v) {_vm.$set(_vm.editedBooking, \"transportationPermission\", $$v)},expression:\"editedBooking.transportationPermission\"}})],1),_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\",\"pl-4\":\"\",\"pr-4\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\"}},[_c('PlacePicker',{attrs:{\"booking\":_vm.editedBooking,\"modelProperty\":\"fromPlace\",\"allowedPlacesInfo\":_vm.passengerBookingPlacesInfo,\"placeholder\":_vm.$t('passenger.prop.trips.startPlace'),\"isOrigin\":true,\"disabled\":_vm.bookingIsLocked}})],1)],1),_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\",\"pl-4\":\"\",\"pr-4\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\"}},[_c('PlacePicker',{attrs:{\"booking\":_vm.editedBooking,\"modelProperty\":\"toPlace\",\"allowedPlacesInfo\":_vm.passengerBookingPlacesInfo,\"placeholder\":_vm.$t('generic.destinationOptional'),\"clearable\":true,\"disabled\":_vm.bookingIsLocked}})],1)],1),_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\",\"pr-3\":\"\"}},[_c('v-spacer'),_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"accent\",\"type\":\"submit\",\"disabled\":this.editedBooking.fromPlace ? false : true,\"loading\":_vm.loading},on:{\"click\":_vm.onGetPriceEstimateClick}},[_vm._v(\" \"+_vm._s(_vm.$t('generic.next'))+\" \")])],1)],1),_c('v-stepper-step',{attrs:{\"editable\":_vm.priceEstimate && _vm.selectedProduct ? true : false,\"complete\":_vm.step > 3,\"step\":\"3\"}},[_vm._v(\" \"+_vm._s(_vm.$t('timetable.description', 'Additional information'))+\" \")]),_c('v-stepper-content',{attrs:{\"step\":\"3\"}},[(_vm.priceEstimate && !_vm.editedBooking.transportationPermission)?_c('v-layout',{staticClass:\"product-list\",attrs:{\"row\":\"\",\"wrap\":\"\"}},_vm._l((_vm.priceEstimate.products),function(product,index){return _c('BookingProductListItem',{key:index,staticClass:\"product\",attrs:{\"product\":product,\"showPrice\":_vm.editedBooking.toAddress ? true : false,\"selected\":product && _vm.selectedProduct && product.priceCategory.id === _vm.selectedProduct.priceCategory.id,\"deselectable\":false},on:{\"select\":_vm.onProductSelected,\"deselect\":_vm.onProductDeselected}})}),1):_vm._e(),_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\"}},[_c('v-alert',{attrs:{\"value\":_vm.isUnableToCreateBooking,\"type\":\"warning\"}},[_vm._v(\"Tilauksen luonti edellyttää kuljetuspäätöksen tai voimassaolevan hintaluokan.\")])],1)],1),_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm12\":\"\",\"mb-2\":\"\"}},[_c('v-textarea',{attrs:{\"auto-grow\":\"\",\"label\":_vm.$t('generic.orderAdditionalInfo'),\"disabled\":_vm.bookingIsLocked,\"hide-details\":\"\",\"rows\":\"1\"},model:{value:(_vm.editedBooking.note),callback:function ($$v) {_vm.$set(_vm.editedBooking, \"note\", $$v)},expression:\"editedBooking.note\"}})],1)],1),_c('br'),(_vm.requirements.length > 0)?_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm4\":\"\",\"mb-2\":\"\"}},[_c('div',{staticClass:\"subheading\"},[_vm._v(_vm._s(_vm.$t('generic.requirements')))]),_vm._l((_vm.requirements),function(req){return _c('v-checkbox',{key:req.id,staticClass:\"mt-0\",attrs:{\"label\":req.description,\"value\":req.id,\"hide-details\":\"\"},model:{value:(_vm.editedBooking.requirements),callback:function ($$v) {_vm.$set(_vm.editedBooking, \"requirements\", $$v)},expression:\"editedBooking.requirements\"}})})],2)],1):_vm._e()],1)],1),(_vm.step > 2)?_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\",\"mt-4\":\"\",\"mb-1\":\"\"}},[_c('v-spacer'),_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"accent\",\"type\":\"submit\",\"disabled\":!_vm.valid || _vm.deleting || _vm.isUnableToCreateBooking,\"loading\":_vm.saving},on:{\"click\":_vm.onSubmit}},[(_vm.editedBooking.creating)?[_vm._v(\" \"+_vm._s(_vm.$t(\"booking.create.send.button.label\", \"Send booking\"))+\" \")]:[_vm._v(\" \"+_vm._s(_vm.$t(\"generic.save\", \"Save\"))+\" \")]],2)],1):_vm._e()],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{ref:\"googlePlacesContainer\"}),_c('v-autocomplete',{attrs:{\"items\":_vm.filteredItems,\"loading\":_vm.isLoading,\"search-input\":_vm.search,\"no-filter\":\"\",\"hide-no-data\":\"\",\"auto-select-first\":\"\",\"item-text\":\"prediction.description\",\"item-value\":\"prediction.place_id\",\"placeholder\":_vm.placeholder,\"hint\":_vm.search !== _vm.formattedAddress ? _vm.formattedAddress : ' ',\"prepend-icon\":\"location_on\",\"return-object\":\"\",\"disabled\":_vm.disabled,\"clearable\":_vm.clearable},on:{\"update:searchInput\":function($event){_vm.search=$event},\"update:search-input\":function($event){_vm.search=$event},\"click:clear\":_vm.onClear},model:{value:(_vm.model),callback:function ($$v) {_vm.model=$$v},expression:\"model\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport vuetifyToast from \"vuetify-toast\";\r\nimport { Component, Watch, Prop } from \"vue-property-decorator\";\r\nimport { DateHelper } from \"@/util/DateHelper\";\r\nimport Booking from \"./Booking/models/Booking\";\r\nimport IAddressViewModel, {\r\n AddressTypeEnum\r\n} from \"./Booking/models/IAddressViewModel\";\r\nimport Destination from \"./Passenger/models/Destination\";\r\nimport IGooglePlaceAddressComponents from './Booking/models/IGooglePlaceAddressComponents';\r\nimport IGooglePlaceCachedPrediction from './Booking/models/IGooglePlaceCachedPrediction';\r\nimport IBookingAddressViewModel from './Booking/models/IBookingAddressViewModel';\r\n\r\n@Component({\r\n components: {}\r\n})\r\nexport default class PlacePicker extends Vue {\r\n \r\n @Prop({ required: true })\r\n booking: Booking;\r\n\r\n @Prop({ required: true })\r\n modelProperty: string;\r\n\r\n @Prop({ required: true })\r\n allowedPlacesInfo: IBookingAddressViewModel;\r\n\r\n @Prop({ default: \"\" })\r\n placeholder: string;\r\n\r\n @Prop({ default: false })\r\n disabled: boolean;\r\n\r\n @Prop({ default: false })\r\n clearable: boolean;\r\n\r\n @Prop({ default: false })\r\n isOrigin: boolean;\r\n\r\n isLoading: boolean = false;\r\n\r\n items: IGooglePlaceCachedPrediction[] = [];\r\n search: string = \"\";\r\n autocompleteSessionToken: google.maps.places.AutocompleteSessionToken;\r\n\r\n model: IGooglePlaceCachedPrediction = null;\r\n\r\n placeSelectedFlag: boolean = false;\r\n\r\n get formattedAddress(){\r\n // Disabled, return null\r\n return null;\r\n // if (this.isOrigin) { \r\n // return this.booking.fromAddress;\r\n // } else {\r\n // return this.booking.toAddress;\r\n // }\r\n }\r\n\r\n // filter(item: IGooglePlaceCachedPrediction, queryText, itemText) {\r\n // const alias = item.alias;\r\n // if (alias){\r\n\r\n // }\r\n // const itemName = item.name.toLowerCase()\r\n // const searchText = queryText.toLowerCase()\r\n // return itemName.indexOf(searchText) > -1;\r\n // }\r\n\r\n onClear() {\r\n if (this.isOrigin) {\r\n this.booking.fromPlace = null;\r\n this.booking.fromAddress = null;\r\n } else {\r\n this.booking.toPlace = null;\r\n this.booking.toAddress = null;\r\n }\r\n }\r\n\r\n get filteredItems(){\r\n // console.log(\"fetching filtered items\");\r\n if (!this.search){\r\n // console.log(\"not searching - returning items list\");\r\n return this.items;\r\n }\r\n const query = this.search.toLowerCase();\r\n return this.items\r\n .filter(i => \r\n i.prediction.description.toLowerCase().includes(query) || \r\n (\r\n i.alias && \r\n i.alias.toLowerCase().includes(query)\r\n )\r\n ) \r\n .sort((a, b) => {\r\n let scoreA = 0;\r\n let scoreB = 0;\r\n\r\n if (a.alias){\r\n const aliasA = a.alias.toLowerCase();\r\n if (aliasA === query){\r\n scoreA += 1000000000;\r\n } else if (aliasA.startsWith(query)){\r\n scoreA += 1000000\r\n } \r\n }\r\n\r\n if (b.alias){\r\n const aliasB = b.alias.toLowerCase();\r\n if (aliasB === query){\r\n scoreB += 1000000000;\r\n } else if (aliasB.startsWith(query)){\r\n scoreB += 1000000\r\n } \r\n } \r\n\r\n const descA = a.prediction.description.toLowerCase();\r\n if (descA === query){\r\n scoreA += 1000000;\r\n } else if (descA.startsWith(query)){\r\n scoreA += 1000;\r\n } else if (descA.includes(query)){\r\n scoreA += 1;\r\n } \r\n\r\n const descB = b.prediction.description.toLowerCase();\r\n if (descB === query){\r\n scoreB += 1000000;\r\n } else if (descB.startsWith(query)){\r\n scoreB += 1000\r\n } else if (descB.includes(query)){\r\n scoreB += 1\r\n } \r\n\r\n return scoreB - scoreA;\r\n\r\n // if (scoreA > scoreB) {\r\n // return 1;\r\n // }\r\n // if (scoreB < scoreA) {\r\n // return -1;\r\n // }\r\n // return 0;\r\n }); \r\n }\r\n\r\n @Watch(\"search\")\r\n onSearchChanged(val: string, oldVal: string) {\r\n // console.log(\"onSearchChanged:\", \"val:\", val, \"oldVal:\", oldVal);\r\n if (this.placeSelectedFlag){\r\n // console.log(\"PlacePicker:\", \"place search is disabled, place was just selected\");\r\n this.placeSelectedFlag = false;\r\n return;\r\n }\r\n\r\n if (this.allowedPlacesInfo !== null && !this.allowedPlacesInfo.allowFreeAddresses) {\r\n // console.log(\"PP: use free addresses: \" + this.allowedPlacesInfo.allowFreeAddresses);\r\n // console.log(\"PP addresses: \" + this.allowedPlacesInfo.addresses.length);\r\n this.items = this.allowedPlacesInfo.addresses;\r\n // console.log(\"items addresses \" + this.items.length);\r\n this.isLoading = false;\r\n } else {\r\n \r\n // console.log(\"PP no allowd places info found! -> free search\");\r\n \r\n if (this.allowedPlacesInfo !== null) {\r\n this.items = this.favoritePlaces;\r\n }\r\n \r\n this.isLoading = val ? true : false;\r\n this.getGooglePlacesPredictions(\r\n val,\r\n this.autocompleteSessionToken,\r\n this.onPlacesResultsAvailable,\r\n );\r\n }\r\n }\r\n\r\n @Watch(\"allowedPlacesInfo\")\r\n onPlacesChanged(val: IBookingAddressViewModel, oldVal: IBookingAddressViewModel) {\r\n // console.log(\"PP props allowed places changed! \");\r\n if (val !== null) {\r\n // console.log(\"PP allowed places size:\" + val.addresses.length);\r\n this.allowedPlacesInfo = val;\r\n this.items = val.addresses;\r\n }\r\n }\r\n\r\n onPlacesResultsAvailable(predictions: any, status: any) {\r\n // console.log(\"places results available!\");\r\n this.isLoading = false;\r\n this.items = this.concatGooglePlacesPredictions(\r\n this.favoritePlaces,\r\n predictions,\r\n status\r\n );\r\n }\r\n\r\n @Watch(\"model\")\r\n onModelChanged(val: IGooglePlaceCachedPrediction, oldVal: IGooglePlaceCachedPrediction | null) {\r\n // console.log(\"onModelChanged:\", \"val:\", val, \"oldVal:\", oldVal);\r\n this.placeSelectedFlag = true;\r\n if (val.result){\r\n this.onGetDetailsComplete(val.result, google.maps.places.PlacesServiceStatus.OK);\r\n return;\r\n }\r\n this.getGooglePlacesPlaceDetails(\r\n val.prediction,\r\n this.autocompleteSessionToken,\r\n this.onGetDetailsComplete\r\n );\r\n }\r\n\r\n onGetDetailsComplete(result: google.maps.places.PlaceResult, status: google.maps.places.PlacesServiceStatus) {\r\n // console.log(\"onGetDetailsComplete\", \"result:\", result);\r\n // console.log(\"Json results:\");\r\n // console.log(JSON.stringify({ result: result }));\r\n const place = this.googlePlacesApiResultToAddressViewModel(\r\n result,\r\n status,\r\n this.isOrigin ? AddressTypeEnum.Origin : AddressTypeEnum.Destination\r\n );\r\n if (place) {\r\n if (this.isOrigin) {\r\n this.booking.fromPlace = place;\r\n this.booking.fromAddress = place.address;\r\n } else {\r\n this.booking.toPlace = place;\r\n this.booking.toAddress = place.address;\r\n }\r\n }\r\n // Create a new session token because the current has now been used and can't be re-used\r\n this.autocompleteSessionToken = this.createNewGoogleAutocompleteSessionToken();\r\n }\r\n\r\n googlePlacesAutocompleteService: google.maps.places.AutocompleteService;\r\n googlePlacesService: google.maps.places.PlacesService;\r\n\r\n timeout(ms) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n }\r\n\r\n async mounted(){\r\n if (this.isOrigin){\r\n (window as any).__ppicker = this;\r\n }\r\n }\r\n\r\n getFavoritePlaceAsJson(item: IGooglePlaceCachedPrediction){\r\n // console.log(JSON.stringify(item));\r\n }\r\n\r\n // Usage in Chrome console: __ppicker.getPredictionResultsAsJson(items: IGooglePlaceCachedPrediction)\r\n getPredictionResultsAsJson(item: IGooglePlaceCachedPrediction){\r\n this.getPredictionResultAsJsonAsync(item);\r\n }\r\n\r\n async getPredictionResultAsJsonAsync(item: IGooglePlaceCachedPrediction){\r\n this.ensureGooglePlacesServicesCreated();\r\n await this.timeout(2000);\r\n \r\n this.getGooglePlacesPlaceDetails(\r\n item.prediction, \r\n this.createNewGoogleAutocompleteSessionToken(), \r\n (result, status) => {\r\n // const fav = items.find(p => p.prediction.place_id === result.place_id);\r\n item.result = result;\r\n // console.log(\"getPredictionResultAsJsonAsync done. Json results:\");\r\n // console.log(JSON.stringify(item));\r\n }\r\n );\r\n \r\n }\r\n\r\n ensureGooglePlacesServicesCreated() {\r\n if (!this.autocompleteSessionToken) {\r\n this.autocompleteSessionToken = this.createNewGoogleAutocompleteSessionToken();\r\n }\r\n if (!this.googlePlacesAutocompleteService) {\r\n this.googlePlacesAutocompleteService = new (window as any)\r\n .google.maps.places.AutocompleteService() as google.maps.places.AutocompleteService;\r\n }\r\n if (!this.googlePlacesService) {\r\n this.googlePlacesService = new (window as any).google.maps.places.PlacesService(\r\n this.$refs.googlePlacesContainer\r\n ) as google.maps.places.PlacesService;\r\n }\r\n }\r\n\r\n createNewGoogleAutocompleteSessionToken(): google.maps.places.AutocompleteSessionToken {\r\n return new (window as any).google.maps.places.AutocompleteSessionToken();\r\n }\r\n\r\n getGooglePlacesPredictionsTimeout: number = 0;\r\n\r\n getGooglePlacesPredictions(\r\n search: string,\r\n sessionToken: google.maps.places.AutocompleteSessionToken,\r\n callback: (\r\n result: google.maps.places.AutocompletePrediction[], \r\n status: google.maps.places.PlacesServiceStatus) => void\r\n ) {\r\n if (search) {\r\n this.ensureGooglePlacesServicesCreated();\r\n if (this.getGooglePlacesPredictionsTimeout) {\r\n window.clearTimeout(this.getGooglePlacesPredictionsTimeout);\r\n }\r\n this.getGooglePlacesPredictionsTimeout = window.setTimeout(() => {\r\n const request: google.maps.places.AutocompletionRequest = {\r\n input: search,\r\n componentRestrictions: {\r\n country: \"fi\"\r\n },\r\n sessionToken\r\n };\r\n this.googlePlacesAutocompleteService.getPlacePredictions(\r\n request,\r\n callback\r\n );\r\n }, 600);\r\n }\r\n }\r\n\r\n concatGooglePlacesPredictions(\r\n items: IGooglePlaceCachedPrediction[],\r\n predictions: google.maps.places.AutocompletePrediction[],\r\n status: google.maps.places.PlacesServiceStatus\r\n ): IGooglePlaceCachedPrediction[] {\r\n if (status !== google.maps.places.PlacesServiceStatus.ZERO_RESULTS) {\r\n if (status === google.maps.places.PlacesServiceStatus.OK) {\r\n return items.concat( predictions.map(p => { \r\n p.description = p.description.replace(/, Suomi$/, \"\");\r\n return {\r\n prediction: p\r\n } as IGooglePlaceCachedPrediction;\r\n }) );\r\n } else {\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n \"booking.places.autocomplete.error\",\r\n \"Error when getting place autocomplete results from Places API: { status }\",\r\n {\r\n status\r\n }\r\n )\r\n );\r\n console.error(\"Places API error: \" + status);\r\n }\r\n }\r\n return items;\r\n }\r\n\r\n getGooglePlacesPlaceDetails(\r\n prediction: google.maps.places.AutocompletePrediction,\r\n sessionToken: google.maps.places.AutocompleteSessionToken,\r\n callback: (result: google.maps.places.PlaceResult, status: google.maps.places.PlacesServiceStatus) => void\r\n ) {\r\n if (prediction) {\r\n this.ensureGooglePlacesServicesCreated();\r\n const request: google.maps.places.PlaceDetailsRequest = {\r\n fields: [\r\n \"address_components\",\r\n \"formatted_address\",\r\n \"geometry.location\",\r\n \"name\",\r\n \"place_id\",\r\n \"types\",\r\n \"vicinity\"\r\n ],\r\n placeId: prediction.place_id,\r\n sessionToken\r\n }\r\n\r\n this.googlePlacesService.getDetails(\r\n request,\r\n callback\r\n );\r\n }\r\n }\r\n\r\n googlePlacesApiResultToAddressViewModel(\r\n result: google.maps.places.PlaceResult,\r\n status: google.maps.places.PlacesServiceStatus,\r\n type: AddressTypeEnum\r\n ): IAddressViewModel {\r\n\r\n if (status !== google.maps.places.PlacesServiceStatus.OK) {\r\n alert(\r\n \"Error: Google Places API: googlePlacesService.getDetails: \" + status\r\n );\r\n return;\r\n }\r\n\r\n const addressComponents: IGooglePlaceAddressComponents = {};\r\n const addressComponentTypes: any = {\r\n street_number: \"short_name\",\r\n route: \"long_name\",\r\n locality: \"long_name\",\r\n administrative_area_level_1: \"short_name\",\r\n country: \"long_name\",\r\n postal_code: \"short_name\"\r\n };\r\n\r\n result.address_components.forEach(ac => {\r\n const addressType = ac.types[0]; \r\n if (addressComponentTypes[addressType]) {\r\n const val = ac[addressComponentTypes[addressType]];\r\n addressComponents[addressType] = val;\r\n }\r\n });\r\n\r\n const placeType: string =\r\n result.types && result.types.length > 0 ? result.types[0] : \"address\";\r\n\r\n let streetAddress = [addressComponents.route, addressComponents.street_number]\r\n .filter(x => x)\r\n .join(\" \");\r\n\r\n if (!streetAddress) {\r\n streetAddress = addressComponents.route;\r\n }\r\n\r\n const locality = addressComponents.locality ? addressComponents.locality : result.vicinity;\r\n \r\n const combinedAddress = [result.name, result.name.endsWith(locality) ? '' : locality]\r\n .filter(x => x)\r\n .join(\", \");\r\n\r\n const address = combinedAddress ? combinedAddress : result.formatted_address;\r\n\r\n if (!streetAddress) {\r\n streetAddress = address;\r\n }\r\n\r\n const addressViewModel: IAddressViewModel = {\r\n address: streetAddress,\r\n city: locality,\r\n postalcode: addressComponents.postal_code,\r\n location: {\r\n lat: typeof(result.geometry.location.lat) === 'number' \r\n ? result.geometry.location.lat as unknown as number \r\n : result.geometry.location.lat(),\r\n lng: typeof(result.geometry.location.lng) === 'number' \r\n ? result.geometry.location.lng as unknown as number \r\n : result.geometry.location.lng(),\r\n },\r\n type,\r\n category: placeType\r\n };\r\n\r\n return addressViewModel;\r\n }\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n get destination(): Destination {\r\n return this.$store.state.destination.destinations.find(\r\n d => d.id === this.routeDestinationId\r\n );\r\n }\r\n\r\n get favoritePlaces(): IGooglePlaceCachedPrediction[] {\r\n try {\r\n if (\r\n this.destination.favoritePlacesListType\r\n ) {\r\n return require(\r\n './Booking/data/favoriteplaces/' + \r\n this.destination.favoritePlacesListType.toLowerCase() +\r\n '.json'\r\n ) as IGooglePlaceCachedPrediction[];\r\n }\r\n } catch (e){\r\n console.warn(\"[Timit] FavoritePlaces: no favorite places json file found.\" + e)\r\n }\r\n return [];\r\n } \r\n}\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PlacePicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PlacePicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PlacePicker.vue?vue&type=template&id=b8838162&\"\nimport script from \"./PlacePicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./PlacePicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-flex',[_c('v-card',{staticClass:\"elevation-2\",attrs:{\"dark\":\"\",\"color\":\"blue\"}},[_c('v-card-title',{staticClass:\"product-title-bar\"},[_c('v-flex',{staticClass:\"title-text\",attrs:{\"xs-6\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.product.priceCategory.name)+\" \")]),_c('v-spacer')],1),_c('v-card-text',[_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{staticClass:\"product-field\",attrs:{\"xs-6\":\"\"}},[_c('v-icon',{staticClass:\"product-field-icon\",attrs:{\"large\":\"\"}},[_vm._v(\"person\")]),_c('div',{staticClass:\"product-field-title-container\"},[_c('div',{staticClass:\"product-field-title\"},[_vm._v(_vm._s(_vm.$t('generic.passengers')))]),_c('div',{staticClass:\"product-field-value\"},[_vm._v(_vm._s(_vm.product.priceCategory.maxPassengers)+\" max\")])])],1),_c('v-flex',{staticClass:\"product-field\",attrs:{\"xs-6\":\"\"}},[_c('v-icon',{staticClass:\"product-field-icon\",attrs:{\"large\":\"\"}},[_vm._v(\"work\")]),_c('div',{staticClass:\"product-field-title-container\"},[_c('div',{staticClass:\"product-field-title\"},[_vm._v(_vm._s(_vm.$t('generic.suitcases')))]),_c('div',{staticClass:\"product-field-value\"},[_vm._v(_vm._s(_vm.product.priceCategory.maxLuggage)+\" max\")])])],1),(_vm.selectable)?_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"primary\",\"type\":\"submit\",\"disabled\":_vm.selected},on:{\"click\":function($event){return _vm.onSelectProductClick()}}},[(!_vm.selected)?[_vm._v(_vm._s(_vm.$t('generic.select')))]:_vm._e(),(_vm.selected)?[_vm._v(_vm._s(_vm.$t('generic.selected')))]:_vm._e()],2):_vm._e(),(_vm.deselectable)?_c('v-btn',{attrs:{\"flat\":\"\",\"color\":\"white\",\"type\":\"submit\"},on:{\"click\":function($event){return _vm.onDeselectProductClick()}}},[_vm._v(\" \"+_vm._s(_vm.$t('generic.switch'))+\" \")]):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop, Watch } from 'vue-property-decorator';\r\nimport IProductViewModel from '../models/IProductViewModel';\r\nimport IPriceEstimateProductViewModel from '../models/IPriceEstimateProductViewModel';\r\n\r\n@Component({\r\n components: {\r\n \r\n }\r\n})\r\nexport default class BookingProductListItem extends Vue {\r\n \r\n $t: any;\r\n\r\n @Prop({required: true})\r\n product: IPriceEstimateProductViewModel;\r\n\r\n @Prop({default: true})\r\n showPrice: boolean;\r\n\r\n @Prop({default: true})\r\n selectable: boolean;\r\n\r\n @Prop({default: false})\r\n selected: boolean;\r\n\r\n @Prop({default: false})\r\n deselectable: boolean;\r\n\r\n onSelectProductClick() {\r\n if (this.selectable){\r\n this.$emit(\"select\", this.product);\r\n }\r\n }\r\n\r\n onDeselectProductClick() {\r\n if (this.deselectable){\r\n this.$emit(\"deselect\", this.product);\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingProductListItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingProductListItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BookingProductListItem.vue?vue&type=template&id=30c035ea&\"\nimport script from \"./BookingProductListItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./BookingProductListItem.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-autocomplete',{attrs:{\"item-text\":\"name\",\"prepend-icon\":\"credit_card\",\"items\":_vm.permissions,\"return-object\":true,\"value\":_vm.selectedItem,\"label\":'Valitse kuljetuspäätös'},on:{\"input\":_vm.selectPermission}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport TransportationPermission from '@/components/Passenger/models/TransportationPermission';\r\nimport Vue from \"vue\";\r\nimport { Component, Prop, Watch } from \"vue-property-decorator\";\r\n\r\n@Component({\r\n components: {\r\n }\r\n})\r\nexport default class BookingPtpSelect extends Vue {\r\n selectedItemId: number | null = null;\r\n selectedItem: TransportationPermission | null = null;\r\n\r\n @Prop({ default: () => [] }) permissions: TransportationPermission[];\r\n @Prop({ required: true }) value: TransportationPermission | null;\r\n\r\n @Watch('value', { immediate: true }) onValueChanged() {\r\n this.selectedItem = null;\r\n this.selectedItemId = null;\r\n if (this.value) {\r\n this.selectedItem = this.value;\r\n this.selectedItemId = this.selectedItem.id;\r\n }\r\n }\r\n\r\n selectPermission(permission: any) {\r\n this.selectedItem = permission;\r\n this.$emit('input', this.selectedItem);\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingPtpSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingPtpSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BookingPtpSelect.vue?vue&type=template&id=75f70f70&\"\nimport script from \"./BookingPtpSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./BookingPtpSelect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Component, Prop, Watch } from \"vue-property-decorator\";\r\nimport vuetifyToast from \"vuetify-toast\";\r\nimport \"./BookingEditor.scss\";\r\nimport DateTimePicker from \"@/components/DatetimePicker.vue\";\r\nimport PlacePicker from \"@/components/PlacePicker.vue\";\r\nimport BookingProductListItem from \"./BookingProductListItem.vue\";\r\nimport Booking from \"@/components/Booking/models/Booking\";\r\nimport moment from \"moment\";\r\nimport { RolePermission } from \"@/models/Role\";\r\nimport IPriceEstimateRequest from \"../models/IPriceEstimateRequest\";\r\nimport IPriceEstimate from \"../models/IPriceEstimate\";\r\nimport IPriceEstimateProductViewModel from \"../models/IPriceEstimateProductViewModel\";\r\nimport Routes from \"../../../Routes\";\r\nimport Passenger from \"../../Passenger/models/Passenger\";\r\nimport Destination from \"../../Passenger/models/Destination\";\r\nimport IGooglePlaceCachedPrediction from \"../models/IGooglePlaceCachedPrediction\";\r\nimport IMovitBookingAddressViewModel from \"../models/IMovitBookingAddressViewModel\";\r\nimport IBookingAddressViewModel from \"../models/IBookingAddressViewModel\";\r\nimport IMovitPlace from \"../models/IMovitPlace\";\r\nimport BookingPtpSelect from '@/components/Booking/components/BookingPtpSelect.vue';\r\nimport TransportationPermissionInfo from '@/components/Passenger/models/TransportationPermissionInfo';\r\nimport MovitInstanceConfig from \"@/models/MovitInstanceConfig\";\r\nimport { IPassengerSearchResult } from \"@/typings/timit\";\r\nimport restService from \"@/services/restService\"\r\n\r\n@Component({\r\n components: {\r\n BookingProductListItem,\r\n BookingPtpSelect,\r\n DateTimePicker,\r\n PlacePicker,\r\n }\r\n})\r\nexport default class BookingEditor extends Vue {\r\n static EVENT_BOOKING_EDITOR_OPEN = \"EVENT_BOOKING_EDITOR_OPEN\";\r\n static EVENT_BOOKING_EDITOR_CLOSE = \"EVENT_BOOKING_EDITOR_CLOSE\";\r\n\r\n searchDebounceTimeout: any = null;\r\n searchDebounceTimeoutDurationMs: number = 1500;\r\n\r\n show: boolean = false;\r\n resetTimeout: any = null;\r\n showEditor: boolean = false;\r\n editedBooking: Booking = null;\r\n // TODO: This property should probably come from configuration\r\n allowDropoffTime = true;\r\n isDropoffTime: boolean = false;\r\n valid: boolean = true;\r\n saving: boolean = false;\r\n deleting: boolean = false;\r\n priceEstimate: IPriceEstimate = null;\r\n selectedProduct: IPriceEstimateProductViewModel = null;\r\n selectedPtp: number | null = null;\r\n\r\n step: number = 1;\r\n loading: boolean = false;\r\n $confirm: any;\r\n $t: any;\r\n\r\n // holding passenger places from movit\r\n passengerBookingPlacesInfo: any = null;\r\n\r\n passengerSearchInput: string = \"\";\r\n prevPassengerSearchInput: string = \"\";\r\n searchInProgress: boolean = false;\r\n\r\n passengerSearchResults: IPassengerSearchResult[] = [];\r\n\r\n get storeMovitInstanceConfigs(): MovitInstanceConfig[] {\r\n return this.$store.state.app.movitInstanceConfigs as MovitInstanceConfig[];\r\n }\r\n\r\n get destinationMovitInstanceConfig(): MovitInstanceConfig | undefined {\r\n return this.storeMovitInstanceConfigs.find(\r\n (mic) => mic.instanceId === this.destination.movitInstanceId\r\n );\r\n }\r\n\r\n get requirements() {\r\n return this.destinationMovitInstanceConfig.requirements\r\n ? this.destinationMovitInstanceConfig.requirements\r\n : [];\r\n }\r\n\r\n @Watch(\"passengerSearchInput\")\r\n async onPassengerSearchInputChanged(val: string, oldVal: string) {\r\n if (val) {\r\n this.prevPassengerSearchInput = val;\r\n await this.searchPassengers(val);\r\n }\r\n }\r\n\r\n \r\n async searchPassengers(search: string) {\r\n\r\n if (this.searchDebounceTimeout){\r\n clearTimeout(this.searchDebounceTimeout);\r\n }\r\n this.searchInProgress = true;\r\n this.searchDebounceTimeout = setTimeout(\r\n async () => {\r\n if (search && search.length > 0) {\r\n const searchParams = { destinationId: this.routeDestinationId};\r\n const result: IPassengerSearchResult[] = await restService.passengers.searchPassengers(search, searchParams);\r\n this.searchInProgress = false;\r\n const destinations: Destination[] = this.$store.state.destination.destinations;\r\n this.passengerSearchResults = result\r\n .map(p => {\r\n const destination = destinations.find(d => d.id === p.destinationId);\r\n p.destinationName = destination && destination.alias ? destination.alias : '';\r\n p.movitInstanceName = destination && destination.movitInstanceName ? destination.movitInstanceName : '';\r\n return p;\r\n })\r\n // .filter(p => !this.excludedPassengerIds.includes(p.id));\r\n }\r\n }, \r\n this.searchDebounceTimeoutDurationMs\r\n )\r\n }\r\n\r\n startDateString: string = null;\r\n @Watch(\"startDateString\") onStartDateStringChanged(val, oldVal) {\r\n if (this.editedBooking) {\r\n this.editedBooking.startDateString = val;\r\n }\r\n }\r\n\r\n startTimeString: string = null;\r\n @Watch(\"startTimeString\") onStartTimeStringChanged(val, oldVal) {\r\n if (this.editedBooking) {\r\n this.editedBooking.startTimeString = val;\r\n }\r\n }\r\n\r\n @Watch(\"show\") onShowChanged(val, oldVal) {\r\n // console.log(\"onShowChanged\")\r\n if (val) {\r\n if (this.resetTimeout) {\r\n clearTimeout(this.resetTimeout);\r\n }\r\n } else {\r\n // Reset to empty after a small delay (after close transition)\r\n this.resetTimeout = setTimeout(() => {\r\n this.startDateString = null;\r\n this.startTimeString = null;\r\n this.editedBooking = null;\r\n this.priceEstimate = null;\r\n this.selectedProduct = null;\r\n this.step = 1;\r\n }, 500);\r\n }\r\n if (!val && this.$route.name === Routes.bookingListCreateNewRoute.name) {\r\n this.$router.push({\r\n name: Routes.bookingListWithStateRoute.name,\r\n params: {\r\n state: this.routeStateNameLowerCase\r\n }\r\n });\r\n }\r\n this.showEditor = val;\r\n }\r\n\r\n get isUnableToCreateBooking() {\r\n return !this.selectedProduct && !this.editedBooking.transportationPermission;\r\n }\r\n\r\n get isTransportationPermissionEnabled(): boolean {\r\n return this.$store.getters['auth/hasTransportationPermission']([RolePermission.ReadTransportationPermissions]);\r\n }\r\n\r\n fetchPassengerBookingPlacesInfoFromStore() {\r\n const info = this.$store.state.passenger.passengerPlacesInfo as IMovitBookingAddressViewModel;\r\n const gInfo = this.convertMovitBookingAddressInfoToGoogle(info);\r\n this.passengerBookingPlacesInfo = gInfo;\r\n }\r\n\r\n adhocPassenger: IPassengerSearchResult = {\r\n name: \"NEW_CREATOR_ITEM\",\r\n id: Math.round(9000000 + Math.random() * 1000000),\r\n creator: true\r\n } as any;\r\n\r\n get passengerOptions(): IPassengerSearchResult[] {\r\n let options = this.passengerSearchResults\r\n .filter(p => !p.inactive)\r\n if (this.passengerSearchInput && \r\n this.passengerSearchInput.length > 2 && \r\n this.passengerSearchInput.includes(\" \") && \r\n !this.passengerSearchInput.startsWith(\" \") && \r\n !this.passengerSearchInput.endsWith(\" \")) {\r\n options.push(this.adhocPassenger);\r\n }\r\n return options;\r\n }\r\n\r\n passengerSelectFilter(item, queryText, itemText) {\r\n const itemName = item.name.toLowerCase();\r\n const searchText = queryText.toLowerCase();\r\n return (\r\n itemName.indexOf(searchText) > -1 ||\r\n (item.creator &&\r\n !this.passengerOptions.find(\r\n g => g.name.toLowerCase() === this.passengerSearchInput.toLowerCase()\r\n ))\r\n );\r\n }\r\n\r\n selectedPassengerId: number = null;\r\n @Watch(\"selectedPassengerId\") async onSelectedPassengerChanged(val, oldVal) {\r\n if (val) {\r\n this.adhocPassenger.name = this.prevPassengerSearchInput;\r\n if (val != this.adhocPassenger.id){\r\n await this.$store.dispatch(\"passenger/getPassengerById\", {params: { id: val}});\r\n this.fetchPassengerBookingPlacesInfo(val);\r\n \r\n if (this.isTransportationPermissionEnabled) {\r\n await this.fetchPassengerTransportationPermissionInfo(val);\r\n }\r\n }\r\n }\r\n }\r\n\r\n get storePassenger(): Passenger {\r\n return this.$store.state.passenger.passenger;\r\n }\r\n\r\n get selectedPassenger(): Passenger | null {\r\n return this.storePassenger && this.storePassenger.id === this.selectedPassengerId\r\n ? this.storePassenger\r\n : this.adhocPassenger.id == this.selectedPassengerId\r\n ? this.adhocPassenger as unknown as Passenger\r\n : null;\r\n }\r\n\r\n get storeBookings(): Booking[] {\r\n return this.$store.state.booking.bookings;\r\n }\r\n\r\n get bookingIsLocked() {\r\n return this.editedBooking.isLocked;\r\n }\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n get destination(): Destination {\r\n return this.$store.state.destination.destinations.find(d => d.id === this.routeDestinationId);\r\n }\r\n\r\n get me() {\r\n return this.$store.state.user.me;\r\n }\r\n\r\n get userCanDeleteBookings(): boolean {\r\n return this.me ? this.me.hasPermissions(this.routeDestinationId, [RolePermission.DeleteBookings]) : false;\r\n }\r\n\r\n get showWeekends(): boolean {\r\n return this.$store.state.user.showWeekends;\r\n }\r\n\r\n get minStartDateString(): string {\r\n const tomorrowMoment = moment().startOf(\"day\");\r\n return tomorrowMoment.format(\"YYYY-MM-DD\");\r\n }\r\n\r\n get startDateLabel() {\r\n return this.isDropoffTime ? this.$t('generic.dropoffDate') : this.$t('generic.pickupDate');\r\n }\r\n get startTimeLabel() {\r\n return this.isDropoffTime ? this.$t('generic.dropoffTime') : this.$t('generic.pickupTime');\r\n }\r\n get startDateTitle() {\r\n return this.isDropoffTime ? this.$t('generic.dropoffDateSelect') : this.$t('generic.pickupDateSelect');\r\n }\r\n get startTimeTitle() {\r\n return this.isDropoffTime ? this.$t('generic.dropoffTimeSelect') : this.$t('generic.pickupTimeSelect');\r\n }\r\n\r\n get transportationPermissions() {\r\n if (!this.selectedPassengerId) {\r\n return [];\r\n }\r\n\r\n const transportationPermissionInfo: TransportationPermissionInfo = \r\n this.$store.state.passenger.transportationPermissionInfos\r\n .find((tpi: TransportationPermissionInfo) => tpi.timitPassengerId === this.selectedPassengerId);\r\n \r\n if (!transportationPermissionInfo) {\r\n return [];\r\n }\r\n\r\n const bookingDate = new Date(this.editedBooking.startDate).getTime();\r\n const permissions = transportationPermissionInfo.permissions.filter(ptp => {\r\n if (!ptp.externalId) {\r\n return false;\r\n }\r\n const startDate = new Date(ptp.startDate).getTime();\r\n const endDate = new Date(ptp.endDate).getTime();\r\n return startDate <= bookingDate && bookingDate <= endDate;\r\n });\r\n \r\n return permissions;\r\n }\r\n\r\n @Watch(\"$route\", { immediate: true })\r\n onRouteChanged(val, oldVal) {\r\n if (val.name === Routes.bookingListCreateNewRoute.name) {\r\n this.openNewBookingDialog();\r\n } else if (\r\n oldVal &&\r\n oldVal.name === Routes.bookingListCreateNewRoute.name\r\n ) {\r\n this.closeNewBookingDialog();\r\n }\r\n }\r\n\r\n closeNewBookingDialog() {\r\n this.$root.$emit(BookingEditor.EVENT_BOOKING_EDITOR_CLOSE);\r\n }\r\n\r\n openNewBookingDialog() {\r\n const destinationId: number = this.routeDestinationId;\r\n\r\n // When Show weekends is on\r\n // - startDate always next day\r\n // When Hide weekends is on\r\n // - startDate monday if current day is fri(5), sat(6), or sun (0 and 7)\r\n // Both cases\r\n // - endDate always same as startDate day\r\n\r\n const startDateMoment = moment().add(15, \"minutes\");\r\n const remainder = 10 - (startDateMoment.minute() % 10);\r\n const startDate = moment(startDateMoment)\r\n .add(remainder, \"minutes\")\r\n .toDate();\r\n\r\n const newBooking: Booking = new Booking();\r\n newBooking.startDate = startDate;\r\n newBooking.destinationId = this.destination.id;\r\n newBooking.createdByEmail = this.me.email;\r\n newBooking.creating = true;\r\n this.onEditBooking(newBooking);\r\n }\r\n\r\n created() {\r\n (window as any).__beditor = this;\r\n this.$root.$on(BookingEditor.EVENT_BOOKING_EDITOR_OPEN, this.onEditBooking);\r\n this.$root.$on(\r\n BookingEditor.EVENT_BOOKING_EDITOR_CLOSE,\r\n this.onCloseEditorEvent\r\n );\r\n }\r\n\r\n onCloseEditorEvent() {\r\n this.show = false;\r\n }\r\n\r\n onEditBooking(booking: Booking) {\r\n this.editedBooking = Booking.CopyFrom(booking);\r\n this.startDateString = this.editedBooking.startDateString;\r\n this.startTimeString = this.editedBooking.startTimeString;\r\n this.show = true;\r\n }\r\n\r\n async onPassengerSelect(passengerSearchResult: IPassengerSearchResult) {\r\n if (passengerSearchResult){\r\n await this.$store.dispatch(\"passenger/getPassengerById\", {params: { id: passengerSearchResult.id}});\r\n }\r\n this.selectedPassengerId = passengerSearchResult.id;\r\n }\r\n\r\n async onStartDateStringUpdated(val, oldVal) {\r\n if (!this.startDateString) {\r\n return;\r\n }\r\n this.startDateString = val;\r\n }\r\n\r\n async onStartTimeStringUpdated(val, oldVal) {\r\n if (!this.startTimeString) {\r\n return;\r\n }\r\n this.startTimeString = val;\r\n }\r\n\r\n async onDeleteClick() {\r\n this.deleting = true;\r\n // TODO: Check that booking state allows for deletion\r\n\r\n // Confirm deletion\r\n let deleteConfirmed = false;\r\n try {\r\n await this.$confirm({\r\n title: this.$i18n.translate(\"booking.delete.confirm.dialog.title\", \"Deleting booking\"),\r\n message: this.$i18n.translate(\"booking.delete.confirm.dialog.message\", \"Do you really want to delete the booking?\"),\r\n okButton: this.$i18n.translate(\"booking.delete.confirm.dialog.yes\", \"Yes\"),\r\n cancelButton: this.$i18n.translate(\"booking.delete.confirm.dialog.no\", \"No\")\r\n });\r\n deleteConfirmed = true;\r\n } catch (err) {\r\n // Confirm deletion was answered \"No\", we are expecting the confirm dialog to throw an error\r\n }\r\n\r\n // Check if deletion was confirmed\r\n if (deleteConfirmed) {\r\n // Deletion was confirmed\r\n try {\r\n const destinationId = this.editedBooking.destinationId;\r\n await this.$store.dispatch(\"booking/deleteBooking\", {\r\n params: {\r\n id: this.editedBooking.id,\r\n destinationId: this.editedBooking.destinationId\r\n }\r\n });\r\n this.show = false;\r\n // TODO: If booking order has been sent in the past, should we notify Movit of deletion?\r\n } catch (err) {\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n \"booking.delete.error.generic\",\r\n \"There was an error deleting the booking. Please reload the page and try again later.\"\r\n )\r\n );\r\n console.error(\"Error when saving passenger:\", err);\r\n }\r\n }\r\n this.deleting = false;\r\n }\r\n\r\n async onGetPriceEstimateClick() {\r\n if (!this.editedBooking.fromPlace || !this.editedBooking.fromAddress) {\r\n return;\r\n }\r\n\r\n const booking = this.editedBooking;\r\n const estimateRequest: IPriceEstimateRequest = {\r\n startTime: booking.startDate,\r\n startPlace: {\r\n alias: booking.fromPlace.address,\r\n latitude: booking.fromPlace.location.lat,\r\n longitude: booking.fromPlace.location.lng,\r\n streetAddress: booking.fromPlace.address,\r\n placeType: 0,\r\n id: 0\r\n },\r\n endPlace: booking.toPlace\r\n ? {\r\n alias: booking.toPlace.address,\r\n latitude: booking.toPlace.location.lat,\r\n longitude: booking.toPlace.location.lng,\r\n streetAddress: booking.toPlace.address,\r\n placeType: 0,\r\n id: 0\r\n }\r\n : null\r\n };\r\n this.loading = true;\r\n try {\r\n const result = await this.$store.dispatch(\"booking/getPriceEstimate\", {\r\n params: {\r\n destinationId: this.routeDestinationId\r\n },\r\n data: estimateRequest\r\n });\r\n this.priceEstimate = result.data;\r\n this.step++;\r\n } catch (ex) {\r\n let message = (ex as any).message;\r\n if (!message) {\r\n message = \"Tietojen haussa tapahtui virhe. Ole hyvä ja yritä myöhemmin uudelleen tai ota yhteyttä tukeen.\";\r\n }\r\n vuetifyToast.error(message);\r\n console.error(ex);\r\n }\r\n this.loading = false;\r\n }\r\n\r\n onProductSelected(product: IPriceEstimateProductViewModel) {\r\n this.selectedProduct = product;\r\n this.step++;\r\n }\r\n\r\n onProductDeselected(product: IPriceEstimateProductViewModel) {\r\n this.selectedProduct = null;\r\n }\r\n\r\n async onSubmit() {\r\n // TODO: Re-enable form, prevent enter key and re-enable validation\r\n this.saveBooking();\r\n }\r\n\r\n async saveBooking() {\r\n this.saving = true;\r\n try {\r\n if (this.editedBooking.creating) {\r\n // Make sure we don't have id set to null, but rather undefined\r\n delete this.editedBooking.id;\r\n // Create\r\n const response = await this.$store.dispatch(\"booking/createBooking\", {\r\n params: {\r\n destinationId: this.routeDestinationId\r\n },\r\n data: Booking.toApiBookingRequestViewModel(\r\n this.editedBooking,\r\n this.priceEstimate.route,\r\n this.selectedProduct,\r\n this.selectedPassenger ||\r\n this.selectedPassenger.name ||\r\n this.me.email,\r\n this.isDropoffTime\r\n )\r\n });\r\n\r\n const newBookingId = response.data.id;\r\n } else {\r\n // Update\r\n await this.$store.dispatch(\"booking/updateBooking\", {\r\n params: {\r\n id: this.editedBooking.id,\r\n destinationId: this.editedBooking.destinationId\r\n },\r\n data: Booking.toApiBookingUpdateRequestViewModel(this.editedBooking)\r\n });\r\n }\r\n } catch (ex) {\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n \"booking.edit.save.error\",\r\n \"Something went wrong when saving the booking. Please try again later.\"\r\n )\r\n );\r\n throw ex;\r\n } finally {\r\n this.saving = false;\r\n }\r\n this.show = false;\r\n }\r\n\r\n get routeStateNameLowerCase(): string {\r\n return this.$store.state.route.params.state;\r\n }\r\n\r\n onCloseClick() {\r\n this.show = false;\r\n }\r\n\r\n beforeDestroy() {\r\n if (this.resetTimeout) {\r\n clearTimeout(this.resetTimeout);\r\n }\r\n this.$root.$off(\r\n BookingEditor.EVENT_BOOKING_EDITOR_OPEN,\r\n this.onEditBooking\r\n );\r\n }\r\n\r\n async fetchPassengerBookingPlacesInfo(selectedPassId: number) {\r\n\r\n const places = await this.$store\r\n .dispatch(\"passenger/getPassengerPlaces\", {\r\n params: {\r\n passengerId: selectedPassId\r\n }\r\n })\r\n .then(val => {\r\n const test = val as IMovitBookingAddressViewModel;\r\n\r\n this.fetchPassengerBookingPlacesInfoFromStore();\r\n });\r\n }\r\n\r\n async fetchPassengerTransportationPermissionInfo(passengerId: number) {\r\n await this.$store.dispatch('passenger/getPassengerTransportationPermissionInfo', {params: { passengerId }});\r\n }\r\n\r\n convertMovitBookingAddressInfoToGoogle(\r\n bookingAddressInfo: IMovitBookingAddressViewModel\r\n ): IBookingAddressViewModel {\r\n if (bookingAddressInfo.allowFreeAddresses) {\r\n return null;\r\n }\r\n const result = {\r\n allowFreeAddresses: bookingAddressInfo.allowFreeAddresses,\r\n addresses: []\r\n } as IBookingAddressViewModel;\r\n\r\n bookingAddressInfo.addresses.forEach(element => {\r\n result.addresses.push(this.convertToGoogleAddress(element));\r\n });\r\n return result;\r\n }\r\n\r\n convertToGoogleAddress(\r\n movitPlace: IMovitPlace\r\n ): IGooglePlaceCachedPrediction {\r\n const result = {\r\n prediction: {\r\n description: movitPlace.streetAddress + \", \" + movitPlace.city\r\n },\r\n result: {\r\n address_components: [\r\n {\r\n long_name: movitPlace.streetAddress,\r\n short_name: movitPlace.streetAddress,\r\n types: [\"route\"]\r\n },\r\n {\r\n long_name: movitPlace.city,\r\n short_name: movitPlace.city,\r\n types: [\"locality\", \"political\"]\r\n },\r\n {\r\n long_name: movitPlace.postalcode,\r\n short_name: movitPlace.postalcode,\r\n types: [\"postal_code\"]\r\n },\r\n {\r\n long_name: \"Suomi\",\r\n short_name: \"FI\",\r\n types: [\"country\", \"political\"]\r\n }\r\n ],\r\n formatted_address: movitPlace.streetAddress + \" \" + movitPlace.city,\r\n geometry: {\r\n location: new google.maps.LatLng(\r\n movitPlace.latitude,\r\n movitPlace.longitude\r\n )\r\n },\r\n name: movitPlace.streetAddress,\r\n types: [\"street_address\"],\r\n vicinity: movitPlace.city\r\n }\r\n } as IGooglePlaceCachedPrediction;\r\n return result;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingEditor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingEditor.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BookingEditor.vue?vue&type=template&id=d6aa85e2&\"\nimport script from \"./BookingEditor.vue?vue&type=script&lang=ts&\"\nexport * from \"./BookingEditor.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BookingEditor.vue?vue&type=style&index=0&id=d6aa85e2&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.booking)?_c('v-dialog',{attrs:{\"max-width\":\"500px\"},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',{staticClass:\"booking-info-dialog-card\"},[_c('v-card-title',[_c('span',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.info.title', 'Booking info'))+\" \")])]),_c('v-card-text',[_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[(_vm.booking.fromAddress)?_c('v-flex',{staticClass:\"field\",attrs:{\"xs6\":\"\"}},[_c('div',{staticClass:\"label\"},[_vm._v(\"Lähtö\")]),_c('div',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.booking.fromAddress))]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.booking.startDate),expression:\"booking.startDate\"}],staticClass:\"value extra\"},[_c('span',{staticStyle:{\"text-transform\":\"capitalize\"}},[_vm._v(\" \"+_vm._s(_vm.$dateHelper.formatDateTimeWithShortWeekDay(_vm.booking.bookingDate))+\" \")])])]):_vm._e(),(_vm.booking.toAddress)?_c('v-flex',{staticClass:\"field\",attrs:{\"xs6\":\"\"}},[_c('div',{staticClass:\"label\"},[_vm._v(\"Määränpää\")]),_c('div',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.booking.toAddress))]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.booking.endDate),expression:\"booking.endDate\"}],staticClass:\"value extra\"},[_c('span',{staticStyle:{\"text-transform\":\"capitalize\"}},[_vm._v(\" \"+_vm._s(_vm.$dateHelper.formatDateTimeWithShortWeekDay(_vm.booking.bookingDate))+\" \")])])]):_vm._e(),(_vm.booking.product)?_c('v-flex',{staticClass:\"field\",attrs:{\"xs6\":\"\"}},[_c('div',{staticClass:\"label\"},[_vm._v(\"Autotyyppi\")]),_c('div',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.booking.product.makeModel))]),_c('div',{staticClass:\"value extra\"},[_vm._v(\" Max. \"+_vm._s(_vm.booking.product.pax)+\" matkustajaa, \"+_vm._s(_vm.booking.product.bags)+\" laukkua \")])]):_vm._e(),(_vm.booking.shortId)?_c('v-flex',{staticClass:\"field\",attrs:{\"xs6\":\"\"}},[_c('div',{staticClass:\"label\"},[_vm._v(_vm._s(_vm.$t('booking.info.idNumber.label', 'ID number')))]),_c('div',{staticClass:\"value\"},[_vm._v(\"#\"+_vm._s(_vm.booking.shortId))])]):_vm._e(),_c('v-flex',{staticClass:\"field\",attrs:{\"xs6\":\"\"}},[_c('div',{staticClass:\"label\"},[_vm._v(\"Matkustaja\")]),_c('div',{staticClass:\"value\"},_vm._l((_vm.booking.passengers.filter(function (p) { return p.name !== _vm.booking.createdByEmail; })),function(bookingPassenger){return _c('div',{key:bookingPassenger.name},[_vm._v(\" \"+_vm._s(bookingPassenger.name)+\" \")])}),0)]),_c('v-flex',{staticClass:\"field\",attrs:{\"xs6\":\"\"}},[_c('div',{staticClass:\"label\"},[_vm._v(\"Lisätiedot\")]),_c('div',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.booking.driverNotes)+\" \")])]),(_vm.booking.createdAt)?_c('v-flex',{staticClass:\"field\",attrs:{\"xs6\":\"\"}},[_c('div',{staticClass:\"label\"},[_vm._v(\"Luontiajankohta\")]),_c('div',{staticClass:\"value extra\"},[_vm._v(_vm._s(_vm.formatDate(_vm.booking.createdAt)))])]):_vm._e(),(_vm.booking.wasOrdered && _vm.booking.orderedByEmail)?_c('v-flex',{staticClass:\"field\",attrs:{\"xs6\":\"\"}},[_c('div',{staticClass:\"label\"},[_vm._v(_vm._s(_vm.$t('booking.info.orderedBy.label', 'Ordered by')))]),_c('div',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.booking.orderedByEmail))]),(_vm.isValidDate(_vm.booking.orderedAt))?_c('div',{staticClass:\"value extra\"},[_vm._v(_vm._s(_vm.formatDate(_vm.booking.updatedAt)))]):_vm._e()]):_vm._e()],1)],1),_c('v-card-actions',[_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"grey\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onCloseClick($event)}}},[_vm._v(\" \"+_vm._s(_vm.$t('generic.close','Close'))+\" \")])],1)],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop, Watch } from 'vue-property-decorator';\r\nimport vuetifyToast from 'vuetify-toast';\r\nimport './BookingInfoDialog.scss'\r\nimport Booking from '@/components/Booking/models/Booking';\r\nimport moment from 'moment';\r\nimport { BookingStates } from '@/components/Booking/models/BookingStates';\r\nimport { Destination } from '@/components/Passenger/models/Destination';\r\n\r\n@Component({\r\n components: {\r\n \r\n }\r\n})\r\nexport default class BookingInfoDialog extends Vue {\r\n static EVENT_BOOKING_INFO_DIALOG_OPEN = \"EVENT_BOOKING_INFO_DIALOG_OPEN\";\r\n\r\n show: boolean = false;\r\n booking: Booking = null;\r\n $t: any;\r\n $dateHelper: any;\r\n\r\n get destination(): Destination {\r\n return this.$store.state.destination.destinations.find(d => d.id === this.booking.destinationId);\r\n }\r\n\r\n isValidDate(date: Date): boolean {\r\n return date.getTime() > 946684800000;\r\n }\r\n\r\n formatDate(date: Date): string {\r\n return moment(date).locale(this.$i18n.locale()).format('LLL');\r\n }\r\n\r\n created(){\r\n this.$root.$on(BookingInfoDialog.EVENT_BOOKING_INFO_DIALOG_OPEN, this.onOpenDialog)\r\n }\r\n\r\n onOpenDialog(booking: Booking){\r\n // console.log(\"BookingInfoDialog\", \"onOpenDialog()\", \"booking:\", booking);\r\n this.booking = booking;\r\n this.show = true;\r\n }\r\n\r\n onCloseClick() {\r\n this.show = false;\r\n }\r\n\r\n beforeDestroy(){\r\n this.$root.$off(BookingInfoDialog.EVENT_BOOKING_INFO_DIALOG_OPEN, this.onOpenDialog)\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingInfoDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingInfoDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BookingInfoDialog.vue?vue&type=template&id=41268a64&\"\nimport script from \"./BookingInfoDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./BookingInfoDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport TimetableEditor from '@/components/Timetable/components/TimetableEditor.vue';\r\nimport TimetableInfoDialog from '@/components/Timetable/components/TimetableInfoDialog.vue';\r\nimport BookingEditor from '@/components/Booking/components/BookingEditor.vue';\r\nimport BookingInfoDialog from '@/components/Booking/components/BookingInfoDialog.vue';\r\nimport { Timetable } from '@/components/Timetable/models/Timetable';\r\nimport { PassengerDialog } from '@/components/Passenger/components/PassengerDialog.vue';\r\nimport PassengerEditor from '@/components/Passenger/components/PassengerEditor.vue';\r\nimport Booking from '../components/Booking/models/Booking';\r\nimport { RolePermission } from '../models/Role';\r\nimport Destination from '../components/Passenger/models/Destination';\r\n\r\n@Component({\r\n components: {\r\n TimetableEditor,\r\n TimetableInfoDialog,\r\n BookingEditor,\r\n BookingInfoDialog,\r\n PassengerDialog,\r\n PassengerEditor,\r\n },\r\n beforeRouteEnter(to, from, next) {\r\n // Update destination Timetable data in store each time the page is opened\r\n const destinationId = parseInt(to.params.destinationId, 10);\r\n next((vm) => (vm as TimetablePage).updateTimetables(destinationId));\r\n },\r\n})\r\nexport class TimetablePage extends Vue {\r\n\r\n get me() {\r\n return this.$store.state.user.me;\r\n }\r\n\r\n get userCanViewBookings(): boolean {\r\n return this.me\r\n ? this.me.hasPermissions(this.routeDestinationId, [\r\n RolePermission.ReadBookings,\r\n ])\r\n : false;\r\n }\r\n\r\n get userCanViewTimeTables(): boolean {\r\n return this.me\r\n ? this.me.hasPermissions(this.routeDestinationId, [\r\n RolePermission.ReadTimetables,\r\n ])\r\n : false;\r\n }\r\n\r\n get selectedBookingRouteTabId(): number {\r\n return this.$store.state.route.name.includes('Booking') ? 0 : 1;\r\n }\r\n\r\n set selectedBookingRouteTabId(val: number) {\r\n // no-op\r\n }\r\n\r\n get storeTimetables(): Timetable[] {\r\n return this.$store.state.timetable.timetables;\r\n }\r\n\r\n get destinationTimetables(): Timetable[] {\r\n return this.storeTimetables.filter(t => t.destinationId === this.routeDestinationId);\r\n }\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n get destination(): Destination {\r\n return this.$store.state.destination.destinations.find(d => d.id === this.routeDestinationId);\r\n }\r\n\r\n get storeBookings(): Booking[] {\r\n return this.$store.state.booking.bookings;\r\n }\r\n\r\n get destinationBookings(): Booking[] {\r\n return this.storeBookings.filter(t => t.destinationId === this.routeDestinationId);\r\n }\r\n\r\n onSingleBookingTabClick() {\r\n this.$router.push({\r\n name: 'BookingListWithState',\r\n params: {\r\n destinationId: this.routeDestinationId.toString(),\r\n state: 'open',\r\n },\r\n });\r\n }\r\n\r\n onRecurringBookingTabClick() {\r\n this.$router.push({\r\n name: 'TimetableListWithState',\r\n params: {\r\n destinationId: this.routeDestinationId.toString(),\r\n state: 'new',\r\n },\r\n });\r\n }\r\n\r\n // This refresh method is called whenever user navigates \r\n // to the timetable root page (router beforeEnter)\r\n updateTimetables(destinationId: number) {\r\n if (this.userCanViewBookings) {\r\n this.$store.dispatch('booking/getDestinationBookings', {\r\n params: {\r\n destinationId,\r\n },\r\n });\r\n }\r\n\r\n if (this.userCanViewTimeTables) {\r\n this.$store.dispatch('timetable/getDestinationTimetables', {\r\n params: {\r\n destinationId,\r\n },\r\n });\r\n this.$store.dispatch('ride/getDestinationRides', {\r\n params: {\r\n destinationId,\r\n },\r\n });\r\n }\r\n this.$store.dispatch('destination/getTransportPermissions', {\r\n params: {\r\n destinationId,\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport default TimetablePage;\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimetablePage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimetablePage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TimetablePage.vue?vue&type=template&id=2e3defee&\"\nimport script from \"./TimetablePage.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimetablePage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"timetable-list\",style:({ opacity: _vm.mounting ? 0 : 1})},[_c('v-container',{staticClass:\"compressible\"},[_c('v-card',[_c('v-card-title',{staticClass:\"pt-0 pb-0\"},[_c('div',{staticClass:\"headline\"},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('timetable.page_title', 'Timetables'))}})]),_c('v-spacer'),_c('v-divider',{staticClass:\"mx-3\",attrs:{\"vertical\":\"\"}}),_c('div',[_c('v-switch',{attrs:{\"input-value\":_vm.showOnlyMyTimetables,\"color\":\"warning\",\"label\":_vm.$t('timetable.show-only-mine.toggle.label', 'Show only mine')},on:{\"change\":function($event){_vm.showOnlyMyTimetables = !_vm.showOnlyMyTimetables}}})],1),_c('v-divider',{staticClass:\"mx-3\",attrs:{\"vertical\":\"\"}}),_c('div',[_c('v-switch',{attrs:{\"input-value\":_vm.showExpiredTimetables,\"color\":\"warning\",\"label\":_vm.$t('timetable.show-expired.toggle.label', 'Show expired')},on:{\"change\":function($event){_vm.showExpiredTimetables = !_vm.showExpiredTimetables}}})],1),_c('v-divider',{staticClass:\"mx-3\",attrs:{\"vertical\":\"\"}}),_c('v-btn-toggle',{staticClass:\"transparent\",model:{value:(_vm.showTimetablesAsList),callback:function ($$v) {_vm.showTimetablesAsList=$$v},expression:\"showTimetablesAsList\"}},[_c('v-btn',{attrs:{\"flat\":\"\",\"value\":true}},[_c('v-icon',[_vm._v(\"view_list\")])],1),_c('v-btn',{attrs:{\"flat\":\"\",\"value\":false}},[_c('v-icon',[_vm._v(\"view_column\")])],1)],1),_c('v-divider',{staticClass:\"mx-3\",attrs:{\"vertical\":\"\"}}),(_vm.userCanCreateTimetables)?_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"accent\"},on:{\"click\":_vm.onCreateTimeTableClick}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('timetable.create_new', 'Create new timetable'))}})]):_vm._e()],1),_c('v-tabs',{staticClass:\"timetable-state-tabs my-4\",attrs:{\"show-arrows\":\"\",\"grow\":\"\",\"hide-slider\":\"\"}},_vm._l((_vm.selectableTimetableStates),function(state){return _c('v-tab',{key:state.id,class:['tab', state.nameLowerCase, _vm.timetableCountWithState(state.id) > 0 ? '' : 'empty'],attrs:{\"to\":state.nameLowerCase}},[_c('div',{staticStyle:{\"padding\":\"5px\"}},[_c('span',{staticClass:\"text\"},[_vm._v(\" \"+_vm._s(_vm.$t('timetable.state.' + state.nameLowerCase + \".name.many\", state.name))+\" \")]),(_vm.timetableCountWithState(state.id) > 0)?_c('span',{class:['badge', state.nameLowerCase]},[_vm._v(\" \"+_vm._s(_vm.timetableCountWithState(state.id))+\" \")]):_vm._e()])])}),1),(!_vm.showTimetablesAsList)?_c('v-data-table',{class:['timetable-list-datatable', 'datatable', _vm.isLoading ? 'disabled' : ''],attrs:{\"headers\":_vm.headers,\"items\":_vm.filteredDestinationTimetables,\"no-data-text\":_vm.isLoading \n ? _vm.$t('generic.loading', 'Loading...')\n : _vm.$t(\n 'timetable.state.' + _vm.routeStateNameLowerCase + '.none_for_destination', \n 'No timetables found for {destinationAlias}.', \n { destinationAlias: _vm.destination.alias }\n ),\"loading\":_vm.isLoading,\"custom-sort\":_vm.onDatatableSort,\"rows-per-page-items\":[{'text': _vm.$t('generic.all', 'All'),'value': -1}, 100,50,10],\"rows-per-page-text\":_vm.$t('generic.rows_per_page_with_colon', 'Rows per page:'),\"pagination\":_vm.pagination},on:{\"update:pagination\":function($event){_vm.pagination=$event}},scopedSlots:_vm._u([{key:\"headers\",fn:function(props){return [_c('tr',_vm._l((props.headers),function(header){return _c('th',{key:header.text,class:[\n 'column sortable', \n 'text-xs-' + header.align,\n _vm.pagination.descending ? 'desc' : 'asc', \n header.value === _vm.pagination.sortBy ? 'active' : ''\n ],on:{\"click\":function($event){return _vm.onTableHeaderClick(header.value)}}},[(header.align === 'right')?_c('v-icon',[_vm._v(\"arrow_upward\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.$t(header.i18n, header.text))+\" \"),(header.align === 'left')?_c('v-icon',[_vm._v(\"arrow_upward\")]):_vm._e()],1)}),0)]}},{key:\"items\",fn:function(props){return [_c('TimetableListItem',{attrs:{\"timetableId\":props.item.id,\"listView\":_vm.showTimetablesAsList,\"headers\":_vm.headers}})]}}],null,false,2447789411)},[(_vm.filteredDestinationTimetables.length === 0)?_c('v-container',{attrs:{\"fluid\":\"\",\"pa-5\":\"\",\"text-xs-center\":\"\"}},[(_vm.isLoading)?_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":\"primary\",\"text-xs-center\":\"\",\"mx-auto\":\"\"}}):_vm._e(),(!_vm.isLoading)?_c('div',[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('timetable.no_timetables_for_destination', 'No timetables found for {destinationAlias}.', { destinationAlias: _vm.destination.alias }))}})]):_vm._e()],1):_vm._e()],1):_vm._e(),(_vm.showTimetablesAsList)?_c('v-container',{staticClass:\"timetable-list-container compressible\"},[(_vm.filteredDestinationTimetables.length > 0)?_c('div',{staticClass:\"timetable-list\"},_vm._l((_vm.sortedDestinationTimetables),function(timetable){return _c('TimetableListItem',{key:timetable.id,attrs:{\"timetableId\":timetable.id}})}),1):_vm._e(),(_vm.filteredDestinationTimetables.length === 0)?_c('v-container',{attrs:{\"fluid\":\"\",\"pa-5\":\"\",\"text-xs-center\":\"\"}},[(_vm.isLoading)?_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":\"primary\",\"text-xs-center\":\"\",\"mx-auto\":\"\"}}):_vm._e(),(!_vm.isLoading)?_c('div',[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('timetable.no_timetables_for_destination', 'No timetables found for {destinationAlias}.', { destinationAlias: _vm.destination.alias }))}})]):_vm._e()],1):_vm._e()],1):_vm._e(),_c('v-layout',{attrs:{\"row\":\"\",\"flex\":\"\"}},[_c('v-spacer'),_c('v-flex',{attrs:{\"xs4\":\"\",\"sm4\":\"\"}},[(_vm.userCanCreateTimetables)?_c('v-btn',{staticClass:\"mx-4 mb-4 right\",attrs:{\"dark\":\"\",\"color\":\"accent\"},on:{\"click\":_vm.onCreateTimeTableClick}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('timetable.create_new', 'Create new timetable'))}})]):_vm._e()],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{style:({ display: _vm.listView ? 'block' : 'table-row', cursor: _vm.listView ? 'default' : 'pointer' }),on:{\"click\":_vm.onListItemClick}},[(!_vm.listView)?_vm._l((_vm.headers),function(header){return _c('td',{key:header.text,class:['text-xs-' + header.align]},[(!header.hasCustomTemplate)?[_vm._v(\" \"+_vm._s(_vm.timetable[header.value])+\" \")]:_vm._e(),(header.value === 'idNumber')?[_c('span',{staticClass:\"primary--text\"},[_vm._v(_vm._s(_vm.timetable.idNumberWithHash))])]:_vm._e(),(header.value === 'startDateString' || header.value === 'endDateString')?[_c('div',{staticClass:\"capitalize\"},[_vm._v(\" \"+_vm._s(_vm.$dateHelper.formatDateWithShortWeekDay(_vm.timetable[header.value]))+\" \")])]:_vm._e(),(header.value === 'summary')?[(_vm.timetablePassengerIds.length === 0)?_c('div',[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('timetable.no_passengers_assigned_yet', 'No people assigned to timetable yet.'))}})]):_vm._e(),(_vm.timetablePassengerIds.length > 0)?_c('div',[_vm._v(\" \"+_vm._s(_vm.$t( \"timetable.passenger_count_summary\", \"Trips for {passengersWithTripsCount}/{passengersCount} passengers\", { passengersWithTripsCount: _vm.timetablePassengerIdsWithRidesCount, passengersCount: _vm.timetablePassengersCount } ))+\" \")]):_vm._e()]:_vm._e(),(header.value === 'actions')?[(_vm.userCanEditTimetables)?_c('v-btn',{staticClass:\"mx-0\",attrs:{\"icon\":\"\",\"flat\":\"\",\"dark\":\"\",\"color\":\"grey lighten-1\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onTimetableEditClick($event)}}},[_c('v-icon',[_vm._v(\"settings\")])],1):_vm._e(),_c('v-btn',{staticClass:\"mx-0\",attrs:{\"icon\":\"\",\"flat\":\"\",\"dark\":\"\",\"color\":_vm.timetable.isRejected && _vm.timetable.rejectedReason ? 'red darken-2' : 'grey lighten-1'},on:{\"click\":function($event){$event.stopPropagation();return _vm.onTimetableInfoClick($event)}}},[_c('v-icon',[_vm._v(\"info_outline\")])],1),(_vm.timetableIsOrdered && _vm.userCanEditTimetables)?_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"orange\",\"disabled\":!_vm.timetableOrderIsCancelable,\"loading\":_vm.cancelOrderInProgress},on:{\"click\":function($event){$event.stopPropagation();return _vm.onCancelOrderTimetableClick($event)}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('timetable.cancel_order_button', 'Cancel order'))}})]):_vm._e(),(_vm.timetablePassengerIds.length > 0 && !_vm.timetableIsAccepted && !_vm.timetableIsOrdered && _vm.userCanEditTimetables)?_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"green\",\"disabled\":!_vm.timetableIsOrderable,\"loading\":_vm.orderInProgress},on:{\"click\":function($event){$event.stopPropagation();return _vm.onOrderTimetableClick($event)}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('timetable.order_button', 'Order'))}})]):_vm._e(),(_vm.timetablePassengerIds.length === 0 && !_vm.timetableIsLocked && _vm.userCanEditTimetables)?_c('v-btn',{staticClass:\"mb-2\",attrs:{\"dark\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.onAddPeopleClick}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('timetable.add_passengers_button', 'Add people'))}})]):_vm._e()]:_vm._e()],2)}):_vm._e(),(_vm.listView)?_c('v-container',{staticClass:\"timetable-list-item\"},[(_vm.timetable)?_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm12\":\"\"}},[_c('v-card',{class:{\n 'timetable-card': true,\n locked: _vm.timetableIsLocked,\n 'not-saved': !_vm.timetableIsSaved,\n ordered: _vm.timetableIsOrdered\n },attrs:{\"data-timetable-id\":_vm.timetable.id}},[_c('v-card-title',{staticClass:\"title-bar\"},[_c('v-flex',{staticClass:\"start-date-container\"},[_c('span',{staticClass:\"start-date\"},[_c('div',{staticClass:\"date-title\"},[_vm._v(_vm._s(_vm.$t(\"timetable.starts\", \"Starts\")))]),_c('div',{staticClass:\"date\"},[_vm._v(_vm._s(_vm.$dateHelper.formatDateWithShortWeekDay(_vm.timetable.startDateString)))])])]),_c('v-flex',{staticClass:\"end-date-container\"},[_c('span',{staticClass:\"end-date\"},[_c('div',{staticClass:\"date-title\"},[_vm._v(_vm._s(_vm.$t(\"timetable.ends\", \"Ends\")))]),_c('div',{staticClass:\"date\"},[_vm._v(_vm._s(_vm.$dateHelper.formatDateWithShortWeekDay(_vm.timetable.endDateString)))])])]),_c('v-flex',{staticClass:\"timetable-title\"},[(_vm.timetable.note)?_c('div',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.timetable.note))]):_vm._e()]),_c('div',{staticStyle:{\"position\":\"absolute\",\"top\":\"-4px\",\"right\":\"-8px\"}},[_c('span',{staticClass:\"id-number\",attrs:{\"title\":_vm.$t('timetable.idNumber.titleLong', 'Timetable ID number')}},[_vm._v(\" #\"+_vm._s(_vm.timetable.idNumber)+\" \")]),(_vm.userCanEditTimetables)?_c('v-btn',{attrs:{\"icon\":\"\",\"flat\":\"\",\"dark\":\"\",\"color\":\"grey lighten-1\"},on:{\"click\":_vm.onTimetableEditClick}},[_c('v-icon',[_vm._v(\"settings\")])],1):_vm._e()],1),_c('v-btn',{staticStyle:{\"position\":\"absolute\",\"top\":\"30px\",\"right\":\"-8px\"},attrs:{\"icon\":\"\",\"flat\":\"\",\"dark\":\"\",\"color\":\"grey lighten-1\"},on:{\"click\":_vm.onTimetableInfoClick}},[_c('v-icon',[_vm._v(\"info_outline\")])],1)],1),_c('v-alert',{class:'state-bar pt-0 pr-2 pl-2 pb-0 ' + _vm.timetableCurrentStateAlertClass,attrs:{\"value\":true,\"color\":_vm.timetableCurrentStateColor,\"icon\":_vm.timetableIsLocked ? 'lock' : 'info'}},[_c('span',{staticClass:\"description\"},[_vm._v(\" \"+_vm._s(_vm.$t( _vm.timetable.i18nStateAndPhaseKey, _vm.timetable.i18nStateAndPhaseKey, { daysUntilStart: _vm.timetableDaysUntilStart, daysUntilEnd: _vm.timetableDaysUntilEnd } ))+\" \")]),((_vm.timetableIsAccepted || _vm.timetableIsOrdered) && _vm.userCanEditTimetables)?_c('v-btn',{staticClass:\"right\",attrs:{\"dark\":\"\",\"flat\":\"\",\"disabled\":!_vm.timetableOrderIsCancelable,\"loading\":_vm.cancelOrderInProgress},on:{\"click\":_vm.onCancelOrderTimetableClick}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('timetable.cancel_order_button', 'Cancel order'))}})]):_vm._e(),(!_vm.timetableIsAccepted && !_vm.timetableIsOrdered && _vm.userCanEditTimetables)?_c('v-btn',{staticClass:\"right\",attrs:{\"dark\":\"\",\"color\":\"green\",\"disabled\":!_vm.timetableIsOrderable,\"loading\":_vm.orderInProgress},on:{\"click\":_vm.onOrderTimetableClick}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('timetable.order_button', 'Order'))}})]):_vm._e()],1),_c('v-card-text',[_c('v-layout',{attrs:{\"row\":\"\",\"flex\":\"\"}},[_c('v-flex',{attrs:{\"xs8\":\"\",\"sm8\":\"\"}},[(_vm.timetablePassengerIds.length === 0)?_c('div',[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('timetable.no_passengers_assigned_yet', 'No people assigned to timetable yet.'))}}),_c('div',[(!_vm.timetableIsLocked && _vm.userCanEditTimetables)?_c('v-btn',{staticClass:\"mb-2\",attrs:{\"dark\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.onAddPeopleClick}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('timetable.add_passengers_button', 'Add people'))}})]):_vm._e()],1)]):_vm._e(),(_vm.timetablePassengerIds.length > 0)?_c('div',[_c('b',[_vm._v(\" \"+_vm._s(_vm.$t( \"timetable.passenger_count_summary\", \"Trips for {passengersWithTripsCount}/{passengersCount} passengers\", { passengersWithTripsCount: _vm.timetablePassengerIdsWithRidesCount, passengersCount: _vm.timetablePassengersCount } ))+\" \")])]):_vm._e()]),_c('v-spacer'),_c('v-flex',{attrs:{\"xs4\":\"\",\"sm4\":\"\"}},[_c('v-btn',{staticStyle:{\"position\":\"absolute\",\"bottom\":\"8px\",\"right\":\"8px\"},attrs:{\"color\":\"primary\"},on:{\"click\":_vm.onViewTimetableClick}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('timetable.view_button', 'View'))}})])],1)],1)],1)],1)],1)],1):_vm._e()],1):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from \"vue\";\r\nimport { Component, Prop, Watch } from \"vue-property-decorator\";\r\nimport \"./TimetableListItem.scss\";\r\nimport { Timetable } from \"../models/Timetable\";\r\nimport Passenger from \"../../Passenger/models/Passenger\";\r\nimport Ride from \"../models/Ride\";\r\nimport { Helpers } from \"../../../util/Helpers\";\r\nimport { Guid } from \"guid-typescript\";\r\nimport vuetifyToast from \"vuetify-toast\";\r\nimport { TimetableState } from \"@/components/Timetable/models/TimetableState\";\r\nimport { TimetableStates } from \"@/components/Timetable/models/TimetableStates\";\r\nimport { TimetableEditor } from \"@/components/Timetable/components/TimetableEditor.vue\";\r\nimport { TimetableInfoDialog } from \"@/components/Timetable/components/TimetableInfoDialog.vue\";\r\nimport { RolePermission } from \"@/models/Role\";\r\nimport TimetablePassenger from \"@/components/Timetable/models/TimetablePassenger\";\r\nimport Destination from \"@/components/Passenger/models/Destination\";\r\nimport TransportationPermission from \"../../Passenger/models/TransportationPermission\";\r\nimport moment from \"moment\";\r\n\r\n@Component({\r\n components: {}\r\n})\r\nexport class TimetableListItem extends Vue {\r\n @Prop({ required: true })\r\n timetableId: Guid;\r\n @Prop({ required: false, default: true })\r\n listView: boolean;\r\n @Prop({ default: () => [] })\r\n headers: any[];\r\n orderInProgress: boolean = false;\r\n cancelOrderInProgress: boolean = false;\r\n\r\n s: TimetableStates = new TimetableStates();\r\n\r\n get timetable(): Timetable {\r\n return this.$store.state.timetable.timetables.find(\r\n t => t.id === this.timetableId\r\n );\r\n }\r\n get timetableIsAccepted() {\r\n return this.timetable.isAccepted;\r\n }\r\n get timetableIsOrdered() {\r\n return this.timetable.isOrdered;\r\n }\r\n get timetableIsLocked() {\r\n return this.timetable.isLocked;\r\n }\r\n get timetableIsOrderable() {\r\n return (\r\n this.timetable.isOrderable &&\r\n this.timetableHasRides\r\n );\r\n }\r\n get timetableHasRides() {\r\n return this.timetableRides.length > 0;\r\n }\r\n get timetableOrderIsCancelable() {\r\n return this.timetable.isOrderIsCancelable;\r\n }\r\n get timetableHasExpired() {\r\n return this.timetable.hasExpired;\r\n }\r\n get timetableStartDateTooClose() {\r\n return !this.timetable.hasEnoughTimeBeforeStart;\r\n }\r\n get timetableStartDatePassed() {\r\n return this.timetable.hasStartDatePassed;\r\n }\r\n get timetableDaysUntilStart() {\r\n return this.timetable.daysUntilStart;\r\n }\r\n get timetableDaysUntilEnd() {\r\n return this.timetable.daysUntilEnd;\r\n }\r\n get timetableCurrentStateColor() {\r\n return this.timetable.currentStateColor;\r\n }\r\n get timetableCurrentStateAlertClass() {\r\n return this.timetable.currentStateAlertClass;\r\n }\r\n\r\n get timetableIsSaved() {\r\n // TODO: Implement\r\n // Saved means if there's a order for it and that there's no changes after the previous order are\r\n return true;\r\n }\r\n get timetableRides(): Ride[] {\r\n return this.$store.state.ride.rides.filter(\r\n (ride: Ride) => ride.timetableId === this.timetable.id\r\n );\r\n }\r\n\r\n get timetablePassengerIds(): number[] {\r\n // Autofix bug where cached passenger list is saved as empty\r\n if (\r\n !this.timetable.timetablePassengers ||\r\n this.timetable.timetablePassengers.length === 0\r\n ) {\r\n if (this.timetableRides.length > 0) {\r\n const passengerIds: number[] = this.timetableRides.map(\r\n ride => ride.passengerId\r\n );\r\n const uniquePassengerIds: number[] = [...new Set(passengerIds)];\r\n this.timetable.timetablePassengers = uniquePassengerIds.map(\r\n pid => new TimetablePassenger(this.timetableId, pid)\r\n );\r\n }\r\n }\r\n\r\n return this.timetable.timetablePassengers\r\n .map(tp => tp.passengerId);\r\n }\r\n\r\n set timetablePassengerIds(value) {\r\n console.log(\r\n \"WARN:\",\r\n \"no-op!\",\r\n \"TimetableListItem\",\r\n \"set timetablePassengerIds()\",\r\n \"value:\",\r\n value\r\n );\r\n }\r\n\r\n get timetablePassengersCount(): number {\r\n return this.timetablePassengerIds.length;\r\n }\r\n\r\n get destinations(): Destination[] {\r\n return this.$store.state.destination.destinations;\r\n }\r\n\r\n get selectedDestination(): Destination {\r\n const dest = this.destinations.find(d => d.id === this.routeDestinationId);\r\n return dest;\r\n }\r\n\r\n get isTransportationPermissionEnabled(): boolean {\r\n return (\r\n this.me.hasPermissions(this.routeDestinationId, [\r\n RolePermission.ReadTransportationPermissions\r\n ]) ||\r\n this.me.hasPermissions(this.routeDestinationId, [\r\n RolePermission.CreateTransportationPermissions\r\n ])\r\n );\r\n }\r\n\r\n get timetablePassengersIdsWithRides(): number[] {\r\n const passengerIds: number[] = this.timetable.timetablePassengers\r\n .map(tp => tp.passengerId)\r\n\r\n const passengerIdsWithRides: number[] = [];\r\n passengerIds.forEach(pid => {\r\n if (this.timetableRides.some((r: Ride) => r.passengerId === pid)) {\r\n passengerIdsWithRides.push(pid);\r\n }\r\n });\r\n return passengerIdsWithRides;\r\n }\r\n\r\n get timetablePassengerIdsWithRidesCount(): number {\r\n const passengerIds: number[] = this.timetable.timetablePassengers\r\n .map(tp => tp.passengerId);\r\n\r\n const count: number = passengerIds.filter(pid =>\r\n this.timetableRides.some((r: Ride) => r.passengerId === pid)\r\n ).length;\r\n // Cache count for sorting\r\n this.timetable.passengerWithRidesCount = count;\r\n return count;\r\n }\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n get me() {\r\n return this.$store.state.user.me;\r\n }\r\n\r\n get userCanEditTimetables(): boolean {\r\n return this.me\r\n ? this.me.hasPermissions(this.routeDestinationId, [\r\n RolePermission.UpdateTimetables\r\n ])\r\n : false;\r\n }\r\n\r\n timetableHasPassenger(t, passenger) {\r\n return t.timetablePassengers.some(tp => tp.passengerId === passenger.id);\r\n }\r\n\r\n async saveTimetable(timetable: Timetable) {\r\n await this.$store.dispatch(\"timetable/updateTimetable\", {\r\n params: { id: timetable.id },\r\n data: Timetable.toApi(timetable)\r\n });\r\n }\r\n\r\n get helpers() {\r\n return Helpers;\r\n }\r\n\r\n activate() {\r\n this.$store.dispatch(\"app/setLastSelectedTimetableId\", this.timetable.id);\r\n }\r\n\r\n onTimetableEditClick() {\r\n this.$root.$emit(\r\n TimetableEditor.EVENT_TIMETABLE_EDITOR_OPEN,\r\n this.timetable\r\n );\r\n }\r\n\r\n onTimetableInfoClick() {\r\n this.$root.$emit(\r\n TimetableInfoDialog.EVENT_TIMETABLE_INFO_DIALOG_OPEN,\r\n this.timetable\r\n );\r\n }\r\n\r\n async onCancelOrderTimetableClick() {\r\n // TODO: Send the order cancellation, don't just update the state, let the api update the state\r\n // TODO: Do we need a state OrderCancelled?\r\n this.cancelOrderInProgress = true;\r\n try {\r\n const apiTimetable = Timetable.toApi(this.timetable);\r\n apiTimetable.state = TimetableStates.New.id;\r\n await this.saveTimetable(apiTimetable);\r\n vuetifyToast.success(\r\n this.$i18n.translate(\r\n \"timetable.order.canceled.notification\",\r\n \"Order canceled.\"\r\n )\r\n );\r\n } catch (err) {\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n \"timetable.order.canceled.error\",\r\n \"Error when canceling order: {errorMessage}\",\r\n { errorMessage: (err as any).message }\r\n )\r\n );\r\n }\r\n this.cancelOrderInProgress = false;\r\n }\r\n async onOrderTimetableClick() {\r\n this.orderInProgress = true;\r\n try {\r\n const apiTimetable = Timetable.toApi(this.timetable);\r\n apiTimetable.state = TimetableStates.Ordered.id;\r\n await this.saveTimetable(apiTimetable);\r\n vuetifyToast.success(\r\n this.$i18n.translate(\"timetable.order.sent.notification\", \"Order sent.\")\r\n );\r\n } catch (err) {\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n \"timetable.order.sent.error\",\r\n \"Error when sending order: {errorMessage}\",\r\n { errorMessage: (err as any).message }\r\n )\r\n );\r\n }\r\n\r\n this.orderInProgress = false;\r\n }\r\n onListItemClick(e: Event) {\r\n if (!this.listView) {\r\n this.onViewTimetableClick(e);\r\n }\r\n }\r\n onViewTimetableClick(e: Event) {\r\n this.activate();\r\n setTimeout(() => {\r\n this.$router.push({\r\n name: \"Timetable\",\r\n params: {\r\n timetableId: this.timetable.id.toString()\r\n }\r\n });\r\n }, 300);\r\n }\r\n onAddPeopleClick() {\r\n this.activate();\r\n setTimeout(() => {\r\n this.$router.push({\r\n name: \"Timetable\",\r\n params: {\r\n timetableId: this.timetable.id.toString()\r\n },\r\n query: { addpeople: \"true\" }\r\n });\r\n }, 500);\r\n }\r\n}\r\n\r\nexport default TimetableListItem;\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimetableListItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimetableListItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TimetableListItem.vue?vue&type=template&id=691ecc73&\"\nimport script from \"./TimetableListItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimetableListItem.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { Timetable } from \"@/components/Timetable/models/Timetable\";\r\nimport './TimetableList.scss'\r\nimport { Guid } from \"guid-typescript\";\r\nimport Destination from \"@/components/Passenger/models/Destination\";\r\nimport TimetableListItem from \"@/components/Timetable/components/TimetableListItem.vue\";\r\nimport { Passenger } from \"@/components/Passenger/models/Passenger\";\r\nimport Routes from '@/Routes';\r\nimport { RolePermission } from '@/models/Role';\r\nimport TimetableState, { TimetableStates } from '@/components/Timetable/models/TimetableStates';\r\nimport { Ride } from '@/components/Timetable/models/Ride';\r\nimport User from '../../../models/User';\r\n\r\n@Component({\r\n components: {\r\n TimetableListItem\r\n },\r\n })\r\nexport class TimetableList extends Vue {\r\n\r\n mounting: boolean = true;\r\n editedTimetableId: Guid = null;\r\n showTimetableEditor: boolean = false;\r\n stateFilter: string = 'pending';\r\n selectableTimetableStates: TimetableState[] = TimetableStates.SelectableStates;\r\n\r\n headers: any[] = [ \r\n { \r\n i18n: 'timetable.table.header.idNumber',\r\n text: 'ID', \r\n align: 'left', \r\n value: 'idNumber',\r\n hasCustomTemplate: true\r\n },\r\n { \r\n i18n: 'timetable.table.header.startDate',\r\n fi: 'Alkaa', \r\n text: 'Starts', \r\n align: 'left', \r\n value: 'startDateString',\r\n hasCustomTemplate: true\r\n },\r\n { \r\n i18n: 'timetable.table.header.endDate',\r\n fi: 'Loppuu', \r\n text: 'Ends', \r\n align: 'left', \r\n value: 'endDateString',\r\n hasCustomTemplate: true\r\n },\r\n { \r\n i18n: 'timetable.table.header.note',\r\n fi: 'Nimi', \r\n text: 'Name', \r\n align: 'left', \r\n value: 'noteString' \r\n },\r\n { \r\n i18n: 'timetable.table.header.summary',\r\n fi: 'Yhteenveto', \r\n text: 'Summary', \r\n align: 'left', \r\n value: 'summary',\r\n hasCustomTemplate: true\r\n },\r\n { \r\n i18n: 'timetable.table.header.createdBy',\r\n fi: 'Tekijä', \r\n text: 'Created by', \r\n align: 'left', \r\n value: 'createdByNameFromEmail'\r\n },\r\n { \r\n i18n: 'timetable.table.header.actions',\r\n fi: 'Toiminnot', \r\n text: 'Actions', \r\n align: 'right', \r\n value: 'actions',\r\n hasCustomTemplate: true\r\n }\r\n ]\r\n\r\n get pagination(): any {\r\n return this.$store.state.app.timetableListDataTablePagination;\r\n }\r\n\r\n set pagination(val: any){\r\n this.$store.dispatch(\"app/setTimetableListDataTablePagination\", val);\r\n }\r\n\r\n get storeRides(): Ride[]{\r\n return this.$store.state.ride.rides;\r\n }\r\n\r\n timetableRides(timetable: Timetable): Ride[] {\r\n return this.filteredDestinationTimetableRides.filter((ride: Ride) => ride.timetableId === timetable.id);\r\n }\r\n\r\n get filteredDestinationTimetableRides(): Ride[] { \r\n const timetableIds = this.filteredDestinationTimetables.map(t => t.id);\r\n return this.storeRides.filter((ride: Ride) => timetableIds.includes(ride.timetableId));\r\n }\r\n\r\n timetablePassengersIds(timetable: Timetable): number[] {\r\n return timetable.timetablePassengers.map(tp => tp.passengerId);\r\n }\r\n\r\n timetablePassengersWithRidesCount(timetable: Timetable): number {\r\n return this.timetablePassengersIds(timetable)\r\n .filter(pid => \r\n this.timetableRides(timetable).some((r: Ride) => r.passengerId === pid)\r\n )\r\n .length;\r\n }\r\n\r\n onTableHeaderClick(column){\r\n const pagination = Object.assign({}, this.pagination);\r\n if (pagination.sortBy === column) {\r\n pagination.descending = !pagination.descending;\r\n } else {\r\n pagination.sortBy = column;\r\n pagination.descending = false;\r\n }\r\n this.pagination = pagination;\r\n }\r\n\r\n onDatatableSort(items, index, isDesc) {\r\n items.sort((a: Timetable, b: Timetable) => {\r\n if (index === \"summary\") {\r\n const passengerCountA = a.passengerWithRidesCount || 0;\r\n const passengerCountB = b.passengerWithRidesCount || 0;\r\n\r\n if (isDesc) {\r\n return passengerCountB < passengerCountA ? -1 : 1;\r\n } \r\n\r\n return passengerCountA < passengerCountB ? -1 : 1;\r\n }\r\n\r\n if (isDesc) {\r\n return b[index] < a[index] ? -1 : 1;\r\n }\r\n\r\n return a[index] < b[index] ? -1 : 1;\r\n });\r\n\r\n return items;\r\n }\r\n\r\n get isLoading(): boolean {\r\n return this.$store.state.timetable.pending.timetables ||\r\n this.$store.state.destination.pending.destinations ||\r\n this.$store.state.ride.pending.rides;\r\n }\r\n\r\n @Watch(\"isLoading\")\r\n onIsLoadingChanged(val, oldVal){\r\n // Dispatch window resize event to make the state tabs autosize\r\n window.dispatchEvent(new Event(\"resize\"));\r\n }\r\n\r\n get showExpiredTimetables(): boolean {\r\n return this.$store.state.app.showExpiredTimetables;\r\n }\r\n set showExpiredTimetables(val) {\r\n this.$store.dispatch(\"app/setShowExpiredTimetables\", val);\r\n }\r\n\r\n get showOnlyMyTimetables(): boolean {\r\n return this.$store.state.app.showOnlyMyTimetables;\r\n }\r\n set showOnlyMyTimetables(val) {\r\n this.$store.dispatch(\"app/setShowOnlyMyTimetables\", val);\r\n }\r\n\r\n get showTimetablesAsList(): boolean {\r\n return this.$store.state.app.showTimetablesAsList;\r\n }\r\n set showTimetablesAsList(val) {\r\n this.$store.dispatch(\"app/setShowTimetablesAsList\", val);\r\n }\r\n\r\n get me(): User {\r\n return this.$store.state.user.me;\r\n }\r\n\r\n get selectedTimetableId(): Guid {\r\n return this.$store.state.route.params.timetableId;\r\n }\r\n\r\n get storeTimetables(): Timetable[] {\r\n return this.$store.state.timetable.timetables || [];\r\n }\r\n\r\n get destinationTimetables(): Timetable[] {\r\n const result = this.storeTimetables.filter(t => \r\n t.destinationId === this.routeDestinationId &&\r\n (!t.hasExpired || this.showExpiredTimetables) &&\r\n ((t.createdByEmail === this.me.email && this.showOnlyMyTimetables) || !this.showOnlyMyTimetables)\r\n );\r\n\r\n return result;\r\n }\r\n\r\n get filteredDestinationTimetables(): Timetable[] {\r\n return this.destinationTimetables.filter(t => t.state === this.routeStateId);\r\n }\r\n\r\n get sortedDestinationTimetables(): Timetable[] {\r\n return this.filteredDestinationTimetables.sort((a, b) => {\r\n if (a.startDate.getTime() !== b.startDate.getTime() ){\r\n return a.startDate.getTime() > b.startDate.getTime() ? 1 : -1;\r\n } \r\n if (a.id !== b.id){\r\n return a.id > b.id ? -1 : 1;\r\n }\r\n });\r\n }\r\n\r\n get destinations(): Destination[] {\r\n return this.$store.state.destination.destinations;\r\n }\r\n\r\n get destination(): Destination {\r\n return this.destinations.find(d => d.id === this.routeDestinationId);\r\n }\r\n\r\n get routeStateNameLowerCase(): string {\r\n return this.$store.state.route.params.state;\r\n }\r\n\r\n get routeState(): TimetableState {\r\n return this.routeStateNameLowerCase \r\n ? TimetableStates.SelectableStates.find(s => s.nameLowerCase === this.routeStateNameLowerCase)\r\n : null;\r\n }\r\n\r\n get routeStateId(): number {\r\n return this.routeState ? this.routeState.id : 0;\r\n }\r\n\r\n @Watch('routeState', { immediate: true })\r\n onRouteStateChanged(val, oldVal) {\r\n if (val){\r\n this.$store.dispatch(\"app/setLastSelectedTimetableState\", this.routeState);\r\n }\r\n }\r\n\r\n timetableCountWithState(stateId: number): number {\r\n return this.destinationTimetables.filter(t => t.state === stateId).length;\r\n }\r\n\r\n destinationFor(timetable: Timetable): Destination {\r\n return this.destinations.find(d => d.id === timetable.destinationId);\r\n }\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n get lastSelectedTimetableId(): Guid {\r\n return this.$store.state.app.lastSelectedTimetableId;\r\n }\r\n\r\n get userCanCreateTimetables(): boolean {\r\n return this.me \r\n ? this.me.hasPermissions(this.routeDestinationId, [RolePermission.CreateTimetables])\r\n : false;\r\n }\r\n\r\n timeout(ms) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n }\r\n\r\n get lastSelectedTimetableState(): TimetableState{\r\n return this.$store.state.app.lastSelectedTimetableState;\r\n }\r\n\r\n get lastSelectedTimetableStateNameLowerCase(): string {\r\n return this.lastSelectedTimetableState \r\n ? this.lastSelectedTimetableState.nameLowerCase\r\n : null;\r\n }\r\n\r\n @Watch('$route', { immediate: true }) onRouteChanged(val, oldVal) {\r\n if (!this.routeState){\r\n this.$router.replace({\r\n name: Routes.timetableListWithStateRoute.name, \r\n params: { \r\n state: this.lastSelectedTimetableStateNameLowerCase ? this.lastSelectedTimetableStateNameLowerCase : 'new'\r\n }\r\n })\r\n }\r\n }\r\n \r\n async mounted() {\r\n this.mounting = true;\r\n if (this.lastSelectedTimetableId && this.showTimetablesAsList){\r\n // copy the value from store to a local variable, so it's there after the timeout\r\n const lastSelectedTimetableId = this.lastSelectedTimetableId;\r\n const timetableElement = document.querySelector(\"[data-timetable-id='\" + lastSelectedTimetableId + \"']\");\r\n\r\n if (timetableElement){\r\n await this.timeout(400); \r\n \r\n timetableElement.scrollIntoView({ behavior: \"auto\", block: \"center\" });\r\n this.mounting = false;\r\n\r\n await this.timeout(600);\r\n timetableElement.classList.add(\"last-selected\")\r\n\r\n await this.timeout(1000);\r\n timetableElement.classList.remove(\"last-selected\")\r\n } else {\r\n this.mounting = false;\r\n }\r\n // Now that we are bringing the previously selected timetable into view, we can reset astSelectedTimetableId\r\n this.$store.dispatch(\"app/setLastSelectedTimetableId\", null);\r\n } else {\r\n this.mounting = false;\r\n }\r\n }\r\n\r\n get showWeekends() {\r\n return this.$store.state.user.showWeekends;\r\n }\r\n\r\n onCreateTimeTableClick() {\r\n this.$router.push({ name: Routes.timetableListCreateNewRoute.name, params: { state: \"new\" } });\r\n }\r\n\r\n}\r\n\r\nexport default TimetableList;\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimetableList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimetableList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TimetableList.vue?vue&type=template&id=0e51ca7a&\"\nimport script from \"./TimetableList.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimetableList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"timetable-view compressible\",attrs:{\"fluid\":\"\"}},[_c('v-btn',{staticClass:\"mt-2\",attrs:{\"color\":\"primary\",\"dark\":\"\"},on:{\"click\":_vm.onBackToListClick}},[_c('v-icon',{staticClass:\"mr-3\"},[_vm._v(\"arrow_back\")]),_vm._v(\" \"+_vm._s(_vm.$t('timetable.back_to_list', 'Back to list'))+\" \")],1),(!_vm.timetable || _vm.isSplitting)?_c('div',[(_vm.isLoading || _vm.isSplitting)?_c('v-container',{attrs:{\"fluid\":\"\",\"pa-5\":\"\",\"text-xs-center\":\"\"}},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":\"primary\",\"text-xs-center\":\"\",\"mx-auto\":\"\"}})],1):_c('v-alert',{attrs:{\"value\":true}},[_c('v-icon',[_vm._v(\"error\")]),_c('span',{staticClass:\"subheading\"},[_vm._v(\" \"+_vm._s(_vm.$t('timetable.not_found.notification', 'Timetable not found. It might have already been removed.'))+\" \")])],1)],1):_c('div',[(_vm.isLoading)?_c('v-container',{attrs:{\"fluid\":\"\",\"pa-5\":\"\",\"text-xs-center\":\"\"}},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":\"orange\",\"text-xs-center\":\"\",\"mx-auto\":\"\"}})],1):[_c('v-dialog',{attrs:{\"scrollable\":\"\",\"lazy\":\"\"},model:{value:(_vm.showPassengerList),callback:function ($$v) {_vm.showPassengerList=$$v},expression:\"showPassengerList\"}},[_c('PassengerList',{attrs:{\"pickMode\":true,\"hiddenPassengers\":_vm.storeTimetablePassengers,\"title\":_vm.$t('timetable.passengers.add-passengers.dialog.title', 'Add people')},on:{\"pickPassengers\":_vm.onPickPassengers,\"close\":_vm.onCancelPick}})],1),_c('v-card',{staticClass:\"mt-4\"},[_c('v-card-title',[_c('div',[(_vm.destination)?_c('div',{staticClass:\"headline\"},[_c('v-spacer'),(_vm.timetable.idNumber)?_c('span',[_vm._v(_vm._s(_vm.$t('timetable.timetable', 'Timetable'))+\" \"),_c('span',{staticClass:\"id-number\",staticStyle:{\"margin-left\":\"2px\"},attrs:{\"title\":_vm.$t('timetable.idNumber.titleLong', 'Timetable ID number')}},[_vm._v(\" #\"+_vm._s(_vm.timetable.idNumber)+\" \")])]):_vm._e(),(_vm.timetableStateNameLowerCase)?_c('v-chip',{class:['timetable-state-chip', _vm.timetableStateNameLowerCase]},[_vm._v(\" \"+_vm._s(_vm.$t('timetable.state.' + _vm.timetableStateNameLowerCase + \".name.one\", _vm.timetableStateName))+\" \")]):_vm._e()],1):_vm._e(),_c('div',{staticStyle:{\"margin-bottom\":\"6px\"}},[_c('span',{staticClass:\"title\",staticStyle:{\"font-size\":\"14px!important\"}},[[_vm._v(_vm._s(_vm.timetable.note))],void 0],2)])]),_c('v-spacer'),((_vm.timetableIsOrdered) && _vm.userCanEditTimetables)?_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"orange\",\"disabled\":!_vm.timetableOrderIsCancelable,\"loading\":_vm.cancelOrderInProgress},on:{\"click\":function($event){$event.stopPropagation();return _vm.onCancelOrderTimetableClick($event)}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('timetable.cancel_order_button','Cancel order'))}})]):_vm._e(),(_vm.storeTimetablePassengers.length > 0 && (!_vm.timetableIsAccepted && !_vm.timetableIsOrdered) && _vm.userCanEditTimetables)?_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"green\",\"disabled\":!_vm.timetableIsOrderable || _vm.passengersWhitoutPermissions.length > 0,\"loading\":_vm.orderInProgress},on:{\"click\":function($event){$event.stopPropagation();return _vm.onOrderTimetableClick($event)}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('timetable.order_button','Order'))}})]):_vm._e()],1),_c('v-card-text',[_c('div',[_c('div',{staticStyle:{\"display\":\"inline-block\"}},[_c('span',{staticClass:\"start-date\",staticStyle:{\"display\":\"inline-block\"}},[_c('b',[_vm._v(_vm._s(_vm.$t(\"timetable.starts\", \"Starts\")))]),_c('br'),_vm._v(\" \"+_vm._s(_vm.$dateHelper.formatDateWithShortWeekDay(_vm.timetable.startDateString))+\" \")]),_c('span',{staticClass:\"end-date\",staticStyle:{\"display\":\"inline-block\",\"margin-left\":\"12px\",\"margin-right\":\"12px\"}},[_c('b',[_vm._v(_vm._s(_vm.$t(\"timetable.ends\", \"Ends\")))]),_c('br'),_vm._v(\" \"+_vm._s(_vm.$dateHelper.formatDateWithShortWeekDay(_vm.timetable.endDateString))+\" \")]),_c('div',{staticClass:\"description\",staticStyle:{\"display\":\"inline-block\",\"vertical-align\":\"top\"}},[_c('b',[_vm._v(_vm._s(_vm.$t('timetable.description', 'Additional information')))]),_c('br'),(_vm.timetable.description)?_c('div',{staticClass:\"description-preformatted\"},[_vm._v(_vm._s(_vm.timetable.description.trim()))]):_c('span',[_vm._v(\"-\")])])]),_c('div',[_c('a',{on:{\"click\":_vm.onTimetableEditClick}},[_vm._v(_vm._s(_vm.$t(\"timetable.edit.editInfo\")))])])])])],1),_c('v-card',[_c('v-card-title',[(_vm.userCanEditTimetables)?_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{staticClass:\"timetable-time-entry-guide\",attrs:{\"xs12\":\"\",\"sm12\":\"\",\"my-2\":\"\"}},[_c('v-icon',{staticClass:\"mr-1\",staticStyle:{\"margin-bottom\":\"-4px\"}},[_vm._v(\"info\")]),_vm._v(\" \"+_vm._s(_vm.$t('timetable.time-entry.template.guide', 'Choose a time below and use the \"Starts\" and \"Ends\" buttons to set the given time for all selected passengers.'))+\" \")],1),(_vm.passengersWhitoutPermissions.length > 0)?_c('v-flex',{staticClass:\"timetable-time-entry-warning\",attrs:{\"xs12\":\"\",\"sm12\":\"\",\"my-2\":\"\"}},[_c('v-icon',{staticClass:\"mr-1\",staticStyle:{\"margin-bottom\":\"-4px\"}},[_vm._v(\"info\")]),_c('span',[_vm._v(_vm._s(_vm.$t('timetable.time-entry.template.warning', 'Passengers with out transport permission'))+\": \")]),_vm._l((_vm.passengersWhitoutPermissions),function(pas,index){return _c('span',{key:pas.id},[_c('span',[_vm._v(_vm._s(pas.name))]),(index+1 < _vm.passengersWhitoutPermissions.length)?_c('span',[_vm._v(\", \")]):_vm._e()])})],2):_vm._e()],1):_vm._e()],1),_c('v-card-text',[_c('v-layout',{staticStyle:{\"align-items\":\"center\"},attrs:{\"row\":\"\",\"wrap\":\"\",\"justify-end\":\"\",\"align-content-end\":\"\"}},[_c('v-flex',{attrs:{\"xs6\":\"\",\"sm8\":\"\"}},[_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm6\":\"\"}},[_c('GroupPicker',{attrs:{\"groups\":_vm.timetableGroups,\"enableCreation\":false,\"label\":_vm.$t('generic.filter.groups.label', 'Filter groups ...')},on:{\"change\":_vm.onGroupFilterGroupPickerChange}})],1),_c('v-flex',{attrs:{\"xs12\":\"\",\"sm6\":\"\"}},[_c('v-text-field',{attrs:{\"prepend-icon\":\"search\",\"label\":_vm.$t('generic.search', 'Search'),\"single-line\":\"\",\"hide-details\":\"\"},on:{\"input\":_vm.onSearchInput}})],1)],1)],1),_c('v-spacer'),(_vm.userCanEditTimetables)?_c('v-flex',{staticStyle:{\"text-align\":\"right\"}},[_c('div',{staticClass:\"green--text\"},[_c('span',{staticStyle:{\"display\":\"inline-block\",\"text-align\":\"center\"},domProps:{\"innerHTML\":_vm._s(_vm.$t(\n 'timetable.time-entry.template.start.title',\n 'Start time
to set
'\n ))}})]),_c('div',{staticStyle:{\"max-width\":\"60px\",\"float\":\"right\"}},[_c('TimeOfDayEditor',{attrs:{\"timeOfDay\":_vm.templateStartsTimeOfDay},on:{\"change\":_vm.templateStartsTimeOfDayChanged}})],1)]):_vm._e(),(_vm.userCanEditTimetables)?_c('v-flex',{staticStyle:{\"text-align\":\"right\"}},[_c('div',{staticClass:\"orange--text\"},[_c('span',{staticStyle:{\"display\":\"inline-block\",\"text-align\":\"center\"},domProps:{\"innerHTML\":_vm._s(_vm.$t(\n 'timetable.time-entry.template.end.title',\n 'End time
to set
'\n ))}})]),_c('div',{staticStyle:{\"max-width\":\"60px\",\"float\":\"right\"}},[_c('TimeOfDayEditor',{attrs:{\"timeOfDay\":_vm.templateEndsTimeOfDay},on:{\"change\":_vm.templateEndsTimeOfDayChanged}})],1)]):_vm._e()],1)],1),_c('div',{staticStyle:{\"opacity\":\"0\",\"position\":\"absolute\",\"height\":\"0\",\"width\":\"0\"}},[(_vm.editedRide)?_c('TimeOfDayEditor',{ref:\"timeOfDayEditorRef\",staticClass:\"editor hidden\",attrs:{\"loading\":_vm.editedRide.loading,\"timeOfDay\":_vm.editedRide.timeOfDayUpdate || _vm.editedRide.timeOfDay,\"locked\":_vm.timetableIsLocked},on:{\"blur\":function($event){return _vm.onTimeOfDayEditorBlur()},\"change\":function($event){return _vm.onRideUpdated(_vm.editedRide)},\"click\":function($event){$event.stopPropagation();0}}}):_vm._e()],1),_c('v-data-table',{ref:\"datatable\",staticClass:\"timetable-datatable\",attrs:{\"headers\":_vm.visibleHeaders,\"items\":_vm.passengerWeekdayRides,\"search\":_vm.search,\"pagination\":_vm.pagination,\"select-all\":\"\",\"no-data-text\":_vm.$t('timetable.no_passengers_assigned_yet', 'No people assigned to timetable yet.'),\"rows-per-page-items\":[{'text': _vm.$t('generic.all', 'All'),'value': -1}, 100,50,10],\"rows-per-page-text\":_vm.$t('generic.rows_per_page_with_colon', 'Rows per page:'),\"loading\":_vm.passengersLoading},on:{\"update:pagination\":function($event){_vm.pagination=$event}},scopedSlots:_vm._u([{key:\"headers\",fn:function(props){return [_c('tr',[(_vm.userCanEditTimetables)?_c('th',[(_vm.isMounted)?_c('v-checkbox',{attrs:{\"primary\":\"\",\"hide-details\":\"\"},model:{value:(_vm.allFilteredPassengersSelected),callback:function ($$v) {_vm.allFilteredPassengersSelected=$$v},expression:\"allFilteredPassengersSelected\"}}):_vm._e()],1):_vm._e(),_c('th',{class:['column', 'text-xs-left'],on:{\"click\":function($event){return _vm.onChangeSort('name')}}},[_vm._v(\" \"+_vm._s(_vm.$t('generic.header.passenger.one', 'Passenger'))+\" \")]),_c('th',[_c('v-btn',{attrs:{\"disabled\":!_vm.userCanEditTimetables,\"small\":\"\",\"dark\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onFetchSchedulesClick($event)}}},[_vm._v(\" \"+_vm._s(_vm.$t('timetable.passengers.getSchedules'))+\" \")])],1),_vm._l((props.headers),function(header,i){return _c('th',{directives:[{name:\"show\",rawName:\"v-show\",value:(i > 1),expression:\"i > 1\"}],key:header.text,class:['column', 'weekday', header.enabled ? 'enabled' : 'disabled'],attrs:{\"colspan\":\"2\"}},[_c('div',{class:{ 'weekend': header.weekend }},[_c('div',{staticClass:\"text-xs-left weekday-name\",staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(_vm._s(header.text || ' '))])])])})],2),_c('tr',[(_vm.userCanEditTimetables)?_c('th',{staticClass:\"column sortable\"}):_vm._e(),_c('th',{class:['column', 'sortable', 'text-xs-left', _vm.pagination.descending ? 'desc' : 'asc', _vm.pagination.sortBy === 'name' ? 'active' : ''],on:{\"click\":function($event){return _vm.onChangeSort('name')}}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"arrow_upward\")]),_vm._v(\" \"+_vm._s(_vm.$t('passenger.prop.name.label', 'Name'))+\" \")],1),_c('th',{class:['column', 'sortable', 'text-xs-left', _vm.pagination.descending ? 'desc' : 'asc', _vm.pagination.sortBy === 'groups' ? 'active' : ''],on:{\"click\":function($event){return _vm.onChangeSort('groups')}}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"arrow_upward\")]),_vm._v(\" \"+_vm._s(_vm.$t('passenger.prop.tags.label', 'Tags'))+\" \")],1),_vm._l((props.headers),function(header,i){return (i > 1)?[_c('th',{key:header.weekDayId + ' ' + 'starts',class:['column', 'sortable', 'starts', header.enabled ? 'enabled' : 'disabled']},[(_vm.userCanEditTimetables)?_c('v-btn',{staticStyle:{\"min-width\":\"0\",\"padding\":\"2px 5px\",\"margin\":\"0\"},attrs:{\"small\":\"\",\"dark\":\"\",\"color\":\"green lighten-1\",\"disabled\":_vm.timetableIsLocked || !header.enabled},on:{\"click\":function($event){return _vm.onStartsClicked(header.weekDayId)}}},[_vm._v(\" \"+_vm._s(_vm.$t('timetable.time-entry.template.start.assign', 'Start'))+\" \")]):_c('span',[_vm._v(_vm._s(_vm.$t('timetable.time-entry.template.start.assign', 'Start')))])],1),_c('th',{key:header.weekDayId + ' ' + 'ends',class:['column', 'sortable', 'ends', header.enabled ? 'enabled' : 'disabled']},[(_vm.userCanEditTimetables)?_c('v-btn',{staticStyle:{\"min-width\":\"0\",\"padding\":\"2px 5px\",\"margin\":\"0\"},attrs:{\"small\":\"\",\"dark\":\"\",\"color\":\"orange lighten-1\",\"disabled\":_vm.timetableIsLocked || !header.enabled},on:{\"click\":function($event){return _vm.onEndsClicked(header.weekDayId)}}},[_vm._v(\" \"+_vm._s(_vm.$t('timetable.time-entry.template.end.assign', 'End'))+\" \")]):_c('span',[_vm._v(_vm._s(_vm.$t('timetable.time-entry.template.end.assign','End')))])],1)]:_vm._e()})],2)]}},{key:\"items\",fn:function(props){return [(props.item && props.item.passenger)?_c('tr',{class:{ 'timetable-passenger-row': true, 'inactive': props.item.passenger.inactive },attrs:{\"data-passenger-id\":props.item.passenger.id}},[(_vm.userCanEditTimetables)?_c('td',{staticClass:\"pointer\",on:{\"click\":function($event){$event.stopPropagation();props.item.passenger.selected = props.item.passenger.inactive ? false : !props.item.passenger.selected}}},[_c('v-checkbox',{attrs:{\"primary\":\"\",\"hide-details\":\"\",\"disabled\":props.item.passenger.inactive},on:{\"click\":function($event){$event.stopPropagation();props.item.passenger.selected = props.item.passenger.inactive ? false : !props.item.passenger.selected}},model:{value:(props.item.passenger.selected),callback:function ($$v) {_vm.$set(props.item.passenger, \"selected\", $$v)},expression:\"props.item.passenger.selected\"}})],1):_vm._e(),_c('td',{staticClass:\"pointer passenger-name\",on:{\"click\":function($event){$event.stopPropagation();props.item.passenger.selected = !props.item.passenger.selected}}},[_c('v-chip',{staticClass:\"passenger-chip\",style:({ 'background-color': _vm.helpers.getRandomColorWithSeed(props.item.passenger.id, 'light') }),attrs:{\"small\":\"\",\"text-color\":\"black\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onPassengerClick($event, props.item.passenger)}}},[_vm._v(\" \"+_vm._s(props.item.passenger.name)+\" \")]),(_vm.isTransportationPermissionEnabled && _vm.missingTripPermission(props.item.passenger.id))?_c('v-tooltip',{attrs:{\"right\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\nreturn [(_vm.missingTripPermission(props.item.passenger.id))?_c('i',_vm._g({staticClass:\"fas fa-exclamation\",attrs:{\"color\":\"orange darken-2\"}},on)):_vm._e()]}}],null,true)},[_c('span',[_vm._v(\"Matkaoikeus puuttuu\")])]):_vm._e()],1),_c('td',_vm._l((props.item.passenger.groupNames),function(groupName){return _c('v-chip',{directives:[{name:\"show\",rawName:\"v-show\",value:(groupName),expression:\"groupName\"}],key:groupName,staticClass:\"chip--select-single\",attrs:{\"small\":\"\"}},[_vm._v(\" \"+_vm._s(groupName)+\" \")])}),1),_vm._l((props.item.weekDays),function(o){return _vm._l(([\n { ride: o.arrival, rideType: _vm.RideType.Arrival}, \n { ride: o.departure, rideType: _vm.RideType.Departure}\n ]),function(r){return _c('td',{key:props.item.passenger.id + '_' + o.weekDay.id + '_' + r.rideType,class:{\n 'text-xs-left': true, \n 'weekday-rides': true, \n 'time-of-day-container': true,\n 'disabled': !o.weekDay.enabled,\n 'starts': r.rideType === _vm.RideType.Arrival, \n 'ends': r.rideType === _vm.RideType.Departure\n },on:{\"click\":function($event){$event.stopPropagation();return _vm.onRideCellClick($event, props.item.passenger, o.weekDay, r.ride, r.rideType)}}},[_c('span',{class:{ 'time-of-day-display': true, 'disabled': (r.ride && r.ride.loading) || _vm.timetableIsLocked }},[(r.ride)?[_vm._v(\" \"+_vm._s((r.ride.timeOfDayUpdate || r.ride.timeOfDay).value)+\" \")]:_vm._e()],2)])})})],2):_vm._e()]}},{key:\"pageText\",fn:function(props){return [_vm._v(\" \"+_vm._s(_vm.$t( 'timetable.passengers.list.summary', 'Total of {total} people in timetable. Showing {start} - {end} of {count} matching filters.', { total: _vm.storeTimetablePassengers.length, start: props.pageStart, end: props.pageStop, count: props.itemsLength } ))+\" \")]}}])},[_c('v-alert',{attrs:{\"slot\":\"no-results\",\"value\":true,\"color\":\"error\",\"icon\":\"warning\"},slot:\"no-results\"},[_vm._v(\" \"+_vm._s(_vm.$t('generic.no_results_for_search_with_text', 'Your search for \"{search}\" found no results.', { search: _vm.search } ))+\" \")])],1),_c('v-card-actions',[(_vm.userCanEditTimetables)?_c('v-btn',{staticClass:\"mb-2\",attrs:{\"dark\":\"\",\"color\":\"primary\",\"disabled\":_vm.timetableIsLocked},on:{\"click\":_vm.onAddPassengersClick}},[_vm._v(\" \"+_vm._s(_vm.$t('timetable.passengers.list.add.button', 'Add people'))+\" \")]):_vm._e(),(_vm.canDeletePassengers)?_c('v-btn',{staticClass:\"mb-2\",attrs:{\"color\":\"error\",\"disabled\":!_vm.selectedFilteredPassengers.length > 0},on:{\"click\":_vm.onDeletePassengersClick}},[_vm._v(\" \"+_vm._s(_vm.$t('timetable.passengers.delete-selected-passengers.button', {amount: _vm.selectedFilteredPassengers.length}))+\" \")]):_vm._e()],1)],1)]],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Ride, { RideType } from \"./Ride\";\r\nimport TimeOfDay from \"./TimeOfDay\";\r\nimport Passenger from \"@/components/Passenger/models/Passenger\";\r\nimport moment from 'moment';\r\n\r\nexport class WeekDay {\r\n \r\n id: number;\r\n name: string;\r\n weekend: boolean;\r\n enabled: boolean;\r\n \r\n constructor(id: number, name: string, weekend: boolean = false, enabled: boolean = true) {\r\n this.id = id;\r\n this.name = name;\r\n this.weekend = weekend;\r\n this.enabled = enabled;\r\n }\r\n\r\n public static nextWeekDayId(id: number) {\r\n return id < 6 ? id + 1 : 0;\r\n }\r\n\r\n public static WeekDays(weekStartsOnSunday: boolean, startDate: Date, endDate: Date): WeekDay[] {\r\n const sunday: WeekDay = new WeekDay(0, \"Sunday\", true);\r\n const days: WeekDay[] = [\r\n new WeekDay(1, \"Monday\"),\r\n new WeekDay(2, \"Tuesday\"),\r\n new WeekDay(3, \"Wednesday\"),\r\n new WeekDay(4, \"Thursday\"),\r\n new WeekDay(5, \"Friday\"),\r\n new WeekDay(6, \"Saturday\", true)\r\n ]\r\n if (weekStartsOnSunday) {\r\n days.unshift(sunday);\r\n } else {\r\n days.push(sunday);\r\n }\r\n\r\n // set weekday.enabled to false if not in range\r\n const startMoment = moment(startDate);\r\n const endMoment = moment(endDate);\r\n const diffDays = Math.abs(startMoment.diff(endMoment, \"days\"));\r\n const dayNumbersInRange = [];\r\n if (diffDays < 7){\r\n // if the diffDays span is < 7 days, some days need disabling\r\n dayNumbersInRange.push(startMoment.isoWeekday());\r\n for (const deltaDay of [...Array(diffDays + 1).keys()].slice(1)) {\r\n dayNumbersInRange.push(moment(startDate).add(deltaDay, \"days\").isoWeekday());\r\n }\r\n // dayNumbersInRange contains ISO weekday numbers of included days\r\n // let's set .enabled for each day\r\n // the ones not in the range will then have .enabled = false\r\n days.forEach(d => {\r\n d.enabled = dayNumbersInRange.includes(d.id); \r\n });\r\n }\r\n \r\n return days;\r\n }\r\n \r\n}\r\n\r\nexport default WeekDay;\r\n","\r\nimport Vue from 'vue';\r\nimport { Component, Prop, Watch } from 'vue-property-decorator';\r\nimport './TimeOfDayEditor.scss'\r\nimport TimeOfDay from '../models/TimeOfDay';\r\n\r\n@Component({\r\n template: require(\"./TimeOfDayEditor.vue.html\"),\r\n components: {\r\n \r\n }\r\n})\r\nexport class TimeOfDayEditor extends Vue {\r\n\r\n @Prop({default: null}) \r\n timeOfDay: TimeOfDay;\r\n\r\n @Prop({default: false}) \r\n locked: boolean;\r\n\r\n @Prop({default: false}) \r\n loading: boolean;\r\n\r\n editedTimeOfDay: TimeOfDay = new TimeOfDay(0, 0);\r\n editedTime: string = \"\";\r\n focused: boolean = false;\r\n\r\n @Watch('timeOfDay.value')\r\n onTimeOfDayChanged(val, oldVal) {\r\n // console.log(\"TimeOfDayEditor\", \"onTimeOfDayChanged\", \"val:\", val, \"oldVal: \", oldVal);\r\n if (val.empty){\r\n this.editedTimeOfDay.empty = true;\r\n this.editedTime = \"\";\r\n return;\r\n }\r\n this.editedTimeOfDay.value = this.timeOfDay.value;\r\n this.editedTime = this.timeOfDay.value;\r\n }\r\n\r\n @Watch('editedTimeOfDay.value')\r\n onEditedTimeOfDayChanged(val, oldVal) {\r\n // console.log(\"TimeOfDayEditor\", \"onEditedTimeOfDayChanged\", \"val:\", val, \"oldVal: \", oldVal);\r\n if (val.empty){\r\n this.editedTime = \"\";\r\n return;\r\n }\r\n this.editedTime = this.editedTimeOfDay.value;\r\n }\r\n\r\n valid: boolean = true;\r\n textField: any;\r\n\r\n constructor(o: any) {\r\n super(o);\r\n this.editedTimeOfDay = new TimeOfDay(0, 0);\r\n }\r\n\r\n mounted() {\r\n this.editedTimeOfDay = new TimeOfDay(this.timeOfDay.hours, this.timeOfDay.minutes);\r\n this.editedTime = this.editedTimeOfDay.value;\r\n this.textField = this.$refs.textField;\r\n }\r\n\r\n onEnterKeyUp() {\r\n // console.log(\"TimeOfDayEditor\", \"onEnterKeyUp\");\r\n this.textField.$refs.input.blur();\r\n }\r\n\r\n onFocus(e: Event) {\r\n this.focused = true;\r\n (e.target as any).select();\r\n }\r\n\r\n onBlur() {\r\n // console.log(\"TimeOfDayEditor\", \"onBlur\");\r\n this.focused = false;\r\n this.submit();\r\n }\r\n\r\n onWheel(e: WheelEvent) {\r\n if (this.focused) {\r\n e.preventDefault();\r\n let deltaMinutes = 0;\r\n if (e.deltaY > 0 || e.deltaY < 0) {\r\n deltaMinutes = e.deltaY < 0 ? 10 : -10;\r\n // Create a temporary timeofday to perform the update with\r\n const updatedTimeOfDay = new TimeOfDay(0, 0);\r\n updatedTimeOfDay.value = this.editedTime;\r\n // Change the time\r\n updatedTimeOfDay.addMinutes(deltaMinutes);\r\n // Copy to view and viewmodel\r\n this.editedTime = updatedTimeOfDay.value;\r\n if (this.editedTimeOfDay.empty){\r\n this.editedTimeOfDay.empty = false;\r\n }\r\n this.editedTimeOfDay.value = this.editedTime;\r\n } \r\n }\r\n }\r\n\r\n onClick(){\r\n // console.log(\"TimeOfDayEditor: \", \"onClick()\");\r\n }\r\n\r\n submit() {\r\n this.$emit(\"blur\");\r\n // console.log(\"TimeOfDayEditor:\", \"submit\")\r\n if (this.editedTime === \"\"){\r\n if (this.timeOfDay.empty){\r\n return;\r\n }\r\n this.editedTimeOfDay.empty = true;\r\n this.timeOfDay.empty = true;\r\n } else {\r\n if (this.editedTimeOfDay.empty){\r\n this.editedTimeOfDay.empty = false;\r\n }\r\n if (this.timeOfDay.empty){\r\n this.timeOfDay.empty = false;\r\n }\r\n if (this.timeOfDay.value === this.editedTime) {\r\n // console.log(\"TimeOfDayEditor:\", \"time has not changed, no-op!\")\r\n return;\r\n }\r\n this.editedTimeOfDay.value = this.editedTime;\r\n this.timeOfDay.value = this.editedTime;\r\n }\r\n this.$emit(\"change\");\r\n }\r\n\r\n}\r\n\r\nexport default TimeOfDayEditor;\r\n","var render, staticRenderFns\nimport script from \"./TimeOfDayEditor.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimeOfDayEditor.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","export enum ScheduleItemDirectionEnum {\r\n Start = 0,\r\n End = 1,\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimeOfDayEditor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimeOfDayEditor.vue?vue&type=script&lang=ts&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Watch, Vue } from \"vue-property-decorator\";\r\n\r\nimport './TimetableView.scss'\r\nimport DateTimePicker from \"@/components/DatetimePicker.vue\";\r\nimport Passenger from \"@/components/Passenger/models/Passenger\";\r\nimport PassengerDestination from \"@/components/Passenger/models/PassengerDestination\";\r\nimport Destination from \"@/components/Passenger/models/Destination\";\r\nimport WeekDay from \"../models/WeekDay\";\r\nimport Ride, { RideType } from \"../models/Ride\";\r\nimport Timetable from \"../models/Timetable\";\r\nimport { Guid } from \"guid-typescript\";\r\nimport vuetifyToast from 'vuetify-toast'\r\nimport PassengerList from \"@/components/Passenger/components/PassengerList.vue\";\r\nimport Helpers from '../../../util/Helpers'\r\nimport TimeOfDayEditor from '../components/TimeOfDayEditor.vue';\r\nimport moment from 'moment';\r\nimport { TimeOfDay } from '@/components/Timetable/models/TimeOfDay';\r\nimport { TimetableEditor } from '@/components/Timetable/components/TimetableEditor.vue';\r\nimport { PassengerDialog } from '@/components/Passenger/components/PassengerDialog.vue';\r\nimport GroupPicker from \"@/components/Passenger/components/GroupPicker.vue\"\r\nimport { Group } from '@/components/Passenger/models/Group';\r\nimport Routes from '@/Routes';\r\nimport { RolePermission } from '@/models/Role';\r\nimport TimetablePassenger from '@/components/Timetable/models/TimetablePassenger';\r\nimport TimetableState, { TimetableStates } from '@/components/Timetable/models/TimetableStates';\r\nimport TransportationPermission from '@/components/Passenger/models/TransportationPermission';\r\nimport restService from '@/services/restService';\r\nimport { ScheduleItemDirectionEnum } from '@/components/Schedule/enums';\r\nimport { IScheduleItem } from '@/typings/timit';\r\n\r\n@Component({\r\n // template: require(\"./TimetableView.vue.html\"),\r\n components: {\r\n PassengerList,\r\n DateTimePicker,\r\n TimeOfDayEditor,\r\n GroupPicker\r\n }\r\n })\r\nexport class TimetableView extends Vue {\r\n\r\n search: string = \"\";\r\n groupNamesToFilterIn: string[] = [];\r\n splitDatePickerVisible = false;\r\n splitDate = null;\r\n templateStartsTimeOfDay: TimeOfDay = new TimeOfDay(9, 0);\r\n templateEndsTimeOfDay: TimeOfDay = new TimeOfDay(14, 0);\r\n isMounted: boolean = false;\r\n datatable: any = null;\r\n updateDatatableRefInterval: any = null;\r\n searchDebounceTimeout: any = null;\r\n isSplitting: boolean = false;\r\n editedRide: Ride = new Ride({ timeOfDay: new TimeOfDay(9, 0)});\r\n showTimeOfDayEditor: boolean = false;\r\n focusTimeOfDayTimeout: number = 0;\r\n orderInProgress: boolean = false;\r\n cancelOrderInProgress: boolean = false;\r\n\r\n pagination: any = {\r\n sortBy: 'name',\r\n rowsPerPage: -1,\r\n }\r\n selected: any[] = [];\r\n\r\n get isLoading(): boolean {\r\n return this.$store.state.timetable.pending.timetables || \r\n this.$store.state.ride.pending.getRides\r\n }\r\n\r\n get passengersLoading(): boolean {\r\n return this.$store.state.passenger.pending.timetablePassengers;\r\n }\r\n\r\n get helpers() {\r\n return Helpers;\r\n }\r\n\r\n get filteredPassengers(): Passenger[]{\r\n return this.datatable \r\n ? this.datatable.filteredItems.map(i => i.passenger) as Passenger[]\r\n : [];\r\n }\r\n\r\n get selectedFilteredPassengers(): Passenger[]{\r\n return this.filteredPassengers.filter((p: Passenger) => p.selected);\r\n }\r\n\r\n get allFilteredPassengersSelected(): boolean {\r\n return this.filteredPassengers.every((p: Passenger) => p.selected); \r\n }\r\n\r\n set allFilteredPassengersSelected(value){\r\n this.onToggleAll(value);\r\n }\r\n\r\n get routeTimetableId(): Guid {\r\n return this.$store.state.route.params.timetableId;\r\n }\r\n\r\n get timetable(): Timetable {\r\n return this.storeTimetable; \r\n }\r\n\r\n get destination(): Destination {\r\n return this.destinations.find(d => d.id === this.timetable.destinationId);\r\n }\r\n\r\n get storeTimetable(): Timetable {\r\n return this.$store.state.timetable.timetables.find(t => \r\n t.id === this.routeTimetableId\r\n );\r\n }\r\n\r\n get canDeletePassengers() {\r\n // Can delete passengers from timetable only if timetables state is new\r\n return this.timetable.state === TimetableStates.New.id;\r\n }\r\n\r\n get timetableGroups(): any[] {\r\n const groups = [];\r\n \r\n this.storeTimetablePassengers.forEach((p: Passenger) => {\r\n if (p.groups) {\r\n p.groups.split(\",\").forEach(g => {\r\n groups.push({name: g.trim()});\r\n });\r\n }\r\n })\r\n return groups;\r\n }\r\n\r\n get weekDays(): WeekDay[] {\r\n return WeekDay.WeekDays(\r\n this.$store.state.user.weekStartsOnSunday, \r\n this.timetable.startDate, \r\n this.timetable.endDate\r\n );\r\n }\r\n\r\n get visibleWeekDays(): WeekDay[] {\r\n const visibleWeekDays = this.weekDays.filter(wd => (!wd.weekend || this.$store.state.user.showWeekends));\r\n return visibleWeekDays;\r\n }\r\n\r\n get passengerWeekdayRides(){\r\n const passengerWeekdayRides = this.filteredTimetablePassengers.map(passenger => { \r\n const r1 = {\r\n selected: false,\r\n passenger,\r\n passengerName: passenger.name,\r\n passengerGroups: passenger.groups,\r\n weekDays: this.visibleWeekDays.map(wd => {\r\n // Ride.sortByTime() has been disabled, it's unneeded and affects performance\r\n const rides = this.timetableRides.filter(\r\n r => r.passengerId === passenger.id && r.weekDayId === wd.id\r\n );\r\n const arrivals = rides.filter(r => r.fromHome);\r\n const departures = rides.filter(r => r.toHome);\r\n const r2 = { \r\n weekDay: wd, \r\n arrival: arrivals.length > 0 ? arrivals[0] : undefined,\r\n departure: departures.length > 0 ? departures[0] : undefined\r\n }\r\n return r2;\r\n }\r\n )\r\n }\r\n return r1;\r\n }\r\n )\r\n return passengerWeekdayRides;\r\n }\r\n\r\n get visibleHeaders(): any[] {\r\n return [\r\n { \r\n text: this.$i18n.translate('passenger.prop.name.label', 'Name'), \r\n align: 'left', \r\n value: 'passengerName' \r\n },\r\n { \r\n text: this.$i18n.translate('passenger.prop.tags.label', 'Tags'), \r\n align: 'left', \r\n value: 'passengerGroups' \r\n },\r\n ...this.visibleWeekDays.map(\r\n wd => (\r\n { \r\n text: this.$i18n.translate('weekday.' + wd.name.toLowerCase(), wd.name ),\r\n weekDayId: wd.id,\r\n weekend: wd.weekend,\r\n sortable: false,\r\n enabled: wd.enabled\r\n }\r\n )\r\n )\r\n ];\r\n }\r\n\r\n get selectedWeekDay() {\r\n const val = this.weekDays.find(wd => wd.id === parseInt(this.$store.state.route.params.weekDayId, 10));\r\n return val;\r\n }\r\n\r\n selectPassengerWeekDay(passenger: Passenger, weekDay: WeekDay) {\r\n this.$router.push({\r\n name: weekDay ? 'TimetablePassengerWeekday' : 'TimetablePassenger', \r\n params: { \r\n timetableId: this.timetable.id.toString(), \r\n passengerId: passenger.id.toString(), \r\n weekDayId: weekDay ? weekDay.id.toString() : null,\r\n }\r\n });\r\n }\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n @Watch(\"routeDestinationId\")\r\n onRouteDestinationIdChanged(val, oldVal) {\r\n this.$router.push({ name: Routes.timetableListRoute.name });\r\n }\r\n\r\n get me() {\r\n return this.$store.state.user.me;\r\n }\r\n\r\n get userCanEditTimetables(): boolean {\r\n return this.me \r\n ? this.me.hasPermissions(this.routeDestinationId, [RolePermission.UpdateTimetables])\r\n : false;\r\n }\r\n \r\n get storeRides(): Ride[]{\r\n return this.$store.state.ride.rides;\r\n }\r\n\r\n get timetableRides(): Ride[] {\r\n const timetableRides = this.storeRides.filter(r => r.timetableId === this.timetable.id);\r\n return timetableRides;\r\n }\r\n\r\n getTimetableRidesForPassenger(passenger: Passenger): Ride[] {\r\n return this.timetableRides.filter((ride: Ride) => {\r\n return ride.passengerId === passenger.id;\r\n });\r\n }\r\n\r\n getRidesForPassengerDay(passenger: Passenger, weekDayId: number): Ride[] {\r\n return this.timetableRides.filter((ride: Ride) => {\r\n return ride.passengerId === passenger.id \r\n && ride.weekDayId === weekDayId;\r\n });\r\n }\r\n\r\n async onDeletePassengersClick() {\r\n if (confirm(this.$t('timetable.passengers.delete-selected-passengers.question'))) {\r\n const passengers = [...this.selectedFilteredPassengers];\r\n const passengerIds = passengers.map(p => p.id)\r\n this.timetable.removePassengerIds(passengerIds);\r\n await this.saveTimetable(this.timetable);\r\n passengers.forEach(async (p) => {\r\n const rides = this.getTimetableRidesForPassenger(p); \r\n rides.forEach(r => r.deleting = true);\r\n await this.$store.dispatch('ride/deleteRides', { data: rides.map((r: Ride) => r.id) });\r\n })\r\n }\r\n }\r\n\r\n async onDestinationIdChanged(e) {\r\n this.timetable.destinationId = e;\r\n await this.saveTimetable(this.timetable);\r\n }\r\n\r\n async saveTimetable(timetable: Timetable) {\r\n await this.$store.dispatch('timetable/updateTimetable', \r\n { params: { id: timetable.id}, data: Timetable.toApi(timetable) });\r\n }\r\n\r\n get minAllowedSplitDate(): Date {\r\n const startMoment = moment(this.timetable.startDateString).add(0, \"days\");\r\n return startMoment.toDate();\r\n }\r\n\r\n get minAllowedSplitDateStamp(): number {\r\n return this.minAllowedSplitDate.getTime();\r\n }\r\n\r\n get maxAllowedSplitDate(): Date {\r\n const endMoment = moment(this.timetable.endDateString); // .subtract(1, \"days\");\r\n return endMoment.toDate();\r\n }\r\n\r\n get maxAllowedSplitDateStamp(): number {\r\n return this.maxAllowedSplitDate.getTime();\r\n }\r\n\r\n get tomorrowDateStamp(): number {\r\n return moment().add(1, \"days\").toDate().getTime();\r\n }\r\n\r\n allowedSplitDates(val) {\r\n const valDate = new Date(val);\r\n const valDateStamp = valDate.getTime();\r\n const day = valDate.getDay();\r\n const isWeekend = (day === 6) || (day === 0);\r\n return (!isWeekend || this.$store.state.user.showWeekends) \r\n && valDateStamp > this.minAllowedSplitDateStamp \r\n && valDateStamp < this.maxAllowedSplitDateStamp \r\n && valDateStamp > this.tomorrowDateStamp;\r\n }\r\n\r\n get timetablePassengerIds(): number[] {\r\n if (!this.timetable){\r\n return [];\r\n }\r\n if (!this.timetable.timetablePassengers || this.timetable.timetablePassengers.length === 0){\r\n if (this.timetableRides.length > 0){\r\n const passengerIds: number[] = this.timetableRides.map(ride => ride.passengerId);\r\n const uniquePassengerIds: number[] = [...new Set(passengerIds)];\r\n this.timetable.timetablePassengers = uniquePassengerIds.map(\r\n pid => new TimetablePassenger(this.timetable.id, pid)\r\n )\r\n }\r\n }\r\n return this.timetable.timetablePassengers\r\n .map(tp => tp.passengerId);\r\n }\r\n @Watch(\"timetablePassengerIds\", {immediate: true})\r\n async timetablePassengerIdsChanged(val, oldVal){\r\n await this.getTimetablePassengersFromApi();\r\n }\r\n\r\n async getTimetablePassengersFromApi(){\r\n await this.$store.dispatch(\r\n 'passenger/getTimetablePassengers',\r\n { \r\n data: this.timetablePassengerIds\r\n }\r\n );\r\n }\r\n\r\n get storeTimetablePassengers(): Passenger[] {\r\n return this.$store.state.passenger.timetablePassengers;\r\n }\r\n\r\n async onPickPassengers(pickedPassengers: Passenger[]){\r\n this.timetable.addPassengerIds(pickedPassengers.map((p: Passenger) => p.id));\r\n this.saveTimetable(this.timetable);\r\n this.showPassengerList = false;\r\n }\r\n\r\n get queryCreated(): boolean {\r\n return this.$route.query.created === \"true\";\r\n }\r\n\r\n get queryAddPeople(): boolean {\r\n return this.$route.query.addpeople === \"true\";\r\n }\r\n\r\n get showPassengerList(): boolean {\r\n return this.queryAddPeople;\r\n }\r\n\r\n set showPassengerList(value: boolean){\r\n const query = value ? { addpeople: \"true\" } : {};\r\n this.$router.replace({ query })\r\n }\r\n\r\n onCancelPick(pickedPassengers: Passenger[]){\r\n this.showPassengerList = false;\r\n }\r\n\r\n get filteredTimetablePassengers(): Passenger[] {\r\n const passengers = this.storeTimetablePassengers.filter((p: Passenger) => {\r\n if (!this.groupNamesToFilterIn || this.groupNamesToFilterIn.length === 0) {\r\n return true;\r\n } \r\n if (p.groups) {\r\n const passengerGroups = p.groups.split(\",\").map(g => g.trim());\r\n return passengerGroups.some(g => this.groupNamesToFilterIn.includes(g));\r\n }\r\n return false;\r\n });\r\n return passengers;\r\n }\r\n set filteredTimetablePassengers(value) { \r\n console.log(\"NO-OP: passengers set:\", value);\r\n }\r\n get transportPermissions() {\r\n const permissions: TransportationPermission[] = this.$store.state.destination.transportPermissions;\r\n return permissions;\r\n }\r\n get destinations(): Destination[] {\r\n return this.$store.state.destination.destinations;\r\n }\r\n get RideType() {\r\n return RideType;\r\n }\r\n get timetableIsLocked(){\r\n return this.timetable.isLocked;\r\n }\r\n get timetableStarted(){\r\n const momentNow = moment();\r\n const momentStart = moment(this.timetable.startDateString);\r\n return momentNow.isSameOrAfter(momentStart);\r\n }\r\n get timetableDaysUntilStart(){\r\n const momentNow = moment();\r\n const momentStart = moment(this.timetable.startDateString);\r\n return momentStart.diff(momentNow, 'days');\r\n }\r\n get timetableIsAccepted(){\r\n return this.timetable.isAccepted;\r\n }\r\n get timetableIsOrdered(){\r\n return this.timetable.isOrdered;\r\n }\r\n get timetableIsOrderable(){\r\n return this.timetable.isOrderable && this.timetableHasRides;\r\n }\r\n get timetableHasRides(){\r\n return this.timetableRides.length > 0;\r\n }\r\n get timetableOrderIsCancelable(){\r\n return this.timetable.isOrderIsCancelable;\r\n }\r\n get timetableState(): TimetableState {\r\n return TimetableStates.States.find(s => s.id === this.timetable.state);\r\n }\r\n get timetableStateNameLowerCase(): string {\r\n return this.timetableState ? this.timetableState.nameLowerCase : \"\";\r\n }\r\n get timetableStateName(): string {\r\n return this.timetableState ? this.timetableState.name : \"\";\r\n }\r\n get splitAllowed(){\r\n // Splitting (copying) is currently disabled completely\r\n return false;\r\n // const momentNow = moment();\r\n // const momentEnd = moment(this.timetable.endDateString);\r\n // momentEnd.subtract(this.$store.state.app.timetable.splitLimitDays.allowDaysBeforeEnd, \"days\");\r\n // return momentNow.isBefore(momentEnd);\r\n }\r\n get splitButtonTitle(){\r\n if (this.splitAllowed){\r\n return this.$i18n.translate(\r\n 'timetable.split.button_title', \r\n 'Split the timetable to two separate parts'\r\n );\r\n } else {\r\n return this.splitDisabledReason;\r\n }\r\n }\r\n get splitDisabledReason(){\r\n return this.$i18n.translate(\r\n 'timetable.split.disabled.button_title',\r\n 'You can only split if at least {days} day(s) remain until the end of the timetable',\r\n {\r\n days: this.$store.state.app.timetable.splitLimitDays.allowDaysBeforeEnd \r\n }\r\n )\r\n }\r\n\r\n get passengersRequiredPermission() {\r\n const passengersPermisionsRequired = this.filteredTimetablePassengers.filter(pas => pas.transportationPermissionRequired);\r\n return passengersPermisionsRequired; \r\n }\r\n\r\n get passengersWhitoutPermissions() {\r\n const startDate = moment(this.timetable.startDateString).toDate();\r\n const endDate = moment(this.timetable.endDateString).toDate();\r\n startDate.setHours(0, 0, 0, 0);\r\n endDate.setHours(0, 0, 0, 0);\r\n\r\n const permissionBetweenDates = this.transportPermissions.filter(tp => {\r\n const s = new Date(tp.startDate);\r\n const e = new Date(tp.endDate);\r\n s.setHours(0, 0, 0, 0)\r\n e.setHours(0, 0, 0, 0)\r\n if (startDate.getTime() >= s.getTime() && endDate.getTime() <= e.getTime()) {\r\n return true;\r\n }\r\n return false;\r\n })\r\n \r\n const passengersWitOutPermission = this.passengersRequiredPermission\r\n .filter(p => !permissionBetweenDates.some(tp => tp.passengerId === p.id));\r\n return passengersWitOutPermission;\r\n }\r\n\r\n onTimetableEditClick(){\r\n this.$root.$emit(TimetableEditor.EVENT_TIMETABLE_EDITOR_OPEN, this.timetable);\r\n }\r\n \r\n onTimetableSplitClick() {\r\n const endMoment = moment(this.timetable.endDateString);\r\n const nowMoment = moment();\r\n const nowToEndDuration = moment.duration(endMoment.diff(nowMoment));\r\n const nowToEndDays = nowToEndDuration.asDays();\r\n this.splitDate = nowMoment.add(Math.ceil(nowToEndDays / 2), \"days\").format(\"YYYY-MM-DD\");\r\n this.splitDatePickerVisible = true;\r\n }\r\n async splitTimetable(splitDate){\r\n\r\n this.isSplitting = true;\r\n // Hide the dialog\r\n this.splitDatePickerVisible = false;\r\n // TODO: Make all the add/update operations in a single transaction to enable rollback\r\n const newTimetable = this.timetable.split(splitDate);\r\n \r\n // Save old\r\n await this.$store.dispatch('timetable/updateTimetable', { \r\n params: { \r\n id: this.timetable.id\r\n }, \r\n data: Timetable.toApi(this.timetable) \r\n });\r\n // Save new\r\n const response = await this.$store.dispatch('timetable/createTimetable', { data: newTimetable });\r\n const newTimetableFromStoreId = response.data.id;\r\n\r\n // Copy rides\r\n const newRides = this.timetableRides.map(r => { \r\n const ride = Ride.CopyFrom(r); \r\n ride.timetableId = newTimetableFromStoreId; \r\n return ride; \r\n });\r\n\r\n // Change route\r\n this.$router.push({\r\n name: Routes.timetableRoute.name, \r\n params: { \r\n timetableId: newTimetableFromStoreId.toString()\r\n }\r\n });\r\n\r\n this.isSplitting = false;\r\n\r\n // Save the copied ride\r\n await this.$store.dispatch(\r\n 'ride/createRides', \r\n {\r\n data: newRides.map((r: Ride) => Ride.toApiRide(r))\r\n }\r\n );\r\n \r\n }\r\n onAddPassengersClick() {\r\n this.showPassengerList = true;\r\n }\r\n\r\n onGroupFilterGroupPickerChange(selectedGroups: Group[]){\r\n this.groupNamesToFilterIn = selectedGroups.map(g => g.name);\r\n }\r\n\r\n onPassengerClick(event: Event, passenger: Passenger) {\r\n this.$root.$emit(\r\n PassengerDialog.EVENT_PASSENGER_DIALOG_SHOW, \r\n passenger, \r\n { \r\n timetable: this.timetable, \r\n rides: this.getTimetableRidesForPassenger(passenger) \r\n }\r\n )\r\n }\r\n\r\n async onRideCellClick(e: Event, passenger: Passenger, weekDay: WeekDay, ride: Ride, rideType: RideType) {\r\n if (passenger.inactive){\r\n return;\r\n }\r\n\r\n if (!this.userCanEditTimetables){\r\n console.warn(\"[Timit] Permissions: User does not have permission to edit timetables\");\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n \"permission.missing.editTimetables\", \r\n \"Your user account does not have a permission to edit timetables.\"\r\n )\r\n );\r\n return;\r\n }\r\n if (this.timetableIsLocked){\r\n console.warn(\"[Timit] Timetable is locked, cannot edit or add rides.\");\r\n vuetifyToast.error(this.$i18n.translate(\"timetable.locked.error\", \"Timetable is locked\"));\r\n return;\r\n }\r\n\r\n const templateTimeOfDay = rideType === RideType.Arrival \r\n ? this.templateStartsTimeOfDay \r\n : this.templateEndsTimeOfDay;\r\n\r\n let editedRide: Ride = ride;\r\n \r\n if (!editedRide){\r\n // User clicked on an empty cell\r\n // Create a new ride\r\n editedRide = new Ride(\r\n {\r\n timeOfDay: new TimeOfDay(templateTimeOfDay.hours, templateTimeOfDay.minutes),\r\n passengerId: passenger.id,\r\n timetableId: this.timetable.id,\r\n fromHome: rideType === RideType.Arrival,\r\n toHome: rideType === RideType.Departure,\r\n fromId: rideType === RideType.Arrival ? 0 : this.destination.id,\r\n toId: rideType === RideType.Arrival ? this.destination.id : 0,\r\n weekDayId: weekDay.id,\r\n rideType\r\n }\r\n )\r\n await this.$store.dispatch('ride/createRides', {data: [Ride.toApiRide(editedRide)]});\r\n }\r\n\r\n // Assign the ride to the editor \r\n this.editedRide = editedRide;\r\n\r\n // Remove the editor from the current parent\r\n const editorElement = (this.$refs.timeOfDayEditorRef as any).$el;\r\n const originalParent = editorElement.parentNode;\r\n originalParent.removeChild(editorElement);\r\n\r\n // Move the editor to the target cell\r\n const target = (e.target as Element).closest('.time-of-day-container')\r\n target.appendChild(editorElement);\r\n \r\n // Hide the display\r\n const timeOfDayDisplay: Element = target.querySelector('.time-of-day-display');\r\n \r\n // Show the editor\r\n // Focus and select the editor field\r\n if (this.focusTimeOfDayTimeout){\r\n clearTimeout(this.focusTimeOfDayTimeout);\r\n }\r\n this.focusTimeOfDayTimeout = window.setTimeout(() => {\r\n document.querySelectorAll('.time-of-day-editor.editor')\r\n .forEach((elem: Element) => elem.classList.remove('hidden'));\r\n\r\n timeOfDayDisplay.classList.add('hidden');\r\n const input = target.querySelector('input');\r\n input.focus();\r\n input.select();\r\n }, 200);\r\n }\r\n\r\n onTimeOfDayEditorBlur(){\r\n // Hide timeOfDayEditor\r\n document.querySelectorAll('.time-of-day-editor.editor')\r\n .forEach((elem: Element) => elem.classList.add('hidden'));\r\n\r\n // Show timeOfDayDisplay(s)\r\n document.querySelectorAll('.time-of-day-display.hidden')\r\n .forEach((elem: Element) => elem.classList.remove('hidden'));\r\n }\r\n\r\n async onRideUpdated(ride: Ride) {\r\n if (ride.timeOfDay.empty){\r\n ride.deleting = true;\r\n this.$store.dispatch('ride/deleteRides', { data: [ride.id] });\r\n return;\r\n }\r\n\r\n if (ride.isValid) {\r\n await this.$store.dispatch('ride/updateRide', { params: { id: ride.id}, data: Ride.toApiRide(ride) });\r\n } \r\n }\r\n\r\n onToggleAll(value) {\r\n \r\n this.filteredPassengers.filter(p => !p.inactive).forEach((p: Passenger) => {\r\n p.selected = value;\r\n });\r\n }\r\n\r\n onChangeSort(column) {\r\n if (this.pagination.sortBy === column) {\r\n this.pagination.descending = !this.pagination.descending;\r\n } else {\r\n this.pagination.sortBy = column;\r\n this.pagination.descending = false;\r\n }\r\n }\r\n\r\n onSearchInput(val){\r\n if (this.searchDebounceTimeout){\r\n clearTimeout(this.searchDebounceTimeout);\r\n }\r\n this.searchDebounceTimeout = setTimeout(\r\n () => {\r\n this.search = val;\r\n }, \r\n 500\r\n )\r\n }\r\n\r\n async onCancelOrderTimetableClick() {\r\n // TODO: Send the order cancellation, don't just update the state, let the api update the state\r\n // TODO: Do we need a state OrderCancelled?\r\n this.cancelOrderInProgress = true;\r\n try {\r\n const apiTimetable = Timetable.toApi(this.timetable);\r\n apiTimetable.state = TimetableStates.New.id;\r\n await this.saveTimetable(apiTimetable);\r\n vuetifyToast.success(this.$i18n.translate(\"timetable.order.canceled.notification\", \"Order canceled.\"));\r\n } catch (err) {\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n \"timetable.order.canceled.error\", \r\n \"Error when canceling order: {errorMessage}\", \r\n {errorMessage: (err as any).message}\r\n )\r\n );\r\n }\r\n this.cancelOrderInProgress = false;\r\n }\r\n\r\n async onOrderTimetableClick() {\r\n if (this.filteredPassengers.some(p => p.inactive)){\r\n vuetifyToast.error(this.$i18n.translate(\r\n \"timetable.order.error.contains_inactive_passengers\", \r\n \"Please remove inactive passengers from the list before ordering.\")\r\n );\r\n return;\r\n }\r\n this.orderInProgress = true;\r\n try {\r\n const apiTimetable = Timetable.toApi(this.timetable);\r\n apiTimetable.state = TimetableStates.Ordered.id;\r\n await this.saveTimetable(apiTimetable);\r\n vuetifyToast.success(this.$i18n.translate(\"timetable.order.sent.notification\", \"Order sent.\"));\r\n } catch (err) {\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n \"timetable.order.sent.error\", \r\n \"Error when sending order: {errorMessage}\", \r\n {errorMessage: (err as any).message}\r\n )\r\n );\r\n }\r\n\r\n this.orderInProgress = false;\r\n }\r\n\r\n async onFetchSchedulesClick() {\r\n const ridesToCreateOrUpdate: Ride[] = [];\r\n\r\n const availableWeekdays = this.weekDays.filter(wd => wd.enabled).map(wd => wd.id);\r\n\r\n const passengers = this.selectedFilteredPassengers.filter(p => !p.inactive);\r\n for (const passenger of passengers) {\r\n const schedules = await restService.schedules.getPassengerSchedules(passenger.id);\r\n const currentSchedule = schedules\r\n .find(s => new Date(s.startDate) <= this.timetable.startDate && \r\n new Date(s.endDate) > this.timetable.startDate);\r\n \r\n if (!currentSchedule) {\r\n continue;\r\n }\r\n\r\n const passengerRides = this.timetableRides.filter(tr => tr.passengerId === passenger.id);\r\n\r\n const scheduleItemDirectionMatchesRideType = (itemDirection: ScheduleItemDirectionEnum, rideType: RideType) => {\r\n if (itemDirection === ScheduleItemDirectionEnum.Start && rideType === RideType.Arrival) {\r\n return true;\r\n }\r\n if (itemDirection === ScheduleItemDirectionEnum.End && rideType === RideType.Departure) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n const usableScheduleItems = currentSchedule.scheduleItems.filter(si => availableWeekdays.includes(si.dayOfWeek));\r\n\r\n usableScheduleItems.forEach(si => {\r\n const scheduleItemRide = passengerRides\r\n .find(r => r.weekDayId === si.dayOfWeek && scheduleItemDirectionMatchesRideType(si.direction, r.rideType));\r\n \r\n if (scheduleItemRide) {\r\n scheduleItemRide.timeOfDayUpdate = TimeOfDay.fromMinutesFromMidnight(si.time);\r\n scheduleItemRide.updating = true;\r\n ridesToCreateOrUpdate.push(scheduleItemRide);\r\n } else {\r\n ridesToCreateOrUpdate.push(this.createRideFromScheduleItem(si, passenger.id));\r\n }\r\n });\r\n }\r\n if (ridesToCreateOrUpdate.length) {\r\n const apiRides = ridesToCreateOrUpdate.map((r: Ride) => Ride.toApiRide(r));\r\n this.$store.dispatch('ride/createOrUpdateRides', { data: apiRides });\r\n }\r\n }\r\n\r\n createRideFromScheduleItem(scheduleItem: IScheduleItem, passengerId: number) {\r\n const getRideType = (direction: ScheduleItemDirectionEnum) => {\r\n switch (direction) {\r\n case ScheduleItemDirectionEnum.Start:\r\n return RideType.Arrival;\r\n case ScheduleItemDirectionEnum.End:\r\n return RideType.Departure;\r\n default:\r\n return RideType.Unknown;\r\n }\r\n }\r\n\r\n return new Ride({\r\n timeOfDay: TimeOfDay.fromMinutesFromMidnight(scheduleItem.time),\r\n passengerId,\r\n timetableId: this.timetable.id,\r\n fromHome: scheduleItem.direction === ScheduleItemDirectionEnum.Start,\r\n toHome: scheduleItem.direction === ScheduleItemDirectionEnum.End,\r\n fromId: scheduleItem.direction === ScheduleItemDirectionEnum.End ? this.timetable.destinationId : 0,\r\n toId: scheduleItem.direction === ScheduleItemDirectionEnum.Start ? this.timetable.destinationId : 0,\r\n weekDayId: scheduleItem.dayOfWeek,\r\n rideType: getRideType(scheduleItem.direction),\r\n creatingId: Guid.create(),\r\n creating: true,\r\n });\r\n }\r\n \r\n async updateStartsOrEnds(\r\n weekDayId: number, \r\n rideType: RideType, \r\n fromHome: boolean, \r\n toHome: boolean, \r\n fromId: number, \r\n toId: number, \r\n templateTimeOfDay: TimeOfDay\r\n ) {\r\n const ridesToCreateOrUpdate: Ride[] = [];\r\n let ridesToDelete: Ride[] = [];\r\n \r\n this.selectedFilteredPassengers.filter(p => !p.inactive).forEach(p => {\r\n\r\n const currentRidesForPassengerWeekday: Ride[] = this.getRidesForPassengerDay(p, weekDayId)\r\n .filter(r => r.rideType === rideType && r.fromHome === fromHome && r.toHome === toHome);\r\n\r\n if (templateTimeOfDay.empty){\r\n // The time template is empty, meaning we should delete the rides for the day for the passenger\r\n ridesToDelete = ridesToDelete.concat(currentRidesForPassengerWeekday);\r\n return;\r\n }\r\n\r\n // Clean up, remove all other rides except for the first one for the day\r\n if (currentRidesForPassengerWeekday.length > 1){\r\n ridesToDelete = ridesToDelete.concat(\r\n currentRidesForPassengerWeekday.slice(1, currentRidesForPassengerWeekday.length)\r\n );\r\n }\r\n\r\n const firstRideForPassengerWeekDay: Ride = currentRidesForPassengerWeekday \r\n ? currentRidesForPassengerWeekday[0] \r\n : undefined;\r\n\r\n if (firstRideForPassengerWeekDay){\r\n // Found an existing ride for the same day, will update\r\n if (firstRideForPassengerWeekDay.timeOfDay.matches(templateTimeOfDay)){\r\n // Time of day is the same, no need to update this day for this passenger\r\n return;\r\n }\r\n // Set an updated time of day for an existing ride \r\n // (timeOfDayUpdate will be visible in UI until API returns a real updated object with timeOfDay)\r\n firstRideForPassengerWeekDay.timeOfDayUpdate = new TimeOfDay(\r\n templateTimeOfDay.hours, \r\n templateTimeOfDay.minutes\r\n )\r\n firstRideForPassengerWeekDay.updating = true;\r\n ridesToCreateOrUpdate.push(firstRideForPassengerWeekDay);\r\n return;\r\n }\r\n\r\n // No existing ride for the weekday for the passenger was found, create one\r\n ridesToCreateOrUpdate.push(\r\n new Ride(\r\n {\r\n timeOfDay: new TimeOfDay(templateTimeOfDay.hours, templateTimeOfDay.minutes),\r\n passengerId: p.id,\r\n timetableId: this.timetable.id,\r\n fromHome,\r\n toHome,\r\n fromId,\r\n toId,\r\n weekDayId,\r\n rideType,\r\n creatingId: Guid.create(), \r\n creating: true\r\n }\r\n )\r\n );\r\n }\r\n );\r\n\r\n if (ridesToDelete.length){\r\n ridesToDelete.forEach(r => r.deleting = true);\r\n this.$store.dispatch('ride/deleteRides', { data: ridesToDelete.map((r: Ride) => r.id) }); \r\n }\r\n if (ridesToCreateOrUpdate.length){\r\n this.$store.dispatch('ride/createOrUpdateRides', { data: ridesToCreateOrUpdate.map((r: Ride) => Ride.toApiRide(r)) });\r\n }\r\n }\r\n\r\n async onStartsClicked(weekDayId: number) {\r\n await this.updateStartsOrEnds(weekDayId, RideType.Arrival, true, false, \r\n 0, this.timetable.destinationId, this.templateStartsTimeOfDay)\r\n }\r\n\r\n async onEndsClicked(weekDayId: number) {\r\n await this.updateStartsOrEnds(weekDayId, RideType.Departure, false, true, \r\n this.timetable.destinationId, 0, this.templateEndsTimeOfDay)\r\n }\r\n\r\n updateDatatableRef(){\r\n this.datatable = (this.$refs.datatable as any); \r\n if (this.datatable){\r\n if (this.updateDatatableRefInterval){\r\n clearInterval(this.updateDatatableRefInterval);\r\n }\r\n if (this.queryCreated){\r\n this.allFilteredPassengersSelected = true;\r\n }\r\n this.isMounted = true;\r\n }\r\n }\r\n\r\n get isTransportationPermissionEnabled(): boolean {\r\n return this.me.hasPermissions(this.routeDestinationId, [RolePermission.ReadTransportationPermissions]) ||\r\n this.me.hasPermissions(this.routeDestinationId, [RolePermission.CreateTransportationPermissions]);\r\n } \r\n\r\n missingTripPermission(passId: number): boolean {\r\n if (this.passengersWhitoutPermissions.some(p => p.id === passId)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n mounted() {\r\n const startTime = localStorage.getItem('templateStartsTimeOfDay')?.toString();\r\n const endTime = localStorage.getItem('templateEndsTimeOfDay')?.toString();\r\n\r\n if (startTime) {\r\n this.templateStartsTimeOfDay.value = startTime;\r\n }\r\n if (endTime) {\r\n this.templateEndsTimeOfDay.value = endTime;\r\n }\r\n\r\n // Check if datatable has now mounted\r\n this.updateDatatableRefInterval = setInterval(this.updateDatatableRef, 600);\r\n // Temp fix to scrolling issue\r\n const appContainer = document.querySelector('.app-content-container')\r\n if (appContainer){\r\n appContainer.scrollTop = 0\r\n }\r\n }\r\n\r\n onBackToListClick(){\r\n this.$router.push({\r\n name: Routes.timetablesRoute.name\r\n })\r\n }\r\n\r\n beforeDestroy(){\r\n // TODO: Temporary workaround for selection sharing bug, handle this better\r\n this.storeTimetablePassengers\r\n .filter((p: Passenger) => !p.selected)\r\n .forEach((p: Passenger) => p.selected = true);\r\n\r\n // Clear intervals and timeouts\r\n if (this.updateDatatableRefInterval){\r\n clearInterval(this.updateDatatableRefInterval);\r\n }\r\n\r\n if (this.searchDebounceTimeout){\r\n clearTimeout(this.searchDebounceTimeout);\r\n }\r\n }\r\n\r\n templateStartsTimeOfDayChanged() {\r\n localStorage.setItem('templateStartsTimeOfDay', this.templateStartsTimeOfDay.stringValue);\r\n }\r\n\r\n templateEndsTimeOfDayChanged() {\r\n localStorage.setItem('templateEndsTimeOfDay', this.templateEndsTimeOfDay.stringValue);\r\n }\r\n \r\n}\r\n\r\nexport default TimetableView;\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimetableView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimetableView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TimetableView.vue?vue&type=template&id=f7407f26&\"\nimport script from \"./TimetableView.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimetableView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"booking-list\",style:({ opacity: _vm.mounting ? 0 : 1})},[_c('v-container',{staticClass:\"compressible\"},[_c('v-card',[_c('v-card-title',{staticClass:\"pt-0 pb-0\",staticStyle:{\"background-color\":\"#f0f0f0\"}},[_c('div',{staticClass:\"headline\"},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('booking.page_title', 'Bookings'))}})]),_c('v-spacer'),_c('v-divider',{staticClass:\"mx-3\",attrs:{\"vertical\":\"\"}}),_c('div',[_c('v-switch',{attrs:{\"input-value\":_vm.showOnlyMyBookings,\"color\":\"warning\",\"label\":_vm.$t('booking.show-only-mine.toggle.label', 'Show only mine')},on:{\"change\":function($event){_vm.showOnlyMyBookings = !_vm.showOnlyMyBookings}}})],1),_c('v-divider',{staticClass:\"mx-3\",attrs:{\"vertical\":\"\"}}),_c('div',[_c('v-switch',{attrs:{\"input-value\":_vm.showExpiredBookings,\"color\":\"warning\",\"label\":_vm.$t('booking.show-expired.toggle.label', 'Show expired')},on:{\"change\":function($event){_vm.showExpiredBookings = !_vm.showExpiredBookings}}})],1),_c('v-divider',{staticClass:\"mx-3\",attrs:{\"vertical\":\"\"}}),(_vm.userCanCreateBookings)?_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"accent\"},on:{\"click\":_vm.onCreateBookingClick}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('booking.create_new', 'Create new booking'))}})]):_vm._e()],1),_c('v-tabs',{staticClass:\"booking-state-tabs my-4\",attrs:{\"show-arrows\":\"\",\"grow\":\"\",\"hide-slider\":\"\"}},_vm._l((_vm.selectableBookingStates),function(state){return _c('v-tab',{key:state.id,class:['tab', state.nameLowerCase, _vm.bookingCountWithState(state.id) > 0 ? '' : 'empty'],attrs:{\"to\":state.nameLowerCase}},[_c('div',{staticStyle:{\"padding\":\"5px\"}},[_c('span',{staticClass:\"text\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.state.' + state.nameLowerCase + \".name.many\", state.name))+\" \")]),(_vm.bookingCountWithState(state.id) > 0)?_c('span',{class:['badge', state.nameLowerCase]},[_vm._v(\" \"+_vm._s(_vm.bookingCountWithState(state.id))+\" \")]):_vm._e()])])}),1),(!_vm.showBookingsAsList)?_c('v-data-table',{class:['booking-list-datatable', 'datatable', _vm.isLoading ? 'disabled' : ''],attrs:{\"headers\":_vm.headers,\"items\":_vm.filteredDestinationBookings,\"no-data-text\":_vm.isLoading \n ? _vm.$t('generic.loading', 'Loading...')\n : _vm.$t(\n 'booking.state.' + _vm.routeStateNameLowerCase + '.none_for_destination', \n 'No bookings found for {destinationAlias}.', \n { destinationAlias: _vm.destination.alias }\n ),\"pagination\":_vm.pagination,\"loading\":_vm.isLoading},on:{\"update:pagination\":function($event){_vm.pagination=$event}},scopedSlots:_vm._u([{key:\"headers\",fn:function(props){return [_c('tr',_vm._l((props.headers),function(header){return _c('th',{key:header.text,class:[\n 'column',\n header.sortable === false\n ? ''\n : 'sortable', \n 'text-xs-' + header.align,\n _vm.pagination.descending \n ? 'desc' \n : 'asc', \n header.value === _vm.pagination.sortBy \n ? 'active' \n : ''\n ],on:{\"click\":function($event){return _vm.onTableHeaderClick(header.value)}}},[(header.sortable !== false && header.align === 'right')?_c('v-icon',[_vm._v(\"arrow_upward\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.$t(header.i18n, header.text))+\" \"),(header.sortable !== false && header.align === 'left')?_c('v-icon',[_vm._v(\"arrow_upward\")]):_vm._e()],1)}),0)]}},{key:\"items\",fn:function(props){return [_c('BookingListItem',{attrs:{\"bookingId\":props.item.id,\"listView\":_vm.showBookingsAsList,\"headers\":_vm.headers}})]}}],null,false,2054687171)},[(_vm.filteredDestinationBookings.length === 0)?_c('v-container',{attrs:{\"fluid\":\"\",\"pa-5\":\"\",\"text-xs-center\":\"\"}},[(_vm.isLoading)?_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":\"primary\",\"text-xs-center\":\"\",\"mx-auto\":\"\"}}):_vm._e(),(!_vm.isLoading)?_c('div',[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('booking.no_bookings_for_destination', 'No bookings found for {destinationAlias}.', { destinationAlias: _vm.destination.alias }))}})]):_vm._e()],1):_vm._e()],1):_vm._e(),(_vm.showBookingsAsList)?_c('v-container',{staticClass:\"booking-list-container compressible\"},[(_vm.filteredDestinationBookings.length > 0)?_c('div',{staticClass:\"booking-list\"},_vm._l((_vm.sortedDestinationBookings),function(booking){return _c('BookingListItem',{key:booking.id,attrs:{\"bookingId\":booking.id}})}),1):_vm._e(),(_vm.filteredDestinationBookings.length === 0)?_c('v-container',{attrs:{\"fluid\":\"\",\"pa-5\":\"\",\"text-xs-center\":\"\"}},[(_vm.isLoading)?_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":\"primary\",\"text-xs-center\":\"\",\"mx-auto\":\"\"}}):_vm._e(),(!_vm.isLoading)?_c('div',[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('booking.no_bookings_for_destination', 'No bookings found for {destinationAlias}.', { destinationAlias: _vm.destination.alias }))}})]):_vm._e()],1):_vm._e()],1):_vm._e(),_c('v-layout',{attrs:{\"row\":\"\",\"flex\":\"\"}},[_c('v-spacer'),_c('v-flex',{attrs:{\"xs4\":\"\",\"sm4\":\"\"}},[(_vm.userCanCreateBookings)?_c('v-btn',{staticClass:\"mx-4 mb-4 right\",attrs:{\"dark\":\"\",\"color\":\"accent\"},on:{\"click\":_vm.onCreateBookingClick}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('booking.create_new', 'Create new booking'))}})]):_vm._e()],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{style:({ display: 'table-row', cursor: 'pointer' }),on:{\"click\":_vm.onBookingInfoClick}},[_vm._l((_vm.headers),function(header){return _c('td',{key:header.text,class:['text-xs-' + header.align]},[(!header.hasCustomTemplate)?[_vm._v(\" \"+_vm._s(_vm.booking[header.value])+\" \")]:_vm._e(),(header.value === 'shortId')?[_c('span',{staticClass:\"primary--text\"},[_vm._v(\"#\"+_vm._s(_vm.booking.shortId))])]:_vm._e(),(header.value === 'bookingDate')?[_c('div',{staticClass:\"capitalize\"},[_vm._v(_vm._s(_vm.$dateHelper.formatDateTimeWithShortWeekDay(_vm.booking[header.value])))])]:_vm._e(),(header.value === 'summary')?[(_vm.bookingPassengersCount === 0)?_c('div',[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('booking.no_passengers_assigned_yet', 'No people assigned to booking yet.'))}})]):_vm._e(),(_vm.bookingPassengersCount > 0)?_c('div',[_vm._v(\" \"+_vm._s(_vm.$t( 'booking.passenger_count_summary', '{passengersCount} passengers', { passengersCount: _vm.bookingPassengersCount } ))+\" \")]):_vm._e()]:_vm._e(),(header.value === 'actions')?[((_vm.bookingIsOrdered) && _vm.userCanEditBookings)?_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"orange\",\"disabled\":!_vm.bookingOrderIsCancelable,\"loading\":_vm.cancelOrderInProgress},on:{\"click\":function($event){$event.stopPropagation();return _vm.onCancelOrderBookingClick($event)}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('booking.cancel_order_button','Cancel order'))}})]):_vm._e(),(_vm.bookingPassengersCount > 0 && (!_vm.bookingIsAccepted && !_vm.bookingIsOrdered) && _vm.userCanEditBookings)?_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"green\",\"disabled\":!_vm.bookingIsOrderable,\"loading\":_vm.orderInProgress},on:{\"click\":function($event){$event.stopPropagation();return _vm.onOrderBookingClick($event)}}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('booking.order_button','Order'))}})]):_vm._e()]:_vm._e()],2)})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop, Watch } from 'vue-property-decorator';\r\nimport './BookingListItem.scss'\r\nimport { Booking } from '../models/Booking';\r\nimport Passenger from '../../Passenger/models/Passenger';\r\nimport { Helpers } from '../../../util/Helpers';\r\nimport { Guid } from 'guid-typescript';\r\nimport vuetifyToast from 'vuetify-toast'\r\nimport { BookingState } from '@/components/Booking/models/BookingState';\r\nimport { BookingStates } from '@/components/Booking/models/BookingStates';\r\nimport BookingEditor from '@/components/Booking/components/BookingEditor.vue';\r\nimport BookingInfoDialog from '@/components/Booking/components/BookingInfoDialog.vue';\r\nimport { RolePermission } from '@/models/Role';\r\nimport BookingPassenger from '@/components/Booking/models/BookingPassenger';\r\n\r\n@Component({\r\n components: {\r\n }\r\n})\r\nexport class BookingListItem extends Vue {\r\n\r\n @Prop({required: true}) \r\n bookingId: Guid;\r\n @Prop({required: false, default: true }) \r\n listView: boolean;\r\n @Prop({default: () => [] }) \r\n headers: any[];\r\n orderInProgress: boolean = false;\r\n cancelOrderInProgress: boolean = false;\r\n $dateHelper: any;\r\n $t: any;\r\n\r\n s: BookingStates = new BookingStates();\r\n get booking(): Booking {\r\n return this.$store.state.booking.bookings.find(t => t.id === this.bookingId);\r\n }\r\n get bookingIsAccepted(){\r\n return this.booking.isAccepted;\r\n }\r\n get bookingIsOrdered(){\r\n return this.booking.isOrdered;\r\n }\r\n get bookingIsLocked(){\r\n return this.booking.isLocked;\r\n }\r\n get bookingIsOrderable(){\r\n return this.booking.isOrderable;\r\n }\r\n get bookingOrderIsCancelable(){\r\n return this.booking.isOrderIsCancelable;\r\n }\r\n get bookingHasExpired(){\r\n return this.booking.hasExpired;\r\n }\r\n get bookingStartDateTooClose(){\r\n return !this.booking.hasEnoughTimeBeforeStart;\r\n }\r\n get bookingStartDatePassed(){\r\n return this.booking.hasStartDatePassed;\r\n }\r\n get bookingDaysUntilStart(){\r\n return this.booking.daysUntilStart;\r\n } \r\n get bookingCurrentStateColor(){\r\n return this.booking.currentStateColor;\r\n }\r\n get bookingCurrentStateAlertClass(){\r\n return this.booking.currentStateAlertClass; \r\n }\r\n \r\n get bookingIsSaved(){\r\n // TODO: Implement\r\n // Saved means if there's a order for it and that there's no changes after the previous order are \r\n return true;\r\n }\r\n \r\n get bookingPassengersCount(): number {\r\n return this.booking.unnamedPassengersCount; // this.bookingPassengers.length;\r\n }\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n get me() {\r\n return this.$store.state.user.me;\r\n }\r\n\r\n get userCanEditBookings(): boolean {\r\n return this.me \r\n ? this.me.hasPermissions(this.routeDestinationId, [RolePermission.UpdateBookings])\r\n : false;\r\n }\r\n\r\n bookingHasPassenger(t, passenger){\r\n return t.bookingPassengers.some(tp => tp.passengerId === passenger.id);\r\n }\r\n\r\n async saveBooking(booking: Booking) {\r\n await this.$store.dispatch('booking/updateBooking', \r\n { \r\n params: { \r\n id: booking.id,\r\n destinationId: booking.destinationId\r\n }, data: booking \r\n });\r\n }\r\n\r\n get helpers(){\r\n return Helpers\r\n }\r\n\r\n activate(){\r\n this.$store.dispatch(\"app/setLastSelectedBookingId\", this.booking.id);\r\n }\r\n\r\n onBookingEditClick(){\r\n // console.log(\"onBookingEditClick()\");\r\n this.$root.$emit(BookingEditor.EVENT_BOOKING_EDITOR_OPEN, this.booking);\r\n }\r\n\r\n onBookingInfoClick(){\r\n // console.log(\"onBookingInfoClick()\");\r\n this.$root.$emit(BookingInfoDialog.EVENT_BOOKING_INFO_DIALOG_OPEN, this.booking);\r\n }\r\n \r\n async onCancelOrderBookingClick() {\r\n // TODO: Send the order cancellation, don't just update the state, let the api update the state\r\n // TODO: Do we need a state OrderCancelled?\r\n\r\n this.cancelOrderInProgress = true;\r\n try {\r\n const response = await this.$store.dispatch(\r\n 'booking/deleteBooking', \r\n { \r\n params: {\r\n destinationId: this.routeDestinationId,\r\n id: this.booking.id\r\n }\r\n }\r\n );\r\n vuetifyToast.success(this.$i18n.translate(\"booking.order.canceled.notification\", \"Order canceled.\"));\r\n } catch (err) {\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n \"booking.order.canceled.error\", \r\n \"Error when canceling order: {errorMessage}\", \r\n { errorMessage: (err as any).message }\r\n )\r\n );\r\n }\r\n this.cancelOrderInProgress = false;\r\n }\r\n async onOrderBookingClick() {\r\n // this.orderInProgress = true;\r\n // try {\r\n // const apiBooking = Booking.toApi(this.booking);\r\n // apiBooking.State = BookingStates.Open.id;\r\n // await this.saveBooking(apiBooking);\r\n // vuetifyToast.success(this.$i18n.translate(\"booking.order.sent.notification\", \"Order sent.\"));\r\n // } catch (err) {\r\n // vuetifyToast.error(\r\n // this.$i18n.translate(\r\n // \"booking.order.sent.error\", \r\n // \"Error when sending order: {errorMessage}\", \r\n // {errorMessage: err.message}\r\n // )\r\n // );\r\n // }\r\n\r\n // this.orderInProgress = false;\r\n }\r\n // onListItemClick(e: Event){\r\n // if (!this.listView){\r\n // this.$root.$emit(BookingEditor.EVENT_BOOKING_EDITOR_OPEN, this.booking);\r\n // }\r\n // }\r\n onAddPeopleClick(){\r\n this.activate();\r\n setTimeout(() => {\r\n this.$router.push({\r\n name: 'Booking', \r\n params: { \r\n bookingId: this.booking.id.toString()\r\n },\r\n query: { addpeople: \"true\" }\r\n });\r\n }, 500);\r\n }\r\n\r\n}\r\n\r\nexport default BookingListItem;\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingListItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingListItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BookingListItem.vue?vue&type=template&id=d74c5af6&\"\nimport script from \"./BookingListItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./BookingListItem.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { Booking } from \"@/components/Booking/models/Booking\";\r\nimport './BookingList.scss'\r\nimport { Guid } from \"guid-typescript\";\r\nimport Destination from \"@/components/Passenger/models/Destination\";\r\nimport moment from 'moment';\r\nimport BookingListItem from \"@/components/Booking/components/BookingListItem.vue\";\r\nimport { Passenger } from \"@/components/Passenger/models/Passenger\";\r\nimport Routes from '@/Routes';\r\nimport BookingEditor from '@/components/Booking/components/BookingEditor.vue';\r\nimport { RolePermission } from '@/models/Role';\r\nimport BookingState, { BookingStates } from '@/components/Booking/models/BookingStates';\r\nimport User from '../../../models/User';\r\n\r\n@Component({\r\n components: {\r\n BookingListItem\r\n },\r\n })\r\nexport default class BookingList extends Vue {\r\n\r\n mounting: boolean = true;\r\n editedBookingId: Guid = null;\r\n showBookingEditor: boolean = false;\r\n stateFilter: string = 'pending';\r\n selectableBookingStates: BookingState[] = BookingStates.SelectableStates;\r\n $t: any;\r\n\r\n headers: any[] = [ \r\n { \r\n i18n: 'booking.table.header.idNumber',\r\n text: 'ID', \r\n align: 'left', \r\n value: 'shortId',\r\n hasCustomTemplate: true\r\n },\r\n { \r\n i18n: 'booking.table.header.bookingDate',\r\n text: '[Date]', \r\n align: 'left', \r\n value: 'bookingDate',\r\n hasCustomTemplate: true\r\n },\r\n { \r\n i18n: 'booking.table.header.fromAddress',\r\n fi: 'Lähtöpaikka', \r\n text: 'From', \r\n align: 'left', \r\n value: 'fromAddress',\r\n },\r\n { \r\n i18n: 'booking.table.header.toAddress',\r\n fi: 'Määränpää', \r\n text: 'To', \r\n align: 'left', \r\n value: 'toAddress',\r\n },\r\n { \r\n i18n: 'booking.table.header.passenger',\r\n text: 'Matkustaja', \r\n align: 'left', \r\n value: 'primaryPassengerName'\r\n },\r\n { \r\n i18n: 'booking.table.header.createdBy',\r\n fi: 'Tekijä', \r\n text: 'Created by', \r\n align: 'left', \r\n value: 'createdByNameFromEmail'\r\n },\r\n // { \r\n // i18n: 'booking.table.header.state',\r\n // fi: 'Tila', \r\n // text: 'State', \r\n // align: 'left', \r\n // value: 'stateName',\r\n // hasCustomTemplate: true\r\n // },\r\n { \r\n // i18n: '',\r\n // fi: '', \r\n text: ' ', \r\n align: 'right', \r\n value: 'actions',\r\n sortable: false,\r\n hasCustomTemplate: true\r\n }\r\n ]\r\n\r\n // get pagination(): any {\r\n // return this.$store.state.app.bookingListDataTablePagination;\r\n // }\r\n\r\n // set pagination(val: any){\r\n // this.$store.dispatch(\"app/setBookingListDataTablePagination\", val);\r\n // }\r\n\r\n pagination: any = {\r\n sortBy: 'startDate', \r\n descending: false, \r\n rowsPerPage: -1\r\n }\r\n\r\n // bookingPassengersIds(booking: Booking): number[] {\r\n // return booking.bookingPassengers.map(tp => tp.passengerId);\r\n // }\r\n\r\n onTableHeaderClick(column){\r\n const pagination = Object.assign({}, this.pagination);\r\n if (pagination.sortBy === column) {\r\n pagination.descending = !pagination.descending;\r\n } else {\r\n pagination.sortBy = column;\r\n pagination.descending = false;\r\n }\r\n this.pagination = pagination;\r\n }\r\n\r\n onDatatableSort(items, index, isDesc) {\r\n // console.time(\"onDatatableSort\");\r\n items.sort((a: Booking, b: Booking) => {\r\n if (index === \"summary\") {\r\n const passengerCountA = a.passengerCount;\r\n const passengerCountB = b.passengerCount;\r\n if (isDesc) {\r\n return passengerCountB < passengerCountA ? -1 : 1;\r\n } else {\r\n return passengerCountA < passengerCountB ? -1 : 1;\r\n }\r\n } else {\r\n if (isDesc) {\r\n return b[index] < a[index] ? -1 : 1;\r\n } else {\r\n return a[index] < b[index] ? -1 : 1;\r\n }\r\n }\r\n });\r\n // console.timeEnd(\"onDatatableSort\");\r\n return items;\r\n }\r\n \r\n get isLoading(): boolean {\r\n return this.$store.state.booking.pending.bookings ||\r\n this.$store.state.destination.pending.destinations;\r\n }\r\n\r\n @Watch(\"isLoading\")\r\n onIsLoadingChanged(val, oldVal){\r\n // Dispatch window resize event to make the state tabs autosize\r\n window.dispatchEvent(new Event(\"resize\"));\r\n }\r\n\r\n get showExpiredBookings(): boolean {\r\n return this.$store.state.app.showExpiredBookings;\r\n }\r\n set showExpiredBookings(val) {\r\n this.$store.dispatch(\"app/setShowExpiredBookings\", val);\r\n }\r\n\r\n get showOnlyMyBookings(): boolean {\r\n return this.$store.state.app.showOnlyMyBookings;\r\n }\r\n set showOnlyMyBookings(val) {\r\n this.$store.dispatch(\"app/setShowOnlyMyBookings\", val);\r\n }\r\n\r\n get showBookingsAsList(): boolean {\r\n return this.$store.state.app.showBookingsAsList;\r\n }\r\n set showBookingsAsList(val) {\r\n this.$store.dispatch(\"app/setShowBookingsAsList\", val);\r\n }\r\n\r\n get me(): User {\r\n return this.$store.state.user.me;\r\n }\r\n\r\n get selectedBookingId(): Guid {\r\n return this.$store.state.route.params.bookingId;\r\n }\r\n\r\n // get bookings(): Booking[] {\r\n // if (this.showExpiredBookings){\r\n // return this.$store.state.booking.bookings;\r\n // } else {\r\n // return this.$store.state.booking.bookings.filter((t: Booking) => !t.hasExpired);\r\n // }\r\n // }\r\n\r\n get storeBookings(): Booking[] {\r\n return this.$store.state.booking.bookings\r\n }\r\n\r\n get destinationBookings(): Booking[] {\r\n return this.storeBookings \r\n ? this.storeBookings.filter(t => \r\n t.destinationId === this.routeDestinationId &&\r\n (!t.hasExpired || this.showExpiredBookings) &&\r\n ((t.createdByEmail === this.me.email && this.showOnlyMyBookings) || !this.showOnlyMyBookings)\r\n )\r\n : [];\r\n }\r\n\r\n get filteredDestinationBookings(): Booking[] {\r\n const bookings = this.destinationBookings\r\n .filter(t => t.state === this.routeStateId )\r\n .filter(t => t);\r\n return bookings;\r\n }\r\n\r\n get sortedDestinationBookings(): Booking[] {\r\n return this.filteredDestinationBookings\r\n .sort(\r\n (a, b) => {\r\n if (a.bookingDate.getTime() !== b.bookingDate.getTime() ){\r\n return a.bookingDate.getTime() > b.bookingDate.getTime() ? 1 : -1 \r\n } \r\n if (a.id !== b.id){\r\n return a.id > b.id ? -1 : 1 \r\n }\r\n }\r\n )\r\n }\r\n\r\n get destinations(): Destination[] {\r\n return this.$store.state.destination.destinations;\r\n }\r\n\r\n get destination(): Destination {\r\n return this.destinations.find(d => d.id === this.routeDestinationId);\r\n }\r\n\r\n get routeStateNameLowerCase(): string {\r\n return this.$store.state.route.params.state;\r\n }\r\n\r\n get routeState(): BookingState {\r\n return this.routeStateNameLowerCase \r\n ? BookingStates.SelectableStates.find(s => s.nameLowerCase === this.routeStateNameLowerCase)\r\n : null;\r\n }\r\n\r\n get routeStateId(): number {\r\n return this.routeState ? this.routeState.id : 0;\r\n }\r\n\r\n @Watch('routeState', { immediate: true })\r\n onRouteStateChanged(val, oldVal) {\r\n if (val){\r\n this.$store.dispatch(\"app/setLastSelectedBookingState\", this.routeState);\r\n }\r\n }\r\n\r\n bookingCountWithState(stateId: number): number {\r\n return this.destinationBookings.filter(t => t.state === stateId).length;\r\n }\r\n\r\n destinationFor(booking: Booking): Destination {\r\n return this.destinations.find(d => d.id === booking.destinationId);\r\n }\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n canUserViewBookingsForDestinationId(destinationId: number): boolean {\r\n return this.me \r\n ? this.me.hasPermissions(destinationId, [RolePermission.ReadBookings])\r\n : false;\r\n }\r\n\r\n @Watch('routeDestinationId', { immediate: true })\r\n onRouteDestinationIdChanged(val, oldVal) {\r\n if (!this.destination.bookingEnabled || !this.canUserViewBookingsForDestinationId(val)){\r\n this.$router.push(\"/\");\r\n }\r\n if (this.destinationBookings.length === 0){\r\n console.log(\"No bookings for destination in store.\");\r\n console.log(\"Getting bookings for selected destination ...\");\r\n this.$store.dispatch(\r\n 'booking/getDestinationBookings',\r\n { \r\n params: { \r\n destinationId: val\r\n } \r\n }\r\n ); \r\n }\r\n }\r\n\r\n get lastSelectedBookingId(): Guid {\r\n return this.$store.state.app.lastSelectedBookingId;\r\n }\r\n\r\n get userCanCreateBookings(): boolean {\r\n return this.me \r\n ? this.me.hasPermissions(this.routeDestinationId, [RolePermission.CreateBookings])\r\n : false;\r\n }\r\n\r\n timeout(ms) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n }\r\n\r\n get lastSelectedBookingState(): BookingState{\r\n return this.$store.state.app.lastSelectedBookingState;\r\n }\r\n\r\n get lastSelectedBookingStateNameLowerCase(): string {\r\n return this.lastSelectedBookingState \r\n ? this.lastSelectedBookingState.nameLowerCase\r\n : null;\r\n }\r\n\r\n @Watch('$route', { immediate: true })\r\n onRouteChanged(val, oldVal) {\r\n if (!this.routeState){\r\n this.$router.replace({\r\n name: Routes.bookingListWithStateRoute.name, \r\n params: { \r\n state: this.lastSelectedBookingStateNameLowerCase ? this.lastSelectedBookingStateNameLowerCase : 'open'\r\n }\r\n })\r\n }\r\n }\r\n\r\n async mounted() {\r\n this.mounting = true;\r\n if (this.lastSelectedBookingId && this.showBookingsAsList){\r\n // copy the value from store to a local variable, so it's there after the timeout\r\n const lastSelectedBookingId = this.lastSelectedBookingId;\r\n const bookingElement = document.querySelector(\"[data-booking-id='\" + lastSelectedBookingId + \"']\");\r\n if (bookingElement){\r\n\r\n await this.timeout(400); \r\n // console.log(\"Scrolling booking\", lastSelectedBookingId, \"into view...\");\r\n bookingElement.scrollIntoView({\r\n behavior: \"auto\",\r\n block: \"center\",\r\n });\r\n this.mounting = false;\r\n\r\n await this.timeout(600);\r\n bookingElement.classList.add(\"last-selected\")\r\n\r\n await this.timeout(1000);\r\n bookingElement.classList.remove(\"last-selected\")\r\n } else {\r\n this.mounting = false;\r\n }\r\n // Now that we are bringing the previously selected booking into view, we can reset astSelectedBookingId\r\n this.$store.dispatch(\"app/setLastSelectedBookingId\", null);\r\n } else {\r\n this.mounting = false;\r\n }\r\n }\r\n\r\n get showWeekends() {\r\n return this.$store.state.user.showWeekends;\r\n }\r\n\r\n onCreateBookingClick() {\r\n this.$router.push({ name: Routes.bookingListCreateNewRoute.name, params: { state: \"open\" } }); \r\n }\r\n\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BookingList.vue?vue&type=template&id=75326efb&\"\nimport script from \"./BookingList.vue?vue&type=script&lang=ts&\"\nexport * from \"./BookingList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"organization-page\"},[_c('v-container',{staticClass:\"compressible\",attrs:{\"fluid\":\"\"}},[_c('router-view')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport { RouteConfig } from 'vue-router';\r\nimport Routes from '@/Routes';\r\nimport { Organization } from '@/models/Organization';\r\n\r\n@Component({\r\n components: {\r\n \r\n },\r\n})\r\nexport default class OrganizationPage extends Vue {\r\n\r\n get routeName(){\r\n return this.$route.name;\r\n }\r\n\r\n get organizations(): Organization[] {\r\n return this.$store.state.organization.organizations;\r\n }\r\n\r\n get routeOrganizationId(): string {\r\n return this.$store.state.route.params.organizationId;\r\n }\r\n\r\n get navigationRoutes(): any[] {\r\n const organizationRoot = (this.$router as any).options.routes\r\n .find((r: any) => r.meta && r.meta.organizationRoot) as RouteConfig;\r\n \r\n if (!organizationRoot) {\r\n return [];\r\n }\r\n const navRoutes = organizationRoot.children.map(c => c).filter(c => c.meta && c.meta.organizationNav);\r\n return navRoutes;\r\n }\r\n\r\n async redirectToFirstNavigationRoute(alreadyRedirected: boolean = false){\r\n try {\r\n if (this.$route.name === Routes.organizationRoute.name){\r\n this.$router.replace(\r\n {\r\n name: this.navigationRoutes[0].name\r\n }\r\n );\r\n }\r\n } catch (err) {\r\n\r\n if (this.routeOrganizationId === '' && this.organizations.length > 0 && !alreadyRedirected){\r\n const firstOrganizationId = this.organizations[0].id;\r\n\r\n await this.$router.replace({\r\n name: Routes.organizationRoute.name,\r\n params: { \r\n organizationId: firstOrganizationId.toString(),\r\n }\r\n });\r\n\r\n await this.redirectToFirstNavigationRoute(true);\r\n\r\n } else {\r\n throw err;\r\n }\r\n }\r\n }\r\n\r\n created(){\r\n this.redirectToFirstNavigationRoute();\r\n }\r\n\r\n @Watch('routeName', { immediate: false })\r\n onRouteNameChanged(val, newVal){\r\n this.redirectToFirstNavigationRoute();\r\n }\r\n\r\n}\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrganizationPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrganizationPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OrganizationPage.vue?vue&type=template&id=33aaadf1&\"\nimport script from \"./OrganizationPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./OrganizationPage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"organization-page\"},[_c('v-container',{staticClass:\"compressible\",attrs:{\"fluid\":\"\"}},[(!_vm.showEditor)?_c('v-card',[_c('v-card-title',[_c('h1',[_vm._v(_vm._s(_vm.organization.name))]),_c('v-spacer'),_c('v-btn',{staticClass:\"tab organizationtab text-xs-right\",on:{\"click\":function($event){return _vm.$router.push({ path: '/' })}}},[_vm._v(\" \"+_vm._s(_vm.$t('generic.back', 'Back'))+\" \")])],1),_c('v-tabs',{staticClass:\"timetable-state-tabs my-4\",attrs:{\"show-arrows\":\"\",\"grow\":true,\"hide-slider\":\"\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},_vm._l((_vm.tabs),function(tab){return _c('v-tab',{key:tab.name,staticClass:\"tab organizationtab empty\"},[_vm._v(\" \"+_vm._s(tab.name)+\" \")])}),1),_c('v-tabs-items',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-card-text',_vm._l((_vm.tabs),function(tab){return _c('v-tab-item',{key:tab.name},[_c(tab.component,_vm._b({tag:\"component\"},'component',tab.props,false))],1)}),1)],1)],1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$t('organization.users', 'Users')))]),_c('v-spacer'),_c('v-btn',{staticClass:\"mb-2\",attrs:{\"dark\":\"\",\"color\":\"accent\"},on:{\"click\":_vm.createNewUser}},[_vm._v(\" \"+_vm._s(_vm.$t('organization.newUser', 'Add user'))+\" \")])],1),_c('v-card-text',[_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-spacer'),_c('v-text-field',{attrs:{\"label\":\"Search\",\"append-icon\":\"search\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.userTableItems,\"search\":_vm.search,\"custom-filter\":_vm.tableItemsSearch,\"pagination\":_vm.pagination,\"loading\":_vm.loading},on:{\"update:pagination\":function($event){_vm.pagination=$event}},scopedSlots:_vm._u([{key:\"items\",fn:function(props){return [_c('tr',{on:{\"click\":function($event){return _vm.handleRowCLick(props.item)}}},_vm._l((_vm.headers),function(header){return _c('td',{key:header.text,class:[header.align ? 'text-xs-' + header.align : '']},[[_c('div',[_vm._v(\" \"+_vm._s(props.item[header.value])+\" \")])]],2)}),0)]}},{key:\"no-data\",fn:function(){return [_c('v-alert',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loading),expression:\"!loading\"}],attrs:{\"value\":true,\"color\":\"warning\",\"icon\":\"warning\"}},[_c('span',[_vm._v(_vm._s(_vm.$t('organization.noUsers', 'No users, add user.')))])]),_c('v-alert',{attrs:{\"value\":true,\"color\":\"info\",\"icon\":\"info\"}},[_c('span',[_vm._v(_vm._s(_vm.$t('organization.loadingUsers', 'Fetching users')))])])]},proxy:true}])})],1),_c('v-card-text',[_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-spacer'),_c('v-btn',{staticClass:\"mb-2\",attrs:{\"dark\":\"\",\"color\":\"accent\"},on:{\"click\":_vm.createNewUser}},[_vm._v(\" \"+_vm._s(_vm.$t('organization.newUser', 'Add user'))+\" \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport {Component, Prop, Vue} from 'vue-property-decorator';\r\nimport User from '../../models/User';\r\nimport Destination from '../Passenger/models/Destination';\r\nimport Routes from '../../Routes';\r\n\r\n@Component({\r\n components: {\r\n \r\n }\r\n})\r\nexport default class UsersPage extends Vue {\r\n /*tslint:disable max-line-length*/\r\n newUserEmail: string = '';\r\n inviteUser: boolean = false;\r\n search: string = '';\r\n loading: boolean = false;\r\n pagination = {\r\n rowsPerPage: 10 // -1 for All,\r\n }\r\n \r\n get destinations(): Destination[] {\r\n if (this.$store.state.organization.organizations) {\r\n return this.$store.state.organization.organizations\r\n .find(o => o.id === this.organizationId).destinations;\r\n }\r\n return [];\r\n }\r\n\r\n get users(): User[] {\r\n return this.$store.state.organization.users;\r\n }\r\n\r\n get organizationId() {\r\n return this.$router.currentRoute.params.organizationId;\r\n }\r\n\r\n get router() {\r\n return this.$router;\r\n }\r\n\r\n get headers() {\r\n const headers = [ \r\n { text: this.$t('generic.user.capitalized', 'User'), value: 'email', align: 'left', sortable: true },\r\n { text: this.$t('organization.destinations', 'Destinations'), value: 'placesText', align: 'left', sortable: false },\r\n ];\r\n \r\n return headers;\r\n }\r\n\r\n get userTableItems() {\r\n let tableItems = [];\r\n tableItems = this.users.map(u => {\r\n const user = { email: u.email, placesText: '', places: [] };\r\n if (this.destinations) {\r\n user.places = this.destinations\r\n .filter(d => u.destinationRoles.find(dr => dr.destinationId === d.id) ? true : false)\r\n .map(d => d.alias || d.address);\r\n\r\n let placeText = user.places.join(', ');\r\n placeText = placeText.length > 75 \r\n ? `${placeText.substring(0, 62)}... ${user.places.length} paikkaa` \r\n : placeText;\r\n user.placesText = placeText;\r\n }\r\n return user;\r\n });\r\n return tableItems;\r\n }\r\n\r\n tableItemsSearch(items: Array<{ email: string, placeText: string, places: string[] }>, search: string, filter: any) {\r\n const searchLower = search.toLowerCase();\r\n return items.filter(i => {\r\n const places = i.places.find(p => p.toLowerCase().indexOf(searchLower) >= 0);\r\n const email = i.email.toLowerCase().indexOf(searchLower) >= 0;\r\n return places || email;\r\n });\r\n }\r\n\r\n handleRowCLick(user: User) {\r\n this.$router.push({ \r\n name: Routes.organizationEditUserRoute.name,\r\n params: {\r\n userEmail: user.email,\r\n },\r\n });\r\n }\r\n\r\n createNewUser() {\r\n this.$router.push({ name: Routes.organizationNewUserRoute.name });\r\n }\r\n\r\n async created() {\r\n this.loading = true;\r\n const organizationId = this.$route.params.organizationId;\r\n await this.$store.dispatch('organization/getUsers', { params: { id: organizationId } });\r\n this.loading = false;\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UsersPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UsersPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UsersPage.vue?vue&type=template&id=4da56aec&scoped=true&\"\nimport script from \"./UsersPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./UsersPage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./UsersPage.vue?vue&type=style&index=0&id=4da56aec&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4da56aec\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$t('organization.destinations', 'Destinations')))]),_c('v-spacer'),(_vm.isAdminUser)?_c('v-btn',{on:{\"click\":function($event){_vm.openModal = true}}},[_vm._v(_vm._s(_vm.$t('organization.addDestination.button', 'Create new destination')))]):_vm._e()],1),_c('v-card-text',[_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-spacer'),_c('v-text-field',{attrs:{\"label\":\"Search\",\"append-icon\":\"search\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.destinations,\"search\":_vm.search,\"pagination\":_vm.pagination},on:{\"update:pagination\":function($event){_vm.pagination=$event}},scopedSlots:_vm._u([{key:\"items\",fn:function(props){return [_c('tr',_vm._l((_vm.headers),function(header){return _c('td',{key:header.text,class:[header.align ? 'text-xs-' + header.align : '']},[[_c('div',[_vm._v(\" \"+_vm._s(props.item[header.value])+\" \")])]],2)}),0)]}},{key:\"no-results\",fn:function(){return [_c('v-alert',{attrs:{\"value\":true,\"color\":\"warning\",\"icon\":\"warning\"}},[_vm._v(\" \"+_vm._s(_vm.$t('organization.noDestinations', 'No destinations available.'))+\" \")])]},proxy:true}])})],1),_c('create-destination-modal',{attrs:{\"organizationId\":_vm.organizationId,\"open\":_vm.openModal},on:{\"close\":function($event){_vm.openModal = false}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":\"800px\"},model:{value:(_vm.open),callback:function ($$v) {_vm.open=$$v},expression:\"open\"}},[_c('v-card',[_c('v-form',{ref:\"form\",model:{value:(_vm.destinationIsValid),callback:function ($$v) {_vm.destinationIsValid=$$v},expression:\"destinationIsValid\"}},[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.$t(\"organization.newDestination\", \"New destination\"))+\" \")]),_c('v-card-text',[_c('v-container',{attrs:{\"grid-list-lg\":\"\",\"fluid\":\"\",\"pa-2\":\"\"}},[_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm12\":\"\"}},[_c('v-text-field',{attrs:{\"label\":\"Alias*\",\"rules\":[_vm.rules.required]},model:{value:(_vm.newDestination.alias),callback:function ($$v) {_vm.$set(_vm.newDestination, \"alias\", $$v)},expression:\"newDestination.alias\"}})],1)],1),_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm12\":\"\"}},[_c('v-text-field',{attrs:{\"rules\":[_vm.rules.required],\"label\":_vm.$t('organization.addDestination.address', 'Address') + '*'},model:{value:(_vm.newDestination.streetAddress),callback:function ($$v) {_vm.$set(_vm.newDestination, \"streetAddress\", $$v)},expression:\"newDestination.streetAddress\"}})],1)],1),_c('v-layout',{staticClass:\"row\"},[_c('v-flex',{attrs:{\"xs6\":\"\",\"sm6\":\"\"}},[_c('v-text-field',{attrs:{\"rules\":[_vm.rules.required, _vm.rules.validPostalCode],\"label\":_vm.$t('organization.addDestination.postalCode', 'Postal code') + '*'},model:{value:(_vm.newDestination.postalCode),callback:function ($$v) {_vm.$set(_vm.newDestination, \"postalCode\", $$v)},expression:\"newDestination.postalCode\"}})],1),_c('v-flex',{attrs:{\"xs6\":\"\",\"sm6\":\"\"}},[_c('v-text-field',{attrs:{\"rules\":[_vm.rules.required],\"label\":_vm.$t('organization.addDestination.city', 'City') + '*'},model:{value:(_vm.newDestination.city),callback:function ($$v) {_vm.$set(_vm.newDestination, \"city\", $$v)},expression:\"newDestination.city\"}})],1)],1),_c('v-layout',[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm12\":\"\"}},[_c('v-select',{attrs:{\"item-text\":\"name\",\"item-value\":\"id\",\"items\":_vm.instances,\"rules\":[_vm.rules.required],\"label\":_vm.$t(\n 'organization.addDestination.serviceProvider',\n 'Service provider'\n ) + '*'},model:{value:(_vm.newDestination.movitInstanceId),callback:function ($$v) {_vm.$set(_vm.newDestination, \"movitInstanceId\", $$v)},expression:\"newDestination.movitInstanceId\"}})],1)],1),_c('v-layout',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isEspoo),expression:\"isEspoo\"}]},[_c('v-flex',{attrs:{\"xs6\":\"\",\"sm6\":\"\"}},[_c('v-select',{attrs:{\"items\":_vm.priceAreas,\"label\":_vm.$t(\n 'organization.priceArea.priceArea',\n 'Price area'\n )},model:{value:(_vm.newDestination.priceArea),callback:function ($$v) {_vm.$set(_vm.newDestination, \"priceArea\", $$v)},expression:\"newDestination.priceArea\"}})],1)],1),_c('v-layout',[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm12\":\"\"}},[_c('v-alert',{attrs:{\"value\":_vm.checkAddress,\"color\":\"warning\",\"icon\":\"warning\"}},[_vm._v(\" \"+_vm._s(_vm.$t('organization.addDestination.alert.destinationWithSameAddress', 'Organization has all ready destination {alias} with same address.', { alias: this.matchingDestination, } ))+\" \")])],1)],1)],1)],1),_c('v-card-actions',[_c('v-btn',{on:{\"click\":_vm.closeEditor}},[_vm._v(\" \"+_vm._s(_vm.$t(\"generic.close\", \"Close\"))+\" \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"disabled\":!_vm.destinationIsValid,\"color\":\"success\"},on:{\"click\":_vm.createDestination}},[_vm._v(_vm._s(_vm.$t(\"generic.save\", \"Save\")))])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Organization } from \"@/models/Organization\";\r\nimport restService from \"@/services/restService\";\r\nimport { IMovitInstance } from \"@/typings/timit\";\r\nimport { Vue, Prop, Component, Watch } from \"vue-property-decorator\";\r\nimport vuetifyToast from \"vuetify-toast\";\r\nimport Destination from \"../Passenger/models/Destination\";\r\n\r\ninterface ICreateDestination {\r\n alias: string;\r\n streetAddress: string;\r\n postalCode: string;\r\n city: string;\r\n movitInstanceId: number;\r\n organizationId: string;\r\n priceArea: number;\r\n}\r\n\r\n@Component({\r\n components: {},\r\n})\r\nexport default class CreateDestinationModal extends Vue {\r\n destinationIsValid: boolean = false;\r\n\r\n newDestination: ICreateDestination = {\r\n alias: \"\",\r\n streetAddress: \"\",\r\n postalCode: \"\",\r\n city: \"\",\r\n movitInstanceId: 0,\r\n organizationId: \"\",\r\n priceArea: 0,\r\n };\r\n\r\n priceAreas = [0, 1, 2, 3, 4, 5, 6];\r\n\r\n rules: any = {\r\n required: (val) =>\r\n !!val || this.$i18n.translate(\"validation.rules.required\", \"Required\"),\r\n validPostalCode: (val) =>\r\n this.validatePostalCode(val) ||\r\n this.$i18n.translate(\r\n \"validation.rules.postalCode\",\r\n \"Postal code must 5 characters long and can not include letters or special characters.\"\r\n ),\r\n };\r\n\r\n instances: IMovitInstance[] = [];\r\n\r\n @Prop({ default: false }) open: boolean;\r\n @Prop({ default: null }) organizationId: string | null;\r\n\r\n @Watch(\"organizationId\", { immediate: true })\r\n async setOrganizationId() {\r\n this.newDestination.organizationId = this.organizationId;\r\n this.getServiceProviders(this.newDestination.organizationId);\r\n }\r\n\r\n get isEspoo() {\r\n if (!this.organizationId) {\r\n return false;\r\n }\r\n\r\n const espooOrganizations: string[] = [\r\n '626a6858-8c19-4a69-b699-12e577ce012a'.toLowerCase(),\r\n '17dd2fb9-4253-4503-881d-f5cdb305ceaf'.toLowerCase()\r\n ];\r\n \r\n return espooOrganizations.includes(this.organizationId.toLowerCase());\r\n }\r\n\r\n get checkAddress() {\r\n return (this.$store.state.organization.organizations as Organization[])\r\n .find(o => o.id === this.organizationId)\r\n .destinations.some(d => d.address.toLowerCase() === this.newDestination.streetAddress.toLowerCase());\r\n }\r\n\r\n get matchingDestination() {\r\n if (this.checkAddress) {\r\n return (this.$store.state.organization.organizations as Organization[])\r\n .find(o => o.id === this.organizationId)\r\n .destinations.find(d => d.address.toLowerCase() === this.newDestination.streetAddress.toLowerCase()).alias;\r\n }\r\n return '';\r\n }\r\n\r\n validatePostalCode(val: any) {\r\n const regex = new RegExp(\"^\\\\d{5}$\");\r\n return regex.test(val);\r\n }\r\n\r\n async getServiceProviders(organizationId: string) {\r\n this.instances = await restService.organizations.getServiceProviders(\r\n organizationId\r\n );\r\n }\r\n\r\n async createDestination() {\r\n try {\r\n const result = await this.$store.dispatch(\r\n \"organization/createDestinationForOrganization\",\r\n { data: this.newDestination }\r\n );\r\n\r\n const organization: Organization = this.$store.state.organization.organizations\r\n .find(o => o.id === this.newDestination.organizationId);\r\n\r\n const newDestination = organization.destinations.find(d => d.id === result.data.id);\r\n\r\n this.$store.commit(\"destination/addDestination\", newDestination);\r\n this.$store.commit(\"user/addDestinationPermission\", newDestination);\r\n\r\n vuetifyToast.success(\r\n this.$i18n.translate(\r\n \"organization.addDestination.sent\",\r\n \"Destination added.\"\r\n )\r\n );\r\n this.closeEditor();\r\n } catch (error) {\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n \"organization.addDestination.error\",\r\n \"Adding destination failed: {errorMessage}\",\r\n {\r\n errorMessage: error,\r\n }\r\n )\r\n );\r\n }\r\n }\r\n\r\n closeEditor() {\r\n this.emptyForm();\r\n this.$emit(\"close\");\r\n }\r\n\r\n emptyForm() {\r\n this.newDestination.alias = \"\";\r\n this.newDestination.streetAddress = \"\";\r\n this.newDestination.city = \"\";\r\n this.newDestination.postalCode = \"\";\r\n this.newDestination.movitInstanceId = 0;\r\n\r\n (this.$refs.form as any).resetValidation();\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateDestinationModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateDestinationModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CreateDestinationModal.vue?vue&type=template&id=2b10110d&\"\nimport script from \"./CreateDestinationModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./CreateDestinationModal.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue} from 'vue-property-decorator';\r\nimport Destination from '../Passenger/models/Destination';\r\nimport { Organization } from '../../models/Organization';\r\nimport CreateDestinationModal from '@/components/Organization/CreateDestinationModal.vue';\r\nimport User from '../../models/User';\r\n\r\n@Component({\r\n components: {\r\n CreateDestinationModal,\r\n }\r\n})\r\nexport default class DestinationsPage extends Vue{\r\n /*tslint:disable max-line-length*/\r\n search: string = '';\r\n\r\n openModal = false;\r\n\r\n pagination = {\r\n rowsPerPage: 10 // -1 for All,\r\n }\r\n \r\n get organizationId() {\r\n return this.$router.currentRoute.params.organizationId;\r\n }\r\n\r\n get destinations(): Destination[] {\r\n if (this.$store.state.organization.organizations) {\r\n return this.$store.state.organization.organizations\r\n .find(o => o.id === this.organizationId).destinations;\r\n }\r\n return [];\r\n }\r\n\r\n get headers() {\r\n const headers = [\r\n { text: this.$t('organization.destination', 'Destination'), value: 'alias', align: 'left', sortable: true },\r\n { text: this.$t('organization.addDestination.address', 'Address'), value: 'address', align: 'left', sortable: true },\r\n { text: this.$t('organization.addDestination.city', 'City'), value: 'city', align: 'left', sortable: true },\r\n { text: this.$t('organization.instances', 'Service providers'), value: 'movitInstanceName', align: 'left', sortable: true },\r\n ];\r\n if (this.isEspoo) {\r\n headers.push({ text: this.$t('organization.priceArea.priceArea', 'Price area'), value: 'priceArea', align: 'left', sortable: true });\r\n }\r\n return headers;\r\n }\r\n\r\n get isEspoo() {\r\n\r\n if (!this.organizationId) {\r\n return false;\r\n }\r\n \r\n const espooOrganizations: string[] = [\r\n '626a6858-8c19-4a69-b699-12e577ce012a'.toLowerCase(),\r\n '17dd2fb9-4253-4503-881d-f5cdb305ceaf'.toLowerCase()\r\n ];\r\n \r\n return espooOrganizations.includes(this.organizationId.toLowerCase());\r\n }\r\n\r\n get isAdminUser() {\r\n const organization = this.$store.state.organization.organizations.find(o => o.id === this.organizationId) as Organization;\r\n const user = this.$store.state.user.me as User;\r\n return organization.administratorIds.some(id => id === user.id);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DestinationsPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DestinationsPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DestinationsPage.vue?vue&type=template&id=172077ec&\"\nimport script from \"./DestinationsPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./DestinationsPage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$t(\"organization.passengerGroup.plural\", \"Passenger groups\")))])]),_c('v-card-text',[_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-spacer'),_c('v-btn',{staticClass:\"mb-2\",attrs:{\"dark\":\"\",\"color\":\"accent\"},on:{\"click\":function($event){_vm.dialog = true}}},[_vm._v(\" \"+_vm._s(_vm.$t('organization.passengerGroup.createNew', 'Create new passenger group'))+\" \")])],1),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.passengerGroups,\"search\":_vm.search,\"pagination\":_vm.pagination,\"loading\":_vm.loading},on:{\"update:pagination\":function($event){_vm.pagination=$event}},scopedSlots:_vm._u([{key:\"items\",fn:function(props){return [_c('tr',{on:{\"click\":function($event){return _vm.openPassengerGroup(props.item)}}},[_c('td',[_vm._v(_vm._s(props.item.name))]),_c('td',[_vm._v(_vm._s(props.item.description))]),_c('td',[_vm._v(_vm._s(props.item.passengerCount))])])]}}])})],1),_c('v-layout',[_c('v-dialog',{attrs:{\"max-width\":\"800\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('create-passenger-group',{attrs:{\"oraganizationId\":_vm.organizationId},on:{\"closeDialog\":function($event){_vm.dialog = false}}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$t('organization.passengerGroup.newGroup', 'New passenger group')))])]),_c('v-card-text',[_c('v-container',{attrs:{\"grid-list-md\":\"\"}},[_c('v-layout',{attrs:{\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm6\":\"\",\"md4\":\"\"}},[_c('v-text-field',{attrs:{\"label\":_vm.$t('organization.passengerGroup.name', 'New passenger group') + '*',\"required\":\"\"},model:{value:(_vm.newPassengerGroup.Name),callback:function ($$v) {_vm.$set(_vm.newPassengerGroup, \"Name\", $$v)},expression:\"newPassengerGroup.Name\"}})],1),_c('v-flex',{attrs:{\"xs12\":\"\",\"sm6\":\"\",\"md4\":\"\"}},[_c('v-text-field',{attrs:{\"label\":_vm.$t('organization.passengerGroup.description')},model:{value:(_vm.newPassengerGroup.Description),callback:function ($$v) {_vm.$set(_vm.newPassengerGroup, \"Description\", $$v)},expression:\"newPassengerGroup.Description\"}})],1)],1)],1)],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"red\",\"flat\":\"\"},on:{\"click\":_vm.closeDialog}},[_vm._v(_vm._s(_vm.$t('generic.close','Close')))]),_c('v-btn',{attrs:{\"color\":\"blue darken-1\",\"flat\":\"\",\"disabled\":_vm.newPassengerGroup.Name.length < 1},on:{\"click\":_vm.createPassengerGroup}},[_vm._v(_vm._s(_vm.$t('generic.save','Save')))])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport {Vue, Prop, Component} from 'vue-property-decorator'\r\n@Component({\r\n components: {\r\n\r\n }\r\n})\r\nexport default class CreatePassengerGroup extends Vue {\r\n \r\n @Prop({default: ''}) oraganizationId: string;\r\n\r\n newPassengerGroup = {\r\n Name: '',\r\n Description: '',\r\n OrganizationId: '',\r\n }\r\n\r\n closeDialog() {\r\n this.$emit('closeDialog')\r\n this.resetForm();\r\n }\r\n\r\n async createPassengerGroup() {\r\n console.log(this.newPassengerGroup);\r\n this.newPassengerGroup.OrganizationId = this.oraganizationId;\r\n await this.$store.dispatch('organization/createPassengerGroup', { data: this.newPassengerGroup });\r\n this.$emit('closeDialog')\r\n this.resetForm();\r\n \r\n }\r\n\r\n resetForm() {\r\n this.newPassengerGroup.Name = '';\r\n this.newPassengerGroup.Description = '';\r\n this.newPassengerGroup.OrganizationId = '';\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreatePassengerGroup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreatePassengerGroup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CreatePassengerGroup.vue?vue&type=template&id=3fa88200&\"\nimport script from \"./CreatePassengerGroup.vue?vue&type=script&lang=ts&\"\nexport * from \"./CreatePassengerGroup.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport {Vue, Prop, Component} from 'vue-property-decorator';\r\nimport CreatePassengerGroup from '@/components/Organization/CreatePassengerGroup.vue';\r\nimport Routes from '../../Routes';\r\nimport { PassengerGroup } from '@/models/PassengerGroup';\r\n\r\n@Component({\r\n components: {\r\n CreatePassengerGroup,\r\n }\r\n})\r\nexport default class PassengerGroupsPage extends Vue {\r\n dialog = false;\r\n loading = true;\r\n search: string = '';\r\n passengerGroups: PassengerGroup[] = [];\r\n\r\n pagination = {\r\n rowsPerPage: 25 // -1 for All,\r\n }\r\n\r\n // @Prop() private organizationId!: string;\r\n\r\n get organizationId() {\r\n return this.$router.currentRoute.params.organizationId;\r\n }\r\n\r\n get headers() {\r\n const headers = [\r\n { text: this.$t('organization.passengerGroup.name', 'Name'),\r\n value: 'name', align: 'left', sortable: true },\r\n { text: this.$t('organization.passengerGroup.description', 'Descritption'),\r\n value: 'name', align: 'left', sortable: true },\r\n { text: this.$t('organization.passengerGroup.passengerCount', 'Passenger count'),\r\n value: 'name', align: 'left', sortable: true },\r\n ];\r\n\r\n return headers;\r\n }\r\n\r\n async mounted() {\r\n this.loading = true;\r\n this.passengerGroups = [];\r\n const result = await this.$store.dispatch('organization/getPassengerGroups',\r\n { params: { id: this.organizationId } });\r\n this.passengerGroups = result.data;\r\n this.loading = false;\r\n }\r\n\r\n openPassengerGroup(passengerGroup: PassengerGroup ) {\r\n this.$router.push({ \r\n name: Routes.passengerGroup.name,\r\n params: { \r\n organizationId: this.organizationId,\r\n passengerGroupId: passengerGroup.id.toString(),\r\n }, \r\n });\r\n }\r\n\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerGroupsPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerGroupsPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerGroupsPage.vue?vue&type=template&id=18bdd515&\"\nimport script from \"./PassengerGroupsPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerGroupsPage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue } from 'vue-property-decorator';\r\nimport { RouterOptions, RouteConfig } from 'vue-router';\r\nimport Routes from '@/Routes';\r\nimport User from '@/models/User';\r\nimport UsersPage from '@/components/Organization/UsersPage.vue';\r\nimport DestinationsPage from '@/components/Organization/DestinationsPage.vue';\r\n// import InvoiceTab from '@/components/Organization/InvoiceTab.vue';\r\nimport PassengerGroupsPage from '@/components/Organization/PassengerGroupsPage.vue'\r\n\r\n@Component({\r\n components: {\r\n UsersPage,\r\n PassengerGroupsPage\r\n },\r\n})\r\nexport default class OrganizationDetails extends Vue {\r\n organizationId!: any;\r\n showDestinationsTab: boolean = false;\r\n tab: number = 0;\r\n\r\n get showEditor() {\r\n const isEditingUser = this.$route.name === Routes.organizationEditUserRoute.name;\r\n const isCreatingUser = this.$route.name === Routes.organizationNewUserRoute.name;\r\n return isEditingUser || isCreatingUser;\r\n }\r\n\r\n get tabs() {\r\n return [\r\n { \r\n name: this.$i18n.translate('generic.user.plural', 'Users'),\r\n component: UsersPage,\r\n props: { users: this.users, organizationId: this.organizationId },\r\n },\r\n { \r\n name: this.$i18n.translate('organization.destinations', 'Destinations'), \r\n component: DestinationsPage, \r\n props: { organizationId: this.organizationId },\r\n },\r\n { \r\n name: this.$i18n.translate('organization.passengerGroup.plural', 'Passenger groups'), \r\n component: PassengerGroupsPage, \r\n props: { organizationId: this.organizationId },\r\n },\r\n ]\r\n }\r\n\r\n get users(): User[] {\r\n return this.$store.state.organization.users;\r\n }\r\n\r\n get organization() {\r\n return this.$store.state.organization.organizations.find(o => o.id === this.organizationId);\r\n }\r\n\r\n set organization(val: any) {\r\n this.organizationId = val;\r\n }\r\n\r\n async created() {\r\n const organizationId = this.$route.params.organizationId;\r\n this.organization = organizationId;\r\n return await this.$store\r\n .dispatch('organization/getUsers', { params: { id: organizationId } });\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrganizationDetails.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrganizationDetails.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OrganizationDetails.vue?vue&type=template&id=92c6d722&\"\nimport script from \"./OrganizationDetails.vue?vue&type=script&lang=ts&\"\nexport * from \"./OrganizationDetails.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[(_vm.passengerGroup)?_c('span',{staticClass:\"headline\"},[_vm._v(\" \"+_vm._s(_vm.passengerGroup.name)+\" \"),_c('span',{staticClass:\"subheading\"},[_vm._v(_vm._s(_vm.passengerGroup.description))])]):_vm._e(),_c('v-spacer'),_c('v-btn',{staticClass:\"mb-2\",attrs:{\"dark\":\"\",\"color\":\"accent\"},on:{\"click\":function($event){_vm.openAddPassengerToPassengerGroupDialog = true}}},[_vm._v(_vm._s(_vm.$t('organization.passengerGroup.addPassengerToGroup')))]),_c('v-btn',{staticClass:\"mb-2\",attrs:{\"dark\":\"\",\"color\":\"accent\"},on:{\"click\":_vm.createNewPassenger}},[_vm._v(\" \"+_vm._s(_vm.$t('organization.passengerGroup.createNewPassengerToGroup', 'Create new passenger to group'))+\" \")])],1),_c('v-card-text',[_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-flex',{attrs:{\"xs6\":\"\"}},[_c('v-switch',{attrs:{\"label\":_vm.$t('passengers.showOnlyActive', 'Show only active passengers')},model:{value:(_vm.showOnlyActivePassengers),callback:function ($$v) {_vm.showOnlyActivePassengers=$$v},expression:\"showOnlyActivePassengers\"}})],1),_c('v-flex',{attrs:{\"xs6\":\"\"}},[_c('v-text-field',{attrs:{\"label\":_vm.$t('generic.search', 'Search'),\"append-icon\":\"search\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1)],1),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.passengers,\"search\":_vm.search,\"pagination\":_vm.pagination},on:{\"update:pagination\":function($event){_vm.pagination=$event}},scopedSlots:_vm._u([{key:\"items\",fn:function(props){return [_c('tr',[_c('td',[_c('span',{staticClass:\"chip_link\"},[_c('v-chip',{on:{\"click\":function($event){return _vm.openPassengerDetails(props.item)}}},[_c('span',{class:{ 'inactive' :props.item.inactive }},[_vm._v(_vm._s(props.item.name))])])],1)]),_c('td',[_vm._v(_vm._s(props.item.destination))]),_c('td',[_vm._v(_vm._s(props.item.phone))]),_c('td',[_vm._v(_vm._s(props.item.groups))]),_c('td',[_vm._v(_vm._s(props.item.transportationPermissionCount))]),_c('td',{staticStyle:{\"text-align\":\"right\"}},[_c('v-icon',{attrs:{\"color\":\"red\"},on:{\"click\":function($event){return _vm.openRemoveModal(props.item)}}},[_vm._v(\"remove_circle\")])],1)])]}}])}),_c('v-dialog',{model:{value:(_vm.openCreateNewPassengerDialog),callback:function ($$v) {_vm.openCreateNewPassengerDialog=$$v},expression:\"openCreateNewPassengerDialog\"}},[(_vm.openCreateNewPassengerDialog)?_c('organization-passenger-page',{attrs:{\"passengerGroupId\":_vm.passengerGroupId,\"editedPassenger\":_vm.selectedPassenger},on:{\"closeDialog\":_vm.closeCreateNewPassengerDialog}}):_vm._e()],1),_c('add-passenger-to-passenger-group-dialog',{attrs:{\"open\":_vm.openAddPassengerToPassengerGroupDialog,\"passengerGroup\":_vm.passengerGroup},on:{\"close\":_vm.closeAddPassengerToPassengerGroupDialog}}),_c('remove-passenger-from-group-confirmation-dialog',{attrs:{\"open\":_vm.openRemoveConfirmationModal,\"passenger\":_vm.selectedPassenger,\"passengerGroup\":_vm.passengerGroup},on:{\"remove\":_vm.removePassengerFromGroup,\"close\":_vm.closeRemoveModal}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-form',{ref:\"form\",staticStyle:{\"width\":\"100%\"},attrs:{\"lazy-validation\":\"\"},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-card',{staticClass:\"passenger-editor-card\"},[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"passenger.editor.title.new\", \"NEW PERSON\"))+\" \")])]),_c('v-card-text',[_c('v-container',{attrs:{\"grid-list-xl\":\"\",\"pa-0\":\"\"}},[_c('v-layout',{attrs:{\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"sm12\":\"\",\"md8\":\"\"}},[_c('passenger-details-editor',{attrs:{\"passenger\":_vm.editedPassenger,\"allowUserInput\":_vm.allowUserInput,\"saving\":_vm.saving,\"deleting\":_vm.deleting},on:{\"save\":function($event){return _vm.onSaveClick(true)}}})],1),_c('v-flex',{attrs:{\"sm12\":\"\",\"md4\":\"\"}},[_c('passenger-utilities',{attrs:{\"passenger\":_vm.editedPassenger,\"allowUserInput\":_vm.allowUserInput}})],1)],1),_c('v-layout',{attrs:{\"justify-end\":\"\"}},[_c('v-btn',{on:{\"click\":_vm.closeDialog}},[_vm._v(_vm._s(_vm.$t(\"generic.back\", \"Back\")))]),_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"accent\",\"loading\":_vm.saving,\"disabled\":!_vm.valid || _vm.editedPassenger.inactive},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSaveClick(false)}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"generic.save\", \"Save\"))+\" \")])],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.passenger)?_c('v-card',{staticStyle:{\"background-color\":\"#f7f7f7\"}},[_c('v-card-title',[_c('div',{staticClass:\"subheading\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"passenger.editor.basicInformation\"))+\" \")])]),_c('v-card-text',[_c('v-text-field',{attrs:{\"label\":_vm.$t('passenger.prop.name.label'),\"autocomplete\":\"name\",\"rules\":[_vm.rules.required],\"disabled\":!_vm.allowUserInput || _vm.passenger.inactive},model:{value:(_vm.passenger.name),callback:function ($$v) {_vm.$set(_vm.passenger, \"name\", $$v)},expression:\"passenger.name\"}}),(_vm.showExternalId)?_c('v-text-field',{attrs:{\"label\":_vm.$t('passenger.prop.externalId.label'),\"rules\":[_vm.rules.maxLength]},model:{value:(_vm.passenger.externalId),callback:function ($$v) {_vm.$set(_vm.passenger, \"externalId\", $$v)},expression:\"passenger.externalId\"}}):_vm._e(),(_vm.canSeeSsn)?_c('ssn-editor',{ref:\"ssnEditor\",attrs:{\"id\":_vm.passenger.id,\"hasSsn\":_vm.passenger.hasSsn}}):_vm._e(),_c('passenger-phonenumber-editor',{attrs:{\"allowUserInput\":_vm.allowUserInput,\"shouldSave\":_vm.phoneNumbersChanged},model:{value:(_vm.passenger.phoneNumbers),callback:function ($$v) {_vm.$set(_vm.passenger, \"phoneNumbers\", $$v)},expression:\"passenger.phoneNumbers\"}}),_c('v-text-field',{attrs:{\"label\":_vm.$t('passenger.prop.homeAddress.label', 'Home address'),\"autocomplete\":\"address-line1\",\"disabled\":!_vm.allowUserInput || _vm.passenger.inactive},model:{value:(_vm.passenger.homeAddress),callback:function ($$v) {_vm.$set(_vm.passenger, \"homeAddress\", $$v)},expression:\"passenger.homeAddress\"}}),_c('v-text-field',{attrs:{\"label\":_vm.$t('passenger.prop.pickupAddress.label', 'Pickup address'),\"autocomplete\":\"address-pickup\",\"disabled\":!_vm.allowUserInput || _vm.passenger.inactive},model:{value:(_vm.passenger.pickupAddress),callback:function ($$v) {_vm.$set(_vm.passenger, \"pickupAddress\", $$v)},expression:\"passenger.pickupAddress\"}}),(_vm.canSeeSsn)?_c('div',[_c('v-checkbox',{attrs:{\"label\":_vm.$t('passenger.prop.billingUseHomeAddress.label', 'Use home address for billing'),\"disabled\":!_vm.allowUserInput || _vm.passenger.inactive},model:{value:(_vm.passenger.billingUseHomeAddress),callback:function ($$v) {_vm.$set(_vm.passenger, \"billingUseHomeAddress\", $$v)},expression:\"passenger.billingUseHomeAddress\"}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.passenger.billingUseHomeAddress),expression:\"!passenger.billingUseHomeAddress\"}]},[_c('v-text-field',{attrs:{\"label\":_vm.$t('passenger.prop.billingName.label', 'Billing name'),\"rules\":[_vm.rules.billingNameMaxlength],\"autocomplete\":\"address-billing-line0\",\"disabled\":!_vm.allowUserInput || _vm.passenger.inactive},model:{value:(_vm.passenger.billingName),callback:function ($$v) {_vm.$set(_vm.passenger, \"billingName\", $$v)},expression:\"passenger.billingName\"}}),_c('v-text-field',{attrs:{\"label\":_vm.$t('passenger.prop.billingAddress.label', 'Billing address (if differs from home address)'),\"autocomplete\":\"address-billing-line1\",\"disabled\":!_vm.allowUserInput || _vm.passenger.inactive},model:{value:(_vm.passenger.billingAddress),callback:function ($$v) {_vm.$set(_vm.passenger, \"billingAddress\", $$v)},expression:\"passenger.billingAddress\"}}),_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-flex',{attrs:{\"xs6\":\"\"}},[_c('v-text-field',{attrs:{\"label\":_vm.$t('passenger.prop.billingPostalcode.label', 'Billing postal code'),\"rules\":[_vm.rules.postalCodeMaxlength],\"autocomplete\":\"address-billing-line2\",\"disabled\":!_vm.allowUserInput || _vm.passenger.inactive},model:{value:(_vm.passenger.billingPostalcode),callback:function ($$v) {_vm.$set(_vm.passenger, \"billingPostalcode\", $$v)},expression:\"passenger.billingPostalcode\"}})],1),_c('v-flex',{attrs:{\"xs6\":\"\"}},[_c('v-text-field',{attrs:{\"label\":_vm.$t('passenger.prop.billingCity.label', 'Billing city'),\"rules\":[_vm.rules.billingCityMaxLength],\"autocomplete\":\"address-billing-line3\",\"disabled\":!_vm.allowUserInput || _vm.passenger.inactive},model:{value:(_vm.passenger.billingCity),callback:function ($$v) {_vm.$set(_vm.passenger, \"billingCity\", $$v)},expression:\"passenger.billingCity\"}})],1)],1)],1)],1):_vm._e(),_c('v-text-field',{attrs:{\"label\":_vm.$t('passenger.prop.yearGrade.label', 'Grade'),\"autocomplete\":\"grade\",\"type\":\"number\"},model:{value:(_vm.passenger.yearGrade),callback:function ($$v) {_vm.$set(_vm.passenger, \"yearGrade\", _vm._n($$v))},expression:\"passenger.yearGrade\"}}),_c('group-picker',{attrs:{\"groups\":_vm.destinationGroups,\"selectedGroups\":_vm.passenger.groupObjs,\"prepend-icon\":false,\"enableCreation\":true,\"label\":_vm.$t('generic.tags', 'Tags')},on:{\"change\":_vm.tagsChanged}}),_c('v-checkbox',{attrs:{\"label\":_vm.$t(\n 'passenger.prop.transportationPermissionRequired.label',\n 'Booking requires a transportationpermission'\n ),\"disabled\":!_vm.allowUserInput || _vm.passenger.inactive},model:{value:(_vm.passenger.transportationPermissionRequired),callback:function ($$v) {_vm.$set(_vm.passenger, \"transportationPermissionRequired\", $$v)},expression:\"passenger.transportationPermissionRequired\"}}),_c('v-textarea',{attrs:{\"box\":\"\",\"rows\":\"3\",\"auto-grow\":\"\",\"label\":_vm.$t('passenger.prop.note.label', 'Notes'),\"disabled\":!_vm.allowUserInput || _vm.passenger.inactive},model:{value:(_vm.passenger.note),callback:function ($$v) {_vm.$set(_vm.passenger, \"note\", $$v)},expression:\"passenger.note\"}}),_c('v-textarea',{attrs:{\"box\":\"\",\"rows\":\"3\",\"auto-grow\":\"\",\"label\":_vm.$t('passenger.prop.timitNote.label', 'Timit notes to coordinators'),\"disabled\":!_vm.allowUserInput || _vm.passenger.inactive},model:{value:(_vm.passenger.timitNote),callback:function ($$v) {_vm.$set(_vm.passenger, \"timitNote\", $$v)},expression:\"passenger.timitNote\"}})],1),_c('v-card-actions',[(_vm.passenger.inactive)?[(_vm.allowUserInput && _vm.isEditing)?_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"orange\",\"loading\":_vm.saving,\"disabled\":_vm.deleting},on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('activate')}}},[_vm._v(\" \"+_vm._s(_vm.$t('passenger.activate'))+\" \")]):_vm._e()]:[(_vm.allowUserInput && _vm.isEditing)?_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"orange\",\"loading\":_vm.saving,\"disabled\":_vm.deleting},on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('deactivate')}}},[_vm._v(\" \"+_vm._s(_vm.$t('passenger.passivate'))+\" \")]):_vm._e()]],2)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',[_vm._v(\" \"+_vm._s(_vm.$t('passenger.prop.phoneNumbers.label','Phone numbers'))+\" \"),(_vm.shouldSave)?_c('span',[_c('v-chip',{attrs:{\"color\":\"red\"}},[_vm._v(_vm._s(_vm.$t('generic.rememberToSave', 'Remember to save')))])],1):_vm._e()]),_c('v-expansion-panel',{attrs:{\"expand\":\"\",\"disabled\":!_vm.allowUserInput},model:{value:(_vm.panel),callback:function ($$v) {_vm.panel=$$v},expression:\"panel\"}},_vm._l((_vm.phoneNumbers),function(number,i){return _c('v-expansion-panel-content',{key:i,attrs:{\"disabled\":!number.number,\"expand\":\"\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.panel[i]),expression:\"!panel[i]\"}]},[_c('strong',[_vm._v(_vm._s(number.number))]),_c('div',{staticClass:\"caption\"},[_c('span',{class:{ 'black--text text--lighten-2': number.sms, 'grey--text text--lighten-2': !number.sms },staticStyle:{\"margin-right\":\"1em\"}},[_vm._v(_vm._s(_vm.$t('passenger.prop.phoneNumber.sms','Sms')))]),_c('span',{class:{ 'black--text text--lighten-2': number.showToDriver, 'grey--text text--lighten-2': !number.showToDriver },staticStyle:{\"margin-right\":\"1em\"}},[_vm._v(_vm._s(_vm.$t('passenger.prop.phoneNumber.shonwToDriver','Shown to driver')))]),_c('span',{class:{ 'black--text text--lighten-2': number.assistant, 'grey--text text--lighten-2': !number.assistant },staticStyle:{\"margin-right\":\"1em\"}},[_vm._v(_vm._s(_vm.$t('passenger.prop.phoneNumber.assistant','Assistant')))])])])]},proxy:true}],null,true)},[_c('v-card',[_c('v-card-text',{staticClass:\"pt-0\"},[_c('v-text-field',{attrs:{\"label\":_vm.$t('passenger.prop.phoneNumber.label','Phone number')},on:{\"input\":_vm.update},model:{value:(number.number),callback:function ($$v) {_vm.$set(number, \"number\", $$v)},expression:\"number.number\"}}),_c('v-list',{attrs:{\"subheader\":\"\",\"single-line\":\"\"}},[_c('v-list-tile',[_c('v-list-tile-action',[_c('v-checkbox',{attrs:{\"label\":_vm.$t('passenger.prop.phoneNumber.sms','Sms')},on:{\"change\":_vm.update},model:{value:(number.sms),callback:function ($$v) {_vm.$set(number, \"sms\", $$v)},expression:\"number.sms\"}})],1)],1),_c('v-list-tile',[_c('v-list-tile-action',[_c('v-checkbox',{attrs:{\"label\":_vm.$t('passenger.prop.phoneNumber.shonwToDriver','Shown to driver')},on:{\"change\":_vm.update},model:{value:(number.showToDriver),callback:function ($$v) {_vm.$set(number, \"showToDriver\", $$v)},expression:\"number.showToDriver\"}})],1)],1),_c('v-list-tile',[_c('v-list-tile-action',[_c('v-checkbox',{attrs:{\"label\":_vm.$t('passenger.prop.phoneNumber.assistant','Assistant')},on:{\"change\":_vm.update},model:{value:(number.assistant),callback:function ($$v) {_vm.$set(number, \"assistant\", $$v)},expression:\"number.assistant\"}})],1)],1)],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.allowUserInput),expression:\"allowUserInput\"}],staticClass:\"text-xs-right\"},[_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":function($event){return _vm.removePhoneNumber(number)}}},[_vm._v(_vm._s(_vm.$t('passenger.prop.phoneNumber.removePhoneNumber','Remove phone number')))]),_c('v-btn',{attrs:{\"color\":\"success\"},on:{\"click\":function($event){return _vm.closeDropDown(i)}}},[_vm._v(\"OK\")])],1)],1)],1)],1)}),1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.allowUserInput),expression:\"allowUserInput\"}],staticClass:\"text-xs-right\"},[_c('v-btn',{attrs:{\"color\":\"success\"},on:{\"click\":_vm.addPhoneNumber}},[_vm._v(_vm._s(_vm.$t('passenger.prop.phoneNumber.newPhoneNumber','New phone number')))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport IPassengerPhoneNumberViewModel from '../models/IPassengerPhoneNumberViewModel';\r\nimport { Vue, Prop, Component, Watch } from 'vue-property-decorator'\r\n@Component({\r\n components: {\r\n\r\n }\r\n}\r\n)\r\nexport default class PassengerPhonenumberEditor extends Vue {\r\n \r\nphoneNumbers: IPassengerPhoneNumberViewModel[] = [];\r\npanel: any[] = [];\r\n\r\ncreated() {\r\n // Initialize panel array. null for each phonenumber. \r\n // So when we create new phonenumber we can open expasion for it.\r\n this.phoneNumbers.forEach(p => {\r\n this.panel.push(null);\r\n })\r\n}\r\n\r\n@Prop({ default: [] }) private value!: IPassengerPhoneNumberViewModel[]; \r\n@Prop({ default: false }) private allowUserInput!: boolean;\r\n@Prop({ default: false }) private shouldSave!: boolean;\r\n\r\n@Watch('value', { immediate: true })valueChanged() {\r\n this.phoneNumbers = JSON.parse(JSON.stringify(this.value));\r\n}\r\n\r\n// get showNewPhoneNumberButton() {\r\n// return this.phoneNumbers.every(p => p.id !== 0) || this.phoneNumbers.length === 0\r\n// }\r\n\r\nupdate() {\r\n this.$emit('input', this.phoneNumbers);\r\n}\r\n\r\ncloseDropDown(index: number) {\r\n const phoneNumber = this.phoneNumbers[index];\r\n if (!phoneNumber.number) {\r\n this.phoneNumbers.splice(index, 1);\r\n this.update();\r\n } else {\r\n this.$set(this.panel, index, null)\r\n }\r\n}\r\n\r\naddPhoneNumber() {\r\n const newPhoneNumber: IPassengerPhoneNumberViewModel = {\r\n id: 0,\r\n passengerId: 0,\r\n number: '',\r\n sms: true,\r\n showToDriver: true,\r\n assistant: false,\r\n }\r\n\r\n this.phoneNumbers.push(newPhoneNumber);\r\n // This has to be done so expansion opens for new phoneNumber\r\n this.panel.push(true);\r\n this.$emit('input', this.phoneNumbers);\r\n}\r\n\r\nremovePhoneNumber(phoneNumber: IPassengerPhoneNumberViewModel) {\r\n const index = this.phoneNumbers.indexOf(phoneNumber);\r\n this.phoneNumbers.splice(index, 1);\r\n this.update();\r\n}\r\n\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerPhonenumberEditor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerPhonenumberEditor.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerPhonenumberEditor.vue?vue&type=template&id=45b1f33c&\"\nimport script from \"./PassengerPhonenumberEditor.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerPhonenumberEditor.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-text-field',{attrs:{\"label\":_vm.$t('passenger.prop.ssn.label'),\"type\":!_vm.showSsn ? 'password' : 'text',\"placeholder\":_vm.placeholder,\"rules\":[_vm.rules.isValid],\"append-outer-icon\":_vm.showSsn ? 'visibility' : 'visibility_off',\"readonly\":!_vm.showSsn},on:{\"click:append-outer\":function($event){return _vm.toggleVisibility()}},model:{value:(_vm.ssn),callback:function ($$v) {_vm.ssn=$$v},expression:\"ssn\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport restService from \"@/services/restService\";\r\nimport { Vue, Prop, Component, Watch } from \"vue-property-decorator\";\r\n@Component({\r\n components: {},\r\n})\r\nexport default class SsnEditor extends Vue {\r\n\r\n ssn: string = \"\";\r\n originalSsn = \"\";\r\n showSsn = false;\r\n valid = true;\r\n rules: any = {\r\n isValid: (value) => {\r\n return !!this.isValidSsn(value) || this.$i18n.translate(\"validation.rules.ssn\", \"Check social security number\")\r\n }\r\n };\r\n @Prop() private id!: number;\r\n @Prop({ default: false }) private hasSsn!: boolean;\r\n \r\n get ssnModified() {\r\n return this.originalSsn !== this.ssn\r\n }\r\n\r\n get placeholder() {\r\n if (this.hasSsn) {\r\n return ''.padStart(11, '\\u25CF');\r\n }\r\n return '';\r\n }\r\n\r\n async toggleVisibility() {\r\n if (this.id && !this.ssn) {\r\n this.ssn = await restService.passengers.getSsn(this.id);\r\n this.originalSsn = this.ssn;\r\n }\r\n this.showSsn = !this.showSsn\r\n }\r\n\r\n async saveSsn() {\r\n if (this.ssnModified) {\r\n const result = await restService.passengers.setPassengerSsn(\r\n this.id,\r\n this.ssn\r\n );\r\n this.ssn = result;\r\n this.originalSsn = this.ssn;\r\n this.$store.commit('passenger/setHasSsnToPassenger', { passengerId: this.id, ssn: this.ssn });\r\n }\r\n }\r\n\r\n async saveSsnForNewPassenger(id: number, ssn: string) {\r\n const result = await restService.passengers.setPassengerSsn(id, ssn);\r\n this.ssn = result;\r\n this.$store.commit('passenger/setHasSsnToPassenger', { passengerId: id, ssn: this.ssn });\r\n }\r\n\r\n getSsnForNewPassenger() {\r\n if (this.isValidSsn) {\r\n return this.ssn;\r\n }\r\n return \"\";\r\n }\r\n\r\n isValidSsn(ssn: string) {\r\n if (!ssn) {\r\n this.valid = true;\r\n return true;\r\n } else if (ssn.length !== 11) {\r\n // Ssn should be 11 chars\r\n this.valid = false;\r\n return false;\r\n } else {\r\n const regex = /^(\\d{2})(\\d{2})(\\d{2})([\\+\\-ABCDEFYXWVU])(\\d{3})([0-9ABCDEFHJKLMNPRSTUVWXY])$/;\r\n const parts = this.ssn.match(regex);\r\n if (parts === null || parts.length !== 7) {\r\n // Did not match pattern\r\n this.valid = false;\r\n return false;\r\n } else {\r\n const num = parseInt(parts[1] + parts[2] + parts[3] + parts[5], 10);\r\n if (isNaN(num)) {\r\n // Cound not parse checksum number\r\n this.valid = true;\r\n return true;\r\n }\r\n\r\n const check = \"0123456789ABCDEFHJKLMNPRSTUVWXY\".split(\"\")[num % 31];\r\n if (check !== parts[6].toUpperCase()) {\r\n // Last checksum mark is not correct, should be check\r\n this.valid = false;\r\n return false;\r\n }\r\n this.valid = true;\r\n return true;\r\n }\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SsnEditor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SsnEditor.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SsnEditor.vue?vue&type=template&id=5f7e27b8&\"\nimport script from \"./SsnEditor.vue?vue&type=script&lang=ts&\"\nexport * from \"./SsnEditor.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Watch, Vue } from \"vue-property-decorator\";\r\nimport Passenger from \"../models/Passenger\";\r\nimport PassengerPhonenumberEditor from \"./PassengerPhonenumberEditor.vue\";\r\nimport Group from \"../models/Group\";\r\nimport GroupPicker from \"@/components/Passenger/components/GroupPicker.vue\";\r\nimport SsnEditor from \"@/components/Passenger/components/SsnEditor.vue\"\r\nimport IPassengerPhoneNumberViewModel from \"../models/IPassengerPhoneNumberViewModel\";\r\nimport MovitInstanceConfig from \"@/models/MovitInstanceConfig\";\r\nimport Destination from \"../models/Destination\";\r\nimport { User } from \"@/models/User\";\r\nimport restService from \"@/services/restService\";\r\n\r\n@Component({\r\n components: {\r\n PassengerPhonenumberEditor,\r\n GroupPicker,\r\n SsnEditor,\r\n },\r\n})\r\nexport default class PassengerDetailsEditor extends Vue {\r\n originalPhoneNumbers: IPassengerPhoneNumberViewModel[] = [];\r\n destinationGroups: Group[] = [];\r\n\r\n rules: any = {\r\n required: (value) =>\r\n !!value || this.$i18n.translate(\"validation.rules.required\", \"Required\"),\r\n maxLength: (value) => this.validateEternalId(value) || this.$i18n.translate(\"validation.rules.externalIdLength\", \"External ID's max length is 128 characters.\"),\r\n postalCodeMaxlength: (value) => this.validatePostalCode(value) || this.$i18n.translate(\"validation.rules.postalCodeMaxLength\", \"Max length for postal code is 32 characters\"),\r\n billingCityMaxLength: (value) => this.validateBillingCity(value) || this.$i18n.translate(\"validation.rules.billingCityMaxLength\", \"Max length for billing city is 32 characters.\"),\r\n billingNameMaxlength: (value: string) => this.validateBillingName(value) || this.$i18n.translate(\"validation.rules.billingNameMaxLength\", \"Max length for billing name is 128 characters.\"),\r\n \r\n };\r\n\r\n @Prop({ default: false }) private allowUserInput!: boolean;\r\n // @Prop({ required: true }) private value!: Passenger;\r\n @Prop({ default: false }) private saving!: boolean;\r\n @Prop({ default: false }) private deleting: boolean;\r\n @Prop({ default: () => null }) private passenger!: Passenger;\r\n\r\n async mounted() {\r\n this.originalPhoneNumbers = JSON.parse(JSON.stringify(this.passenger.phoneNumbers));\r\n if (this.passenger.id > 0) {\r\n this.destinationGroups = (await restService.passengers.getPassengerAvailableDestinationGroups(this.passenger.id))\r\n .map(groupName => {return new Group(groupName, false)})\r\n }\r\n }\r\n\r\n @Watch(\"saving\")\r\n resetOriginalPhoneNumbers() {\r\n if (this.saving) {\r\n this.originalPhoneNumbers = JSON.parse(JSON.stringify(this.passenger.phoneNumbers))\r\n }\r\n }\r\n\r\n get me(): User {\r\n return this.$store.state.user.me;\r\n }\r\n\r\n get isEditing(): boolean {\r\n return this.passenger.id > 0;\r\n }\r\n\r\n get storeMovitInstanceConfigs(): MovitInstanceConfig[]{\r\n return this.$store.state.app.movitInstanceConfigs as MovitInstanceConfig[];\r\n }\r\n\r\n get passengersOrganizationId(): string {\r\n if (this.$route.params.organizationId) {\r\n return this.$route.params.organizationId;\r\n }\r\n // tslint:disable-next-line:max-line-length\r\n return this.$store.getters['passenger/passengerOrganizationId'](this.passenger.id, this.passenger.destinationIds) as string;\r\n }\r\n\r\n get showSsnToOrganization(): boolean {\r\n return this.$store.getters['auth/organizationCanSeeSsn'](this.passengersOrganizationId);\r\n }\r\n\r\n get canSeeSsn() {\r\n return this.passengersOrganizationId && this.showSsnToOrganization;\r\n }\r\n\r\n get showExternalId() {\r\n // Show external id editor only for passengers that belong to the Espoo organization \r\n // or passenger destination is for Espoo organization\r\n const destinationIds = this.passenger.destinationIds;\r\n const allDestinations: Destination[] = this.$store.state.destination.destinations;\r\n const destinations = allDestinations.filter(d => destinationIds.includes(d.id) && d.organizationId);\r\n if (window.location.host.includes('staging') || window.location.host.includes('localhost')) {\r\n // tslint:disable-next-line:max-line-length\r\n return this.passenger.organizationId === '00ad7549-de39-4f76-87f0-ca933966a998' || destinations.some(d => d.organizationId && d.organizationId === '00ad7549-de39-4f76-87f0-ca933966a998');\r\n }\r\n\r\n const espooOrganizations: string[] = [\r\n '626a6858-8c19-4a69-b699-12e577ce012a'.toLowerCase(),\r\n '17dd2fb9-4253-4503-881d-f5cdb305ceaf'.toLowerCase()\r\n ];\r\n\r\n if (this.passenger.organizationId && espooOrganizations.includes(this.passenger.organizationId.toLowerCase())) {\r\n return true;\r\n }\r\n\r\n return destinations.some(d => d.organizationId && espooOrganizations.includes(d.organizationId.toLowerCase()));\r\n }\r\n\r\n get phoneNumbersChanged() {\r\n if (this.originalPhoneNumbers.length !== this.passenger.phoneNumbers.length) {\r\n return true;\r\n }\r\n\r\n let somethingChanged = false;\r\n this.originalPhoneNumbers.forEach((o, i) => {\r\n const target = this.passenger.phoneNumbers[i]\r\n if (o.number !== target.number || o.sms !== target.sms ||\r\n o.showToDriver !== target.showToDriver || o.assistant !== target.assistant) {\r\n somethingChanged = true;\r\n }\r\n })\r\n\r\n return somethingChanged;\r\n\r\n }\r\n\r\n validateEternalId(externalId: string) {\r\n if (!externalId) {\r\n return true;\r\n }\r\n return externalId.length <= 128;\r\n }\r\n\r\n validatePostalCode(postalCode: string) {\r\n if (!postalCode) {\r\n return true;\r\n }\r\n return postalCode.length <= 32;\r\n }\r\n\r\n validateBillingName(name: string) {\r\n if (!name) {\r\n return true;\r\n }\r\n return name.length <= 128;\r\n \r\n }\r\n\r\n validateBillingCity(postalCity: string) {\r\n if (!postalCity) {\r\n return true;\r\n }\r\n return postalCity.length <= 32;\r\n }\r\n\r\n tagsChanged(selectedGroups: Group[]) {\r\n this.passenger.groups = selectedGroups.map((g) => g.name).join(\",\");\r\n }\r\n\r\n saveSsn(id: number) {\r\n if (this.canSeeSsn) {\r\n (this.$refs.ssnEditor as any).saveSsn();\r\n }\r\n }\r\n\r\n getNewPassengerSsn() {\r\n if (this.canSeeSsn) {\r\n return (this.$refs.ssnEditor as any).getSsnForNewPassenger();\r\n }\r\n }\r\n async saveSsnForNewPassenger(id: number, ssn: string) {\r\n if (this.canSeeSsn) {\r\n await (this.$refs.ssnEditor as any).saveSsnForNewPassenger(id, ssn);\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerDetailsEditor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerDetailsEditor.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerDetailsEditor.vue?vue&type=template&id=63f133cc&\"\nimport script from \"./PassengerDetailsEditor.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerDetailsEditor.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-text',[_c('div',{staticClass:\"subheading\"},[_vm._v(\" \"+_vm._s(_vm.$t('passenger.prop.utilities.label','Utilities'))+\" \")])]),_c('v-list',{staticClass:\"utilities-list\",attrs:{\"subheader\":\"\",\"single-line\":\"\",\"disabled\":!_vm.allowUserInput || _vm.passenger.inactive}},_vm._l((_vm.utilities),function(utility){return _c('v-list-tile',{key:utility.id,attrs:{\"disabled\":!_vm.allowUserInput || _vm.passenger.inactive},on:{\"click\":function($event){return _vm.onUtilityClick(utility.id)}}},[_c('v-list-tile-action',[_c('v-checkbox',{attrs:{\"disabled\":!_vm.allowUserInput || _vm.passenger.inactive},model:{value:(utility.selected),callback:function ($$v) {_vm.$set(utility, \"selected\", $$v)},expression:\"utility.selected\"}})],1),_c('v-list-tile-content',{on:{\"click\":function($event){1}}},[_c('v-list-tile-title',[_c('span',{staticClass:\"utility\"},[_c('img',{attrs:{\"src\":_vm.utilityIconImageSrc(utility.id)}})]),_vm._v(\" \"+_vm._s(_vm.utilityTitle(utility.id))+\" \")])],1)],1)}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Watch, Vue } from \"vue-property-decorator\";\r\nimport Passenger from '../models/Passenger';\r\nimport Utility from '../models/Utility';\r\n\r\n@Component({\r\n components: {}\r\n})\r\nexport default class PassengerUtilities extends Vue {\r\n\r\n @Prop({ default: false }) private allowUserInput!: boolean;\r\n @Prop({ default: null }) private passenger!: Passenger;\r\n\r\n\r\n get utilities() {\r\n const utilityOptions = Passenger.utilities.map(u => new Utility(u.id, u.title));\r\n utilityOptions.forEach(u => u.selected = this.passenger.utilityIds.includes(u.id));\r\n return utilityOptions; \r\n }\r\n\r\n utilityIconImageSrc(utilityId: number): string{\r\n const imageBasePath = '/frontend/utilities/';\r\n if (utilityId === 2){\r\n return imageBasePath + 'man-waving-arm-32' + '.png';\r\n } else {\r\n return imageBasePath + 'utility' + utilityId + '.png';\r\n }\r\n }\r\n\r\n utilityTitle(utilityId: number): string{\r\n const utility: Utility = Passenger.utilities.find((u: any) => u.id === utilityId);\r\n return utility \r\n ? this.$i18n.translate(\"utility.title.\" + utility.title, utility.title) \r\n : \"Unknown utility\";\r\n }\r\n\r\n onUtilityClick(utilityId: number) {\r\n this.passenger.toggleUtility(utilityId);\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerUtilities.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerUtilities.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerUtilities.vue?vue&type=template&id=2d9fad8a&\"\nimport script from \"./PassengerUtilities.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerUtilities.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Watch, Vue } from \"vue-property-decorator\";\r\nimport vuetifyToast from \"vuetify-toast\";\r\nimport { Passenger } from \"@/components/Passenger/models/Passenger\";\r\nimport PassengerDetailsEditor from \"@/components/Passenger/components/PassengerDetailsEditor.vue\";\r\nimport PassengerUtilities from \"@/components/Passenger/components/PassengerUtilities.vue\";\r\n\r\n@Component({\r\n components: {\r\n PassengerUtilities,\r\n PassengerDetailsEditor,\r\n },\r\n})\r\nexport default class OrganizationPassengerPage extends Vue {\r\n public static NEW_GROUP_CREATOR_ITEM: string = \"- New group -\";\r\n\r\n allowUserInput = true;\r\n\r\n valid: boolean = true;\r\n saving: boolean = false;\r\n rules: any = {\r\n required: (value) =>\r\n !!value || this.$i18n.translate(\"validation.rules.required\", \"Required\"),\r\n };\r\n inactivating: boolean = false;\r\n deleting: boolean = false;\r\n\r\n @Prop({ default: null }) private editedPassenger!: Passenger | null;\r\n @Prop() private passengerGroupId!: string;\r\n\r\n\r\n closeDialog() {\r\n this.$emit('closeDialog')\r\n }\r\n\r\n async onSaveClick(fromPhoneNumberEditorClick: boolean) {\r\n // TODO: Get rid of casting to any\r\n if (!(this.$refs.form as any).validate()) {\r\n return;\r\n }\r\n \r\n this.saving = true;\r\n try {\r\n const newPassengerGroupPassengerRequest = {\r\n passenger: this.editedPassenger,\r\n passengerGroupId: this.passengerGroupId,\r\n };\r\n if (this.editedPassenger.id > 0) {\r\n await this.modifyPassenger(newPassengerGroupPassengerRequest);\r\n } else {\r\n await this.createPassenger(newPassengerGroupPassengerRequest);\r\n }\r\n vuetifyToast.success(this.$i18n.translate(\"passenger.save.success\", \"Passenger saved successfully.\"));\r\n if (!fromPhoneNumberEditorClick) {\r\n this.closeDialog();\r\n }\r\n } catch (error) {\r\n vuetifyToast.error(this.$i18n.translate(\"passenger.save.error.generic\", \"There was an error saving the passenger. Please try again later.\"));\r\n }\r\n this.saving = false;\r\n }\r\n\r\n async modifyPassenger(request: any) {\r\n const result = await this.$store.dispatch(\r\n \"organization/modifyPassengerGroupPassenger\", {\r\n params: { id: this.passengerGroupId },\r\n data: request,\r\n }\r\n );\r\n this.$store.dispatch('passenger/replacePassenger', new Passenger(result.data));\r\n return result;\r\n }\r\n\r\n async createPassenger(request: any) {\r\n const result = await this.$store.dispatch(\r\n \"organization/createPassengerGroupPassenger\",\r\n {\r\n params: { id: this.passengerGroupId },\r\n data: request,\r\n }\r\n );\r\n // this.passenger = new Passenger(result.data);\r\n this.$store.dispatch(\"passenger/addPassenger\", new Passenger(result.data));\r\n return result;\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrganizationPassengerPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrganizationPassengerPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OrganizationPassengerPage.vue?vue&type=template&id=d7078994&\"\nimport script from \"./OrganizationPassengerPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./OrganizationPassengerPage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":\"800\",\"persistent\":\"\"},model:{value:(_vm.open),callback:function ($$v) {_vm.open=$$v},expression:\"open\"}},[_c('add-passenger-to-passenger-group-form',{attrs:{\"passengerGroup\":_vm.passengerGroup},on:{\"save\":_vm.addPassenger,\"close\":_vm.closeDialog}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_c('div',{staticClass:\"headline\"},[_vm._v(\"Lisää matkustaja\")])]),_c('v-card-text',[_c('passenger-search',{attrs:{\"excludedPassengerIds\":_vm.existingPassengerIds},on:{\"passengerSelect\":_vm.onPassengerSelect}})],1),(_vm.selectedPassenger)?_c('v-card-text',[_c('passenger-information-card',{attrs:{\"passenger\":_vm.selectedPassenger}})],1):_vm._e(),_c('v-card-actions',[_c('v-btn',{on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.$t('generic.cancel', 'Peruuta')))]),_c('v-spacer'),_c('v-btn',{attrs:{\"disabled\":!_vm.selectedPassenger,\"dark\":\"\",\"color\":\"accent\"},on:{\"click\":_vm.save}},[_vm._v(_vm._s(_vm.$t('generic.save', 'Tallenna')))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticStyle:{\"background-color\":\"#f7f7f7\"}},[_c('v-card-title',[_c('div',{staticClass:\"subheading\"},[_vm._v(_vm._s(_vm.passenger.name))])]),_c('v-card-text',[_c('v-text-field',{attrs:{\"readonly\":\"\",\"label\":_vm.$t('passenger.prop.phoneNumbers.label','Phone numbers')},model:{value:(_vm.phoneNumbers),callback:function ($$v) {_vm.phoneNumbers=$$v},expression:\"phoneNumbers\"}}),_c('v-text-field',{attrs:{\"readonly\":\"\",\"label\":_vm.$t('passenger.prop.homeAddress.label','Home address')},model:{value:(_vm.passenger.homeAddress),callback:function ($$v) {_vm.$set(_vm.passenger, \"homeAddress\", $$v)},expression:\"passenger.homeAddress\"}}),_c('v-text-field',{attrs:{\"readonly\":\"\",\"label\":_vm.$t('passenger.prop.pickupAddress.label','Pickup address')},model:{value:(_vm.passenger.pickupAddress),callback:function ($$v) {_vm.$set(_vm.passenger, \"pickupAddress\", $$v)},expression:\"passenger.pickupAddress\"}}),_c('v-text-field',{attrs:{\"readonly\":\"\",\"label\":_vm.$t('passenger.prop.yearGrade.label','Grade')},model:{value:(_vm.passenger.yearGrade),callback:function ($$v) {_vm.$set(_vm.passenger, \"yearGrade\", $$v)},expression:\"passenger.yearGrade\"}}),_c('v-textarea',{attrs:{\"readonly\":\"\",\"rows\":\"1\",\"auto-grow\":\"\",\"label\":_vm.$t('passenger.prop.note.label','Notes')},model:{value:(_vm.passenger.note),callback:function ($$v) {_vm.$set(_vm.passenger, \"note\", $$v)},expression:\"passenger.note\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport {Vue, Prop, Component } from 'vue-property-decorator';\r\nimport Passenger from '@/components/Passenger/models/Passenger';\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class PassengerInformationCard extends Vue {\r\n \r\n @Prop({ required: true }) private passenger!: Passenger;\r\n\r\n get phoneNumbers() {\r\n return this.passenger.phoneNumbers.map(p => p.number).join(', ');\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerInformationCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerInformationCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerInformationCard.vue?vue&type=template&id=7bb94c6a&\"\nimport script from \"./PassengerInformationCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerInformationCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport {Vue, Prop, Component, Watch } from 'vue-property-decorator';\r\nimport Passenger from '@/components/Passenger/models/Passenger';\r\nimport PassengerSearch from '@/components/PassengerSearch.vue';\r\nimport PassengerInformationCard from '@/components/Organization/AddPassengerToPassengerGroup/PassengerInformationCard.vue';\r\nimport { IPassengerGroupWithPassengers, IPassengerSearchResult } from '@/typings/timit';\r\n\r\n@Component({\r\n components: {\r\n PassengerSearch,\r\n PassengerInformationCard,\r\n },\r\n})\r\nexport default class AddPassengerToPassengerGroupForm extends Vue {\r\n selectedPassenger: Passenger | null = null;\r\n\r\n @Prop({ required: true }) passengerGroup: IPassengerGroupWithPassengers;\r\n\r\n get existingPassengerIds() {\r\n if (!this.passengerGroup || !this.passengerGroup.passengerGroupPassengers) {\r\n return [];\r\n }\r\n return this.passengerGroup.passengerGroupPassengers.map(p => p.id);\r\n }\r\n\r\n async onPassengerSelect(passenger: IPassengerSearchResult) {\r\n let selectedPassenger = null;\r\n\r\n if (passenger) {\r\n const result = await this.$store.dispatch('passenger/getPassengerById', {\r\n params: { id: passenger.id }\r\n });\r\n selectedPassenger = new Passenger(result.data);\r\n }\r\n this.selectedPassenger = selectedPassenger;\r\n }\r\n \r\n close() {\r\n this.selectedPassenger = null;\r\n this.$emit('close');\r\n }\r\n\r\n save() {\r\n this.$emit('save', this.selectedPassenger);\r\n this.selectedPassenger = null;\r\n }\r\n \r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddPassengerToPassengerGroupForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddPassengerToPassengerGroupForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AddPassengerToPassengerGroupForm.vue?vue&type=template&id=870553f2&\"\nimport script from \"./AddPassengerToPassengerGroupForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./AddPassengerToPassengerGroupForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Prop, Component, Watch } from \"vue-property-decorator\";\r\nimport Passenger from \"@/components/Passenger/models/Passenger\";\r\nimport AddPassengerToPassengerGroupForm from \"@/components/Organization/AddPassengerToPassengerGroup/AddPassengerToPassengerGroupForm.vue\";\r\nimport vuetifyToast from \"vuetify-toast\";\r\nimport { IPassengerGroupWithPassengers } from '@/typings/timit';\r\n\r\n@Component({\r\n components: {\r\n AddPassengerToPassengerGroupForm\r\n }\r\n})\r\nexport default class AddPassengerToPassengerGroupDialog extends Vue {\r\n @Prop({ default: false }) private open!: boolean;\r\n @Prop({ required: true }) private passengerGroup!: IPassengerGroupWithPassengers;\r\n\r\n async addPassenger(passenger: Passenger) {\r\n const existingPassenger = passenger.id > 0;\r\n if (existingPassenger) {\r\n const request = {\r\n PassengerGroupId: this.passengerGroup.id,\r\n PassengerIds: [ passenger.id ],\r\n }\r\n try {\r\n await this.$store.dispatch('organization/addPassengerToPassengerGroup', { data: request });\r\n vuetifyToast.success( this.$i18n.translate(\"passenger.save.success\", \"Passenger saved successfully.\"));\r\n this.closeDialog();\r\n } catch (error) {\r\n vuetifyToast.error(this.$i18n.translate(\"passenger.save.error.generic\", \"There was an error saving the passenger. Please try again later.\"));\r\n }\r\n }\r\n }\r\n\r\n closeDialog() {\r\n this.$emit('close');\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddPassengerToPassengerGroupDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddPassengerToPassengerGroupDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AddPassengerToPassengerGroupDialog.vue?vue&type=template&id=ec29a7b8&\"\nimport script from \"./AddPassengerToPassengerGroupDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./AddPassengerToPassengerGroupDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":\"800\",\"persistent\":\"\"},model:{value:(_vm.open),callback:function ($$v) {_vm.open=$$v},expression:\"open\"}},[_c('v-card',[_c('v-card-title',[_c('div',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$t('organization.passengerGroup.removeConfirmation', 'Are you sure you want to remove passenger from passenger group'))+\"?\")])]),(_vm.passenger)?_c('v-card-text',[_c('div',[_c('strong',[_vm._v(_vm._s(_vm.$t('organization.passengerGroup.singular', 'Passenger group')))]),_vm._v(\": \"+_vm._s(_vm.passengerGroup.name)+\" \")]),_c('div',[_c('strong',[_vm._v(_vm._s(_vm.$t('generic.header.passenger.one', 'Passenger')))]),_vm._v(\": \"+_vm._s(_vm.passenger.name)+\" \")])]):_vm._e(),_c('v-card-actions',[_c('v-btn',{on:{\"click\":_vm.close}},[_vm._v(_vm._s(_vm.$t('generic.cancel', 'Peruuta')))]),_c('v-spacer'),_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"red\"},on:{\"click\":_vm.removePassengerFromGroup}},[_vm._v(_vm._s(_vm.$t('generic.remove', 'Poista')))])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { IPassengerGroup } from '@/typings/timit';\r\nimport {Vue, Prop, Component} from 'vue-property-decorator';\r\nimport Passenger from '../Passenger/models/Passenger';\r\nimport vuetifyToast from \"vuetify-toast\";\r\n@Component({\r\n\r\n})\r\nexport default class RemovePassengerFromGroupConfirmationDialog extends Vue{\r\n @Prop({default: false}) open: boolean;\r\n @Prop({default: null}) passenger: Passenger | null;\r\n @Prop({ default: null }) passengerGroup: IPassengerGroup | null\r\n\r\n async removePassengerFromGroup() {\r\n try {\r\n const result = await this.$store.dispatch(\r\n \"organization/removePassengerFromPassengerGroup\", {\r\n params: { id: this.passengerGroup.id, passengerId: this.passenger.id },\r\n }\r\n );\r\n vuetifyToast.success( this.$i18n.translate(\"organization.passengerGroup.removeSuccess\", \"Passenger was successfully removed from passenger group.\"));\r\n this.$emit('remove', this.passenger)\r\n } catch (error) {\r\n vuetifyToast.error(this.$i18n.translate(\"organization.passengerGroup.removeError\", \"Something went wrong while removing passenger from passenger group\"));\r\n }\r\n }\r\n\r\n close() {\r\n this.$emit('close');\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RemovePassengerFromGroupConfirmationDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RemovePassengerFromGroupConfirmationDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RemovePassengerFromGroupConfirmationDialog.vue?vue&type=template&id=232a1fa4&\"\nimport script from \"./RemovePassengerFromGroupConfirmationDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./RemovePassengerFromGroupConfirmationDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport {Vue, Prop, Component, Watch } from 'vue-property-decorator';\r\nimport OrganizationPassengerPage from '@/components/Organization/OrganizationPassengerPage.vue';\r\nimport Passenger from '../Passenger/models/Passenger';\r\nimport AddPassengerToPassengerGroupDialog from '@/components/Organization/AddPassengerToPassengerGroup/AddPassengerToPassengerGroupDialog.vue';\r\nimport { IPassengerGroupWithPassengers } from '@/typings/timit';\r\nimport PassengerDestination from '../Passenger/models/PassengerDestination';\r\nimport Destination from '../Passenger/models/Destination';\r\nimport Routes from '@/Routes';\r\nimport RemovePassengerFromGroupConfirmationDialog from '../Organization/RemovePassengerFromGroupConfirmationDialog.vue';\r\n\r\ninterface IPassengerTableProperties {\r\n id: number;\r\n name: string;\r\n destination: string;\r\n phone: string;\r\n groups: string;\r\n transportationPermissionCount: number;\r\n inactive: boolean;\r\n}\r\n\r\n@Component({\r\n components: {\r\n OrganizationPassengerPage,\r\n AddPassengerToPassengerGroupDialog,\r\n RemovePassengerFromGroupConfirmationDialog,\r\n }\r\n})\r\nexport default class PassengerGroupPassengers extends Vue {\r\n \r\n selectedPassenger: Passenger | null = null;\r\n openCreateNewPassengerDialog = false;\r\n openAddPassengerToPassengerGroupDialog: boolean = false;\r\n openRemoveConfirmationModal: boolean = false;\r\n // passengerGroup: IPassengerGroupWithPassengers | null = null;\r\n search = '';\r\n pagination: any = {\r\n sortBy: 'name',\r\n descending: true,\r\n rowsPerPage: 25,\r\n }\r\n\r\n async created() {\r\n const passengerGroupId = parseInt(this.$route.params.passengerGroupId, 10);\r\n const result = await this.$store.dispatch('organization/getPassengerGroupWithPassengers', \r\n {\r\n params: {\r\n id: passengerGroupId\r\n }\r\n });\r\n }\r\n\r\n get passengerGroup(): IPassengerGroupWithPassengers {\r\n return this.$store.state.organization.selectedPassengerGroup;\r\n }\r\n\r\n get passengers(): IPassengerTableProperties[] {\r\n let passengers: IPassengerTableProperties[] = [];\r\n \r\n if (!this.passengerGroup) {\r\n return passengers;\r\n }\r\n\r\n passengers = this.passengerGroup.passengerGroupPassengers.map(p => ({\r\n id: p.id,\r\n name: p.name,\r\n destination: this.getMainDestination(p.passengerDestinations),\r\n phone: p.phone,\r\n groups: p.groups,\r\n transportationPermissionCount: p.transportationPermissionCount,\r\n inactive: p.inactive,\r\n }));\r\n\r\n if (this.showOnlyActivePassengers) {\r\n passengers = passengers.filter(p => !p.inactive);\r\n }\r\n\r\n return passengers;\r\n }\r\n\r\n get passengerGroupId() {\r\n return parseInt(this.$route.params.passengerGroupId, 10) ;\r\n }\r\n\r\n get headers(): any[] {\r\n\r\n return [\r\n { \r\n text: this.$t('passenger.prop.name.label', 'Name'), \r\n value: 'name',\r\n sortable: true,\r\n align: 'left'\r\n },\r\n { \r\n text: this.$t('passenger.prop.destinations.main', 'Main Destination'), \r\n value: 'destination',\r\n sortable: true,\r\n align: 'left'\r\n },\r\n { \r\n text: this.$t('passenger.prop.phoneNumbers.label', 'Phone numbers'), \r\n value: 'phone',\r\n sortable: true,\r\n align: 'left'\r\n },\r\n { \r\n text: this.$t('passenger.prop.tags.label', 'Tags'), \r\n value: 'groups',\r\n sortable: true,\r\n align: 'left'\r\n },\r\n { \r\n text: this.$t('passenger.prop.transportationPermissions.label', 'Transportation permissions'), \r\n value: 'transportationPermissionCount',\r\n sortable: true,\r\n align: 'left'\r\n },\r\n { \r\n text: '',\r\n sortable: false,\r\n align: 'right'\r\n }\r\n ];\r\n }\r\n\r\n get showOnlyActivePassengers(): boolean {\r\n return this.$store.state.passenger.showOnlyActivePassengers;\r\n }\r\n\r\n set showOnlyActivePassengers(value: boolean) {\r\n this.$store.commit(\"passenger/changeShowActivePassengers\", value);\r\n }\r\n\r\n\r\n getMainDestination(destinations: PassengerDestination[]) {\r\n if (!destinations || destinations.length === 0) {\r\n return '';\r\n }\r\n const firstDestination = destinations.find(d => d);\r\n const storeDestination = (this.$store.state.destination.destinations as Destination[])\r\n .find(d => d.id === firstDestination.destinationId);\r\n return storeDestination ? storeDestination.alias || storeDestination.address : '';\r\n }\r\n\r\n createNewPassenger() {\r\n this.selectedPassenger = new Passenger(null);\r\n this.selectedPassenger.organizationId = this.$route.params.organizationId;\r\n this.selectedPassenger.transportationPermissionRequired = this.$store.getters['organization/organizationRequirePtpByDefault'](this.selectedPassenger.organizationId);\r\n\r\n this.openCreateNewPassengerDialog = true;\r\n }\r\n\r\n closeCreateNewPassengerDialog() {\r\n this.openCreateNewPassengerDialog = false;\r\n this.selectedPassenger = null;\r\n }\r\n\r\n closeAddPassengerToPassengerGroupDialog() {\r\n this.openAddPassengerToPassengerGroupDialog = false;\r\n }\r\n\r\n openPassengerDetails(passenger: IPassengerTableProperties) {\r\n this.selectedPassenger = this.passengerGroup.passengerGroupPassengers.find(p => p.id === passenger.id);\r\n this.$router.push({\r\n name: Routes.editPassengerRoute.name, \r\n params: { \r\n passengerId: this.selectedPassenger.id.toString(),\r\n }\r\n })\r\n // this.dialog = true;\r\n }\r\n\r\n openRemoveModal(passenger: IPassengerTableProperties) {\r\n this.selectedPassenger = this.passengerGroup.passengerGroupPassengers.find(p => p.id === passenger.id);\r\n this.openRemoveConfirmationModal = true;\r\n }\r\n\r\n closeRemoveModal() {\r\n this.openRemoveConfirmationModal = false;\r\n this.selectedPassenger = null;\r\n }\r\n\r\n removePassengerFromGroup(passenger: Passenger) {\r\n const index = this.passengerGroup.passengerGroupPassengers.indexOf(passenger);\r\n this.passengerGroup.passengerGroupPassengers.splice(index, 1);\r\n this.closeRemoveModal();\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerGroupPassengers.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerGroupPassengers.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerGroupPassengers.vue?vue&type=template&id=9a7c40b8&scoped=true&\"\nimport script from \"./PassengerGroupPassengers.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerGroupPassengers.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PassengerGroupPassengers.vue?vue&type=style&index=0&id=9a7c40b8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9a7c40b8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$t('organization.authTenant.authTenants', 'Authentication tenants')))]),_c('v-spacer'),(_vm.isAdminUser)?_c('v-btn',{on:{\"click\":function($event){_vm.addTenantDialogVisible = true}}},[_vm._v(_vm._s(_vm.$t('organization.authTenant.add.button', 'Add tenant')))]):_vm._e()],1),_c('v-card-text',[_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-spacer'),_c('v-text-field',{attrs:{\"label\":\"Search\",\"append-icon\":\"search\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.organizationAuthTenants,\"search\":_vm.search,\"pagination\":_vm.pagination},on:{\"update:pagination\":function($event){_vm.pagination=$event}},scopedSlots:_vm._u([{key:\"items\",fn:function(props){return [_c('tr',_vm._l((_vm.headers),function(header){return _c('td',{key:header.text,class:[header.align ? 'text-xs-' + header.align : '']},[[_c('div',[_vm._v(\" \"+_vm._s(props.item[header.value])+\" \")])]],2)}),0)]}},{key:\"no-results\",fn:function(){return [_c('v-alert',{attrs:{\"value\":true,\"color\":\"warning\",\"icon\":\"warning\"}},[_vm._v(\" \"+_vm._s(_vm.$t('organization.authTenant.noAuthTenants', 'No tenants available.'))+\" \")])]},proxy:true}])})],1),_c('AddTenantDialog',{attrs:{\"organizationId\":_vm.organizationId,\"open\":_vm.addTenantDialogVisible},on:{\"close\":function($event){_vm.addTenantDialogVisible = false}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":\"800px\"},model:{value:(_vm.open),callback:function ($$v) {_vm.open=$$v},expression:\"open\"}},[_c('v-card',[_c('v-form',{ref:\"form\",model:{value:(_vm.authTenantIsValid),callback:function ($$v) {_vm.authTenantIsValid=$$v},expression:\"authTenantIsValid\"}},[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.$t(\"organization.authTenant.create.title\", \"New tenant\"))+\" \")]),_c('v-card-text',[_c('v-container',{attrs:{\"grid-list-lg\":\"\",\"fluid\":\"\",\"pa-2\":\"\"}},[_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm12\":\"\"}},[_c('v-text-field',{attrs:{\"label\":_vm.$t('organization.authTenant.name', 'Name') + '*',\"rules\":[_vm.rules.required]},model:{value:(_vm.newAuthTenant.name),callback:function ($$v) {_vm.$set(_vm.newAuthTenant, \"name\", $$v)},expression:\"newAuthTenant.name\"}})],1)],1),_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm12\":\"\"}},[_c('v-text-field',{attrs:{\"rules\":[_vm.rules.required],\"label\":_vm.$t('organization.authTenant.externalTenantId', 'Tenant ID') + '*'},model:{value:(_vm.newAuthTenant.externalTenantId),callback:function ($$v) {_vm.$set(_vm.newAuthTenant, \"externalTenantId\", $$v)},expression:\"newAuthTenant.externalTenantId\"}})],1)],1)],1)],1),_c('v-card-actions',[_c('v-btn',{on:{\"click\":_vm.closeEditor}},[_vm._v(\" \"+_vm._s(_vm.$t(\"generic.close\", \"Close\"))+\" \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"disabled\":!_vm.authTenantIsValid,\"color\":\"success\"},on:{\"click\":_vm.createAuthTenant}},[_vm._v(_vm._s(_vm.$t(\"generic.save\", \"Save\")))])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { AuthTenantTypeEnum } from \"@/models/AuthTenant\";\r\nimport { Organization } from \"@/models/Organization\";\r\nimport { IMovitInstance } from \"@/typings/timit\";\r\nimport { Vue, Prop, Component, Watch } from \"vue-property-decorator\";\r\nimport vuetifyToast from \"vuetify-toast\";\r\n\r\ninterface ICreateAuthTenant {\r\n externalTenantId: string;\r\n type: number;\r\n name: string; \r\n organizationId: string;\r\n}\r\n\r\n@Component({\r\n components: {},\r\n})\r\nexport default class AddTenantDialog extends Vue {\r\n authTenantIsValid: boolean = false;\r\n\r\n newAuthTenant: ICreateAuthTenant = {\r\n externalTenantId: \"\",\r\n type: AuthTenantTypeEnum.AzureAD,\r\n name: \"\",\r\n organizationId: \"\",\r\n };\r\n\r\n rules: any = {\r\n required: (val) =>\r\n !!val || this.$i18n.translate(\"validation.rules.required\", \"Required\")\r\n };\r\n\r\n instances: IMovitInstance[] = [];\r\n\r\n @Prop({ default: false }) open: boolean;\r\n @Prop({ default: null }) organizationId: string | null;\r\n\r\n @Watch(\"organizationId\", { immediate: true })\r\n async setOrganizationId() {\r\n this.newAuthTenant.organizationId = this.organizationId;\r\n }\r\n\r\n async createAuthTenant() {\r\n try {\r\n const result = await this.$store.dispatch(\r\n \"organization/createAuthTenant\",\r\n { data: this.newAuthTenant }\r\n );\r\n\r\n // const organization: Organization = this.$store.state.organization.organizations\r\n // .find(o => o.id === this.newAuthTenant.organizationId);\r\n\r\n // const newAuthTenant = organization.authTenants.find(d => d.id === result.data.id);\r\n\r\n // this.$store.commit(\"organization/addAuthTenant\", newAuthTenant);\r\n\r\n vuetifyToast.success(\r\n this.$i18n.translate(\r\n \"organization.authTenant.create.success\",\r\n \"Tenant added.\"\r\n )\r\n );\r\n this.closeEditor();\r\n } catch (error) {\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n \"organization.authTenant.create.error\",\r\n \"Adding tenant failed: {errorMessage}\",\r\n {\r\n errorMessage: error,\r\n }\r\n )\r\n );\r\n }\r\n }\r\n\r\n closeEditor() {\r\n this.emptyForm();\r\n this.$emit(\"close\");\r\n }\r\n\r\n emptyForm() {\r\n this.newAuthTenant.externalTenantId = \"\";\r\n this.newAuthTenant.type = AuthTenantTypeEnum.AzureAD;\r\n this.newAuthTenant.name = \"\";\r\n (this.$refs.form as any).resetValidation();\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddTenantDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddTenantDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AddTenantDialog.vue?vue&type=template&id=74a743c4&\"\nimport script from \"./AddTenantDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./AddTenantDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue} from 'vue-property-decorator';\r\nimport Destination from '../Passenger/models/Destination';\r\nimport { Organization } from '../../models/Organization';\r\nimport AddTenantDialog from '@/components/Organization/AddTenantDialog.vue';\r\nimport User from '../../models/User';\r\n\r\n@Component({\r\n components: {\r\n AddTenantDialog,\r\n }\r\n})\r\nexport default class OrganizationAuthTenantsPage extends Vue{\r\n /*tslint:disable max-line-length*/\r\n search: string = '';\r\n\r\n addTenantDialogVisible = false;\r\n\r\n pagination = {\r\n rowsPerPage: 10 // -1 for All,\r\n }\r\n \r\n get organizationId() {\r\n return this.$router.currentRoute.params.organizationId;\r\n }\r\n\r\n get organizationAuthTenants(): Destination[] {\r\n if (this.$store.state.organization.organizations) {\r\n return this.$store.state.organization.organizations\r\n .find(o => o.id === this.organizationId).authTenants;\r\n }\r\n return [];\r\n }\r\n\r\n get headers() {\r\n const headers = [\r\n { text: this.$t('organization.authTenant.name', 'Name'), value: 'name', align: 'left', sortable: true },\r\n { text: this.$t('organization.authTenant.externalTenantId', 'Tenant ID'), value: 'externalTenantId', align: 'left', sortable: true },\r\n { text: this.$t('organization.authTenant.type', 'Type'), value: 'typeName', align: 'left', sortable: true },\r\n // { text: this.$t('organization.authTenant.instances', 'Service providers'), value: 'movitInstanceName', align: 'left', sortable: true },\r\n ];\r\n return headers;\r\n }\r\n\r\n get isAdminUser() {\r\n const organization = this.$store.state.organization.organizations.find(o => o.id === this.organizationId) as Organization;\r\n const user = this.$store.state.user.me as User;\r\n return organization.administratorIds.some(id => id === user.id);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrganizationAuthTenantsPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrganizationAuthTenantsPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OrganizationAuthTenantsPage.vue?vue&type=template&id=9b8f9454&\"\nimport script from \"./OrganizationAuthTenantsPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./OrganizationAuthTenantsPage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"passenger-page\"},[_c('transportation-permission-editor',{attrs:{\"showTransportationPermissionEditor\":_vm.showTransportationPermissionEditor,\"passenger\":_vm.editedPassenger,\"passengerGroups\":_vm.passengerPassengerGroups},model:{value:(_vm.editedTransportationPermission),callback:function ($$v) {_vm.editedTransportationPermission=$$v},expression:\"editedTransportationPermission\"}}),(_vm.editedPassenger.inactive)?_c('v-alert',{attrs:{\"value\":true,\"color\":\"warning\"}},[_vm._v(\" Henkilö on passivoitu. \")]):_vm._e(),(_vm.editedPassenger.isArchivedOrDeleted)?_c('v-alert',{attrs:{\"value\":true,\"color\":\"error\"}},[_vm._v(\" Henkilöä on pyydetty poistettavaksi. \")]):_vm._e(),_c('v-container',{attrs:{\"pa-0\":\"\"}},[_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onBackToListClick($event)}}},[_vm._v(\" \"+_vm._s(_vm.$t('generic.back-to-list','Back to list'))+\" \")])],1),(!_vm.editedPassenger && _vm.isLoading)?_c('v-container',{attrs:{\"fluid\":\"\",\"pa-5\":\"\",\"text-xs-center\":\"\"}},[(_vm.isLoading)?_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":\"primary\",\"text-xs-center\":\"\",\"mx-auto\":\"\"}}):_vm._e()],1):_vm._e(),(_vm.editedPassenger && !_vm.isLoading)?_c('v-layout',{attrs:{\"row\":\"\"}},[(_vm.routePassengerId && !_vm.editedPassenger.id)?_c('v-container',{attrs:{\"fluid\":\"\",\"pa-5\":\"\",\"text-xs-center\":\"\"}},[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('passenger.passenger_not_found', 'The passenger entry was not found. It may have been moved or deleted.'))}})]):_c('v-form',{ref:\"form\",staticStyle:{\"width\":\"100%\"},attrs:{\"lazy-validation\":\"\"},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-card',{staticClass:\"passenger-editor-card\"},[_c('v-card-title',[(_vm.editedPassenger && _vm.editedPassenger.id)?_c('span',{staticClass:\"headline\"},[[_vm._v(_vm._s(_vm.editedPassenger.name))],(_vm.selectedDestination && _vm.editedPassenger.movitId)?_c('small',{staticStyle:{\"display\":\"block\"}},[_vm._v(_vm._s(_vm.selectedDestination.movitInstanceName)+\" #\"+_vm._s(_vm.editedPassenger.movitId)+\" \")]):_vm._e()],2):_c('span',{staticClass:\"headline\"},[_vm._v(\" \"+_vm._s(_vm.$t('passenger.editor.title.new', 'NEW PERSON'))+\" \")]),_c('v-spacer'),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.passengerPassengerGroups.length > 0),expression:\"passengerPassengerGroups.length > 0\"}],attrs:{\"id\":\"pgroups\"}},[_c('label',{attrs:{\"for\":\"pgroups\"}},[_vm._v(_vm._s(_vm.$t('organization.passengerGroup.plural')))]),_vm._l((_vm.passengerPassengerGroups),function(group){return _c('v-chip',{key:group.id},[_vm._v(\" \"+_vm._s(group.name)+\" \")])})],2),_c('v-spacer'),(_vm.allowUserInput)?_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"accent\",\"loading\":_vm.saving,\"disabled\":!_vm.valid || _vm.editedPassenger.inactive},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSaveClick($event)}}},[_vm._v(\" \"+_vm._s(_vm.$t('generic.save','Save'))+\" \")]):_vm._e()],1),_c('v-card-text',[_c('v-container',{attrs:{\"grid-list-xl\":\"\",\"pa-0\":\"\"}},[_c('v-layout',{attrs:{\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"sm12\":\"\",\"md8\":\"\"}},[_c('passenger-destination-picker',{attrs:{\"disabled\":_vm.hasDestination},on:{\"input\":_vm.setDestinationValues},model:{value:(_vm.editedPassenger.passengerDestinations[0]),callback:function ($$v) {_vm.$set(_vm.editedPassenger.passengerDestinations, 0, $$v)},expression:\"editedPassenger.passengerDestinations[0]\"}})],1),_c('v-flex',{attrs:{\"sm12\":\"\",\"md8\":\"\"}},[_c('secondary-destination-picker',{attrs:{\"mainDestination\":_vm.mainDestination,\"disabled\":!_vm.allowUserInput},model:{value:(_vm.editedPassenger.secondaryDestinationId),callback:function ($$v) {_vm.$set(_vm.editedPassenger, \"secondaryDestinationId\", $$v)},expression:\"editedPassenger.secondaryDestinationId\"}})],1),_c('v-flex',{attrs:{\"sm12\":\"\",\"md8\":\"\"}},[_c('passenger-details-editor',{ref:\"passengerEditor\",attrs:{\"passenger\":_vm.editedPassenger,\"allowUserInput\":_vm.allowUserInput,\"saving\":_vm.saving,\"deleting\":_vm.deleting},on:{\"activate\":_vm.onActivateClick,\"deactivate\":_vm.onDeactivateClick,\"delete\":_vm.onDeleteClick,\"save\":_vm.onSaveClick}})],1),_c('v-flex',{attrs:{\"sm12\":\"\",\"md4\":\"\"}},[_c('v-flex',{attrs:{\"row\":\"\",\"pt-0\":\"\"}},[_c('passenger-utilities',{attrs:{\"passenger\":_vm.editedPassenger,\"allowUserInput\":_vm.allowUserInput}})],1)],1),(_vm.userCanReadSchedules)?_c('v-flex',{attrs:{\"xs8\":\"\"}},[_c('schedules',{attrs:{\"canEditSchedules\":_vm.userCanEditSchedules,\"passengerId\":_vm.routePassengerId}})],1):_vm._e(),(_vm.isTransportationPermissionEnabled)?_c('v-flex',{attrs:{\"xs12\":\"\"}},[_c('transportation-permission-list',{attrs:{\"passenger\":_vm.editedPassenger,\"allowUserInput\":_vm.userCanEditTransportationPermissions,\"passengerGroupIds\":_vm.routePassenGerGroupIds},model:{value:(_vm.editedTransportationPermission),callback:function ($$v) {_vm.editedTransportationPermission=$$v},expression:\"editedTransportationPermission\"}})],1):_vm._e(),_c('v-flex',{attrs:{\"xs12\":\"\"}},[(_vm.editedPassenger.movitId)?_c('passenger-trip-list',{attrs:{\"passenger\":_vm.editedPassenger}}):_vm._e()],1)],1)],1)],1),_c('v-card-actions',[_c('v-spacer'),(_vm.allowUserInput)?_c('v-btn',{staticStyle:{\"margin-right\":\"0.5em\"},attrs:{\"dark\":\"\",\"color\":\"accent\",\"loading\":_vm.saving,\"disabled\":!_vm.valid || _vm.editedPassenger.inactive},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSaveClick($event)}}},[_vm._v(\" \"+_vm._s(_vm.$t('generic.save','Save'))+\" \")]):_vm._e()],1)],1)],1)],1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_c('div',{staticClass:\"subheading\"},[_vm._v(_vm._s(_vm.$t('passenger.prop.trips.label','Trips')))])]),_c('v-container',{attrs:{\"grid-list-lg\":\"\",\"fluid\":\"\",\"pa-2\":\"\",\"px-3\":\"\"}},[_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\",\"align-center\":\"\"}},[_c('v-flex',{attrs:{\"xs6\":\"\",\"sm4\":\"\",\"md3\":\"\",\"lg2\":\"\"}},[_c('DateTimePicker',{attrs:{\"dateLabel\":_vm.$t('generic.start'),\"date\":_vm.tripsStartDate,\"hideIcon\":true,\"datePickerTitle\":_vm.$t('generic.start'),\"allowWeekends\":true},on:{\"date-updated\":_vm.startDateUpdated}})],1),_c('v-flex',{attrs:{\"xs6\":\"\",\"sm4\":\"\",\"md3\":\"\",\"lg2\":\"\"}},[_c('DateTimePicker',{attrs:{\"dateLabel\":_vm.$t('generic.end'),\"date\":_vm.tripsEndDate,\"hideIcon\":true,\"datePickerTitle\":_vm.$t('generic.end'),\"allowWeekends\":true},on:{\"date-updated\":_vm.endDateUpdated}})],1),_c('v-flex',{attrs:{\"xs12\":\"\",\"sm4\":\"\",\"md3\":\"\",\"lg2\":\"\"}},[_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"primary\",\"disabled\":_vm.disableSearchTrips},on:{\"click\":_vm.onSearchTripsClick}},[_vm._v(\" \"+_vm._s(_vm.$t('passenger.prop.trips.search','Search trips'))+\" \")])],1)],1)],1),(_vm.passenger.movitId)?_c('v-data-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.tripsHaveBeenSearched),expression:\"tripsHaveBeenSearched\"}],attrs:{\"items\":_vm.sortedTrips,\"headers\":_vm.tripHeaders,\"loading\":_vm.loadingTrips,\"no-data-text\":_vm.loadingTrips ? _vm.$t('generic.loading') : _vm.$t('passenger.prop.trips.empty','Passenger does not have any trips'),\"rows-per-page-items\":[{'text': _vm.$t('generic.all', 'All'),'value': -1}, 100,50,10]},scopedSlots:_vm._u([{key:\"headers\",fn:function(props){return [_c('tr',[_c('th',{attrs:{\"align\":\"center\"}},[(_vm.selectAllTripsStatus === false)?_c('div',{on:{\"click\":function($event){return _vm.toggleAllPicked()}}},[_c('v-icon',[_vm._v(\"fas fa-square\")])],1):_vm._e(),(_vm.selectAllTripsStatus === true)?_c('div',{on:{\"click\":function($event){return _vm.toggleAllPicked()}}},[_c('v-icon',[_vm._v(\"fas fa-check-square\")])],1):_vm._e()]),_vm._l((props.headers),function(header){return _c('th',{key:header.text,class:[ 'column', header.align ? 'text-xs-' + header.align : '' ]},[(header.i18n)?[_vm._v(\" \"+_vm._s(_vm.$t(header.i18n, header.text))+\" \")]:[_vm._v(\" \"+_vm._s(header.text)+\" \")]],2)}),_c('th')],2)]}},{key:\"items\",fn:function(props){return [_c('tr',[_c('td',{attrs:{\"align\":\"center\"}},[(!props.item.cancelledAt)?_c('div',{on:{\"click\":function($event){return _vm.toggleItemPicked(props.item, !props.item.selectedForCancelling)}}},[(props.item.selectedForCancelling && !props.item.cancelledAt)?_c('div',[_c('v-icon',[_vm._v(\"far fa-check-square\")])],1):_vm._e(),(!props.item.selectedForCancelling && !props.item.cancelledAt)?_c('div',[_c('v-icon',[_vm._v(\"far fa-square\")])],1):_vm._e()]):_vm._e(),(props.item.cancelledAt)?_c('div'):_vm._e()]),_vm._l((_vm.tripHeaders),function(header){return _c('td',{key:header.text,class:[ header.align ? 'text-xs-' + header.align : '' ]},[(header.value === 'startDateTime' || header.value === 'endDateTime' || header.value === 'cancelledAt')?[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(props.item[header.value]),expression:\"props.item[header.value]\"}],staticClass:\"capitalize\"},[_vm._v(\" \"+_vm._s(_vm.$dateHelper.formatDateTimeWithShortWeekDayAndTime(props.item[header.value]))+\" \")])]:[_vm._v(_vm._s(props.item[header.value]))]],2)}),_c('td',{staticClass:\"text-xs-right px-0\"})],2)]}}],null,false,1721265746)}):_vm._e(),_c('v-card-actions',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.tripsHaveBeenSearched),expression:\"tripsHaveBeenSearched\"}]},[_c('v-spacer'),_c('v-dialog',{attrs:{\"persistent\":\"\",\"max-width\":\"290\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({attrs:{\"dark\":\"\",\"color\":\"warning\",\"disabled\":_vm.disableCancelTrips}},on),[_vm._v(\" \"+_vm._s(_vm.$t('passenger.prop.trips.cancel','Cancel trips'))+\" (\"+_vm._s(_vm.selectedTripsCount)+\") \")])]}}]),model:{value:(_vm.showCancelDialog),callback:function ($$v) {_vm.showCancelDialog=$$v},expression:\"showCancelDialog\"}},[_c('v-card',[_c('v-card-title',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$t('passenger.prop.trips.cancel','Cancel trips')))]),_c('v-card-text',[_c('v-form',{model:{value:(_vm.cancelreasonvalid),callback:function ($$v) {_vm.cancelreasonvalid=$$v},expression:\"cancelreasonvalid\"}},[_c('v-textarea',{attrs:{\"outline\":\"\",\"name\":\"cancelreason\",\"label\":_vm.$t('passenger.arrival_departure.cancellation.reasonlabel', 'Reason for cancellation'),\"rules\":_vm.cancelreasonrules,\"disabled\":_vm.passenger.inactive},model:{value:(_vm.cancelreason),callback:function ($$v) {_vm.cancelreason=$$v},expression:\"cancelreason\"}})],1),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('passenger.prop.trips.cancelAreYouSure','You are about to cancel {count} trips. Are you sure', { count: _vm.selectedTripsCount}))+\" \")])],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"grey darken-1\",\"flat\":\"\"},on:{\"click\":function($event){_vm.showCancelDialog = false}}},[_vm._v(_vm._s(_vm.$t('generic.back','Back')))]),_c('v-btn',{attrs:{\"disabled\":!_vm.cancelreasonvalid,\"color\":\"primary\",\"flat\":\"\"},on:{\"click\":_vm.onCancelTripsClick}},[_vm._v(_vm._s(_vm.$t('generic.yes','Yes')))])],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Watch, Vue, Prop } from \"vue-property-decorator\";\r\nimport Component from \"vue-class-component\";\r\nimport DateTimePicker from \"@/components/DatetimePicker.vue\";\r\nimport Passenger from \"../models/Passenger\";\r\nimport vuetifyToast from \"vuetify-toast\";\r\nimport { RolePermission } from \"@/models/Role\";\r\nimport PassengerDestination from \"@/components/Passenger/models/PassengerDestination\";\r\nimport Routes from \"../../../Routes\";\r\nimport Trip from \"../../../components/Passenger/models/Trip\";\r\n\r\n@Component({\r\n components: {\r\n DateTimePicker\r\n }\r\n})\r\nexport class PassengerTripList extends Vue {\r\n \r\n tripsStartDate: string = new Date().toISOString().substr(0, 10);\r\n tripsEndDate: string = new Date().toISOString().substr(0, 10);\r\n\r\n selectAllTripsStatus: boolean = false;\r\n tripsHaveBeenSearched: boolean = false;\r\n\r\n showCancelDialog: boolean = false;\r\n cancelreason: string = '';\r\n cancelreasonrules: any[] = [val => this.cancelReasonRequired(val)];\r\n cancelreasonvalid = false;\r\n\r\n @Prop({ default: null }) private passenger: Passenger;\r\n\r\n get userCanReadPassengers(): boolean {\r\n return this.$store.getters['auth/hasPassengerPermission']([RolePermission.ReadPassengers]);\r\n }\r\n\r\n get destinationId(): number {\r\n if (this.passenger && this.passenger.destinationIds.length > 0) {\r\n return this.passenger.destinationIds.find(d => d);\r\n }\r\n return 0;\r\n }\r\n\r\n get tripHeaders(): any[] {\r\n return [\r\n {\r\n text: this.$i18n.translate(\r\n \"passenger.prop.trips.startPlace\",\r\n \"Start place\"\r\n ),\r\n align: \"left\",\r\n sortable: false,\r\n value: \"startPlace\"\r\n },\r\n {\r\n text: this.$i18n.translate(\r\n \"passenger.prop.trips.endPlace\",\r\n \"End place\"\r\n ),\r\n align: \"left\",\r\n sortable: false,\r\n value: \"endPlace\"\r\n },\r\n {\r\n text: this.$i18n.translate(\r\n \"passenger.prop.trips.startTime\",\r\n \"Start time\"\r\n ),\r\n align: \"left\",\r\n sortable: false,\r\n value: \"startDateTime\"\r\n },\r\n {\r\n text: this.$i18n.translate(\"passenger.prop.trips.endTime\", \"End time\"),\r\n align: \"left\",\r\n sortable: false,\r\n value: \"endDateTime\"\r\n },\r\n {\r\n text: this.$i18n.translate(\r\n \"passenger.prop.trips.cancelledAt\",\r\n \"Cancelled at\"\r\n ),\r\n align: \"left\",\r\n sortable: false,\r\n value: \"cancelledAt\"\r\n }\r\n ];\r\n }\r\n\r\n get disableSearchTrips() {\r\n if (this.loadingTrips) {\r\n return true;\r\n }\r\n if (!this.passenger.movitId) {\r\n return true;\r\n }\r\n if (!this.userCanReadPassengers) {\r\n return true;\r\n }\r\n if (this.passenger.inactive) {\r\n return true;\r\n }\r\n if (!this.destinationId) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n get disableCancelTrips() {\r\n if (this.disableSearchTrips) {\r\n return true;\r\n }\r\n if (this.selectedTripsCount === 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n get loadingTrips(): boolean {\r\n return this.$store.state.passenger.pending.getPassengerTrips;\r\n }\r\n\r\n get sortedTrips(): Trip[] {\r\n const tripArray = this.$store.state.passenger.trips;\r\n\r\n tripArray.sort((a, b) => {\r\n const dateA = new Date(a.startDateTime ? a.startDateTime : a.endDateTime);\r\n const dateB = new Date(b.startDateTime ? b.startDateTime : b.endDateTime);\r\n\r\n return dateA <= dateB;\r\n });\r\n\r\n return tripArray;\r\n }\r\n\r\n get selectedTripsCount() {\r\n const selection = this.$store.state.passenger.trips.filter(\r\n t => t.selectedForCancelling\r\n );\r\n return selection.length;\r\n }\r\n\r\n startDateUpdated(value) {\r\n this.tripsStartDate = value;\r\n if (value > this.tripsEndDate) {\r\n this.tripsEndDate = value;\r\n }\r\n const maxEnd = new Date(value);\r\n maxEnd.setMonth(maxEnd.getMonth() + 1);\r\n if (new Date(this.tripsEndDate).getTime() > maxEnd.getTime()) {\r\n this.tripsEndDate = maxEnd.toISOString().substr(0, 10);\r\n }\r\n }\r\n\r\n endDateUpdated(value) {\r\n this.tripsEndDate = value;\r\n if (value < this.tripsStartDate) {\r\n this.tripsStartDate = value;\r\n }\r\n const minStart = new Date(value);\r\n minStart.setMonth(minStart.getMonth() - 1);\r\n if (new Date(this.tripsStartDate).getTime() < minStart.getTime()) {\r\n this.tripsStartDate = minStart.toISOString().substr(0, 10);\r\n }\r\n }\r\n\r\n onSearchTripsClick() {\r\n this.getPassengerTrips();\r\n }\r\n\r\n async getPassengerTrips() {\r\n if (!this.passenger.movitId || !this.destinationId) {\r\n return;\r\n }\r\n\r\n await this.$store.dispatch(\"passenger/getPassengerTrips\", {\r\n params: {\r\n passengerId: this.passenger.id,\r\n startDate: this.tripsStartDate,\r\n endDate: this.tripsEndDate,\r\n destinationId: !!this.destinationId ? this.destinationId : 0,\r\n }\r\n });\r\n this.tripsHaveBeenSearched = true;\r\n this.clearSelections();\r\n }\r\n\r\n forceSelectionForTrips(value) {\r\n this.sortedTrips.forEach(t => {\r\n if (!t.cancelledAt) {\r\n t.selectedForCancelling = value;\r\n }\r\n });\r\n }\r\n\r\n clearSelections() {\r\n this.selectAllTripsStatus = false;\r\n this.sortedTrips.forEach(t => (t.selectedForCancelling = false));\r\n }\r\n\r\n toggleItemPicked(trip: Trip, value) {\r\n trip.selectedForCancelling = value;\r\n const theTrip = this.sortedTrips.find(t => t.id === trip.id);\r\n }\r\n\r\n toggleAllPicked() {\r\n if (this.selectAllTripsStatus === true) {\r\n this.forceSelectionForTrips(false);\r\n this.selectAllTripsStatus = false;\r\n } else {\r\n this.forceSelectionForTrips(true);\r\n this.selectAllTripsStatus = true;\r\n }\r\n }\r\n\r\n cancelReasonRequired(val: string) {\r\n return !!val || Vue.i18n.translate('validation.rules.required', 'Required');\r\n }\r\n\r\n async onCancelTripsClick() {\r\n const toBeCancelled = this.sortedTrips.filter(\r\n t => t.selectedForCancelling === true\r\n );\r\n const cancellation = {\r\n reason: this.cancelreason,\r\n trips: toBeCancelled\r\n };\r\n await this.$store\r\n .dispatch(\"passenger/cancelTrips\", {\r\n params: {\r\n passengerId: this.passenger.id\r\n },\r\n data: cancellation\r\n })\r\n .then(result =>\r\n this.getPassengerTrips()\r\n .finally\r\n // this.getPassengerTrips()\r\n ()\r\n );\r\n\r\n this.showCancelDialog = false;\r\n }\r\n\r\n mounted() {\r\n this.tripsHaveBeenSearched = false;\r\n }\r\n}\r\n\r\nexport default PassengerTripList;\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerTripList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerTripList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerTripList.vue?vue&type=template&id=782e9ec1&\"\nimport script from \"./PassengerTripList.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerTripList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","class PassengerDestination {\r\n passengerId: number;\r\n destinationId: number;\r\n\r\n constructor(passengerId: number, destinationId: number) {\r\n this.passengerId = passengerId;\r\n this.destinationId = destinationId;\r\n }\r\n}\r\n\r\nexport default PassengerDestination;\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_c('div',{staticClass:\"subheading\"},[_vm._v(\" \"+_vm._s(_vm.$t('passenger.prop.transportationPermissions.label','Transportation permissions'))+\" \")])]),(_vm.passengerInfoIsBeingUpdated)?_c('v-alert',{attrs:{\"value\":true,\"color\":\"primary\"}},[_vm._v(\"Henkilötietoja tarkastetaan, lisää kuljetuspäätös myöhemmin.\")]):_vm._e(),(!_vm.passengerInfoIsBeingUpdated)?_c('v-data-table',{attrs:{\"items\":_vm.transportationPermissions,\"headers\":_vm.transportationPermissionHeaders,\"loading\":_vm.loading,\"no-data-text\":_vm.loading ? 'Ladataan ...' : _vm.$t('passenger.prop.transportationPermissions.empty','Passenger does not have any transportation permissions'),\"hide-actions\":\"\"},scopedSlots:_vm._u([{key:\"headers\",fn:function(props){return [_c('tr',[_vm._l((props.headers),function(header){return _c('th',{key:header.text,class:[ 'column', header.align ? 'text-xs-' + header.align : '' ]},[(header.i18n)?[_vm._v(\" \"+_vm._s(_vm.$t(header.i18n, header.text))+\" \")]:[_vm._v(\" \"+_vm._s(header.text)+\" \")]],2)}),_c('th')],2)]}},{key:\"items\",fn:function(props){return [_c('tr',[_vm._l((_vm.transportationPermissionHeaders),function(header){return _c('td',{key:header.text,class:[ header.align ? 'text-xs-' + header.align : '' ]},[(header.value === 'startDateFormatted' || header.value === 'endDateFormatted')?[_c('div',{staticClass:\"capitalize\"},[_vm._v(_vm._s(_vm.$dateHelper.formatDateWithShortWeekDay(props.item[header.value])))])]:(header.value === 'quotaTime')?[_vm._v(\" \"+_vm._s(_vm.getQuotaTime(props.item[header.value]))+\" \")]:[_vm._v(\" \"+_vm._s(props.item[header.value])+\" \")]],2)}),_c('td',{staticClass:\"text-xs-right px-0\"},[_c('v-btn',{staticClass:\"mx-2\",attrs:{\"icon\":\"\",\"disabled\":_vm.isEditingDisabled(props.item)},on:{\"click\":function($event){return _vm.editPermission(props.item)}}},[_c('v-icon',{attrs:{\"color\":\"teal\"}},[_vm._v(\"edit\")])],1)],1)],2)]}}],null,false,4218373505)}):_vm._e(),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"flat\":\"\",\"dark\":\"\",\"color\":\"primary\",\"disabled\":_vm.loading || _vm.passengerInfoIsBeingUpdated || !_vm.allowUserInput || _vm.passenger.inactive},on:{\"click\":_vm.addPermission}},[_vm._v(\" \"+_vm._s(_vm.$t('passenger.prop.transportationPermissions.add','Add transportation permission'))+\" \")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Watch, Vue } from 'vue-property-decorator';\r\nimport moment from 'moment';\r\nimport Passenger from '../models/Passenger';\r\nimport TransportationPermission, { TransportationPermissionSourceEnum } from '../models/TransportationPermission';\r\nimport TransportationPermissionInfo from '../models/TransportationPermissionInfo';\r\n\r\n@Component({\r\n components: {}\r\n})\r\nexport default class TransportationPermissionList extends Vue {\r\n permissionSource = TransportationPermissionSourceEnum;\r\n \r\n @Prop({ required: true }) private passenger!: Passenger;\r\n @Prop({ default: false }) private allowUserInput!: boolean;\r\n @Prop({ default: () => [] }) private passengerGroupIds!: number[];\r\n\r\n get loading(): boolean {\r\n return this.$store.state.passenger.pending.getPassengerTransportationPermissionInfo;\r\n }\r\n\r\n get passengerInfoIsBeingUpdated() {\r\n const hasMovitId = this.passenger.movitId ? true : false;\r\n const hasOrganizationId = this.passenger.organizationId ? true : false;\r\n const hasPermissions = this.transportationPermissions.length > 0;\r\n return !hasPermissions && !hasMovitId && !hasOrganizationId;\r\n }\r\n\r\n get transportationPermissions(): TransportationPermission[] {\r\n \r\n const transportationPermissionInfo: TransportationPermissionInfo = this.$store.state.passenger.transportationPermissionInfos\r\n .find((tpi: TransportationPermissionInfo) => tpi.timitPassengerId === this.passenger.id);\r\n \r\n if (transportationPermissionInfo) {\r\n const permissions = transportationPermissionInfo.permissions;\r\n return permissions.sort((a, b) => {\r\n if (new Date(a.startDate).getTime() < new Date(b.startDate).getTime()) {\r\n return -1;\r\n }\r\n if (new Date(a.startDate).getTime() > new Date(b.startDate).getTime()) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n return [];\r\n }\r\n \r\n get transportationPermissionHeaders(): any[]{\r\n return [\r\n { i18n: 'transportationPermission.startDate', text: 'Starts from', align: 'left', sortable: true, value: 'startDateFormatted' },\r\n { i18n: 'transportationPermission.endDate', text: 'Valid through', align: 'left', sortable: true, value: 'endDateFormatted' },\r\n { i18n: 'transportationPermission.type', text: 'Type', align: 'left', sortable: true, value: 'name' },\r\n { i18n: 'transportationPermission.quota', text: 'Transportation quota', align: 'left', sortable: true, value: 'initialQuota' },\r\n { i18n: 'transportationPermission.expressQuota', text: 'Express quota', align: 'left', sortable: true, value: 'initialExpressQuota' },\r\n { i18n: 'transportationPermission.quotaTime', text: 'Quota timeframe', align: 'left', sortable: true, value: 'quotaTime' },\r\n // { text: 'Jäljellä', align: 'left', sortable: true, value: 'remainingQuotaFormatted' },\r\n { i18n: 'transportationPermission.note', text: 'Reason', align: 'left', sortable: true, value: 'note' },\r\n ];\r\n }\r\n\r\n get organizationSavePtpAsDraftByDefault() {\r\n return this.$store.getters['organization/organizationSavePtpAsDraftByDefault'](this.passenger.organizationId);\r\n }\r\n\r\n get organizationPtpDeductiblePaymentBillableAsDefault() {\r\n // tslint:disable-next-line:max-line-length\r\n return this.$store.getters['organization/organizationPtpDeductiblePaymentBillableAsDefault'](this.passenger.organizationId);\r\n }\r\n\r\n getQuotaTime(val: number): string {\r\n switch (val) {\r\n case 0:\r\n return this.$i18n.translate('transportationPermission.quotaTimes.month', 'A Month');\r\n break;\r\n case 1:\r\n return this.$i18n.translate('transportationPermission.quotaTimes.day', 'A Day');\r\n break;\r\n case 2:\r\n return this.$i18n.translate('transportationPermission.quotaTimes.week', 'A Week');\r\n break;\r\n case 3:\r\n return this.$i18n.translate('transportationPermission.quotaTimes.year', 'A Year');\r\n break;\r\n case 4:\r\n return this.$i18n.translate('transportationPermission.quotaTimes.fourMonths', 'Four months');\r\n break;\r\n case 5:\r\n return this.$i18n.translate('transportationPermission.quotaTimes.threeMonths', 'Three months');\r\n break;\r\n default:\r\n return this.$i18n.translate('transportationPermission.quotaTimes.undefined', 'Not defined!');\r\n } \r\n }\r\n\r\n addPermission(){\r\n // passenger movit id\r\n const passengerId = this.passenger.movitId;\r\n const startDate = moment().add(1, \"months\").startOf(\"month\").format(\"YYYY-MM-DD\");\r\n const endDate = moment().add(1, \"months\").endOf(\"month\").format(\"YYYY-MM-DD\");\r\n const name = \"\";\r\n const tripDestinations = -1;\r\n const isDraft = this.organizationSavePtpAsDraftByDefault;\r\n const deductiblePayment = this.organizationPtpDeductiblePaymentBillableAsDefault ? 1 : 0;\r\n const editedTransportationPermission = \r\n new TransportationPermission({passengerId, startDate, endDate, name,\r\n tripDestinations, isDraft, deductiblePayment});\r\n this.$emit('input', editedTransportationPermission); \r\n }\r\n\r\n editPermission(item){\r\n this.$emit('input', TransportationPermission.CopyFrom(item));\r\n }\r\n\r\n isEditingDisabled(item: TransportationPermission) {\r\n if (!this.allowUserInput || this.passenger.inactive) {\r\n return true;\r\n }\r\n // 02.01.2023 Temporary solution to prevent creating duplicates when movit returns timit ptps that don't match.\r\n if (item.id === null) {\r\n return true;\r\n }\r\n\r\n return item.source !== TransportationPermissionSourceEnum.Timit;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TransportationPermissionList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TransportationPermissionList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TransportationPermissionList.vue?vue&type=template&id=2a6503ee&\"\nimport script from \"./TransportationPermissionList.vue?vue&type=script&lang=ts&\"\nexport * from \"./TransportationPermissionList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-autocomplete',{attrs:{\"items\":_vm.destinations,\"hint\":!!_vm.selected ? _vm.selected.movitInstanceName : '',\"disabled\":_vm.disabled,\"label\":_vm.$t('passenger.prop.destinations.main'),\"return-object\":\"\",\"item-text\":\"alias\",\"persistent-hint\":\"\"},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [(item.alias)?_c('span',{staticClass:\"name\"},[_vm._v(_vm._s(item.alias))]):_c('span',{staticClass:\"name\"},[_vm._v(_vm._s(item.streetAdress))])]}}]),model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport {Vue, Prop, Watch, Component} from 'vue-property-decorator'\r\nimport Destination from '../models/Destination';\r\nimport PassengerDestination from '../models/PassengerDestination';\r\n@Component({})\r\nexport default class PassengerDestinationPicker extends Vue {\r\n \r\n selected: Destination | null = null;\r\n\r\n @Prop({default: null}) private value: PassengerDestination;\r\n @Prop({ default: false }) private disabled: boolean;\r\n \r\n @Watch('value', { immediate: true })\r\n valueChanged() {\r\n if (this.value) {\r\n const target = this.destinations.find(d => d.id === this.value.destinationId);\r\n this.selected = target;\r\n }\r\n }\r\n\r\n @Watch('selected')\r\n selectItem() {\r\n const toParent = new PassengerDestination(0, this.selected.id);\r\n this.$emit('input', toParent)\r\n }\r\n\r\n get destinations(): Destination[] {\r\n return this.$store.state.destination.destinations as Destination[];\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerDestinationPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerDestinationPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerDestinationPicker.vue?vue&type=template&id=54dac4e3&\"\nimport script from \"./PassengerDestinationPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerDestinationPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-autocomplete',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.destinations.length > 0),expression:\"destinations.length > 0\"}],attrs:{\"value\":_vm.secondaryDestination,\"items\":_vm.destinations,\"hint\":_vm.secondaryDestination ? _vm.secondaryDestination.movitInstanceName : '',\"disabled\":_vm.disabled,\"label\":_vm.$t('passenger.prop.destinations.secondary', 'Toissijainen kohde'),\"return-object\":\"\",\"item-text\":\"alias\",\"persistent-hint\":\"\",\"clearable\":\"\"},on:{\"input\":_vm.selectDestination,\"click:clear\":_vm.clearSelection},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [(item.alias)?_c('span',{staticClass:\"name\"},[_vm._v(_vm._s(item.alias))]):_c('span',{staticClass:\"name\"},[_vm._v(_vm._s(item.streetAdress))])]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport {Vue, Prop, Watch, Component} from 'vue-property-decorator'\r\nimport Destination from '../models/Destination';\r\nimport PassengerDestination from '../models/PassengerDestination';\r\n\r\n@Component({})\r\nexport default class SecondaryDestinationPicker extends Vue {\r\n\r\n secondaryDestinationId: number | undefined | null = null;\r\n\r\n @Prop({default: null}) private value: number | undefined | null;\r\n @Prop({ default: null }) private mainDestination: PassengerDestination;\r\n @Prop({ default: false }) private disabled: boolean;\r\n \r\n @Watch('value', { immediate: true }) onValueChanged() {\r\n this.secondaryDestinationId = this.value;\r\n }\r\n\r\n get destinations(): Destination[] {\r\n const destinations: Destination[] = this.$store.state.destination.destinations;\r\n // tslint:disable-next-line:max-line-length\r\n const mainDestination = destinations.find(d => !!this.mainDestination && d.id === this.mainDestination.destinationId);\r\n \r\n if (!mainDestination) {\r\n return [];\r\n }\r\n\r\n return destinations\r\n .filter(d => d.movitInstanceId === mainDestination.movitInstanceId && d.id !== mainDestination.id);\r\n }\r\n\r\n get secondaryDestination() {\r\n if (!this.secondaryDestinationId) {\r\n return null;\r\n }\r\n return this.destinations.find(d => d.id === this.secondaryDestinationId) || null;\r\n }\r\n\r\n selectDestination(destination: Destination) {\r\n if (!destination) {\r\n this.$emit('input', null);\r\n return;\r\n }\r\n this.secondaryDestinationId = destination.id;\r\n this.$emit('input', this.secondaryDestinationId);\r\n }\r\n\r\n clearSelection() {\r\n this.secondaryDestinationId = null;\r\n // this.$emit('input', this.secondaryDestinationId);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SecondaryDestinationPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SecondaryDestinationPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SecondaryDestinationPicker.vue?vue&type=template&id=40d894ae&\"\nimport script from \"./SecondaryDestinationPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./SecondaryDestinationPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"subheading\"},[_vm._v(_vm._s(_vm.$t('schedules.title', 'Schedules')))]),_c('v-spacer'),(!_vm.loading && _vm.schedules.length === 0)?_c('span',{staticClass:\"body-1\"},[_vm._v(_vm._s(_vm.$t('schedules.noSchedulesInfo', 'No schedules')))]):_vm._e(),(_vm.loading)?_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":\"primary\"}}):_vm._e(),_c('v-spacer'),(_vm.canEditSchedules)?_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.newSchedule}},[_vm._v(_vm._s(_vm.$t('schedules.createNewSchedule', 'Create a new schedule')))]):_vm._e()],1),(_vm.loading || _vm.error || _vm.schedules.length > 0)?_c('v-card-text',[(!_vm.loading && !_vm.error && _vm.schedules.length > 0)?_c('v-window',{attrs:{\"height\":\"300\"},model:{value:(_vm.scheduleIndex),callback:function ($$v) {_vm.scheduleIndex=$$v},expression:\"scheduleIndex\"}},_vm._l((_vm.schedules),function(schedule,index){return _c('v-window-item',{key:schedule.id,attrs:{\"value\":index}},[_c('schedule-editor',{attrs:{\"schedule\":schedule,\"canEditSchedule\":_vm.canEditSchedules},on:{\"save\":_vm.handleSavedSchedule,\"create\":_vm.handleCreatedSchedule}})],1)}),1):_vm._e(),(_vm.error)?_c('v-alert',{attrs:{\"type\":\"error\"}},[_vm._v(_vm._s(_vm.error))]):_vm._e()],1):_vm._e(),(_vm.schedules.length > 0)?_c('v-card-actions',{staticClass:\"justify-space-between\"},[_c('v-btn',{attrs:{\"flat\":\"\"},on:{\"click\":_vm.previous}},[_c('v-icon',[_vm._v(\"chevron_left\")])],1),_c('v-item-group',{staticClass:\"text-xs-center\",attrs:{\"mandatory\":\"\"},model:{value:(_vm.scheduleIndex),callback:function ($$v) {_vm.scheduleIndex=$$v},expression:\"scheduleIndex\"}},_vm._l((_vm.schedules),function(schedule,index){return _c('v-item',{key:(\"btn-\" + index),scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar active = ref.active;\nvar toggle = ref.toggle;\nreturn _c('v-btn',{attrs:{\"input-value\":active,\"icon\":\"\"},on:{\"click\":toggle}},[_c('v-icon',{attrs:{\"color\":schedule.isEdited ? 'accent' : 'primary'}},[_vm._v(\"fiber_manual_record\")])],1)}}],null,true)})}),1),_c('v-btn',{attrs:{\"flat\":\"\"},on:{\"click\":_vm.next}},[_c('v-icon',[_vm._v(\"chevron_right\")])],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { ScheduleItemDirectionEnum } from '@/components/Schedule/enums';\r\nimport { IScheduleItem } from '@/typings/timit';\r\n\r\nexport default class ScheduleItem implements IScheduleItem {\r\n id: number;\r\n scheduleId: number;\r\n dayOfWeek: number;\r\n direction: ScheduleItemDirectionEnum;\r\n time: number;\r\n\r\n private originalTime: number;\r\n\r\n constructor(options) {\r\n this.id = options && options.id ? options.id : 0;\r\n this.scheduleId = options && options.scheduleId ? options.scheduleId : 0;\r\n this.dayOfWeek = options && options.dayOfWeek ? options.dayOfWeek : 0;\r\n this.direction = options && options.direction ? options.direction : ScheduleItemDirectionEnum.Start;\r\n this.time = options && options.time ? options.time : null;\r\n this.originalTime = this.time;\r\n }\r\n\r\n get isEdited() {\r\n return this.originalTime !== this.time && !(this.originalTime === null && this.time === undefined);\r\n }\r\n\r\n}\r\n","/*tslint:disable:max-line-length*/\r\nimport { ISchedule, IScheduleItem } from \"@/typings/timit\";\r\nimport moment from 'moment';\r\nimport ScheduleItem from './ScheduleItem';\r\n\r\nexport default class Schedule implements ISchedule {\r\n id: number;\r\n passengerId: number;\r\n name: string;\r\n startDate: Date | string;\r\n endDate: Date | string;\r\n schedulesExternallyEditable: boolean;\r\n scheduleItems: ScheduleItem[];\r\n\r\n // Editing detection\r\n private originalName: string;\r\n private originalStartDate: Date | string;\r\n private originalEndDate: Date | string;\r\n private originalSchedulesExternallyEditable: boolean;\r\n\r\n constructor(options) {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n\r\n this.id = options && options.id ? options.id : 0;\r\n\r\n this.passengerId = options && options.passengerId ? options.passengerId : 0;\r\n\r\n this.name = options && options.name ? options.name : '';\r\n this.originalName = this.name;\r\n\r\n this.startDate = options && options.startDate \r\n ? moment(options.startDate).startOf('day').format('YYYY-MM-DD') \r\n : moment(today).startOf('day').format('YYYY-MM-DD');\r\n\r\n this.originalStartDate = this.startDate;\r\n\r\n this.endDate = options && options.endDate \r\n ? moment(options.endDate).startOf('day').format('YYYY-MM-DD') \r\n : moment(new Date(today).setDate(today.getDate() + 1)).startOf('day').format('YYYY-MM-DD');\r\n\r\n this.originalEndDate = this.endDate;\r\n\r\n this.scheduleItems = options && options.scheduleItems \r\n ? (options.scheduleItems as IScheduleItem[]).map(si => new ScheduleItem(si)) \r\n : [];\r\n\r\n this.schedulesExternallyEditable = options && options.schedulesExternallyEditable ? options.schedulesExternallyEditable : false;\r\n this.originalSchedulesExternallyEditable = this.schedulesExternallyEditable;\r\n }\r\n\r\n get startDateYMD() {\r\n return moment(this.startDate).format('YYYY-MM-DD');\r\n }\r\n\r\n set startDateYMD(val) {\r\n this.startDate = moment(val).startOf('day').format('YYYY-MM-DD');\r\n }\r\n\r\n get endDateYMD() {\r\n return moment(this.endDate).format('YYYY-MM-DD');\r\n }\r\n\r\n set endDateYMD(val) {\r\n this.endDate = moment(val).startOf('day').format('YYYY-MM-DD');\r\n }\r\n\r\n get isExpired() {\r\n const today = moment().startOf('day').format('YYYY-MM-DD');\r\n return moment(today).isAfter(this.endDate);\r\n }\r\n\r\n public static fromApi(apiSchedule: ISchedule) {\r\n return new Schedule(apiSchedule);\r\n }\r\n\r\n get isEdited() {\r\n if (this.id === 0) {\r\n return true;\r\n }\r\n\r\n if (this.originalName !== this.name) {\r\n return true;\r\n }\r\n\r\n if (this.originalStartDate !== this.startDate) {\r\n return true;\r\n }\r\n if (this.originalEndDate !== this.endDate) {\r\n return true;\r\n }\r\n\r\n if (this.originalSchedulesExternallyEditable !== this.schedulesExternallyEditable) {\r\n return true;\r\n }\r\n \r\n return this.scheduleItems.some(si => si.isEdited);\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-text',[_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"grow\":\"\"}},[_c('v-text-field',{attrs:{\"disabled\":!_vm.canEditSchedule,\"label\":_vm.$t('schedules.name')},model:{value:(_vm.schedule.name),callback:function ($$v) {_vm.$set(_vm.schedule, \"name\", $$v)},expression:\"schedule.name\"}})],1),_c('v-flex',{attrs:{\"shrink\":\"\"}},[_c('date-time-picker',{attrs:{\"dateLabel\":_vm.$t('transportationPermission.startDate', 'Starts from'),\"date\":_vm.schedule.startDateYMD,\"hideIcon\":true,\"allowWeekends\":true,\"disabled\":!_vm.canEditSchedule,\"datePickerTitle\":_vm.$t('transportationPermission.startDate', 'Starts from')},on:{\"date-updated\":function (val) { return (_vm.schedule.startDateYMD = val); }}})],1),_c('v-flex',{attrs:{\"shrink\":\"\"}},[_c('date-time-picker',{attrs:{\"dateLabel\":_vm.$t('transportationPermission.endDate', 'Valid through'),\"date\":_vm.schedule.endDateYMD,\"min\":_vm.schedule.startDateYMD,\"hideIcon\":true,\"disabled\":!_vm.canEditSchedule,\"allowWeekends\":true,\"datePickerTitle\":_vm.$t('transportationPermission.endDate', 'Valid through')},on:{\"date-updated\":function (val) { return (_vm.schedule.endDate = val); }}})],1)],1),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.items,\"hide-actions\":\"\"},scopedSlots:_vm._u([{key:\"header\",fn:function(props){return _vm._l((props.headers),function(header,key){return _c('th',{key:key},[_vm._v(_vm._s(header.text))])})}},{key:\"items\",fn:function(props){return _vm._l((props.item),function(prop,key){return _c('td',{key:key,staticStyle:{\"padding\":\"1px\"}},[_c('time-picker',{staticClass:\"time-picker\",attrs:{\"disabled\":_vm.disableTimePicker,\"full-width\":\"\",\"outline\":\"\",\"hide-details\":\"\",\"single-line\":\"\"},model:{value:(prop.time),callback:function ($$v) {_vm.$set(prop, \"time\", $$v)},expression:\"prop.time\"}})],1)})}}])})],1),_c('v-card-actions',[_c('v-checkbox',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.canEditSchedule),expression:\"canEditSchedule\"}],attrs:{\"label\":_vm.$t('schedules.isExternallyEditable', 'Voi muokata ulkoisesta järjestelmästä')},model:{value:(_vm.schedule.schedulesExternallyEditable),callback:function ($$v) {_vm.$set(_vm.schedule, \"schedulesExternallyEditable\", $$v)},expression:\"schedule.schedulesExternallyEditable\"}}),_c('v-spacer'),_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.canSaveSchedule),expression:\"canSaveSchedule\"}],attrs:{\"dark\":\"\",\"color\":\"accent\",\"loading\":_vm.loading,\"disabled\":_vm.loading},on:{\"click\":_vm.save}},[_vm._v(\" \"+_vm._s(_vm.$t('generic.save', 'Save'))+\" \")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\r\nimport moment from 'moment';\r\n\r\nVue.filter('time', (date: Date | string) => {\r\n if (!date) {\r\n return '';\r\n }\r\n if (typeof date === 'number') {\r\n const minutes = date;\r\n date = new Date();\r\n date.setHours(0, minutes, 0, 0);\r\n }\r\n return moment(date).format('HH:mm');\r\n});\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-text-field',_vm._b({on:{\"keydown\":_vm.validateInput},model:{value:(_vm.formattedTime),callback:function ($$v) {_vm.formattedTime=$$v},expression:\"formattedTime\"}},'v-text-field',_vm.$attrs,false))}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class TimePicker extends Vue {\r\n formatted: string | null = null;\r\n hasError: boolean = false;\r\n lastEmitted: number | null | undefined = null;\r\n\r\n @Prop() private value!: number | null;\r\n @Prop({ default: undefined }) from: number | undefined;\r\n\r\n get formattedTime() {\r\n if (this.formatted) {\r\n return this.formatted;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n set formattedTime(time: string) {\r\n this.formatted = this.formatTime(time);\r\n }\r\n\r\n @Watch('value', { immediate: true }) onValueChange(newVal: number, prevVal: number) {\r\n if (!isNaN(Number(this.value)) && this.value !== null && newVal !== this.lastEmitted) {\r\n // Set default times, adding 0 if numeric value under 10\r\n let minutesFromMidnight = this.value;\r\n if (minutesFromMidnight > 1440) {\r\n minutesFromMidnight = minutesFromMidnight % 1440;\r\n }\r\n const hoursNum = Math.floor(minutesFromMidnight / 60);\r\n const hours = hoursNum < 10 ? '0' + hoursNum : hoursNum + '';\r\n const minutesNum = this.value % 60;\r\n const minutes = minutesNum < 10 ? '0' + minutesNum : minutesNum + '';\r\n\r\n this.formatted = this.formatTime(`${hours}:${minutes}`);\r\n }\r\n if (newVal === null) {\r\n this.formatted = '';\r\n }\r\n }\r\n\r\n @Watch('formatted')onFormattedChange(val: any) {\r\n let emitValue;\r\n if (!!val) {\r\n const timeSplit = this.formattedTime.split(':');\r\n const hours = Number(timeSplit[0]);\r\n const minutes = Number(timeSplit[1]);\r\n let timeValue = (hours * 60) + minutes;\r\n\r\n if (this.from && this.from > timeValue) {\r\n timeValue += 1440;\r\n }\r\n emitValue = this.hasError ? NaN : timeValue;\r\n // if (this.value && this.value > 1440) {\r\n // emitValue = this.value;\r\n // }\r\n }\r\n this.lastEmitted = emitValue;\r\n this.$emit('input', emitValue);\r\n }\r\n\r\n validateInput(e: KeyboardEvent) {\r\n const acceptedChars = [\r\n /\\d/, /Backspace/, /Delete/, /ArrowLeft/, /ArrowRight/, /Shift/,\r\n /Control/, /ArrowUp/, /ArrowDown/, /Alt/, /Home/, /\\cA/, /Tab/, /\\t/,\r\n ];\r\n\r\n const modifierPressed = e.ctrlKey;\r\n const acceptedCommands = ['a', 'A', 'c', 'C', 'V', 'v', 'Z', 'z', 'x', 'X'];\r\n const allowedCommand = modifierPressed && acceptedCommands.includes(e.key);\r\n\r\n const selObj = document.getSelection();\r\n const selection = selObj ? selObj.toString() : '';\r\n const noNumbersOrLetters = acceptedChars.slice(1, acceptedChars.length - 1);\r\n \r\n // Only accept numbers and control characters\r\n if (!this.isAcceptedChar(e.key, acceptedChars) && !allowedCommand) {\r\n e.preventDefault();\r\n return;\r\n }\r\n // Input cannot exceed 5 characters hh:mm\r\n if (this.formatted && this.formatted.length >= 5) {\r\n // Do not accept number input if nothing is selected\r\n if (!selection) {\r\n if (!this.isAcceptedChar(e.key, noNumbersOrLetters)) {\r\n e.preventDefault();\r\n return;\r\n }\r\n } else if (this.formattedTime.indexOf(selection) !== -1) {\r\n // Allow overwriting selection with numbers\r\n return;\r\n } else {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n const isNumber = /\\d/.test(e.key);\r\n if (isNumber && !this.isAcceptedValue(e.key) && !selection) {\r\n e.preventDefault();\r\n }\r\n\r\n }\r\n\r\n isAcceptedChar(key: string, acceptedChars: RegExp[]) {\r\n let isAccepted = false;\r\n acceptedChars.forEach(reg => {\r\n if (reg.test(key)) {\r\n isAccepted = true;\r\n return isAccepted;\r\n }\r\n });\r\n return isAccepted;\r\n }\r\n\r\n isAcceptedValue(key: string) {\r\n const time = this.formatted ? this.formatted.replace(/\\D/g, '') : '';\r\n\r\n // 4th digit, cases: [0-1, 0-9 : 0-5, 0-9] OR [0-2, 0-3 : 0-5, 0-9]\r\n if (time.length === 3) {\r\n return Number(time[0]) <= 1 ?\r\n Number(time[2]) <= 5 :\r\n Number(time[0]) <= 2 && Number(time[1]) <= 3 && Number(time[2]) <= 5;\r\n }\r\n\r\n // 3rd digit, if 2nd digit is over 5, time has to be [1, 0-9 : 3rd digit]\r\n if (time.length === 2) {\r\n return Number(time[1]) > 5 ? Number(key) <= 5 : true;\r\n }\r\n\r\n if (time.length === 1) {\r\n return Number(time[0]) > 1 ? Number(key) <= 5 : true;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n formatTime(time: string) {\r\n // Clear non numeric parts of the string.\r\n time = time.replace(/\\D/g, '');\r\n if (time.length > 4) {\r\n time = time.substring(0, 4);\r\n }\r\n\r\n const hours = time.length > 2 ? time.substring(0, time.length - 2) : '';\r\n const minutes = time.substring(time.length - 2, time.length);\r\n\r\n this.hasError = Number(hours) > 23 || Number(minutes) > 59;\r\n\r\n return hours || minutes ? `${hours}:${minutes}` : '';\r\n }\r\n\r\n}\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimePicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimePicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TimePicker.vue?vue&type=template&id=d2df3b62&\"\nimport script from \"./TimePicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimePicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Watch, Vue } from 'vue-property-decorator';\r\nimport './Schedule.scss';\r\nimport '@/filters/dateTimeFilter';\r\nimport restService from '@/services/restService';\r\nimport vuetifyToast from 'vuetify-toast';\r\n\r\nimport { IScheduleItem } from '@/typings/timit';\r\nimport { ScheduleItemDirectionEnum } from './enums';\r\nimport Schedule from '@/models/Schedule';\r\nimport ScheduleItem from '@/models/ScheduleItem';\r\n\r\nimport DateTimePicker from '@/components/DatetimePicker.vue';\r\nimport TimePicker from '@/components/TimePicker.vue';\r\nimport { debug } from 'console';\r\n\r\n@Component({\r\n components: {\r\n DateTimePicker,\r\n TimePicker,\r\n },\r\n})\r\nexport default class ScheduleEditor extends Vue {\r\n /*tslint:disable:max-line-length*/\r\n private loading: boolean = false;\r\n \r\n @Prop({ required: true }) private schedule: Schedule;\r\n @Prop({ default: false }) private canEditSchedule: boolean;\r\n\r\n get canSaveSchedule() {\r\n return this.canEditSchedule && this.schedule.isEdited;\r\n }\r\n\r\n get disableTimePicker() {\r\n return !this.canEditSchedule || this.schedule.isExpired;\r\n }\r\n\r\n get showWeekends() {\r\n return this.$store.state.user.showWeekends;\r\n }\r\n\r\n get weekStartsOnSunday() {\r\n return this.$store.state.user.weekStartsOnSunday;\r\n }\r\n\r\n get headers() {\r\n const days = [\r\n { text: this.$i18n.translate('weekday.monday', 'Monday'), value: '1', align: 'center', sortable: false},\r\n { text: this.$i18n.translate('weekday.tuesday', 'Tuesday'), value: '2', align: 'center', sortable: false},\r\n { text: this.$i18n.translate('weekday.wednesday', 'Wednesday'), value: '3', align: 'center', sortable: false},\r\n { text: this.$i18n.translate('weekday.thursday', 'Thursday'), value: '4', align: 'center', sortable: false},\r\n { text: this.$i18n.translate('weekday.friday', 'Friday'), value: '5', align: 'center', sortable: false},\r\n ];\r\n\r\n if (this.showWeekends) {\r\n days.push({ text: this.$i18n.translate('weekday.saturday', 'Saturday'), value: '6', align: 'center', sortable: false});\r\n const sunday = { text: this.$i18n.translate('weekday.sunday', 'Sunday'), value: '0', align: 'center', sortable: false};\r\n this.weekStartsOnSunday ? days.unshift(sunday) : days.push(sunday);\r\n }\r\n return days;\r\n }\r\n\r\n get items() {\r\n return [ \r\n this.createScheduleItemRow(ScheduleItemDirectionEnum.Start),\r\n this.createScheduleItemRow(ScheduleItemDirectionEnum.End)\r\n ];\r\n }\r\n\r\n createScheduleItemRow(direction: ScheduleItemDirectionEnum) {\r\n return this.headers.map(h => {\r\n const dayOfWeek = parseInt(h.value, 10);\r\n let scheduleItem = this.schedule.scheduleItems.find(si => si.direction === direction && si.dayOfWeek === dayOfWeek);\r\n if (!scheduleItem) {\r\n scheduleItem = this.createNewScheduleItem(dayOfWeek, direction);\r\n this.schedule.scheduleItems.push(scheduleItem);\r\n }\r\n return scheduleItem;\r\n });\r\n }\r\n\r\n createNewScheduleItem(dayOfWeek: number, direction: ScheduleItemDirectionEnum) {\r\n const scheduleItem: IScheduleItem = {\r\n id: 0,\r\n scheduleId: this.schedule.id,\r\n direction,\r\n dayOfWeek,\r\n time: null,\r\n };\r\n return new ScheduleItem(scheduleItem);\r\n }\r\n\r\n save() {\r\n const scheduleItems = this.items\r\n .map(row => row.filter(si => si.time))\r\n .reduce((items: ScheduleItem[], c) => items.concat(c), []);\r\n\r\n const copy = JSON.parse(JSON.stringify(this.schedule));\r\n copy.scheduleItems = scheduleItems;\r\n\r\n this.saveSchedule(copy)\r\n }\r\n\r\n async saveSchedule(schedule: Schedule) {\r\n this.loading = true;\r\n try {\r\n if (schedule.id === 0) {\r\n return await this.createSchedule(schedule);\r\n }\r\n const savedApiSchedule = await restService.schedules.updateSchedule(schedule);\r\n const savedSchedule = new Schedule(savedApiSchedule);\r\n \r\n this.$emit('save', savedSchedule);\r\n this.createSuccessToast();\r\n\r\n } catch (error) {\r\n vuetifyToast.error(this.$i18n.translate(\r\n 'schedules.errors.saveSchedule',\r\n 'Saving schedule failed: {message}',\r\n {message: (error as any).message},\r\n ));\r\n } finally {\r\n this.loading = false;\r\n }\r\n }\r\n\r\n async createSchedule(schedule: Schedule) {\r\n const createdApiSchedule = await restService.schedules.createSchedule(schedule);\r\n const createdSchedule = new Schedule(createdApiSchedule);\r\n this.$emit('create', createdSchedule);\r\n this.createSuccessToast();\r\n }\r\n\r\n createSuccessToast() {\r\n vuetifyToast.success(this.$i18n.translate('schedules.saveSuccess', 'Schedule was saved successfully'));\r\n }\r\n \r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ScheduleEditor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ScheduleEditor.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ScheduleEditor.vue?vue&type=template&id=4190ce9a&\"\nimport script from \"./ScheduleEditor.vue?vue&type=script&lang=ts&\"\nexport * from \"./ScheduleEditor.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Watch, Vue } from 'vue-property-decorator';\r\nimport moment from 'moment';\r\nimport restService from '@/services/restService';\r\n\r\nimport { PermissionEnum, RolePermission } from '@/models/DestinationRole';\r\nimport Schedule from '@/models/Schedule';\r\n\r\nimport ScheduleEditor from '@/components/Schedule/ScheduleEditor.vue';\r\n\r\n@Component({\r\n components: {\r\n ScheduleEditor,\r\n },\r\n})\r\nexport default class Schedules extends Vue {\r\n private loading: boolean = false;\r\n private schedules: Schedule[] = [];\r\n private error: string = '';\r\n private scheduleIndex: number = 0;\r\n\r\n @Prop({ required: true }) private passengerId: number;\r\n @Prop({ default: () => false }) private canEditSchedules: boolean;\r\n\r\n @Watch('passengerId', { immediate: true }) async onPassengerIdChanged() {\r\n if (this.passengerId) {\r\n await this.getPassengerSchedules(this.passengerId);\r\n if (this.schedules.length > 0) {\r\n this.scheduleIndex = this.getActiveScheduleIndex();\r\n }\r\n }\r\n }\r\n\r\n getActiveScheduleIndex() {\r\n if (this.schedules.length <= 1) {\r\n return 0;\r\n }\r\n\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n\r\n const activeSchedule = this.schedules.find(s => {\r\n const start = new Date(s.startDate);\r\n start.setHours(0, 0, 0, 0);\r\n const end = new Date(s.endDate);\r\n end.setHours(0, 0, 0, 0);\r\n return start.getTime() <= today.getTime() && today.getTime() <= end.getTime();\r\n });\r\n\r\n if (!activeSchedule) {\r\n return this.schedules.length - 1;\r\n }\r\n\r\n return this.schedules.findIndex(s => s.id === activeSchedule.id);\r\n }\r\n\r\n previous() {\r\n const nextIndex = this.scheduleIndex - 1;\r\n this.scheduleIndex = nextIndex < 0 ? this.schedules.length - 1 : nextIndex;\r\n }\r\n\r\n next() {\r\n const nextIndex = this.scheduleIndex + 1;\r\n this.scheduleIndex = nextIndex === this.schedules.length ? 0 : nextIndex;\r\n }\r\n \r\n newSchedule() {\r\n const defaultSchedule = this.getDefaultSchedule();\r\n \r\n if (this.schedules.length > 0) {\r\n const previousSchedule = (JSON.parse(JSON.stringify(this.schedules)) as Schedule[])\r\n .sort((a, b) => new Date(b.endDate).getTime() - new Date(a.endDate).getTime())[0];\r\n \r\n const previousDate = new Date(previousSchedule.endDate);\r\n \r\n const startDate = moment(new Date(previousDate).setDate(previousDate.getDate() + 1)).startOf('day').format('YYYY-MM-DD');\r\n const endDate = moment(startDate).add(1, 'days').startOf('day').format('YYYY-MM-DD');\r\n \r\n defaultSchedule.startDate = startDate;\r\n defaultSchedule.endDate = endDate;\r\n }\r\n\r\n this.schedules.push(defaultSchedule);\r\n this.scheduleIndex = this.schedules.length - 1;\r\n }\r\n\r\n handleCreatedSchedule(schedule: Schedule) {\r\n const scheduleIndex = this.schedules.findIndex(s => \r\n s.id === 0 \r\n && new Date(s.startDate).getTime() === new Date(schedule.startDate).getTime() \r\n && new Date(s.endDate).getTime() === new Date(schedule.endDate).getTime()\r\n );\r\n\r\n if (scheduleIndex > -1) {\r\n this.schedules.splice(scheduleIndex, 1, schedule);\r\n return;\r\n }\r\n\r\n this.schedules.push(schedule);\r\n this.scheduleIndex = this.schedules.length - 1;\r\n }\r\n\r\n handleSavedSchedule(schedule: Schedule) {\r\n const scheduleIndex = this.schedules.findIndex(s => s.id === schedule.id);\r\n this.schedules.splice(scheduleIndex, 1, schedule);\r\n this.scheduleIndex = scheduleIndex;\r\n }\r\n\r\n private async getPassengerSchedules(passengerId: number) {\r\n this.loading = true;\r\n try {\r\n const apiSchedules = await restService.schedules.getPassengerSchedules(passengerId);\r\n this.schedules = apiSchedules.map(s => new Schedule(s));\r\n } catch (error) {\r\n this.error = this.$t(\r\n 'schedules.errors.passengerGet', \r\n 'Fetching schedules failed: {message}', \r\n { message: (error as any).message }\r\n );\r\n } finally {\r\n this.loading = false;\r\n }\r\n }\r\n\r\n private getDefaultSchedule() {\r\n const schedule = new Schedule(null);\r\n schedule.passengerId = this.passengerId;\r\n return schedule;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Schedules.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Schedules.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Schedules.vue?vue&type=template&id=4bbc44f6&\"\nimport script from \"./Schedules.vue?vue&type=script&lang=ts&\"\nexport * from \"./Schedules.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","export default class PassengerGroupPassenger {\r\n id: number;\r\n name: string;\r\n passengerGroupId: number;\r\n passengerId: number;\r\n\r\n constructor(passengerGroupPassenger: any) {\r\n this.id = passengerGroupPassenger.id;\r\n this.name = passengerGroupPassenger.passenger.name;\r\n this.passengerGroupId = passengerGroupPassenger.id;\r\n this.passengerId = passengerGroupPassenger.passenger.id\r\n }\r\n}\r\n","import PassengerGroupPassenger from \"./PassengerGroupPassenger\";\r\n\r\nexport class PassengerGroup {\r\n id: number;\r\n organizationId: string;\r\n name: string;\r\n description: string\r\n passengerGroupPassengers: PassengerGroupPassenger[];\r\n\r\n public static fromApi(apiPassengerGroup: any) {\r\n const passengerGroup = new PassengerGroup();\r\n passengerGroup.id = apiPassengerGroup.id;\r\n passengerGroup.organizationId = apiPassengerGroup.organizationId;\r\n passengerGroup.name = apiPassengerGroup.name;\r\n passengerGroup.description = apiPassengerGroup.description;\r\n if (apiPassengerGroup.passengerGroupPassengers && apiPassengerGroup.passengerGroupPassengers.length > 0) {\r\n passengerGroup.passengerGroupPassengers = apiPassengerGroup.passengerGroupPassengers\r\n .map(p => new PassengerGroupPassenger(p));\r\n } else {\r\n passengerGroup.passengerGroupPassengers = [];\r\n }\r\n\r\n return passengerGroup;\r\n }\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Watch, Vue } from 'vue-property-decorator';\r\nimport vuetifyToast from 'vuetify-toast';\r\nimport { Passenger } from '@/components/Passenger/models/Passenger';\r\nimport DateTimePicker from '@/components/DatetimePicker.vue';\r\nimport Destination from '@/components/Passenger/models/Destination';\r\nimport PassengerTripList from '@/components/Passenger/components/PassengerTripList.vue';\r\nimport Routes from '../Routes';\r\nimport PassengerDestination from '../components/Passenger/models/PassengerDestination';\r\nimport TransportationPermission from '../components/Passenger/models/TransportationPermission';\r\nimport { RolePermission } from '../models/Role';\r\nimport TransportationPermissionList from '@/components/Passenger/components/TransportationPermissionList.vue';\r\nimport TransportationPermissionEditor from '@/components/Passenger/components/TransportationPermissionEditor.vue';\r\nimport PassengerDetailsEditor from '@/components/Passenger/components/PassengerDetailsEditor.vue';\r\nimport PassengerUtilities from '@/components/Passenger/components/PassengerUtilities.vue';\r\nimport { PermissionEnum } from '../models/DestinationRole';\r\nimport MovitInstanceConfig from '@/models/MovitInstanceConfig';\r\nimport PassengerDestinationPicker from '@/components/Passenger/components/PassengerDestinationPicker.vue'\r\nimport SecondaryDestinationPicker from '@/components/Passenger/components/SecondaryDestinationPicker.vue'\r\nimport Schedules from '@/components/Schedule/Schedules.vue';\r\nimport restService from '@/services/restService';\r\nimport { PassengerGroup } from '@/models/PassengerGroup';\r\n\r\n@Component({\r\n components: {\r\n // GroupPicker,\r\n DateTimePicker,\r\n PassengerTripList,\r\n PassengerUtilities,\r\n PassengerDetailsEditor,\r\n TransportationPermissionList,\r\n TransportationPermissionEditor,\r\n PassengerDestinationPicker,\r\n SecondaryDestinationPicker,\r\n Schedules,\r\n }\r\n})\r\nexport default class PassengerPage extends Vue {\r\n\r\n public static NEW_GROUP_CREATOR_ITEM: string = \"- New group -\";\r\n\r\n permissionEnum = PermissionEnum;\r\n\r\n editedPassenger: Passenger = new Passenger(null);\r\n editedTransportationPermission: TransportationPermission | null = null;\r\n passengerPassengerGroups: PassengerGroup[] = []; \r\n valid: boolean = true;\r\n saving: boolean = false;\r\n hasDestination: boolean = false;\r\n rules: any = {\r\n required: value => !!value \r\n || this.$i18n.translate(\"validation.rules.required\", \"Required\")\r\n } \r\n inactivating: boolean = false;\r\n deleting: boolean = false;\r\n\r\n async created(){\r\n if (this.routePassengerId){\r\n await this.$store.dispatch(\"passenger/getPassengerById\", {params: {id: this.routePassengerId}}); \r\n }\r\n if (this.isCreating && this.selectedDestination.organizationId) {\r\n this.editedPassenger.organizationId = this.selectedDestination.organizationId;\r\n this.editedPassenger.transportationPermissionRequired = this.$store.getters['organization/organizationRequirePtpByDefault'](this.editedPassenger.organizationId);\r\n }\r\n }\r\n\r\n get isTransportationPermissionEnabled(): boolean {\r\n // #6364 hide PTP list while creating passenger.\r\n if (this.isCreating) {\r\n return false;\r\n }\r\n\r\n return this.$store.getters['auth/hasTransportationPermission']([RolePermission.ReadTransportationPermissions]);\r\n }\r\n\r\n get routeMeta() {\r\n return this.$route.meta;\r\n }\r\n\r\n @Watch(\"$store.state.passenger.error.createTransportationPermission\")\r\n onCreateTransportationPermissionErrorChanged(val){\r\n if (val){\r\n vuetifyToast.error(this.$store.state.passenger.error.createTransportationPermission);\r\n }\r\n }\r\n\r\n @Watch(\"$store.state.passenger.error.updateTransportationPermission\")\r\n onUpdateTransportationPermissionErrorChanged(val){\r\n if (val){\r\n vuetifyToast.error(this.$store.state.passenger.error.updateTransportationPermission);\r\n }\r\n }\r\n\r\n @Watch(\"$store.state.passenger.error.deleteTransportationPermission\")\r\n onDeleteTransportationPermissionErrorChanged(val){\r\n if (val){\r\n vuetifyToast.error(this.$store.state.passenger.error.deleteTransportationPermission);\r\n }\r\n }\r\n\r\n get isEditing(): boolean {\r\n return this.$route.name === Routes.editPassengerRoute.name || this.$route.name === Routes.editPeopleRoute.name;\r\n }\r\n\r\n get isCreating(): boolean {\r\n return this.$route.name === Routes.newPassengerRoute.name \r\n || this.$route.name === Routes.newOrganizationPassenger.name;\r\n }\r\n\r\n get userCanReadTransportationPermissions(): boolean {\r\n return this.$store.getters['auth/hasTransportationPermission']([RolePermission.ReadTransportationPermissions]);\r\n }\r\n\r\n get userCanEditTransportationPermissions(): boolean {\r\n return this.$store.getters['auth/hasTransportationPermission']([RolePermission.UpdateTransportationPermissions])\r\n }\r\n \r\n get userCanReadSchedules() {\r\n let passengerGroupIds = [];\r\n if (this.passengerPassengerGroups.length > 0) {\r\n passengerGroupIds = this.passengerPassengerGroups.map(g => g.id);\r\n }\r\n const canRead = this.$store.getters['auth/hasSchedulePermission'](PermissionEnum.Read, passengerGroupIds);\r\n return canRead;\r\n }\r\n\r\n get userCanEditSchedules() {\r\n let passengerGroupIds = [];\r\n if (this.passengerPassengerGroups.length > 0) {\r\n passengerGroupIds = this.passengerPassengerGroups.map(g => g.id);\r\n }\r\n return this.$store.getters['auth/hasSchedulePermission'](PermissionEnum.Write, passengerGroupIds);\r\n }\r\n\r\n get storeMovitInstanceConfigs(): MovitInstanceConfig[]{\r\n return this.$store.state.app.movitInstanceConfigs as MovitInstanceConfig[];\r\n }\r\n\r\n get destinationMovitInstanceConfig(): MovitInstanceConfig | undefined {\r\n if (this.selectedDestination) {\r\n return this.storeMovitInstanceConfigs.find(mic => mic.instanceId === this.selectedDestination.movitInstanceId);\r\n }\r\n return this.storeMovitInstanceConfigs[0];\r\n }\r\n\r\n get allowUserInput(): boolean {\r\n const canEdit = this.$store.getters['auth/hasPassengerPermission']([RolePermission.UpdatePassengers]);\r\n const canCreate = this.$store.getters['auth/hasPassengerPermission']([RolePermission.CreatePassengers]);\r\n\r\n return (this.isEditing && canEdit) \r\n || (this.isCreating && canCreate);\r\n }\r\n\r\n get isLoading(): boolean {\r\n return this.$store.state.passenger.pending.passenger || \r\n this.$store.state.destination.pending.destinations;\r\n }\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n get selectedDestinationId(): number {\r\n return this.routeDestinationId;\r\n }\r\n\r\n get selectedDestination(): Destination | null {\r\n const destination = this.destinations.find(d => d.id === this.routeDestinationId);\r\n return destination\r\n ? destination\r\n : null;\r\n }\r\n \r\n get destinations(): Destination[] {\r\n return this.$store.state.destination.destinations;\r\n }\r\n\r\n get routePassengerId(): number{\r\n return parseInt(this.$route.params.passengerId, 10);\r\n }\r\n\r\n get routePassenger(): Passenger | null {\r\n const passenger: Passenger = this.$store.state.passenger.passenger;\r\n if (passenger) {\r\n this.hasDestination = passenger.destinationIds && passenger.destinationIds.length > 0;\r\n }\r\n return passenger\r\n ? passenger\r\n : null;\r\n }\r\n get routePassenGerGroupIds() {\r\n if (this.$route.params.passengerGroupId) {\r\n return [this.$route.params.passengerGroupId]\r\n // .split(',').map(id => parseInt(id, 10));\r\n }\r\n }\r\n\r\n @Watch(\"routePassenger\", {immediate: true})\r\n async onRoutePassengerChanged(val, oldVal){\r\n if (val){\r\n // this.verifyRoutePassengerHasRouteDestinationId();\r\n await this.initializePassengerEdit();\r\n } else {\r\n this.editedPassenger = new Passenger(\r\n {\r\n passengerDestinations: [\r\n new PassengerDestination(0, this.selectedDestinationId)\r\n ]\r\n }\r\n );\r\n }\r\n }\r\n\r\n get showTransportationPermissionEditor() {\r\n return this.editedTransportationPermission ? true : false;\r\n }\r\n\r\n get mainDestination() {\r\n return this.editedPassenger.passengerDestinations.find(x => x);\r\n }\r\n\r\n setDestinationValues(passengerDestination: PassengerDestination) {\r\n\r\n const selectedDestination = this.destinations.find(d => d.id === passengerDestination.destinationId);\r\n\r\n if (selectedDestination) {\r\n this.editedPassenger.movitInstanceId = selectedDestination.movitInstanceId;\r\n this.editedPassenger.destinationIds = this.editedPassenger.passengerDestinations.map(d => d.destinationId);\r\n }\r\n\r\n }\r\n\r\n async initializePassengerEdit() { \r\n \r\n this.editedPassenger = Passenger.CopyFrom(this.routePassenger);\r\n await this.getPassengerPassengerGroups();\r\n if (this.isTransportationPermissionEnabled) {\r\n await this.getPassengerTransportationPermissionInfo();\r\n }\r\n }\r\n\r\n async getPassengerPassengerGroups() {\r\n const groups = await restService.passengers.getPassengerPassengerGroups(this.editedPassenger.id)\r\n this.passengerPassengerGroups = groups.map(g => {\r\n const group = PassengerGroup.fromApi(g);\r\n return group;\r\n })\r\n }\r\n\r\n async getPassengerTransportationPermissionInfo(){ \r\n await this.$store.dispatch(\r\n \"passenger/getPassengerTransportationPermissionInfo\", \r\n { \r\n params: { \r\n passengerId: this.editedPassenger.id \r\n }\r\n }\r\n );\r\n }\r\n\r\n async onDeleteClick() {\r\n this.deleting = true;\r\n if (\r\n confirm(\r\n this.$i18n.translate(\r\n 'passenger.delete.confirm_with_name', \r\n 'Are you sure you want to delete {passengerName}?', \r\n { \r\n passengerName: this.editedPassenger.name\r\n } \r\n )\r\n )\r\n ) {\r\n try {\r\n await this.$store.dispatch('passenger/deleteRequest', { params: { id: this.editedPassenger.id }});\r\n } catch (err){\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n 'passenger.delete.error.generic', \r\n 'There was an error when deleting the passenger. Please try again later.'\r\n )\r\n )\r\n }\r\n }\r\n this.deleting = false;\r\n };\r\n\r\n async onActivateClick() {\r\n this.saving = true;\r\n try {\r\n await this.$store.dispatch('passenger/activate', { params: { id: this.editedPassenger.id }});\r\n await this.initializePassengerEdit();\r\n } catch (err){\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n 'passenger.activate.error.generic', \r\n 'There was an error when activating the passenger. Please try again later.'\r\n )\r\n )\r\n }\r\n this.saving = false;\r\n }\r\n\r\n async onDeactivateClick() {\r\n this.saving = true;\r\n if (\r\n confirm(\r\n this.$i18n.translate('passenger.deactivate.confirm_with_name', \r\n 'Are you sure you want to deactivate {passengerName}?', \r\n { \r\n passengerName: this.editedPassenger.name\r\n } \r\n )\r\n )\r\n ) {\r\n try {\r\n await this.$store.dispatch('passenger/deactivate', { params: { id: this.editedPassenger.id }});\r\n await this.initializePassengerEdit();\r\n } catch (err){\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n 'passenger.deactivate.error.generic', \r\n 'There was an error when deactivating the passenger. Please try again later.'\r\n )\r\n )\r\n }\r\n }\r\n this.saving = false;\r\n }\r\n\r\n async onSaveClick() {\r\n this.saving = true;\r\n // TODO: Get rid of casting to any\r\n if ((this.$refs.form as any).validate()) {\r\n try {\r\n if (this.editedPassenger.id > 0) {\r\n // console.log(\"save, update existing: \", this.editedPassenger);\r\n\r\n await (this.$refs.passengerEditor as any).saveSsn();\r\n await this.$store.dispatch('passenger/updatePassenger', \r\n { params: { id: this.editedPassenger.id}, data: this.editedPassenger });\r\n \r\n // Watching routePassenger will trigger initialization when the save finishes\r\n //await this.initializePassengerEdit();\r\n \r\n } else {\r\n (this.editedPassenger as any).destinationIds = this.editedPassenger\r\n .passengerDestinations.map(pd => pd.destinationId);\r\n const ssn = (this.$refs.passengerEditor as any).getNewPassengerSsn();\r\n const result = await this.$store.dispatch('passenger/createPassenger', { data: this.editedPassenger });\r\n await (this.$refs.passengerEditor as any).saveSsnForNewPassenger(result.data.id, ssn);\r\n this.$router.replace({\r\n name: Routes.editPeopleRoute.name,\r\n params: {\r\n passengerId: result.data.id,\r\n destinationId: this.mainDestination.destinationId + '',\r\n },\r\n });\r\n }\r\n vuetifyToast.success(this.$i18n.translate('passenger.save.success', 'Passenger saved successfully.'));\r\n } catch (err) {\r\n vuetifyToast.error(this.$i18n.translate('passenger.save.error.generic', \r\n 'There was an error saving the passenger. Please try again later.'));\r\n console.error(\"Error when saving passenger:\", err);\r\n }\r\n }\r\n this.saving = false;\r\n }\r\n\r\n onBackToListClick() {\r\n if (this.editedPassenger.destinationIds && this.editedPassenger.destinationIds.length > 0) {\r\n this.$router.push({\r\n name: Routes.peopleRoute.name,\r\n params: { destinationId: this.editedPassenger.destinationIds[0].toString(),\r\n }\r\n })\r\n } else {\r\n this.$router.back();\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerPage.vue?vue&type=template&id=00f3a427&\"\nimport script from \"./PassengerPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerPage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PassengerPage.vue?vue&type=style&index=0&id=00f3a427&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"passenger-page\"},[_c('v-container',{staticClass:\"compressible\",attrs:{\"fluid\":\"\"}},[_c('router-view')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { RouteConfig } from \"vue-router\";\r\nimport Routes from \"@/Routes\";\r\n\r\n@Component({\r\n components: {}\r\n})\r\nexport default class PassengerPageRoot extends Vue {\r\n get routeName() {\r\n return this.$route.name;\r\n }\r\n\r\n get routePassengerId(): string {\r\n return this.$store.state.route.params.passengerId;\r\n }\r\n\r\n get navigationRoutes(): any[] {\r\n const passengerRoot = (this.$router as any).options.routes.find(\r\n (r: any) => r.meta && r.meta.passengerRoot\r\n ) as RouteConfig;\r\n\r\n if (!passengerRoot) {\r\n return [];\r\n }\r\n const navRoutes = passengerRoot.children.map(c => c).filter(r => r.meta.passengerNav);\r\n return navRoutes;\r\n }\r\n\r\n async redirectToFirstNavigationRoute(alreadyRedirected: boolean = false) {\r\n try {\r\n if (this.$route.name === Routes.passengerRoute.name) {\r\n if (this.routePassengerId) {\r\n this.$router.replace({\r\n name: Routes.editPassengerRoute.name,\r\n });\r\n } \r\n }\r\n } catch (err) {\r\n if (this.routePassengerId && !alreadyRedirected) {\r\n await this.$router.replace({\r\n name: Routes.passengerRoute.name,\r\n });\r\n\r\n await this.redirectToFirstNavigationRoute(true);\r\n } else {\r\n throw err;\r\n }\r\n }\r\n }\r\n\r\n created() {\r\n this.redirectToFirstNavigationRoute();\r\n }\r\n\r\n @Watch(\"routeName\", { immediate: false })\r\n onRouteNameChanged(val, newVal) {\r\n this.redirectToFirstNavigationRoute();\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerPageRoot.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerPageRoot.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerPageRoot.vue?vue&type=template&id=588833de&\"\nimport script from \"./PassengerPageRoot.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerPageRoot.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$t('organization.users', 'Users')))]),_c('v-spacer')],1),_c('v-card-text',[_c('v-stepper',{attrs:{\"non-linear\":\"\"},model:{value:(_vm.stepperStep),callback:function ($$v) {_vm.stepperStep=$$v},expression:\"stepperStep\"}},[_c('v-stepper-header',[_c('v-stepper-step',{attrs:{\"step\":\"1\",\"editable\":\"\"},on:{\"click\":function($event){_vm.stepperStep = 1}}},[_vm._v(_vm._s(_vm.$t('importer.fileInput')))]),_c('v-divider'),_c('v-stepper-step',{attrs:{\"step\":\"2\",\"editable\":\"\"},on:{\"click\":function($event){_vm.stepperStep = 2}}},[_vm._v(_vm._s(_vm.$t('importer.importSelection')))]),_c('v-divider')],1),_c('v-stepper-items',[_c('v-stepper-content',{attrs:{\"step\":\"1\"}},[_c('file-selection-step')],1),_c('v-stepper-content',{attrs:{\"step\":\"2\"}},[_c('import-selection-step')],1)],1),_c('v-layout',{attrs:{\"row\":\"\",\"pa-3\":\"\"}},[_c('v-btn',{attrs:{\"disabled\":_vm.disableBackButton},on:{\"click\":_vm.backStep}},[_vm._v(_vm._s(_vm.$t('generic.back')))]),_c('v-spacer'),_c('v-btn',{attrs:{\"disabled\":_vm.disableForwardButton,\"color\":\"primary\"},on:{\"click\":_vm.nextStep}},[_vm._v(_vm._s(_vm.$t('generic.next')))])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('excel-importer',{on:{\"upload\":_vm.uploadFile,\"clear\":_vm.clearFile}}),(_vm.showSheetSelect)?_c('sheet-select',{attrs:{\"sheetNames\":_vm.file.SheetNames,\"value\":_vm.selectedSheetName},on:{\"input\":_vm.selectSheet}}):_vm._e(),(_vm.selectedSheet)?_c('sheet-preview',{attrs:{\"sheet\":_vm.selectedSheet,\"rows\":_vm.rows}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-text-field',{attrs:{\"placeholder\":_vm.$t('excelImporter.placeHolder', 'Select file'),\"prepend-icon\":\"attach_file\",\"append-icon\":\"close\",\"value\":_vm.fileName,\"readonly\":\"\"},on:{\"click\":_vm.onFileInput,\"click:append\":_vm.clearFile}}),_c('input',{ref:\"fileInput\",staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\",\"accept\":\".csv,.xlsx\"},on:{\"input\":_vm.readFile}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport * as XLSX from 'xlsx';\r\n\r\n@Component\r\nexport default class ExcelImporter extends Vue {\r\n\r\n fileName: string = '';\r\n\r\n onFileInput() {\r\n (this.$refs.fileInput as any).click();\r\n }\r\n\r\n readFile(event: any) {\r\n this.fileName = '';\r\n const file = event.target.files[0];\r\n if (!file) {\r\n this.clearFile();\r\n return;\r\n }\r\n this.fileName = file.name;\r\n const reader = new FileReader();\r\n reader.onload = e => {\r\n if (e.target && e.target.result) {\r\n const data = new Uint8Array(e.target.result as any);\r\n const workbook = XLSX.read(data, { type: 'array', dateNF: 'yyyy-mm-dd' });\r\n this.$emit('upload', workbook);\r\n }\r\n };\r\n reader.readAsArrayBuffer(file);\r\n }\r\n\r\n clearFile() {\r\n (this.$refs.fileInput as any).value = null;\r\n this.fileName = '';\r\n this.$emit('clear');\r\n }\r\n \r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ExcelImporter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ExcelImporter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ExcelImporter.vue?vue&type=template&id=12b5c2f2&\"\nimport script from \"./ExcelImporter.vue?vue&type=script&lang=ts&\"\nexport * from \"./ExcelImporter.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-select',{attrs:{\"items\":_vm.sheetNames,\"value\":_vm.selectedSheet,\"prepend-icon\":\"description\"},on:{\"change\":_vm.selectSheet}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport * as XLSX from 'xlsx';\r\n\r\n@Component\r\nexport default class SheetSelect extends Vue {\r\n selectedSheet: string = '';\r\n\r\n @Prop({ required: true, default: () => [] }) private sheetNames: string[];\r\n @Prop() private value: string;\r\n \r\n @Watch('value', { immediate: true }) onValueChanged() {\r\n this.selectedSheet = this.value;\r\n }\r\n\r\n selectSheet(sheet: string) {\r\n this.$emit('input', sheet);\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SheetSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SheetSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SheetSelect.vue?vue&type=template&id=45081b80&\"\nimport script from \"./SheetSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./SheetSelect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-alert',{attrs:{\"type\":\"error\",\"value\":_vm.sheetErrors.missingHeaders}},[_c('span',[_vm._v(\"Dokumentista puuttuu otsikot sarakkeista: \"+_vm._s(_vm.sheetErrors.missingHeaders))])]),_c('v-data-table',{attrs:{\"headers\":_vm.sheetHeaders,\"items\":_vm.rows},scopedSlots:_vm._u([{key:\"items\",fn:function(props){return _vm._l((_vm.sheetHeaders),function(header){return _c('td',{key:header.text},[_c('span',[_vm._v(_vm._s(props.item[header.value]))])])})}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport * as XLSX from 'xlsx';\r\nimport { IExcelSheetHeader } from './store/ImporterStore';\r\n\r\ninterface ISheetErrors {\r\n missingHeaders: string;\r\n}\r\n\r\ninterface ISheetHeader {\r\n text: string;\r\n value: string;\r\n sortable: boolean;\r\n missingHeader: string;\r\n}\r\n\r\n@Component\r\nexport default class SheetPreview extends Vue {\r\n\r\n @Prop({ required: true, default: () => null }) private sheet: XLSX.WorkSheet | null;\r\n\r\n @Watch('sheet', { immediate: true }) onSheetChanged() {\r\n this.sheetHeaders = this.getSheetHeaders();\r\n }\r\n\r\n get sheetHeaders() {\r\n return this.$store.state.importer.excelSheetHeaders;\r\n }\r\n\r\n set sheetHeaders(headers: IExcelSheetHeader[]) {\r\n this.$store.commit('importer/setExcelSheetHeaders', headers);\r\n }\r\n\r\n get rows() {\r\n return this.$store.state.importer.rowData;\r\n }\r\n\r\n set rows(rowData: any[]) {\r\n this.$store.commit('importer/setRowData', rowData);\r\n }\r\n\r\n getSheetHeaders(): IExcelSheetHeader[] {\r\n const sheet = this.sheet;\r\n\r\n if (!sheet || !sheet['!ref']) {\r\n return [];\r\n }\r\n\r\n const range = XLSX.utils.decode_range((sheet as any)['!ref']);\r\n const headers = [];\r\n for (let i = range.s.c; i <= range.e.c; i++) {\r\n const columnLetter = this.getColumnAsLetters(i);\r\n const rowNumber = range.s.r + 1;\r\n const cell = (sheet as any)[`${columnLetter}${rowNumber}`];\r\n // let value = `${columnLetter}: `;\r\n let value = ``;\r\n if (typeof cell !== 'undefined') {\r\n if (typeof cell.v === 'string') {\r\n value += cell.v.trim();\r\n } else {\r\n value += cell.w;\r\n }\r\n }\r\n const header = {\r\n text: `${columnLetter}: ${value}`,\r\n value: columnLetter,\r\n sortable: false,\r\n missingHeader: !value ? '' : columnLetter,\r\n width: '1000px',\r\n };\r\n\r\n headers.push(header);\r\n }\r\n return headers.filter(x => x);\r\n }\r\n\r\n get sheetErrors(): ISheetErrors {\r\n const missingHeaders = this.sheetHeaders\r\n .filter(sh => !sh.missingHeader)\r\n .map(sh => sh.text.replace(':', '').trim())\r\n .join(', ');\r\n return { missingHeaders };\r\n }\r\n\r\n getColumnAsLetters(column: number) {\r\n const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n const firstLetter = Math.floor(column / alphabet.length);\r\n return firstLetter <= 0 ? alphabet[column] : alphabet[firstLetter - 1] + alphabet[column - 26 * firstLetter];\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SheetPreview.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SheetPreview.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SheetPreview.vue?vue&type=template&id=ab279df0&\"\nimport script from \"./SheetPreview.vue?vue&type=script&lang=ts&\"\nexport * from \"./SheetPreview.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","import * as XLSX from 'xlsx';\r\n\r\nexport default class SheetHelper {\r\n\r\n private static readonly JsonConvertOptions: XLSX.Sheet2JSONOpts = { \r\n raw: false,\r\n header: 'A',\r\n defval: null,\r\n dateNF: 'yyyy-mm-dd' \r\n }; \r\n\r\n static getSheetAsJson(sheet: XLSX.WorkSheet) {\r\n if (!sheet) {\r\n return [];\r\n }\r\n const json = XLSX.utils.sheet_to_json(sheet, SheetHelper.JsonConvertOptions);\r\n json.shift();\r\n return json;\r\n }\r\n\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport * as XLSX from \"xlsx\";\r\nimport ExcelImporter from '@/components/Importer/ExcelImporter.vue';\r\nimport SheetSelect from '@/components/Importer/SheetSelect.vue';\r\nimport SheetPreview from '@/components/Importer/SheetPreview.vue';\r\nimport SheetHelper from './models/SheetHelper';\r\n\r\n@Component({\r\n components: {\r\n ExcelImporter,\r\n SheetSelect,\r\n SheetPreview,\r\n },\r\n})\r\nexport default class FileSelectionStep extends Vue {\r\n private static readonly JSON_CONVERT_OPTIONS: XLSX.Sheet2JSONOpts = { raw: false, header: 'A', defval: '-' };\r\n\r\n file: XLSX.WorkBook | null = null;\r\n selectedSheet: XLSX.WorkSheet | null = null;\r\n selectedSheetName: string = '';\r\n \r\n get rows() {\r\n return this.$store.state.importer.rowData;\r\n }\r\n\r\n set rows(rowData: any[]) {\r\n this.$store.commit('importer/setRowData', rowData);\r\n }\r\n \r\n get showSheetSelect() {\r\n if (this.file && this.file.SheetNames.length > 1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n \r\n uploadFile(file: XLSX.WorkBook) {\r\n this.file = file;\r\n const firstSheetName = this.file.SheetNames.find(sn => sn);\r\n this.selectSheet(firstSheetName);\r\n }\r\n\r\n selectSheet(sheetName: string) {\r\n if (!sheetName) {\r\n this.selectedSheet = null;\r\n this.selectedSheetName = '';\r\n return;\r\n }\r\n this.selectedSheet = this.file.Sheets[sheetName];\r\n this.selectedSheetName = sheetName;\r\n this.rows = this.getSheetAsJsonRows(this.selectedSheet);\r\n }\r\n\r\n getSheetAsJsonRows(sheet: XLSX.WorkSheet) {\r\n if (!sheet) {\r\n return [];\r\n }\r\n const json = SheetHelper.getSheetAsJson(sheet);\r\n // json.shift();\r\n return json;\r\n }\r\n\r\n clearFile() {\r\n this.file = null;\r\n this.selectedSheet = null;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FileSelectionStep.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FileSelectionStep.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FileSelectionStep.vue?vue&type=template&id=7473ff4c&\"\nimport script from \"./FileSelectionStep.vue?vue&type=script&lang=ts&\"\nexport * from \"./FileSelectionStep.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"grid-list-md\":\"\",\"pa-1\":\"\"}},[_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-btn',{on:{\"click\":function($event){$event.stopPropagation();return _vm.selectPassengerImporter($event)}}},[_c('v-checkbox',{attrs:{\"input-value\":_vm.passengerImporterSelected}}),_vm._v(\" \"+_vm._s(_vm.$t('generic.header.passenger.one'))+\" \")],1),_c('v-btn',{on:{\"click\":function($event){$event.stopPropagation();return _vm.selectPtpImporter($event)}}},[_c('v-checkbox',{attrs:{\"input-value\":_vm.ptpImporterSelected}}),_vm._v(\" \"+_vm._s(_vm.$t('generic.transportationPermission'))+\" \")],1),_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.fetchMatches}},[_vm._v(_vm._s(_vm.$t('generic.getInfo')))]),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"red\"},on:{\"click\":_vm.clearMappings}},[_vm._v(_vm._s(_vm.$t('generic.clearFields')))]),_c('v-btn',{attrs:{\"color\":\"accent\"},on:{\"click\":_vm.importPassengers}},[_vm._v(_vm._s(_vm.$t('generic.saveInfo')))])],1),_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\"}},[_c('passenger-search-mapper',{attrs:{\"value\":_vm.mappings.search},on:{\"input\":_vm.onPassengerSearchMappingChanged}})],1)],1),_c('v-layout',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.passengerImporterSelected),expression:\"passengerImporterSelected\"}],attrs:{\"row\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\"}},[_c('passenger-import-mapper',{attrs:{\"mappings\":_vm.mappings,\"value\":_vm.mappings.passenger},on:{\"input\":_vm.onPassengerMappingChanged,\"phoneNumberMappingsChange\":_vm.onPhoneNumberMappingsChanged}})],1)],1),_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-flex',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.ptpImporterSelected),expression:\"ptpImporterSelected\"}],attrs:{\"xs12\":\"\"}},[_c('transportation-permissions-mapper',{attrs:{\"value\":_vm.mappings.transportationPermissions},on:{\"input\":_vm.onTransportationPermissionsMappingsChanged}})],1)],1),_c('v-divider'),_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\"}},[(_vm.showImportsTable)?_c('imports-table',{attrs:{\"passengerImporter\":_vm.passengerImporter,\"ptpImporters\":_vm.ptpImporters,\"mappings\":_vm.mappings}}):_vm._e()],1)],1),_c('v-dialog',{attrs:{\"persistent\":\"\",\"max-width\":\"700\"},model:{value:(_vm.loading),callback:function ($$v) {_vm.loading=$$v},expression:\"loading\"}},[_c('v-card',[_c('v-card-text',[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loadingMessage),expression:\"loadingMessage\"}]},[_vm._v(_vm._s(_vm.loadingMessage))]),_c('v-progress-linear',{model:{value:(_vm.loadingProgress),callback:function ($$v) {_vm.loadingProgress=$$v},expression:\"loadingProgress\"}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.mapping)?_c('v-card',[_c('v-card-title',{on:{\"click\":function($event){_vm.showMappings = !_vm.showMappings}}},[_c('div',{staticClass:\"subheading\"},[_vm._v(_vm._s(_vm.$t('importer.passengerInfo')))]),_c('v-spacer'),_c('v-icon',[_vm._v(_vm._s(_vm.showMappings ? 'expand_more' : 'expand_less'))])],1),_c('v-slide-y-transition',[_c('v-card-text',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showMappings),expression:\"showMappings\"}],attrs:{\"pt-0\":\"\"}},[_c('v-layout',{attrs:{\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"sm12\":\"\",\"md5\":\"\"}},[_c('v-card',{staticStyle:{\"background-color\":\"#f7f7f7\"}},[_c('v-card-text',[_c('v-form',[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.name.label', 'Name')},model:{value:(_vm.mapping.name),callback:function ($$v) {_vm.$set(_vm.mapping, \"name\", $$v)},expression:\"mapping.name\"}}),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.externalId.label', 'External ID')},model:{value:(_vm.mapping.externalId),callback:function ($$v) {_vm.$set(_vm.mapping, \"externalId\", $$v)},expression:\"mapping.externalId\"}}),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.ssn.label', 'Social Security Number')},model:{value:(_vm.mapping.ssn),callback:function ($$v) {_vm.$set(_vm.mapping, \"ssn\", $$v)},expression:\"mapping.ssn\"}}),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.destinations.main', 'Main Destination')},model:{value:(_vm.mapping.destination),callback:function ($$v) {_vm.$set(_vm.mapping, \"destination\", $$v)},expression:\"mapping.destination\"}},[_c('destination-selector',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mapping.destination.useStatic),expression:\"mapping.destination.useStatic\"}],attrs:{\"label\":_vm.$t('passenger.prop.destinations.main', 'Main Destination'),\"organizationId\":_vm.organizationId},on:{\"input\":_vm.selectMainDestination}})],1),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.destinations.secondary', 'Secondary Destination')},model:{value:(_vm.mapping.secondaryDestination),callback:function ($$v) {_vm.$set(_vm.mapping, \"secondaryDestination\", $$v)},expression:\"mapping.secondaryDestination\"}},[_c('destination-selector',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mapping.secondaryDestination.useStatic),expression:\"mapping.secondaryDestination.useStatic\"}],attrs:{\"label\":_vm.$t('passenger.prop.destinations.secondary', 'Secondary Destination'),\"organizationId\":_vm.organizationId},on:{\"input\":_vm.selectSecondaryDestination}})],1),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.homeAddress.label', 'Home address')},model:{value:(_vm.mapping.homeAddress),callback:function ($$v) {_vm.$set(_vm.mapping, \"homeAddress\", $$v)},expression:\"mapping.homeAddress\"}}),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.homeCity.label', 'Home city')},model:{value:(_vm.mapping.homeCity),callback:function ($$v) {_vm.$set(_vm.mapping, \"homeCity\", $$v)},expression:\"mapping.homeCity\"}}),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.homePostalcode.label', 'Home postal code')},model:{value:(_vm.mapping.homePostalcode),callback:function ($$v) {_vm.$set(_vm.mapping, \"homePostalcode\", $$v)},expression:\"mapping.homePostalcode\"}}),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.pickupAddress.label', 'Pickup address')},model:{value:(_vm.mapping.pickupAddress),callback:function ($$v) {_vm.$set(_vm.mapping, \"pickupAddress\", $$v)},expression:\"mapping.pickupAddress\"}}),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.billingUseHomeAddress.label', 'Use home address for billing')},model:{value:(_vm.mapping.billingUseHomeAddress),callback:function ($$v) {_vm.$set(_vm.mapping, \"billingUseHomeAddress\", $$v)},expression:\"mapping.billingUseHomeAddress\"}},[_c('v-checkbox',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mapping.billingUseHomeAddress.useStatic),expression:\"mapping.billingUseHomeAddress.useStatic\"}],attrs:{\"label\":_vm.$t('passenger.prop.billingUseHomeAddress.label', 'Use home address for billing')},model:{value:(_vm.mapping.billingUseHomeAddress.static),callback:function ($$v) {_vm.$set(_vm.mapping.billingUseHomeAddress, \"static\", $$v)},expression:\"mapping.billingUseHomeAddress.static\"}})],1),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.mapping.billingUseHomeAddress.useStatic || !_vm.mapping.billingUseHomeAddress.static),expression:\"!mapping.billingUseHomeAddress.useStatic || !mapping.billingUseHomeAddress.static\"}]},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.billingAddress.label', 'Billing address (if differs from homeaddress)')},model:{value:(_vm.mapping.billingAddress),callback:function ($$v) {_vm.$set(_vm.mapping, \"billingAddress\", $$v)},expression:\"mapping.billingAddress\"}}),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.billingPostalcode.label', 'Billing postal code')},model:{value:(_vm.mapping.billingPostalcode),callback:function ($$v) {_vm.$set(_vm.mapping, \"billingPostalcode\", $$v)},expression:\"mapping.billingPostalcode\"}}),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.billingCity.label', 'Billing city')},model:{value:(_vm.mapping.billingCity),callback:function ($$v) {_vm.$set(_vm.mapping, \"billingCity\", $$v)},expression:\"mapping.billingCity\"}})],1),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.yearGrade.label', 'Grade')},model:{value:(_vm.mapping.yearGrade),callback:function ($$v) {_vm.$set(_vm.mapping, \"yearGrade\", $$v)},expression:\"mapping.yearGrade\"}}),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.note.label', 'Notes')},model:{value:(_vm.mapping.note),callback:function ($$v) {_vm.$set(_vm.mapping, \"note\", $$v)},expression:\"mapping.note\"}}),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.timitNote.label', 'Timit notes to coordinators')},model:{value:(_vm.mapping.timitNote),callback:function ($$v) {_vm.$set(_vm.mapping, \"timitNote\", $$v)},expression:\"mapping.timitNote\"}}),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.tags.label', 'Tags')},model:{value:(_vm.mapping.groups),callback:function ($$v) {_vm.$set(_vm.mapping, \"groups\", $$v)},expression:\"mapping.groups\"}})],1)],1)],1)],1),_c('v-flex',{attrs:{\"sm12\":\"\",\"md3\":\"\"}},[(_vm.mapping)?_c('passenger-utility-mapper',{attrs:{\"passengerMapping\":_vm.mapping}}):_vm._e()],1),_c('v-flex',{attrs:{\"sm12\":\"\",\"md4\":\"\"}},[_c('phone-numbers-mapper',{attrs:{\"value\":_vm.mappings.phoneNumbers},on:{\"input\":_vm.onPhoneNumberMappingsChanged}})],1)],1)],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-flex',{class:_vm.property.allowStatic ? 'xs8' : 'xs12'},[_c('mapping-header-select',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.property.useStatic),expression:\"!property.useStatic\"}],attrs:{\"label\":_vm.property.required ? _vm.label + '*' : _vm.label},model:{value:(_vm.property.cell),callback:function ($$v) {_vm.$set(_vm.property, \"cell\", $$v)},expression:\"property.cell\"}}),_vm._t(\"default\",[_c('v-text-field',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.property.useStatic),expression:\"property.useStatic\"}],attrs:{\"label\":_vm.property.required ? _vm.label + '*' : _vm.label},model:{value:(_vm.property.static),callback:function ($$v) {_vm.$set(_vm.property, \"static\", $$v)},expression:\"property.static\"}})])],2),(_vm.property.allowStatic)?_c('v-flex',{attrs:{\"xs4\":\"\"}},[_c('v-checkbox',{attrs:{\"label\":_vm.$t('importer.setDefaultValue')},model:{value:(_vm.property.useStatic),callback:function ($$v) {_vm.$set(_vm.property, \"useStatic\", $$v)},expression:\"property.useStatic\"}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-select',{attrs:{\"label\":_vm.label,\"items\":_vm.headers,\"value\":_vm.selectedColumn,\"item-text\":\"text\",\"item-value\":\"value\",\"clearable\":\"\"},on:{\"input\":_vm.selectColumn}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\n\r\n@Component({\r\n components: {\r\n \r\n },\r\n})\r\nexport default class MappingHeaderSelect extends Vue {\r\n selectedColumn: string | null = null;\r\n \r\n @Prop({ default: '' }) private label: string;\r\n\r\n @Prop({ default: null }) private value: string | null;\r\n @Watch('value', { immediate: true }) onValueChanged() {\r\n this.selectedColumn = this.value ? this.value : null;\r\n }\r\n\r\n get headers() {\r\n const headers = this.$store.state.importer.excelSheetHeaders;\r\n // const emptyOption = \r\n return this.$store.state.importer.excelSheetHeaders;\r\n }\r\n\r\n selectColumn(column: string) {\r\n this.$emit('input', column);\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MappingHeaderSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MappingHeaderSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MappingHeaderSelect.vue?vue&type=template&id=81ce84ee&\"\nimport script from \"./MappingHeaderSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./MappingHeaderSelect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { IPropertyMapping } from '@/typings/import';\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport MappingHeaderSelect from '@/components/Importer/MappingHeaderSelect.vue';\r\n@Component({\r\n components: {\r\n MappingHeaderSelect,\r\n },\r\n})\r\nexport default class MappingPropertyInput extends Vue {\r\n private property: IPropertyMapping | null = null;\r\n\r\n @Prop({ default: '' }) private label: string;\r\n\r\n @Prop({ required: true }) private value: IPropertyMapping;\r\n @Watch('value', { immediate: true }) onValueChanged() {\r\n this.property = this.value;\r\n } \r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MappingPropertyInput.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MappingPropertyInput.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MappingPropertyInput.vue?vue&type=template&id=71b2ff14&\"\nimport script from \"./MappingPropertyInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./MappingPropertyInput.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_c('div',{staticClass:\"subheading\"},[_vm._v(_vm._s(_vm.$t('generic.utilities')))])]),_c('v-card-text',[_c('v-form',[_c('v-list',{staticClass:\"utilities-list\",attrs:{\"subheader\":\"\",\"single-line\":\"\"}},_vm._l((_vm.utilityMappings),function(utility){return _c('v-list-tile',{key:utility.propertyName},[_c('mapping-property-input',{attrs:{\"label\":_vm.getUtilityLabel(utility.propertyName)},model:{value:(_vm.passengerMapping[utility.propertyName]),callback:function ($$v) {_vm.$set(_vm.passengerMapping, utility.propertyName, $$v)},expression:\"passengerMapping[utility.propertyName]\"}})],1)}),1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Passenger from '@/components/Passenger/models/Passenger';\r\nimport { IEntityMapping, IPropertyMapping } from '@/typings/import';\r\n\r\nexport default class PassengerMapping implements IEntityMapping {\r\n static readonly UTILITY_KEY = 'utility';\r\n static readonly PROPERTY_MAPPING_UTILITIES = 'utilities';\r\n static readonly PROPERTY_MAPPING_DESTINATION = 'destination';\r\n static readonly PROPERTY_MAPPING_SECONDARY_DESTINATION = 'secondaryDestination';\r\n static readonly PROPERTY_MAPPING_SSN = 'ssn';\r\n\r\n name: IPropertyMapping = {\r\n propertyName: 'name',\r\n propertyType: 'string',\r\n required: true,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n externalId: IPropertyMapping = {\r\n propertyName: 'externalId',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n ssn: IPropertyMapping = {\r\n propertyName: 'ssn',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n destination: IPropertyMapping = {\r\n propertyName: 'destination',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n secondaryDestination: IPropertyMapping = {\r\n propertyName: 'secondaryDestination',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n homeAddress: IPropertyMapping = {\r\n propertyName: 'homeAddress',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n homeCity: IPropertyMapping = {\r\n propertyName: 'homeCity',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n homePostalcode: IPropertyMapping = {\r\n propertyName: 'homePostalcode',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n pickupAddress: IPropertyMapping = {\r\n propertyName: 'pickupAddress',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false,\r\n };\r\n billingUseHomeAddress: IPropertyMapping = {\r\n propertyName: 'billingUseHomeAddress',\r\n propertyType: 'boolean',\r\n required: false,\r\n static: 'true',\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: true\r\n };\r\n billingAddress: IPropertyMapping = {\r\n propertyName: 'billingAddress',\r\n propertyType: 'string | null',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n billingPostalcode: IPropertyMapping = {\r\n propertyName: 'billingAddress',\r\n propertyType: 'string | null',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n billingCity: IPropertyMapping = {\r\n propertyName: 'billingAddress',\r\n propertyType: 'string | null',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n yearGrade: IPropertyMapping = {\r\n propertyName: 'yearGrade',\r\n propertyType: 'number',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n note: IPropertyMapping = {\r\n propertyName: 'note',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n timitNote: IPropertyMapping = {\r\n propertyName: 'timitNote',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n language: IPropertyMapping = {\r\n propertyName: 'language',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n groups: IPropertyMapping = {\r\n propertyName: 'groups',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n\r\n constructor(mapping?: IEntityMapping) {\r\n if (mapping) {\r\n Object.keys(mapping).forEach(k => this[k] = mapping[k]);\r\n }\r\n\r\n if (!this.props.some(p => p && p.propertyName && p.propertyName.includes(PassengerMapping.UTILITY_KEY))) {\r\n Passenger.utilities.forEach(u => {\r\n const name = `${PassengerMapping.UTILITY_KEY}-${u.id}`;\r\n this[name] = {\r\n propertyName: `${name}`,\r\n propertyType: 'string',\r\n required: false,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n });\r\n }\r\n }\r\n\r\n get props(): IPropertyMapping[] {\r\n return Object.keys(this).map(k => this[k]);\r\n }\r\n\r\n isValid(): boolean {\r\n return true;\r\n }\r\n\r\n updateSearchProperty(searchProperty: IPropertyMapping) {\r\n let updatedProperty: IPropertyMapping | null = null;\r\n switch (searchProperty.propertyName) {\r\n case 'name':\r\n updatedProperty = this.name;\r\n break;\r\n case 'externalId':\r\n updatedProperty = this.externalId;\r\n break;\r\n case 'ssn':\r\n updatedProperty = this.ssn;\r\n break;\r\n }\r\n if (!updatedProperty) {\r\n return;\r\n }\r\n\r\n updatedProperty.cell = searchProperty.cell;\r\n updatedProperty.static = searchProperty.static;\r\n updatedProperty.useStatic = searchProperty.useStatic;\r\n }\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { IEntityMapping } from \"@/typings/import\";\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport Passenger from \"@/components/Passenger/models/Passenger\";\r\nimport MappingPropertyInput from \"@/components/Importer/MappingPropertyInput.vue\";\r\nimport PassengerMapping from '@/components/Importer/models/passenger/PassengerMapping';\r\n\r\n@Component({\r\n components: {\r\n MappingPropertyInput\r\n }\r\n})\r\nexport default class PassengerUtilityMapper extends Vue {\r\n selectedUtilities: string = \"\";\r\n\r\n @Prop({ required: true }) passengerMapping: IEntityMapping;\r\n\r\n get utilities() {\r\n return Passenger.utilities.map(u => u);\r\n }\r\n\r\n get utilityMappings() {\r\n if (!this.passengerMapping || !this.passengerMapping.props) {\r\n return [];\r\n }\r\n const utilityMappings = this.passengerMapping.props\r\n .filter(p => p && p.propertyName && p.propertyName.includes(PassengerMapping.UTILITY_KEY));\r\n return utilityMappings;\r\n }\r\n\r\n getUtilityLabel(propertyName: string) {\r\n const nameParts = propertyName.split('-');\r\n if (nameParts.length !== 2) {\r\n return '';\r\n }\r\n const id = nameParts[1];\r\n const utility = this.utilities.find(u => u.id === parseInt(id, 10));\r\n if (!utility) {\r\n return '';\r\n }\r\n return this.$i18n.translate('utility.title.' + utility.title, utility.title);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerUtilityMapper.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerUtilityMapper.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerUtilityMapper.vue?vue&type=template&id=a67e583c&\"\nimport script from \"./PassengerUtilityMapper.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerUtilityMapper.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_c('div',{staticClass:\"subheading\"},[_vm._v(_vm._s(_vm.$t('importer.phoneNumberInfo')))])]),_vm._l((_vm.mappings),function(mapping,index){return _c('v-card-text',{key:index},[_c('phone-number-mapper',{attrs:{\"index\":index,\"value\":mapping},on:{\"input\":function($event){return _vm.handleMappingChanged(mapping, index)},\"delete\":function($event){return _vm.removeMapping(index)}}})],1)}),_c('v-card-actions',[_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.addMapping}},[_vm._v(_vm._s(_vm.$t('importer.addPhoneNumber')))])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import IPassengerPhonNumberViewModel from '@/components/Passenger/models/IPassengerPhoneNumberViewModel';\r\nimport { IEntityMapping, IPropertyMapping } from '@/typings/import';\r\n\r\nexport default class PhoneNumberMapping\r\n implements IEntityMapping {\r\n\r\n static readonly NON_ENTITY_MAPPINGS = [ 'passengerName', 'passengerExternalId', 'passengerSsn', 'creationColumn' ];\r\n static readonly ENTITY_CREATION_MAPPING = 'creationColumn';\r\n\r\n passengerName: IPropertyMapping = {\r\n propertyName: 'passengerName',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n passengerExternalId: IPropertyMapping = {\r\n propertyName: 'passengerExternalId',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n passengerSsn: IPropertyMapping = {\r\n propertyName: 'passengerSsn',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n creationColumn: IPropertyMapping = {\r\n propertyName: 'creationColumn',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n number: IPropertyMapping = {\r\n propertyName: 'number',\r\n propertyType: 'string',\r\n required: true,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n sms: IPropertyMapping = {\r\n propertyName: 'sms',\r\n propertyType: 'boolean',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n showToDriver: IPropertyMapping = {\r\n propertyName: 'showToDriver',\r\n propertyType: 'boolean',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n assistant: IPropertyMapping = {\r\n propertyName: 'assistant',\r\n propertyType: 'boolean',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n\r\n constructor(mapping?: IEntityMapping) {\r\n if (mapping) {\r\n Object.keys(mapping).forEach(k => this[k] = mapping[k]);\r\n }\r\n }\r\n\r\n get props(): IPropertyMapping[] {\r\n return Object.keys(this).map(k => this[k]);\r\n }\r\n\r\n isValid(): boolean {\r\n return true;\r\n }\r\n\r\n updateSearchProperty(searchProperty: IPropertyMapping) {\r\n let updatedProperty: IPropertyMapping | null = null;\r\n switch (searchProperty.propertyName) {\r\n case 'name':\r\n updatedProperty = this.passengerName;\r\n break;\r\n case 'externalId':\r\n updatedProperty = this.passengerExternalId;\r\n break;\r\n case 'ssn':\r\n updatedProperty = this.passengerSsn;\r\n break;\r\n }\r\n if (!updatedProperty) {\r\n return;\r\n }\r\n\r\n updatedProperty.cell = searchProperty.cell;\r\n updatedProperty.static = searchProperty.static;\r\n updatedProperty.useStatic = searchProperty.useStatic;\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"subheading\"},[_vm._v(_vm._s(_vm.$t('generic.phoneNumber'))+\" \"+_vm._s(_vm.index + 1))])]),_c('v-card-text',[_c('v-form',[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('importer.determineCreationPhoneNumber')},model:{value:(_vm.mapping.creationColumn),callback:function ($$v) {_vm.$set(_vm.mapping, \"creationColumn\", $$v)},expression:\"mapping.creationColumn\"}}),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.phoneNumber.label','Phone number')},model:{value:(_vm.mapping.number),callback:function ($$v) {_vm.$set(_vm.mapping, \"number\", $$v)},expression:\"mapping.number\"}}),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.phoneNumber.sms','Sms')},model:{value:(_vm.mapping.sms),callback:function ($$v) {_vm.$set(_vm.mapping, \"sms\", $$v)},expression:\"mapping.sms\"}},[_c('v-checkbox',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mapping.sms.useStatic),expression:\"mapping.sms.useStatic\"}],attrs:{\"label\":_vm.$t('passenger.prop.phoneNumber.sms','Sms')},model:{value:(_vm.mapping.sms.static),callback:function ($$v) {_vm.$set(_vm.mapping.sms, \"static\", $$v)},expression:\"mapping.sms.static\"}})],1),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.phoneNumber.shonwToDriver','Shown to driver')},model:{value:(_vm.mapping.showToDriver),callback:function ($$v) {_vm.$set(_vm.mapping, \"showToDriver\", $$v)},expression:\"mapping.showToDriver\"}},[_c('v-checkbox',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mapping.showToDriver.useStatic),expression:\"mapping.showToDriver.useStatic\"}],attrs:{\"label\":_vm.$t('passenger.prop.phoneNumber.shonwToDriver','Shown to driver')},model:{value:(_vm.mapping.showToDriver.static),callback:function ($$v) {_vm.$set(_vm.mapping.showToDriver, \"static\", $$v)},expression:\"mapping.showToDriver.static\"}})],1),_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.phoneNumber.assistant','Assistant')},model:{value:(_vm.mapping.assistant),callback:function ($$v) {_vm.$set(_vm.mapping, \"assistant\", $$v)},expression:\"mapping.assistant\"}},[_c('v-checkbox',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mapping.assistant.useStatic),expression:\"mapping.assistant.useStatic\"}],attrs:{\"label\":_vm.$t('passenger.prop.phoneNumber.assistant','Assistant')},model:{value:(_vm.mapping.assistant.static),callback:function ($$v) {_vm.$set(_vm.mapping.assistant, \"static\", $$v)},expression:\"mapping.assistant.static\"}})],1),_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"red\"},on:{\"click\":_vm.removeMapping}},[_vm._v(_vm._s(_vm.$t('generic.delete')))])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { IEntityMapping } from '@/typings/import';\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport MappingPropertyInput from '@/components/Importer/MappingPropertyInput.vue';\r\nimport IPassengerPhonNumberViewModel from '@/components/Passenger/models/IPassengerPhoneNumberViewModel';\r\n\r\n@Component({\r\n components: {\r\n MappingPropertyInput,\r\n },\r\n})\r\nexport default class PhoneNumberMapper extends Vue {\r\n mapping: IEntityMapping | null = null;\r\n\r\n @Prop({ required: true }) index: number;\r\n @Prop({ required: true }) value: IEntityMapping;\r\n\r\n @Watch('value', { immediate: true }) onValueChanged() {\r\n this.mapping = this.value;\r\n }\r\n\r\n @Watch('mapping', { deep: true, immediate: true }) onMappingChanged() {\r\n this.$emit('input', this.mapping);\r\n }\r\n\r\n removeMapping() {\r\n this.$emit('delete');\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PhoneNumberMapper.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PhoneNumberMapper.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PhoneNumberMapper.vue?vue&type=template&id=5de9fb79&\"\nimport script from \"./PhoneNumberMapper.vue?vue&type=script&lang=ts&\"\nexport * from \"./PhoneNumberMapper.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { IEntityMapping } from '@/typings/import';\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport IPassengerPhonNumberViewModel from '@/components/Passenger/models/IPassengerPhoneNumberViewModel';\r\nimport PhoneNumberMapping from '../models/phoneNumber/PhoneNumberMapping';\r\nimport PhoneNumberMapper from '@/components/Importer/phoneNumber/PhoneNumberMapper.vue'\r\n\r\n@Component({\r\n components: {\r\n PhoneNumberMapper,\r\n },\r\n})\r\nexport default class PhoneNumbersMapper extends Vue {\r\n mappings: Array> = [];\r\n\r\n @Prop({ required: true }) value: Array>;\r\n\r\n @Watch('value', { immediate: true }) onValueChanged() {\r\n this.mappings = this.value;\r\n }\r\n\r\n handleMappingChanged(mapping: IEntityMapping, index: number) {\r\n this.mappings.splice(index, 1, mapping);\r\n this.$emit('input', this.mappings);\r\n }\r\n\r\n addMapping() {\r\n const firstMapping = this.mappings.find(x => x);\r\n let configs = null;\r\n if (firstMapping) {\r\n // Give the new mapper passenger matching properties from the previous one\r\n configs = {};\r\n firstMapping.props.filter(p => PhoneNumberMapping.NON_ENTITY_MAPPINGS.includes(p.propertyName))\r\n .filter(p => p.propertyName !== PhoneNumberMapping.ENTITY_CREATION_MAPPING)\r\n .forEach(p => {\r\n configs[p.propertyName] = JSON.parse(JSON.stringify(p));\r\n });\r\n }\r\n\r\n const newMapping = new PhoneNumberMapping(configs);\r\n this.mappings.push(newMapping);\r\n this.$emit('input', this.mappings);\r\n }\r\n\r\n removeMapping(index: number) {\r\n this.mappings.splice(index, 1);\r\n this.$emit('input', this.mappings);\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PhoneNumbersMapper.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PhoneNumbersMapper.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PhoneNumbersMapper.vue?vue&type=template&id=92b3cb48&\"\nimport script from \"./PhoneNumbersMapper.vue?vue&type=script&lang=ts&\"\nexport * from \"./PhoneNumbersMapper.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { IEntityMapping } from '@/typings/import';\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport Passenger from '@/components/Passenger/models/Passenger';\r\nimport MappingPropertyInput from '@/components/Importer/MappingPropertyInput.vue';\r\nimport DestinationSelector from '@/components/Passenger/components/DestinationSelector.vue';\r\nimport Destination from '@/components/Passenger/models/Destination';\r\nimport PassengerUtilityMapper from '@/components/Importer/passenger/PassengerUtilityMapper.vue';\r\nimport PhoneNumbersMapper from '@/components/Importer/phoneNumber/PhoneNumbersMapper.vue';\r\nimport { IMappers } from '../ImportSelectionStep.vue';\r\nimport IPassengerPhonNumberViewModel from '@/components/Passenger/models/IPassengerPhoneNumberViewModel';\r\n\r\n@Component({\r\n components: {\r\n DestinationSelector,\r\n MappingPropertyInput,\r\n PassengerUtilityMapper,\r\n PhoneNumbersMapper,\r\n },\r\n})\r\nexport default class PassengerImportMapper extends Vue {\r\n mainDestination: Destination | null;\r\n secondaryDestination: Destination | null;\r\n mapping: IEntityMapping | null = null;\r\n\r\n showMappings: boolean = true;\r\n\r\n @Prop({ required: true }) value: IEntityMapping;\r\n @Prop({ required: true }) mappings: IMappers;\r\n\r\n @Watch('value', { immediate: true }) onValueChanged() {\r\n this.mapping = this.value;\r\n }\r\n\r\n @Watch('mapping', { deep: true, immediate: true }) onMappingChanged() {\r\n this.$emit('input', this.mapping);\r\n }\r\n\r\n get organizationId(): string | null {\r\n return this.$route.params.organizationId ?? null;\r\n }\r\n\r\n get destinations(): Destination[] {\r\n return this.$store.state.destination.destinations;\r\n }\r\n\r\n selectMainDestination(destinationId: number) {\r\n const destination = this.destinations.find(d => d.id === destinationId);\r\n this.mainDestination = destination || null;\r\n \r\n const prop = this.mapping.props.find(p => p.propertyName === 'destination');\r\n if (prop) {\r\n prop.static = destination.alias;\r\n }\r\n }\r\n selectSecondaryDestination(destinationId: number) {\r\n const destination = this.destinations.find(d => d.id === destinationId);\r\n this.secondaryDestination = destination || null;\r\n \r\n const prop = this.mapping.props.find(p => p.propertyName === 'secondaryDestination');\r\n if (prop) {\r\n prop.static = destination.alias;\r\n }\r\n }\r\n\r\n onPhoneNumberMappingsChanged(mappings: Array>) {\r\n this.$emit('phoneNumberMappingsChange', mappings);\r\n }\r\n\r\n}\r\n","export enum EEntityMatchType {\r\n Unknown = 0,\r\n ExternalId = 1,\r\n Ssn = 2,\r\n Name = 3,\r\n Created = 4\r\n}\r\n\r\nexport enum EEntityImportState {\r\n Unknown = 0,\r\n Mapped = 1,\r\n Imported = 2,\r\n Failed = 3,\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerImportMapper.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerImportMapper.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerImportMapper.vue?vue&type=template&id=40c17f03&\"\nimport script from \"./PassengerImportMapper.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerImportMapper.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.items,\"select-all\":\"\",\"pagination\":_vm.pagination},on:{\"update:pagination\":function($event){_vm.pagination=$event}},scopedSlots:_vm._u([{key:\"headers\",fn:function(props){return [_c('tr',{staticStyle:{\"text-align\":\"left\"}},[_c('th',{staticStyle:{\"text-align\":\"center\"},attrs:{\"ml-2\":\"\"}},[_c('v-checkbox',{attrs:{\"input-value\":props.all,\"indeterminate\":props.indeterminate,\"primary\":\"\",\"hide-details\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleAll($event)}}})],1),_c('th',[_vm._v(_vm._s(_vm.$t('importer.excelRow')))]),_c('th',[_vm._v(_vm._s(_vm.$t('importer.state')))]),_c('th',[_vm._v(\"Id\")]),_vm._l((props.headers),function(header){return _c('th',{key:header.text,class:['column sortable', _vm.pagination.descending ? 'desc' : 'asc', header.value === _vm.pagination.sortBy ? 'active' : '']},[_vm._v(_vm._s(header.text))])})],2)]}},{key:\"items\",fn:function(props){return [_c('imports-table-row',{attrs:{\"headers\":_vm.headers,\"entity\":props.item},on:{\"selectRow\":_vm.selectRow}})]}}]),model:{value:(_vm.selectedItems),callback:function ($$v) {_vm.selectedItems=$$v},expression:\"selectedItems\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{class:_vm.rowImportStateClass,on:{\"click\":function($event){$event.stopPropagation();return _vm.selectRow($event)}}},[_c('td',{on:{\"click\":function($event){$event.stopPropagation();return _vm.selectItem($event)}}},[_c('v-checkbox',{attrs:{\"value\":_vm.entity.selected,\"primary\":\"\",\"hide-details\":\"\"}})],1),_c('td',[_vm._v(_vm._s(_vm.entity.excelRowIndex))]),_c('td',{class:_vm.matchedByClass},[_vm._v(\" \"+_vm._s(_vm.$t((\"importer.entityMatchType.\" + (_vm.entityMatchType[_vm.entity.matchedBy]))))+\" \")]),_c('td',[_vm._v(_vm._s(_vm.entity.entity.id))]),_vm._l((_vm.shownPropertyUpdates),function(propertyUpdate){return _c('imports-table-cell',{key:propertyUpdate.propertyName,attrs:{\"propertyUpdate\":propertyUpdate}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',{class:_vm.cellClass},[_vm._v(_vm._s(_vm.propertyUpdateValue))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { IExcelRow, IPropertyMapping, IPropertyUpdate } from '@/typings/import';\r\n\r\nexport default class PropertyUpdateHelper {\r\n\r\n static getNewValueAsPropertyValue(propertyUpdate: IPropertyUpdate): T {\r\n return propertyUpdate.newValue as unknown as T;\r\n } \r\n\r\n static getNewValueFromMapping(propertyMapping: IPropertyMapping, row: IExcelRow) {\r\n if (propertyMapping.useStatic) {\r\n return propertyMapping.static;\r\n }\r\n if (propertyMapping.cell) {\r\n return row.excelRowData[propertyMapping.cell];\r\n }\r\n return null;\r\n }\r\n\r\n static propertyMappingIsDefined(propertyMapping: IPropertyMapping) {\r\n if (propertyMapping.useStatic) {\r\n return propertyMapping.static !== null && propertyMapping.static !== undefined;\r\n }\r\n return !!propertyMapping.cell;\r\n }\r\n\r\n /**\r\n * Returns propertyupdates set value, if no value is set, gives default value.\r\n */\r\n static getValue(propertyUpdate: IPropertyUpdate) {\r\n let value = propertyUpdate.doNotUpdate \r\n ? propertyUpdate.oldValue : propertyUpdate.overrideValue \r\n ? propertyUpdate.overrideValue : propertyUpdate.newValue;\r\n \r\n if (value !== null && value !== undefined) {\r\n switch (propertyUpdate.propertyType) {\r\n case 'number':\r\n case 'number | null':\r\n return parseFloat(value as unknown as string) as any;\r\n case 'string | null':\r\n case 'string':\r\n return (value as unknown as string).trim();\r\n case 'boolean':\r\n if (typeof(value) === 'string') {\r\n switch (value as unknown as string) {\r\n case 'true':\r\n value = true as any;\r\n break;\r\n case 'false':\r\n value = false as any;\r\n break;\r\n default:\r\n value = (value as unknown as string).trim() ? true as any : false as any\r\n break;\r\n }\r\n }\r\n return value as any;\r\n default:\r\n return value as any;\r\n } \r\n }\r\n\r\n // Exceptions to regular type rules\r\n // TODO: It might be better to define default value in property mapping and apply that to property update\r\n switch (propertyUpdate.propertyName) {\r\n case 'billingUseHomeAddress':\r\n return true;\r\n default:\r\n break;\r\n }\r\n // Regular type default values\r\n switch (propertyUpdate.propertyType) {\r\n case 'number':\r\n return 0;\r\n case 'number | null':\r\n case 'string | null':\r\n return null;\r\n case 'string':\r\n return '';\r\n case 'boolean':\r\n return false;\r\n default:\r\n return undefined;\r\n }\r\n }\r\n}\r\n","\n\n\n\n\r\nimport { IPropertyUpdate } from '@/typings/import';\r\nimport { Component, Prop, Vue, Watch, } from \"vue-property-decorator\";\r\nimport PropertyUpdateHelper from './models/PropertyUpdateHelper';\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class PropertyUpdateRow extends Vue {\r\n isValid: boolean = true;\r\n @Prop({ required: true }) private propertyUpdate: IPropertyUpdate;\r\n\r\n get cellClass() {\r\n switch (this.propertyUpdate.propertyName) {\r\n case 'destination':\r\n case 'secondaryDestination':\r\n const destinations = this.$store.state.destination.destinations;\r\n return this.propertyUpdate.isValid(destinations) ? '' : 'red';\r\n default:\r\n return this.propertyUpdate.isValid() ? '' : 'red';\r\n }\r\n }\r\n\r\n get propertyUpdateValue() {\r\n return PropertyUpdateHelper.getValue(this.propertyUpdate);\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ImportsTableCell.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ImportsTableCell.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ImportsTableCell.vue?vue&type=template&id=4d361ecf&\"\nimport script from \"./ImportsTableCell.vue?vue&type=script&lang=ts&\"\nexport * from \"./ImportsTableCell.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { IEntity } from '@/typings/import';\r\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\r\nimport { EEntityImportState, EEntityMatchType } from './enums';\r\nimport { IImportsTableHeader } from './ImportsTable.vue';\r\nimport ImportsTableCell from '@/components/Importer/ImportsTableCell.vue';\r\n\r\n@Component({\r\n components: {\r\n ImportsTableCell,\r\n },\r\n})\r\nexport default class PropertyUpdateRow extends Vue {\r\n entityMatchType = EEntityMatchType;\r\n\r\n @Prop({ required: true }) private entity: IEntity;\r\n @Prop({ required: true }) private headers: IImportsTableHeader[];\r\n\r\n get headerValues() {\r\n return this.headers.map(h => h.value);\r\n }\r\n get shownPropertyUpdates() {\r\n return this.headerValues.map(hv => this.entity.propertyUpdates.find(pu => pu.propertyName === hv))\r\n .filter(x => x);\r\n }\r\n\r\n get rowImportStateClass() {\r\n switch (this.entity.importState) {\r\n case EEntityImportState.Unknown:\r\n case EEntityImportState.Mapped:\r\n return '';\r\n case EEntityImportState.Imported:\r\n return 'color: green lighten-4';\r\n case EEntityImportState.Failed:\r\n return 'color: red lighten-4';\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n get matchedByClass() {\r\n switch (this.entity.matchedBy) {\r\n case EEntityMatchType.Created:\r\n return 'accent';\r\n case EEntityMatchType.ExternalId:\r\n case EEntityMatchType.Ssn:\r\n case EEntityMatchType.Name:\r\n return 'primary';\r\n default:\r\n return 'red';\r\n }\r\n }\r\n\r\n selectRow() {\r\n this.$emit('selectRow', this.entity);\r\n }\r\n\r\n selectItem() {\r\n this.entity.selected = !this.entity.selected;\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ImportsTableRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ImportsTableRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ImportsTableRow.vue?vue&type=template&id=f64a077e&\"\nimport script from \"./ImportsTableRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./ImportsTableRow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.entity.propertyUpdates,\"hide-actions\":\"\",\"pagination\":_vm.pagination},on:{\"update:pagination\":function($event){_vm.pagination=$event}},scopedSlots:_vm._u([{key:\"items\",fn:function(props){return [_c('property-update-row',{attrs:{\"value\":props.item}})]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',[_vm._v(_vm._s(_vm.propertyUpdate.propertyName))]),_c('td',[_vm._v(_vm._s(_vm.propertyUpdate.oldValue))]),_c('td',[_vm._v(_vm._s(_vm.propertyUpdate.newValue))]),_c('td',[_c('v-checkbox',{model:{value:(_vm.propertyUpdate.doNotUpdate),callback:function ($$v) {_vm.$set(_vm.propertyUpdate, \"doNotUpdate\", $$v)},expression:\"propertyUpdate.doNotUpdate\"}})],1),_c('td',[_c('v-edit-dialog',{on:{\"open\":_vm.openOverrideEdit},scopedSlots:_vm._u([{key:\"input\",fn:function(){return [(_vm.showEdit)?_c(_vm.overrideInput.component,_vm._b({key:_vm.overrideInput.name,tag:\"component\",attrs:{\"value\":_vm.propertyUpdate.overrideValue},on:{\"input\":_vm.overrideInput.input}},'component',_vm.overrideInput.props,false)):_vm._e()]},proxy:true}])},[_vm._v(\" \"+_vm._s(_vm.propertyUpdate.overrideValue)+\" \")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { IPropertyMapping, IPropertyUpdate } from '@/typings/import';\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport DeductiblePaymentSelect from '@/components/DeductiblePaymentSelect.vue';\r\nimport DeductibleTypeSelect from '@/components/DeductibleTypeSelect.vue';\r\nimport QuotaTimeSelect from '@/components/QuotaTimeSelect.vue';\r\nimport TripDestinationsSelect from '@/components/TripDestinationsSelect.vue';\r\nimport TripDirectionsSelect from '@/components/TripDirectionsSelect.vue';\r\nimport DestinationSelector from '@/components/Passenger/components/DestinationSelector.vue';\r\nimport Destination from '../Passenger/models/Destination';\r\nimport PassengerMapping from './models/passenger/PassengerMapping';\r\n\r\ninterface IPropertyUpdateComponent {\r\n component: string;\r\n name: string;\r\n props: object;\r\n input: (value: any) => void;\r\n}\r\n\r\n@Component({\r\n components: {\r\n DeductiblePaymentSelect,\r\n DeductibleTypeSelect,\r\n QuotaTimeSelect,\r\n TripDestinationsSelect,\r\n TripDirectionsSelect,\r\n DestinationSelector,\r\n },\r\n})\r\nexport default class PropertyUpdateRow extends Vue {\r\n private propertyUpdate: IPropertyUpdate | null = null;\r\n private showEdit: boolean = false; \r\n\r\n @Prop({ required: true }) private value: IPropertyUpdate;\r\n @Watch('value', { immediate: true }) onValueChanged() {\r\n this.propertyUpdate = this.value;\r\n }\r\n\r\n get organizationId(): string | null {\r\n return this.$route.params.organizationId ?? null;\r\n }\r\n \r\n get overrideInputs(): IPropertyUpdateComponent[] {\r\n return [\r\n { \r\n component: 'VTextField', \r\n name: 'v-text-field', \r\n props: {}, \r\n input: (value) => this.setValue(value) \r\n },\r\n { \r\n component: 'DeductiblePaymentSelect', \r\n name: 'deductible-payment-select', \r\n props: {}, \r\n input: (value) => this.setValue(value) \r\n },\r\n { \r\n component: 'DeductibleTypeSelect', \r\n name: 'deductible-type-select', \r\n props: {}, \r\n input: (value) => this.setValue(value) \r\n },\r\n { \r\n component: 'QuotaTimeSelect', \r\n name: 'quota-time-select', \r\n props: {}, \r\n input: (value) => this.setValue(value) \r\n },\r\n { \r\n component: 'TripDestinationsSelect', \r\n name: 'trip-destinations-select', \r\n props: { }, \r\n input: (value) => this.setValue(value) \r\n },\r\n { \r\n component: 'TripDirectionsSelect', \r\n name: 'trip-directions-select', \r\n props: {}, \r\n input: (value) => this.setValue(value) \r\n },\r\n { \r\n component: 'DestinationSelector', \r\n name: 'destination-selector', \r\n props: { organizationId: this.organizationId }, \r\n input: (value) => this.setDestinationValue(value) \r\n },\r\n ];\r\n }\r\n\r\n get overrideInput(): IPropertyUpdateComponent {\r\n switch (this.propertyUpdate.propertyName) {\r\n case 'quotaTime':\r\n return this.overrideInputs.find(oi => oi.name === 'quota-time-select');\r\n case 'tripDestinations':\r\n return this.overrideInputs.find(oi => oi.name === 'trip-destinations-select');\r\n case 'tripDirection':\r\n return this.overrideInputs.find(oi => oi.name === 'trip-directions-select');\r\n case 'deductibleType':\r\n return this.overrideInputs.find(oi => oi.name === 'deductible-type-select');\r\n case 'deductiblePayment':\r\n return this.overrideInputs.find(oi => oi.name === 'deductible-payment-select');\r\n case PassengerMapping.PROPERTY_MAPPING_DESTINATION:\r\n case PassengerMapping.PROPERTY_MAPPING_SECONDARY_DESTINATION:\r\n return this.overrideInputs.find(oi => oi.name === 'destination-selector');\r\n default:\r\n return this.overrideInputs.find(oi => oi.name === 'v-text-field');\r\n }\r\n }\r\n\r\n openOverrideEdit() {\r\n this.showEdit = true;\r\n }\r\n\r\n setValue(value: any) {\r\n this.propertyUpdate.overrideValue = value;\r\n }\r\n\r\n setDestinationValue(value: any) {\r\n const destinations = this.$store.state.destination.destinations as Destination[];\r\n const destination = destinations.find(d => d.id === value);\r\n this.propertyUpdate.overrideValue = destination.alias as any;\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PropertyUpdateRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PropertyUpdateRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PropertyUpdateRow.vue?vue&type=template&id=46c4fdbe&\"\nimport script from \"./PropertyUpdateRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./PropertyUpdateRow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\r\nimport { IEntity } from '@/typings/import';\r\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\r\nimport PropertyUpdateRow from '@/components/Importer/PropertyUpdateRow.vue';\r\n@Component({\r\n components: {\r\n PropertyUpdateRow,\r\n },\r\n})\r\nexport default class PropertyUpdateTable extends Vue {\r\n pagination = {\r\n page: 1,\r\n rowsPerPage: -1, // -1 for All\r\n sortBy: 'name',\r\n };\r\n\r\n @Prop({ required: true }) entity: IEntity;\r\n\r\n get headers() {\r\n return [\r\n { value: 'propertyName', text: 'Kentän nimi' },\r\n { value: 'oldValue', text: 'Vanha arvo' },\r\n { value: 'newValue', text: 'Uusi arvo' },\r\n { value: 'doNotUpdate', text: 'Ă„lä päivitä' },\r\n { value: 'overrideValue', text: 'Ohitusarvo' },\r\n ];\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PropertyUpdateTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PropertyUpdateTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PropertyUpdateTable.vue?vue&type=template&id=0cf2f196&\"\nimport script from \"./PropertyUpdateTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./PropertyUpdateTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { IEntity, IEntityImporter } from '@/typings/import';\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport { EEntityImportState, EEntityMatchType } from '@/components/Importer/enums';\r\nimport ImportsTableRow from '@/components/Importer/ImportsTableRow.vue';\r\nimport Passenger from '@/components/Passenger/models/Passenger';\r\nimport PropertyUpdateTable from '@/components/Importer/PropertyUpdateTable.vue';\r\n\r\n@Component({\r\n components: {\r\n ImportsTableRow,\r\n PropertyUpdateTable,\r\n },\r\n})\r\nexport default class PassengerImportsTable extends Vue {\r\n\r\n selectedItems: Array> = [];\r\n\r\n pagination = {\r\n descending: true,\r\n page: 1,\r\n rowsPerPage: -1, // -1 for All\r\n sortBy: 'name',\r\n };\r\n\r\n @Prop({ required: true }) passengerImporter: IEntityImporter;\r\n @Watch('passengerImporter', { immediate: true }) onPassengerImporterChanged() {\r\n this.selectedItems = [];\r\n if (!this.passengerImporter) {\r\n return;\r\n }\r\n const selectedEntities = this.passengerImporter.entities.filter(x => x && x.entity).filter(e => e.selected);\r\n this.selectedItems = selectedEntities;\r\n }\r\n\r\n get headers() {\r\n return [\r\n { value: 'name', text: this.$t('passenger.prop.name.label', 'Name') },\r\n { value: 'externalId', text: this.$t('passenger.prop.externalId.label', 'External ID') },\r\n { value: 'ssn', text: this.$t('passenger.prop.ssn.label', 'Social Security Number') },\r\n { value: 'destination', text: this.$t('passenger.prop.destinations.main', 'Main Destination') },\r\n /*tslint:disable-next-line */\r\n { value: 'secondaryDestination', text: this.$t('passenger.prop.destinations.secondary', 'Secondary Destination') },\r\n { value: 'homeAddress', text: this.$t('passenger.prop.homeAddress.label', 'Home address') },\r\n { value: 'pickupAddress', text: this.$t('passenger.prop.pickupAddress.label', 'Pickup address') },\r\n { value: 'yearGrade', text: this.$t('passenger.prop.yearGrade.label', 'Grade') },\r\n { value: 'note', text: this.$t('passenger.prop.note.label', 'Notes') },\r\n { value: 'timitNote', text: this.$t('passenger.prop.timitNote.label', 'Timit notes to coordinators') },\r\n ];\r\n }\r\n\r\n get items() {\r\n const entities = this.passengerImporter.entities.filter(x => x && x.entity);\r\n return entities;\r\n }\r\n\r\n toggleAll() {\r\n if (this.selectedItems.length) {\r\n this.selectedItems = [];\r\n this.items.forEach(i => i.selected = false);\r\n return;\r\n }\r\n this.items.forEach(i => i.selected = true);\r\n this.selectedItems = this.items;\r\n }\r\n\r\n selectRow(row: IEntity) {\r\n this.$emit('selectRow', row);\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerImportsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerImportsTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerImportsTable.vue?vue&type=template&id=de82d256&\"\nimport script from \"./PassengerImportsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerImportsTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","import Destination from '@/components/Passenger/models/Destination';\r\nimport store from '@/store';\r\nimport { IEntity, IPropertyUpdate, IExcelRow, IEntityMapping, IPropertyMapping } from '@/typings/import';\r\nimport Passenger from '@/components/Passenger/models/Passenger';\r\nimport { EEntityImportState, EEntityMatchType } from '@/components/Importer/enums';\r\nimport PassengerMapping from './PassengerMapping';\r\nimport PropertyUpdateHelper from '../PropertyUpdateHelper';\r\n\r\nexport default class PassengerEntity implements IEntity {\r\n \r\n entity?: Passenger;\r\n matchedBy: EEntityMatchType;\r\n propertyUpdates: Array>;\r\n excelRowIndex: number;\r\n selected: boolean;\r\n importState: EEntityImportState;\r\n\r\n constructor(row: IExcelRow, index: number, mapping: IEntityMapping) {\r\n const propertyUpdates: Array> = mapping.props\r\n .filter(pm => {\r\n return pm && pm.propertyName && !pm.propertyName.startsWith(PassengerMapping.UTILITY_KEY)\r\n })\r\n .map(pm => {\r\n const propertyUpdate: IPropertyUpdate = {\r\n propertyName: pm.propertyName,\r\n propertyType: pm.propertyType,\r\n rowKey: pm.cell ? pm.cell : '',\r\n oldValue: null,\r\n newValue: PropertyUpdateHelper.getNewValueFromMapping(pm, row),\r\n doNotUpdate: false,\r\n overrideValue: null,\r\n isValid: () => false,\r\n };\r\n propertyUpdate.isValid = this.getIsValid(propertyUpdate, pm);\r\n return propertyUpdate;\r\n });\r\n \r\n const utilityUpdate = this.getUtilitiesPropertyUpdate(row, mapping);\r\n propertyUpdates.push(utilityUpdate);\r\n\r\n this.propertyUpdates = propertyUpdates;\r\n this.matchedBy = EEntityMatchType.Unknown;\r\n this.excelRowIndex = index;\r\n this.selected = false;\r\n this.importState = EEntityImportState.Mapped;\r\n }\r\n\r\n onMappingChanged(mapping: IEntityMapping, row: IExcelRow) {\r\n mapping.props.filter(pm => {\r\n return pm && pm.propertyName && !pm.propertyName.startsWith(PassengerMapping.UTILITY_KEY)\r\n }).forEach(pm => {\r\n const propertyUpdate = this.propertyUpdates.find(pu => pu.propertyName === pm.propertyName);\r\n if (propertyUpdate) {\r\n propertyUpdate.newValue = PropertyUpdateHelper.getNewValueFromMapping(pm, row);\r\n }\r\n });\r\n const utilityUpdateIndex = this.propertyUpdates.findIndex(p => p.propertyName === 'utilities');\r\n if (utilityUpdateIndex > -1) {\r\n this.propertyUpdates.splice(utilityUpdateIndex, 1, this.getUtilitiesPropertyUpdate(row, mapping));\r\n }\r\n }\r\n\r\n isValid(): boolean {\r\n return this.propertyUpdates.every(pu => pu.isValid());\r\n }\r\n\r\n private getIsValid(propertyUpdate: IPropertyUpdate, propertyMapping: IPropertyMapping) {\r\n \r\n if (!PropertyUpdateHelper.propertyMappingIsDefined(propertyMapping)) {\r\n return () => true;\r\n }\r\n\r\n // Always get the most up to date value via JS magic\r\n const getValue = () => PropertyUpdateHelper.getValue(propertyUpdate);\r\n \r\n switch (propertyUpdate.propertyName) {\r\n case 'name':\r\n return () => {\r\n return getValue().length > 3 && getValue().length <= 128 ? true : false\r\n };\r\n case 'destination':\r\n return (params: Destination[]) => {\r\n const value = getValue();\r\n return params.some(d => d.alias === value);\r\n }\r\n case 'homeAddress':\r\n return () => getValue() && getValue().length <= 512 ? true : false;\r\n case 'pickupAddress':\r\n return () => getValue() ? getValue().length <= 512 : true;\r\n case 'language':\r\n return () => getValue() ? getValue().length <= 128 : true;\r\n case 'note':\r\n return () => getValue() ? getValue().length <= 1024 : true;\r\n case 'timitNote':\r\n return () => getValue() ? getValue().length <= 2048 : true;\r\n case 'utilities':\r\n return () => getValue() ? getValue().length <= 32 : true;\r\n case 'email':\r\n return () => getValue() ? getValue().length <= 256 : true;\r\n case 'billingAddress':\r\n return () => getValue() ? getValue().length <= 512 : true;\r\n case 'billingPostalcode':\r\n return () => getValue() ? getValue().length <= 32 : true;\r\n case 'billingCity':\r\n return () => getValue() ? getValue().length <= 32 : true;\r\n case 'billingCity':\r\n return () => getValue() ? getValue().length <= 32 : true;\r\n default:\r\n return () => true;\r\n }\r\n }\r\n\r\n private getUtilitiesPropertyUpdate(row: IExcelRow, mapping: IEntityMapping) {\r\n const utilityUpdateNewValue = mapping.props\r\n .filter(p => p && p.propertyName && p.propertyName.includes(PassengerMapping.UTILITY_KEY))\r\n .map(p => {\r\n if (!p.cell) {\r\n return null;\r\n }\r\n const data = row.excelRowData[p.cell];\r\n const hasData = data ? data.trim() ? data : null : null;\r\n if (!hasData) {\r\n return null;\r\n }\r\n const nameParts = p.propertyName.split('-');\r\n if (nameParts.length !== 2) {\r\n return null;\r\n }\r\n return nameParts[1];\r\n })\r\n .filter(x => x)\r\n .join(',');\r\n\r\n const utilityUpdate: IPropertyUpdate = {\r\n propertyName: PassengerMapping.PROPERTY_MAPPING_UTILITIES,\r\n propertyType: 'string',\r\n rowKey: '',\r\n oldValue: null,\r\n newValue: utilityUpdateNewValue as unknown as object,\r\n doNotUpdate: false,\r\n overrideValue: null,\r\n isValid: () => false,\r\n }\r\n\r\n return utilityUpdate\r\n }\r\n}\r\n","import Destination from '@/components/Passenger/models/Destination';\r\nimport PassengerDestination from '@/components/Passenger/models/PassengerDestination';\r\nimport restService from '@/services/restService';\r\nimport {\r\n IEntity,\r\n IEntityImporter,\r\n IEntityMapping,\r\n IExcelRow,\r\n IPassengerMatchRequest,\r\n IPropertyUpdate\r\n} from '@/typings/import';\r\nimport Passenger from '@/components/Passenger/models/Passenger';\r\nimport { EEntityMatchType } from '@/components/Importer/enums';\r\nimport PassengerMapping from './PassengerMapping';\r\nimport PassengerEntity from './PassengerEntity';\r\nimport PropertyUpdateHelper from '../PropertyUpdateHelper';\r\nimport PassengerSearchMapping from './PassengerSearchMapping';\r\n// import store from '@/store/OrganizationStore';\r\n\r\nexport interface IPassengerImporterParams {\r\n destinations: Destination[];\r\n}\r\n\r\nexport class PassengerImporter implements IEntityImporter {\r\n data: IExcelRow[];\r\n mapping: IEntityMapping;\r\n entities: Array>;\r\n\r\n constructor(data: IExcelRow[], mapping: IEntityMapping) {\r\n this.data = data;\r\n this.mapping = mapping;\r\n this.entities = this.data.map((d, i) => new PassengerEntity(d, i, this.mapping));\r\n }\r\n\r\n async matchExisting(row: number, params: IPassengerImporterParams): Promise {\r\n const entities = this.entities.filter(e => e.excelRowIndex === row);\r\n\r\n let updatedEntities = [];\r\n for (const entity of entities) {\r\n const externalId = this.getNewValueString(entity, 'externalId');\r\n const ssn = this.getNewValueString(entity, 'ssn');\r\n const name = this.getNewValueString(entity, 'name');\r\n\r\n const request: IPassengerMatchRequest = { externalId, ssn, name };\r\n const result = await restService.passengers.matchPassengers(request);\r\n\r\n const foundEntities = result.map(r => {\r\n const entityResult = new PassengerEntity(this.data[row], row, this.mapping);\r\n entityResult.entity = new Passenger(r.result);\r\n entityResult.matchedBy = r.matchedBy;\r\n entityResult.propertyUpdates.forEach(pu => {\r\n pu.oldValue = entityResult.entity[pu.propertyName] || null;\r\n });\r\n\r\n const utilitiesProp = entityResult.propertyUpdates\r\n .find(pu => pu.propertyName === PassengerMapping.PROPERTY_MAPPING_UTILITIES);\r\n\r\n if (utilitiesProp) {\r\n const mappingPropertyValues = this.mapping.props.filter(mp => {\r\n if (!mp.propertyName.includes(PassengerMapping.UTILITY_KEY)) {\r\n return false;\r\n }\r\n const nameParts = mp.propertyName.split('-');\r\n if (nameParts.length !== 2) {\r\n return false;\r\n }\r\n return PropertyUpdateHelper.propertyMappingIsDefined(mp);\r\n })\r\n .map(mp => mp.propertyName.split('-')[1]);\r\n\r\n const undefinedPassengerUtilities = entityResult.entity.utilities.split(',')\r\n .filter(puv => !mappingPropertyValues.includes(puv));\r\n\r\n let updatedUtilityValues = PropertyUpdateHelper.getNewValueAsPropertyValue(utilitiesProp).split(',');\r\n updatedUtilityValues = updatedUtilityValues.concat(undefinedPassengerUtilities)\r\n .filter((c, i, a) => a.indexOf(c) === i);\r\n\r\n utilitiesProp.newValue = updatedUtilityValues.join(',') as any;\r\n }\r\n\r\n return entityResult;\r\n }).filter(e => {\r\n // Check that found match has primary and secondary destination in the correct movit instance\r\n // remove from matches if not\r\n\r\n let destinationMatch = true;\r\n\r\n const destProp = this.getDestinationPropertyUpdate(e);\r\n\r\n if (this.shouldUpdateProperty(destProp, e.matchedBy)) {\r\n destinationMatch = this\r\n .matchDestinationInSameMovitInstance(destProp, params.destinations, e.entity.movitInstanceId);\r\n }\r\n \r\n let secondaryDestinationMatch = true;\r\n if (e.entity.secondaryDestinationId) {\r\n\r\n const secondaryDestProp = this.getSecondaryDestinationPropertyUpdate(e);\r\n\r\n if (secondaryDestProp && this.shouldUpdateProperty(secondaryDestProp, e.matchedBy)) {\r\n secondaryDestinationMatch = this\r\n .matchDestinationInSameMovitInstance(secondaryDestProp, params.destinations, e.entity.movitInstanceId);\r\n }\r\n }\r\n return destinationMatch && secondaryDestinationMatch;\r\n });\r\n\r\n if (foundEntities.length === 0) {\r\n const newPassenger = new Passenger(null);\r\n entity.propertyUpdates\r\n .filter(pu => pu.propertyName !== PassengerMapping.PROPERTY_MAPPING_SSN)\r\n .forEach(pu => (newPassenger[pu.propertyName] = pu.newValue));\r\n\r\n entity.entity = newPassenger;\r\n entity.matchedBy = EEntityMatchType.Created;\r\n } else {\r\n const first = foundEntities.shift();\r\n entity.entity = first.entity;\r\n entity.matchedBy = first.matchedBy;\r\n entity.propertyUpdates = first.propertyUpdates;\r\n }\r\n \r\n updatedEntities = updatedEntities.concat(foundEntities);\r\n }\r\n\r\n this.entities = this.entities.concat(updatedEntities);\r\n return null; // TODO: Why should we return something?\r\n }\r\n\r\n async postEntity(entity: IEntity, params: IPassengerImporterParams): Promise {\r\n const passenger = entity.entity;\r\n if (!passenger) {\r\n return null;\r\n }\r\n\r\n const doNotUpdateProperties = [\r\n PassengerMapping.PROPERTY_MAPPING_DESTINATION,\r\n PassengerMapping.PROPERTY_MAPPING_SECONDARY_DESTINATION,\r\n PassengerMapping.PROPERTY_MAPPING_SSN,\r\n ];\r\n\r\n entity.propertyUpdates\r\n .filter(pu => !pu.doNotUpdate && !doNotUpdateProperties.includes(pu.propertyName))\r\n .filter(pu => this.shouldUpdateProperty(pu, entity.matchedBy))\r\n .forEach(pu => passenger[pu.propertyName] = PropertyUpdateHelper.getValue(pu));\r\n\r\n const destinationProperty = this.getDestinationPropertyUpdate(entity);\r\n\r\n if (destinationProperty && this.shouldUpdateProperty(destinationProperty, entity.matchedBy)) {\r\n const passengerDestination = this.getPassengerDestination(entity, params.destinations);\r\n if (passengerDestination === null) {\r\n return null;\r\n }\r\n \r\n passenger.passengerDestinations = [ passengerDestination ];\r\n }\r\n\r\n const secondaryDestProp = this.getSecondaryDestinationPropertyUpdate(entity);\r\n const secondaryDestValue = secondaryDestProp ? PropertyUpdateHelper.getValue(secondaryDestProp) : null;\r\n\r\n if (secondaryDestValue && this.shouldUpdateProperty(secondaryDestProp, entity.matchedBy)) {\r\n const destination = this.getDestination(secondaryDestProp, params.destinations);\r\n if (destination === null) {\r\n return null;\r\n }\r\n passenger.secondaryDestinationId = destination.id;\r\n }\r\n const importedPassenger = await this.createOrUpdatePassenger(passenger);\r\n\r\n const ssn = this.getSsnValue(entity);\r\n if (ssn && entity.matchedBy !== EEntityMatchType.Ssn) {\r\n const importedSsn = await restService.passengers.setPassengerSsn(importedPassenger.id, ssn);\r\n if (importedSsn) {\r\n importedPassenger.hasSsn = true;\r\n }\r\n }\r\n\r\n return importedPassenger;\r\n }\r\n\r\n onMappingChanged(mapping: IEntityMapping) {\r\n this.mapping = mapping;\r\n this.entities.forEach(e => e.onMappingChanged(mapping, this.data[e.excelRowIndex])\r\n );\r\n }\r\n\r\n private getNewValueString(entity: IEntity, propertyName: string): string {\r\n const property = entity.propertyUpdates.find(pu => pu.propertyName === propertyName);\r\n if (!property) {\r\n return '';\r\n }\r\n\r\n const newValue = property.newValue || null;\r\n if (newValue === null) {\r\n return '';\r\n }\r\n\r\n return (newValue as unknown) as string;\r\n }\r\n\r\n private getPassengerDestination(\r\n entity: IEntity,\r\n destinations: Destination[]\r\n ): PassengerDestination | null {\r\n const destProp = this.getDestinationPropertyUpdate(entity);\r\n\r\n const destination = this.getDestination(destProp, destinations);\r\n if (!destination) {\r\n return null;\r\n }\r\n\r\n const passengerDestination = new PassengerDestination(0, destination.id);\r\n\r\n return passengerDestination;\r\n }\r\n\r\n private getDestination(propertyUpdate: IPropertyUpdate, destinations: Destination[]) {\r\n const requiredPropertyNames = [\r\n PassengerMapping.PROPERTY_MAPPING_DESTINATION,\r\n PassengerMapping.PROPERTY_MAPPING_SECONDARY_DESTINATION,\r\n ];\r\n\r\n if (!propertyUpdate || !requiredPropertyNames.includes(propertyUpdate.propertyName)) {\r\n return null;\r\n }\r\n\r\n const destinationAlias = PropertyUpdateHelper.getValue(propertyUpdate);\r\n \r\n const destination = destinations.find(d => d.alias === destinationAlias);\r\n if (!destination) {\r\n return null;\r\n }\r\n return destination;\r\n }\r\n\r\n private matchDestinationInSameMovitInstance(\r\n propertyUpdate: IPropertyUpdate, \r\n destinations: Destination[], \r\n movitInstanceId: number\r\n ) {\r\n const destination = this.getDestination(propertyUpdate, destinations);\r\n if (!destination) {\r\n return false;\r\n }\r\n\r\n return destination.movitInstanceId === movitInstanceId;\r\n }\r\n\r\n private shouldUpdateProperty(propertyUpdate: IPropertyUpdate, matchedBy: EEntityMatchType) {\r\n if (matchedBy === EEntityMatchType.Created) {\r\n return true;\r\n }\r\n // Keep matched original values if no mapping has been given\r\n const mappingProperty = this.mapping.props.find(p => p.propertyName === propertyUpdate.propertyName);\r\n if (!mappingProperty) {\r\n return false;\r\n }\r\n return PropertyUpdateHelper.propertyMappingIsDefined(mappingProperty);\r\n }\r\n\r\n private getDestinationPropertyUpdate(entity: IEntity) {\r\n const destinationProperty = entity.propertyUpdates\r\n .find(pu => pu.propertyName === PassengerMapping.PROPERTY_MAPPING_DESTINATION);\r\n\r\n return destinationProperty || null;\r\n }\r\n\r\n private getSecondaryDestinationPropertyUpdate(entity: IEntity) {\r\n const secondaryDestination = entity.propertyUpdates\r\n .find(pu => pu.propertyName === PassengerMapping.PROPERTY_MAPPING_SECONDARY_DESTINATION);\r\n\r\n return secondaryDestination || null;\r\n }\r\n\r\n private async createOrUpdatePassenger(passenger: Passenger): Promise {\r\n if (passenger.id === 0) {\r\n const createdPassenger = await restService.passengers.createPassenger(passenger);\r\n return new Passenger(createdPassenger);\r\n }\r\n\r\n const updatedPassenger = await restService.passengers.updatePassenger(passenger);\r\n return new Passenger(updatedPassenger);\r\n }\r\n\r\n private getSsnValue(entity: IEntity) {\r\n const ssnPropertyUpdate = entity.propertyUpdates\r\n .find(pu => pu.propertyName === PassengerMapping.PROPERTY_MAPPING_SSN);\r\n \r\n if (!ssnPropertyUpdate) {\r\n return null;\r\n }\r\n\r\n if (!this.shouldUpdateProperty(ssnPropertyUpdate, entity.matchedBy)) {\r\n return null;\r\n }\r\n\r\n return PropertyUpdateHelper.getValue(ssnPropertyUpdate);\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',{on:{\"click\":function($event){_vm.showMappings = !_vm.showMappings}}},[_c('div',{staticClass:\"subheading\"},[_vm._v(_vm._s(_vm.$t('importer.passengerIdentificationInfo')))]),_c('v-spacer'),_c('v-icon',[_vm._v(_vm._s(_vm.showMappings ? 'expand_more' : 'expand_less'))])],1),_c('v-slide-y-transition',[_c('v-card-text',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showMappings),expression:\"showMappings\"}],attrs:{\"pt-0\":\"\"}},[_c('v-form',[_c('v-container',{attrs:{\"grid-list-md\":\"\",\"pa-0\":\"\"}},[_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-flex',{attrs:{\"xs4\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.name.label', 'Name')},model:{value:(_vm.mapping.name),callback:function ($$v) {_vm.$set(_vm.mapping, \"name\", $$v)},expression:\"mapping.name\"}})],1),_c('v-flex',{attrs:{\"xs4\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.externalId.label', 'External ID')},model:{value:(_vm.mapping.externalId),callback:function ($$v) {_vm.$set(_vm.mapping, \"externalId\", $$v)},expression:\"mapping.externalId\"}})],1),_c('v-flex',{attrs:{\"xs4\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('passenger.prop.ssn.label', 'Social Security Number')},model:{value:(_vm.mapping.ssn),callback:function ($$v) {_vm.$set(_vm.mapping, \"ssn\", $$v)},expression:\"mapping.ssn\"}})],1)],1)],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { IEntityMapping } from '@/typings/import';\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport Passenger from '@/components/Passenger/models/Passenger';\r\nimport MappingPropertyInput from '@/components/Importer/MappingPropertyInput.vue';\r\n\r\n@Component({\r\n components: {\r\n MappingPropertyInput,\r\n },\r\n})\r\nexport default class PassengerSearchMapper extends Vue {\r\n mapping: IEntityMapping | null = null;\r\n showMappings: boolean = true;\r\n\r\n @Prop({ required: true }) value: IEntityMapping;\r\n\r\n @Watch('value', { immediate: true }) onValueChanged() {\r\n this.mapping = this.value;\r\n }\r\n\r\n @Watch('mapping', { deep: true, immediate: true }) onMappingChanged() {\r\n this.$emit('input', this.mapping);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerSearchMapper.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerSearchMapper.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerSearchMapper.vue?vue&type=template&id=2f3b455e&\"\nimport script from \"./PassengerSearchMapper.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerSearchMapper.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","import Passenger from '@/components/Passenger/models/Passenger';\r\nimport { IEntityMapping, IPropertyMapping } from '@/typings/import';\r\n\r\nexport default class PassengerSearchMapping implements IEntityMapping {\r\n\r\n name: IPropertyMapping = {\r\n propertyName: 'name',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n externalId: IPropertyMapping = {\r\n propertyName: 'externalId',\r\n propertyType: 'string',\r\n required: false,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n ssn: IPropertyMapping = {\r\n propertyName: 'ssn',\r\n propertyType: 'string',\r\n required: false,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n \r\n constructor(mapping?: IEntityMapping) {\r\n if (mapping) {\r\n Object.keys(mapping).forEach(k => this[k] = mapping[k]);\r\n }\r\n }\r\n\r\n get props(): IPropertyMapping[] {\r\n return Object.keys(this).map(k => this[k]);\r\n }\r\n\r\n isValid(): boolean {\r\n return true;\r\n }\r\n\r\n updateSearchProperty(searchProperty: IPropertyMapping) {\r\n let updatedProperty: IPropertyMapping | null = null;\r\n switch (searchProperty.propertyName) {\r\n case 'name':\r\n updatedProperty = this.name;\r\n break;\r\n case 'externalId':\r\n updatedProperty = this.externalId;\r\n break;\r\n case 'ssn':\r\n updatedProperty = this.ssn;\r\n break;\r\n }\r\n if (!updatedProperty) {\r\n return;\r\n }\r\n\r\n updatedProperty.cell = searchProperty.cell;\r\n updatedProperty.static = searchProperty.static;\r\n updatedProperty.useStatic = searchProperty.useStatic;\r\n }\r\n}\r\n","import IPassengerPhonNumberViewModel from \"@/components/Passenger/models/IPassengerPhoneNumberViewModel\";\r\nimport {\r\n IEntity,\r\n IEntityMapping,\r\n IExcelRow,\r\n IPropertyMapping,\r\n IPropertyUpdate\r\n} from \"@/typings/import\";\r\nimport { EEntityImportState, EEntityMatchType } from \"../../enums\";\r\nimport PropertyUpdateHelper from '../PropertyUpdateHelper';\r\n\r\nexport default class PhoneNumberEntity\r\n implements IEntity {\r\n entity?: IPassengerPhonNumberViewModel;\r\n matchedBy: EEntityMatchType;\r\n propertyUpdates: Array>;\r\n excelRowIndex: number;\r\n selected: boolean;\r\n importState: EEntityImportState;\r\n\r\n constructor(\r\n row: IExcelRow,\r\n index: number,\r\n mapping: IEntityMapping\r\n ) {\r\n const propertyUpdates: Array> = mapping.props.map(p => {\r\n const propertyUpdate: IPropertyUpdate = {\r\n propertyName: p.propertyName,\r\n propertyType: p.propertyType,\r\n rowKey: p.cell ? p.cell : '',\r\n oldValue: null,\r\n newValue: PropertyUpdateHelper.getNewValueFromMapping(p, row),\r\n doNotUpdate: false,\r\n overrideValue: null,\r\n isValid: () => false,\r\n };\r\n propertyUpdate.isValid = this.getIsValid(propertyUpdate.propertyName, propertyUpdate.newValue);\r\n return propertyUpdate;\r\n });\r\n this.propertyUpdates = propertyUpdates;\r\n this.matchedBy = EEntityMatchType.Unknown;\r\n this.excelRowIndex = index;\r\n this.selected = false;\r\n this.importState = EEntityImportState.Mapped;\r\n }\r\n\r\n onMappingChanged(mapping: IEntityMapping, row: IExcelRow) {\r\n mapping.props.forEach(p => {\r\n const propertyUpdate = this.propertyUpdates.find(pu => pu.propertyName === p.propertyName);\r\n if (propertyUpdate) {\r\n propertyUpdate.newValue = PropertyUpdateHelper.getNewValueFromMapping(p, row);\r\n }\r\n });\r\n }\r\n \r\n isValid(): boolean {\r\n return this.propertyUpdates.every(pu => pu.isValid());\r\n }\r\n\r\n private getIsValid(propertyName: string, value: object) {\r\n if (propertyName === 'number') {\r\n // TODO: validation logic for phone number here\r\n return () => true;\r\n }\r\n return () => true;\r\n }\r\n\r\n private getNewValue(propertyMapping: IPropertyMapping, row: IExcelRow) {\r\n if (propertyMapping.useStatic) {\r\n return propertyMapping.static;\r\n }\r\n if (propertyMapping.cell) {\r\n return row.excelRowData[propertyMapping.cell];\r\n }\r\n return null;\r\n }\r\n}\r\n","import IPassengerPhonNumberViewModel from '@/components/Passenger/models/IPassengerPhoneNumberViewModel';\r\nimport Passenger from '@/components/Passenger/models/Passenger';\r\nimport {\r\n IEntity,\r\n IEntityImporter,\r\n IEntityMapping,\r\n IExcelRow,\r\n IPropertyUpdate\r\n} from '@/typings/import';\r\nimport { EEntityMatchType } from '../../enums';\r\nimport PropertyUpdateHelper from '../PropertyUpdateHelper';\r\nimport PhoneNumberEntity from './PhoneNumberEntity';\r\nimport PhoneNumberMapping from './PhoneNumberMapping';\r\n\r\nexport interface IPhoneNumberImporterParams {\r\n passengerEntities: Array>;\r\n}\r\n\r\nexport interface IPhoneNumberImporterPostParams {\r\n passenger: Passenger;\r\n}\r\n\r\nexport default class PhoneNumberImporter\r\n implements IEntityImporter {\r\n data: IExcelRow[];\r\n mapping: IEntityMapping;\r\n entities: Array>;\r\n\r\n constructor(data: IExcelRow[], mapping: IEntityMapping) {\r\n this.data = data;\r\n this.mapping = mapping;\r\n this.entities = this.data.map((d, i) => new PhoneNumberEntity(d, i, this.mapping));\r\n }\r\n\r\n async matchExisting(row: number, params?: IPhoneNumberImporterParams): Promise {\r\n const entities = this.entities.filter(e => e.excelRowIndex === row);\r\n let updatedEntities = [];\r\n if (params && params.passengerEntities) {\r\n entities.forEach(e => {\r\n const matchedEntities = this.matchFromPassengers(e, params.passengerEntities, row);\r\n const first = matchedEntities.shift();\r\n e.entity = first.entity;\r\n e.matchedBy = first.matchedBy;\r\n e.propertyUpdates = first.propertyUpdates;\r\n updatedEntities = updatedEntities.concat(matchedEntities);\r\n });\r\n }\r\n\r\n this.entities = this.entities.concat(updatedEntities);\r\n return null;\r\n }\r\n\r\n async postEntity(\r\n entity: IEntity, \r\n params?: any, \r\n ): Promise {\r\n const phoneNumber = entity.entity;\r\n if (!phoneNumber) {\r\n return null;\r\n }\r\n\r\n const doNotUpdateProperties = PhoneNumberMapping.NON_ENTITY_MAPPINGS;\r\n\r\n entity.propertyUpdates\r\n .filter(pu => !pu.doNotUpdate && !doNotUpdateProperties.includes(pu.propertyName))\r\n .filter(pu => this.shouldUpdateProperty(pu, entity.matchedBy))\r\n .forEach(pu => phoneNumber[pu.propertyName] = PropertyUpdateHelper.getValue(pu));\r\n\r\n return Promise.resolve(phoneNumber);\r\n }\r\n\r\n onMappingChanged(mapping: IEntityMapping) {\r\n this.mapping = mapping;\r\n this.entities.forEach(e => e.onMappingChanged(mapping, this.data[e.excelRowIndex]));\r\n }\r\n\r\n private matchFromPassengers(\r\n entity: IEntity, \r\n passengerEntities: Array>,\r\n rowIndex: number,\r\n ): Array> {\r\n\r\n const numberUpdate = entity.propertyUpdates.find(pu => pu.propertyName === 'number');\r\n if (!numberUpdate) {\r\n return null;\r\n }\r\n\r\n const numberValue = PropertyUpdateHelper.getNewValueAsPropertyValue(numberUpdate);\r\n\r\n const matchedPassengers = passengerEntities\r\n .filter(pe => pe.entity && pe.entity.phoneNumbers.some(pn => pn.number === numberValue));\r\n\r\n if (matchedPassengers.length === 0) {\r\n if (this.shouldCreateEntity(entity)) {\r\n const phoneNumber = this.createNewPhoneNumber(entity.propertyUpdates);\r\n entity.entity = phoneNumber;\r\n }\r\n entity.matchedBy = EEntityMatchType.Created;\r\n return [ entity ];\r\n }\r\n const matchedEntities = [];\r\n matchedPassengers.forEach(mp => {\r\n const match = mp.entity.phoneNumbers.find(pn => pn.number === numberValue);\r\n if (match) {\r\n const createdEntity = new PhoneNumberEntity(this.data[rowIndex], rowIndex, this.mapping);\r\n createdEntity.entity = match;\r\n createdEntity.matchedBy = mp.matchedBy;\r\n createdEntity.propertyUpdates.forEach(pu => pu.oldValue = createdEntity.entity[pu.propertyName] || null);\r\n matchedEntities.push(createdEntity); \r\n }\r\n });\r\n\r\n return matchedEntities;\r\n }\r\n\r\n private createNewPhoneNumber(propertyUpdates: Array>) {\r\n const phoneNumberProps = propertyUpdates\r\n .filter(pu => !PhoneNumberMapping.NON_ENTITY_MAPPINGS.includes(pu.propertyName));\r\n \r\n const phoneNumber: IPassengerPhonNumberViewModel = {\r\n id: 0,\r\n passengerId: 0,\r\n number: '',\r\n sms: false,\r\n showToDriver: false,\r\n assistant: false,\r\n };\r\n\r\n phoneNumberProps.forEach(p => phoneNumber[p.propertyName] = p.newValue);\r\n\r\n return phoneNumber;\r\n }\r\n\r\n private isCreationColumnDefined() {\r\n const mappingProperty = this.mapping.props\r\n .find(p => p.propertyName === PhoneNumberMapping.ENTITY_CREATION_MAPPING);\r\n \r\n return mappingProperty && mappingProperty.cell;\r\n }\r\n\r\n private shouldCreateEntity(entity: IEntity) {\r\n if (!this.isCreationColumnDefined()) {\r\n return true;\r\n }\r\n\r\n const creationPropertyUpdate = entity.propertyUpdates\r\n .find(pu => pu.propertyName === PhoneNumberMapping.ENTITY_CREATION_MAPPING);\r\n\r\n if (!creationPropertyUpdate) {\r\n return false;\r\n }\r\n\r\n const value = PropertyUpdateHelper.getNewValueAsPropertyValue(creationPropertyUpdate);\r\n if (value) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private shouldUpdateProperty(propertyUpdate: IPropertyUpdate, matchedBy: EEntityMatchType) {\r\n if (matchedBy === EEntityMatchType.Created) {\r\n return true;\r\n }\r\n // Keep matched original values if no mapping has been given\r\n const mappingProperty = this.mapping.props.find(p => p.propertyName === propertyUpdate.propertyName);\r\n if (!mappingProperty) {\r\n return false;\r\n }\r\n return PropertyUpdateHelper.propertyMappingIsDefined(mappingProperty);\r\n }\r\n\r\n}\r\n","import TransportationPermission from '@/components/Passenger/models/TransportationPermission';\r\nimport { IEntityMapping, IPropertyMapping } from '@/typings/import';\r\n\r\nexport default class TransportationPermissionMapping\r\n implements IEntityMapping {\r\n static readonly NON_ENTITY_MAPPINGS = [ 'passengerName', 'passengerExternalId', 'passengerSsn', 'creationColumn' ];\r\n static readonly COSTCENTER_MAPPING = 'costCenter';\r\n static readonly ENTITY_CREATION_MAPPING = 'creationColumn';\r\n\r\n passengerName: IPropertyMapping = {\r\n propertyName: 'passengerName',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n passengerExternalId: IPropertyMapping = {\r\n propertyName: 'passengerExternalId',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n passengerSsn: IPropertyMapping = {\r\n propertyName: 'passengerSsn',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n creationColumn: IPropertyMapping = {\r\n propertyName: 'creationColumn',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: false,\r\n useStatic: false\r\n };\r\n name: IPropertyMapping = {\r\n propertyName: 'name',\r\n propertyType: 'string | null',\r\n required: true,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n isDraft: IPropertyMapping = {\r\n propertyName: 'isDraft',\r\n propertyType: 'boolean',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n costCenter: IPropertyMapping = {\r\n propertyName: 'costCenter',\r\n propertyType: 'string',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n child: IPropertyMapping = {\r\n propertyName: 'child',\r\n propertyType: 'boolean',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n passengerId: IPropertyMapping = {\r\n propertyName: 'passengerId',\r\n propertyType: 'number',\r\n required: true,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n tripDestinations: IPropertyMapping = {\r\n propertyName: 'tripDestinations',\r\n propertyType: 'number',\r\n required: true,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n deductiblePayment: IPropertyMapping = {\r\n propertyName: 'deductiblePayment',\r\n propertyType: 'number',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n deductibleType: IPropertyMapping = {\r\n propertyName: 'deductibleType',\r\n propertyType: 'number',\r\n required: true,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n fixedDeductible: IPropertyMapping = {\r\n propertyName: 'fixedDeductible',\r\n propertyType: 'number | null',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n distanceLimit: IPropertyMapping = {\r\n propertyName: 'distanceLimit',\r\n propertyType: 'number | null',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n initialQuota: IPropertyMapping = {\r\n propertyName: 'initialQuota',\r\n propertyType: 'number',\r\n required: true,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n initialExpressQuota: IPropertyMapping = {\r\n propertyName: 'initialExpressQuota',\r\n propertyType: 'number',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n remainingQuota: IPropertyMapping = {\r\n propertyName: 'remainingQuota',\r\n propertyType: 'number | null',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n quotaTime: IPropertyMapping = {\r\n propertyName: 'quotaTime',\r\n propertyType: 'number',\r\n required: true,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n startDate: IPropertyMapping = {\r\n propertyName: 'startDate',\r\n propertyType: 'string',\r\n required: true,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n endDate: IPropertyMapping = {\r\n propertyName: 'endDate',\r\n propertyType: 'string',\r\n required: true,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n note: IPropertyMapping = {\r\n propertyName: 'note',\r\n propertyType: 'string | null',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n accountKey: IPropertyMapping = {\r\n propertyName: 'accountKey',\r\n propertyType: 'string | null',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n priceCode: IPropertyMapping = {\r\n propertyName: 'priceCode',\r\n propertyType: 'string | null',\r\n required: false,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n tripDirection: IPropertyMapping = {\r\n propertyName: 'tripDirection',\r\n propertyType: 'number',\r\n required: true,\r\n static: null,\r\n cell: null,\r\n allowStatic: true,\r\n useStatic: false\r\n };\r\n\r\n // TODO: Extras. Probably needs a separate mapper \r\n // extras?: TransportationPermissionExtra[];\r\n\r\n constructor(mapping?: IEntityMapping) {\r\n if (mapping) {\r\n Object.keys(mapping).forEach(k => this[k] = mapping[k]);\r\n }\r\n }\r\n\r\n get props(): IPropertyMapping[] {\r\n return Object.keys(this).map(k => this[k]);\r\n }\r\n\r\n isValid(): boolean {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n updateSearchProperty(searchProperty: IPropertyMapping) {\r\n let updatedProperty: IPropertyMapping | null = null;\r\n switch (searchProperty.propertyName) {\r\n case 'name':\r\n updatedProperty = this.passengerName;\r\n break;\r\n case 'externalId':\r\n updatedProperty = this.passengerExternalId;\r\n break;\r\n case 'ssn':\r\n updatedProperty = this.passengerSsn;\r\n break;\r\n }\r\n if (!updatedProperty) {\r\n return;\r\n }\r\n\r\n updatedProperty.cell = searchProperty.cell;\r\n updatedProperty.static = searchProperty.static;\r\n updatedProperty.useStatic = searchProperty.useStatic;\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',{on:{\"click\":function($event){_vm.showMappings = !_vm.showMappings}}},[_c('div',{staticClass:\"subheading\"},[_vm._v(_vm._s(_vm.$t('importer.transportationPermissionInfo')))]),_c('v-spacer'),_c('v-icon',[_vm._v(_vm._s(_vm.showMappings ? 'expand_more' : 'expand_less'))])],1),_c('v-slide-y-transition',[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showMappings),expression:\"showMappings\"}]},[_vm._l((_vm.mappings),function(mapping,index){return _c('v-card-text',{key:index},[_c('transportation-permission-mapper',{attrs:{\"index\":index,\"value\":mapping},on:{\"input\":function($event){return _vm.handleMappingChanged(mapping, index)},\"delete\":function($event){return _vm.removeMapping(index)}}})],1)}),_c('v-card-actions',[_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.addMapping}},[_vm._v(_vm._s(_vm.$t('importer.addTransportationPermission')))])],1)],2)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"subheading\"},[_vm._v(_vm._s(_vm.$t('generic.transportationPermission'))+\" \"+_vm._s(_vm.index + 1))])]),_c('v-card-text',[_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-flex',{attrs:{\"xs6\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('importer.determineCreationTransportationPermission')},model:{value:(_vm.mapping.creationColumn),callback:function ($$v) {_vm.$set(_vm.mapping, \"creationColumn\", $$v)},expression:\"mapping.creationColumn\"}})],1)],1),_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-flex',{attrs:{\"xs3\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('transportationPermission.name','Transportation permission name')},model:{value:(_vm.mapping.name),callback:function ($$v) {_vm.$set(_vm.mapping, \"name\", $$v)},expression:\"mapping.name\"}})],1),_c('v-flex',{attrs:{\"xs3\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('transportationPermission.quota','Transportation quota')},model:{value:(_vm.mapping.initialQuota),callback:function ($$v) {_vm.$set(_vm.mapping, \"initialQuota\", $$v)},expression:\"mapping.initialQuota\"}})],1),_c('v-flex',{attrs:{\"xs3\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t( 'transportationPermission.expressQuota', 'Express quota')},model:{value:(_vm.mapping.initialExpressQuota),callback:function ($$v) {_vm.$set(_vm.mapping, \"initialExpressQuota\", $$v)},expression:\"mapping.initialExpressQuota\"}})],1),_c('v-flex',{attrs:{\"xs3\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('transportationPermission.quotaTime', 'Quota timeframe')},model:{value:(_vm.mapping.quotaTime),callback:function ($$v) {_vm.$set(_vm.mapping, \"quotaTime\", $$v)},expression:\"mapping.quotaTime\"}},[_c('quota-time-select',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mapping.quotaTime.useStatic),expression:\"mapping.quotaTime.useStatic\"}],model:{value:(_vm.mapping.quotaTime.static),callback:function ($$v) {_vm.$set(_vm.mapping.quotaTime, \"static\", $$v)},expression:\"mapping.quotaTime.static\"}})],1)],1)],1),_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-flex',{attrs:{\"xs4\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('transportationPermission.startDate', 'Starts from')},model:{value:(_vm.mapping.startDate),callback:function ($$v) {_vm.$set(_vm.mapping, \"startDate\", $$v)},expression:\"mapping.startDate\"}})],1),_c('v-flex',{attrs:{\"xs4\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('transportationPermission.endDate', 'Valid through')},model:{value:(_vm.mapping.endDate),callback:function ($$v) {_vm.$set(_vm.mapping, \"endDate\", $$v)},expression:\"mapping.endDate\"}})],1),_c('v-flex',{attrs:{\"xs4\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('transportationPermission.distanceLimit','Distance limit')},model:{value:(_vm.mapping.distanceLimit),callback:function ($$v) {_vm.$set(_vm.mapping, \"distanceLimit\", $$v)},expression:\"mapping.distanceLimit\"}})],1)],1),_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-flex',{attrs:{\"xs4\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('transportationPermission.destinations','Trip destinations')},model:{value:(_vm.mapping.tripDestinations),callback:function ($$v) {_vm.$set(_vm.mapping, \"tripDestinations\", $$v)},expression:\"mapping.tripDestinations\"}},[_c('trip-destinations-select',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mapping.tripDestinations.useStatic),expression:\"mapping.tripDestinations.useStatic\"}],model:{value:(_vm.mapping.tripDestinations.static),callback:function ($$v) {_vm.$set(_vm.mapping.tripDestinations, \"static\", $$v)},expression:\"mapping.tripDestinations.static\"}})],1)],1),_c('v-flex',{attrs:{\"xs4\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('transportationPermission.direction', 'Trip direction')},model:{value:(_vm.mapping.tripDirection),callback:function ($$v) {_vm.$set(_vm.mapping, \"tripDirection\", $$v)},expression:\"mapping.tripDirection\"}},[_c('trip-directions-select',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mapping.tripDirection.useStatic),expression:\"mapping.tripDirection.useStatic\"}],model:{value:(_vm.mapping.tripDirection.static),callback:function ($$v) {_vm.$set(_vm.mapping.tripDirection, \"static\", $$v)},expression:\"mapping.tripDirection.static\"}})],1)],1),_c('v-flex',{attrs:{\"xs4\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('transportationPermission.costCenter','Cost center / Account key')},model:{value:(_vm.mapping.costCenter),callback:function ($$v) {_vm.$set(_vm.mapping, \"costCenter\", $$v)},expression:\"mapping.costCenter\"}})],1)],1),_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-flex',{attrs:{\"xs3\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('transportationPermission.price', 'Price')},model:{value:(_vm.mapping.priceCode),callback:function ($$v) {_vm.$set(_vm.mapping, \"priceCode\", $$v)},expression:\"mapping.priceCode\"}})],1),_c('v-flex',{attrs:{\"xs3\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('transportationPermission.deductibleType.label','Excess')},model:{value:(_vm.mapping.deductibleType),callback:function ($$v) {_vm.$set(_vm.mapping, \"deductibleType\", $$v)},expression:\"mapping.deductibleType\"}},[_c('deductible-type-select',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mapping.deductibleType.useStatic),expression:\"mapping.deductibleType.useStatic\"}],model:{value:(_vm.mapping.deductibleType.static),callback:function ($$v) {_vm.$set(_vm.mapping.deductibleType, \"static\", $$v)},expression:\"mapping.deductibleType.static\"}})],1)],1),_c('v-flex',{attrs:{\"xs3\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('transportationPermission.fixedDeductible','Excess amount')},model:{value:(_vm.mapping.fixedDeductible),callback:function ($$v) {_vm.$set(_vm.mapping, \"fixedDeductible\", $$v)},expression:\"mapping.fixedDeductible\"}})],1),_c('v-flex',{attrs:{\"xs3\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('transportationPermission.deductiblePayment.label','Excess payment method')},model:{value:(_vm.mapping.deductiblePayment),callback:function ($$v) {_vm.$set(_vm.mapping, \"deductiblePayment\", $$v)},expression:\"mapping.deductiblePayment\"}},[_c('deductible-payment-select',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mapping.deductiblePayment.useStatic),expression:\"mapping.deductiblePayment.useStatic\"}],model:{value:(_vm.mapping.deductiblePayment.static),callback:function ($$v) {_vm.$set(_vm.mapping.deductiblePayment, \"static\", $$v)},expression:\"mapping.deductiblePayment.static\"}})],1)],1)],1),_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-flex',{attrs:{\"xs3\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('transportationPermission.passengerIsChild.label','Passenger is a child')},model:{value:(_vm.mapping.child),callback:function ($$v) {_vm.$set(_vm.mapping, \"child\", $$v)},expression:\"mapping.child\"}},[_c('v-checkbox',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mapping.child.useStatic),expression:\"mapping.child.useStatic\"}],attrs:{\"label\":_vm.$t('transportationPermission.passengerIsChild.label','Passenger is a child')},model:{value:(_vm.mapping.child.static),callback:function ($$v) {_vm.$set(_vm.mapping.child, \"static\", $$v)},expression:\"mapping.child.static\"}})],1)],1),_c('v-flex',{attrs:{\"xs3\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('transportationPermission.isDraft.label','Draft')},model:{value:(_vm.mapping.isDraft),callback:function ($$v) {_vm.$set(_vm.mapping, \"isDraft\", $$v)},expression:\"mapping.isDraft\"}},[_c('v-checkbox',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mapping.isDraft.useStatic),expression:\"mapping.isDraft.useStatic\"}],attrs:{\"label\":_vm.$t('transportationPermission.isDraft.label','Draft')},model:{value:(_vm.mapping.isDraft.static),callback:function ($$v) {_vm.$set(_vm.mapping.isDraft, \"static\", $$v)},expression:\"mapping.isDraft.static\"}})],1)],1)],1),_c('v-layout',{attrs:{\"row\":\"\"}},[_c('mapping-property-input',{attrs:{\"label\":_vm.$t('transportationPermission.note', 'Reason')},model:{value:(_vm.mapping.note),callback:function ($$v) {_vm.$set(_vm.mapping, \"note\", $$v)},expression:\"mapping.note\"}})],1),_c('v-layout',{attrs:{\"row\":\"\"}},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"red\"},on:{\"click\":_vm.removeMapping}},[_vm._v(_vm._s(_vm.$t('generic.delete')))])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { IEntityMapping } from '@/typings/import';\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport DeductiblePaymentSelect from '@/components/DeductiblePaymentSelect.vue';\r\nimport DeductibleTypeSelect from '@/components/DeductibleTypeSelect.vue';\r\nimport MappingPropertyInput from '@/components/Importer/MappingPropertyInput.vue';\r\nimport QuotaTimeSelect from '@/components/QuotaTimeSelect.vue';\r\nimport TransportationPermission from '@/components/Passenger/models/TransportationPermission';\r\nimport TripDestinationsSelect from '@/components/TripDestinationsSelect.vue';\r\nimport TripDirectionsSelect from '@/components/TripDirectionsSelect.vue';\r\n\r\n@Component({\r\n components: {\r\n DeductiblePaymentSelect,\r\n DeductibleTypeSelect,\r\n MappingPropertyInput,\r\n QuotaTimeSelect,\r\n TripDestinationsSelect,\r\n TripDirectionsSelect,\r\n },\r\n})\r\nexport default class TransportationPermissionMapper extends Vue {\r\n mapping: IEntityMapping | null = null;\r\n\r\n @Prop({ required: true }) value: IEntityMapping;\r\n @Prop({ required: true }) index: number;\r\n\r\n @Watch('value', { immediate: true }) onValueChanged() {\r\n this.mapping = this.value;\r\n }\r\n\r\n @Watch('mapping', { deep: true, immediate: true }) onMappingChanged() {\r\n this.$emit('input', this.mapping);\r\n }\r\n\r\n removeMapping() {\r\n this.$emit('delete');\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TransportationPermissionMapper.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TransportationPermissionMapper.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TransportationPermissionMapper.vue?vue&type=template&id=415f6cae&\"\nimport script from \"./TransportationPermissionMapper.vue?vue&type=script&lang=ts&\"\nexport * from \"./TransportationPermissionMapper.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { IEntityMapping } from '@/typings/import';\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport TransportationPermission from '@/components/Passenger/models/TransportationPermission';\r\nimport TransportationPermissionMapper from '@/components/Importer/transportationPermission/TransportationPermissionMapper.vue';\r\nimport TransportationPermissionMapping from '@/components/Importer/models/transportationPermission/TransportationPermissionMapping';\r\n\r\n@Component({\r\n components: {\r\n TransportationPermissionMapper\r\n },\r\n})\r\nexport default class TransportationPermissionsMapper extends Vue {\r\n mappings: Array> = [];\r\n showMappings: boolean = true;\r\n\r\n @Prop({ required: true }) value: Array>;\r\n\r\n @Watch('value', { immediate: true }) onValueChanged() {\r\n this.mappings = this.value;\r\n }\r\n\r\n handleMappingChanged(mapping: IEntityMapping, index: number) {\r\n this.mappings.splice(index, 1, mapping);\r\n this.$emit('input', this.mappings);\r\n }\r\n\r\n addMapping() {\r\n const firstMapping = this.mappings.find(x => x);\r\n let configs = null;\r\n if (firstMapping) {\r\n // Give the new mapper passenger matching properties from the previous one\r\n configs = {};\r\n firstMapping.props\r\n .filter(p => TransportationPermissionMapping.NON_ENTITY_MAPPINGS.includes(p.propertyName))\r\n .filter(p => p.propertyName !== TransportationPermissionMapping.ENTITY_CREATION_MAPPING)\r\n .forEach(p => {\r\n configs[p.propertyName] = JSON.parse(JSON.stringify(p));\r\n });\r\n }\r\n\r\n const newMapping = new TransportationPermissionMapping(configs);\r\n this.mappings.push(newMapping);\r\n this.$emit('input', this.mappings);\r\n }\r\n\r\n removeMapping(index: number) {\r\n this.mappings.splice(index, 1);\r\n this.$emit('input', this.mappings);\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TransportationPermissionsMapper.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TransportationPermissionsMapper.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TransportationPermissionsMapper.vue?vue&type=template&id=df73038a&\"\nimport script from \"./TransportationPermissionsMapper.vue?vue&type=script&lang=ts&\"\nexport * from \"./TransportationPermissionsMapper.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","import { IEntity, IEntityMapping, IExcelRow, IPropertyMapping, IPropertyUpdate } from '@/typings/import';\r\nimport TransportationPermission from '@/components/Passenger/models/TransportationPermission';\r\nimport { EEntityImportState, EEntityMatchType } from '../../enums';\r\nimport PropertyUpdateHelper from '../PropertyUpdateHelper';\r\n\r\nexport default class TransportationPermissionEntity implements IEntity {\r\n entity?: TransportationPermission;\r\n matchedBy: EEntityMatchType;\r\n propertyUpdates: Array>;\r\n excelRowIndex: number;\r\n selected: boolean;\r\n importState: EEntityImportState;\r\n\r\n constructor(\r\n row: IExcelRow,\r\n index: number,\r\n mapping: IEntityMapping\r\n ) {\r\n const propertyUpdates = mapping.props.map(pm => {\r\n const propertyUpdate: IPropertyUpdate = {\r\n propertyName: pm.propertyName,\r\n propertyType: pm.propertyType,\r\n rowKey: pm.cell ? pm.cell : '',\r\n oldValue: null,\r\n newValue: PropertyUpdateHelper.getNewValueFromMapping(pm, row),\r\n doNotUpdate: false,\r\n overrideValue: null,\r\n isValid: () => false,\r\n };\r\n propertyUpdate.isValid = this.getIsValid(propertyUpdate.propertyName, propertyUpdate.newValue);\r\n return propertyUpdate;\r\n });\r\n\r\n this.propertyUpdates = propertyUpdates;\r\n this.matchedBy = EEntityMatchType.Unknown;\r\n this.excelRowIndex = index;\r\n this.selected = false;\r\n this.importState = EEntityImportState.Mapped;\r\n }\r\n\r\n onMappingChanged(mapping: IEntityMapping, row: IExcelRow) {\r\n mapping.props.forEach(p => {\r\n const propertyUpdate = this.propertyUpdates.find(pu => pu.propertyName === p.propertyName);\r\n if (propertyUpdate) {\r\n propertyUpdate.newValue = PropertyUpdateHelper.getNewValueFromMapping(p, row);\r\n }\r\n });\r\n }\r\n\r\n isValid(): boolean {\r\n return this.propertyUpdates.every(pu => pu.isValid());\r\n }\r\n\r\n private getIsValid(propertyName: string, value: object) {\r\n switch (propertyName) {\r\n default:\r\n return () => true;\r\n }\r\n }\r\n\r\n private getNewValue(propertyMapping: IPropertyMapping, row: IExcelRow) {\r\n if (propertyMapping.useStatic) {\r\n return propertyMapping.static;\r\n }\r\n if (propertyMapping.cell) {\r\n return row.excelRowData[propertyMapping.cell];\r\n }\r\n return null;\r\n }\r\n\r\n}\r\n","import CostCenter from '@/components/Passenger/models/CostCenter';\r\nimport Passenger from '@/components/Passenger/models/Passenger';\r\nimport TransportationPermission, { TransportationPermissionSourceEnum } from '@/components/Passenger/models/TransportationPermission';\r\nimport restService from '@/services/restService';\r\n\r\nimport { \r\n IEntity, \r\n IEntityImporter, \r\n IEntityMapping, \r\n IEntityMatchResult, \r\n IExcelRow, \r\n IPropertyUpdate, \r\n ITransportationPermissionMatchRequest \r\n} from '@/typings/import';\r\n\r\nimport { EEntityMatchType } from '../../enums';\r\nimport PropertyUpdateHelper from '../PropertyUpdateHelper';\r\nimport TransportationPermissionEntity from './TransportationPermissionEntity';\r\nimport TransportationPermissionMapping from './TransportationPermissionMapping';\r\n\r\nexport interface ITransportationPermissionImporterParams {\r\n passengerEntities: Array>;\r\n}\r\n\r\nexport interface ITransportationPermissionPostParams {\r\n passenger: Passenger;\r\n}\r\n\r\nexport default class TransportationPermissionImporter implements IEntityImporter {\r\n data: IExcelRow[];\r\n mapping: IEntityMapping;\r\n entities: Array>;\r\n \r\n constructor(data: IExcelRow[], mapping: IEntityMapping) {\r\n this.data = data;\r\n this.mapping = mapping;\r\n this.entities = this.data.map((d, i) => new TransportationPermissionEntity(d, i, this.mapping));\r\n }\r\n\r\n async matchExisting(\r\n row: number,\r\n params?: ITransportationPermissionImporterParams\r\n ): Promise {\r\n\r\n const entities = this.entities.filter(e => e.excelRowIndex === row);\r\n entities.forEach(e => {\r\n if (this.shouldCreateEntity(e)) {\r\n e.entity = this.createNewTransportationPermission(e);\r\n e.matchedBy = EEntityMatchType.Created;\r\n }\r\n });\r\n \r\n return null;\r\n }\r\n \r\n async postEntity(entity: IEntity, params: ITransportationPermissionPostParams)\r\n : Promise {\r\n\r\n const ptp = entity.entity;\r\n const passenger = params.passenger;\r\n if (!ptp || !passenger || !passenger.id) {\r\n return null;\r\n }\r\n // TODO: check if ptp can actually be posted. Or should we do that earlier?\r\n\r\n const doNotUpdateProperties = TransportationPermissionMapping.NON_ENTITY_MAPPINGS\r\n .concat(TransportationPermissionMapping.COSTCENTER_MAPPING);\r\n\r\n entity.propertyUpdates\r\n .filter(pu => !pu.doNotUpdate && !doNotUpdateProperties.includes(pu.propertyName))\r\n .filter(pu => this.shouldUpdateProperty(pu, entity.matchedBy))\r\n .forEach(pu => ptp[pu.propertyName] = PropertyUpdateHelper.getValue(pu));\r\n\r\n const costCenterPropertyUpdate = entity.propertyUpdates\r\n .find(pu => pu.propertyName === TransportationPermissionMapping.COSTCENTER_MAPPING);\r\n \r\n const costCenter = this.createCostCenter(costCenterPropertyUpdate);\r\n \r\n ptp.costCenter = costCenter;\r\n ptp.passengerId = passenger.id;\r\n \r\n // We are only creating PTPs atm\r\n const createdPtp = await restService.transportationPermissions.createTransportationPermission(ptp);\r\n\r\n return new TransportationPermission(createdPtp);\r\n }\r\n\r\n onMappingChanged(mapping: IEntityMapping) {\r\n this.mapping = mapping;\r\n this.entities.forEach(e => e.onMappingChanged(this.mapping, this.data[e.excelRowIndex]));\r\n }\r\n\r\n private createNewTransportationPermission(entity: IEntity) {\r\n const propertyUpdates = entity.propertyUpdates\r\n .filter(pu => !TransportationPermissionMapping.NON_ENTITY_MAPPINGS.includes(pu.propertyName));\r\n\r\n const ptp = new TransportationPermission(null);\r\n propertyUpdates.forEach(pu => ptp[pu.propertyName] = PropertyUpdateHelper.getValue(pu));\r\n ptp.source = TransportationPermissionSourceEnum.Timit;\r\n return ptp;\r\n }\r\n\r\n private isCreationColumnDefined() {\r\n const mappingProperty = this.mapping.props\r\n .find(p => p.propertyName === TransportationPermissionMapping.ENTITY_CREATION_MAPPING);\r\n \r\n return mappingProperty && mappingProperty.cell;\r\n }\r\n\r\n private shouldCreateEntity(entity: IEntity) {\r\n if (!this.isCreationColumnDefined()) {\r\n return true;\r\n }\r\n\r\n const creationPropertyUpdate = entity.propertyUpdates\r\n .find(pu => pu.propertyName === TransportationPermissionMapping.ENTITY_CREATION_MAPPING);\r\n\r\n if (!creationPropertyUpdate) {\r\n return false;\r\n }\r\n\r\n const value = PropertyUpdateHelper.getNewValueAsPropertyValue(creationPropertyUpdate);\r\n if (value) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private createCostCenter(propertyUpdate: IPropertyUpdate) {\r\n if (!propertyUpdate) {\r\n return null;\r\n }\r\n const name = PropertyUpdateHelper.getValue(propertyUpdate);\r\n if (!name) {\r\n return null;\r\n }\r\n\r\n return new CostCenter({ name });\r\n }\r\n\r\n private shouldUpdateProperty(propertyUpdate: IPropertyUpdate, matchedBy: EEntityMatchType) {\r\n if (matchedBy === EEntityMatchType.Created) {\r\n return true;\r\n }\r\n // Keep matched original values if no mapping has been given\r\n const mappingProperty = this.mapping.props.find(p => p.propertyName === propertyUpdate.propertyName);\r\n if (!mappingProperty) {\r\n return false;\r\n }\r\n return PropertyUpdateHelper.propertyMappingIsDefined(mappingProperty);\r\n }\r\n \r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-tabs',{model:{value:(_vm.tabIndex),callback:function ($$v) {_vm.tabIndex=$$v},expression:\"tabIndex\"}},_vm._l((_vm.tabs),function(tab){return _c('v-tab',{key:tab.value},[_vm._v(_vm._s(tab.title))])}),1),_c('v-tabs-items',{model:{value:(_vm.tabIndex),callback:function ($$v) {_vm.tabIndex=$$v},expression:\"tabIndex\"}},_vm._l((_vm.tabs),function(tab){return _c('v-tab-item',{key:tab.value},[_c(tab.component,_vm._b({key:tab.value,tag:\"component\",on:{\"selectRow\":_vm.selectRow}},'component',tab.props,false))],1)}),1),_c('v-dialog',{attrs:{\"value\":_vm.showSelectedRow},on:{\"input\":_vm.closeRowDialog}},[_c('v-card',[_c('v-card-text',[(_vm.selectedRow)?_c('property-update-table',{attrs:{\"entity\":_vm.selectedRow}}):_vm._e()],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"red\"},on:{\"click\":_vm.closeRowDialog}},[_vm._v(_vm._s(_vm.$t('generic.close')))])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.items,\"select-all\":\"\",\"pagination\":_vm.pagination},on:{\"update:pagination\":function($event){_vm.pagination=$event}},scopedSlots:_vm._u([{key:\"headers\",fn:function(props){return [_c('tr',{staticStyle:{\"text-align\":\"left\"}},[_c('th',{staticStyle:{\"text-align\":\"center\"},attrs:{\"ml-2\":\"\"}},[_c('v-checkbox',{attrs:{\"input-value\":props.all,\"indeterminate\":props.indeterminate,\"primary\":\"\",\"hide-details\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleAll($event)}}})],1),_c('th',[_vm._v(_vm._s(_vm.$t('importer.excelRow')))]),_c('th',[_vm._v(_vm._s(_vm.$t('importer.state')))]),_c('th',[_vm._v(\"Id\")]),_vm._l((props.headers),function(header){return _c('th',{key:header.text,class:['column sortable', _vm.pagination.descending ? 'desc' : 'asc', header.value === _vm.pagination.sortBy ? 'active' : '']},[_vm._v(_vm._s(header.text))])})],2)]}},{key:\"items\",fn:function(props){return [_c('imports-table-row',{attrs:{\"headers\":_vm.headers,\"entity\":props.item},on:{\"selectRow\":_vm.selectRow}})]}}]),model:{value:(_vm.selectedItems),callback:function ($$v) {_vm.selectedItems=$$v},expression:\"selectedItems\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { IEntity, IEntityImporter } from '@/typings/import';\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport { EEntityImportState, EEntityMatchType } from '@/components/Importer/enums';\r\nimport ImportsTableRow from '@/components/Importer/ImportsTableRow.vue';\r\nimport PropertyUpdateTable from '@/components/Importer/PropertyUpdateTable.vue';\r\nimport TransportationPermission from '@/components/Passenger/models/TransportationPermission';\r\n\r\n@Component({\r\n components: {\r\n ImportsTableRow,\r\n PropertyUpdateTable,\r\n },\r\n})\r\nexport default class TransportationPermissionImportsTable extends Vue {\r\n\r\n selectedItems: Array> = [];\r\n\r\n pagination = {\r\n descending: true,\r\n page: 1,\r\n rowsPerPage: -1, // -1 for All\r\n sortBy: 'name',\r\n };\r\n\r\n @Prop({ required: true }) ptpImporter: IEntityImporter;\r\n @Watch('ptpImporter', { immediate: true }) onPassengerImporterChanged() {\r\n this.selectedItems = [];\r\n if (!this.ptpImporter) {\r\n return;\r\n }\r\n const selectedEntities = this.ptpImporter.entities.filter(x => x && x.entity).filter(e => e.selected);\r\n this.selectedItems = selectedEntities;\r\n }\r\n\r\n get headers() {\r\n return [\r\n { value: 'passengerName', text: this.$t('passenger.prop.name.label', 'Name') },\r\n { value: 'name', text: this.$t('transportationPermission.name', 'Transportation permission name') },\r\n { value: 'startDate', text: this.$t('transportationPermission.startDate', 'Starts from') },\r\n { value: 'endDate', text: this.$t('transportationPermission.endDate', 'Valid through') },\r\n { value: 'costCenter', text: this.$t('transportationPermission.costCenter', 'Cost center / Account key') },\r\n { value: 'note', text: this.$t('transportationPermission.note', 'Reason') },\r\n ];\r\n }\r\n\r\n get items() {\r\n const entities = this.ptpImporter.entities.filter(x => x && x.entity);\r\n return entities;\r\n }\r\n\r\n toggleAll() {\r\n if (this.selectedItems.length) {\r\n this.selectedItems = [];\r\n this.items.forEach(i => i.selected = false);\r\n return;\r\n }\r\n this.items.forEach(i => i.selected = true);\r\n this.selectedItems = this.items;\r\n }\r\n\r\n selectRow(row: IEntity) {\r\n this.$emit('selectRow', row);\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TransportationPermissionImportsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TransportationPermissionImportsTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TransportationPermissionImportsTable.vue?vue&type=template&id=d9555056&\"\nimport script from \"./TransportationPermissionImportsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./TransportationPermissionImportsTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { IEntity, IEntityImporter } from '@/typings/import';\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport Passenger from '@/components/Passenger/models/Passenger';\r\nimport PassengerImportsTable from '@/components/Importer/passenger/PassengerImportsTable.vue';\r\nimport TransportationPermission from '../Passenger/models/TransportationPermission';\r\nimport { IMappers } from './ImportSelectionStep.vue';\r\nimport PropertyUpdateTable from '@/components/Importer/PropertyUpdateTable.vue';\r\nimport TransportationPermissionImportsTable from '@/components/Importer/transportationPermission/TransportationPermissionImportsTable.vue';\r\n\r\ninterface ITab {\r\n value: number;\r\n title: string;\r\n component: any;\r\n props: any;\r\n}\r\n\r\nexport interface IImportsTableHeader {\r\n name: string;\r\n value: string;\r\n}\r\n\r\n@Component({\r\n components: {\r\n PassengerImportsTable,\r\n PropertyUpdateTable,\r\n TransportationPermissionImportsTable,\r\n },\r\n})\r\nexport default class ImportsTable extends Vue {\r\n tabIndex: number = 0;\r\n \r\n showSelectedRow: boolean = false;\r\n selectedRow: IEntity | null = null;\r\n\r\n @Prop({ required: true }) mappings: IMappers;\r\n @Prop({ required: true }) passengerImporter: IEntityImporter;\r\n @Prop({ default: () => [] }) ptpImporters: Array>;\r\n\r\n get tabs(): ITab[] {\r\n /*tslint:disable-next-line */\r\n let tabs: ITab[] = [\r\n { \r\n value: 0, \r\n title: this.$t('generic.header.passenger.many'), \r\n component: PassengerImportsTable, \r\n props: { passengerImporter: this.passengerImporter, } \r\n },\r\n ];\r\n\r\n if (this.ptpImporters.length > 0) {\r\n let valueMax = tabs.length;\r\n const ptpTabs = this.ptpImporters.map((importer, i) => {\r\n const value = valueMax++;\r\n const ptpTab = { \r\n value, \r\n title: this.$t('generic.transportationPermission') + ` ${i + 1}`,\r\n component: TransportationPermissionImportsTable, \r\n props: { ptpImporter: importer, } \r\n };\r\n return ptpTab;\r\n });\r\n\r\n tabs = tabs.concat(ptpTabs);\r\n }\r\n return tabs;\r\n }\r\n\r\n selectRow(row: IEntity) {\r\n this.selectedRow = row;\r\n this.showSelectedRow = true;\r\n }\r\n\r\n closeRowDialog() {\r\n this.showSelectedRow = false;\r\n this.selectedRow = null;\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ImportsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ImportsTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ImportsTable.vue?vue&type=template&id=1fc0b03c&\"\nimport script from \"./ImportsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./ImportsTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport PassengerImportMapper from '@/components/Importer/passenger/PassengerImportMapper.vue';\r\nimport { IEntity, IEntityImporter, IEntityMapping, IExcelRow } from '@/typings/import';\r\nimport Passenger from '../Passenger/models/Passenger';\r\nimport PassengerMapping from '@/components/Importer/models/passenger/PassengerMapping';\r\nimport PassengerImportsTable from '@/components/Importer/passenger/PassengerImportsTable.vue';\r\nimport { IPassengerImporterParams, PassengerImporter } from '@/components/Importer/models/passenger/PassengerImporter';\r\nimport PassengerSearchMapper from '@/components/Importer/passenger/PassengerSearchMapper.vue';\r\nimport PassengerSearchMapping from '@/components/Importer/models/passenger/PassengerSearchMapping';\r\nimport Destination from '../Passenger/models/Destination';\r\nimport IPassengerPhonNumberViewModel from '../Passenger/models/IPassengerPhoneNumberViewModel';\r\nimport PhoneNumberMapping from '@/components/Importer/models/phoneNumber/PhoneNumberMapping';\r\nimport PhoneNumbersMapper from '@/components/Importer/phoneNumber/PhoneNumbersMapper.vue';\r\nimport PhoneNumberImporter, { IPhoneNumberImporterParams } from './models/phoneNumber/PhoneNumberImporter';\r\nimport TransportationPermission from '../Passenger/models/TransportationPermission';\r\nimport TransportationPermissionMapping from './models/transportationPermission/TransportationPermissionMapping';\r\nimport TransportationPermissionsMapper from '@/components/Importer/transportationPermission/TransportationPermissionsMapper.vue';\r\nimport TransportationPermissionImporter, { ITransportationPermissionImporterParams } from './models/transportationPermission/TransportationPermissionImporter';\r\nimport { EEntityImportState } from './enums';\r\nimport ImportsTable from '@/components/Importer/ImportsTable.vue';\r\n\r\nexport interface IMappers {\r\n passenger: IEntityMapping;\r\n phoneNumbers: Array>;\r\n search: IEntityMapping;\r\n transportationPermissions: Array>;\r\n}\r\n\r\n@Component({\r\n components: {\r\n ImportsTable,\r\n PassengerImportMapper,\r\n PassengerImportsTable,\r\n PassengerSearchMapper,\r\n PhoneNumbersMapper,\r\n TransportationPermissionsMapper,\r\n },\r\n})\r\nexport default class ImportSelectionStep extends Vue {\r\n mappings: IMappers = this.getOrInitializeMappings();\r\n\r\n passengerImporterSelected: boolean = true;\r\n ptpImporterSelected: boolean = false;\r\n scheduleImporterSelected: boolean = false;\r\n\r\n passengerImporter: IEntityImporter | null = null;\r\n phoneNumberImporters: Array> = [];\r\n ptpImporters: Array> = [];\r\n\r\n loading: boolean = false;\r\n loadingMessage: string = '';\r\n loadingProgress: number = 0;\r\n\r\n postedEntities: Array> = [];\r\n failedEntities: Array> = [];\r\n \r\n showImportsTable: boolean = false;\r\n\r\n selectPassengerImporter() {\r\n this.passengerImporterSelected = !this.passengerImporterSelected;\r\n }\r\n selectPtpImporter() {\r\n this.ptpImporterSelected = !this.ptpImporterSelected;\r\n }\r\n selectScheduleImporter() {\r\n this.scheduleImporterSelected = !this.scheduleImporterSelected;\r\n }\r\n\r\n onPassengerMappingChanged(mapping: IEntityMapping) {\r\n if (!this.mappings) {\r\n this.mappings = this.getOrInitializeMappings();\r\n }\r\n this.mappings.passenger = mapping;\r\n this.saveMappings();\r\n\r\n if (this.passengerImporter) {\r\n this.passengerImporter.onMappingChanged(mapping);\r\n }\r\n }\r\n\r\n onPassengerSearchMappingChanged(mapping: IEntityMapping) {\r\n this.mappings.search = mapping;\r\n Object.keys(this.mappings.search).forEach(k => {\r\n const copyUpdate = JSON.parse(JSON.stringify(this.mappings.search[k]));\r\n if (this.mappings.passenger) {\r\n this.mappings.passenger.updateSearchProperty(copyUpdate);\r\n }\r\n if (this.mappings.phoneNumbers) {\r\n this.mappings.phoneNumbers.forEach(pn => pn.updateSearchProperty(copyUpdate));\r\n }\r\n if (this.mappings.transportationPermissions) {\r\n this.mappings.transportationPermissions.forEach(ptp => ptp.updateSearchProperty(copyUpdate));\r\n }\r\n });\r\n this.saveMappings();\r\n }\r\n\r\n onPhoneNumberMappingsChanged(mappings: Array>) {\r\n this.mappings.phoneNumbers = mappings;\r\n this.saveMappings();\r\n\r\n if (this.phoneNumberImporters.length > 0) {\r\n mappings.forEach((m, i) => {\r\n const importer = this.phoneNumberImporters[i];\r\n if (importer) {\r\n importer.onMappingChanged(m);\r\n }\r\n });\r\n }\r\n }\r\n\r\n onTransportationPermissionsMappingsChanged(mappings: Array>) {\r\n this.mappings.transportationPermissions = mappings;\r\n this.saveMappings();\r\n\r\n if (this.ptpImporters.length > 0) {\r\n mappings.forEach((m, i) => {\r\n const importer = this.ptpImporters[i];\r\n if (importer) {\r\n importer.onMappingChanged(m);\r\n }\r\n });\r\n }\r\n }\r\n\r\n saveMappings() {\r\n localStorage.setItem('importer:mappings', JSON.stringify(this.mappings));\r\n }\r\n\r\n async fetchMatches() {\r\n try {\r\n this.loading = true;\r\n this.loadingMessage = this.$t('importer.fetchingPassengers');\r\n this.showImportsTable = false;\r\n\r\n const rowData = this.$store.state.importer.rowData;\r\n const excelRows: IExcelRow[] = rowData.map(rd => ({ excelRowData: rd }));\r\n \r\n const destinations = this.$store.state.destination.destinations as Destination[];\r\n const params: IPassengerImporterParams = { destinations };\r\n const importer = new PassengerImporter(excelRows, this.mappings.passenger);\r\n \r\n for (let i = 0; i < importer.data.length; i++) {\r\n this.loadingProgress = Math.ceil((i / importer.data.length) * 100);\r\n await importer.matchExisting(i, params);\r\n }\r\n\r\n importer.entities.sort((a, b) => a.excelRowIndex - b.excelRowIndex);\r\n\r\n this.passengerImporter = importer;\r\n\r\n if (this.passengerImporterSelected) {\r\n const phoneNumberImporters = this.mappings.phoneNumbers.map(pnm => {\r\n const phoneImporter = new PhoneNumberImporter(excelRows, pnm);\r\n \r\n phoneImporter.data.forEach((d, i) => {\r\n const passengerEntities = this.passengerImporter.entities.filter(e => e.excelRowIndex === i);\r\n const phoneParams: IPhoneNumberImporterParams = { passengerEntities };\r\n phoneImporter.matchExisting(i, phoneParams);\r\n });\r\n \r\n return phoneImporter;\r\n });\r\n \r\n this.phoneNumberImporters = phoneNumberImporters;\r\n }\r\n \r\n if (this.ptpImporterSelected) {\r\n const ptpImporters = this.mappings.transportationPermissions.map(ptpm => {\r\n const ptpImporter = new TransportationPermissionImporter(excelRows, ptpm);\r\n return ptpImporter;\r\n });\r\n this.ptpImporters = ptpImporters;\r\n \r\n for (const [index, ptpImporter] of this.ptpImporters.entries()) {\r\n this.loadingMessage = this.$t('importer.fetchingTransportationPermission', { number: (index + 1)});\r\n for (let i = 0; i < ptpImporter.data.length; i++) {\r\n this.loadingProgress = Math.ceil((i / importer.data.length) * 100);\r\n const passengerEntities = this.passengerImporter.entities.filter(e => e.excelRowIndex === i);\r\n const ptpParams: ITransportationPermissionImporterParams = { passengerEntities };\r\n await ptpImporter.matchExisting(i, ptpParams);\r\n }\r\n }\r\n }\r\n \r\n } catch (error) {\r\n console.error(error);\r\n } finally {\r\n this.loading = false;\r\n this.showImportsTable = true;\r\n }\r\n }\r\n\r\n getOrInitializeMappings() {\r\n let mappings = this.mappings;\r\n\r\n if (mappings) {\r\n return this.mappings;\r\n }\r\n\r\n const storedMappings = localStorage.getItem('importer:mappings');\r\n if (storedMappings) {\r\n mappings = JSON.parse(storedMappings);\r\n mappings.passenger = new PassengerMapping(mappings.passenger);\r\n mappings.phoneNumbers = mappings.phoneNumbers.map(pn => new PhoneNumberMapping(pn));\r\n\r\n mappings.transportationPermissions = mappings.transportationPermissions\r\n .map(ptp => new TransportationPermissionMapping(ptp));\r\n\r\n mappings.search = new PassengerSearchMapping(mappings.search);\r\n\r\n } else {\r\n mappings = this.initializeMappings();\r\n this.saveMappings();\r\n }\r\n return mappings;\r\n }\r\n\r\n initializeMappings(): IMappers {\r\n return {\r\n passenger: new PassengerMapping(),\r\n phoneNumbers: [ new PhoneNumberMapping() ],\r\n transportationPermissions: [ new TransportationPermissionMapping() ],\r\n search: new PassengerSearchMapping(),\r\n };\r\n }\r\n\r\n clearMappings() {\r\n this.mappings = this.initializeMappings();\r\n this.saveMappings();\r\n this.clearImporters();\r\n }\r\n\r\n clearImporters() {\r\n this.passengerImporter = null;\r\n this.phoneNumberImporters = [];\r\n this.ptpImporters = [];\r\n this.showImportsTable = false;\r\n }\r\n\r\n async importPassengers() {\r\n if (!this.passengerImporter) {\r\n return;\r\n }\r\n \r\n this.loading = true;\r\n this.loadingProgress = 0;\r\n \r\n if (this.passengerImporterSelected) {\r\n this.loadingMessage = 'Tuodaan matkustajia';\r\n const selectedEntitites = this.passengerImporter.entities.filter(e => e.entity && e.selected);\r\n \r\n const destinations: Destination[] = this.$store.state.destination.destinations;\r\n const params: IPassengerImporterParams = { destinations };\r\n \r\n for (let i = 0; i < selectedEntitites.length; i++) {\r\n const entity = selectedEntitites[i];\r\n let phoneNumberEntities: Array> = [];\r\n try {\r\n \r\n if (this.phoneNumberImporters.length > 0) {\r\n phoneNumberEntities = await this.getPhoneNumbersForPassengerImport(entity);\r\n }\r\n entity.entity.phoneNumbers = entity.entity.phoneNumbers\r\n .concat(phoneNumberEntities.map(pne => pne.entity));\r\n \r\n const updatedEntity = await this.passengerImporter.postEntity(entity, params);\r\n \r\n if (updatedEntity === null) {\r\n entity.importState = EEntityImportState.Failed;\r\n phoneNumberEntities.forEach(pne => pne.importState = EEntityImportState.Failed);\r\n }\r\n \r\n entity.entity = updatedEntity;\r\n entity.importState = EEntityImportState.Imported;\r\n phoneNumberEntities.forEach(pne => pne.importState = EEntityImportState.Imported);\r\n \r\n } catch (error) {\r\n entity.importState = EEntityImportState.Failed;\r\n phoneNumberEntities.forEach(pne => pne.importState = EEntityImportState.Failed);\r\n }\r\n this.loadingProgress = Math.ceil((i / this.passengerImporter.entities.length) * 100);\r\n }\r\n }\r\n \r\n if (this.ptpImporterSelected && this.ptpImporters.length > 0) {\r\n this.loadingMessage = `Tuodaan kuljetuspäätösten tietoja`;\r\n this.loadingProgress = 0;\r\n\r\n const passengerEntities = this.passengerImporter.entities\r\n .filter(e => e.importState === EEntityImportState.Imported || (e.entity && e.entity.id));\r\n\r\n const passengerEntityRowIndexes = passengerEntities.map(pe => pe.excelRowIndex);\r\n const entityAmount = this.ptpImporters.flatMap(imp => imp.entities\r\n .filter(e => passengerEntityRowIndexes.includes(e.excelRowIndex)))\r\n .length;\r\n\r\n let progress = 0;\r\n\r\n for (const passengerEntity of passengerEntities) {\r\n for (const importer of this.ptpImporters) {\r\n const ptpEntities = importer.entities.filter(ptpe => ptpe.excelRowIndex === passengerEntity.excelRowIndex && ptpe.selected);\r\n for (const entity of ptpEntities) {\r\n try {\r\n const createdPtp = await importer.postEntity(entity, { passenger: passengerEntity.entity });\r\n if (createdPtp === null) {\r\n entity.importState = EEntityImportState.Failed;\r\n }\r\n\r\n entity.entity = createdPtp;\r\n entity.importState = EEntityImportState.Imported;\r\n } catch (error) {\r\n entity.importState = EEntityImportState.Failed;\r\n }\r\n progress++;\r\n this.loadingProgress = Math.ceil((progress / entityAmount) * 100);\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.loading = false;\r\n this.loadingProgress = 0;\r\n }\r\n\r\n async getPhoneNumbersForPassengerImport(passengerEntity: IEntity) {\r\n const phoneNumbers: Array> = [];\r\n\r\n for (const importer of this.phoneNumberImporters) {\r\n const phoneNumberEntities = importer.entities.filter(e => e.excelRowIndex === passengerEntity.excelRowIndex);\r\n \r\n for (const pnEntity of phoneNumberEntities) {\r\n const phoneNumber = await importer.postEntity(pnEntity);\r\n pnEntity.entity = phoneNumber;\r\n\r\n if (phoneNumber) {\r\n phoneNumbers.push(pnEntity);\r\n }\r\n }\r\n }\r\n\r\n return phoneNumbers;\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ImportSelectionStep.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ImportSelectionStep.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ImportSelectionStep.vue?vue&type=template&id=42b414dd&\"\nimport script from \"./ImportSelectionStep.vue?vue&type=script&lang=ts&\"\nexport * from \"./ImportSelectionStep.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport {Component, Prop, Vue} from 'vue-property-decorator';\r\nimport FileSelectionStep from '@/components/Importer/FileSelectionStep.vue';\r\nimport ImportSelectionStep from '@/components/Importer/ImportSelectionStep.vue';\r\n\r\n@Component({\r\n components: {\r\n FileSelectionStep,\r\n ImportSelectionStep,\r\n }\r\n})\r\nexport default class PassengerImportsPage extends Vue {\r\n\r\n stepperStep: number = 1; \r\n \r\n get disableBackButton() {\r\n return this.stepperStep === 1;\r\n }\r\n\r\n get disableForwardButton() {\r\n return this.stepperStep === 2;\r\n }\r\n\r\n nextStep() {\r\n const newStep = this.stepperStep + 1;\r\n if (newStep <= 2) {\r\n this.stepperStep = newStep;\r\n }\r\n }\r\n\r\n backStep() {\r\n const newStep = this.stepperStep - 1;\r\n if (newStep >= 1) {\r\n this.stepperStep = newStep;\r\n }\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerImportsPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerImportsPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerImportsPage.vue?vue&type=template&id=44d7d556&scoped=true&\"\nimport script from \"./PassengerImportsPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerImportsPage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PassengerImportsPage.vue?vue&type=style&index=0&id=44d7d556&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"44d7d556\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container compressible fluid mass-cancellation-of-trips-view\"},[_c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"route.tripsMassCancellation\", \"Trips mass cancellation\"))+\" \")])]),_c('v-card-text',[_c('v-container',{attrs:{\"grid-list-lg\":\"\",\"fluid\":\"\",\"pa-2\":\"\"}},[_c('v-layout',{attrs:{\"wrap\":\"\"}},[(!_vm.searchDone || _vm.activeTrips === 0)?_c('v-flex',{attrs:{\"xs12\":\"\"}},[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-layout',{attrs:{\"row\":\"\",\"wrap\":\"\"}},[_c('v-flex',{attrs:{\"xs6\":\"\",\"md3\":\"\"}},[_c('DateTimePicker',{attrs:{\"disabled\":_vm.loading || _vm.searchDone,\"dateLabel\":_vm.$t('timetable.starts', 'Starts'),\"min\":_vm.today,\"date\":_vm.tripsStartDate,\"hideIcon\":true,\"datePickerTitle\":_vm.$t('timetable.starts', 'Starts'),\"allowWeekends\":true},on:{\"date-updated\":_vm.startDateUpdated}})],1),_c('v-flex',{attrs:{\"xs6\":\"\",\"md3\":\"\"}},[_c('DateTimePicker',{attrs:{\"disabled\":_vm.loading || _vm.searchDone,\"dateLabel\":_vm.$t('timetable.ends', 'Ends'),\"date\":_vm.tripsEndDate,\"min\":_vm.tripsStartDate,\"hideIcon\":true,\"datePickerTitle\":_vm.$t('timetable.ends', 'Ends'),\"allowWeekends\":true},on:{\"date-updated\":_vm.endDateUpdated}})],1),_c('v-flex',{attrs:{\"xs12\":\"\"}},[_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.ids.length > 0),expression:\"ids.length > 0\"}],attrs:{\"dark\":\"\",\"color\":\"primary\",\"disabled\":_vm.loading},on:{\"click\":_vm.fetchTrips}},[_vm._v(\" \"+_vm._s(_vm.$t( \"tripsMassCancellation.button.label\", \"Search trips for {amount} passengers\", { amount: _vm.ids.length } ))+\" \")]),_c('v-layout',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.searchDone && _vm.activeTrips === 0 && !_vm.loading && _vm.ids.length === 0),expression:\"!searchDone && activeTrips === 0 && !loading && ids.length === 0\"}],staticClass:\"grey--text\",staticStyle:{\"align-items\":\"center\",\"gap\":\"8px\",\"height\":\"48px\"},attrs:{\"mx-2\":\"\"}},[_c('v-icon',{attrs:{\"color\":\"grey\"}},[_vm._v(\"info\")]),_vm._v(\" Valitse matkustaja(t) \")],1),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.searchDone && _vm.activeTrips === 0 && !_vm.loading),expression:\"searchDone && activeTrips === 0 && !loading\"}],staticClass:\"subtitle-1\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"tripsMassCancellation.trips.noTrips\", \"No trips founded for selected tim period\" ))+\" \")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.searchDone && _vm.loading),expression:\"searchDone && loading\"}],staticClass:\"subtitle-1 warning--text\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"tripsMassCancellation.search\"))+\" \")])],1)],1)],1)],1):_vm._e(),_c('v-flex',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.searchDone && _vm.activeTrips > 0),expression:\"searchDone && activeTrips > 0\"}],attrs:{\"xs12\":\"\"}},[_c('v-card',[_c('v-card-title',[_c('span',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"tripsMassCancellation.trips.founded\", \"{trips} trips founded\", { trips: _vm.activeTrips } ))+\" \")])]),_c('v-card-text',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loading),expression:\"!loading\"}]},[_c('v-alert',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.activeTrips),expression:\"activeTrips\"}],attrs:{\"value\":true,\"type\":\"warning\"}},[_vm._v(\" \"+_vm._s(_vm.$t( \"tripsMassCancellation.trips.warningText\", \"You are going to cancel {count} trips from time period {startDate} - {endDate}\", { count: _vm.activeTrips, startDate: _vm.$dateHelper.formatDateWithShortWeekDay( _vm.tripsStartDate ), endDate: _vm.$dateHelper.formatDateWithShortWeekDay( _vm.tripsEndDate ), } ))+\" \")])],1),_c('v-card-actions',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loading),expression:\"!loading\"}]},[(_vm.activeTrips)?_c('v-btn',{on:{\"click\":_vm.clearSearch}},[_vm._v(\" \"+_vm._s(_vm.$t( \"tripsMassCancellation.emptySearchButton.label\", \"Empty search\" ))+\" \")]):_vm._e(),_c('v-spacer'),(_vm.activeTrips)?_c('v-btn',{attrs:{\"dark\":\"\",\"color\":\"red\"},on:{\"click\":function($event){_vm.showCancelDialog = !_vm.showCancelDialog}}},[_vm._v(\" \"+_vm._s(_vm.$t( \"tripsMassCancellation.cancelButton.label\", \"Cancel trips\" ))+\" \")]):_vm._e()],1)],1)],1)],1),_c('v-dialog',{attrs:{\"persistent\":\"\",\"max-width\":\"290\"},model:{value:(_vm.showCancelDialog),callback:function ($$v) {_vm.showCancelDialog=$$v},expression:\"showCancelDialog\"}},[_c('v-card',[_c('v-card-title',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$t(\"passenger.prop.trips.cancel\", \"Cancel trips\")))]),_c('v-card-text',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.dialogLoading),expression:\"!dialogLoading\"}]},[_c('v-form',{model:{value:(_vm.cancelreasonvalid),callback:function ($$v) {_vm.cancelreasonvalid=$$v},expression:\"cancelreasonvalid\"}},[_c('v-textarea',{attrs:{\"outline\":\"\",\"name\":\"cancelreason\",\"label\":_vm.$t(\n 'passenger.arrival_departure.cancellation.reasonlabel',\n 'Reason for cancellation'\n ),\"rules\":_vm.cancelreasonrules},model:{value:(_vm.cancelReason),callback:function ($$v) {_vm.cancelReason=$$v},expression:\"cancelReason\"}})],1),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t( \"passenger.prop.trips.cancelAreYouSure\", \"You are about to cancel {count} trips. Are you sure\", { count: _vm.activeTrips } ))+\" \")])],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.dialogLoading),expression:\"dialogLoading\"}],staticClass:\"text-xs-center\"},[_c('v-progress-circular',{attrs:{\"rotate\":360,\"size\":100,\"width\":15,\"color\":\"teal\",\"value\":_vm.percentage}},[_vm._v(\" \"+_vm._s(_vm.percentage)+\" % \")])],1)]),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"grey darken-1\",\"flat\":\"\",\"disabled\":_vm.dialogLoading},on:{\"click\":function($event){_vm.showCancelDialog = false}}},[_vm._v(_vm._s(_vm.$t(\"generic.back\", \"Back\")))]),_c('v-btn',{attrs:{\"color\":\"primary\",\"disabled\":_vm.dialogLoading || !_vm.cancelreasonvalid,\"flat\":\"\"},on:{\"click\":_vm.onCancelTripsClick}},[_vm._v(_vm._s(_vm.$t(\"generic.yes\", \"Yes\")))])],1)],1)],1)],1),_c('PassengerList',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loading),expression:\"!loading\"}],attrs:{\"pickMode\":true,\"hideShowOnlyActiveToggle\":true,\"hideCloseButton\":true,\"hideSubmitButton\":true,\"hideCreateNewButton\":true,\"showTrips\":true,\"allTrips\":_vm.allTrips,\"onlyShowPassengersWithTrips\":_vm.activeTrips > 0,\"extraHeaders\":[_vm.activeTripsCountHeader],\"show\":true},on:{\"change\":_vm.onPickedPassengersChange}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"text-xs-center\"},[_c('v-progress-circular',{attrs:{\"rotate\":360,\"size\":100,\"width\":15,\"color\":\"teal\",\"value\":_vm.percentage}},[_vm._v(\" \"+_vm._s(_vm.percentage)+\" % \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Passenger from \"@/components/Passenger/models/Passenger\";\r\nimport { Vue, Prop, Component } from \"vue-property-decorator\";\r\nimport DateTimePicker from \"@/components/DatetimePicker.vue\";\r\nimport restService from \"@/services/restService\";\r\nimport Trip from \"@/components/Passenger/models/Trip\";\r\nimport { Group } from \"@/components/Passenger/models/Group\";\r\nimport GroupPicker from \"@/components/Passenger/components/GroupPicker.vue\";\r\nimport PassengerList from \"@/components/Passenger/components/PassengerList.vue\";\r\n\r\n@Component({\r\n components: {\r\n DateTimePicker,\r\n GroupPicker,\r\n PassengerList\r\n },\r\n})\r\nexport default class MassCancellationOfTripsView extends Vue {\r\n cancelreasonrules: any[] = [(val) => this.cancelReasonRequired(val)];\r\n searchByName: string | null = null;\r\n ids: number[] = [];\r\n loading: boolean = false;\r\n dialogLoading: boolean = false;\r\n showCancelDialog: boolean = false;\r\n cancelReason: string = \"\";\r\n percentage = 0;\r\n cancelreasonvalid = false;\r\n allTrips: Trip[] = [];\r\n tripsStartDate: string = new Date().toISOString().substr(0, 10);\r\n today: string = new Date().toISOString().substr(0, 10);\r\n tripsEndDate: string = new Date().toISOString().substr(0, 10);\r\n searchDone: boolean = false;\r\n groupNamesToFilterIn: string[] = [];\r\n pagination: any = {\r\n sortBy: \"name\",\r\n descending: true,\r\n rowsPerPage: 10,\r\n };\r\n\r\n // get startLabel() {\r\n // return this.$t('timetable.starts', 'Starts')\r\n // }\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n onPickedPassengersChange(pickedPassengers: Passenger[]){\r\n this.ids = pickedPassengers.map(p => p.id);\r\n if (this.searchDone){\r\n this.allTrips = this.allTrips.filter(t => this.ids.includes(t.passengerId));\r\n if (this.allTrips.length === 0){\r\n this.clearSearch();\r\n }\r\n }\r\n }\r\n\r\n get activeTripsCountHeader(){\r\n return {\r\n i18n: \"passenger.prop.activeTrips.label\",\r\n text: \"Active trips\",\r\n value: \"activeTripsCount\",\r\n sortable: true,\r\n align: \"right\",\r\n }\r\n }\r\n\r\n get paginatedPassengers(): Passenger[] {\r\n let passengers = (this.$store.state.passenger.paginatedPassengers as Passenger[])\r\n return passengers;\r\n }\r\n\r\n get activeTrips() {\r\n return this.allTrips.filter((t) => !t.cancelledAt).length;\r\n }\r\n\r\n cancelReasonRequired(val: string) {\r\n return !!val || Vue.i18n.translate(\"validation.rules.required\", \"Required\");\r\n }\r\n\r\n async fetchTrips() {\r\n this.loading = true;\r\n // tslint:disable-next-line:prefer-for-of\r\n for (let i = 0; i < this.ids.length; i++) {\r\n // tslint:disable-next-line:max-line-length\r\n const result = await restService.passengers.getPassengerTrips(\r\n this.ids[i],\r\n this.tripsStartDate,\r\n this.tripsEndDate,\r\n this.routeDestinationId\r\n );\r\n const trips = result.map((t) => Trip.WithPassengerId(t, this.ids[i]));\r\n this.percentage = Math.round((i / this.ids.length) * 100);\r\n\r\n this.allTrips = this.allTrips.concat(trips);\r\n }\r\n this.loading = false;\r\n this.percentage = 0;\r\n this.searchDone = true;\r\n }\r\n\r\n startDateUpdated(value) {\r\n this.tripsStartDate = value;\r\n if (value > this.tripsEndDate) {\r\n this.tripsEndDate = value;\r\n }\r\n const maxEnd = new Date(value);\r\n maxEnd.setMonth(maxEnd.getMonth() + 1);\r\n if (new Date(this.tripsEndDate).getTime() > maxEnd.getTime()) {\r\n this.tripsEndDate = maxEnd.toISOString().substr(0, 10);\r\n }\r\n }\r\n\r\n endDateUpdated(value) {\r\n this.tripsEndDate = value;\r\n if (value < this.tripsStartDate) {\r\n this.tripsStartDate = value;\r\n }\r\n const minStart = new Date(value);\r\n minStart.setMonth(minStart.getMonth() - 1);\r\n if (new Date(this.tripsStartDate).getTime() < minStart.getTime()) {\r\n this.tripsStartDate = minStart.toISOString().substr(0, 10);\r\n }\r\n }\r\n\r\n activeTripsForPassenger(id: number) {\r\n return this.allTrips\r\n .filter((t) => t.passengerId === id)\r\n .filter((t) => !t.cancelledAt).length;\r\n }\r\n\r\n cancelledTripsForPassenger(id: number) {\r\n return this.allTrips\r\n .filter((t) => t.passengerId === id)\r\n .filter((t) => t.cancelledAt).length;\r\n }\r\n\r\n async onCancelTripsClick() {\r\n this.dialogLoading = true;\r\n const toBeCancelled = this.allTrips.filter((t) => !t.cancelledAt);\r\n\r\n const groups = toBeCancelled.reduce((r, a) => {\r\n r[a.passengerId] = [...(r[a.passengerId] || []), a];\r\n return r;\r\n }, {});\r\n\r\n let i = 0;\r\n const groupsSize = Object.keys(groups).length;\r\n for (const key in groups) {\r\n if (Object.prototype.hasOwnProperty.call(groups, key)) {\r\n const cancellation = {\r\n reason: this.cancelReason,\r\n trips: groups[key],\r\n };\r\n const result = await restService.passengers.cancelPassengerTrips(\r\n parseInt(key, 10),\r\n cancellation\r\n );\r\n this.updateCanceledTripsToAllTrips(result, parseInt(key, 10)); \r\n i++;\r\n this.percentage = Math.round((i / groupsSize) * 100);\r\n }\r\n }\r\n this.dialogLoading = false;\r\n this.showCancelDialog = false;\r\n this.percentage = 0;\r\n }\r\n\r\n updateCanceledTripsToAllTrips(result: any, passengerId: number) {\r\n result.forEach(t => {\r\n const updatedTrip = Trip.WithPassengerId(t, passengerId);\r\n const target = this.allTrips.find(trip => trip.id === updatedTrip.id && trip.date === updatedTrip.date);\r\n if (target) {\r\n const index = this.allTrips.indexOf(target);\r\n this.allTrips.splice(index, 1, updatedTrip);\r\n } else {\r\n console.log(updatedTrip)\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n clearSearch() {\r\n this.paginatedPassengers.forEach((p) => (p.picked = false));\r\n this.ids = [];\r\n this.allTrips = [];\r\n this.searchDone = false;\r\n }\r\n\r\n}\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MassCancellationOfTripsView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MassCancellationOfTripsView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MassCancellationOfTripsView.vue?vue&type=template&id=1670c7b5&\"\nimport script from \"./MassCancellationOfTripsView.vue?vue&type=script&lang=ts&\"\nexport * from \"./MassCancellationOfTripsView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MassCancellationOfTripsView.vue?vue&type=style&index=0&id=1670c7b5&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/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","import { Route, RouteConfig } from 'vue-router';\r\nimport ArrivalsDeparturesPage from '@/pages/ArrivalsDeparturesPage.vue'\r\nimport SignInPage from '@/pages/SignInPage.vue'\r\nimport SignInAzureAdPage from '@/pages/SignInAzureAdPage.vue'\r\nimport ForgotPasswordPage from '@/pages/ForgotPasswordPage.vue'\r\nimport ResetPasswordPage from '@/pages/ResetPasswordPage.vue'\r\nimport ContactSupportPage from '@/pages/ContactSupportPage.vue'\r\nimport DestinationPage from '@/pages/DestinationPage.vue'\r\nimport OrganizationTransportationPermissions from './components/Organization/OrganizationTransportationPermissions.vue';\r\nimport TimetablePage from '@/pages/TimetablePage.vue'\r\nimport TimetableList from '@/components/Timetable/views/TimetableList.vue'\r\nimport TimetableView from '@/components/Timetable/views/TimetableView.vue'\r\nimport BookingList from '@/components/Booking/views/BookingList.vue'\r\nimport OrganizationPage from '@/pages/OrganizationPage.vue';\r\nimport OrganizationDetails from '@/components/Organization/OrganizationDetails.vue';\r\nimport {RolePermission} from '@/models/Role'\r\nimport PassengerGroupPassenger from './components/Organization/PassengerGroupPassengers.vue';\r\nimport UsersPage from './components/Organization/UsersPage.vue';\r\nimport DestinationsPage from './components/Organization/DestinationsPage.vue';\r\nimport PassengerGroupsPage from './components/Organization/PassengerGroupsPage.vue';\r\nimport OrganizationAuthTenantsPage from './components/Organization/OrganizationAuthTenantsPage.vue';\r\nimport PassengerPage from './pages/PassengerPage.vue';\r\nimport PassengerPageRoot from './pages/PassengerPageRoot.vue';\r\nimport PassengerImportsPage from '@/components/Importer/PassengerImportsPage.vue';\r\nimport MassCancellationOfTripsView from './pages/MassCancellationOfTripsView.vue';\r\n\r\nclass Routes {\r\n\r\n // route level code-splitting how-to\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 // component: () => import(/* webpackChunkName: \"about\" */ './pages/About.vue'),\r\n\r\n public static rootRoute: RouteConfig = \r\n {\r\n path: '/',\r\n redirect: \"/d/0\"\r\n }\r\n\r\n public static signInRoute: RouteConfig = {\r\n path: '/signin',\r\n name: 'Sign in',\r\n meta: { \r\n allowAnonymous: true,\r\n hideMenus: true,\r\n hideRefresh: true\r\n },\r\n component: SignInPage,\r\n };\r\n\r\n public static signInAzureAdRoute: RouteConfig = {\r\n path: '/signInAzureAd',\r\n name: 'Sign in with Microsoft 365',\r\n meta: { \r\n allowAnonymous: true,\r\n hideMenus: true,\r\n hideRefresh: true\r\n },\r\n component: SignInAzureAdPage\r\n };\r\n\r\n public static forgotPasswordRoute: RouteConfig = {\r\n path: '/forgotPassword',\r\n name: 'Forgot password',\r\n meta: { \r\n allowAnonymous: true,\r\n hideMenus: true,\r\n hideRefresh: true\r\n },\r\n component: ForgotPasswordPage\r\n };\r\n\r\n public static resetPasswordRoute: RouteConfig = {\r\n path: '/resetPassword',\r\n name: 'Reset password',\r\n meta: { \r\n allowAnonymous: true,\r\n hideMenus: true,\r\n hideRefresh: true\r\n },\r\n component: ResetPasswordPage\r\n };\r\n\r\n public static contactSupportRoute: RouteConfig = {\r\n path: 'contactSupport',\r\n name: 'Contact support',\r\n meta: {\r\n showDestinationSelector: true,\r\n hideRefresh: true\r\n },\r\n component: ContactSupportPage,\r\n };\r\n\r\n public static aboutRoute: RouteConfig = {\r\n path: '/about',\r\n name: 'About',\r\n meta: {\r\n hideRefresh: true,\r\n showDestinationSelector: true,\r\n },\r\n component: () => import(/* webpackChunkName: \"about\" */ './pages/AboutPage.vue'),\r\n };\r\n\r\n // Destination child routes\r\n public static arrivalsDeparturesRoute: RouteConfig = \r\n {\r\n path: 'arrivals-departures',\r\n component: ArrivalsDeparturesPage,\r\n name: 'ArrivalsDepartures',\r\n meta: {\r\n nav: true,\r\n i18n: 'route.arrivals-departures',\r\n showDestinationSelector: true,\r\n requireDestinationPermissions: [RolePermission.ReadArrivalDepartures]\r\n },\r\n children: [\r\n {\r\n path: 'day/:dateId',\r\n component: ArrivalsDeparturesPage,\r\n name: 'ArrivalsDeparturesDestinationDay',\r\n meta: {\r\n showDestinationSelector: true,\r\n },\r\n }\r\n ]\r\n }\r\n\r\n\r\n public static bookingListCreateNewRoute: RouteConfig = {\r\n path: 'single/:state/create',\r\n component: BookingList,\r\n name: 'BookingListCreateNew',\r\n meta: {\r\n showDestinationSelector: true,\r\n requireDestinationPermissions: [RolePermission.ReadBookings, RolePermission.CreateBookings]\r\n }\r\n }\r\n\r\n public static bookingListWithStateRoute: RouteConfig = {\r\n path: 'single/:state',\r\n component: BookingList,\r\n name: 'BookingListWithState',\r\n meta: {\r\n showDestinationSelector: true,\r\n requireDestinationPermissions: [RolePermission.ReadBookings]\r\n }\r\n }\r\n\r\n public static bookingListRoute: RouteConfig = {\r\n path: 'single',\r\n component: BookingList,\r\n name: 'BookingList',\r\n // redirect: { name: Routes.bookingListWithStateRoute.name, params: { state: 'new' } },\r\n meta: {\r\n showDestinationSelector: true,\r\n requireDestinationPermissions: [RolePermission.ReadBookings]\r\n }\r\n }\r\n\r\n public static timetableListCreateNewRoute: RouteConfig = {\r\n path: 'recurring/:state/create',\r\n component: TimetableList,\r\n name: 'TimetableListCreateNew',\r\n meta: {\r\n showDestinationSelector: true,\r\n requireDestinationPermissions: [RolePermission.ReadTimetables, RolePermission.CreateTimetables]\r\n }\r\n }\r\n\r\n public static timetableListWithStateRoute: RouteConfig = {\r\n path: 'recurring/:state',\r\n component: TimetableList,\r\n name: 'TimetableListWithState',\r\n meta: {\r\n showDestinationSelector: true,\r\n requireDestinationPermissions: [RolePermission.ReadTimetables]\r\n }\r\n }\r\n\r\n public static timetableListRoute: RouteConfig = {\r\n path: 'recurring',\r\n component: TimetableList,\r\n name: 'TimetableList',\r\n // redirect: { name: Routes.timetableListWithStateRoute.name, params: { state: 'new' } },\r\n meta: {\r\n showDestinationSelector: true,\r\n requireDestinationPermissions: [RolePermission.ReadTimetables]\r\n }\r\n }\r\n\r\n public static timetableRoute: RouteConfig = {\r\n path: 'tt/:timetableId',\r\n component: TimetableView,\r\n name: 'Timetable',\r\n meta: {\r\n showDestinationSelector: true,\r\n requireDestinationPermissions: [RolePermission.ReadTimetables]\r\n },\r\n children: [\r\n {\r\n path: 'p/:passengerId',\r\n name: 'TimetablePassenger',\r\n children: [\r\n {\r\n path: 'w/:weekDayId',\r\n name: 'TimetablePassengerWeekday',\r\n children: [\r\n {\r\n path: 'r/:rideId',\r\n name: 'TimetablePassengerWeekdayRide',\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n\r\n public static singleBooking: RouteConfig = {\r\n path: 'timetables',\r\n component: TimetablePage,\r\n name: 'SingleBooking',\r\n meta: {\r\n nav: true,\r\n i18n: 'route.timetables',\r\n requireDestinationPermissions: [RolePermission.ReadBookings],\r\n showDestinationSelector: true,\r\n },\r\n redirect: { name: 'BookingListWithState' },\r\n children: []\r\n }\r\n\r\n\r\n public static timetablesRoute: RouteConfig = {\r\n path: 'timetables',\r\n component: TimetablePage,\r\n name: 'Timetables',\r\n meta: {\r\n nav: true,\r\n i18n: 'route.timetables',\r\n requireDestinationPermissions: [RolePermission.ReadTimetables],\r\n showDestinationSelector: true,\r\n },\r\n redirect: { name: 'TimetableList' },\r\n children: [\r\n Routes.timetableListRoute,\r\n Routes.timetableListWithStateRoute,\r\n Routes.timetableListCreateNewRoute,\r\n Routes.bookingListRoute,\r\n Routes.bookingListWithStateRoute,\r\n Routes.bookingListCreateNewRoute,\r\n Routes.timetableRoute,\r\n ]\r\n }\r\n\r\n public static newPassengerRoute: RouteConfig = {\r\n path: 'newPassenger',\r\n component: PassengerPage,\r\n name: 'NewPassenger',\r\n meta: {\r\n i18n: 'route.passenger.new',\r\n showDestinationSelector: true,\r\n requireDestinationPermissions: [RolePermission.CreatePassengers],\r\n }\r\n }\r\n \r\n public static editPassengerRoute: RouteConfig = {\r\n path: 'edit',\r\n // component: () => import(/* webpackChunkName: \"people\" */ './pages/PassengerPage.vue'),\r\n component: PassengerPage,\r\n name: 'EditPassenger',\r\n meta: {\r\n i18n: 'route.passenger.edit',\r\n passengerNav: true,\r\n showDestinationSelector: true,\r\n requirePassengerPermissions: [RolePermission.ReadPassengers]\r\n }\r\n }\r\n\r\n public static passengerRoute: RouteConfig = {\r\n path: '/passenger/:passengerId',\r\n component: PassengerPageRoot,\r\n name: 'Passenger',\r\n meta: {\r\n showDestinationSelector: true,\r\n requirePassengerPermissions: [ RolePermission.ReadPassengers ],\r\n passengerRoot: true,\r\n },\r\n children: [\r\n Routes.editPassengerRoute,\r\n ],\r\n }\r\n \r\n public static editPeopleRoute: RouteConfig = {\r\n path: 'edit/:passengerId',\r\n // component: () => import(/* webpackChunkName: \"people\" */ './pages/PassengerPage.vue'),\r\n component: PassengerPage,\r\n name: 'EditPeoplePassenger',\r\n meta: {\r\n i18n: 'route.passenger.edit',\r\n passengerNav: true,\r\n showDestinationSelector: true,\r\n requirePassengerPermissions: [RolePermission.ReadPassengers]\r\n }\r\n }\r\n \r\n public static massCancellationOfTrips: RouteConfig = {\r\n path: 'massCancellationOfTrips',\r\n // component: () => import(/* webpackChunkName: \"people\" */ './pages/PassengerPage.vue'),\r\n component: MassCancellationOfTripsView,\r\n name: 'massCancellationOfTrips',\r\n meta: {\r\n i18n: 'route.tripsMassCancellation',\r\n nav: true,\r\n showDestinationSelector: true,\r\n requireDestinationPermissions: [RolePermission.CreateTimetables]\r\n }\r\n }\r\n\r\n public static peopleRoute: RouteConfig = {\r\n path: 'people',\r\n component: () => import(/* webpackChunkName: \"people\" */ './pages/PeoplePage.vue'),\r\n name: 'People',\r\n meta: {\r\n nav: true,\r\n i18n: 'route.people',\r\n showDestinationSelector: true,\r\n requireDestinationPermissions: [RolePermission.ReadPassengers, RolePermission.UpdatePassengerGroups]\r\n },\r\n children: [\r\n Routes.newPassengerRoute,\r\n Routes.editPeopleRoute,\r\n ]\r\n }\r\n\r\n public static destinationRoute: RouteConfig = \r\n {\r\n path: '/d/:destinationId',\r\n name: \"Destination\",\r\n component: DestinationPage,\r\n meta: {\r\n showDestinationSelector: true,\r\n },\r\n children: [\r\n Routes.peopleRoute,\r\n Routes.arrivalsDeparturesRoute,\r\n Routes.timetablesRoute,\r\n Routes.singleBooking,\r\n Routes.massCancellationOfTrips,\r\n Routes.contactSupportRoute\r\n ]\r\n }\r\n\r\n public static organizationDetails: RouteConfig = {\r\n path: 'details',\r\n component: OrganizationDetails,\r\n name: 'OrganizationDetails', \r\n meta: {\r\n showDestinationSelector: true,\r\n },\r\n }\r\n\r\n public static organizationNewUserRoute: RouteConfig = {\r\n path: 'user/new',\r\n component: () => import(/* webpackChunkName: \"organization\" */ './components/Organization/UserEditor.vue'), \r\n name: 'NewUser',\r\n meta: {\r\n showDestinationSelector: true,\r\n },\r\n }\r\n\r\n public static newOrganizationPassenger: RouteConfig = {\r\n path: 'passenger/new',\r\n component: PassengerPage,\r\n name: 'NewOrganizationPassenger',\r\n meta: {\r\n showDestinationSelector: true,\r\n requirePassengerPermissions: [RolePermission.CreatePassengers],\r\n },\r\n }\r\n \r\n public static organizationEditUserRoute: RouteConfig = {\r\n path: 'user/edit/:userEmail',\r\n component: () => import(/* webpackChunkName: \"organization\" */ './components/Organization/UserEditor.vue'), \r\n name: 'EditUser',\r\n meta: {\r\n showDestinationSelector: true,\r\n },\r\n }\r\n \r\n public static passengerGroup: RouteConfig = {\r\n path: 'passengerGroup/:passengerGroupId',\r\n component: PassengerGroupPassenger,\r\n name: 'PassengerGroupView',\r\n meta: {\r\n showDestinationSelector: true,\r\n },\r\n children: [\r\n Routes.newOrganizationPassenger,\r\n ],\r\n }\r\n\r\n public static organizationPassengerGroups: RouteConfig = {\r\n path: 'passengerGroup',\r\n component: PassengerGroupsPage,\r\n name: 'OrganizationPassengerGroups', \r\n meta: {\r\n organizationNav: true,\r\n requireAdmin: false,\r\n i18n: 'route.organization_passenger_groups',\r\n showDestinationSelector: true,\r\n },\r\n }\r\n\r\n public static organizationUsers: RouteConfig = {\r\n path: 'users',\r\n component: UsersPage,\r\n name: 'OrganizationUsers',\r\n meta: {\r\n organizationNav: true,\r\n requireAdmin: true,\r\n i18n: 'route.organization_users',\r\n showDestinationSelector: true,\r\n },\r\n }\r\n public static organizationDestinations: RouteConfig = {\r\n path: 'destinations',\r\n component: DestinationsPage,\r\n name: 'OrganizationDestinations',\r\n meta: {\r\n organizationNav: true,\r\n requireAdmin: true,\r\n i18n: 'route.organization_destinations',\r\n showDestinationSelector: true,\r\n },\r\n }\r\n\r\n public static organizationPassengerImports: RouteConfig = {\r\n path: 'import',\r\n component: PassengerImportsPage,\r\n name: 'PassengerImports',\r\n meta: {\r\n organizationNav: true,\r\n requireAdmin: true,\r\n i18n: 'route.organization_passenger_imports',\r\n showDestinationSelector: true,\r\n }\r\n }\r\n\r\n public static organizationPassengerTransportationPermissions: RouteConfig = {\r\n path: 'transportationPermissions',\r\n component: OrganizationTransportationPermissions,\r\n name: 'OrganizationPassengerTransportationPermissions',\r\n meta: {\r\n organizationNav: true,\r\n requireAdmin: true,\r\n i18n: 'route.organization_passenger_transportation_permissions',\r\n showDestinationSelector: true,\r\n },\r\n }\r\n public static organizationAuthTenants: RouteConfig = {\r\n path: 'authTenants',\r\n component: OrganizationAuthTenantsPage,\r\n name: 'OrganizationAuthTenants',\r\n meta: {\r\n organizationNav: true,\r\n requireAdmin: true,\r\n i18n: 'route.organization_auth_tenants',\r\n showDestinationSelector: true,\r\n },\r\n }\r\n\r\n public static organizationRoute: RouteConfig = {\r\n path: '/o/:organizationId',\r\n name: \"Organization\",\r\n component: OrganizationPage,\r\n children: [\r\n Routes.organizationDetails,\r\n Routes.organizationNewUserRoute,\r\n Routes.organizationEditUserRoute,\r\n Routes.passengerGroup,\r\n Routes.organizationPassengerGroups,\r\n Routes.organizationUsers,\r\n Routes.organizationDestinations,\r\n Routes.organizationPassengerTransportationPermissions,\r\n Routes.organizationPassengerImports,\r\n // Routes.organizationAuthTenants,\r\n ],\r\n meta: {\r\n organizationRoot: true,\r\n showDestinationSelector: true,\r\n // i18n: 'route.organizations',\r\n // // TODO: Set up a new rolepermssion for organizations\r\n // requirePermissions: [RolePermission.ReadAllPassengerTrips]\r\n }\r\n }\r\n\r\n public static routes: RouteConfig[] = [\r\n Routes.rootRoute,\r\n Routes.destinationRoute,\r\n // Routes.passengerDetails,\r\n Routes.signInRoute,\r\n Routes.signInAzureAdRoute,\r\n Routes.forgotPasswordRoute,\r\n Routes.resetPasswordRoute,\r\n Routes.aboutRoute,\r\n Routes.organizationRoute,\r\n Routes.passengerRoute,\r\n ];\r\n}\r\n\r\nexport default Routes;\r\n","\r\nimport { Guid } from \"guid-typescript\";\r\nimport moment from \"moment\"\r\nimport Passenger from '@/components/Passenger/models/Passenger';\r\nimport Helpers from '@/util/Helpers';\r\n\r\nexport enum ArrivalDepartureType {\r\n Unknown = 0,\r\n Arrival = 1,\r\n Departure = 2\r\n}\r\n\r\nexport class ArrivalDeparture {\r\n id: Guid;\r\n tripId: Guid;\r\n movitId: number;\r\n movitInstanceId: number;\r\n placeId: number;\r\n passengerId: number;\r\n passengerName: string;\r\n transportName: string;\r\n at: Date; \r\n atOther: Date | null; \r\n arrivalDepartureType: ArrivalDepartureType;\r\n cancelled: boolean;\r\n cancelledByEmail: string;\r\n cancelling: boolean;\r\n cancellationReason: string;\r\n completed: boolean;\r\n\r\n constructor(options: Partial) {\r\n this.id = options ? options.id : Guid.create();\r\n this.tripId = options ? options.tripId : null;\r\n this.movitId = options ? options.movitId : 0;\r\n this.movitInstanceId = options ? options.movitInstanceId : 0;\r\n this.at = options ? new Date(options.at) : null;\r\n this.atOther = options && options.atOther ? new Date(options.atOther) : null;\r\n this.passengerId = options ? options.passengerId : 0;\r\n this.passengerName = options ? options.passengerName : '';\r\n this.placeId = options ? options.placeId : null;\r\n this.transportName = options ? options.transportName : null;\r\n this.arrivalDepartureType = options ? options.arrivalDepartureType : ArrivalDepartureType.Unknown;\r\n this.cancelled = options ? options.cancelled : false;\r\n this.cancelledByEmail = options ? options.cancelledByEmail : null;\r\n this.cancelling = options ? options.cancelling : false;\r\n this.cancellationReason = options ? options.cancellationReason : \"\";\r\n this.completed = options ? options.completed : false;\r\n }\r\n\r\n get isValid() {\r\n return this.at \r\n && this.at.getTime() > 0\r\n && this.placeId > 0\r\n && this.passengerId > 0;\r\n }\r\n\r\n get atHHMM(){\r\n return (this.at.getHours()).toString().padStart(2, \"0\") \r\n + \":\" \r\n + (this.at.getMinutes()).toString().padStart(2, '0');\r\n }\r\n\r\n get atYMD(){\r\n return this.at.getFullYear() \r\n + \"-\" \r\n + (this.at.getMonth() + 1).toString().padStart(2, \"0\") \r\n + \"-\" \r\n + (this.at.getDate()).toString().padStart(2, '0');\r\n }\r\n\r\n get atOtherHHMM(): string{\r\n return this.atOther \r\n ? (this.atOther.getHours()).toString().padStart(2, \"0\") \r\n + \":\" \r\n + (this.atOther.getMinutes()).toString().padStart(2, '0')\r\n : \"unknown\";\r\n }\r\n\r\n get atOtherYMD(): string {\r\n return this.atOther \r\n ? this.atOther.getFullYear() \r\n + \"-\" \r\n + (this.atOther.getMonth() + 1).toString().padStart(2, \"0\") \r\n + \"-\" \r\n + (this.atOther.getDate()).toString().padStart(2, '0')\r\n : \"unknown\";\r\n }\r\n\r\n get hasPassed(): boolean {\r\n const nowMoment = moment();\r\n const atMoment = moment(this.at);\r\n return nowMoment.isAfter(atMoment.endOf('day')); \r\n }\r\n\r\n get isArrival(){\r\n return this.arrivalDepartureType === ArrivalDepartureType.Arrival;\r\n }\r\n\r\n get isDeparture(){\r\n return this.arrivalDepartureType === ArrivalDepartureType.Departure;\r\n }\r\n\r\n get cancelledByName(){\r\n return Helpers.nameFromEmail(this.cancelledByEmail);\r\n }\r\n\r\n public static fromApi(apiArrivalDeparture: any): ArrivalDeparture {\r\n const arrivalDeparture = new ArrivalDeparture(apiArrivalDeparture);\r\n return arrivalDeparture;\r\n }\r\n\r\n public static toApi(model: ArrivalDeparture): any {\r\n const apiModel = {\r\n id: model.id,\r\n tripId: model.tripId,\r\n movitId: model.movitId,\r\n movitInstanceId: model.movitInstanceId,\r\n placeId: model.placeId,\r\n passengerId: model.passengerId,\r\n passengerName: model.passengerName,\r\n transportName: model.transportName,\r\n at: model.at,\r\n atOther: model.atOther, \r\n arrivalDepartureType: model.arrivalDepartureType,\r\n cancelled: model.cancelled,\r\n cancelling: model.cancelling,\r\n cancellationReason: model.cancellationReason,\r\n completed: model.completed\r\n }\r\n return apiModel;\r\n }\r\n\r\n public static sortByDate(arrivalsDepartures: ArrivalDeparture[]): ArrivalDeparture[] {\r\n return arrivalsDepartures.sort((a, b) => {\r\n if (a.at.getTime() < b.at.getTime()) {\r\n return -1;\r\n }\r\n if (a.at.getTime() > b.at.getTime()) {\r\n return 1;\r\n }\r\n return 0;\r\n })\r\n }\r\n\r\n}\r\n\r\nexport default ArrivalDeparture;\r\n","import Vue from 'vue';\r\n\r\nexport class BookingPhase {\r\n id: number;\r\n name: string;\r\n color: string;\r\n\r\n klass: object = BookingPhase;\r\n\r\n constructor(id: number, name: string) {\r\n this.id = id;\r\n this.name = name;\r\n }\r\n\r\n}\r\n\r\nexport default BookingPhase;\r\n","import { BookingPhase } from '@/components/Booking/models/BookingPhase';\r\n\r\nexport class BookingPhases {\r\n\r\n static Undefined: BookingPhase = new BookingPhase(0, \"Undefined\");\r\n static NotStarted: BookingPhase = new BookingPhase(1, \"NotStarted\");\r\n static AlmostStarted: BookingPhase = new BookingPhase(2, \"AlmostStarted\");\r\n static Ongoing: BookingPhase = new BookingPhase(3, \"Ongoing\");\r\n static AlmostEnded: BookingPhase = new BookingPhase(4, \"AlmostEnded\");\r\n static Ended: BookingPhase = new BookingPhase(5, \"Ended\");\r\n \r\n static States = [\r\n BookingPhases.Undefined,\r\n BookingPhases.NotStarted,\r\n BookingPhases.AlmostStarted,\r\n BookingPhases.Ongoing,\r\n BookingPhases.AlmostEnded,\r\n BookingPhases.Ended,\r\n ]\r\n \r\n klass: object = BookingPhases;\r\n}\r\n\r\nexport default BookingPhase;\r\n","import moment from \"moment\"\r\nimport { Guid } from \"guid-typescript\";\r\nimport BookingPassenger from \"@/components/Booking/models/BookingPassenger\";\r\nimport BookingState, { BookingStates } from '@/components/Booking/models/BookingStates';\r\nimport { BookingPhases } from '@/components/Booking/models/BookingPhases';\r\nimport DateHelper from '@/util/DateHelper';\r\nimport Helpers from '@/util/Helpers'\r\nimport IMovitPlace from './IMovitPlace';\r\nimport IBookingDetailsViewModel from './IBookingDetailsViewModel';\r\nimport IAddressViewModel, { AddressTypeEnum } from './IAddressViewModel';\r\nimport IBookingCreateRequestViewModel from './IBookingCreateRequestViewModel';\r\nimport IPassengerViewModel from './IPassengerViewModel';\r\nimport IProductViewModel from './IProductViewModel';\r\nimport IPriceViewModel from './IPriceViewModel';\r\nimport IFlightViewModel from './IFlightViewModel';\r\nimport IBookingUpdateRequestViewModel from './IBookingUpdateRequestViewModel';\r\nimport IBookingRequest from './IBookingRequest';\r\nimport User from '@/models/User';\r\nimport IPriceEstimateProductViewModel from './IPriceEstimateProductViewModel';\r\nimport IPriceEstimateRouteViewModel from './IPriceEstimateRouteViewModel';\r\nimport TimeOfDay from '@/components/Timetable/models/TimeOfDay';\r\nimport IPriceEstimate from './IPriceEstimate';\r\nimport Passenger from '@/components/Passenger/models/Passenger';\r\nimport TransportationPermission from '@/components/Passenger/models/TransportationPermission';\r\n\r\nexport class Booking {\r\n id: string;\r\n shortId: string;\r\n\r\n idNumber: number;\r\n deleted: boolean;\r\n startDate: Date;\r\n endDate: Date;\r\n requirements: string[] = [];\r\n\r\n pickupDetails: string;\r\n supplierPricingRefId: string;\r\n // treated as getter only on api\r\n // TODO: array of int, not number\r\n passengerIds: number[];\r\n passengers: IPassengerViewModel[];\r\n rateId: string;\r\n flights: IFlightViewModel[];\r\n\r\n unnamedPassengersCount: number;\r\n costCenterName: string;\r\n driverNotes: string;\r\n\r\n fromAddress: string = null;\r\n fromPlace: IAddressViewModel = null;\r\n\r\n toAddress: string = null;\r\n toPlace: IAddressViewModel = null;\r\n\r\n // FK: Destination\r\n // TODO: int, not number\r\n destinationId: number;\r\n \r\n note: string;\r\n // TODO: int, not number\r\n state: number;\r\n // TODO: int, not number\r\n durationTotalHours: number;\r\n // TODO: int, not number\r\n durationMinutes: number; \r\n originalBookingId: string;\r\n\r\n createdAt?: Date;\r\n createdByEmail?: string;\r\n \r\n updatedAt?: Date;\r\n updatedByEmail?: string;\r\n\r\n orderedAt?: Date;\r\n orderedByEmail?: string;\r\n\r\n // Front-end only, flag if this is new\r\n creating: boolean;\r\n\r\n createWithAllDestinationPassengers: boolean = false;\r\n\r\n description: string;\r\n\r\n rejectedReason: string;\r\n\r\n isRecurrent: number;\r\n\r\n product: IProductViewModel;\r\n\r\n transportationPermission?: TransportationPermission;\r\n\r\n klass: object = Booking;\r\n\r\n constructor() {\r\n const guidString = Guid.create().toString().split('-').join('').toLowerCase();\r\n this.id = guidString;\r\n this.shortId = guidString.substring(0, 9);\r\n }\r\n\r\n get noteString(): string {\r\n return this.note ? this.note : '';\r\n }\r\n\r\n get idNumberWithHash(): string {\r\n return `#${this.idNumber.toString()}`;\r\n }\r\n\r\n get createdByNameFromEmail(){\r\n return Helpers.nameFromEmail(this.createdByEmail);\r\n }\r\n\r\n get hasEnoughTimeBeforeStart(): boolean{\r\n const momentNow = moment();\r\n const momentStart = moment(this.startDateString);\r\n momentStart.subtract(Booking.lockDaysBeforeStart, \"days\");\r\n return momentNow.isBefore(momentStart); \r\n }\r\n\r\n get isLocked(): boolean {\r\n if (Booking.nonLockingStates.includes(this.stateObj)){\r\n return false;\r\n }\r\n if (Booking.lockingStates.includes(this.stateObj)){\r\n return true;\r\n }\r\n return this.hasExpired;\r\n }\r\n\r\n get isAccepted(): boolean {\r\n return this.stateObj === BookingStates.Ok;\r\n }\r\n\r\n get isOrdered(): boolean {\r\n return this.stateObj !== BookingStates.Undefined;\r\n }\r\n\r\n get wasOrdered(): boolean {\r\n return ![\r\n BookingStates.Open, \r\n BookingStates.Ok,\r\n BookingStates.Cancelled,\r\n BookingStates.Rejected,\r\n BookingStates.Finished,\r\n ].includes(this.stateObj);\r\n }\r\n\r\n get isOrderable(): boolean {\r\n if (!Booking.nonLockingStates.includes(this.stateObj)){\r\n return false;\r\n }\r\n return this.hasEnoughTimeBeforeStart;\r\n }\r\n get isOrderIsCancelable(): boolean {\r\n return this.stateObj === BookingStates.Open;\r\n }\r\n get hasExpired(): boolean {\r\n return !this.hasEnoughTimeBeforeStart;\r\n }\r\n get hasStartDatePassed(): boolean {\r\n const momentNow = moment();\r\n const momentStart = moment(this.startDateString);\r\n return momentNow.isSameOrAfter(momentStart); \r\n }\r\n get daysUntilStart(): number {\r\n const momentNow = moment();\r\n const momentStart = moment(this.startDateString);\r\n return momentStart.diff(momentNow, 'days');\r\n } \r\n get stateObj(){\r\n return BookingStates.States.find(s => s.id === this.state);\r\n }\r\n get stateName(){\r\n return this.stateObj.name;\r\n }\r\n get stateNameLowerCase(){\r\n return this.stateObj.nameLowerCase;\r\n }\r\n get currentStateColor(){\r\n return this.stateObj.color;\r\n }\r\n get currentStateAlertClass(){\r\n return this.stateObj.alertClass;\r\n }\r\n\r\n get bookingDate() {\r\n return this.startDate ? this.startDate : this.endDate;\r\n }\r\n\r\n get phase(){\r\n if (!this.hasStartDatePassed){\r\n if (this.hasEnoughTimeBeforeStart){\r\n return BookingPhases.NotStarted;\r\n } else {\r\n return BookingPhases.AlmostStarted;\r\n }\r\n } else {\r\n if (this.stateObj === BookingStates.Finished){\r\n return BookingPhases.Ended;\r\n }\r\n return BookingPhases.Ongoing;\r\n }\r\n }\r\n get i18nStateAndPhaseKey(){\r\n return \"booking.state.\" + this.stateObj.name.toLowerCase() + \".phase.\" + this.phase.name.toLowerCase();\r\n }\r\n get startDateString() {\r\n const YYYY = this.bookingDate.getFullYear();\r\n const MM = (this.bookingDate.getMonth() + 1).toString().padStart(2, \"0\");\r\n const DD = (this.bookingDate.getDate()).toString().padStart(2, '0');\r\n return YYYY + \"-\" + MM + \"-\" + DD;\r\n }\r\n\r\n set startDateString(val) {\r\n const valDate = new Date(val + ' ');\r\n valDate.setHours(this.startDate.getHours(), this.startDate.getMinutes(), 0, 0);\r\n this.startDate = valDate;\r\n }\r\n\r\n get startTimeString() {\r\n const HH = this.bookingDate.getHours().toString().padStart(2, '0');\r\n const mm = this.bookingDate.getMinutes().toString().padStart(2, '0');\r\n return HH + \":\" + mm;\r\n }\r\n\r\n set startTimeString(val) {\r\n const valTime = new TimeOfDay(0, 0);\r\n valTime.value = val;\r\n this.startDate.setHours(valTime.hours);\r\n this.startDate.setMinutes(valTime.minutes);\r\n this.startDate.setSeconds(0);\r\n this.startDate.setMilliseconds(0);\r\n }\r\n\r\n get startDateTimeString() {\r\n const YYYY = this.bookingDate.getFullYear();\r\n const MM = (this.bookingDate.getMonth() + 1).toString().padStart(2, \"0\");\r\n const DD = (this.bookingDate.getDate()).toString().padStart(2, '0');\r\n return YYYY + \"-\" + MM + \"-\" + DD;\r\n }\r\n\r\n get isRejected(): boolean {\r\n return this.state === BookingStates.Rejected.id;\r\n }\r\n\r\n get passengerCount(): number {\r\n return this.unnamedPassengersCount + this.namedPassengersCount;\r\n }\r\n\r\n get namedPassengersCount(): number {\r\n return this.passengers ? this.passengers.length : 0;\r\n }\r\n\r\n get primaryPassenger(): IPassengerViewModel | undefined {\r\n return this.passengers && this.passengers.length > 0 \r\n ? this.passengers[0]\r\n : undefined;\r\n }\r\n\r\n get primaryPassengerName(): string {\r\n return this.primaryPassenger.name !== this.createdByEmail ? this.primaryPassenger.name : \"\";\r\n }\r\n \r\n public static get mockPriceEstimate() {\r\n return { \r\n route: {\r\n distance: 96678,\r\n duration: 4616,\r\n // tslint:disable-next-line\r\n geometry: \"}tzrJmtluCACcA_CMWlB{FHWzAnDHR`D`HFV@DP`@HVLRJQRc@`AaCh@oAz@bBFJ\\\\f@NPTVNJRHb@Hb@Dn@?b@AX?zAQLAJC^Gl@S|Am@TILEl@SPKH~@JfAf@rDFXPr@VhBp@rENdATjBLfBHnA@`B@xA?vAE|DArEAfCArACrAEtAIvBMnBYfEYlDMbBStCSrDSdEOfEM`FAJMfFGzEGbKAfAAbBAn@CxDEbHC~E?LI~EKtFMnJEzBExAS|EStEa@rHi@tHgCh\\\\oAfP]|F[dGUjGMdFE|F?zEBzDFhDJdEPvDL`CRrCZtD^pD`@tDh@fEj@fEn@fE|@xFhAlGt@vDp@`DdA|En@dCj@bCdAzDzAhF|AjFtCfIpAlDdAxCx@rCh@tBPr@l@tCd@rCt@~Eh@pE`@rEX`FNhEJrEDxE?RBxHDbFHzFf@dNBn@LnCp@nIz@zIFl@`BbMrArJZdC\\\\zD\\\\dHBdABl@xAy@d@a@Zk@Ne@Ha@NsAh@gGf@oEd@wCz@{DnAiEtBgGvGgKpEaGjA}ArIqJpJiJ~KyI~NwJtN_IbF}B`CmAjHwDlEgChFyC~CqBdD{BnE_DxDsCvIcHdKqJf@g@rLsKhQ}NjLqItHwEfa@mUvAy@pGyD|ByAxFaE`H_GxCwCdDwD`EaF~GwJbE}GzFyKdBsDzBeFzAsDt@mBb@eA`BuEhBmF|BuH|FkR|FeUxC_MjDiOnSe}@jOgp@jDaOtAeGfIs]`A}DvEyPzEmOv@_ClH}RpIoRvJkRhI_OtEqHdDoFfP}T`EmFbFoGxIcKtGiHhGmG`E{D`FwEzCoCbFmErJoIdKkG|CcBdEqBjH}CrPcIvQkL|KwIdLqKnLgMjNaQr~@ulA`O_RnKgLpJ_J|KaJtJaHtTmN|G{ExIoHd`@s^xIyG|HiF\\\\StBgA|BkAzCiAfFoBvEmApBc@jC]lC[hF[X?bA?xAAlB@`CFfBJxCXjC\\\\p@JjCb@`Dz@nErA`E~ARHpH`ClFnArDt@nDl@rF`@xBHnGFjCCtJY~E[tE[fCUbDa@xDi@xDo@fEs@`Ck@dCs@xDkAjCaAvD{A`Bu@tAk@nCuAhDoBpDwB|CkBfQeLfBcAnCqA~Ao@hBu@xBs@j@OlBi@nDw@hAWnAS\\\\IjGsAjFiAtEmA^KfEmAdDgArBy@hHgCxMaGzJeFjKkG`IiFzDsC~AmA`BmAdE_DhIoHnHcH`H}H|FoH`B{BpBsCbGiJ~B}DvB{D|CyFvBgExDkInDcIxGcPfCiGrRae@xNu]fHuPzEkKfDcHvAgCpDsGl@cA|@yArBcDfGyIfCcDpGaIbF{FzGgHzIaJzJ_JzNuMxAuAjBaBhGeF~DcDlDcCjG}DtEcCnFaCvEmBjEyAzEkA|FcAbFo@tM_AvMc@~USbQJ~CJtJ`@`R`ApFh@lHdApF`AjHjBrGlBdCx@bFnBhBr@xJzE~GrD~NnIjAr@hBdA~KdFjLjEnKpC`OpCjJ~@lCLlI^dHBvCGdGY`Fw@`D_AfGqBdIqDrLkIrL{LhEmFnVk]dGyHrGsHjBsBbBgBtGqGhAcAxEeEvIcH~AkAnAgAxB_BpDqCzDgDpGoGnEmFhDqEh@u@hDaF|AaCjBaDjBwCjCyDfFoHlG}HrDwD|HmGbIsFrGcDvKwDfPqD|JiBjsBea@vE_Adr@cNxKyBnAWzKyBrh@iKxCk@~Cc@~@OhBUxJ_AhEUxCQbACbEItQBlHXhEZxEZbGp@bBXpUtD`Ef@|NtA~MHbLWtBOhMcAhJg@|IO`MBh@DjEPxDVvC\\\\`DZ|BZnDn@t@LbCd@rB`@jHhBfBd@nI~BnKrD|LtEbFzBrAl@jErBxKvFb@X~IhF|GdE`HxErMvJvEnDhWjUjHlGhDjChLbIdIdEvBbA~J|DpCz@bD|@fCn@`F`AtAVxCb@vCTxKl@zFD`JA~CBnEJdEVjFh@~Cf@~Dx@tEjAhEvAdBj@|Ar@fF|BtBfA|EvC`FjDdD`CzElDhFnD~FdDvDnBpIxCbD`ApGpA`Ep@`BPvF`@|CJnD@~EG^CnHg@rM{@`IWzIB|DPdCJjGh@hIjAjI~AbIvBzHnCnNxF~FzBrFlBvGfBbFdA~F`A~En@fCTrDTrCD|CHlB@pEGvKe@lEa@zEi@|PkCpK_CbE{AtAe@fCaAnFyBjHkEzEaD~B_BvV_QpQyJvQyI|RsJhGoE|BuB~C}C|D}EhAyAlMoQdRwW~A{BtOqTtFyHpDuExAcBdFiFx@s@VStC}B~FqDbDaBbFqBv@Ur@UjCk@dB]`KwAnAWxEuAd@OxC{A~AaAzD{CfCiCdDcE`CkDvGsKNWvB_D|BuCx@{@z@aAdAcAzAoAx@q@hBuAlAcAfB_Bv@w@xBgCbD}D~@iAzBuCdBgBjBwAjFqDhBgAxLcIbBgAfEgCvEkCtCaBnDqBjFyCnC}AjH}DvAy@~HmErCoBjBcBtB_C^g@rAiBtBkCrA{AhAeArAy@r@_@t@U`AUfAMpAGnBAfUY`D[\\\\E`Dg@|FaBZIbBg@fAa@dDsAj@SvBeAxC{A~CkBpB{A~BkBpAkAfBaB~AyApJwInMqLlHyGlKqJ~@}@bA}@dA_ApBiBjB}AzCqCzBsB|@w@`TuRrW_VjAs@`As@bE}CnCaCpBuB|B_Cr@y@lBcCjF{ErHaHzAsAtEcEfA{@hAs@jBgAjCkAhGwBfJwC~Ae@rC}@t@Oz@K~@KfAGlA?vAFl@Dn@HxAZz@Tr@T`A`@nAr@pBlAnA|@ZTl@j@nAhA~@|@lCrCzBjCz@fAvBnCjAhBvCvEdAdBhAhBrArBb@h@v@`AtArAdAt@|@d@fA\\\\j@J\\\\H`CNjAFN@\\\\@N@`@BdEJdA@V@vBDJ?P?lACdBENAjBErBEVAZ?TAPAtDKD?jCI\\\\?NCZIZMTKTO^Yl@e@tBeBPO~AqA\\\\YPKVKPGHAv@GLCPEJCzAKp@ET@L@TAvAGVANCD?DAbAKL?H@LBn@ZRFN?JEFEHMPs@FWhAsEDOz@eDDMH[H]~@wDXiAh@uBFUFYj@{B|AsGFWjBwHF[Le@Lg@p@mCNc@HYBKr@sCRu@J_@Li@\\\\mAn@kBx@aCL_@HSVy@t@yBf@sAL_@BS@S@S?Y?q@IiE?]AQAm@HMFIzBsCDELMV[TWBCDGDGdCeDDEHMx@gABEJODGj@aAtA{Bv@qA@AJQlBuCDEJSr@iArCwEDIDGDIFKPWHOHMNONUBEHQFIJ[F[@Y@[Am@Aa@Cc@Co@AU?EQuEAMCk@AUMoCAc@?K@W@OBSDSl@oCJUDQBQBUBa@@M@OBQCy@QGKEkAg@KGIGGIGMEYCUa@aFIcAEg@MiAe@kGa@sFeAeNE[IqAAMAI@a@UoCOsBOkA_@wEEq@Cs@AW\"\r\n },\r\n products: [\r\n {\r\n kilometers: 96.6784,\r\n startAreaFee: 2.0000,\r\n flatRate: 0.0,\r\n total: 197.3600,\r\n currency: \"€\",\r\n priceCategory: {\r\n id: 1,\r\n name: \"Perushinta\",\r\n description: \"\",\r\n bookingsAdvanceMinimumMins: 180,\r\n bookingsAdvanceBetweenFrom: 360,\r\n bookingsAdvanceBetweenTo: 1380,\r\n maxPassengers: 4,\r\n maxLuggage: 2,\r\n startFee: 2.0000,\r\n kmFee: 2.0000,\r\n minimumFee: 5.0000\r\n } \r\n }\r\n ],\r\n startTime: new Date(\"2019-08-05T11:40:00Z\"),\r\n startPlace: {\r\n id: 0,\r\n alias: \"Tapailanpiha, 14200 Janakkala, Suomi\",\r\n streetAddress: \"Tapailanpiha, 14200 Janakkala, Suomi\",\r\n postalcode: null,\r\n city: null,\r\n latitude: 60.926403399999991,\r\n longitude: 24.645961599999964,\r\n note: null,\r\n placeType: 0,\r\n color: null\r\n },\r\n endPlace: {\r\n id: 0,\r\n alias: \"Helsinginkatu, Helsinki, Suomi\",\r\n streetAddress: \"Helsinginkatu, Helsinki, Suomi\",\r\n postalcode: null, \r\n city: null,\r\n latitude: 60.1863242,\r\n longitude: 24.943838400000004,\r\n note: null,\r\n placeType: 0,\r\n color: null\r\n },\r\n timitDestinationId: null\r\n }\r\n\r\n }\r\n\r\n public static fromApiBookingDetailsViewModel(vm: IBookingDetailsViewModel): Booking {\r\n const booking = new Booking();\r\n const bookingState = BookingStates.States.find(s => s.name.toLowerCase() === vm.state.toLowerCase())\r\n booking.id = vm.request.bookingRefId;\r\n booking.shortId = vm.request.shortId;\r\n booking.destinationId = vm.request.timitDestinationId;\r\n booking.createdAt = vm.createdAt;\r\n booking.state = bookingState ? bookingState.id : BookingStates.Undefined.id;\r\n if (vm.request.pickupDateTime) {\r\n booking.startDate = new Date(vm.request.pickupDateTime); \r\n booking.endDate = null; \r\n }\r\n if (vm.request.dropoffDateTime) {\r\n booking.endDate = new Date(vm.request.dropoffDateTime); \r\n booking.startDate = null;\r\n }\r\n booking.fromPlace = vm.request.addresses\r\n .find((a: IAddressViewModel) => a.type === AddressTypeEnum.Origin)\r\n\r\n booking.toPlace = vm.request.addresses\r\n .find((a: IAddressViewModel) => a.type === AddressTypeEnum.Destination)\r\n \r\n booking.fromAddress = booking.fromPlace.address;\r\n booking.toAddress = booking.toPlace.address;\r\n booking.requirements = vm.request.requirements;\r\n booking.unnamedPassengersCount = Math.max(vm.request.product.pax, vm.request.passengers.length);\r\n booking.product = vm.request.product;\r\n booking.passengers = vm.request.passengers ? vm.request.passengers : [];\r\n booking.createdByEmail = vm.request.passengers[0].email;\r\n booking.driverNotes = vm.request.notes;\r\n booking.pickupDetails = vm.request.pickupDetails;\r\n booking.supplierPricingRefId = vm.request.supplierPricingRefId;\r\n booking.rateId = vm.request.rateId;\r\n booking.flights = vm.request.flights;\r\n return booking;\r\n }\r\n\r\n public static toApiBookingRequestViewModel(\r\n booking: Booking, \r\n priceEstimateRoute: IPriceEstimateRouteViewModel, \r\n selectedPriceEstimateProduct: IPriceEstimateProductViewModel,\r\n passengerName: Passenger | string,\r\n isDropoffTime: boolean\r\n ): any {\r\n\r\n let passenger: Passenger;\r\n if (typeof(passengerName) === 'string') {\r\n passenger = new Passenger({ name: passengerName });\r\n } else {\r\n passenger = passengerName;\r\n }\r\n\r\n const bookingRequest: IBookingRequest = {\r\n movitId: passenger.movitId,\r\n name: passenger.name,\r\n email: booking.createdByEmail,\r\n phone: \"\", // TODO: Populate phone number\r\n flight: \"\", // TODO: Populate flight info\r\n requests: booking.note, // TODO: Populate requests\r\n timitDestinationId: booking.destinationId,\r\n product: selectedPriceEstimateProduct,\r\n startTime: booking.startDate,\r\n endTime: booking.endDate,\r\n startPlace: this.addressToMovitAddress(booking.fromPlace),\r\n endPlace: this.addressToMovitAddress(booking.toPlace),\r\n requirements: booking.requirements,\r\n }\r\n\r\n // Super ugly, but Movit requires a nullable int for transportation permission Id, so convert to the request\r\n if (booking.transportationPermission && booking.transportationPermission.externalId) {\r\n const externalId = parseInt(booking.transportationPermission.externalId, 10);\r\n bookingRequest.transportationPermissionExternalId = isNaN(externalId) ? undefined : externalId;\r\n }\r\n\r\n if (isDropoffTime) {\r\n bookingRequest.endTime = bookingRequest.startTime;\r\n bookingRequest.startTime = undefined;\r\n }\r\n\r\n return bookingRequest;\r\n }\r\n\r\n public static toApiBookingUpdateRequestViewModel(booking: Booking): any {\r\n\r\n const orderer: IPassengerViewModel = {\r\n company: \"\",\r\n email: booking.createdByEmail,\r\n name: booking.createdByNameFromEmail,\r\n phone: \"\"\r\n }\r\n\r\n const passengers: IPassengerViewModel[] = [orderer];\r\n for (let i = 0; i < booking.unnamedPassengersCount - 1; i++){\r\n passengers.push({\r\n company: orderer.company,\r\n email: \"\",\r\n name: \"Nimeämätön\",\r\n phone: \"\"\r\n })\r\n }\r\n\r\n const vm: IBookingUpdateRequestViewModel = {\r\n bookingRefId: booking.id,\r\n state: booking.stateNameLowerCase,\r\n pickupDateTime: booking.startDate,\r\n flights: booking.flights,\r\n addresses: [booking.fromPlace, booking.toPlace],\r\n // pickupOption: booking.pickupOption,\r\n // createProperty: booking.createProperty,\r\n passengers,\r\n notes: booking.noteString,\r\n requirements: booking.requirements,\r\n }\r\n return vm;\r\n }\r\n\r\n static nonLockingStates = [\r\n BookingStates.Undefined,\r\n BookingStates.Open\r\n ]\r\n\r\n static lockingStates = [\r\n BookingStates.Ok,\r\n BookingStates.Cancelled,\r\n BookingStates.Rejected,\r\n BookingStates.Finished,\r\n ]\r\n\r\n static lockDaysBeforeStart: number = -1;\r\n\r\n static CopyFrom(booking: Booking): Booking{\r\n const copy = Object.assign(new Booking(), booking);\r\n return copy;\r\n }\r\n\r\n private static addressToMovitAddress(address: IAddressViewModel): IMovitPlace {\r\n if (!address) {\r\n return null;\r\n }\r\n \r\n const movitPlace: IMovitPlace = {\r\n alias: address.address,\r\n latitude: address.location.lat,\r\n longitude: address.location.lng,\r\n streetAddress: address.address,\r\n city: address.city,\r\n postalcode: address.postalcode,\r\n placeType: 0,\r\n id: 0,\r\n }\r\n return movitPlace;\r\n }\r\n \r\n}\r\n\r\nexport default Booking;\r\n","import { BookingStates } from '@/components/Booking/models/BookingStates';\r\n\r\nexport class BookingState {\r\n id: number;\r\n name: string;\r\n\r\n klass: object = BookingState;\r\n\r\n constructor(id: number, name: string) {\r\n this.id = id;\r\n this.name = name;\r\n }\r\n\r\n get nameLowerCase(){\r\n return this.name.toLowerCase();\r\n }\r\n\r\n get alertClass(){\r\n switch (this.name){\r\n case BookingStates.Undefined.name:\r\n case BookingStates.Open.name:\r\n return 'lighten-2 black--text';\r\n break;\r\n default:\r\n return '';\r\n break;\r\n }\r\n }\r\n\r\n get color(){\r\n switch (this.name){\r\n case BookingStates.Undefined.name:\r\n return \"grey\"\r\n case BookingStates.Open.name: \r\n return \"orange\" \r\n case BookingStates.Ok.name: \r\n return \"green\"\r\n case BookingStates.Finished.name:\r\n return \"blue\";\r\n case BookingStates.Rejected.name:\r\n return \"red\"\r\n case BookingStates.Cancelled.name:\r\n return \"grey\"\r\n default:\r\n return \"pink\";\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport default BookingState;\r\n","import { BookingState } from '@/components/Booking/models/BookingState';\r\n\r\nexport class BookingStates {\r\n\r\n static Undefined: BookingState = new BookingState(0, \"Undefined\");\r\n static Open: BookingState = new BookingState(10, \"Open\");\r\n static Ok: BookingState = new BookingState(200, \"Ok\");\r\n static Rejected: BookingState = new BookingState(300, \"Rejected\");\r\n static Cancelled: BookingState = new BookingState(400, \"Cancelled\");\r\n static Finished: BookingState = new BookingState(500, \"Finished\");\r\n\r\n static States = [\r\n BookingStates.Undefined,\r\n BookingStates.Open,\r\n BookingStates.Ok,\r\n BookingStates.Rejected,\r\n BookingStates.Cancelled,\r\n BookingStates.Finished,\r\n ]\r\n\r\n static SelectableStates = [\r\n BookingStates.Open,\r\n BookingStates.Ok,\r\n // BookingStates.Rejected,\r\n BookingStates.Cancelled,\r\n BookingStates.Finished,\r\n ]\r\n \r\n klass: object = BookingStates;\r\n}\r\n\r\nexport default BookingState;\r\n","import ILocationViewModel from './ILocationViewModel';\r\n\r\n// Movit view models\r\nexport default interface IAddressViewModel {\r\n address: string;\r\n city: string;\r\n postalcode: string;\r\n location: ILocationViewModel;\r\n type: number;\r\n category: string; \r\n}\r\n\r\nexport enum AddressTypeEnum {\r\n Origin = 1,\r\n Destination = 2\r\n}\r\n","export class CostCenter {\r\n name: string;\r\n\r\n constructor(options: any) {\r\n this.name = options && options.name ? options.name : '';\r\n }\r\n}\r\n\r\nexport default CostCenter;\r\n","export class Group {\r\n name: string;\r\n creator: boolean;\r\n\r\n constructor(name: string, creator: boolean = false) {\r\n this.name = name;\r\n this.creator = creator;\r\n }\r\n\r\n static getUniqueGroups(groups: Group[]): Group[] {\r\n return groups.filter(g => g.name).reduce(\r\n (arr: Group[], item: Group) => {\r\n return arr.map(a => a.name.toLowerCase())\r\n .includes(item.name.toLowerCase()) ? arr : [...arr, item];\r\n }, \r\n []\r\n );\r\n }\r\n\r\n static getUniqueGroupNames(groupNames: string[]): string[] {\r\n return groupNames.filter(gn => gn).reduce(\r\n (arr: string[], item: string) => {\r\n return arr.map(a => a.toLowerCase())\r\n .includes(item.toLowerCase()) ? arr : [...arr, item];\r\n }, \r\n []\r\n );\r\n } \r\n}\r\n\r\nexport default Group;\r\n","\r\nimport PassengerDestination from \"@/components/Passenger/models/PassengerDestination\";\r\nimport Timetable from \"@/components/Timetable/models/Timetable\";\r\nimport Utility from './Utility';\r\nimport Group from './Group';\r\nimport IPassengerPhonNumberViewModel from \"./IPassengerPhoneNumberViewModel\";\r\n\r\nexport enum PassengerState {\r\n Normal = 0,\r\n Archived,\r\n Deleted\r\n}\r\n\r\nexport class Passenger {\r\n // TODO: int, not number\r\n id: number = 0;\r\n movitId?: number | null = null;\r\n externalId: string;\r\n organizationId?: string = '';\r\n // TODO: int enum, not number\r\n state: PassengerState = PassengerState.Normal;\r\n groups?: string = \"\";\r\n yearGrade?: number | null = null;\r\n name: string | null = null;\r\n phone?: string = null;\r\n phoneNumbers: IPassengerPhonNumberViewModel[] = [];\r\n hasSsn: boolean = false;\r\n language?: string = null;\r\n note?: string = null;\r\n timitNote?: string = null;\r\n\r\n homeAddress?: string = null;\r\n homeCity?: string = null;\r\n homePostalcode?: string = null;\r\n\r\n pickupAddress?: string = null;\r\n timetables: Timetable[] = [];\r\n utilities?: string = null;\r\n \r\n billingName?: string = null;\r\n billingAddress?: string = null;\r\n billingPostalcode?: string = null;\r\n billingCity?: string = null;\r\n billingUseHomeAddress: boolean = true;\r\n\r\n inactive?: boolean = false;\r\n transportationPermissionRequired: boolean = false;\r\n transportationPermissionCount: number = 0;\r\n passengerDestinations: PassengerDestination[] = [];\r\n destinationIds: number[] = [];\r\n secondaryDestinationId?: number | null = null;\r\n movitInstanceId: number | null;\r\n hasPendingPropertyChanges: boolean = false;\r\n\r\n // Runtime only\r\n selected: boolean = false;\r\n picked: boolean = false;\r\n creator: boolean = false;\r\n\r\n constructor(options) {\r\n this.id = options?.id ?? 0;\r\n this.movitId = options?.movitId ?? null;\r\n this.externalId = options?.externalId ?? null;\r\n this.organizationId = options?.organizationId ?? null;\r\n this.state = options?.state ?? PassengerState.Normal;\r\n this.groups = options?.groups ?? \"\";\r\n this.yearGrade = options?.yearGrade ?? null;\r\n this.name = options?.name ?? null;\r\n this.phone = options?.phone ?? null;\r\n this.phoneNumbers = options?.phoneNumbers?.filter(p => !p.deletedAt && !p.deletedBy) ?? [];\r\n this.hasSsn = options && options.hasSsn;\r\n this.language = options?.language ?? null;\r\n this.note = options?.note ?? null;\r\n this.timitNote = options?.timitNote ?? null;\r\n\r\n this.homeAddress = options?.homeAddress ?? null;\r\n this.homeCity = options?.homeCity ?? null;\r\n this.homePostalcode = options?.homePostalcode ?? null;\r\n\r\n this.pickupAddress = options?.pickupAddress ?? null;\r\n this.timetables = options?.timetables ?? [];\r\n this.passengerDestinations = options?.passengerDestinations ?? [];\r\n this.destinationIds = options?.passengerDestinations?.map(d => d.destinationId) ?? [];\r\n this.secondaryDestinationId = options?.secondaryDestinationId ?? null;\r\n this.utilities = options?.utilities ?? \"\";\r\n \r\n this.billingName = options?.billingName ?? null;\r\n this.billingAddress = options?.billingAddress ?? null;\r\n this.billingPostalcode = options?.billingPostalcode ?? null;\r\n this.billingCity = options?.billingCity ?? null;\r\n this.billingUseHomeAddress = options?.billingUseHomeAddress ?? true;\r\n\r\n this.inactive = options?.inactive ?? false;\r\n this.transportationPermissionRequired = options?.transportationPermissionRequired ?? false;\r\n this.transportationPermissionCount = options?.transportationPermissionCount ?? 0;\r\n this.movitInstanceId = options?.movitInstanceId ?? null;\r\n this.hasPendingPropertyChanges = options?.hasPendingPropertyChanges ?? 0;\r\n\r\n this.selected = true;\r\n this.picked = false;\r\n this.creator = options && options.creator;\r\n \r\n }\r\n\r\n get isArchived(): boolean {\r\n return this.state === PassengerState.Archived;\r\n }\r\n\r\n get isDeleted(): boolean {\r\n return this.state === PassengerState.Deleted;\r\n }\r\n\r\n get isArchivedOrDeleted(): boolean {\r\n return this.isArchived || this.isDeleted;\r\n }\r\n\r\n get phoneNumbersList(): string[] {\r\n return this.phone\r\n ? this.phone.split(',').map(p => p.trim()).filter(p => p)\r\n : []\r\n }\r\n\r\n set phoneNumbersList(val){\r\n this.phone = val.join(', ');\r\n }\r\n\r\n get homeOrPickupAddress() {\r\n return this.pickupAddress \r\n ? this.pickupAddress \r\n : this.homeAddress;\r\n }\r\n\r\n // Note: Do not manipulate the utilityIds array, always re-write the entire array with the setter\r\n get utilityIds(): number[] {\r\n const splitUtilities = this.utilities \r\n ? this.utilities.split(\",\").filter(u => u !== \"\")\r\n : [];\r\n return splitUtilities.map(uid => parseInt(uid, 10)).sort();\r\n }\r\n \r\n set utilityIds(val: number[]) {\r\n this.utilities = val.sort().join(\",\");\r\n }\r\n\r\n toggleUtility(utilityId: number){\r\n let utilityIds = this.utilityIds;\r\n if (utilityIds.some(id => id === utilityId)){\r\n utilityIds = utilityIds.filter(id => id !== utilityId);\r\n } else {\r\n utilityIds.push(utilityId);\r\n }\r\n this.utilityIds = utilityIds;\r\n }\r\n\r\n static CopyFrom(passenger: Passenger): Passenger {\r\n return new Passenger({\r\n id: passenger.id,\r\n movitId: passenger.movitId,\r\n externalId: passenger.externalId,\r\n organizationId: passenger.organizationId,\r\n state: passenger.state,\r\n groups: passenger.groups,\r\n yearGrade: passenger.yearGrade,\r\n name: passenger.name,\r\n phone: passenger.phone,\r\n phoneNumbers: passenger.phoneNumbers,\r\n hasSsn: passenger.hasSsn,\r\n language: passenger.language,\r\n note: passenger.note,\r\n timitNote: passenger.timitNote,\r\n homeAddress: passenger.homeAddress,\r\n homeCity: passenger.homeCity,\r\n homePostalcode: passenger.homePostalcode,\r\n pickupAddress: passenger.pickupAddress,\r\n timetables: passenger.timetables,\r\n passengerDestinations: passenger.passengerDestinations.map(d => d),\r\n movitInstanceId: passenger.movitInstanceId,\r\n utilities: passenger.utilities,\r\n billingName: passenger.billingName,\r\n billingAddress: passenger.billingAddress,\r\n billingPostalcode: passenger.billingPostalcode,\r\n billingCity: passenger.billingCity,\r\n billingUseHomeAddress: passenger.billingUseHomeAddress,\r\n hasPendingPropertyChanges: passenger.hasPendingPropertyChanges,\r\n inactive: passenger.inactive,\r\n selected: false,\r\n transportationPermissionRequired: passenger.transportationPermissionRequired,\r\n secondaryDestinationId: passenger.secondaryDestinationId,\r\n });\r\n }\r\n \r\n get groupObjs(): Group[]{\r\n return Group.getUniqueGroupNames(\r\n this.groups\r\n .split(\",\")\r\n .map(g => g.trim())\r\n ).map(g => new Group(g, false));\r\n }\r\n\r\n get groupNames(): string[]{\r\n const groupsString = this.groups ? this.groups : '';\r\n return Group.getUniqueGroupNames(\r\n groupsString\r\n .split(\",\")\r\n .map(g => g.trim())\r\n );\r\n }\r\n\r\n // Returns true if a property was modified, false if not\r\n updateGroups(groups: string[]){\r\n const newGroupsString = Group.getUniqueGroupNames(\r\n groups.map(g => g.trim())\r\n ).join(\", \");\r\n\r\n if (newGroupsString === this.groups){\r\n // Groups are the same, no need to do anything\r\n return false;\r\n }\r\n // Set new groups\r\n this.groups = newGroupsString;\r\n return true;\r\n }\r\n\r\n // Returns true if a property was modified, false if not\r\n addToGroupNames(groups: string[]){\r\n const newGroupsString = Group.getUniqueGroupNames(\r\n this.groups\r\n .split(\",\")\r\n .map(g => g.trim())\r\n .concat(groups.map(g => g.trim())))\r\n .join(\", \");\r\n if (newGroupsString === this.groups){\r\n // Groups are the same, no need to do anything\r\n return false;\r\n }\r\n // Set new groups\r\n this.groups = newGroupsString;\r\n return true;\r\n }\r\n\r\n // Returns true if a property was modified, false if not\r\n removeFromGroupNames(groups: string[]): boolean{\r\n const newGroupsString = Group.getUniqueGroupNames(\r\n this.groups\r\n .split(\",\")\r\n .map(g => g.trim())\r\n .filter(g => !groups.map(g2 => g2.trim()).includes(g)))\r\n .join(\", \");\r\n if (newGroupsString === this.groups){\r\n // Groups are the same, no need to do anything\r\n return false;\r\n }\r\n // Set new groups\r\n this.groups = newGroupsString;\r\n return true;\r\n }\r\n\r\n get yearGradeFormatted(): string {\r\n return this.yearGrade ? this.yearGrade.toString() : \"-\";\r\n }\r\n\r\n get nameLowerCase(): string {\r\n return this.name.toLowerCase();\r\n }\r\n\r\n yearGradeMatchesSearch(search: string){\r\n if (search === \"-\" && this.yearGrade === 0){\r\n return true;\r\n }\r\n const searchAsInteger: number = parseInt(search, 10);\r\n return this.yearGrade === searchAsInteger;\r\n }\r\n\r\n nameMatchesSearch(search: string){\r\n const searchLowercase = search.toLowerCase();\r\n return this.nameLowerCase.startsWith(searchLowercase) || this.nameLowerCase.includes(\" \" + searchLowercase);\r\n }\r\n\r\n static utilities: Utility[] = [ \r\n new Utility(1, \"Wheelchair\"),\r\n new Utility(2, \"Receiver\"),\r\n new Utility(3, \"Single\"),\r\n new Utility(4, \"Walker\"),\r\n new Utility(5, \"Crutches\"),\r\n new Utility(6, \"Payer\"),\r\n new Utility(7, \"Safety seat\"),\r\n new Utility(8, \"Large car\"),\r\n new Utility(9, \"Small car\"),\r\n new Utility(10, \"Attendant\"),\r\n new Utility(11, \"Careva belt\"),\r\n new Utility(12, \"Stretcher\"),\r\n new Utility(13, \"Electric wheelchair\"),\r\n new Utility(14, \"Guide dog\"),\r\n new Utility(15, \"Folding wheelchair\")\r\n ]\r\n\r\n public static sortByNameAlphabetically(passengers: Passenger[]): Passenger[] {\r\n return passengers.sort((a, b) => {\r\n const nameA = a.name.toUpperCase();\r\n const nameB = b.name.toUpperCase();\r\n return (nameA < nameB) ? -1 : (nameA > nameB) ? 1 : 0;\r\n });\r\n }\r\n}\r\n\r\nexport default Passenger;\r\n","import moment from \"moment\";\r\nimport CostCenter from \"./CostCenter\";\r\nimport TransportationPermissionExtra from \"../models/TransportationPermissionExtra\";\r\n\r\nexport enum TransportationPermissionSourceEnum {\r\n Movit,\r\n Timit,\r\n Likuma\r\n}\r\n\r\nexport enum DeductiblePaymentEnum {\r\n Car = 0,\r\n Invoice = 1\r\n}\r\n\r\nexport enum DeductibleTypeEnum {\r\n NoDeductible = 0,\r\n Static = 1,\r\n Matkahuolto = 100,\r\n WalttiHäme = 101,\r\n Riihimäki = 102,\r\n Nysse = 103,\r\n EuraMatkahuolto = 104,\r\n KessoteMatkahuolto = 105,\r\n RaumaMatkahuolto = 106,\r\n PoriMatkahuolto = 107,\r\n HslTwoZoneMonthly = 108,\r\n AskolaAsiointi = 109,\r\n AskolaTyo = 110,\r\n AskolaOpiskelu = 111,\r\n Loviisa = 112,\r\n PorvooAsiointi = 113,\r\n PorvooTyo = 114,\r\n PorvooOpiskelu = 115,\r\n PorvooSHL = 116,\r\n SipooAsiointi = 117,\r\n SipooTyo = 118,\r\n SipooSHL = 119,\r\n HslStudentMonthly = 120,\r\n SipooOpiskelu = 121,\r\n WalttiJKL = 122,\r\n Vpl = 123,\r\n FixedMonthly = 124,\r\n KeusoteMatkahuolto = 125,\r\n}\r\n\r\nexport default class TransportationPermission {\r\n id: number | null;\r\n externalId: string;\r\n // NOTE: Passenger's MovitId\r\n source: number;\r\n name: string | null;\r\n isDraft: boolean;\r\n tripType: string;\r\n decisionType: string;\r\n costCenter: CostCenter;\r\n child: boolean;\r\n passengerId: number;\r\n tripDestinations: number;\r\n deductiblePayment: DeductiblePaymentEnum;\r\n deductibleType: DeductibleTypeEnum;\r\n fixedDeductible: number | null;\r\n distanceLimit: number | null;\r\n initialQuota: number;\r\n initialExpressQuota: number;\r\n remainingQuota: number | null;\r\n quotaTime: number;\r\n startDate: string;\r\n endDate: string;\r\n note: string | null;\r\n accountKey: string | null;\r\n priceCode: string | null;\r\n extras?: TransportationPermissionExtra[];\r\n tripDirection: number;\r\n\r\n // NOTE: Timit only\r\n timitPassengerId: number;\r\n movitInstanceId: number | null;\r\n\r\n constructor(options) {\r\n this.id = options && options.id ? options.id : null;\r\n this.externalId = options && options.externalId ? options.externalId : \"\";\r\n this.source = options && options.source ? options.source : 0;\r\n this.passengerId = options && options.passengerId ? options.passengerId : 0;\r\n this.name = options && options.name ? options.name : null;\r\n this.isDraft = options && typeof options.isDraft === \"boolean\" ? options.isDraft : true;\r\n\r\n this.tripType = options && options.tripType ? options.tripType : \"\";\r\n this.decisionType = options && options.decisionType ? options.decisionType : \"\";\r\n this.costCenter = options && options.costCenter ? new CostCenter(options.costCenter) : new CostCenter({});\r\n this.child = options && options.child ? true : false;\r\n this.distanceLimit = options && options.distanceLimit ? options.distanceLimit : null;\r\n\r\n this.deductiblePayment = options && options.deductiblePayment ? options.deductiblePayment : 0;\r\n\r\n this.deductibleType = options && options.deductibleType ? options.deductibleType : 0;\r\n this.fixedDeductible = options && options.fixedDeductible ? options.fixedDeductible : null;\r\n this.initialQuota = options && options.initialQuota ? options.initialQuota : 0;\r\n this.initialExpressQuota = options && options.initialExpressQuota ? options.initialExpressQuota : 0;\r\n this.remainingQuota = options && options.remainingQuota ? options.remainingQuota : null;\r\n this.startDate = options && options.startDate ? options.startDate : null;\r\n this.endDate = options && options.endDate ? options.endDate : null;\r\n this.note = options && options.note ? options.note : null;\r\n\r\n this.timitPassengerId = options && options.timitPassengerId ? options.timitPassengerId : null;\r\n this.movitInstanceId = options && options.movitInstanceId ? options.movitInstanceId : null;\r\n this.quotaTime = options && options.quotaTime ? options.quotaTime : 0;\r\n this.accountKey = options && options.accountKey ? options.accountKey : null;\r\n this.priceCode = options && options.priceCode ? options.priceCode : null;\r\n this.tripDestinations = options && options.tripDestinations ? options.tripDestinations : 0;\r\n this.extras = options && options.extras ? options.extras : [];\r\n this.tripDirection = options && options.tripDirection ? options.tripDirection : 0;\r\n }\r\n\r\n static CopyFrom(\r\n transportationPermission: TransportationPermission\r\n ): TransportationPermission {\r\n return new TransportationPermission(transportationPermission);\r\n }\r\n\r\n get startDateYMD() {\r\n return moment(this.startDate).format(\"YYYY-MM-DD\");\r\n }\r\n\r\n set startDateYMD(val) {\r\n this.startDate = moment(val)\r\n .startOf(\"day\")\r\n .format(\"YYYY-MM-DD\");\r\n }\r\n\r\n get startDateFormatted() {\r\n return moment(this.startDate).format(\"YYYY-MM-DD\");\r\n }\r\n\r\n get endDateYMD() {\r\n return moment(this.endDate).format(\"YYYY-MM-DD\");\r\n }\r\n\r\n set endDateYMD(val) {\r\n this.endDate = moment(val)\r\n .endOf(\"day\")\r\n .format(\"YYYY-MM-DD\");\r\n }\r\n\r\n get endDateFormatted() {\r\n return moment(this.endDate).format(\"YYYY-MM-DD\");\r\n }\r\n\r\n get remainingQuotaFormatted() {\r\n return this.remainingQuota === null\r\n ? this.initialQuota\r\n : this.remainingQuota;\r\n }\r\n}\r\n","export default class Trip {\r\n id: number;\r\n carName?: string;\r\n carRegisterNumber?: string;\r\n startDateTime: string;\r\n endDateTime: string;\r\n startPlace: string;\r\n startPlaceId: number;\r\n endPlace: string;\r\n endPlaceId: number;\r\n passengerId: number;\r\n movitPassengerId: string;\r\n cancelledAt?: string;\r\n cancelledBy?: string;\r\n cancelReason?: string;\r\n pickupTime?: string;\r\n dropoffTime?: string;\r\n noShowTime?: string;\r\n selectedForCancelling: boolean;\r\n \r\n constructor(options) {\r\n this.id = options && options.id ? options.id : null;\r\n this.passengerId = options && options.passengerId ? options.passengerId : null;\r\n this.carName = options && options.carName ? options.carName : null;\r\n this.carRegisterNumber = options && options.carRegisterNumber ? options.carRegisterNumber : null;\r\n this.startDateTime = options && options.startDateTime ? options.startDateTime : null;\r\n this.endDateTime = options && options.endDateTime ? options.endDateTime : null;\r\n this.startPlace = options && options.startPlace ? options.startPlace : null;\r\n this.endPlace = options && options.endPlace ? options.endPlace : null;\r\n this.movitPassengerId = options && options.movitPassengerId ? options.movitPassengerId : null;\r\n this.cancelledAt = options && options.cancelledAt ? options.cancelledAt : null;\r\n this.cancelledBy = options && options.cancelledBy ? options.cancelledBy : null;\r\n this.cancelReason = options && options.cancelReason ? options.cancelReason : null;\r\n this.pickupTime = options && options.pickupTime ? options.pickupTime : null;\r\n this.dropoffTime = options && options.dropoffTime ? options.dropoffTime : null;\r\n this.noShowTime = options && options.noShowTime ? options.noShowTime : null;\r\n this.selectedForCancelling = false;\r\n }\r\n\r\n public static WithPassengerId(tripFromApi, passengerId: number) {\r\n const trip = new Trip(tripFromApi);\r\n trip.passengerId = passengerId;\r\n return trip;\r\n }\r\n\r\n get date() {\r\n const test = (this.startDateTime || this.endDateTime).split('T');\r\n return test[0]\r\n }\r\n }\r\n","export class Utility {\r\n id: number;\r\n title: string;\r\n\r\n selected: boolean;\r\n\r\n constructor(id, title) {\r\n this.id = id;\r\n this.title = title;\r\n }\r\n}\r\n\r\nexport default Utility;\r\n","\r\nimport TimeOfDay from \"./TimeOfDay\";\r\nimport { Guid } from \"guid-typescript\";\r\n\r\nexport enum RideType {\r\n Unknown = 0,\r\n Arrival = 1,\r\n Departure = 2\r\n}\r\n\r\nexport class Ride {\r\n id: Guid;\r\n timeOfDay: TimeOfDay;\r\n timeOfDayUpdate: TimeOfDay;\r\n fromId: number;\r\n toId: number;\r\n fromAddress: string;\r\n toAddress: string;\r\n rideType: RideType;\r\n fromHome: boolean;\r\n toHome: boolean;\r\n passengerId: number;\r\n timetableId: Guid;\r\n weekDayId: number;\r\n creatingId?: Guid;\r\n creating: boolean;\r\n updating: boolean;\r\n deleting: boolean;\r\n\r\n constructor(options: Partial) {\r\n this.id = options && options.id ? options.id : Guid.create();\r\n this.timeOfDay = options && options.timeOfDay ? options.timeOfDay : new TimeOfDay(7, 45);\r\n this.fromId = options && options.fromId ? options.fromId : 0;\r\n this.toId = options && options.toId ? options.toId : 0;\r\n this.fromAddress = options && options.fromAddress ? options.fromAddress : \"Unknown address\";\r\n this.toAddress = options && options.toAddress ? options.toAddress : \"Unknown address\";\r\n this.rideType = options && options.rideType ? options.rideType : RideType.Unknown;\r\n this.fromHome = options && options.fromHome ? options.fromHome : false;\r\n this.toHome = options && options.toHome ? options.toHome : false;\r\n this.passengerId = options && options.passengerId ? options.passengerId : 0;\r\n this.timetableId = options && options.timetableId ? options.timetableId : null;\r\n this.weekDayId = options && options.weekDayId ? options.weekDayId : 0;\r\n // For local change indication/update transaction sync\r\n this.creatingId = options && options.creatingId ? options.creatingId : undefined;\r\n this.creating = options && options.creating ? options.creating : false;\r\n this.updating = options && options.updating ? options.updating : false;\r\n this.deleting = options && options.deleting ? options.deleting : false;\r\n this.timeOfDayUpdate = options && options.timeOfDayUpdate ? options.timeOfDayUpdate : undefined;\r\n }\r\n\r\n get isArrival() {\r\n return this.rideType === RideType.Arrival; \r\n }\r\n get isDeparture() {\r\n return this.rideType === RideType.Departure; \r\n }\r\n get value() {\r\n return this.timeOfDay.value;\r\n }\r\n get isValid() {\r\n return this.timeOfDay !== null\r\n && (this.fromId > 0 || this.fromHome)\r\n && (this.toId > 0 || this.toHome)\r\n && this.passengerId > 0\r\n && this.timetableId \r\n && this.weekDayId >= 0 && this.weekDayId <= 6;\r\n }\r\n get loading(){\r\n return this.creating || this.updating || this.deleting; \r\n }\r\n\r\n public static CopyFrom(sourceRide: Ride): Ride {\r\n return new Ride({\r\n timeOfDay: new TimeOfDay(sourceRide.timeOfDay.hours, sourceRide.timeOfDay.minutes),\r\n fromId: sourceRide.fromId,\r\n toId: sourceRide.toId,\r\n fromAddress: sourceRide.fromAddress,\r\n toAddress: sourceRide.toAddress,\r\n rideType: sourceRide.rideType,\r\n fromHome: sourceRide.fromHome,\r\n toHome: sourceRide.toHome,\r\n passengerId: sourceRide.passengerId,\r\n timetableId: sourceRide.timetableId,\r\n weekDayId: sourceRide.weekDayId,\r\n creatingId: sourceRide.creatingId,\r\n creating: sourceRide.creating,\r\n updating: sourceRide.updating,\r\n deleting: sourceRide.deleting, \r\n timeOfDayUpdate: sourceRide.timeOfDayUpdate,\r\n })\r\n }\r\n\r\n public static toApiRide(ride: Ride): any {\r\n const apiRide = (Ride.CopyFrom(ride) as any);\r\n apiRide.id = ride.id.toString();\r\n apiRide.creatingId = ride.creatingId ? ride.creatingId.toString() : undefined;\r\n const timeOfDay: TimeOfDay = ride.timeOfDayUpdate || ride.timeOfDay;\r\n apiRide.hour = timeOfDay.hours;\r\n apiRide.minute = timeOfDay.minutes;\r\n delete apiRide.timeOfDay;\r\n delete apiRide.timeOfDayUpdate;\r\n delete apiRide.updating;\r\n delete apiRide.deleting;\r\n return apiRide;\r\n }\r\n\r\n public static fromApi(apiRide: any): Ride {\r\n const ride = new Ride(apiRide);\r\n ride.timeOfDay = new TimeOfDay(apiRide.hour, apiRide.minute);\r\n return ride;\r\n }\r\n\r\n public static sortByTime(rides: Ride[]): Ride[] {\r\n return rides.sort((a, b) => {\r\n const timeOfDayA: TimeOfDay = a.timeOfDayUpdate || a.timeOfDay;\r\n const timeOfDayB: TimeOfDay = b.timeOfDayUpdate || b.timeOfDay;\r\n if (timeOfDayA.totalMinutes < timeOfDayB.totalMinutes) {\r\n return -1;\r\n }\r\n if (timeOfDayA.totalMinutes > timeOfDayB.totalMinutes) {\r\n return 1;\r\n }\r\n return 0;\r\n })\r\n }\r\n}\r\n\r\nexport default Ride;\r\n","export class TimeOfDay {\r\n hours: number = 0;\r\n minutes: number = 0;\r\n empty: boolean = false;\r\n\r\n constructor(hours: number, minutes: number) {\r\n if (hours < 0 || hours >= 24) {\r\n throw new Error(\"Invalid hours for TimeOfDay\");\r\n }\r\n if (minutes < 0 || minutes >= 60) {\r\n throw new Error(\"Invalid minutes for TimeOfDay\");\r\n }\r\n if (hours * 60 + minutes >= 24 * 60) {\r\n hours = 23;\r\n minutes = 59;\r\n }\r\n this.hours = hours;\r\n this.minutes = minutes;\r\n }\r\n\r\n get value() {\r\n return this.stringValue;\r\n }\r\n set value(val: string) {\r\n\r\n if (!TimeOfDay.isValidValue(val)){\r\n return;\r\n }\r\n\r\n let hours = 0;\r\n let minutes = 0;\r\n let parts = null;\r\n\r\n if (val.indexOf(\":\") > 0) {\r\n parts = val.split(\":\");\r\n }\r\n if (val.indexOf(\".\") > 0){\r\n parts = val.split(\".\");\r\n }\r\n if (parts) {\r\n hours = parseInt(parts[0], 10);\r\n minutes = parts.length > 1 ? parseInt(parts[1], 10) : 0;\r\n } else {\r\n switch (val.length) {\r\n case 1:\r\n case 2:\r\n hours = parseInt(val, 10);\r\n minutes = 0;\r\n break;\r\n case 3:\r\n hours = parseInt(val.substr(0, 1), 10);\r\n minutes = parseInt(val.substr(1, 2), 10);\r\n break;\r\n case 4:\r\n hours = parseInt(val.substr(0, 2), 10);\r\n minutes = parseInt(val.substr(2, 2), 10);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n \r\n if (hours < 0 || hours >= 24) {\r\n return;\r\n }\r\n if (minutes < 0 || minutes >= 60) {\r\n return;\r\n }\r\n if (hours * 60 + minutes >= 24 * 60) {\r\n hours = 23;\r\n minutes = 59;\r\n }\r\n this.hours = hours;\r\n this.minutes = minutes;\r\n }\r\n\r\n static isValidValue(value: string){\r\n let val = value;\r\n if (val.indexOf(\":\") > 0){\r\n val = val.replace(\":\", \"\");\r\n } else if (val.indexOf(\".\") > 0){\r\n val = val.replace(\"\\.\", \"\")\r\n }\r\n const hasNumbersOnly = /^\\d+$/.test(val);\r\n return hasNumbersOnly && val.length > 0 && val.length < 5;\r\n }\r\n\r\n static fromMinutesFromMidnight(time: number) {\r\n if (typeof(time) !== 'number') {\r\n return;\r\n }\r\n const hours = Math.floor(time / 60);\r\n const minutes = time % 60;\r\n return new TimeOfDay(hours, minutes);\r\n }\r\n\r\n get stringValue() {\r\n return this.hours.toString().padStart(2, \"0\") + \":\" + this.minutes.toString().padStart(2, \"0\");\r\n }\r\n\r\n get totalMinutes() {\r\n return this.hours * 60 + this.minutes;\r\n }\r\n\r\n addMinutes(deltaMinutes: number) {\r\n const newTotalMinutes = this.totalMinutes + deltaMinutes;\r\n if (newTotalMinutes >= 0 && newTotalMinutes < (23 * 60 + 59)) {\r\n this.hours = Math.floor(newTotalMinutes / 60);\r\n this.minutes = newTotalMinutes - (this.hours * 60);\r\n }\r\n }\r\n\r\n matches(otherTimeOfDay: TimeOfDay){\r\n return this.hours === otherTimeOfDay.hours && this.minutes === otherTimeOfDay.minutes;\r\n }\r\n\r\n}\r\n\r\nexport default TimeOfDay;\r\n","import Vue from 'vue';\r\n\r\nexport class TimetablePhase {\r\n id: number;\r\n name: string;\r\n color: string;\r\n\r\n klass: object = TimetablePhase;\r\n\r\n constructor(id: number, name: string) {\r\n this.id = id;\r\n this.name = name;\r\n }\r\n\r\n}\r\n\r\nexport default TimetablePhase;\r\n","import { TimetablePhase } from '@/components/Timetable/models/TimetablePhase';\r\n\r\nexport class TimetablePhases {\r\n\r\n static Undefined: TimetablePhase = new TimetablePhase(0, \"Undefined\");\r\n static NotStarted: TimetablePhase = new TimetablePhase(1, \"NotStarted\");\r\n static AlmostStarted: TimetablePhase = new TimetablePhase(2, \"AlmostStarted\");\r\n static Ongoing: TimetablePhase = new TimetablePhase(3, \"Ongoing\");\r\n static AlmostEnded: TimetablePhase = new TimetablePhase(4, \"AlmostEnded\");\r\n static Ended: TimetablePhase = new TimetablePhase(5, \"Ended\");\r\n \r\n static States = [\r\n TimetablePhases.Undefined,\r\n TimetablePhases.NotStarted,\r\n TimetablePhases.AlmostStarted,\r\n TimetablePhases.Ongoing,\r\n TimetablePhases.AlmostEnded,\r\n TimetablePhases.Ended,\r\n ]\r\n \r\n klass: object = TimetablePhases;\r\n}\r\n\r\nexport default TimetablePhase;\r\n","import { Guid } from \"guid-typescript\";\r\nimport moment from \"moment\"\r\nimport TimetablePassenger from \"@/components/Timetable/models/TimetablePassenger\";\r\nimport TimetableState, { TimetableStates } from '@/components/Timetable/models/TimetableStates';\r\nimport { TimetablePhases } from '@/components/Timetable/models/TimetablePhases';\r\nimport DateHelper from '@/util/DateHelper';\r\nimport Helpers from '@/util/Helpers'\r\nimport IMovitPlace from '../../Booking/models/IMovitPlace';\r\nimport Passenger from '@/components/Passenger/models/Passenger'\r\n\r\nexport class Timetable {\r\n id: Guid;\r\n idNumber: number;\r\n deleted: boolean;\r\n startDate: Date;\r\n endDate: Date;\r\n // treated as getter only on api\r\n // TODO: array of int, not number\r\n passengerIds: number[];\r\n timetablePassengers: TimetablePassenger[];\r\n\r\n unnamedPassengersCount: number;\r\n costCenterName: string;\r\n driverNotes: string;\r\n\r\n fromPlace: IMovitPlace;\r\n toPlace: IMovitPlace;\r\n\r\n // FK: Destination\r\n // TODO: int, not number\r\n destinationId: number;\r\n \r\n note: string;\r\n // TODO: int, not number\r\n state: number;\r\n // TODO: int, not number\r\n durationTotalHours: number;\r\n // TODO: int, not number\r\n durationMinutes: number; \r\n originalTimetableId: Guid;\r\n\r\n createdAt?: Date;\r\n createdByEmail?: string;\r\n \r\n updatedAt?: Date;\r\n updatedByEmail?: string;\r\n\r\n orderedAt?: Date;\r\n orderedByEmail?: string;\r\n\r\n // Front-end only, flag if this is new\r\n creating: boolean;\r\n\r\n createWithAllDestinationPassengers: boolean = false;\r\n\r\n description: string;\r\n\r\n rejectedReason: string;\r\n\r\n isRecurrent: number;\r\n\r\n klass: object = Timetable;\r\n\r\n passengerWithRidesCount?: number;\r\n\r\n // passengersWihtoutTransportPermissions: Passenger[]\r\n\r\n constructor(options: Partial) {\r\n this.id = options && options.id ? options.id : null;\r\n this.idNumber = options && options.idNumber ? options.idNumber : undefined;\r\n this.deleted = options ? options.deleted : false;\r\n this.startDate = options && options.startDate ? new Date(options.startDate) : new Date();\r\n this.endDate = options && options.endDate ? new Date(options.endDate) : new Date();\r\n\r\n this.destinationId = options && options.destinationId ? options.destinationId : 0;\r\n this.passengerIds = options && options.passengerIds ? options.passengerIds : [];\r\n this.timetablePassengers = options && options.timetablePassengers ? options.timetablePassengers : [];\r\n this.unnamedPassengersCount = options && options.unnamedPassengersCount ? options.unnamedPassengersCount : 0;\r\n this.costCenterName = options && options.costCenterName ? options.costCenterName : null;\r\n this.driverNotes = options && options.driverNotes ? options.driverNotes : null;\r\n this.fromPlace = options && options.fromPlace ? options.fromPlace : null;\r\n this.toPlace = options && options.toPlace ? options.toPlace : null;\r\n \r\n // TODO: Set to empty string instead of null if not given?\r\n this.note = options && options.note ? options.note.trim() : null;\r\n this.description = options && options.description ? options.description.trim() : null;\r\n this.state = options && options.state ? options.state : TimetableStates.New.id; \r\n this.rejectedReason = options && options.rejectedReason ? options.rejectedReason : null;\r\n // TODO: Handle guid vs. nullable guid\r\n this.originalTimetableId = options && options.originalTimetableId ? options.originalTimetableId : null;\r\n this.creating = options ? options.creating : false;\r\n\r\n this.createdAt = options && options.createdAt ? new Date(options.createdAt) : undefined;\r\n this.createdByEmail = options && options.createdByEmail ? options.createdByEmail : undefined;\r\n \r\n this.updatedAt = options && options.updatedAt ? new Date(options.updatedAt) : undefined;\r\n this.updatedByEmail = options && options.updatedByEmail ? options.updatedByEmail : undefined;\r\n\r\n this.orderedAt = options && options.orderedAt && \r\n new Date(options.orderedAt).getFullYear() <= 1900\r\n ? new Date(options.orderedAt) : null;\r\n this.orderedByEmail = options && options.orderedByEmail ? options.orderedByEmail : undefined;\r\n\r\n this.isRecurrent = options && options.isRecurrent ? options.isRecurrent : 0;\r\n\r\n // this.passengersWihtoutTransportPermissions = options && options.passengersWihtoutTransportPermissions \r\n // ? options.passengersWihtoutTransportPermissions \r\n // : [];\r\n\r\n }\r\n\r\n split(splitDate): Timetable{\r\n const newTimetable = new Timetable(this);\r\n newTimetable.state = TimetableStates.New.id;\r\n newTimetable.startDateString = splitDate;\r\n newTimetable.endDateString = this.endDateString;\r\n newTimetable.costCenterName = this.costCenterName;\r\n newTimetable.unnamedPassengersCount = this.unnamedPassengersCount;\r\n newTimetable.driverNotes = this.driverNotes;\r\n newTimetable.fromPlace = this.fromPlace;\r\n newTimetable.toPlace = this.toPlace;\r\n delete newTimetable.id;\r\n delete newTimetable.idNumber;\r\n // newTimetable.timetablePassengers = [];\r\n // newTimetable.passengerIds = [];\r\n if (this.note){\r\n // TODO: i18n\r\n newTimetable.note = this.note + \" (copy)\";\r\n }\r\n\r\n // Change endDate of old (this) timetable\r\n const oldTimetableNewEndMoment = moment(splitDate).subtract(1, \"days\"); \r\n this.endDateString = oldTimetableNewEndMoment.format(\"YYYY-MM-DD\");\r\n\r\n return newTimetable;\r\n }\r\n\r\n get noteString(): string {\r\n return this.note ? this.note : '';\r\n }\r\n\r\n get idNumberWithHash(): string {\r\n return `#${this.idNumber.toString()}`;\r\n }\r\n\r\n get createdByNameFromEmail(){\r\n return Helpers.nameFromEmail(this.createdByEmail);\r\n }\r\n\r\n get hasEnoughTimeBeforeStart(): boolean{\r\n const momentNow = moment();\r\n const momentStart = moment(this.startDateString);\r\n momentStart.subtract(Timetable.lockDaysBeforeStart, \"days\");\r\n return momentNow.isBefore(momentStart); \r\n }\r\n get hasEnoughTimeBeforeEnd(): boolean{\r\n const momentNow = moment();\r\n const momentEnd = moment(this.endDateString);\r\n momentEnd.subtract(Timetable.lockDaysBeforeStart, \"days\");\r\n return momentNow.isBefore(momentEnd); \r\n }\r\n\r\n get isLocked(): boolean {\r\n if (Timetable.nonLockingStates.includes(this.stateObj)){\r\n return false;\r\n }\r\n if (Timetable.lockingStates.includes(this.stateObj)){\r\n return true;\r\n }\r\n return this.hasExpired;\r\n }\r\n\r\n get isAccepted(): boolean {\r\n return this.stateObj === TimetableStates.Accepted;\r\n }\r\n\r\n get isOrdered(): boolean {\r\n return this.stateObj === TimetableStates.Ordered;\r\n }\r\n\r\n get wasOrdered(): boolean {\r\n return ![\r\n TimetableStates.New, \r\n TimetableStates.AcceptedModified,\r\n TimetableStates.RejectedModified\r\n ].includes(this.stateObj);\r\n }\r\n\r\n get isOrderable(): boolean {\r\n if (!Timetable.nonLockingStates.includes(this.stateObj)){\r\n return false;\r\n }\r\n return this.hasEnoughTimeBeforeStart;\r\n }\r\n get isOrderIsCancelable(): boolean {\r\n return this.stateObj !== TimetableStates.Accepted;\r\n }\r\n get hasExpired(): boolean {\r\n return !this.hasEnoughTimeBeforeStart;\r\n }\r\n get hasStartDatePassed(): boolean {\r\n const momentNow = moment();\r\n const momentStart = moment(this.startDateString);\r\n return momentNow.isSameOrAfter(momentStart); \r\n }\r\n get hasEndDatePassed(): boolean {\r\n const momentNow = moment();\r\n const momentEnd = moment(this.endDateString);\r\n return momentNow.isSameOrAfter(momentEnd); \r\n }\r\n get daysUntilStart(): number {\r\n const momentNow = moment();\r\n const momentStart = moment(this.startDateString);\r\n return momentStart.diff(momentNow, 'days');\r\n }\r\n get daysUntilEnd(): number {\r\n const momentNow = moment();\r\n const momentEnd = moment(this.endDateString);\r\n return momentEnd.diff(momentNow, 'days');\r\n }\r\n get stateObj(){\r\n return TimetableStates.States.find(s => s.id === this.state);\r\n }\r\n get stateName(){\r\n return this.stateObj.name;\r\n }\r\n get stateNameLowerCase(){\r\n return this.stateObj.nameLowerCase;\r\n }\r\n get currentStateColor(){\r\n return this.stateObj.color;\r\n }\r\n get currentStateAlertClass(){\r\n return this.stateObj.alertClass;\r\n }\r\n get phase(){\r\n if (!this.hasStartDatePassed){\r\n if (this.hasEnoughTimeBeforeStart){\r\n return TimetablePhases.NotStarted;\r\n } else {\r\n return TimetablePhases.AlmostStarted;\r\n }\r\n } else {\r\n if (this.hasEndDatePassed){\r\n return TimetablePhases.Ended;\r\n } else {\r\n if (!this.hasEnoughTimeBeforeEnd){\r\n return TimetablePhases.AlmostEnded;\r\n } else {\r\n return TimetablePhases.Ongoing;\r\n }\r\n }\r\n }\r\n }\r\n get i18nStateAndPhaseKey(){\r\n return \"timetable.state.\" + this.stateObj.name.toLowerCase() + \".phase.\" + this.phase.name.toLowerCase();\r\n }\r\n get startDateString() {\r\n const YYYY = this.startDate.getFullYear();\r\n const MM = (this.startDate.getMonth() + 1).toString().padStart(2, \"0\");\r\n const DD = (this.startDate.getDate()).toString().padStart(2, '0');\r\n return YYYY + \"-\" + MM + \"-\" + DD;\r\n }\r\n\r\n set startDateString(val) {\r\n const valDate = new Date(val);\r\n valDate.setHours(0, 0, 0, 0);\r\n this.startDate = valDate;\r\n }\r\n\r\n get endDateString() {\r\n const YYYY = this.endDate.getFullYear();\r\n const MM = (this.endDate.getMonth() + 1).toString().padStart(2, \"0\");\r\n const DD = (this.endDate.getDate()).toString().padStart(2, '0');\r\n return YYYY + \"-\" + MM + \"-\" + DD;\r\n }\r\n\r\n set endDateString(val) {\r\n const valDate = new Date(val);\r\n valDate.setHours(0, 0, 0, 0);\r\n this.endDate = valDate;\r\n }\r\n\r\n get isRejected(): boolean {\r\n return this.state === TimetableStates.Rejected.id;\r\n }\r\n\r\n addPassengerIds(passengerIds: number[]){\r\n // console.log(\"Timetable\", \"addPassengerIds()\", passengerIds);\r\n passengerIds.forEach(pid => {\r\n if (!this.timetablePassengers.find(sp => sp.passengerId === pid)){\r\n this.timetablePassengers.push(new TimetablePassenger(this.id, pid));\r\n }\r\n }\r\n );\r\n }\r\n\r\n removePassengerIds(passengerIds: number[]){\r\n // console.log(\"Timetable\", \"removePassengerIds()\", passengerIds);\r\n passengerIds.forEach(pid => {\r\n const itemIndex = this.timetablePassengers.findIndex(sp => sp.passengerId === pid);\r\n if (itemIndex > -1){\r\n this.timetablePassengers.splice(itemIndex, 1);\r\n }\r\n });\r\n // console.log(this.timetablePassengers);\r\n }\r\n\r\n public static fromApi(apiTimetable: any): Timetable {\r\n const timetable = new Timetable(apiTimetable);\r\n timetable.startDate = apiTimetable.startDate \r\n ? new Date(apiTimetable.startDate) \r\n : new Date();\r\n timetable.endDate = apiTimetable.endDate \r\n ? new Date(apiTimetable.endDate) \r\n : new Date();\r\n return timetable;\r\n }\r\n\r\n public static toApi(timetable: Timetable): any {\r\n const dateHelper = new DateHelper();\r\n const apiTimetable = {\r\n destinationId: timetable.destinationId,\r\n endDate: dateHelper.dateYMD(timetable.endDate),\r\n id: timetable.id,\r\n note: timetable.note ? timetable.note.trim() : null,\r\n description: timetable.description ? timetable.description.trim() : null,\r\n passengerIds: timetable.passengerIds,\r\n timetablePassengers: timetable.timetablePassengers,\r\n startDate: dateHelper.dateYMD(timetable.startDate),\r\n state: timetable.state,\r\n createWithAllDestinationPassengers: timetable.createWithAllDestinationPassengers,\r\n unnamedPassengersCount: timetable.unnamedPassengersCount,\r\n costCenterName: timetable.costCenterName,\r\n driverNotes: timetable.driverNotes,\r\n fromPlace: timetable.fromPlace,\r\n toPlace: timetable.toPlace\r\n }\r\n return apiTimetable;\r\n }\r\n\r\n static nonLockingStates = [\r\n TimetableStates.Undefined,\r\n TimetableStates.New\r\n ]\r\n\r\n static lockingStates = [\r\n TimetableStates.Ordered,\r\n TimetableStates.OrderedProcessing,\r\n TimetableStates.Accepted,\r\n TimetableStates.AcceptedOld,\r\n TimetableStates.Rejected,\r\n TimetableStates.RejectedOld,\r\n ]\r\n\r\n static lockDaysBeforeStart: number = -1;\r\n\r\n static CopyFrom(timetable: Timetable): Timetable{ \r\n return new Timetable({\r\n id: timetable.id,\r\n idNumber: timetable.idNumber,\r\n deleted: timetable.deleted,\r\n startDate: timetable.startDate,\r\n endDate: timetable.endDate,\r\n destinationId: timetable.destinationId,\r\n passengerIds: timetable.passengerIds,\r\n timetablePassengers: timetable.timetablePassengers,\r\n note: timetable.note,\r\n description: timetable.description,\r\n state: timetable.state,\r\n originalTimetableId: timetable.originalTimetableId,\r\n unnamedPassengersCount: timetable.unnamedPassengersCount,\r\n costCenterName: timetable.costCenterName,\r\n driverNotes: timetable.driverNotes,\r\n fromPlace: timetable.fromPlace,\r\n toPlace: timetable.toPlace,\r\n\r\n createdAt: timetable.createdAt,\r\n createdByEmail: timetable.createdByEmail,\r\n \r\n updatedAt: timetable.updatedAt,\r\n updatedByEmail: timetable.updatedByEmail,\r\n \r\n orderedAt: timetable.orderedAt,\r\n orderedByEmail: timetable.orderedByEmail,\r\n\r\n creating: timetable.creating,\r\n\r\n })\r\n }\r\n \r\n}\r\n\r\nexport default Timetable;\r\n","import { Guid } from \"guid-typescript\";\r\n\r\nclass TimetablePassenger {\r\n\r\n // TODO: Guid, not string\r\n timetableId: Guid;\r\n // TODO: int, not number\r\n passengerId: number;\r\n\r\n // TODO: Params: Guid (not string), int (not number)\r\n constructor(timetableId: Guid, passengerId: number) {\r\n this.timetableId = timetableId;\r\n this.passengerId = passengerId;\r\n }\r\n}\r\n\r\nexport default TimetablePassenger;\r\n","import { TimetableStates } from '@/components/Timetable/models/TimetableStates';\r\n\r\nexport class TimetableState {\r\n id: number;\r\n name: string;\r\n\r\n klass: object = TimetableState;\r\n\r\n constructor(id: number, name: string) {\r\n this.id = id;\r\n this.name = name;\r\n }\r\n\r\n get nameLowerCase(){\r\n return this.name.toLowerCase();\r\n }\r\n\r\n get alertClass(){\r\n switch (this.name){\r\n case TimetableStates.Undefined.name:\r\n case TimetableStates.New.name:\r\n return 'lighten-2 black--text';\r\n break;\r\n default:\r\n return '';\r\n break;\r\n }\r\n }\r\n\r\n get color(){\r\n switch (this.name){\r\n case TimetableStates.Undefined.name:\r\n case TimetableStates.New.name:\r\n return \"grey\"\r\n break;\r\n case TimetableStates.Ordered.name: \r\n return \"orange\"\r\n break;\r\n case TimetableStates.Accepted.name: \r\n return \"green\"\r\n case TimetableStates.AcceptedModified.name:\r\n case TimetableStates.AcceptedOld.name: \r\n return \"blue\";\r\n case TimetableStates.Rejected.name:\r\n return \"red\"\r\n case TimetableStates.RejectedModified.name:\r\n case TimetableStates.RejectedOld.name:\r\n return \"blue\"\r\n default:\r\n return \"pink\";\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport default TimetableState;\r\n","import { TimetableState } from '@/components/Timetable/models/TimetableState';\r\n\r\nexport class TimetableStates {\r\n\r\n static Undefined: TimetableState = new TimetableState(0, \"Undefined\");\r\n static New: TimetableState = new TimetableState(10, \"New\");\r\n static Ordered: TimetableState = new TimetableState(100, \"Ordered\");\r\n static OrderedProcessing: TimetableState = new TimetableState(110, \"OrderedProcessing\");\r\n static Accepted: TimetableState = new TimetableState(200, \"Accepted\");\r\n static AcceptedModified: TimetableState = new TimetableState(210, \"AcceptedModified\");\r\n static AcceptedOld: TimetableState = new TimetableState(220, \"AcceptedOld\");\r\n static Rejected: TimetableState = new TimetableState(300, \"Rejected\");\r\n static RejectedModified: TimetableState = new TimetableState(310, \"RejectedModified\");\r\n static RejectedOld: TimetableState = new TimetableState(320, \"RejectedOld\");\r\n\r\n static States = [\r\n TimetableStates.Undefined,\r\n TimetableStates.New,\r\n TimetableStates.Ordered,\r\n TimetableStates.OrderedProcessing,\r\n TimetableStates.Accepted,\r\n TimetableStates.AcceptedModified,\r\n TimetableStates.AcceptedOld,\r\n TimetableStates.Rejected,\r\n TimetableStates.RejectedModified,\r\n TimetableStates.RejectedOld\r\n ]\r\n\r\n static SelectableStates = [\r\n TimetableStates.New,\r\n TimetableStates.Ordered,\r\n TimetableStates.OrderedProcessing,\r\n TimetableStates.Accepted,\r\n TimetableStates.Rejected,\r\n ]\r\n \r\n klass: object = TimetableStates;\r\n}\r\n\r\nexport default TimetableState;\r\n","import Vue from 'vue'\r\n\r\nimport Vuetify from 'vuetify/dist/vuetify.min.js'\r\nimport 'vuetify/dist/vuetify.min.css'\r\n// import Vuetify from 'vuetify'\r\n// import 'vuetify/src/stylus/app.styl'\r\n\r\nVue.use(Vuetify, {\r\n iconfont: 'md',\r\n theme: {\r\n options: {\r\n customProperties: true,\r\n },\r\n },\r\n})\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.show)?_c('div',{staticClass:\"translate-view\",staticStyle:{\"position\":\"absolute\",\"height\":\"100%\",\"width\":\"100%\"}},[_c('v-layout',{staticStyle:{\"height\":\"70px\",\"border-bottom\":\"solid 1px #e4dfdf\"},attrs:{\"row\":\"\"}},[_c('v-flex',[_c('v-container',[_c('div',[_c('b',[_vm._v(\"Translations\")])]),_c('v-switch',{staticClass:\"show-only-missing-switch\",attrs:{\"input-value\":_vm.showOnlyMissingTranslations,\"label\":\"Only missing\"},on:{\"change\":function($event){_vm.showOnlyMissingTranslations = !_vm.showOnlyMissingTranslations}}})],1)],1),_c('v-spacer'),_c('v-flex',{attrs:{\"pt-3\":\"\"}},[_c('v-btn',{staticClass:\"right\",attrs:{\"disabled\":_vm.masked,\"flat\":\"\",\"small\":\"\",\"color\":\"green\",\"dark\":\"\",\"loading\":_vm.saving},on:{\"click\":function($event){return _vm.save()}}},[_vm._v(\" Save \")]),_c('v-btn',{staticClass:\"right\",attrs:{\"disabled\":_vm.saving,\"small\":\"\",\"color\":\"orange\",\"flat\":\"\",\"dark\":\"\"},on:{\"click\":function($event){return _vm.mask()}}},[(_vm.masked)?[_vm._v(\"Unmask\")]:[_vm._v(\"Mask\")]],2)],1)],1),(_vm.selectedLanguage)?_c('div',{staticStyle:{\"overflow\":\"auto\",\"height\":\"calc(100% - 70px)\"}},[(_vm.$store.state.i18n.translations['en'])?_c('v-data-table',{staticClass:\"translations-table\",attrs:{\"items\":_vm.visiblePhrases,\"item-key\":\"key\",\"hide-actions\":\"\"},scopedSlots:_vm._u([{key:\"headers\",fn:function(props){return [_c('tr',[_c('th',{staticClass:\"text-xs-left\"},[_vm._v(\" Id \")]),_c('th',[_vm._v(\" English (master) \")]),_c('th',[_c('span',{staticClass:\"l10n\",domProps:{\"innerHTML\":_vm._s(_vm.$t('meta.language_name', 'xx'))}}),_vm._v(\" (translation) \")])])]}},{key:\"items\",fn:function(props){return [_c('tr',[_c('td',{staticClass:\"key\"},[_c('a',{attrs:{\"data-toggle\":\"tooltip\",\"title\":props.item.key}},[_c('span',{domProps:{\"innerHTML\":_vm._s(props.item.key.replace(/\\./g, '​.'))}})])]),_c('td',[_c('div',{staticStyle:{\"padding\":\"5px\"},attrs:{\"type\":\"text\"}},[_vm._v(\" \"+_vm._s(props.item.master)+\" \")])]),_c('td',[(_vm.selectedLanguage)?_c('Editable',{attrs:{\"disabled\":_vm.saving,\"content\":props.item.text},on:{\"update:content\":function($event){return _vm.$set(props.item, \"text\", $event)},\"update\":function($event){return _vm.updatePhrase($event, _vm.selectedLanguage, props.item.key)}}}):_vm._e()],1)])]}}],null,false,3877921677)}):_vm._e(),_c('br'),_c('br')],1):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ 'editable': true, 'disabled': _vm.disabled },attrs:{\"contenteditable\":!_vm.disabled},on:{\"input\":_vm.update}},[_vm._v(\" \"+_vm._s(_vm.content)+\" \")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\n\r\n@Component({})\r\nexport default class Editable extends Vue {\r\n\r\n @Prop({default: null})\r\n content: string;\r\n\r\n @Prop({default: false})\r\n disabled: string;\r\n\r\n mounted() {\r\n // if (this.content) {\r\n // this.$el.innerText = this.content;\r\n // } else {\r\n // this.$el.innerText = \"\";\r\n // }\r\n }\r\n update(event) {\r\n this.$emit('update', event.target.innerText);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Editable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Editable.vue?vue&type=template&id=677dcee9&scoped=true&\"\nimport script from \"./Editable.vue?vue&type=script&lang=ts&\"\nexport * from \"./Editable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Editable.vue?vue&type=style&index=0&id=677dcee9&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"677dcee9\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Editable from '../components/Editable.vue'\r\nimport { Watch, Vue, Component } from 'vue-property-decorator';\r\nimport vuetifyToast from 'vuetify-toast'\r\nimport axios from 'axios'\r\n\r\n@Component({\r\n components: {\r\n Editable\r\n }\r\n})\r\nexport default class TranslateView extends Vue {\r\n \r\n selectedLanguage: string = null;\r\n phrases: any[] = [];\r\n show: boolean = true;\r\n masked: boolean = false;\r\n saving: boolean = false;\r\n showOnlyMissingTranslations: boolean = false;\r\n\r\n get visiblePhrases(): any[]{\r\n if (!this.showOnlyMissingTranslations){\r\n return this.phrases;\r\n }\r\n return this.phrases.filter(p => !p.text || p.text === p.key);\r\n }\r\n\r\n updatePhrase(event, selectedLanguage, key) {\r\n // console.log(\"selectedLanguage: \" + selectedLanguage)\r\n this.$store.state.i18n.translations[selectedLanguage][key] = event;\r\n this.refreshView();\r\n \r\n }\r\n refreshView(){\r\n const currentLocale = this.$store.state.i18n.locale;\r\n const otherLocale = \"xx\";\r\n this.$i18n.set(otherLocale)\r\n this.$i18n.set(currentLocale)\r\n }\r\n getText(key) {\r\n return this.$i18n.translateIn(this.selectedLanguage, key);\r\n }\r\n mask(){\r\n this.masked = !this.masked;\r\n if (this.masked){\r\n this.phrases.forEach(p => {\r\n p.originalText = p.text;\r\n p.text = \"xxxxxx\";\r\n this.$store.state.i18n.translations[this.selectedLanguage][p.key] = p.text;\r\n }) \r\n } else {\r\n this.phrases.forEach(p => {\r\n p.text = p.originalText;\r\n if (p.text){\r\n this.$store.state.i18n.translations[this.selectedLanguage][p.key] = p.text;\r\n } else {\r\n delete this.$store.state.i18n.translations[this.selectedLanguage][p.key]\r\n }\r\n })\r\n }\r\n this.refreshView();\r\n }\r\n async save() {\r\n this.saving = true;\r\n this.updateView();\r\n const language = {\r\n code: this.selectedLanguage,\r\n phrases: this.phrases\r\n }\r\n try {\r\n const translations = this.$store.state.i18n.translations[this.selectedLanguage];\r\n const response = await axios.post('/locales/' + this.selectedLanguage + '.json', translations);\r\n vuetifyToast.success(\"Translations for \" + this.selectedLanguage + \" saved\");\r\n } catch (ex){\r\n console.error(ex);\r\n vuetifyToast.error(\"Error saving translations for \" + this.selectedLanguage + \". Please check the console.\")\r\n }\r\n this.saving = false;\r\n }\r\n closeTranslateMode(event) {\r\n this.$store.dispatch(\"setTranslateMode\", false);\r\n }\r\n updateView() {\r\n // console.log(\"updateView\");\r\n\r\n this.selectedLanguage = this.$store.state.i18n.locale;\r\n\r\n if (this.$store.state.i18n.translations[this.selectedLanguage]) {\r\n\r\n const keys = Object.keys(this.$store.state.i18n.translations.en);\r\n const values = Object.values(this.$store.state.i18n.translations[this.selectedLanguage]);\r\n\r\n this.phrases = [];\r\n\r\n for (const key of keys) {\r\n this.phrases.push(\r\n { \r\n key, \r\n master: this.$store.state.i18n.translations.en[key],\r\n text: this.$store.state.i18n.translations[this.selectedLanguage][key] \r\n }\r\n );\r\n }\r\n\r\n }\r\n }\r\n rerender() {\r\n this.show = false\r\n this.$nextTick(() => {\r\n this.show = true\r\n // console.log('re-render start')\r\n this.$nextTick(() => {\r\n // console.log('re-render end')\r\n })\r\n })\r\n }\r\n \r\n @Watch('$store.state.i18n.locale')\r\n onLocaleChange(newValue) {\r\n // console.log(\"TRANSLATIONS: $store.state.i18n.locale CHANGE DETECTED\");\r\n this.updateView();\r\n this.rerender();\r\n }\r\n\r\n @Watch('$store.state.i18n.translations.en')\r\n onMasterTranslationsChange(newValue) {\r\n // console.log(\"TRANSLATIONS: $store.state.i18n.translations.en CHANGE DETECTED\");\r\n this.updateView();\r\n }\r\n\r\n @Watch('$store.state.missingTranslationCounter')\r\n onMissingTranslationCounterChange(newValue) {\r\n // console.log(\"TRANSLATIONS: $store.state.missingTranslationCounter CHANGE DETECTED\");\r\n this.updateView();\r\n }\r\n\r\n created() {\r\n // console.log(\"TranslateView\", \"created()\");\r\n this.updateView();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TranslateView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TranslateView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TranslateView.vue?vue&type=template&id=79672a8b&\"\nimport script from \"./TranslateView.vue?vue&type=script&lang=ts&\"\nexport * from \"./TranslateView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TranslateView.vue?vue&type=style&index=0&id=79672a8b&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/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","export class Version {\r\n versionString: string;\r\n \r\n constructor(versionString: string) {\r\n this.versionString = versionString;\r\n }\r\n\r\n get parts(): number[]{\r\n return this.versionString \r\n ? this.versionString.split(\".\").map(partString => parseInt(partString, 10))\r\n : [];\r\n }\r\n\r\n get major(){\r\n return this.parts.length >= 0 \r\n ? this.parts[0] \r\n : 0;\r\n }\r\n\r\n get minor(){\r\n return this.parts.length >= 1 \r\n ? this.parts[1] \r\n : 0;\r\n }\r\n\r\n get revision(){\r\n return this.parts.length >= 2 \r\n ? this.parts[2] \r\n : 0;\r\n }\r\n\r\n isGreaterOrEqual(other: Version): boolean {\r\n return this.major > other.major\r\n || (this.major === other.major && this.minor > other.minor)\r\n || (this.major === other.major && this.minor === other.minor && this.revision >= other.revision)\r\n }\r\n\r\n toString(): string {\r\n return [this.major, this.minor, this.revision].join(\".\");\r\n }\r\n \r\n}\r\n\r\nexport default Version;\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-autocomplete',_vm._b({attrs:{\"value\":_vm.selectedTimeTable,\"items\":_vm.timeTables,\"search-input\":_vm.search,\"item-text\":\"name\",\"item-value\":\"id\",\"label\":_vm.$t('timetable.orderSearch', 'Order search'),\"hide-no-data\":\"\",\"hide-details\":\"\",\"return-object\":\"\",\"append-icon\":\"search\"},on:{\"input\":_vm.selectTimeTable,\"update:searchInput\":function($event){_vm.search=$event},\"update:search-input\":function($event){_vm.search=$event}},scopedSlots:_vm._u([{key:\"append-icon\",fn:function(){return [_c('v-icon',[_vm._v(\"search\")])]},proxy:true},{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-list-tile-content',[_c('v-list-tile-title',[_vm._v(\" #\"+_vm._s(item.idNumber)+\" \")]),_c('v-list-tile-sub-title',[_c('span',[_vm._v(_vm._s(item.destinationAlias))])])],1),_c('v-list-tile-action',[_c('v-chip',{attrs:{\"color\":_vm.stateColor(item.state),\"small\":\"\",\"text-color\":\"white\"}},[_vm._v(\" \"+_vm._s(_vm.stateText(item.state))+\" \")])],1)]}}])},'v-autocomplete',_vm.$attrs,false))}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport restService from \"@/services/restService\"\r\nimport { ITimetableSearchResult } from '@/typings/timit';\r\nimport { Vue, Watch, Component, Prop } from \"vue-property-decorator\";\r\nimport { TimetableStates } from \"./Timetable/models/TimetableStates\";\r\n\r\n@Component\r\nexport default class OrderSearch extends Vue {\r\n loading: boolean = false;\r\n selectedTimeTable: ITimetableSearchResult | null = null;\r\n search = \"\";\r\n searchDebounceTimeout: any = null;\r\n timeTables: ITimetableSearchResult[] = [];\r\n isLabel = true;\r\n\r\n @Watch('search') async searchChanged() {\r\n if (this.search && this.search.length > 0) {\r\n await this.searchOrder();\r\n }\r\n }\r\n\r\n async searchOrder() {\r\n if (this.searchDebounceTimeout){\r\n clearTimeout(this.searchDebounceTimeout);\r\n }\r\n \r\n this.searchDebounceTimeout = setTimeout(\r\n async () => {\r\n if (this.search && this.search.length > 0) {\r\n const result: ITimetableSearchResult[] = await restService.timeTables.searchTimeTable(this.search);\r\n this.timeTables = result\r\n }\r\n }, \r\n 350\r\n )\r\n }\r\n\r\n selectTimeTable(timeTableSearchResult: ITimetableSearchResult) {\r\n this.$emit('timeTableSelect', timeTableSearchResult);\r\n this.selectedTimeTable = null;\r\n this.search = '';\r\n this.timeTables = [];\r\n }\r\n\r\n stateColor(state: number) {\r\n return TimetableStates.States.find(s => s.id === state).color;\r\n }\r\n\r\n stateText(state: number) {\r\n const stateName = TimetableStates.States.find(s => s.id === state).name;\r\n return this.$t(`booking.state.${stateName.toLowerCase()}.name.one`, stateName);\r\n }\r\n\r\n}\r\n","\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport vuetifyToast from \"vuetify-toast\";\r\nimport AppEvents from \"@/AppEvents\";\r\nimport TranslateView from \"@/components/Translate/views/TranslateView.vue\";\r\nimport \"./AppRoot.scss\";\r\nimport Routes from \"@/Routes\";\r\nimport { Destination } from \"@/components/Passenger/models/Destination\";\r\nimport { TimetablePage } from \"@/pages/TimetablePage.vue\";\r\nimport { ArrivalsDeparturesPage } from \"@/pages/ArrivalsDeparturesPage.vue\";\r\nimport { PeoplePage } from \"@/pages/PeoplePage.vue\";\r\nimport Version from \"@/models/Version\";\r\nimport { RouteConfig, RouterOptions } from \"vue-router\";\r\nimport ITheme from \"./themes/ITheme\";\r\nimport PassengerSearch from \"./components/PassengerSearch.vue\";\r\nimport OrderSearch from \"./components/OrderSearch.vue\";\r\nimport { Organization } from \"./models/Organization\";\r\nimport User from \"@/models/User\";\r\nimport { IPassengerSearchResult, ITimetableSearchResult } from \"./typings/timit\";\r\nimport { PermissionEnum } from \"./models/DestinationRole\";\r\nimport DestinationSelector from \"./components/Passenger/components/DestinationSelector.vue\"\r\n\r\nenum ERouteType {\r\n Destination = 0,\r\n Organization = 1,\r\n}\r\n\r\n@Component({\r\n template: require(\"./AppRoot.vue.html\"),\r\n components: {\r\n TranslateView,\r\n PassengerSearch,\r\n DestinationSelector,\r\n OrderSearch,\r\n },\r\n})\r\nexport default class AppRoot extends Vue {\r\n drawer: any = null;\r\n isResourcesLoading: boolean = true;\r\n apiError: boolean = false;\r\n translatePanePreferredWidth: string = \"50%\";\r\n refreshing: boolean = false;\r\n pollApiInfoTimeout: any;\r\n newVersion: string = \"\";\r\n themeToggleEnabled: boolean = false;\r\n search: string = \"\";\r\n routeType = ERouteType;\r\n\r\n $vuetify: any;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n get themeId() {\r\n return this.$store.state.app.themeId;\r\n }\r\n\r\n @Watch(\"themeId\", { immediate: true })\r\n onThemeIdChanged(val, oldVal) {\r\n // console.log(\"onThemeIdChanged\");\r\n // console.log(\"this.theme.vuetifyTheme = \", this.theme.vuetifyTheme);\r\n // console.log(\"this.$vuetify.theme = \", this.$vuetify.theme);\r\n Object.assign(this.$vuetify.theme, this.theme.vuetifyTheme);\r\n }\r\n\r\n get theme(): ITheme {\r\n return this.$store.state.app.themes.find((t) => t.id === this.themeId);\r\n }\r\n\r\n toggleTheme() {\r\n const themeId =\r\n this.themeId === \"default\"\r\n ? \"kovanen\"\r\n : this.themeId === \"kovanen\"\r\n ? \"espoo\"\r\n : \"default\";\r\n this.$store.dispatch(\"app/setThemeId\", themeId);\r\n }\r\n\r\n get themeCssClassName() {\r\n return this.theme.cssClassName;\r\n }\r\n\r\n get isLoading() {\r\n // return true;\r\n return this.isResourcesLoading || this.isLocalesLoading;\r\n }\r\n\r\n get hasPermissionToTimeTables() {\r\n if (this.me) {\r\n return this.me.destinationRoles.some(r => r.timetablePermission >= PermissionEnum.Read);\r\n }\r\n return false;\r\n }\r\n\r\n get isAuthenticated() {\r\n return this.$store.getters[\"auth/isAuthenticated\"];\r\n }\r\n get isLocalesLoading() {\r\n return !this.$store.state.app.localesLoaded;\r\n }\r\n get me(): User {\r\n return this.$store.state.user.me;\r\n }\r\n get showWeekends() {\r\n return this.$store.state.user.showWeekends;\r\n }\r\n set showWeekends(val) {\r\n // no-op\r\n }\r\n async onToggleShowWeekends() {\r\n this.$store.dispatch(\"user/setShowWeekends\", !this.showWeekends);\r\n }\r\n get weekStartsOnSunday() {\r\n return this.$store.state.user.weekStartsOnSunday;\r\n }\r\n set weekStartsOnSunday(val) {\r\n // no-op\r\n }\r\n\r\n get navigationRoutes(): any[] {\r\n const topLevelRoutes = (this.$router as any).options.routes;\r\n const childRoutesArr: any[] = topLevelRoutes\r\n .map((r) => r.children)\r\n .filter((r) => r);\r\n const childRoutes = [].concat(...childRoutesArr);\r\n const allRoutes = topLevelRoutes.concat(childRoutes);\r\n const navRoutes = allRoutes.filter(\r\n (r) => r.meta && r.meta.nav && (r.meta.guest || this.isAuthenticated)\r\n );\r\n return navRoutes;\r\n }\r\n\r\n get allowedNavigationRoutes(): any[] {\r\n const routes = this.me\r\n ? this.navigationRoutes.filter(\r\n (r) =>\r\n !r.meta ||\r\n (r.meta &&\r\n r.meta.requireDestinationPermissions &&\r\n this.me.hasPermissions(\r\n this.routeDestinationId,\r\n r.meta.requireDestinationPermissions\r\n ))\r\n )\r\n : [];\r\n const a = routes.find(t => t.name === \"Timetables\");\r\n const b = routes.find(t => t.name === \"SingleBooking\");\r\n if (!!a && !!b) {\r\n const index = routes.indexOf(b);\r\n routes.splice(index, 1);\r\n }\r\n return routes;\r\n }\r\n\r\n get splitPaneRef(): Vue {\r\n return this.$refs.splitPane as Vue;\r\n }\r\n\r\n get contentPaneHtmlElement(): HTMLElement {\r\n return this.splitPaneRef && this.splitPaneRef.$children\r\n ? (this.splitPaneRef.$children[0].$el as HTMLElement)\r\n : null;\r\n }\r\n\r\n get resizeHandleHtmlElement(): HTMLElement {\r\n return this.splitPaneRef && this.splitPaneRef.$children\r\n ? (this.splitPaneRef.$children[1].$el as HTMLElement)\r\n : null;\r\n }\r\n\r\n get translatePaneHtmlElement(): HTMLElement {\r\n return this.splitPaneRef && this.splitPaneRef.$children\r\n ? (this.splitPaneRef.$children[2].$el as HTMLElement)\r\n : null;\r\n }\r\n\r\n get translateModeEnabled(): boolean {\r\n return document.location.hostname.indexOf(\"localhost\") > -1;\r\n }\r\n\r\n get translateMode(): boolean {\r\n return this.$store.state.app.translateMode;\r\n }\r\n\r\n set translateMode(val) {\r\n this.$store.dispatch(\"app/setTranslateMode\", val);\r\n }\r\n\r\n get storeTranslateMode(): boolean {\r\n return this.$store.state.app.translateMode;\r\n }\r\n\r\n get destinations(): Destination[] {\r\n return this.$store.state.destination.destinations;\r\n }\r\n\r\n get routeDestinationId(): number {\r\n return parseInt(this.$store.state.route.params.destinationId, 10);\r\n }\r\n\r\n get selectedDestinationId(): number {\r\n return this.routeDestinationId;\r\n }\r\n\r\n set selectedDestinationId(destinationId: number) {\r\n // this.$router.replace({\r\n // name: 'ArrivalsDeparturesDestination',\r\n // params: {\r\n // destinationId: firstDestinationId.toString(),\r\n // }\r\n // });\r\n this.$router.push({\r\n name: Routes.destinationRoute.name,\r\n params: { destinationId: destinationId.toString() },\r\n });\r\n }\r\n\r\n get selectedOrganization() {\r\n const selectedOrganization = this.organizations.find(\r\n (o) => o.id === this.organizationId\r\n );\r\n return selectedOrganization ? selectedOrganization : null;\r\n }\r\n\r\n get selectedDestination() {\r\n const selectedDestination = this.destinations.find(\r\n (d) => d.id === this.selectedDestinationId\r\n );\r\n return selectedDestination ? selectedDestination : null;\r\n }\r\n\r\n get extendedToolbarTitle(): string {\r\n if (this.currentRouteType === ERouteType.Organization) {\r\n return this.selectedOrganization ? this.selectedOrganization.name : \"\";\r\n }\r\n return this.selectedDestination ? this.selectedDestination.alias : \"\";\r\n }\r\n\r\n get extendedToolbarCaption(): string {\r\n if (this.currentRouteType === ERouteType.Organization) {\r\n return this.$t(\"route.organization\", \"Organization\");\r\n }\r\n return this.selectedDestination\r\n ? this.selectedDestination.movitInstanceName\r\n : \"\";\r\n }\r\n\r\n get organizations(): Organization[] {\r\n return this.$store.state.organization.organizations;\r\n }\r\n\r\n get userIsOrganizationAdmin(): boolean {\r\n if (!this.organizationId) {\r\n return false;\r\n }\r\n return this.organizations.some(\r\n (o) => o.id === this.organizationId && o.administratorIds.some(id => id === this.me.id) \r\n );\r\n }\r\n\r\n get organizationNavRoutes(): RouteConfig[] {\r\n const organizationRoot = (this.$router as any).options.routes.find(\r\n (r: any) => r.meta && r.meta.organizationRoot\r\n ) as RouteConfig;\r\n\r\n if (!organizationRoot) {\r\n return [];\r\n }\r\n\r\n let navRoutes = organizationRoot.children\r\n .map((c) => c)\r\n .filter((c) => c.meta && c.meta.organizationNav);\r\n\r\n // if admin -> show all\r\n // if not admin -> show only ones without \"meta/requireAdmin\"\r\n if (!this.userIsOrganizationAdmin) {\r\n navRoutes = navRoutes.filter((nr) => nr.meta.requireAdmin === false);\r\n }\r\n\r\n return navRoutes;\r\n }\r\n\r\n get currentRouteType() {\r\n if (this.$route.path.includes(\"/o/\")) {\r\n return ERouteType.Organization;\r\n }\r\n return ERouteType.Destination;\r\n }\r\n\r\n get currentRouterPath() {\r\n return this.$router.currentRoute;\r\n }\r\n\r\n get organizationId() {\r\n return this.$store.state.route.params.organizationId || \"\";\r\n }\r\n\r\n @Watch(\"translateMode\")\r\n onTranslateModeChanged(val, oldVal) {\r\n this.toggleTranslateMode(this.translateMode);\r\n }\r\n toggleTranslateMode(enabled) {\r\n this.drawer = false;\r\n if (\r\n !this.contentPaneHtmlElement ||\r\n !this.resizeHandleHtmlElement ||\r\n !this.translatePaneHtmlElement\r\n ) {\r\n return;\r\n }\r\n if (enabled) {\r\n const contentPanePreferredWidth: string =\r\n (100.0 - parseFloat(this.translatePanePreferredWidth)).toString() + \"%\";\r\n this.contentPaneHtmlElement.style.width = contentPanePreferredWidth;\r\n this.resizeHandleHtmlElement.style.left = contentPanePreferredWidth;\r\n this.translatePaneHtmlElement.style.width =\r\n this.translatePanePreferredWidth;\r\n this.resizeHandleHtmlElement.style.display = \"block\";\r\n this.translatePaneHtmlElement.style.display = \"block\";\r\n } else {\r\n this.contentPaneHtmlElement.style.width = \"100%\";\r\n this.resizeHandleHtmlElement.style.left = \"100%\";\r\n this.translatePaneHtmlElement.style.width = \"0\";\r\n this.resizeHandleHtmlElement.style.display = \"none\";\r\n this.translatePaneHtmlElement.style.display = \"none\";\r\n }\r\n }\r\n async getMe() {\r\n return this.$store.dispatch(\"user/getMe\");\r\n }\r\n\r\n async getAllMovitInstanceConfigs() {\r\n return this.$store.dispatch(\"app/getAllMovitInstanceConfigs\");\r\n }\r\n\r\n setLocale(locale) {\r\n this.$store.dispatch(\"app/setLocale\", locale);\r\n this.drawer = false;\r\n }\r\n\r\n async initApp() {\r\n this.isResourcesLoading = true;\r\n if (this.isAuthenticated) {\r\n try {\r\n await this.getMe();\r\n await this.getAllMovitInstanceConfigs();\r\n await this.getAllDestinations();\r\n const organizations = await this.getAllOrganizations();\r\n if (organizations && organizations.data.length > 0) {\r\n for(let i = 0; i < organizations.data.length; i++) {\r\n await this.getOrganizationPtpNames(organizations.data[i].id)\r\n await this.getOrganizationCostCenters(organizations.data[i].id)\r\n }\r\n }\r\n } catch (e) {\r\n if ((e as any).response) {\r\n if ((e as any).response.status === 401) {\r\n // console.log(\"Authentication failed. Should now show sign-in dialog.\");\r\n }\r\n } else {\r\n console.error(e);\r\n // No response. Api is not there?\r\n this.apiError = true;\r\n vuetifyToast.error(\"API connection error.\");\r\n }\r\n }\r\n }\r\n\r\n // Pre-select first destination if not selected\r\n if (!(this.selectedDestinationId > 0) && this.destinations.length > 0) {\r\n const firstDestinationId = this.destinations[0].id;\r\n this.$router.replace({\r\n name: Routes.destinationRoute.name,\r\n params: {\r\n destinationId: firstDestinationId.toString(),\r\n },\r\n });\r\n }\r\n\r\n this.isResourcesLoading = false;\r\n }\r\n\r\n ellipsis(text: string, len: number): string {\r\n if (text && text.length > len) {\r\n text = text.substring( 0, len) + \"...\";\r\n }\r\n return text;\r\n }\r\n\r\n async getAllDestinations(): Promise {\r\n // console.log(\"Getting all destinations ...\")\r\n return this.$store.dispatch(\"destination/getAllDestinations\");\r\n }\r\n\r\n async getAllOrganizations(): Promise {\r\n return this.$store.dispatch(\"organization/getOrganizations\");\r\n }\r\n\r\n async created() {\r\n (window as any).__appRoot = this;\r\n\r\n // Load l10n files\r\n await this.$store.dispatch(\"app/loadLocales\");\r\n\r\n // Set locale\r\n if (!this.$i18n.locale()) {\r\n // console.log(\"Setting locale ...\")\r\n // If current locale is not set, take it from:\r\n let locale;\r\n if (!locale) {\r\n // 1. Previously selected locale, stored in localstorage\r\n locale = this.$store.state.app.locale;\r\n // console.log(\" Checking locale stored in localstorage:\", locale);\r\n }\r\n if (!locale) {\r\n // // 2. User browser's default locale, if supported\r\n locale = navigator.language;\r\n // console.log(\" Checking default browser language:\", locale);\r\n const dashIndex = locale.indexOf(\"-\");\r\n if (dashIndex > -1) {\r\n locale = locale.substring(0, dashIndex);\r\n // console.log(\" Two-letter browser language:\", locale);\r\n }\r\n }\r\n if (\r\n !locale ||\r\n !this.$store.state.app.supportedLocaleCodes.includes(locale)\r\n ) {\r\n locale = this.$store.state.app.defaultLocale;\r\n // console.log(\" Locale not supported. Setting locale to defaultLocale:\", locale);\r\n }\r\n // Update the locale (on screen), don't save it to store\r\n // (user's own selection should be saved to store, not defaults)\r\n // console.log(\" Setting locale:\", locale);\r\n this.$i18n.set(locale);\r\n }\r\n\r\n (window as any)._approot = this;\r\n\r\n // console.log(\"Starting to poll API info ...\")\r\n this.pollApiInfo();\r\n\r\n this.$root.$on(AppEvents.APP_LOGIN_SUCCESS, async () => {\r\n await this.initApp();\r\n });\r\n\r\n await this.initApp();\r\n }\r\n\r\n mounted() {\r\n this.themeToggleEnabled =\r\n document.location.host.indexOf(\"localhost\") > -1 ||\r\n document.location.host.indexOf(\"staging\") > -1 ||\r\n document.location.hash.indexOf(\"dev_theme_testing\") > -1;\r\n\r\n this.toggleTranslateMode(this.translateMode);\r\n\r\n this.$root.$on(AppEvents.APP_API_UNAUTHORIZED, async () => {\r\n // console.log(\"AppRoot:\", \"APP_API_UNAUTHORIZED received\");\r\n vuetifyToast.info(\r\n this.$i18n.translate(\r\n \"generic.error.api_unauthorized\",\r\n \"Authentication failed. Your session might have expired. \" +\r\n \"Please sign in again.\"\r\n ),\r\n {\r\n timeout: 25000,\r\n dismissible: true,\r\n }\r\n );\r\n });\r\n }\r\n\r\n async getOrganizationPtpNames(organizationId: string) {\r\n await this.$store.dispatch(\r\n \"organization/getPtpNamesForOrganization\",\r\n {\r\n params: {\r\n id: organizationId,\r\n },\r\n }\r\n );\r\n }\r\n\r\n async getOrganizationCostCenters(organizationId) {\r\n await this.$store.dispatch(\r\n \"organization/getCostCentersForOrganization\",\r\n {\r\n params: {\r\n id: organizationId,\r\n },\r\n }\r\n );\r\n }\r\n\r\n async pollApiInfo() {\r\n try {\r\n const result = await this.$store.dispatch(\"app/getApiInfo\");\r\n if (this.$store.state.app.apiInfo.frontend) {\r\n const apiInfoVersion: Version = new Version(\r\n this.$store.state.app.apiInfo.frontend.version\r\n );\r\n const currentVersion: Version = this.$store.state.app.version;\r\n this.newVersion = !currentVersion.isGreaterOrEqual(apiInfoVersion)\r\n ? apiInfoVersion.toString()\r\n : \"\";\r\n }\r\n // TODO: Set app to online? Here or in store?\r\n } catch (ex) {\r\n // TODO: Set app to offline? Here or in store?\r\n }\r\n this.pollApiInfoTimeout = setTimeout(\r\n this.pollApiInfo,\r\n this.$store.state.app.apiInfoPollingTimeoutMS\r\n );\r\n }\r\n\r\n onNewVersionOkClick() {\r\n (window as any).location.reload();\r\n }\r\n\r\n async onToggleWeekStartsOnSunday() {\r\n this.$store.dispatch(\r\n \"user/setWeekStartsOnSunday\",\r\n !this.weekStartsOnSunday\r\n );\r\n }\r\n\r\n async onRefreshClick() {\r\n this.refreshing = true;\r\n try {\r\n console.log(\"Getting all destinations ...\");\r\n await this.$store.dispatch(\"destination/getAllDestinations\");\r\n if (this.$store.state.route.name.includes(\"Arrival\")) {\r\n console.log(\"Getting destination arrivalDepartures ...\");\r\n await this.$store.dispatch(\r\n \"arrivalDeparture/getDestinationArrivalDepartures\",\r\n {\r\n params: {\r\n destinationId: this.routeDestinationId,\r\n refreshCache: true,\r\n },\r\n }\r\n );\r\n } else if (this.$store.state.route.name.includes(\"Timetable\")) {\r\n console.log(\"Getting all timetables ...\");\r\n await this.$store.dispatch(\"timetable/getAllTimetables\");\r\n console.log(\"Getting all rides ...\");\r\n await this.$store.dispatch(\"ride/getAllRides\");\r\n } else if (this.$store.state.route.name.includes(\"Booking\")) {\r\n console.log(\"Getting all bookings ...\");\r\n this.$store.dispatch(\"booking/getDestinationBookings\", {\r\n params: {\r\n destinationId: this.routeDestinationId,\r\n },\r\n });\r\n }\r\n } catch (e) {\r\n if ((e as any).response) {\r\n if ((e as any).response.status === 401) {\r\n // console.log(\"Authentication failed. Should now show sign-in dialog.\");\r\n this.$store.dispatch(\"auth/authLogout\");\r\n }\r\n } else {\r\n console.error(e);\r\n vuetifyToast.error(\r\n this.$i18n.translate(\r\n \"error.api_connection_error\",\r\n \"API connection error.\"\r\n )\r\n );\r\n }\r\n }\r\n this.refreshing = false;\r\n }\r\n\r\n onMenuContactSupportClick() {\r\n this.$router.push(Routes.contactSupportRoute);\r\n this.drawer = false;\r\n }\r\n\r\n onMenuSignOutClick() {\r\n this.$store.dispatch(\"auth/authLogout\");\r\n this.drawer = false;\r\n this.$router.push(Routes.signInRoute);\r\n }\r\n onMenuSignInClick() {\r\n this.drawer = false;\r\n this.$router.push(Routes.signInRoute);\r\n }\r\n\r\n async onDestinationSelectChange(e) {\r\n // console.log(\"ArrivalsDeparturesPage\", \"onDestinationSelectChange()\", \"e:\", e);\r\n (this.$refs.destinationSelectRef as any).blur();\r\n }\r\n\r\n async onDestinationSelectInput(e) {\r\n // this.$router.replace({\r\n // name: 'ArrivalsDeparturesDestination',\r\n // params: {\r\n // destinationId: this.selectedDestinationId.toString(),\r\n // }\r\n // });\r\n }\r\n\r\n async onPassengerSelect(passengerSearchResult: IPassengerSearchResult) {\r\n if (passengerSearchResult){\r\n await this.$store.dispatch(\"passenger/getPassengerById\", {params: { id: passengerSearchResult.id}});\r\n }\r\n if (passengerSearchResult.destinationId) {\r\n const destRole = this.me.destinationRoles.find(d => d.destinationId === passengerSearchResult.destinationId);\r\n if (destRole && destRole.passengerPermission >= PermissionEnum.Read) {\r\n this.$router.push({\r\n name: Routes.editPeopleRoute.name,\r\n params: { destinationId: passengerSearchResult.destinationId.toString(), passengerId: passengerSearchResult.id.toString() },\r\n });\r\n }\r\n } else {\r\n this.$router.push({\r\n name: Routes.editPassengerRoute.name,\r\n params: { passengerId: passengerSearchResult.id + \"\" },\r\n });\r\n }\r\n }\r\n\r\n onTimeTableSelect(timeTable: ITimetableSearchResult) {\r\n this.$router.push({\r\n name: Routes.timetableRoute.name,\r\n params: { destinationId: timeTable.destinationId.toString(), timetableId: timeTable.id }\r\n })\r\n }\r\n\r\n async onRetryClick() {\r\n this.apiError = false;\r\n await this.initApp();\r\n }\r\n onDrawerItemClick(drawerItem) {\r\n // console.log(\"onDrawerItemClick\", drawerItem)\r\n }\r\n onResizeTranslationPane() {\r\n // console.log(\"onResizeSplitPane()\")\r\n this.translatePanePreferredWidth =\r\n this.translatePaneHtmlElement.style.width;\r\n }\r\n beforeDestroy() {\r\n if (this.pollApiInfoTimeout) {\r\n clearTimeout(this.pollApiInfoTimeout);\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrderSearch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OrderSearch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OrderSearch.vue?vue&type=template&id=6ff2f89d&\"\nimport script from \"./OrderSearch.vue?vue&type=script&lang=ts&\"\nexport * from \"./OrderSearch.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/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, staticRenderFns\nimport script from \"./AppRoot.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppRoot.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/cli-service/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","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AppRoot.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AppRoot.vue?vue&type=script&lang=ts&\"","import Vue from 'vue';\r\nimport Locale from '@/models/Locale';\r\nimport store from '@/store'\r\n\r\n// Get locales (with hot reload)\r\n// Would be nice to iterate over locales with dynamically constructed strings, but it's a no-go with require\r\nconst enLocale: Locale = { code: \"en\", translations: require(\"./en.json\")};\r\nif ((module as any).hot) {\r\n (module as any).hot.accept(['./en.json'], () => {\r\n replaceLocale(\"en\", require('./en.json'));\r\n })\r\n} \r\n\r\nconst fiLocale: Locale = { code: \"fi\", translations: require('./fi.json') };\r\nif ((module as any).hot) {\r\n (module as any).hot.accept(['./fi.json'], () => {\r\n replaceLocale(\"fi\", require('./fi.json'));\r\n })\r\n}\r\n\r\nconst locales: Locale[] = [\r\n enLocale,\r\n fiLocale,\r\n];\r\n\r\nfunction replaceLocale(locale, translations){\r\n if ((store.state as any).app.translateMode){\r\n console.log(\"Translate mode is on, won't replace locale \" + locale + \" in the state\");\r\n (Vue as any).i18n.replace(locale, translations);\r\n }\r\n}\r\n\r\nexport default locales;\r\n","import './theme_default.scss'\r\nimport ITheme from '../ITheme';\r\n\r\nexport default class ThemeDefault implements ITheme {\r\n id: string = \"default\";\r\n cssClassName: string = \"theme_default\"; \r\n dark: boolean = false;\r\n menuDark: boolean = false;\r\n toolbarDark: boolean = true;\r\n menuRight: boolean = false;\r\n vuetifyTheme: any = {\r\n accent: '#81c784'\r\n }\r\n}\r\n","import './theme_kovanen.scss'\r\nimport ITheme from '../ITheme';\r\n\r\nexport default class ThemeKovanen implements ITheme {\r\n id: string = \"kovanen\";\r\n cssClassName: string = \"theme_kovanen\";\r\n dark: boolean = false;\r\n menuRight: boolean = true;\r\n menuDark: boolean = true;\r\n toolbarDark: boolean = true;\r\n vuetifyTheme: any = {\r\n primary: '#ffcb31',\r\n secondary: '#00ff00',\r\n accent: '#ffcb31',\r\n warning: '#ffcb31'\r\n }\r\n}\r\n","import './theme_espoo.scss'\r\nimport ITheme from '../ITheme';\r\n\r\nexport default class ThemeEspoo implements ITheme {\r\n id: string = \"espoo\";\r\n cssClassName: string = \"theme_espoo\";\r\n dark: boolean = false;\r\n menuRight: boolean = true;\r\n menuDark: boolean = false;\r\n toolbarDark: boolean = false;\r\n appNameI18n: string = \"toolbar.app_name_transportation_services\"\r\n vuetifyTheme: any = {\r\n primary: '#0047b6',\r\n secondary: '#00ff00',\r\n accent: '#0047b6',\r\n warning: '#00b7f1'\r\n }\r\n}\r\n","import ThemeDefault from './default/theme_default'\r\nimport ThemeKovanen from './kovanen/theme_kovanen'\r\nimport ThemeEspoo from './espoo/theme_espoo'\r\nimport Theme from './ITheme'\r\n\r\nexport default class Themes {\r\n public static themes: Theme[] = [\r\n new ThemeDefault(),\r\n new ThemeKovanen(),\r\n new ThemeEspoo()\r\n ];\r\n}\r\n","export class Extra {\r\n id: number;\r\n externalId: string;\r\n name: string;\r\n defaultPrice: number;\r\n\r\n public static fromApi(apiExtra: any): Extra {\r\n const extra = new Extra();\r\n extra.id = apiExtra.id;\r\n extra.externalId = apiExtra.externalId;\r\n extra.name = apiExtra.name;\r\n extra.defaultPrice = apiExtra.defaultPrice;\r\n return extra;\r\n }\r\n\r\n}\r\n\r\nexport default Extra;\r\n","export class Requirement {\r\n id: number;\r\n description: string;\r\n\r\n public static fromApi(apiRequirement: any): Requirement {\r\n const requirement = new Requirement();\r\n requirement.id = apiRequirement.id;\r\n requirement.description = apiRequirement.description;\r\n return requirement;\r\n }\r\n}\r\n\r\nexport default Requirement;\r\n","import Extra from './Extra'\r\nimport Requirement from './Requirement';\r\n\r\nexport class MovitInstanceConfig {\r\n\r\n static featurePassengerPropertyChanges: string = \"FeaturePassengerPropertyChanges\";\r\n\r\n instanceId: number = 0;\r\n extras: Extra[] = [];\r\n supportedFeatures: string[] = [];\r\n requirements: Requirement[] = [];\r\n\r\n get supportsFeaturePassengerPropertyChanges(): boolean {\r\n return this.supportedFeatures.includes(MovitInstanceConfig.featurePassengerPropertyChanges);\r\n }\r\n\r\n public static fromApi(apiMovitInstanceConfig: any): MovitInstanceConfig {\r\n const movitInstanceConfig = new MovitInstanceConfig();\r\n movitInstanceConfig.instanceId = apiMovitInstanceConfig.instanceId;\r\n\r\n movitInstanceConfig.extras = apiMovitInstanceConfig.extras \r\n ? apiMovitInstanceConfig.extras.map((e: any) => Extra.fromApi(e))\r\n : [];\r\n\r\n movitInstanceConfig.supportedFeatures = apiMovitInstanceConfig.supportedFeatures \r\n ? apiMovitInstanceConfig.supportedFeatures \r\n : [];\r\n\r\n movitInstanceConfig.requirements = apiMovitInstanceConfig.requirements\r\n ? apiMovitInstanceConfig.requirements.map((r: any) => Requirement.fromApi(r))\r\n : [];\r\n\r\n return movitInstanceConfig;\r\n }\r\n\r\n}\r\n\r\nexport default MovitInstanceConfig;\r\n","import Vue from 'vue';\r\nimport Vapi from \"vuex-rest-api\"\r\nimport Version from '@/models/Version';\r\nimport locales from '@/locales/index'\r\nimport Themes from '@/themes';\r\nimport AppEvents from '@/AppEvents';\r\nimport MovitInstanceConfig from '@/models/MovitInstanceConfig';\r\n\r\nlet themeId = \"default\";\r\nif (document.location.host.indexOf(\"kovanen.\") > -1) {\r\n themeId = \"kovanen\";\r\n} else if (document.location.host.indexOf(\"espoonkaupunki.\") > -1) {\r\n themeId = \"espoo\";\r\n}\r\n\r\nconst appApi = new Vapi(\r\n {\r\n baseURL: process.env.VUE_APP_API_HOST + \"/api/app\",\r\n state: {\r\n movitInstanceConfigs: [],\r\n themes: Themes.themes,\r\n themeId,\r\n online: true,\r\n localesLoaded: false,\r\n locale: null,\r\n translateMode: false,\r\n showExpiredTimetables: true,\r\n showOnlyMyTimetables: false,\r\n showTimetablesAsList: false,\r\n timetableListDataTablePagination: {\r\n sortBy: 'idNumber'\r\n },\r\n lastSelectedTimetableId: null,\r\n lastSelectedTimetableState: null,\r\n showExpiredBookings: true,\r\n showOnlyMyBookings: false,\r\n showBookingsAsList: false,\r\n lastSelectedBookingId: null,\r\n lastSelectedBookingState: null,\r\n bookingListDataTablePagination: {\r\n sortBy: 'startDate'\r\n },\r\n arrivalsDeparturesSelectedDateId: null, // moment(new Date()).startOf(\"day\").format('YYYY-MM-DD'),\r\n version: new Version(require('@/../public/info.json').frontend.version),\r\n apiInfo: {},\r\n apiInfoPollingTimeoutMS: 10 * 60 * 1000,\r\n defaultLocale: \"fi\",\r\n supportedLocaleCodes: locales.map(l => l.code),\r\n timetable: {\r\n splitLimitDays: {\r\n allowDaysBeforeEnd: 0,\r\n allowDaysAfterStart: 0,\r\n newStartMinDaysFromToday: 0\r\n }\r\n }\r\n }\r\n }\r\n)\r\n.get({\r\n action: \"getApiInfo\",\r\n property: \"apiInfo\",\r\n path: \"/info\"\r\n})\r\n.get({\r\n action: \"getAllMovitInstanceConfigs\",\r\n property: \"movitInstanceConfigs\",\r\n path: \"/movitInstanceConfigs\",\r\n onSuccess: (state, payload, axios) => {\r\n state.movitInstanceConfigs = payload.data.map(c => MovitInstanceConfig.fromApi(c));\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n})\r\n\r\nconst appStore = appApi.getStore();\r\n(appStore as any).namespaced = true;\r\n(appStore as any).persist = [\r\n \"themeId\",\r\n \"locale\", \r\n \"translateMode\", \r\n \"showExpiredTimetables\", \r\n \"showOnlyMyTimetables\",\r\n \"showTimetablesAsList\", \r\n \"lastSelectedTimetableState\", \r\n \"timetableListDataTablePagination\", \r\n \"showExpiredBookings\", \r\n \"showOnlyMyBookings\",\r\n \"showBookingsAsList\", \r\n \"lastSelectedBookingState\", \r\n \"bookingListDataTablePagination\",\r\n \"arrivalsDeparturesSelectedDateId\"\r\n];\r\n\r\n// loadLocales\r\nappStore.actions.loadLocales = (context) => {\r\n try {\r\n for (const locale of locales){\r\n (Vue as any).i18n.add(locale.code, locale.translations);\r\n }\r\n // console.log(\"Locales loaded ...\");\r\n context.commit( \"localesLoaded\", true);\r\n } catch (error) {\r\n console.error(error)\r\n context.commit(\"localesLoaded\", false);\r\n }\r\n}\r\nappStore.mutations.localesLoaded = (context, value) => {\r\n context.localesLoaded = value;\r\n}\r\n\r\n// setLocale\r\nappStore.actions.setLocale = (context, value) => {\r\n Vue.i18n.set(value)\r\n context.commit( \"setLocale\", value);\r\n}\r\nappStore.mutations.setLocale = (context, value) => {\r\n context.locale = value;\r\n}\r\n\r\n// setTranslateMode\r\nappStore.actions.setTranslateMode = (context, value) => {\r\n context.commit( \"setTranslateMode\", value);\r\n}\r\nappStore.mutations.setTranslateMode = (context, value) => {\r\n context.translateMode = value;\r\n}\r\n\r\n// setThemeId\r\nappStore.actions.setThemeId = (context, value) => {\r\n context.commit( \"setThemeId\", value);\r\n}\r\nappStore.mutations.setThemeId = (context, value) => {\r\n context.themeId = value;\r\n}\r\n\r\n// setShowExpiredTimetables\r\nappStore.actions.setShowExpiredTimetables = (context, value) => {\r\n context.commit( \"setShowExpiredTimetables\", value);\r\n}\r\nappStore.mutations.setShowExpiredTimetables = (context, value) => {\r\n context.showExpiredTimetables = value;\r\n}\r\n\r\n// setShowOnlyMyTimetables\r\nappStore.actions.setShowOnlyMyTimetables = (context, value) => {\r\n context.commit( \"setShowOnlyMyTimetables\", value);\r\n}\r\nappStore.mutations.setShowOnlyMyTimetables = (context, value) => {\r\n context.showOnlyMyTimetables = value;\r\n}\r\n\r\n// setShowTimetablesAsList\r\nappStore.actions.setShowTimetablesAsList = (context, value) => {\r\n context.commit( \"setShowTimetablesAsList\", value);\r\n}\r\nappStore.mutations.setShowTimetablesAsList = (context, value) => {\r\n context.showTimetablesAsList = value;\r\n}\r\n\r\n// setTimetableListDataTablePagination\r\nappStore.actions.setTimetableListDataTablePagination = (context, value) => {\r\n context.commit( \"setTimetableListDataTablePagination\", value);\r\n}\r\nappStore.mutations.setTimetableListDataTablePagination = (context, value) => {\r\n context.timetableListDataTablePagination = value;\r\n}\r\n\r\n// setLastSelectedTimetableId\r\nappStore.actions.setLastSelectedTimetableId = (context, value) => {\r\n context.commit( \"setLastSelectedTimetableId\", value);\r\n}\r\nappStore.mutations.setLastSelectedTimetableId = (context, value) => {\r\n context.lastSelectedTimetableId = value;\r\n}\r\n\r\n// setLastSelectedTimetableState\r\nappStore.actions.setLastSelectedTimetableState = (context, value) => {\r\n context.commit( \"setLastSelectedTimetableState\", value);\r\n}\r\nappStore.mutations.setLastSelectedTimetableState = (context, value) => {\r\n context.lastSelectedTimetableState = value;\r\n}\r\n\r\n// setShowExpiredBookings\r\nappStore.actions.setShowExpiredBookings = (context, value) => {\r\n context.commit( \"setShowExpiredBookings\", value);\r\n}\r\nappStore.mutations.setShowExpiredBookings = (context, value) => {\r\n context.showExpiredBookings = value;\r\n}\r\n\r\n// setShowOnlyMyBookings\r\nappStore.actions.setShowOnlyMyBookings = (context, value) => {\r\n context.commit( \"setShowOnlyMyBookings\", value);\r\n}\r\nappStore.mutations.setShowOnlyMyBookings = (context, value) => {\r\n context.showOnlyMyBookings = value;\r\n}\r\n\r\n// setShowBookingsAsList\r\nappStore.actions.setShowBookingsAsList = (context, value) => {\r\n context.commit( \"setShowBookingsAsList\", value);\r\n}\r\nappStore.mutations.setShowBookingsAsList = (context, value) => {\r\n context.showBookingsAsList = value;\r\n}\r\n\r\n// setBookingListDataTablePagination\r\nappStore.actions.setBookingListDataTablePagination = (context, value) => {\r\n context.commit( \"setBookingListDataTablePagination\", value);\r\n}\r\nappStore.mutations.setBookingListDataTablePagination = (context, value) => {\r\n context.bookingListDataTablePagination = value;\r\n}\r\n\r\n// setLastSelectedBookingId\r\nappStore.actions.setLastSelectedBookingId = (context, value) => {\r\n context.commit( \"setLastSelectedBookingId\", value);\r\n}\r\nappStore.mutations.setLastSelectedBookingId = (context, value) => {\r\n context.lastSelectedBookingId = value;\r\n}\r\n\r\n// setLastSelectedBookingState\r\nappStore.actions.setLastSelectedBookingState = (context, value) => {\r\n context.commit( \"setLastSelectedBookingState\", value);\r\n}\r\nappStore.mutations.setLastSelectedBookingState = (context, value) => {\r\n context.lastSelectedBookingState = value;\r\n}\r\n\r\n// // getters\r\n// (appStore as any).getters = {\r\n// version: (context) => {\r\n// return context.version;\r\n// }\r\n// };\r\n\r\nexport default appStore\r\n","import Vapi from \"vuex-rest-api\"\r\nimport User from '@/models/User';\r\nimport AppEvents from '@/AppEvents';\r\nimport Destination from \"@/components/Passenger/models/Destination\";\r\nimport DestinationRole, { PermissionEnum } from \"@/models/DestinationRole\";\r\n\r\nconst userApi = new Vapi({\r\n baseURL: process.env.VUE_APP_API_HOST + \"/api/user\",\r\n state: {\r\n me: null,\r\n showWeekends: false,\r\n weekStartsOnSunday: false\r\n }\r\n })\r\n .get({\r\n action: \"getMe\",\r\n property: \"me\",\r\n path: \"/me\",\r\n onSuccess: (state, payload, axios) => {\r\n state.me = User.fromApi(payload.data);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .post({\r\n action: \"sendRecoveryEmail\",\r\n property: \"forgotPassword\",\r\n path: \"/forgotPassword\",\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"sendRecoveryEmail onSuccess\", state, payload.data);\r\n return;\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .post({\r\n action: \"validateResetPasswordCode\",\r\n property: \"validateResetPasswordCode\",\r\n path: \"/validateResetPasswordCode\",\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"validateResetPasswordCode onSuccess\", state, payload.data);\r\n return;\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .post({\r\n action: \"resetPassword\",\r\n property: \"resetPassword\",\r\n path: \"/resetPassword\",\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"resetPassword onSuccess\", state, payload.data);\r\n return;\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .post({\r\n action: \"sendSupportRequest\",\r\n property: \"supportRequest\",\r\n path: \"/supportRequest\",\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"sendSupportRequest onSuccess\", state, payload.data);\r\n return;\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n\r\nconst userStore = userApi.getStore();\r\n(userStore as any).namespaced = true;\r\n(userStore as any).persist = [\"showWeekends\", \"weekStartsOnSunday\"];\r\n\r\n// showWeekends: Whether to show weekends in calendar and timetable\r\n(userStore.state as any).showWeekends = false;\r\n\r\nuserStore.mutations.addDestinationPermission = (state, value: Destination) => {\r\n\r\n const newRole = DestinationRole.newAdminRole(value.id);\r\n (state.me as User).destinationRoles.push(newRole)\r\n}\r\n\r\nuserStore.mutations.setShowWeekends = (state, value) => {\r\n state.showWeekends = value;\r\n}\r\nuserStore.actions.setShowWeekends = (context, value) => {\r\n context.commit(\"setShowWeekends\", value)\r\n}\r\n\r\n// weekStartsOnSunday: true if week starts on Sunday, false if on Monday \r\n(userStore.state as any).weekStartsOnSunday = false;\r\nuserStore.mutations.setWeekStartsOnSunday = (state, value) => {\r\n state.weekStartsOnSunday = value;\r\n}\r\nuserStore.actions.setWeekStartsOnSunday = (context, value) => {\r\n context.commit(\"setWeekStartsOnSunday\", value)\r\n}\r\n\r\nexport default userStore;\r\n","import AppEvents from '@/AppEvents';\r\nimport axios from 'axios';\r\nimport { ICredentials } from '../models/ICredentials';\r\nimport { BaseService } from './BaseService';\r\n\r\nclass AuthService extends BaseService {\r\n\r\n private static instance: AuthService;\r\n\r\n private constructor() { super(); }\r\n\r\n public static get Instance() {\r\n // Do you need arguments? Make it a regular method instead.\r\n return this.instance || (this.instance = new this());\r\n }\r\n\r\n public async loginAsync(credentials: ICredentials): Promise {\r\n try {\r\n const res = await axios.post(`${this.api}/auth/login`, credentials)\r\n return res.data.auth_token as string;\r\n } catch (e){\r\n AppEvents.handleApiError(e);\r\n }\r\n }\r\n\r\n public async azureAdSignInOrSignUp(): Promise {\r\n try {\r\n const res = await axios.post(`${this.api}/auth/azureAdSignInOrSignUp`, null, {withCredentials: true})\r\n return res.data.auth_token as string;\r\n \r\n } catch (e){\r\n AppEvents.handleApiError(e);\r\n }\r\n }\r\n}\r\n\r\n// export a singleton instance in the global namespace\r\nexport const authService = AuthService.Instance\r\n","import Vue from 'vue';\r\nexport const EventBus = new Vue();\r\n","/*tslint:disable:max-line-length*/\r\n\r\nimport { PermissionEnum, RolePermission } from '@/models/DestinationRole';\r\n\r\nexport class PermissionService {\r\n private passengerRead = [\r\n RolePermission.ReadPassengers, \r\n RolePermission.ReadAllPassengerTrips, \r\n RolePermission.UpdatePassengerGroups,\r\n ];\r\n private passengerWrite = [RolePermission.CreatePassengers, RolePermission.UpdatePassengers];\r\n private passengerPermissions = this.passengerRead.concat(this.passengerWrite);\r\n\r\n private timetableRead = [RolePermission.ReadTimetables];\r\n private timetableWrite = [\r\n RolePermission.CreateTimetables,\r\n RolePermission.UpdateTimetables,\r\n RolePermission.DeleteTimetables,\r\n ];\r\n\r\n private arrivalRead = [RolePermission.ReadArrivalDepartures];\r\n private arrivalWrite = [RolePermission.UpdateArrivalDepartures];\r\n \r\n private bookingRead = [RolePermission.ReadBookings];\r\n private bookingWrite = [\r\n RolePermission.CreateBookings,\r\n RolePermission.UpdateBookings,\r\n RolePermission.DeleteBookings,\r\n ];\r\n\r\n private transportationPermissionRead = [RolePermission.ReadTransportationPermissions];\r\n private transportationPermissionWrite = [\r\n RolePermission.CreateTransportationPermissions,\r\n RolePermission.UpdateTransportationPermissions,\r\n RolePermission.DeleteTransportationPermissions,\r\n ];\r\n\r\n getPassengerPermissionLevel(permissions: RolePermission[]) {\r\n const writePermissionRequired = permissions.some(p => this.passengerWrite.some(w => w === p));\r\n if (writePermissionRequired) {\r\n return PermissionEnum.Write;\r\n }\r\n const readPermissionRequired = permissions.some(p => this.passengerRead.some(r => r === p));\r\n if (readPermissionRequired) {\r\n return PermissionEnum.Read;\r\n }\r\n return PermissionEnum.NoPermission;\r\n }\r\n\r\n getTimetablePermissionLevel(permissions: RolePermission[]) {\r\n const writePermissionRequired = permissions.some(p => this.timetableWrite.some(w => w === p));\r\n if (writePermissionRequired) {\r\n return PermissionEnum.Write;\r\n }\r\n const readPermissionRequired = permissions.some(p => this.timetableRead.some(r => r === p));\r\n if (readPermissionRequired) {\r\n return PermissionEnum.Read;\r\n }\r\n return PermissionEnum.NoPermission;\r\n }\r\n\r\n getArrivalPermissionLevel(permissions: RolePermission[]) {\r\n const writePermissionRequired = permissions.some(p => this.arrivalWrite.some(w => w === p));\r\n if (writePermissionRequired) {\r\n return PermissionEnum.Write;\r\n }\r\n const readPermissionRequired = permissions.some(p => this.arrivalRead.some(r => r === p));\r\n if (readPermissionRequired) {\r\n return PermissionEnum.Read;\r\n }\r\n return PermissionEnum.NoPermission;\r\n }\r\n\r\n getBookingPermissionLevel(permissions: RolePermission[]) {\r\n const writePermissionRequired = permissions.some(p => this.bookingWrite.some(w => w === p));\r\n if (writePermissionRequired) {\r\n return PermissionEnum.Write;\r\n }\r\n const readPermissionRequired = permissions.some(p => this.bookingRead.some(r => r === p));\r\n if (readPermissionRequired) {\r\n return PermissionEnum.Read;\r\n }\r\n return PermissionEnum.NoPermission;\r\n }\r\n\r\n getTransportationPermissionLevel(permissions: RolePermission[]) {\r\n const writePermissionRequired = permissions.some(p => this.transportationPermissionWrite.some(w => w === p));\r\n if (writePermissionRequired) {\r\n return PermissionEnum.Write;\r\n }\r\n const readPermissionRequired = permissions.some(p => this.transportationPermissionRead.some(r => r === p));\r\n if (readPermissionRequired) {\r\n return PermissionEnum.Read;\r\n }\r\n return PermissionEnum.NoPermission;\r\n }\r\n\r\n}\r\n\r\nexport default new PermissionService();\r\n","import { ICredentials } from '../models/ICredentials';\r\nimport { authService } from '../services/AuthService';\r\nimport { EventBus } from '../EventBus';\r\nimport Passenger from '@/components/Passenger/models/Passenger';\r\nimport { PassengerGroup } from '@/models/PassengerGroup';\r\nimport PassengerGroupPassenger from '@/models/PassengerGroupPassenger';\r\nimport User, { PassengerGroupPermissionType } from '@/models/User';\r\nimport { PermissionEnum, RolePermission } from '@/models/DestinationRole';\r\nimport PermissionService from '@/services/PermissionService';\r\nimport { Route } from 'vue-router';\r\nimport Routes from '@/Routes';\r\nimport { IPassengerGroupWithPassengers } from '@/typings/timit';\r\nimport { Organization } from '@/models/Organization';\r\n\r\ninterface IAuthState {\r\n token: string;\r\n status: string;\r\n}\r\n\r\nconst state = { token: localStorage.getItem('auth-token') || '', status: '' };\r\n\r\nconst getters = {\r\n isAuthenticated: (authState: any) => !!authState.token,\r\n authStatus: (authState: any) => authState.status,\r\n authToken: (authState: any) => authState.token,\r\n hasPassengerPermission: (authState: IAuthState, authGetters: any, rootState: any, rootGetters: any) => \r\n (permissions: RolePermission[], routerRoute: Route | null = null) => {\r\n const user = (rootState.user.me as User);\r\n const route = routerRoute ? routerRoute : rootState.route;\r\n\r\n const permissionLevel = PermissionService.getPassengerPermissionLevel(permissions);\r\n\r\n if (route.params && route.params.passengerId) {\r\n const passengerId = parseInt(route.params.passengerId, 10);\r\n return handlePassengerPermissions(rootState, rootGetters, passengerId, permissionLevel);\r\n }\r\n\r\n if (route.params && route.params.passengerGroupId) {\r\n const passengerGroupId = parseInt(route.params.passengerGroupId, 10);\r\n return handlePassengerGroupPermissions(user, passengerGroupId, permissionLevel);\r\n }\r\n \r\n if (route.params && route.params.destinationId) {\r\n const destinationId = parseInt(route.params.destinationId, 10);\r\n return handlePassengerDestinationPermissions(user, destinationId, permissionLevel);\r\n }\r\n \r\n return false;\r\n },\r\n hasDestinationPermission: (authState: IAuthState, authGetters: any, rootState: any) => \r\n (destinationId: string, permissions: number[]) => {\r\n const numericDestinationId = parseInt(destinationId, 10);\r\n if (isNaN(numericDestinationId)) {\r\n return false;\r\n }\r\n\r\n const user = (rootState.user.me as User);\r\n const destinationRole = user.destinationRoles.find(dr => dr.destinationId === numericDestinationId);\r\n if (!destinationRole) {\r\n return false;\r\n }\r\n\r\n return permissions.every(p => destinationRole.permissions.includes(p));\r\n },\r\n hasTransportationPermission: (authState: IAuthState, authGetters: any, rootState: any, rootGetters: any) => \r\n (permissions: number[], routerRoute: Route | null = null) => {\r\n const permissionLevel = PermissionService.getTransportationPermissionLevel(permissions);\r\n const user: User = rootState.user.me;\r\n const route = routerRoute ? routerRoute : rootState.route;\r\n\r\n if (route.params && route.params.passengerId) {\r\n const passengerId = parseInt(route.params.passengerId, 10);\r\n const passenger: Passenger = rootGetters['passenger/findPassengerById'](passengerId);\r\n if (!passenger) {\r\n return false;\r\n }\r\n if (passenger.passengerDestinations.length === 0) {\r\n const selectedPassengerGroup: IPassengerGroupWithPassengers = rootState.organization.selectedPassengerGroup;\r\n if (\r\n selectedPassengerGroup \r\n && selectedPassengerGroup.passengerGroupPassengers \r\n && selectedPassengerGroup.passengerGroupPassengers.some(pgp => pgp.id === passengerId)\r\n ) {\r\n const userPermission = user.passengerGroupRoles\r\n .find(pgr => pgr.passengerGroupId === selectedPassengerGroup.id);\r\n return (userPermission.transportationPermission || 0) >= permissionLevel;\r\n }\r\n return false;\r\n }\r\n \r\n return user.destinationRoles\r\n .some(dr => passenger.passengerDestinations\r\n .find(pd => pd.destinationId === dr.destinationId)\r\n && dr.transportationPermission >= permissionLevel\r\n );\r\n }\r\n\r\n if (route.params && route.params.destinationId) {\r\n const destinationId = parseInt(route.params.destinationId, 10);\r\n return user.destinationRoles\r\n .some(dr => dr.destinationId === destinationId && dr.transportationPermission >= permissionLevel);\r\n }\r\n return false;\r\n },\r\n hasSchedulePermission: (authState: IAuthState, authGetters: any, rootState: any, rootGetters: any) => \r\n (permissionLevel: PermissionEnum, passengerGroupIds: number[], routerRoute: Route | null = null) => {\r\n const user: User = rootState.user.me;\r\n const route = routerRoute ? routerRoute : rootState.route;\r\n let hasPermissionToPassengerGroup = false;\r\n let hasPermissionToDestination = false;\r\n if (route.params && route.params.passengerId) {\r\n const passengerId = parseInt(route.params.passengerId, 10);\r\n const passenger: Passenger = rootGetters['passenger/findPassengerById'](passengerId);\r\n if (!passenger) {\r\n return false;\r\n }\r\n\r\n if (passengerGroupIds.length > 0) {\r\n hasPermissionToPassengerGroup = user.passengerGroupRoles\r\n .filter(r => passengerGroupIds.includes(r.passengerGroupId))\r\n .some(r => (r.schedulePermission || 0) >= permissionLevel);\r\n }\r\n\r\n hasPermissionToDestination = user.destinationRoles\r\n .some(dr => passenger.passengerDestinations\r\n .find(pd => pd.destinationId === dr.destinationId)\r\n && dr.schedulePermission >= permissionLevel\r\n );\r\n\r\n return hasPermissionToDestination || hasPermissionToPassengerGroup; \r\n }\r\n },\r\n isOrganizationAdmin: (authState: IAuthState, authGetters: any, rootState: any) => (organizationId: string) => {\r\n const user = rootState.user.me;\r\n const organization = (rootState.organization.organizations as Organization[]).find(o => o.id === organizationId);\r\n if (!organization) {\r\n return false;\r\n }\r\n\r\n return organization.administratorIds.includes(user.id);\r\n },\r\n organizationCanSeeSsn: (authState: IAuthState, authGetters: any, rootState: any) => (organizationId: string) => {\r\n const organization = (rootState.organization.organizations as Organization[]).find(o => o.id === organizationId);\r\n if(organization && organization.showSsn) {\r\n return true\r\n }\r\n return false;\r\n }\r\n};\r\n\r\nconst actions = {\r\n async authRequest({commit, dispatch}: {commit: any, dispatch: any} , credentials: ICredentials) {\r\n commit('authRequest');\r\n try {\r\n const result: string = await authService.loginAsync(credentials);\r\n localStorage.setItem('auth-token', result); // stash the auth token in localStorage\r\n commit('authSuccess', result);\r\n EventBus.$emit('logged-in', null);\r\n // dispatch('user/userRequest', null, { root: true });\r\n return result;\r\n } catch (ex) {\r\n commit('authError', ex);\r\n localStorage.removeItem('auth-token');\r\n throw ex;\r\n }\r\n },\r\n async azureAdSignInOrSignUp({commit, dispatch}: {commit: any, dispatch: any}) {\r\n try {\r\n const result: string = await authService.azureAdSignInOrSignUp();\r\n localStorage.setItem('auth-token', result); // stash the auth token in localStorage\r\n commit('authSuccess', result);\r\n EventBus.$emit('logged-in', null);\r\n return result;\r\n } catch (ex) {\r\n commit('authError', ex);\r\n localStorage.removeItem('auth-token');\r\n throw ex;\r\n }\r\n },\r\n authLogout: ({commit, dispatch}: {commit: any, dispatch: any}) => {\r\n return new Promise((resolve, reject) => {\r\n commit('authLogout');\r\n localStorage.removeItem('auth-token');\r\n resolve();\r\n });\r\n },\r\n};\r\n\r\nconst mutations = {\r\n authRequest: (authState: any) => {\r\n authState.status = 'attempting authentication request';\r\n },\r\n authSuccess: (authState: any, authToken: string) => {\r\n authState.status = 'authentication succeeded';\r\n authState.token = authToken;\r\n },\r\n authError: (authState: any) => {\r\n authState.status = 'error';\r\n },\r\n authLogout: (authState: any) => {\r\n authState.token = '';\r\n },\r\n};\r\n\r\nconst handlePassengerPermissions = (rootState: any, rootGetters: any, passengerId: number, permissionLevel: PermissionEnum) => {\r\n const user = (rootState.user.me as User);\r\n const passenger: Passenger = rootGetters['passenger/findPassengerById'](passengerId);\r\n if (!passenger) {\r\n return false;\r\n }\r\n const destinationIds = passenger.passengerDestinations.map(pd => pd.destinationId);\r\n const hasDestinationPermission = destinationIds\r\n .some(dId => user.destinationRoles\r\n .find(dr => dr.destinationId === dId && dr.passengerPermission >= permissionLevel));\r\n if (hasDestinationPermission) {\r\n return true;\r\n }\r\n\r\n const passengerGroupsIds = (rootState.organization.passengerGroups as PassengerGroup[])\r\n .map(pg => pg.passengerGroupPassengers)\r\n .reduce((pgp: PassengerGroupPassenger[], c) => pgp = pgp.concat(c), [])\r\n .filter(pgp => pgp)\r\n .filter(pgp => pgp.passengerId && pgp.passengerId === passenger.id)\r\n .map(pgp => pgp.passengerGroupId);\r\n\r\n const hasPassengerGroupPermission = passengerGroupsIds\r\n .some(pgId => user.passengerGroupRoles\r\n .find(pgr => pgr.passengerGroupId === pgId && pgr.passengerPermission >= permissionLevel));\r\n\r\n if (hasPassengerGroupPermission) {\r\n return true;\r\n }\r\n\r\n const selectedPassengerGroup = (rootState.organization.selectedPassengerGroup as IPassengerGroupWithPassengers);\r\n if (\r\n selectedPassengerGroup \r\n && selectedPassengerGroup.passengerGroupPassengers \r\n && selectedPassengerGroup.passengerGroupPassengers.some(pgp => pgp.id === passenger.id)\r\n ) {\r\n return user.passengerGroupRoles\r\n .some(pgr => pgr.passengerGroupId === selectedPassengerGroup.id && pgr.passengerPermission >= permissionLevel);\r\n }\r\n\r\n return false;\r\n}\r\n\r\nconst handlePassengerGroupPermissions = (user: User, passengerGroupId: number, permissionLevel: PermissionEnum) => {\r\n const passengerGroup = user.passengerGroupRoles.find(pg => pg.passengerGroupId === passengerGroupId);\r\n if (!passengerGroup) {\r\n return false;\r\n }\r\n return passengerGroup.passengerPermission >= permissionLevel;\r\n}\r\n\r\nconst handlePassengerDestinationPermissions = (user: User, destinationId: number, permissionLevel: PermissionEnum) => {\r\n const destination = user.destinationRoles.find(dr => dr.destinationId === destinationId);\r\n if (!destination) {\r\n return false;\r\n }\r\n return destination.passengerPermission >= permissionLevel;\r\n}\r\n\r\nexport default {\r\n namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n}\r\n","import Vapi from \"vuex-rest-api\"\r\nimport Timetable from \"@/components/Timetable/models/Timetable\"\r\nimport AppEvents from '@/AppEvents';\r\n\r\nconst timetableApi = new Vapi({\r\n baseURL: process.env.VUE_APP_API_HOST + \"/api/timetable\",\r\n state: {\r\n timetables: [],\r\n selectedTimetable: 0\r\n }\r\n})\r\n .get({\r\n action: \"getAllTimetables\",\r\n property: \"timetables\",\r\n path: \"/\",\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"getAllTimetables onSuccess\", state, payload.data);\r\n state.timetables = payload.data.map(s => Timetable.fromApi(s));\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .get({\r\n action: \"getDestinationTimetables\",\r\n property: \"timetables\",\r\n path: ({ destinationId }) => (\"/destination/\" + destinationId),\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"getDestinationTimetables onSuccess\", state, payload.data);\r\n const apiTimetables: any[] = payload.data;\r\n apiTimetables.forEach((apiTimetable: any) => {\r\n const newTimetable = Timetable.fromApi(apiTimetable);\r\n const index: number = state.timetables.findIndex(t => t.id === newTimetable.id);\r\n if (index > -1){\r\n // timetable already exists, update props\r\n Object.assign(state.timetables[index], newTimetable);\r\n } else {\r\n // timetable does not exists, push it to the store\r\n state.timetables.push(newTimetable);\r\n }\r\n });\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .get({\r\n action: \"getTimetableById\",\r\n property: \"timetable\",\r\n path: ({ id }) => (\"/\" + id),\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"updateTimetable onSuccess\", state, payload.data);\r\n const timetable = Timetable.fromApi(payload.data);\r\n const timetableIndex = state.timetables.findIndex(p => p.id === timetable.id);\r\n if (timetableIndex > -1) {\r\n // Timetable already exists, update props\r\n Object.assign(state.timetables[timetableIndex], timetable);\r\n } else {\r\n // Timetable does not exist, push it to state.timetables\r\n state.timetables.push(timetable);\r\n }\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .post({\r\n action: \"createTimetable\",\r\n property: \"timetable\",\r\n path: \"/\",\r\n onSuccess: (state, payload, axios) => {\r\n\r\n // console.log(\"createTimetable onSuccess\", state, payload.data);\r\n const timetable = Timetable.fromApi(payload.data);\r\n state.timetables.push(timetable);\r\n // console.log(\"state.timetables is now:\", state.timetables);\r\n return timetable;\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .put({\r\n action: \"updateTimetable\",\r\n property: \"timetable\",\r\n path: ({ id }) => (\"/\" + id),\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"updateTimetable onSuccess\", state, payload.data);\r\n const timetable = Timetable.fromApi(payload.data);\r\n const timetableIndex = state.timetables.findIndex(p => p.id === timetable.id);\r\n // Timetable already exists, update props\r\n if (timetableIndex > -1){\r\n Object.assign(state.timetables[timetableIndex], timetable);\r\n } else {\r\n console.error(\"Failed to update local timetable after response from API to an update request\");\r\n }\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .delete({\r\n action: \"deleteTimetable\",\r\n property: \"timetable\",\r\n path: ({ id }) => (\"/\" + id),\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"deletePassenger onSuccess\", state, payload.data);\r\n const timetable = Timetable.fromApi(payload.data);\r\n const timetableIndex = state.timetables.findIndex(p => p.id === timetable.id);\r\n if (timetableIndex > -1){\r\n state.timetables.splice(timetableIndex, 1);\r\n } else {\r\n console.error(\"Failed to remove local timetable after response from API to a delete request\");\r\n }\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .put({\r\n action: \"undeleteTimetable\",\r\n property: \"timetable\",\r\n path: ({ id }) => (\"/undelete/\" + id),\r\n onSuccess: (state, payload, axios) => {\r\n const timetable = Timetable.fromApi(payload.data);\r\n const timetableIndex = state.timetables.findIndex(p => p.id === timetable.id);\r\n if (timetableIndex > -1) {\r\n // Timetable already exists, update props\r\n Object.assign(state.timetables[timetableIndex], timetable);\r\n } else {\r\n // Timetable does not exist, push it to state.timetables\r\n state.timetables.push(timetable);\r\n }\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n\r\nconst timetableStore = timetableApi.getStore();\r\n\r\n// add selectedTimetable to the store\r\n(timetableStore.state as any).selectedTimetable = 0\r\ntimetableStore.mutations.setSelectedTimetable = (state, value) => {\r\n state.selectedTimetable = value;\r\n}\r\ntimetableStore.actions.setSelectedTimetable = (context, value) => {\r\n context.commit(\"setSelectedTimetable\", value)\r\n}\r\n\r\n(timetableStore as any).namespaced = true;\r\n\r\nexport default timetableStore;\r\n","import moment from \"moment\";\r\nimport TransportationPermission from './TransportationPermission';\r\n\r\nexport default class TransportationPermissionInfo {\r\n\r\n permissions: TransportationPermission[] = []\r\n permissionTypes: string[] = [];\r\n \r\n // NOTE: Timit only\r\n timitPassengerId: number; \r\n movitInstanceId: number | null;\r\n\r\n constructor(options) {\r\n this.permissions = options && options.permissions ? \r\n options.permissions.map(t => new TransportationPermission(t)) : [];\r\n this.permissionTypes = options && options.permissionTypes ? options.permissionTypes : []; \r\n this.timitPassengerId = options && options.timitPassengerId ? options.timitPassengerId : null; \r\n this.movitInstanceId = options && options.movitInstanceId ? options.movitInstanceId : null;\r\n }\r\n}\r\n","import Vue from \"vue\"\r\nimport Vapi from \"vuex-rest-api\"\r\nimport Passenger, { PassengerState } from \"../models/Passenger\";\r\nimport AppEvents from '@/AppEvents';\r\nimport TransportationPermission from '../models/TransportationPermission';\r\nimport TransportationPermissionInfo from '../models/TransportationPermissionInfo';\r\nimport Trip from '../models/Trip';\r\nimport IMovitBookingAddressViewModel from '@/components/Booking/models/IMovitBookingAddressViewModel';\r\nimport Destination from '../models/Destination';\r\n\r\ninterface IPassengerState {\r\n showOnlyActivePassengers: boolean;\r\n passenger: Passenger | null;\r\n paginatedPassengers: Passenger[];\r\n paginatedPassengersTotal: number;\r\n timetablePassengers: Passenger[];\r\n arrivalDeparturePassengers: Passenger[];\r\n transportationPermissionInfos: TransportationPermissionInfo[];\r\n trips: Trip[];\r\n passengerPlacesInfo: IMovitBookingAddressViewModel | null;\r\n}\r\n\r\nconst passengerApi = new Vapi({\r\n baseURL: process.env.VUE_APP_API_HOST + \"/api/passenger\",\r\n state: {\r\n showOnlyActivePassengers: localStorage.getItem('passengerListFilterInActive') === 'true',\r\n passenger: null,\r\n paginatedPassengers: [],\r\n paginatedPassengersTotal: 0,\r\n timetablePassengers: [],\r\n arrivalDeparturePassengers: [],\r\n transportationPermissionInfos: [],\r\n trips: [],\r\n passengerPlacesInfo: null,\r\n }\r\n})\r\n .get({\r\n action: \"getPaginatedPassengers\",\r\n property: \"paginatedPassengers\",\r\n queryParams: true,\r\n path: \"/paginated\",\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n const passengers = payload.data.passengers.map(s => new Passenger(s));\r\n state.paginatedPassengers = passengers;\r\n state.paginatedPassengersTotal = payload.data.total;\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .post({\r\n action: \"getTimetablePassengers\",\r\n property: \"timetablePassengers\",\r\n path: \"/byIds\",\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n const passengers = payload.data.map(s => new Passenger(s));\r\n state.timetablePassengers = passengers.filter(p => p.state === PassengerState.Normal);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .post({\r\n action: \"getArrivalDeparturePassengers\",\r\n property: \"arrivalDeparturePassengers\",\r\n path: \"/byIds\",\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n const passengers = payload.data.map(s => new Passenger(s));\r\n state.arrivalDeparturePassengers = passengers.filter(p => p.state === PassengerState.Normal);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .get({\r\n action: \"search\",\r\n property: \"passengers\",\r\n path: ({ search }) => (\"/search?q=\" + search),\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n return payload.data;\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .get({\r\n action: \"getPassengerById\",\r\n property: \"passenger\",\r\n path: ({ id }) => (\"/\" + id),\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n // console.log(\"getPassengerById onSuccess\", state, payload.data);\r\n return handlePassengerResponse(state, payload);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .post({\r\n action: \"createPassenger\",\r\n property: \"passenger\",\r\n path: \"/\",\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n // console.log(\"createPassenger onSuccess\", state, payload.data);\r\n return handlePassengerResponse(state, payload);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .put({\r\n action: \"updatePassenger\",\r\n property: \"passenger\",\r\n path: ({ id }) => (\"/\" + id),\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n // console.log(\"updatePassenger onSuccess\", state, payload.data);\r\n return handlePassengerResponse(state, payload);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .put({\r\n action: \"updatePassengerGroups\",\r\n property: \"passenger\",\r\n path: ({ id }) => (\"/\" + id + \"/groups\"),\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n // console.log(\"updatePassenger onSuccess\", state, payload.data);\r\n // TODO: We should not need to update the local passenger in state.passengers if paginated passengers works everywhere\r\n return handlePassengerResponse(state, payload);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .put({\r\n action: \"deactivate\",\r\n property: \"passenger\",\r\n path: ({ id }) => (\"/deactivate/\" + id),\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n // console.log(\"deleterequest onSuccess\", state, payload.data);\r\n return handlePassengerResponse(state, payload);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .put({\r\n action: \"activate\",\r\n property: \"passenger\",\r\n path: ({ id }) => (\"/activate/\" + id),\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n // console.log(\"deleterequest onSuccess\", state, payload.data);\r\n return handlePassengerResponse(state, payload);\r\n\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .put({\r\n action: \"deleteRequest\",\r\n property: \"passenger\",\r\n path: ({ id }) => (\"/deleterequest/\" + id),\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n // console.log(\"deleterequest onSuccess\", state, payload.data);\r\n return handlePassengerResponse(state, payload, true);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .put({\r\n action: \"cancelDeleteRequest\",\r\n property: \"passenger\",\r\n path: ({ id }) => (\"/canceldeleterequest/\" + id),\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n // console.log(\"canceldeleterequest onSuccess\", state, payload.data);\r\n return handlePassengerResponse(state, payload);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .get({\r\n action: \"getPassengerTransportationPermissionInfo\",\r\n property: \"getPassengerTransportationPermissionInfo\",\r\n path: ({ passengerId }) => (\"/\" + passengerId + \"/transportationPermissionInfo\"),\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n // console.log(\"payload data: \" + payload.data);\r\n const transportationPermissionInfo: TransportationPermissionInfo = \r\n new TransportationPermissionInfo(payload.data);\r\n const transportationPermissionIndex = state.transportationPermissionInfos.findIndex(qi => \r\n qi.timitPassengerId === transportationPermissionInfo.timitPassengerId\r\n );\r\n if (transportationPermissionIndex > -1) {\r\n // transportationPermissionInfo already exists, update props\r\n Object.assign(\r\n state.transportationPermissionInfos[transportationPermissionIndex],\r\n transportationPermissionInfo\r\n );\r\n } else {\r\n // transportationPermissionInfo does not exist, push it\r\n state.transportationPermissionInfos.push(transportationPermissionInfo);\r\n }\r\n return transportationPermissionInfo;\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n\r\n .get({\r\n action: \"getPassengerTrips\",\r\n // TODO what is the property used for?\r\n property: \"getPassengerTrips\",\r\n path: ({ passengerId, startDate, endDate, destinationId }) => \r\n (\"/\" + passengerId + \"/trips?startDate=\" + startDate + \r\n \"&endDate=\" + endDate + \"&destinationId=\" + destinationId),\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n const trips = payload.data.map(t => new Trip(t));\r\n state.trips = trips\r\n return state.trips;\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n console.warn(\"[Timit] Encountered error when fetching passenger trips\");\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n\r\n .get({\r\n action: \"getPassengerPlaces\",\r\n // TODO what is the property used for?\r\n property: \"getPassengerPlaces\",\r\n path: ({ passengerId }) => (\"/\" + passengerId + \"/passengerplaces\"),\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n \r\n // return state.trips;\r\n // console.log(\"got response from be: \" + payload);\r\n \r\n const result = payload.data as IMovitBookingAddressViewModel;\r\n // console.log (\"allowing free addresses: \" + result.allowFreeAddresses);\r\n // console.log(\"response has addresses \" + result.addresses.length);\r\n state.passengerPlacesInfo = result;\r\n return result;\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n console.warn(\"[Timit] Encountered error when fetching passenger places: \" + error);\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n\r\n .post({\r\n action: \"cancelTrips\",\r\n property: \"cancelTrips\",\r\n path: ({passengerId}) => (\"/\" + passengerId + \"/trips/cancel\"),\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n // console.log(\"succesully called cancel trips\");\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n // console.log(\"encountered error when cancelling trips: \" + error);\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n\r\n .post({\r\n action: \"createTransportationPermission\",\r\n property: \"createTransportationPermission\",\r\n path: ({ passengerId, transportationPermissionId }) => (\"/\" + passengerId + \"/transportationPermission\"),\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n const transportationPermission: TransportationPermission = new TransportationPermission(payload.data);\r\n const transportationPermissionInfo: TransportationPermissionInfo = state.transportationPermissionInfos\r\n .find(qi => \r\n qi.timitPassengerId === transportationPermission.timitPassengerId && \r\n qi.movitInstanceId === transportationPermission.movitInstanceId\r\n )\r\n const transportationPermissionIndex = transportationPermissionInfo.permissions.findIndex(\r\n q => \r\n q.id === transportationPermission.id \r\n // && \r\n // q.movitInstanceId === transportationPermission.movitInstanceId\r\n );\r\n if (transportationPermissionIndex > -1) {\r\n // transportationPermission already exists, update props\r\n Object.assign(\r\n transportationPermissionInfo.permissions[transportationPermissionIndex],\r\n transportationPermission);\r\n } else {\r\n // transportationPermission does not exist, push it\r\n transportationPermissionInfo.permissions.push(transportationPermission);\r\n }\r\n return transportationPermission;\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .put({\r\n action: \"updateTransportationPermission\",\r\n property: \"updateTransportationPermission\",\r\n path: ({ passengerId, transportationPermissionId }) => \r\n (\"/\" + passengerId + \"/transportationPermission/\" + transportationPermissionId),\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n const transportationPermission: TransportationPermission = new TransportationPermission(payload.data);\r\n const transportationPermissionInfo: TransportationPermissionInfo = state.transportationPermissionInfos\r\n .find(qi => \r\n qi.timitPassengerId === transportationPermission.timitPassengerId\r\n // && \r\n // qi.movitInstanceId === transportationPermission.movitInstanceId\r\n )\r\n const transportationPermissionIndex = transportationPermissionInfo.permissions.findIndex(q => \r\n q.id === transportationPermission.id \r\n // && \r\n // q.movitInstanceId === transportationPermission.movitInstanceId\r\n );\r\n if (transportationPermissionIndex > -1) {\r\n // transportationPermission already exists, update props\r\n console.log(transportationPermission)\r\n Object.assign(\r\n transportationPermissionInfo.permissions[transportationPermissionIndex],\r\n transportationPermission);\r\n } else {\r\n // transportationPermission does not exist, push it\r\n transportationPermissionInfo.permissions.push(transportationPermission);\r\n }\r\n return transportationPermission;\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .delete({\r\n action: \"deleteTransportationPermission\",\r\n property: \"deleteTransportationPermission\",\r\n path: ({ passengerId, transportationPermissionId }) => \r\n (\"/\" + passengerId + \"/transportationPermission/\" + transportationPermissionId),\r\n onSuccess: (state: IPassengerState, payload, axios) => {\r\n const transportationPermission: TransportationPermission = new TransportationPermission(payload.data);\r\n const transportationPermissionInfo: TransportationPermissionInfo = state.transportationPermissionInfos\r\n .find(qi => \r\n qi.timitPassengerId === transportationPermission.timitPassengerId\r\n // && \r\n // qi.movitInstanceId === transportationPermission.movitInstanceId\r\n )\r\n const transportationPermissionIndex = transportationPermissionInfo.permissions.findIndex(q => \r\n q.id === transportationPermission.id && \r\n q.movitInstanceId === transportationPermission.movitInstanceId\r\n );\r\n if (transportationPermissionIndex > -1) {\r\n // transportationPermission exists, delete its\r\n transportationPermissionInfo.permissions.splice(transportationPermissionIndex, 1);\r\n } else {\r\n // do nothing\r\n }\r\n return transportationPermission;\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n\r\nconst getters = {\r\n passengerOrganizationId: (state: IPassengerState, getters: any, rootState: any, rootGetters: any) => (passengerId: string, destinationIds: number[] = []) => {\r\n const id = parseInt(passengerId, 10);\r\n if (isNaN(id)) {\r\n return null;\r\n }\r\n\r\n if (id == 0) {\r\n const destinationId = destinationIds.find(x => x);\r\n if (!destinationId) {\r\n return null;\r\n }\r\n const destination: Destination = rootState.destination.destinations.find(d => d.id === destinationId);\r\n if (!destination) {\r\n return null;\r\n }\r\n\r\n return destination.organizationId || null;\r\n }\r\n\r\n const passenger = rootGetters[\"passenger/findPassengerById\"](id);\r\n if (passenger) {\r\n return passenger.organizationId;\r\n }\r\n return null;\r\n },\r\n findPassengerById: (state: IPassengerState, getters: any, rootState: any) => (passengerId: string) => {\r\n const id = parseInt(passengerId, 10);\r\n if (isNaN(id)) {\r\n return null;\r\n }\r\n const collections = [\r\n state.paginatedPassengers,\r\n state.passenger ? [state.passenger] : []\r\n ]\r\n for(const collection of collections){\r\n const passenger = collection.find(p => p.id === id);\r\n if (passenger){\r\n return passenger;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n\r\nconst handlePassengerResponse = (state: IPassengerState, payload: any, deleteLocal: boolean = false) => {\r\n const passenger = new Passenger(payload.data);\r\n if (deleteLocal){\r\n state.passenger = null;\r\n return passenger;\r\n }\r\n if (state.passenger && state.passenger.id === passenger.id) {\r\n // passenger already exists, update props\r\n Object.assign(state.passenger, passenger);\r\n } else {\r\n // passenger does not exist, push it\r\n state.passenger = passenger;\r\n }\r\n return passenger;\r\n}\r\n\r\nconst passengerStore = passengerApi.getStore();\r\n(passengerStore as any).namespaced = true;\r\n(passengerStore as any).getters = getters;\r\n\r\npassengerStore.actions.addPassenger = (context, value: Passenger) => {\r\n context.commit(\"addPassenger\", value)\r\n}\r\n\r\npassengerStore.actions.replacePassenger = (context, value: Passenger) => {\r\n context.commit(\"replacePassenger\", value);\r\n}\r\n\r\npassengerStore.mutations.addPassenger = (state, value: Passenger) => {\r\n state.passengers.push(value);\r\n console.log({ addPassengerCommit: value, foundPassenger: state.passengers.find(p => p.id === value.id) });\r\n}\r\n\r\npassengerStore.mutations.replacePassenger = (state, value: Passenger) => {\r\n const passengerIndex = state.passengers.findIndex(p => p.id === value.id);\r\n if (passengerIndex > -1) {\r\n state.passengers.splice(passengerIndex, 1, value);\r\n }\r\n}\r\n\r\npassengerStore.mutations.changeShowActivePassengers = (state, value: boolean) => {\r\n localStorage.setItem('passengerListFilterInActive', value ? 'true' : 'false');\r\n state.showOnlyActivePassengers = value;\r\n}\r\n\r\npassengerStore.mutations.setHasSsnToPassenger = (state: IPassengerState, { passengerId, ssn }: { passengerId: number, ssn: string | null }) => {\r\n if (state.passenger && state.passenger.id === passengerId) {\r\n console.log({HasSsn: !!ssn });\r\n state.passenger.hasSsn = !!ssn\r\n }\r\n}\r\n\r\npassengerStore.mutations.resetSelectedPassenger = (state) => {\r\n state.passenger = null;\r\n}\r\n\r\nexport default passengerStore;\r\n","export class Destination {\r\n \r\n // TODO: int, not number\r\n id: number;\r\n alias: string;\r\n address: string;\r\n postalCode: string;\r\n city: string;\r\n latitude: string;\r\n longitude: string;\r\n deleted: boolean;\r\n isHome: boolean;\r\n priceArea: number;\r\n movitInstanceId: number;\r\n movitInstanceName: string;\r\n priceCategoryIds: number[];\r\n favoritePlacesListType: string = null;\r\n organizationId?: string = '';\r\n\r\n constructor(options) {\r\n this.id = options ? options.id : 0;\r\n this.alias = options ? options.alias : null;\r\n this.city = options ? options.city : null;\r\n this.address = options ? options.address : null;\r\n this.postalCode = options ? options.postalCode : null;\r\n this.latitude = options ? options.latitude : null;\r\n this.longitude = options ? options.longitude : null;\r\n this.deleted = options ? options.deleted : false; \r\n this.isHome = options ? options.isHome : false;\r\n this.priceArea = options ? options.priceArea : 0,\r\n this.movitInstanceId = options ? options.movitInstanceId : \"\";\r\n this.movitInstanceName = options ? options.movitInstanceName : \"\";\r\n this.priceCategoryIds = options ? options.priceCategoryIds : [];\r\n this.favoritePlacesListType = options && options.favoritePlacesListType ? options.favoritePlacesListType : null;\r\n this.organizationId = options && options.organizationId ? options.organizationId : null;\r\n }\r\n\r\n get aliasAndMovitInstanceName(){\r\n return this.alias + ' (' + this.movitInstanceName + ')';\r\n }\r\n\r\n get hasPriceCategories(){\r\n return this.priceCategoryIds && this.priceCategoryIds.length > 0 && this.priceCategoryIds[0] > 0;\r\n }\r\n\r\n get bookingEnabled(){\r\n return this.hasPriceCategories;\r\n }\r\n\r\n}\r\n\r\nexport default Destination;\r\n","import Vue from \"vue\";\r\nimport Vapi from \"vuex-rest-api\";\r\nimport Destination from \"../models/Destination\";\r\nimport AppEvents from \"@/AppEvents\";\r\nimport TransportationPermission from \"../models/TransportationPermission\";\r\n\r\ninterface IDestinationState {\r\n destinations: Destination[];\r\n transportPermissions: TransportationPermission[];\r\n}\r\n\r\nconst destinationApi = new Vapi({\r\n baseURL: process.env.VUE_APP_API_HOST + \"/api/Destination\",\r\n state: {\r\n destinations: [],\r\n transportPermissions: []\r\n }\r\n})\r\n .get({\r\n action: \"getAllDestinations\",\r\n property: \"destinations\",\r\n path: \"/\",\r\n onSuccess: (state: IDestinationState, payload, axios) => {\r\n state.destinations = payload.data.map(s => new Destination(s));\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .get({\r\n action: \"getDestinationById\",\r\n property: \"destination\",\r\n path: ({ id }) => \"/\" + id,\r\n onSuccess: (state: IDestinationState, payload, axios) => {\r\n // console.log(\"createDestination onSuccess\", state, payload.data);\r\n const destination = new Destination(payload.data);\r\n const destinationIndex = state.destinations.findIndex(\r\n p => p.id === destination.id\r\n );\r\n if (destinationIndex > -1) {\r\n // destination already exists, update props\r\n Object.assign(state.destinations[destinationIndex], destination);\r\n } else {\r\n // destination does not exist, push it\r\n state.destinations.push(destination);\r\n }\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .get({\r\n action: \"getTransportPermissions\",\r\n property: \"destinations\",\r\n path: ({ destinationId }) =>\r\n \"/\" + destinationId + \"/transportationpermissions\",\r\n onSuccess: (state: IDestinationState, payload, axios) => {\r\n // console.log(\"createDestination onSuccess\", state, payload.data);\r\n state.transportPermissions = [];\r\n state.transportPermissions = payload.data.map(d => new TransportationPermission(d));\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .post({\r\n action: \"createDestination\",\r\n property: \"destination\",\r\n path: \"/\",\r\n onSuccess: (state: IDestinationState, payload, axios) => {\r\n // console.log(\"createDestination onSuccess\", state, payload.data);\r\n const destination = new Destination(payload.data);\r\n // destination does not exist, push it\r\n state.destinations.push(destination);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .put({\r\n action: \"updateDestination\",\r\n property: \"destination\",\r\n path: ({ id }) => \"/\" + id,\r\n onSuccess: (state: IDestinationState, payload, axios) => {\r\n // console.log(\"createDestination onSuccess\", state, payload.data);\r\n const destination = new Destination(payload.data);\r\n const destinationIndex = state.destinations.findIndex(\r\n p => p.id === destination.id\r\n );\r\n // destination already exists, update props\r\n Object.assign(state.destinations[destinationIndex], destination);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .delete({\r\n action: \"deleteDestination\",\r\n property: \"destination\",\r\n path: ({ id }) => \"/\" + id,\r\n onSuccess: (state: IDestinationState, payload, axios) => {\r\n // console.log(\"deleteDestination onSuccess\", state, payload.data);\r\n const destination = new Destination(payload.data);\r\n const destinationIndex = state.destinations.findIndex(\r\n p => p.id === destination.id\r\n );\r\n state.destinations.splice(destinationIndex, 1);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .put({\r\n action: \"undeleteDestination\",\r\n property: \"destination\",\r\n path: ({ id }) => \"/undelete/\" + id,\r\n onSuccess: (state: IDestinationState, payload, axios) => {\r\n // console.log(\"undeleteDestination onSuccess\", state, payload.data);\r\n const destination = new Destination(payload.data);\r\n const destinationIndex = state.destinations.findIndex(\r\n p => p.id === destination.id\r\n );\r\n if (destinationIndex > -1) {\r\n // destination already exists, update props\r\n Object.assign(state.destinations[destinationIndex], destination);\r\n } else {\r\n // destination does not exist, push it\r\n state.destinations.push(destination);\r\n }\r\n },\r\n onError: (state: IDestinationState, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n });\r\n\r\nconst destinationStore = destinationApi.getStore();\r\n(destinationStore as any).namespaced = true;\r\n\r\ndestinationStore.mutations.addDestination = (state, value: Destination) => {\r\n state.destinations.push(value);\r\n (state.destinations as Destination[]).sort((a, b) => a.alias.localeCompare(b.alias));\r\n}\r\n\r\nexport default destinationStore;\r\n","import Vapi from \"vuex-rest-api\"\r\nimport Ride from \"../models/Ride\"\r\nimport { TimeOfDay } from \"../models/TimeOfDay\";\r\nimport { Guid } from 'guid-typescript';\r\nimport AppEvents from '@/AppEvents';\r\n\r\nconst rideApi = new Vapi({\r\n baseURL: process.env.VUE_APP_API_HOST + \"/api/ride\",\r\n state: {\r\n rides: [],\r\n }\r\n})\r\n .get({\r\n action: \"getAllRides\",\r\n property: \"rides\",\r\n path: \"/\",\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"getAllRides onSuccess\", state, payload.data);\r\n state.rides = payload.data.map(s => Ride.fromApi(s));\r\n // console.log(\"state.rides is now:\", state.rides);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .get({\r\n action: \"getDestinationRides\",\r\n property: \"rides\",\r\n path: ({ destinationId }) => (\"/destination/\" + destinationId),\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"getDestinationRides onSuccess\", state, payload.data);\r\n const apiRides: any[] = payload.data;\r\n apiRides.forEach((apiRide: any) => {\r\n const newRide = Ride.fromApi(apiRide);\r\n const index: number = state.rides.findIndex(r => r.id === newRide.id);\r\n if (index > -1){\r\n // arrivalDeparture already exists, update props\r\n Object.assign(state.rides[index], newRide);\r\n } else {\r\n // arrivalDeparture does not exists, push it to the store\r\n state.rides.push(newRide);\r\n }\r\n });\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .get({\r\n action: \"getRideById\",\r\n property: \"ride\",\r\n path: ({ id }) => (\"/\" + id),\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"updateRide onSuccess\", state, payload.data);\r\n const ride: Ride = Ride.fromApi(payload.data);\r\n const rideIndex: number = state.rides.findIndex(p => p.id === ride.id);\r\n if (rideIndex > -1) {\r\n // ride already exists, update props\r\n Object.assign(state.rides[rideIndex], ride);\r\n } else {\r\n // ride doesn't exist, push it to rides\r\n state.rides.push(ride);\r\n }\r\n // console.log(\"state.rides is now:\", state.rides);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .post({\r\n action: \"createRide\",\r\n property: \"ride\",\r\n path: \"/\",\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"createRide onSuccess\", state, payload.data);\r\n state.rides.push(Ride.fromApi(payload.data));\r\n // console.log(\"state.rides is now:\", state.rides);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .post({\r\n action: \"createRides\",\r\n property: \"rides\",\r\n path: \"/createMany\",\r\n beforeRequest: (state, payload) => {\r\n const tempApiRides: any[] = payload.data;\r\n tempApiRides.forEach((tempApiride: any) => {\r\n tempApiride.creatingId = Guid.create().toString();\r\n tempApiride.creating = true;\r\n });\r\n const tempRides: Ride[] = tempApiRides.map(apiRide => Ride.fromApi(apiRide)); \r\n state.rides.push(...tempRides);\r\n },\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"createRides onSuccess\", state, payload.data);\r\n const newApiRides: any[] = payload.data;\r\n const newRides: Ride[] = newApiRides.map(apiRide => Ride.fromApi(apiRide)); \r\n newRides.forEach((createdRide: Ride) => {\r\n const rideIndex: number = state.rides\r\n .findIndex((r: Ride) => r.creatingId && r.creatingId === createdRide.creatingId);\r\n if (rideIndex > -1){\r\n // ride already exists, update props\r\n Object.assign(state.rides[rideIndex], createdRide);\r\n const ride: Ride = state.rides[rideIndex];\r\n delete ride.creatingId;\r\n ride.creating = false;\r\n return;\r\n }\r\n });\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .post({\r\n action: \"createOrUpdateRides\",\r\n property: \"rides\",\r\n path: \"/createOrUpdateMany\",\r\n beforeRequest: (state, payload) => {\r\n const tempApiRides: any[] = payload.data;\r\n const tempRidesCreating: Ride[] = tempApiRides\r\n .filter(r => r.creating)\r\n .map(apiRide => Ride.fromApi(apiRide)); \r\n state.rides.push(...tempRidesCreating);\r\n },\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"createRides onSuccess\", state, payload.data);\r\n const newApiRides: any[] = payload.data;\r\n const newRides: Ride[] = newApiRides.map(apiRide => Ride.fromApi(apiRide)); \r\n newRides.forEach((createdOrUpdatedRide: Ride) => {\r\n // Update rides in state with updated rides from API\r\n const rideIndex: number = state.rides\r\n .findIndex(r => \r\n (r.creatingId && r.creatingId === createdOrUpdatedRide.creatingId)\r\n || r.id === createdOrUpdatedRide.id);\r\n if (rideIndex > -1){\r\n // ride already exists, update props\r\n Object.assign(state.rides[rideIndex], createdOrUpdatedRide);\r\n const ride = state.rides[rideIndex];\r\n delete ride.creatingId;\r\n ride.creating = false;\r\n ride.updating = false;\r\n return;\r\n }\r\n });\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .put({\r\n action: \"updateRide\",\r\n property: \"ride\",\r\n path: ({ id }) => (\"/\" + id),\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"updateRide onSuccess\", state, payload.data);\r\n const ride: Ride = Ride.fromApi(payload.data);\r\n const rideIndex: number = state.rides.findIndex(p => p.id === ride.id);\r\n\r\n // ride already exists, update props\r\n Object.assign(state.rides[rideIndex], ride);\r\n ride.updating = false;\r\n // console.log(\"state.rides is now:\", state.rides);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .post({\r\n action: \"updateRides\",\r\n property: \"rides\",\r\n path: \"/updateMany\",\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"updateRides onSuccess\", state, payload.data);\r\n // console.log(\"state.rides is before:\", state.rides);\r\n // rides already exist, update props\r\n const updatedRides: Ride[] = payload.data.map(s => Ride.fromApi(s));\r\n updatedRides.forEach((updatedRide: Ride) => {\r\n const rideIndex: number = state.rides.findIndex(p => p.id === updatedRide.id);\r\n // ride already exists, update props\r\n Object.assign(state.rides[rideIndex], updatedRide);\r\n const ride: Ride = state.rides[rideIndex];\r\n ride.updating = false;\r\n });\r\n // console.log(\"state.rides is now:\", state.rides);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .delete({\r\n action: \"deleteRide\",\r\n property: \"ride\",\r\n path: ({ id }) => (\"/\" + id),\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"deleteRide onSuccess\", state, payload.data);\r\n // TODO: We should be receiving an \"ok, deleted id [id_here]\" response\r\n // Now, we should find the deleted ride locally and delete it from state.rides\r\n const rideId: Guid = payload.data;\r\n const rideIndex: number = state.rides.findIndex(p => p.id === rideId);\r\n state.rides.splice(rideIndex, 1);\r\n // console.log(\"state.rides is now:\", state.rides);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n // Note: This could be .delete, but axios does not allow body in HttpDelete requests\r\n .post({\r\n action: \"deleteRides\",\r\n property: \"rides\",\r\n path: \"/deleteMany\",\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"deleteRides onSuccess\", state, payload.data);\r\n // TODO: We should be receiving an \"ok, deleted ids [id_here]\" response\r\n // Now, we should find the deleted rides locally and delete it from state.rides\r\n const rideIds: Guid[] = payload.data;\r\n rideIds.forEach(rideId => {\r\n const rideIndex: number = state.rides.findIndex(p => p.id === rideId);\r\n state.rides.splice(rideIndex, 1);\r\n });\r\n \r\n // console.log(\"state.rides is now:\", state.rides);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n\r\nconst rideStore = rideApi.getStore();\r\n(rideStore as any).namespaced = true;\r\n\r\nexport default rideStore;\r\n","import Vapi from \"vuex-rest-api\"\r\nimport ArrivalDeparture from \"@/components/ArrivalsDepartures/models/ArrivalDeparture\"\r\nimport AppEvents from '@/AppEvents';\r\n\r\nconst arrivalDepartureApi = new Vapi({\r\n baseURL: process.env.VUE_APP_API_HOST + \"/api/trip\",\r\n state: {\r\n arrivalsDepartures: [],\r\n }\r\n})\r\n.get({\r\n action: \"getAllArrivalDepartures\",\r\n property: \"arrivalsDepartures\",\r\n path: \"/arrivalDepartures\",\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"getAllArrivalDepartures onSuccess\", state, payload.data);\r\n state.arrivalsDepartures = payload.data.map(s => ArrivalDeparture.fromApi(s));\r\n // console.log(\"state.arrivalsDepartures is now:\", state.arrivalsDepartures);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n})\r\n.get({\r\n action: \"getDestinationArrivalDepartures\",\r\n property: \"arrivalsDepartures\",\r\n path: ({ destinationId, refreshCache }) => \r\n (\"/arrivalDepartures/destination/\" + destinationId + (refreshCache ? '?refreshCache=true' : '')),\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"getDestinationArrivalDepartures onSuccess\", state, payload.data);\r\n const apiADs: any[] = payload.data;\r\n apiADs.forEach((apiAD: any) => {\r\n const newAD = ArrivalDeparture.fromApi(apiAD);\r\n const index: number = state.arrivalsDepartures.findIndex((AD: ArrivalDeparture) => AD.id === newAD.id);\r\n if (index > -1){\r\n // arrivalDeparture already exists, update props\r\n Object.assign(state.arrivalsDepartures[index], newAD);\r\n } else {\r\n // arrivalDeparture does not exists, push it to the store\r\n state.arrivalsDepartures.push(newAD);\r\n }\r\n });\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n})\r\n.put({\r\n action: \"setComplete\",\r\n property: \"arrivalDepartureCompleted\",\r\n path: \"/arrivalDepartures/setComplete\",\r\n onSuccess: (state, payload, axios) => {\r\n const arrivalDeparture: ArrivalDeparture = ArrivalDeparture.fromApi(payload.data);\r\n const index: number = state.arrivalsDepartures.findIndex((AD: ArrivalDeparture) => \r\n AD.tripId === arrivalDeparture.tripId && \r\n AD.arrivalDepartureType === arrivalDeparture.arrivalDepartureType\r\n );\r\n if (index === -1){\r\n throw new Error(\"There was a problem while setting the arrival/departure as complete.\")\r\n }\r\n Object.assign(state.arrivalsDepartures[index], arrivalDeparture);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n})\r\n.put({\r\n action: \"setIncomplete\",\r\n property: \"arrivalDepartureIncomplete\",\r\n path: \"/arrivalDepartures/setIncomplete\",\r\n onSuccess: (state, payload, axios) => {\r\n const arrivalDeparture: ArrivalDeparture = ArrivalDeparture.fromApi(payload.data);\r\n const index: number = state.arrivalsDepartures.findIndex((AD: ArrivalDeparture) => \r\n AD.tripId === arrivalDeparture.tripId && \r\n AD.arrivalDepartureType === arrivalDeparture.arrivalDepartureType\r\n );\r\n if (index === -1){\r\n throw new Error(\"There was a problem while setting the arrival/departure as incomplete.\")\r\n }\r\n Object.assign(state.arrivalsDepartures[index], arrivalDeparture);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n})\r\n.put({\r\n action: \"cancel\",\r\n property: \"arrivalDepartureCancelled\",\r\n path: \"/arrivalDepartures/cancel\",\r\n onSuccess: (state, payload, axios) => {\r\n const arrivalDeparture: ArrivalDeparture = ArrivalDeparture.fromApi(payload.data);\r\n const index: number = state.arrivalsDepartures.findIndex((AD: ArrivalDeparture) => \r\n AD.tripId === arrivalDeparture.tripId && \r\n AD.arrivalDepartureType === arrivalDeparture.arrivalDepartureType\r\n );\r\n if (index === -1){\r\n throw new Error(\"There was a problem while sending the arrival/departure cancellation request'.\")\r\n }\r\n Object.assign(state.arrivalsDepartures[index], arrivalDeparture);\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n})\r\n \r\nconst arrivalDepartureStore = arrivalDepartureApi.getStore();\r\n(arrivalDepartureStore as any).namespaced = true;\r\n\r\nexport default arrivalDepartureStore;\r\n","import Vapi from \"vuex-rest-api\"\r\nimport Booking from \"@/components/Booking/models/Booking\"\r\nimport AppEvents from '@/AppEvents';\r\nimport IPriceEstimate from '../models/IPriceEstimate';\r\n\r\nconst bookingApi = new Vapi({\r\n baseURL: process.env.VUE_APP_API_HOST + \"/api/booking\",\r\n state: {\r\n bookings: [],\r\n bookingPriceEstimate: null,\r\n selectedBooking: 0\r\n }\r\n})\r\n .get({\r\n action: \"getDestinationBookings\",\r\n property: \"bookings\",\r\n path: ({ destinationId }) => (\"/destination/\" + destinationId),\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"getDestinationBookings onSuccess\", state, payload.data);\r\n const apiBookings: any[] = payload.data;\r\n apiBookings.forEach((apiBooking: any) => {\r\n const newBooking = Booking.fromApiBookingDetailsViewModel(apiBooking, );\r\n const index: number = state.bookings.findIndex(t => t.id === newBooking.id);\r\n if (index > -1){\r\n // booking already exists, update props\r\n Object.assign(state.bookings[index], newBooking);\r\n } else {\r\n // booking does not exists, push it to the store\r\n state.bookings.push(newBooking);\r\n }\r\n });\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .get({\r\n action: \"getBookingById\",\r\n property: \"booking\",\r\n path: ({ destinationId, id }) => (\"/destination/\" + destinationId + \"/\" + id),\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"updateBooking onSuccess\", state, payload.data);\r\n const booking = Booking.fromApiBookingDetailsViewModel(payload.data);\r\n const bookingIndex = state.bookings.findIndex(p => p.id === booking.id);\r\n if (bookingIndex > -1) {\r\n // Booking already exists, update props\r\n Object.assign(state.bookings[bookingIndex], booking);\r\n } else {\r\n // Booking does not exist, push it to state.bookings\r\n state.bookings.push(booking);\r\n }\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .post({\r\n action: \"getPriceEstimate\",\r\n property: \"estimate\",\r\n path: ({ destinationId }) => (\"/destination/\" + destinationId + \"/getEstimate\"),\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"getEstimate onSuccess\", state, payload.data);\r\n const estimate: IPriceEstimate = payload.data;\r\n state.bookingPriceEstimate = estimate\r\n // console.log(\"state.bookingPriceEstimate is now:\", state.bookingPriceEstimate);\r\n return estimate;\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .post({\r\n action: \"createBooking\",\r\n property: \"booking\",\r\n path: ({ destinationId }) => (\"/destination/\" + destinationId),\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"createBooking onSuccess\", state, payload.data);\r\n const booking = Booking.fromApiBookingDetailsViewModel(payload.data);\r\n state.bookings.push(booking);\r\n // console.log(\"state.bookings is now:\", state.bookings);\r\n return booking;\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .put({\r\n action: \"updateBooking\",\r\n property: \"booking\",\r\n path: ({ destinationId }) => (\"/destination/\" + destinationId),\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"updateBooking onSuccess\", state, payload.data);\r\n const booking = Booking.fromApiBookingDetailsViewModel(payload.data);\r\n const bookingIndex = state.bookings.findIndex(p => p.id === booking.id);\r\n // Booking already exists, update props\r\n if (bookingIndex > -1){\r\n Object.assign(state.bookings[bookingIndex], booking);\r\n } else {\r\n console.error(\"Failed to update local booking after response from API to an update request\");\r\n }\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n .delete({\r\n action: \"deleteBooking\",\r\n property: \"booking\",\r\n path: ({ destinationId, id }) => (\"/destination/\" + destinationId + \"/\" + id),\r\n onSuccess: (state, payload, axios) => {\r\n // console.log(\"deleteBooking onSuccess\", state, payload.data);\r\n const booking = Booking.fromApiBookingDetailsViewModel(payload.data);\r\n const bookingIndex = state.bookings.findIndex(p => p.id === booking.id);\r\n // Booking already exists, update props\r\n if (bookingIndex > -1){\r\n Object.assign(state.bookings[bookingIndex], booking);\r\n } else {\r\n console.error(\"Failed to update local booking after response from API to an cancel request\");\r\n }\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n }\r\n })\r\n\r\nconst bookingStore = bookingApi.getStore();\r\n\r\n// add selectedBooking to the store\r\n(bookingStore.state as any).selectedBooking = 0\r\nbookingStore.mutations.setSelectedBooking = (state, value) => {\r\n state.selectedBooking = value;\r\n}\r\nbookingStore.actions.setSelectedBooking = (context, value) => {\r\n context.commit(\"setSelectedBooking\", value)\r\n}\r\n\r\n(bookingStore as any).namespaced = true;\r\n\r\nexport default bookingStore;\r\n","import Destination from '@/components/Passenger/models/Destination';\r\nimport { AuthTenant, IApiAuthTenant } from './AuthTenant';\r\n\r\ninterface IApiOrganization {\r\n id: string;\r\n name: string;\r\n ptpDeductibleTypeIds: string;\r\n showSsn: boolean;\r\n requirePtpByDefault: boolean;\r\n savePtpAsDraftByDefault: boolean;\r\n ptpDeductiblePaymentBillableAsDefault: boolean;\r\n admins: string[];\r\n destinations: any[];\r\n authTenants: IApiAuthTenant[];\r\n}\r\n\r\nexport class Organization {\r\n id: string;\r\n name: string;\r\n ptpDeductibleTypeIds: string;\r\n showSsn: boolean;\r\n requirePtpByDefault: boolean;\r\n savePtpAsDraftByDefault: boolean;\r\n ptpDeductiblePaymentBillableAsDefault: boolean;\r\n administratorIds: string[];\r\n destinations: Destination[];\r\n authTenants: AuthTenant[] = [];\r\n ptpNames: string[] = [];\r\n costCenterNames: string[] = [];\r\n\r\n public static fromApi(model: IApiOrganization): Organization {\r\n const organization = new Organization();\r\n organization.id = model.id;\r\n organization.name = model.name;\r\n organization.ptpDeductibleTypeIds = model.ptpDeductibleTypeIds;\r\n organization.showSsn = model.showSsn;\r\n organization.requirePtpByDefault = model.requirePtpByDefault;\r\n organization.savePtpAsDraftByDefault = model.savePtpAsDraftByDefault;\r\n organization.ptpDeductiblePaymentBillableAsDefault = model.ptpDeductiblePaymentBillableAsDefault;\r\n organization.administratorIds = model.admins;\r\n organization.destinations = model.destinations.map(d => new Destination(d));\r\n organization.destinations.sort((d1, d2) => (d1.alias || '').localeCompare((d2.alias || '')));\r\n organization.authTenants = model.authTenants ? model.authTenants.map(a => AuthTenant.fromApi(a)) : [];\r\n organization.ptpNames = [];\r\n organization.costCenterNames = [];\r\n return organization;\r\n }\r\n}\r\n","import Vapi from 'vuex-rest-api';\r\nimport AppEvents from '@/AppEvents';\r\nimport User from '@/models/User';\r\nimport { Organization } from '@/models/Organization';\r\nimport router from '@/router';\r\nimport Destination from '@/components/Passenger/models/Destination';\r\nimport { PassengerGroup } from '@/models/PassengerGroup';\r\nimport PassengerGroupPassenger from '@/models/PassengerGroupPassenger';\r\nimport Passenger from '@/components/Passenger/models/Passenger';\r\nimport { IPassengerGroupWithPassengers } from '@/typings/timit';\r\nimport { AuthTenant } from '@/models/AuthTenant';\r\n\r\ninterface IOrganizationState {\r\n organizations: Organization[];\r\n users: User[],\r\n passengerGroups: PassengerGroup[];\r\n selectedPassengerGroup: IPassengerGroupWithPassengers | null;\r\n}\r\n\r\nconst organizationApi = new Vapi({\r\n // baseURL: process.env.VUE_APP_API_HOST + '/api/organization',\r\n baseURL: process.env.VUE_APP_API_HOST + '/api/',\r\n state: {\r\n organizations: [],\r\n users: [],\r\n passengerGroups: [],\r\n selectedPassengerGroup: null,\r\n }\r\n}).get({\r\n action: 'getOrganizations',\r\n path: () => `organization`,\r\n onSuccess: (state, payload, axios) => {\r\n state.organizations = payload.data.map(p => Organization.fromApi(p));\r\n return state.organizations;\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error);\r\n },\r\n}).get({\r\n action: 'getUsers',\r\n path: ({ id }) => `organization/${id}/users`,\r\n onSuccess: (state, payload, axios) => state.users = payload.data.map(p => User.fromApi(p)),\r\n onError: (state, error, axios) => AppEvents.handleApiError(error),\r\n}).get({\r\n action: 'getCostcenters',\r\n path: ({ id }) => `organization/${id}/costcenter`,\r\n onSuccess: (state, payload, axios) => payload.data,\r\n onError: (state, error, axios) => AppEvents.handleApiError(error),\r\n}).get({\r\n action: 'getPassengerGroups',\r\n path: ({ id }) => `organization/${id}/passengergroups`,\r\n onSuccess: (state, payload, axios) => {\r\n // state.passengerGroups = payload.data.map(p => PassengerGroup.fromApi(p))\r\n state.passengerGroups = payload.data;\r\n },\r\n onError: (state, error, axios) => AppEvents.handleApiError(error),\r\n}).get({\r\n action: 'getPassengerGroupWithPassengers',\r\n path: ({ id }) => `passengergroup/${id}/withpassengers`,\r\n onSuccess: (state: IOrganizationState, payload, axios) => {\r\n state.selectedPassengerGroup = payload.data;\r\n return state.selectedPassengerGroup;\r\n },\r\n onError: (state, error, axios) => AppEvents.handleApiError(error),\r\n}).get({\r\n action: 'getPtpNamesForOrganization',\r\n path: ({ id }) => `organization/${id}/passengerTranportationPermissionNames`,\r\n onSuccess: (state: IOrganizationState, payload, axios, data) => {\r\n const orgId = data.params.id;\r\n const target = state.organizations.find(o => o.id === orgId);\r\n\r\n if (target) {\r\n target.ptpNames = payload.data;\r\n }\r\n\r\n return payload.data;\r\n },\r\n onError: (state, error, axios) => AppEvents.handleApiError(error)\r\n}).get({\r\n action: 'getCostCentersForOrganization',\r\n path: ({ id }) => `organization/${id}/costCenters`,\r\n onSuccess: (state: IOrganizationState, payload, axios, data) => {\r\n const orgId = data.params.id;\r\n const target = state.organizations.find(o => o.id === orgId);\r\n \r\n if (target) {\r\n target.costCenterNames = payload.data;\r\n }\r\n\r\n return payload.data;\r\n },\r\n onError: (state, error, axios) => AppEvents.handleApiError(error)\r\n}).post({\r\n action: 'createPassengerGroup',\r\n property: 'createPassengerGroup',\r\n path: 'passengerGroup',\r\n onSuccess: (state, payload, axios) => {\r\n state.passengerGroups.push(payload.data)\r\n },\r\n onError: (state: any, error: any, axios: any) => AppEvents.handleApiError(error),\r\n})\r\n.post({\r\n action: 'createPassengerGroupPassenger',\r\n property: 'createPassengerGroupPassenger',\r\n path: ({ id }) => `passengerGroup/${id}/passenger`,\r\n onSuccess: (state: IOrganizationState, payload, axios) => {\r\n const passenger = new Passenger(payload.data);\r\n if (state.selectedPassengerGroup) {\r\n state.selectedPassengerGroup.passengerGroupPassengers.push(passenger);\r\n }\r\n return passenger;\r\n },\r\n onError: (state: any, error: any, axios: any) => AppEvents.handleApiError(error),\r\n})\r\n.put({\r\n action: 'modifyPassengerGroupPassenger',\r\n property: 'createPassengerGroupPassenger',\r\n path: ({ id }) => `passengerGroup/${id}`,\r\n onSuccess: (state: IOrganizationState, payload, axios) => {\r\n const passenger = new Passenger(payload.data);\r\n if (state.selectedPassengerGroup) {\r\n const index = state.selectedPassengerGroup.passengerGroupPassengers.findIndex(p => p.id === passenger.id);\r\n if (index > -1) {\r\n state.selectedPassengerGroup.passengerGroupPassengers.splice(index, 1, passenger);\r\n }\r\n }\r\n return passenger;\r\n },\r\n onError: (state: any, error: any, axios: any) => AppEvents.handleApiError(error),\r\n})\r\n.post({\r\n action: 'addPassengerToPassengerGroup',\r\n property: 'addPassengerToPassengerGroup',\r\n path: `passengerGroup/addpassenger`,\r\n onSuccess: (state: IOrganizationState, payload, axios) => {\r\n const addedPassengers = payload.data.map(p => new Passenger(p));\r\n if (state.selectedPassengerGroup) {\r\n state.selectedPassengerGroup.passengerGroupPassengers = state.selectedPassengerGroup.passengerGroupPassengers\r\n .concat(addedPassengers);\r\n }\r\n },\r\n onError: (state: any, error: any, axios: any) => AppEvents.handleApiError(error), \r\n})\r\n.put({\r\n action: 'removePassengerFromPassengerGroup',\r\n property: 'removePassengerFromPassengerGroup',\r\n path: ({ id, passengerId }) => `passengerGroup/${id}/removepassenger/${passengerId}`,\r\n onSuccess: (state: IOrganizationState, payload, axios) => {\r\n // do nothing;\r\n },\r\n onError: (state: any, error: any, axios: any) => {\r\n AppEvents.handleApiError(error)\r\n }, \r\n})\r\n.put({\r\n action: 'removeUser',\r\n property: 'removeUser',\r\n path: ({ id }) => `organization/${id}/users/remove`,\r\n onSuccess: (state: IOrganizationState, payload, axios) => {\r\n const removedUser = User.fromApi(payload.data);\r\n const userIndex = state.users.findIndex(u => u.id === removedUser.id);\r\n if (userIndex >= 0) {\r\n state.users.splice(userIndex, 1, removedUser);\r\n }\r\n },\r\n onError: (state: any, error: any, axios: any) => AppEvents.handleApiError(error),\r\n})\r\n.post({\r\n action: 'inviteUser',\r\n property: 'inviteUser',\r\n path: 'organization/invite',\r\n onSuccess: (state, payload, axios) => {\r\n const user = User.fromApi(payload.data);\r\n const index = (state.users as User[]).findIndex(u => u.email === user.email);\r\n if (index >= 0) {\r\n state.users.splice(index, 1, user);\r\n } else {\r\n state.users.push(user);\r\n }\r\n },\r\n onError: (state: any, error: any, axios: any) => AppEvents.handleApiError(error),\r\n})\r\n.post({\r\n action: 'createDestinationForOrganization',\r\n property: 'createDestinationForOrganization',\r\n path: `organization/destination`,\r\n onSuccess: (state, payload, axios) => {\r\n const destination: Destination = new Destination(payload.data);\r\n \r\n const organization = (state.organizations as Organization[])\r\n .find(o => o.id === router.currentRoute.params.organizationId);\r\n\r\n organization.destinations.push(destination);\r\n return destination;\r\n },\r\n onError: (state: any, error: any, axios: any) => AppEvents.handleApiError(error),\r\n})\r\n.post({\r\n action: 'createAuthTenant',\r\n property: 'createAuthTenant',\r\n path: `organization/authTenant`,\r\n onSuccess: (state, payload, axios) => {\r\n const authTenant: AuthTenant = AuthTenant.fromApi(payload.data);\r\n delete payload.data;\r\n const organization = (state.organizations as Organization[])\r\n .find(o => o.id === router.currentRoute.params.organizationId);\r\n organization.authTenants.push(authTenant);\r\n return authTenant;\r\n },\r\n onError: (state: any, error: any, axios: any) => AppEvents.handleApiError(error),\r\n})\r\n.get({\r\n action: 'getFinvoice',\r\n property: 'getFinvoice',\r\n path: ({id, costcenterId, startDate, endDate}) => `organization/${id}/costcenter/${costcenterId}?startDate=${startDate}&endDate=${endDate}`,\r\n onSuccess: (state, payload, axios) => payload.data,\r\n onError: (state: any, error: any, axios: any) => AppEvents.handleApiError(error),\r\n})\r\n\r\nconst getters = {\r\n organizationPtpNames: (state: IOrganizationState) => (organizationId: string) => {\r\n const organization = state.organizations.find(o => o.id === organizationId);\r\n if (organization) {\r\n return organization.ptpNames;\r\n }\r\n return [];\r\n },\r\n organizationCostCenterNames: (state: IOrganizationState) => (organizationId: string) => {\r\n const organization = state.organizations.find(o => o.id === organizationId);\r\n if (organization) {\r\n return organization.costCenterNames;\r\n }\r\n return [];\r\n },\r\n organizationPtpDeductibleTypeIds: (state: IOrganizationState) => (organizationId: string) => {\r\n const organization = state.organizations.find(o => o.id === organizationId);\r\n if (organization) {\r\n return organization.ptpDeductibleTypeIds || '';\r\n }\r\n return '';\r\n },\r\n organizationRequirePtpByDefault: (state: IOrganizationState) => (organizationId: string) => {\r\n const organization = state.organizations.find(o => o.id === organizationId);\r\n if (organization) {\r\n return organization.requirePtpByDefault;\r\n }\r\n return false;\r\n },\r\n organizationSavePtpAsDraftByDefault: (state: IOrganizationState) => (organizationId: string) => {\r\n const organization = state.organizations.find(o => o.id === organizationId);\r\n if (organization) {\r\n return organization.savePtpAsDraftByDefault;\r\n }\r\n return true;\r\n },\r\n organizationPtpDeductiblePaymentBillableAsDefault: (state: IOrganizationState) => (organizationId: string) => {\r\n const organization = state.organizations.find(o => o.id === organizationId);\r\n if (organization) {\r\n return organization.ptpDeductiblePaymentBillableAsDefault;\r\n }\r\n return true;\r\n }\r\n};\r\n\r\nconst organizationStore = organizationApi.getStore();\r\n(organizationStore as any).namespaced = true;\r\n(organizationStore as any).getters = getters;\r\n\r\nexport default organizationStore;\r\n","\r\nexport interface IExcelSheetHeader {\r\n text: string;\r\n value: string;\r\n sortable: boolean;\r\n missingHeader: string;\r\n}\r\n\r\ninterface IImporterState {\r\n rowData: any[];\r\n excelSheetHeaders: IExcelSheetHeader[];\r\n}\r\n\r\nconst state: IImporterState = {\r\n rowData: [],\r\n excelSheetHeaders: [],\r\n}\r\n\r\nconst getters = {\r\n\r\n}\r\n\r\nconst mutations = {\r\n setExcelSheetHeaders: (importerState: IImporterState, headers: IExcelSheetHeader[]) => {\r\n state.excelSheetHeaders = headers;\r\n },\r\n setRowData: (importerState: IImporterState, rowData: any[]) => {\r\n state.rowData = rowData;\r\n },\r\n}\r\n\r\nconst actions = {\r\n\r\n}\r\n\r\nexport default {\r\n namespaced: true,\r\n state, \r\n getters,\r\n mutations,\r\n actions,\r\n}\r\n","import Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport appStore from './AppStore'\r\nimport userStore from './UserStore'\r\nimport authStore from './AuthStore'\r\nimport timetableStore from '../components/Timetable/store/TimetableStore';\r\nimport passengerStore from '../components/Passenger/store/PassengerStore';\r\nimport destinationStore from '../components/Passenger/store/DestinationStore';\r\nimport rideStore from '../components/Timetable/store/RideStore';\r\nimport vuexI18n from 'vuex-i18n';\r\nimport createPersistedState from 'vuex-persistedstate'\r\nimport arrivalDepartureStore from '@/components/ArrivalsDepartures/store/ArrivalDepartureStore';\r\nimport bookingStore from '@/components/Booking/store/BookingStore';\r\nimport organizationStore from './OrganizationStore';\r\nimport importerStore from '@/components/Importer/store/ImporterStore';\r\n\r\nconst getLocalStorageKey = () => {\r\n return \"timit-vuex-060-1\";\r\n}\r\n\r\nVue.use(Vuex)\r\n\r\nconst modules = {\r\n app: appStore as any,\r\n auth: authStore,\r\n user: userStore as any,\r\n timetable: timetableStore as any,\r\n ride: rideStore as any,\r\n passenger: passengerStore as any,\r\n destination: destinationStore as any,\r\n arrivalDeparture: arrivalDepartureStore as any,\r\n booking: bookingStore as any,\r\n organization: organizationStore as any,\r\n importer: importerStore as any,\r\n}\r\n\r\nconst getPersistedPaths = (mods) => {\r\n let paths = [];\r\n Object.keys(mods).forEach((modName) => {\r\n const modPaths = mods[modName].persist;\r\n if (modPaths){\r\n paths = paths.concat(modPaths.map(p => modName + \".\" + p));\r\n }\r\n }) \r\n return paths;\r\n // return [\r\n // 'user.showWeekends',\r\n // 'user.weekStartsOnSunday',\r\n // 'app.translateMode',\r\n // 'app.locale'\r\n // ] \r\n}\r\n\r\nconst store = new Vuex.Store({\r\n modules,\r\n plugins: [\r\n createPersistedState(\r\n {\r\n key: getLocalStorageKey(),\r\n paths: [\r\n ... getPersistedPaths(modules)\r\n ],\r\n }\r\n )]\r\n})\r\nexport default store;\r\n\r\nasync function initVuex() {\r\n\r\n Vue.use(vuexI18n.plugin, store,\r\n {\r\n moduleName: 'i18n',\r\n onTranslationNotFound(locale, key, def) {\r\n // TODO: Get rid of \"any\"\r\n const state = (store.state as any);\r\n if (state.i18n.translations.en) {\r\n // console.warn(`i18n :: Key '${key}' not found for locale '${locale}'`);\r\n if (state.i18n.translations.en[key]) {\r\n // console.warn(' nevermind, we have it in English already');\r\n } else {\r\n console.warn(\"[Timit] i18n:\", \"Key '\", key, \" not found for English, adding it ...\");\r\n\r\n state.i18n.translations.en[key] = def;\r\n store.dispatch(\"i18n/replaceLocale\", \r\n {\r\n locale: \"en\",\r\n translations: state.i18n.translations.en\r\n });\r\n // store.dispatch(\"incrementMissingTranslationCounter\", 1);\r\n }\r\n }\r\n }\r\n }\r\n );\r\n}\r\n\r\ninitVuex();\r\n","import Vue from 'vue';\r\nimport Router, { Route, RouteConfig } from 'vue-router';\r\nimport Routes from '@/Routes';\r\nimport store from '@/store';\r\nimport User, { PassengerGroupPermissionType } from './models/User';\r\nimport { RolePermission } from './models/Role';\r\nimport { PermissionEnum } from './models/DestinationRole';\r\nimport Passenger from './components/Passenger/models/Passenger';\r\n\r\nVue.use(Router);\r\n\r\nconst router = new Router({\r\n mode: 'hash',\r\n routes: Routes.routes,\r\n scrollBehavior: (to, from, savedPosition) => {\r\n if (savedPosition) {\r\n return savedPosition;\r\n // } \r\n // else if (to.hash) {\r\n // return {\r\n // selector: to.hash\r\n // }\r\n } else if (from.meta && from.meta.scrollTop === false) {\r\n return (to as any).position;\r\n } else {\r\n return { x: 0, y: 0 };\r\n }\r\n },\r\n});\r\n\r\nrouter.beforeEach(async (to, from, next) => {\r\n if (to.matched.some(route => !route.meta.allowAnonymous)) {\r\n // route does not allow anonymous, check if user is authenticated\r\n if (!store.getters['auth/isAuthenticated']) {\r\n // user is not authenticated, redirect\r\n next({\r\n name: Routes.signInRoute.name,\r\n query: { redirect: to.fullPath }\r\n })\r\n } else {\r\n // user is authenticated, proceed to next\r\n let me = (store.state as any).user.me as User;\r\n const destinationId = Number(to.params.destinationId);\r\n const redirectRoutes = [\r\n Routes.peopleRoute,\r\n Routes.timetableListRoute,\r\n Routes.arrivalsDeparturesRoute,\r\n Routes.aboutRoute\r\n ];\r\n\r\n // Route is not destination specific, proceed to next\r\n if (!destinationId) {\r\n next();\r\n }\r\n \r\n if (routeRequiresPermissions(to)) {\r\n if (!me){\r\n console.log(\"Router: Current user hasn't been loaded yet, loading ...\")\r\n await store.dispatch('user/getMe');\r\n me = (store.state as any).user.me as User;\r\n if (me){\r\n console.log(\"Current user loaded.\")\r\n }\r\n }\r\n\r\n if (!me){\r\n console.warn(\r\n \"[Timit] Navigation occurred to a route which requires permissions\" +\r\n \", but current user info has not yet been loaded.\"\r\n );\r\n return;\r\n }\r\n if (hasPermissions(to)) {\r\n\r\n /* \r\n * Ensure that route has correct destinationId if \r\n * a user manually inputs passengerId into the URL\r\n * and previous passenger has a different main destination \r\n * than the changed passengerId. \r\n */\r\n if (to.name === Routes.editPeopleRoute.name && to.params.passengerId) {\r\n const passengerId = parseInt(to.params.passengerId, 10);\r\n const passenger: Passenger = store.getters[\"passenger/findPassengerById\"]\r\n (to.params.passengerId);\r\n if (!passenger){\r\n console.warn(\"Passenger was not found when processing nav guard!\")\r\n }\r\n \r\n const passengerDestinationId = passenger ? passenger.destinationIds.find(x => x) : undefined;\r\n if (passengerDestinationId && passengerDestinationId !== destinationId) {\r\n next({\r\n name: Routes.editPeopleRoute.name,\r\n params: { destinationId: passengerDestinationId + '', passengerId: to.params.passengerId },\r\n });\r\n }\r\n }\r\n next();\r\n } else {\r\n\r\n // Redirect to allowed page\r\n const redirectRoute = redirectRoutes\r\n .find((r: RouteConfig) => {\r\n if (!r.meta) {\r\n return true;\r\n }\r\n if (r.meta.requirePassengerPermissions) {\r\n return store.getters['auth/hasPassengerPermission']\r\n (r.meta.requirePassengerPermissions, r)\r\n } else {\r\n return store.getters['auth/hasDestinationPermission']\r\n (to.params.destinationId, r.meta.requireDestinationPermissions)\r\n }\r\n });\r\n if (redirectRoute) {\r\n next({\r\n name: redirectRoute.name,\r\n params: { destinationId: to.params.destinationId }\r\n });\r\n }\r\n }\r\n // No permission required\r\n } else {\r\n next();\r\n }\r\n }\r\n } else {\r\n // route allows anonymous, proceed to next\r\n next()\r\n }\r\n})\r\n\r\nfunction routeRequiresPermissions(route: Route) {\r\n if (!route.meta) {\r\n return false;\r\n }\r\n return route.meta.requireDestinationPermissions || route.meta.requirePassengerPermissions;\r\n}\r\n\r\nfunction hasPermissions(to: Route) {\r\n\r\n const hasDestinationPermission = to.meta.requireDestinationPermissions \r\n ? store.getters['auth/hasDestinationPermission'](to.params.destinationId, to.meta.requireDestinationPermissions) \r\n : true;\r\n\r\n const hasPassengerPermission = to.meta.requirePassengerPermissions\r\n ? store.getters['auth/hasPassengerPermission'](to.meta.requirePassengerPermissions, to)\r\n : true;\r\n return hasDestinationPermission && hasPassengerPermission;\r\n}\r\n\r\nexport default router;\r\n","export default class GoogleMaps {\r\n \r\n install(Vue, options: { apiKey: string, version?: string, language?: string }) {\r\n\r\n if (!options.apiKey) {\r\n throw new Error(\"Cannot set up GoogleMaps, no api key defined\")\r\n }\r\n\r\n if (typeof options.apiKey !== 'string') {\r\n throw new Error('Cannot set up GoogleMaps, api key is not a string');\r\n } \r\n\r\n try {\r\n\r\n if (typeof window !== 'undefined') {\r\n (window as any).vgaMapState = {\r\n initMap: false,\r\n };\r\n \r\n (window as any).initVGAMaps = () => {\r\n (window as any).vgaMapState.initMap = true;\r\n };\r\n }\r\n \r\n // If not within browser context, do not continue processing.\r\n if (typeof (window as any) === 'undefined' || typeof document === 'undefined') {\r\n return;\r\n }\r\n \r\n if (typeof (window as any).google === 'object' && typeof (window as any).google.maps === 'object') {\r\n if (typeof (window as any).google.maps.places === 'object') {\r\n return; // google is already loaded, don't try to load it again to prevent errors\r\n }\r\n throw new Error('Google is already loaded, but does not contain the places API.');\r\n }\r\n \r\n if (!(window as any).vgaMapState.initMap) {\r\n const googleMapScript = document.createElement('SCRIPT');\r\n const params = {\r\n key: options.apiKey,\r\n libraries: 'places',\r\n callback: 'initVGAMaps'\r\n };\r\n \r\n const paramsString = Object.keys(params)\r\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)\r\n .join('&');\r\n \r\n let url = `https://maps.googleapis.com/maps/api/js?${paramsString}`;\r\n \r\n if (options.version) {\r\n url = `${url}&v=${options.version}`;\r\n }\r\n \r\n if (options.language) {\r\n url = `${url}&language=${options.language}`;\r\n } \r\n googleMapScript.setAttribute('src', url);\r\n googleMapScript.setAttribute('async', '');\r\n googleMapScript.setAttribute('defer', '');\r\n document.body.appendChild(googleMapScript);\r\n } else {\r\n throw new Error('Google Maps API loaded multiple times.');\r\n }\r\n } catch (exception) {\r\n throw new Error('Google Maps API load error: ' + exception);\r\n }\r\n\r\n }\r\n}\r\n","import { ApplicationInsights } from '@microsoft/applicationinsights-web';\r\nimport { Route } from 'vue-router';\r\n\r\n// Get instrumentation key from build settings\r\nconst appInsightsConnString = process.env.VUE_APP_APPINSIGHTS_CONNECTION_STRING;\r\n\r\n/**\r\n * Usage:\r\n * Vue.use(applicationInsights, {\r\n * router: router\r\n * })\r\n */\r\nfunction install(Vue: any, options: any) {\r\n if (!appInsightsConnString) {\r\n // Do nothing if instrumentation key is not set\r\n return;\r\n }\r\n Vue.appInsights = new ApplicationInsights({ config: {\r\n connectionString: appInsightsConnString\r\n /* ...Other Configuration Options... */\r\n } });\r\n Vue.appInsights.loadAppInsights();\r\n // Track vue errors to application insights\r\n Vue.config.errorHandler = (exception: Error, component: any, info: string) => {\r\n\r\n const routeName = (component.$route?.name\r\n ? component.$route.name\r\n : \"(none)\")\r\n\r\n const message = exception.message;\r\n\r\n const componentName = component?._name\r\n ? component._name\r\n : \"(none)\";\r\n\r\n Vue.appInsights.trackException({\r\n exception,// new Error(errorMessage, { stack': }),\r\n properties: {message, routeName, componentName}\r\n }\r\n );\r\n console.error(exception);\r\n };\r\n\r\n // Setup Vue router to track pages if router is passed in with options\r\n const router = options.router;\r\n if (router) {\r\n const baseName = options.baseName || '(Timit)';\r\n\r\n router.beforeEach( (route: Route, from: Route, next: () => void) => {\r\n const name = baseName + ' / ' + route.name;\r\n Vue.appInsights.startTrackPage(name);\r\n next();\r\n });\r\n\r\n router.afterEach((route: Route) => {\r\n const name = baseName + ' / ' + route.name;\r\n const url = location.protocol + '//' + location.host + route.fullPath;\r\n Vue.appInsights.stopTrackPage(name, url);\r\n });\r\n }\r\n\r\n // Define getter to all Vue components\r\n Object.defineProperty(Vue.prototype, '$appInsights', {\r\n get: () => Vue.appInsights,\r\n });\r\n}\r\n\r\nexport default install;\r\n","// import '@babel/polyfill'\r\nimport Vue from 'vue';\r\nimport './plugins/vuetify'\r\nimport axios, { AxiosRequestConfig } from 'axios'\r\nimport { sync } from 'vuex-router-sync'\r\nimport vuetifyToast from 'vuetify-toast';\r\nimport App from './AppRoot.vue'\r\nimport router from './router';\r\nimport store from './store';\r\nimport VueSplitPane from 'vue-splitpane'\r\nimport VConfirmDialog from 'vuetify-confirm-dialog'\r\nimport DateHelper from '@/util/DateHelper';\r\n// import 'material-design-icons/iconfont/material-icons.css'\r\n// import 'typeface-roboto/index.css'\r\nimport AppEvents from './AppEvents';\r\nimport Routes from './Routes';\r\nimport GoogleMaps from '@/plugins/googlemaps/index';\r\nimport applicationInsights from './application-insights';\r\n\r\nVue.config.productionTip = false;\r\nVue.config.devtools = true;\r\nVue.config.performance = true\r\n\r\naxios.interceptors.request.use((config: AxiosRequestConfig) => {\r\n // add auth token\r\n const authToken = store.getters['auth/authToken'];\r\n if (authToken) {\r\n config.headers.Authorization = `Bearer ${authToken}`;\r\n }\r\n // add client version header\r\n config.headers['X-Client-Version'] = store.getters['app/version'];\r\n return config;\r\n}, (err: any) => {\r\n // console.log(\"REQUEST INTERCEPT: ERROR CAUGHT: \", err);\r\n return Promise.reject(err);\r\n});\r\n\r\naxios.interceptors.response.use((response: any) => {\r\n return response;\r\n}, (err: any) => {\r\n if (err.response && err.response.status === 401) {\r\n vue.$root.$emit(AppEvents.APP_API_UNAUTHORIZED, null);\r\n // Got back Unauthorized. We'll need to authenticate again...\r\n store.dispatch('auth/authLogout');\r\n router.push(\r\n { \r\n name: Routes.signInRoute.name,\r\n query: { redirect: (store.state as any).route.fullPath }\r\n }\r\n )\r\n }\r\n return Promise.reject(err);\r\n});\r\n\r\nsync(store, router);\r\n\r\nVue.prototype.$dateHelper = new DateHelper();\r\n\r\nVue.component('split-pane', VueSplitPane);\r\n\r\nVue.use(VConfirmDialog);\r\n\r\nVue.use(new GoogleMaps(), {\r\n apiKey: process.env.VUE_APP_GOOGLE_API_KEY, \r\n // Can also be an object. E.g, for Google Maps Premium API, pass `{ client: }`\r\n // version: '...', // Optional\r\n language: 'fi', // Optional\r\n});\r\n\r\nVue.use(applicationInsights, {router});\r\n\r\nvuetifyToast.defaultOptions.timeout = 5000;\r\n\r\nconst vue = new Vue({\r\n router,\r\n store,\r\n render: (h) => h(App),\r\n}).$mount('#app');\r\n","export interface IApiAuthTenant {\r\n id: string;\r\n externalTenantId: string;\r\n name: string;\r\n type: AuthTenantTypeEnum;\r\n}\r\n\r\nexport enum AuthTenantTypeEnum {\r\n Unknown = 0,\r\n AzureAD = 1\r\n}\r\n\r\nexport class AuthTenant {\r\n id: string;\r\n externalTenantId: string;\r\n name: string;\r\n type: AuthTenantTypeEnum;\r\n\r\n get typeName(): string {\r\n return AuthTenantTypeEnum[this.type];\r\n }\r\n\r\n public static fromApi(model: IApiAuthTenant): AuthTenant {\r\n const authTenant = new AuthTenant();\r\n authTenant.id = model.id;\r\n authTenant.externalTenantId = model.externalTenantId;\r\n authTenant.name = model.name;\r\n authTenant.type = model.type;\r\n return authTenant;\r\n }\r\n}\r\n","import Role from './Role'\r\n\r\nexport enum PermissionEnum {\r\n NoPermission = 0,\r\n Read,\r\n Write,\r\n}\r\n\r\nexport enum RolePermission {\r\n ReadArrivalDepartures = 1110,\r\n UpdateArrivalDepartures = 1120,\r\n CreateTimetables = 1200,\r\n ReadTimetables = 1210,\r\n UpdateTimetables = 1220,\r\n DeleteTimetables = 1230,\r\n CreatePassengers = 1300,\r\n ReadPassengers = 1310,\r\n ReadAllPassengerTrips = 1315,\r\n UpdatePassengers = 1320,\r\n UpdatePassengerGroups = 1321,\r\n DeletePassengers = 1340,\r\n CreateBookings = 1400,\r\n ReadBookings = 1410,\r\n UpdateBookings = 1420,\r\n DeleteBookings = 1430,\r\n CreateTransportationPermissions = 1500,\r\n ReadTransportationPermissions = 1510,\r\n UpdateTransportationPermissions = 1520,\r\n DeleteTransportationPermissions = 1530,\r\n}\r\n\r\nexport class DestinationRole {\r\n destinationId: number;\r\n passengerPermission: PermissionEnum;\r\n timetablePermission: PermissionEnum;\r\n arrivalsDeparturesPermission: PermissionEnum;\r\n bookingPermission: PermissionEnum;\r\n transportationPermission: PermissionEnum;\r\n schedulePermission: PermissionEnum;\r\n\r\n get permissions() {\r\n const passengerRead = [\r\n RolePermission.ReadPassengers, \r\n RolePermission.ReadAllPassengerTrips, \r\n RolePermission.UpdatePassengerGroups,\r\n ];\r\n const passengerWrite = [RolePermission.CreatePassengers, RolePermission.UpdatePassengers];\r\n const passengers = [[], passengerRead, passengerRead.concat(passengerWrite)][this.passengerPermission];\r\n\r\n const timetableRead = [RolePermission.ReadTimetables];\r\n const timetableWrite = [\r\n RolePermission.CreateTimetables,\r\n RolePermission.UpdateTimetables,\r\n RolePermission.DeleteTimetables,\r\n ];\r\n const timetables = [[], timetableRead, timetableRead.concat(timetableWrite)][this.timetablePermission];\r\n\r\n const arrivalRead = [RolePermission.ReadArrivalDepartures];\r\n const arrivalWrite = [RolePermission.UpdateArrivalDepartures];\r\n const arrival = [[], arrivalRead, arrivalRead.concat(arrivalWrite)][this.arrivalsDeparturesPermission];\r\n\r\n const bookingRead = [RolePermission.ReadBookings];\r\n const bookingWrite = [\r\n RolePermission.CreateBookings,\r\n RolePermission.UpdateBookings,\r\n RolePermission.DeleteBookings,\r\n ];\r\n const booking = [[], bookingRead, bookingRead.concat(bookingWrite)][this.bookingPermission];\r\n\r\n const transPermRead = [RolePermission.ReadTransportationPermissions];\r\n const transPermWrite = [\r\n RolePermission.CreateTransportationPermissions,\r\n RolePermission.UpdateTransportationPermissions,\r\n RolePermission.DeleteTransportationPermissions,\r\n ];\r\n const transPerm = [[], transPermRead, transPermRead.concat(transPermWrite)][this.transportationPermission];\r\n\r\n return passengers.concat(timetables).concat(arrival).concat(booking).concat(transPerm);\r\n }\r\n\r\n public static fromApi(apiDestinationRole: any): DestinationRole {\r\n const destinationRole = new DestinationRole();\r\n destinationRole.destinationId = apiDestinationRole.destinationId;\r\n destinationRole.passengerPermission = apiDestinationRole.passengerPermission;\r\n destinationRole.timetablePermission = apiDestinationRole.timetablePermission;\r\n destinationRole.arrivalsDeparturesPermission = apiDestinationRole.arrivalsDeparturesPermission;\r\n destinationRole.bookingPermission = apiDestinationRole.bookingPermission;\r\n destinationRole.transportationPermission = apiDestinationRole.transportationPermission;\r\n destinationRole.schedulePermission = apiDestinationRole.schedulePermission;\r\n return destinationRole;\r\n }\r\n\r\n public static newAdminRole(destinationId: number): DestinationRole {\r\n const destinationRole = new DestinationRole();\r\n destinationRole.destinationId = destinationId;\r\n destinationRole.passengerPermission = PermissionEnum.Write;\r\n destinationRole.timetablePermission = PermissionEnum.Write;\r\n destinationRole.arrivalsDeparturesPermission = PermissionEnum.Write;\r\n destinationRole.bookingPermission = PermissionEnum.Write;\r\n destinationRole.transportationPermission = PermissionEnum.Write;\r\n destinationRole.schedulePermission = PermissionEnum.Write;\r\n return destinationRole;\r\n }\r\n}\r\n\r\nexport default DestinationRole;\r\n","import { PermissionEnum } from \"./DestinationRole\"\r\nimport { PassengerGroup } from \"./PassengerGroup\";\r\n\r\nexport class PassengerGroupUserRole {\r\n passengerGroupId: number;\r\n passengerPermission: PermissionEnum;\r\n transportationPermission: PermissionEnum;\r\n schedulePermission: PermissionEnum;\r\n\r\n public static fromApi(passengerGroup) {\r\n const passengerGroupUserRole = new PassengerGroupUserRole();\r\n\r\n passengerGroupUserRole.passengerGroupId = passengerGroup.passengerGroupId;\r\n passengerGroupUserRole.passengerPermission = passengerGroup.passengerPermission;\r\n passengerGroupUserRole.transportationPermission = passengerGroup.transportationPermission;\r\n passengerGroupUserRole.schedulePermission = passengerGroup.schedulePermission; \r\n\r\n return passengerGroupUserRole;\r\n }\r\n}\r\n\r\nexport default PassengerGroupUserRole;\r\n","export enum RolePermission {\r\n ReadArrivalDepartures = 1110,\r\n UpdateArrivalDepartures = 1120,\r\n CreateTimetables = 1200,\r\n ReadTimetables = 1210,\r\n UpdateTimetables = 1220,\r\n DeleteTimetables = 1230,\r\n CreatePassengers = 1300,\r\n ReadPassengers = 1310,\r\n ReadAllPassengerTrips = 1315,\r\n UpdatePassengers = 1320,\r\n UpdatePassengerGroups = 1321,\r\n DeletePassengers = 1340,\r\n CreateBookings = 1400,\r\n ReadBookings = 1410,\r\n UpdateBookings = 1420,\r\n DeleteBookings = 1430,\r\n CreateTransportationPermissions = 1500,\r\n ReadTransportationPermissions = 1510,\r\n UpdateTransportationPermissions = 1520,\r\n DeleteTransporetationPermissions = 1530,\r\n}\r\n\r\nexport class Role {\r\n id: number;\r\n name: string;\r\n permissions: number[];\r\n\r\n public static fromApi(apiRole: any): Role {\r\n const role = new Role();\r\n role.id = apiRole.id;\r\n role.name = apiRole.name;\r\n role.permissions = apiRole.permissions;\r\n return role;\r\n }\r\n}\r\n\r\nexport default Role;\r\n","import TransportationPermission from '@/components/Passenger/models/TransportationPermission';\r\nimport DestinationRole, { PermissionEnum } from './DestinationRole'\r\nimport { PassengerGroup } from './PassengerGroup';\r\nimport { PassengerGroupUserRole } from './PassengerGroupUseRole';\r\n\r\nexport enum PassengerGroupPermissionType {\r\n passengerPermission,\r\n transportationPermission,\r\n}\r\n\r\nexport class User {\r\n id: string\r\n email: string;\r\n destinationRoles: DestinationRole[];\r\n passengerGroupRoles: PassengerGroupUserRole[];\r\n organizationIds?: string[];\r\n\r\n public hasPermissions(destinationId: number, permissions: number[]): boolean {\r\n const hasDestinationPermissions = this.destinationRoles.find(dr =>\r\n dr.destinationId === destinationId &&\r\n permissions.every(p => dr.permissions.includes(p))\r\n )\r\n ? true\r\n : false;\r\n return hasDestinationPermissions\r\n }\r\n\r\n // tslint:disable-next-line:max-line-length\r\n public hasPassengerGroupPermission(passengerGroupIds: number[], permissionType: PassengerGroupPermissionType, permission: PermissionEnum): boolean {\r\n const ids = passengerGroupIds;\r\n const passengerGroups = this.passengerGroupRoles.filter(p => ids.includes(p.passengerGroupId));\r\n if (!this.passengerGroupRoles.some(p => ids.includes(p.passengerGroupId)) || passengerGroups.length < 1) {\r\n return false;\r\n }\r\n\r\n if (permissionType === PassengerGroupPermissionType.passengerPermission) {\r\n if (permission === PermissionEnum.Write) {\r\n return passengerGroups.some(p => p.passengerPermission === PermissionEnum.Write);\r\n } else {\r\n return passengerGroups.some(p => p.passengerPermission === PermissionEnum.Read);\r\n }\r\n } else if (permissionType === PassengerGroupPermissionType.transportationPermission) {\r\n if (permission === PermissionEnum.Write) {\r\n return passengerGroups.some(p => p.transportationPermission === PermissionEnum.Write);\r\n } else {\r\n return passengerGroups.some(p => p.transportationPermission === PermissionEnum.Read);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public static fromApi(apiUser: any): User {\r\n const user = new User();\r\n user.id = apiUser.id;\r\n user.email = apiUser.email;\r\n user.destinationRoles = apiUser.destinationRoles\r\n ? apiUser.destinationRoles.map((dr: any) => DestinationRole.fromApi(dr))\r\n : [];\r\n user.passengerGroupRoles = apiUser.organizationPassengerGroupsRoles\r\n ? apiUser.organizationPassengerGroupsRoles.map((ur: any) => PassengerGroupUserRole.fromApi(ur))\r\n : [];\r\n user.organizationIds = apiUser.organizationIds;\r\n return user;\r\n }\r\n\r\n}\r\n\r\nexport default User;\r\n","import IApiError from \"@/models/IApiError\";\r\n\r\nexport class ModelStateError extends Error {\r\n static TypeName: string = \"ModelStateError\";\r\n type: string = ModelStateError.TypeName;\r\n apiErrors: IApiError[];\r\n constructor(message: string, apiErrors: IApiError[]){\r\n super(message);\r\n this.apiErrors = apiErrors;\r\n }\r\n}\r\n\r\nexport abstract class BaseService {\r\n protected readonly api = process.env.VUE_APP_API_HOST + \"/api\"; \r\n}\r\n","import Group from '@/components/Passenger/models/Group';\r\nimport Passenger from '@/components/Passenger/models/Passenger';\r\nimport TransportationPermission from '@/components/Passenger/models/TransportationPermission';\r\nimport Trip from \"@/components/Passenger/models/Trip\";\r\nimport { IEntityMatchResult, IPassengerMatchRequest, ITransportationPermissionMatchRequest } from '@/typings/import';\r\nimport { \r\n IMovitInstance,\r\n IPassengerGroup,\r\n IPassengerGroupWithPassengers,\r\n IPassengerSearchResult,\r\n ISchedule,\r\n ITimetableSearchResult } from \"@/typings/timit\";\r\nimport axios from \"axios\";\r\n\r\nconst baseURL = process.env.VUE_APP_API_HOST;\r\n\r\nexport default {\r\n passengers: {\r\n async cancelPassengerTrips(id: number, trips: any) {\r\n const url = baseURL + `/api/passenger/${id}/trips/cancel`\r\n const result = await axios.post(url, trips);\r\n return result.data as any;\r\n },\r\n async createPassenger(passenger: Passenger) {\r\n const url = baseURL + `/api/passenger`;\r\n const result = await axios.post(url, passenger);\r\n return result.data as Passenger;\r\n },\r\n async getPassengerPassengerGroups(id: number) {\r\n const url = baseURL + `/api/passenger/${id}/passengerGroups`;\r\n const result = await axios.get(url);\r\n return result.data as IPassengerGroup[];\r\n },\r\n async getPassengerAvailableDestinationGroups(id: number): Promise {\r\n const url = baseURL + `/api/passenger/${id}/availableDestinationGroups`;\r\n const result = await axios.get(url);\r\n return result.data as string[];\r\n },\r\n async getPassengersByIds(ids: number[]): Promise {\r\n const url = baseURL + `/api/passenger/byIds`;\r\n const result = await axios.post(url, ids);\r\n return result.data.map((x: unknown) => new Passenger(x));\r\n },\r\n async getPassengerTrips(id: number, startDate: string, endDate: string, destinationId: number) {\r\n const url = baseURL + `/api/passenger/${id}/trips?startDate=${startDate}&endDate=${endDate}&destinationId=${destinationId}`\r\n const result = await axios.get(url);\r\n return result.data as any;\r\n },\r\n async getSsn(id: number) {\r\n const url = baseURL + `/api/passenger/${id}/ssn`\r\n const result = await axios.get(url);\r\n return result.data as string;\r\n },\r\n async matchPassengers(request: IPassengerMatchRequest) {\r\n const searchParams = `?externalId=${request.externalId}&ssn=${request.ssn}&name=${request.name}`;\r\n const url = baseURL + `/api/passenger/importer/search${searchParams}`;\r\n const result = await axios.get(url);\r\n return result.data as Array>;\r\n },\r\n async searchPassengers(search: string, searchParams: any) {\r\n let url = baseURL + `/api/passenger/search?q=${search}`;\r\n if (searchParams){\r\n const searchParamKeys = Object.keys(searchParams);\r\n if (searchParamKeys.length){\r\n for(const key of searchParamKeys){\r\n url = `${url}&${key}=${searchParams[key]}`;\r\n }\r\n }\r\n }\r\n \r\n const result = await axios.get(url);\r\n return result.data as IPassengerSearchResult[];\r\n },\r\n async setPassengerSsn(id: number, ssn: string) {\r\n const url = baseURL + `/api/passenger/${id}/ssn`;\r\n const result = await axios.post(url, {Ssn: ssn});\r\n return result.data as string;\r\n },\r\n async updatePassenger(passenger: Passenger) {\r\n const url = baseURL + `/api/passenger/${passenger.id}`;\r\n const result = await axios.put(url, passenger);\r\n return result.data as Passenger;\r\n }\r\n },\r\n \r\n organizations: {\r\n async getTransportationPermissions(id: string): Promise {\r\n const url = baseURL + `/api/organization/${id}/passengerTransportationPermissions`;\r\n const result = await axios.get(url);\r\n return result.data as TransportationPermission[];\r\n },\r\n async getServiceProviders(id: string) {\r\n const url = baseURL + `/api/organization/${id}/instances`;\r\n const result = await axios.get(url);\r\n return result.data as IMovitInstance[];\r\n }\r\n },\r\n\r\n schedules: {\r\n async createSchedule(schedule: ISchedule) {\r\n const url = baseURL + `/api/schedule`;\r\n const result = await axios.post(url, schedule);\r\n return result.data as ISchedule;\r\n },\r\n async updateSchedule(schedule: ISchedule) {\r\n const url = baseURL + `/api/schedule`;\r\n const result = await axios.put(url, schedule);\r\n return result.data as ISchedule;\r\n },\r\n async getPassengerSchedules(passengerId: number) {\r\n const url = baseURL + `/api/schedule/passenger/${passengerId}`;\r\n const result = await axios.get(url);\r\n return result.data as ISchedule[];\r\n },\r\n },\r\n\r\n timeTables: {\r\n async searchTimeTable(search: string) {\r\n const url = baseURL + `/api/timeTable/search?q=${search}`;\r\n const result = await axios.get(url);\r\n return result.data as ITimetableSearchResult[];\r\n }\r\n },\r\n\r\n transportationPermissions: {\r\n async matchTransportationPermissions(request: ITransportationPermissionMatchRequest) {\r\n const searchParams = `?name=${request.permissionName}`;\r\n const url = baseURL \r\n + `/api/passenger/importer/search/${request.passengerId}/transportationPermissions`\r\n + searchParams;\r\n const result = await axios.get(url);\r\n return result.data as Array>;\r\n },\r\n async createTransportationPermission(ptp: TransportationPermission) {\r\n const url = baseURL + `/api/passenger/${ptp.passengerId}/transportationPermission`;\r\n const result = await axios.post(url, ptp);\r\n return result.data as TransportationPermission;\r\n },\r\n }\r\n};\r\n","import Vue from 'vue';\r\n\r\nexport class DateHelper {\r\n \r\n constructor(){\r\n // empty\r\n }\r\n \r\n public formatDateWeekdayName(dateString): string {\r\n const locale = Vue.i18n.locale();\r\n return new Date(dateString).toLocaleDateString(\r\n locale, \r\n {\r\n weekday: \"long\"\r\n }\r\n );\r\n }\r\n\r\n public formatDateWithShortWeekDay(dateString): string {\r\n const locale = Vue.i18n.locale();\r\n return new Date(dateString).toLocaleDateString(\r\n locale, \r\n {\r\n weekday: \"short\",\r\n month: \"numeric\",\r\n day: \"numeric\",\r\n year: \"numeric\"\r\n }\r\n );\r\n }\r\n\r\n public formatDateTimeWithShortWeekDay(date: Date): string {\r\n const locale = Vue.i18n.locale();\r\n return date.toLocaleDateString(\r\n locale, \r\n {\r\n weekday: \"short\",\r\n month: \"numeric\",\r\n day: \"numeric\",\r\n year: \"numeric\",\r\n hour: \"2-digit\",\r\n minute: \"2-digit\"\r\n }\r\n ); \r\n }\r\n\r\n public formatDateWithLongWeekDay(dateString): string {\r\n const locale = Vue.i18n.locale();\r\n return new Date(dateString).toLocaleDateString(\r\n locale, \r\n {\r\n weekday: \"long\",\r\n month: \"numeric\",\r\n day: \"numeric\",\r\n year: \"numeric\"\r\n }\r\n );\r\n }\r\n\r\n public formatDateShort(dateString): string {\r\n const locale = Vue.i18n.locale();\r\n return new Date(dateString).toLocaleDateString(\r\n locale, \r\n {\r\n month: \"numeric\",\r\n day: \"numeric\",\r\n year: \"numeric\"\r\n }\r\n );\r\n }\r\n\r\n public datePickerTitleFormat(val, locale): string {\r\n const currentLocale = locale ? locale : Vue.i18n.locale();\r\n return new Date(val).toLocaleDateString(\r\n currentLocale, \r\n {\r\n weekday: \"short\",\r\n month: \"long\",\r\n day: \"numeric\"\r\n }\r\n );\r\n }\r\n\r\n public dateYMD(dateValue: Date | string): string {\r\n if (!dateValue) {\r\n return '';\r\n }\r\n const date = new Date(dateValue);\r\n return date.getFullYear() \r\n + \"-\" \r\n + (date.getMonth() + 1).toString().padStart(2, \"0\") \r\n + \"-\" \r\n + (date.getDate()).toString().padStart(2, '0'); \r\n }\r\n \r\n public formatDateTimeWithShortWeekDayAndTime(val): string {\r\n const date = new Date(val);\r\n const locale = Vue.i18n.locale();\r\n const dateStr = date.toLocaleDateString(\r\n locale, \r\n {\r\n weekday: \"short\",\r\n month: \"numeric\",\r\n day: \"numeric\",\r\n year: \"numeric\",\r\n hour: \"2-digit\",\r\n minute: \"2-digit\"\r\n }\r\n );\r\n \r\n return dateStr;\r\n }\r\n}\r\n\r\nexport default DateHelper;\r\n","import RandomColor from \"randomcolor\"\r\nimport vuetifyToast from 'vuetify-toast'\r\n\r\nexport class Helpers {\r\n \r\n public static getRandomColorWithSeed(\r\n seed, \r\n luminosity: \"bright\" | \"light\" | \"dark\" | \"random\" = \"bright\"): string {\r\n const randomSeededNumber = Math.floor(Math.sin(seed) * 10000);\r\n // RandomColor returns random colors indeed, but it's seed must have variable for the color to have variance\r\n return RandomColor({ seed: randomSeededNumber.toString(), luminosity });\r\n }\r\n\r\n public static todoToast() {\r\n vuetifyToast.error('This feature is not yet available');\r\n }\r\n\r\n public static nameFromEmail(email: string): string {\r\n try {\r\n return email\r\n .split('@')[0]\r\n .split('.')\r\n .map(x => x.charAt(0).toUpperCase() + x.substr(1))\r\n .join(' ');\r\n } catch (err) {\r\n return email ? email : '';\r\n }\r\n }\r\n}\r\n\r\nexport default Helpers;\r\n","var map = {\n\t\"./hkl.json\": 485,\n\t\"./vnk.json\": 708\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 = 3299;","// 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/\" + {\"26\":\"organization\",\"210\":\"people\",\"443\":\"about\"}[chunkId] + \".\" + {\"26\":\"d59a6480\",\"210\":\"ef1e165c\",\"443\":\"c52b0c8d\"}[chunkId] + \".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 \"css/\" + {\"26\":\"organization\",\"443\":\"about\"}[chunkId] + \".\" + {\"26\":\"775420d8\",\"443\":\"405e0e9a\"}[chunkId] + \".css\";\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 = \"timit-frontend:\";\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\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 = \"/frontend/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"26\":1,\"443\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// 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\t143: 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[\"webpackChunktimit_frontend\"] = self[\"webpackChunktimit_frontend\"] || [];\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, [998], function() { return __webpack_require__(3388); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["render","_vm","this","_h","$createElement","_c","_self","_b","attrs","selectedPassenger","passengers","search","$t","on","selectPassenger","$event","scopedSlots","_u","key","fn","_v","proxy","ref","item","class","inactive","_s","name","directives","rawName","value","expression","destinationName","movitInstanceName","movitId","$attrs","staticRenderFns","PassengerSearch","Vue","constructor","args","_defineProperty","length","searchPassengers","async","searchDebounceTimeout","clearTimeout","setTimeout","result","restService","searchParams","destinations","$store","state","destination","map","p","find","d","id","destinationId","alias","filter","excludedPassengerIds","includes","searchDebounceTimeoutDurationMs","passengerSearchResult","$emit","__decorate","Prop","default","Watch","Component","component","selectedDestination","destinationFilter","DestinationSelector","routeDestinationId","parseInt","route","params","isNaN","organizationId","e","components","GroupPicker","_class","newUniqueGroups","Group","getUniqueGroups","newGroups","onSelectedGroupsChanged","val","oldVal","editableSelectedGroups","editedSelectedGroups","searchInput","selectableGroups","groups","g","enableCreation","toLowerCase","push","GroupPicker_1","NEW_GROUP_CREATOR_ITEM","creator","onSelectableGroupsChanged","editedSelectableGroups","concat","selectedGroupNames","groupNames","trim","getUniqueGroupNames","gn","updatedGroupNames","emitChangeEvent","queryText","itemText","itemName","searchText","indexOf","onCreateGroup","data","newGroupName","newGroup","$refs","inputRef","selectItem","onChange","blur","beforeDestroy","immediate","template","require","model","callback","$$v","show","staticClass","passenger","_e","homeAddress","yearGrade","pickupAddress","arrivalDeparture","transportName","atHHMM","staticStyle","atOtherHHMM","utilityIds","_l","utilityId","utilityIconImageSrc","utilityTitle","cancelled","cancelling","cancelreasonvalid","cancelreasonrules","cancelreason","sendingArrivalDepartureCancel","onCancelArrivalDepartureClick","cancelledByName","timetable","isLocked","onRemovePassengerRidesFromTimetableClick","onRemovePassengerFromTimetableClick","onShowProfileClick","userCanEditPassengers","PassengerDialog","cancelReasonRequired","me","user","userCanEditTimetables","hasPermissions","RolePermission","UpdateTimetables","UpdatePassengers","utility","Passenger","utilities","u","$i18n","translate","title","imageBasePath","created","$root","$on","PassengerDialog_1","EVENT_PASSENGER_DIALOG_SHOW","onShowPassengerDialog","i18n","passengerTimetableRides","rides","cancellationReason","dispatch","ArrivalDeparture","toApi","err","vuetifyToast","timeout","dismissible","r","removePassengerIds","Timetable","passengerDestinations","$router","Routes","editPeopleRoute","passengerId","toString","passengerRoute","$off","PassengerEditor","required","utilityOptions","Utility","forEach","selected","editedPassenger","PassengerEditor_1","EVENT_PASSENGER_EDITOR_OPEN","onShowPassengerEditor","onUtilityClick","toggleUtility","saving","form","validate","destinationIds","pd","console","error","CopyFrom","onCloseClick","showGroupAssignDialog","singlePassengerToAddGroupsFor","assignableGroups","groupObjs","onGroupAssignSingleGroupPickerChange","onGroupAssignSingleCancelClick","savingPassengerGroups","onGroupAssignSingleOkClick","pickMode","userCanCreatePassengers","hideCreateNewButton","onCreatePassengerClick","hideShowOnlyActiveToggle","showOnlyActivePassengers","groupNamesToAssign","headers","filteredPassengers","onDatatableSort","pagination","totalPassengers","isLoading","destinationAlias","text","props","h","header","searchLoading","onSearchInput","destinationGroups","onGroupFilterGroupPickerChange","allFilteredItemsSelected","align","descending","sortBy","onChangeSort","allTrips","showTripsColumn","userCanEditGroups","toggleItemPicked","onEditPassengerClick","onAddGroupClick","slot","hideCloseButton","hideSubmitButton","pickedPassengersCount","onSubmitClick","count","pickable","picked","stopPropagation","$set","style","cursor","helpers","getRandomColorWithSeed","onPassengerClick","phone","addable","passengerHasAddableGroups","onGroupCellClick","group","onGroupChipInput","onGroupChipClick","activeTripsForPassenger","userCanSeeActionsColumn","PassengerListRow","super","passengerGroupNames","split","Helpers","t","cancelledAt","userCanDeletePassengers","every","ex","modified","addToGroupNames","savePassengerGroups","groupName","removeFromGroupNames","event","PassengerList","getDataFromApi","index","page","rowsPerPage","onlyActive","nameOrYearGradeSearch","excludeIds","hiddenPassengers","defaultHeaders","sortable","showInPickMode","hideIfEmpty","hide","allHeaders","extraHeaders","some","onShowChange","newVal","updatePickedPassengersCount","onReadyChange","groupsString","datatable","destinationPassengers","filteredItems","showOnlyActivePassengersChanged","commit","onlyShowPassengersWithTrips","tripPassengerIds","uniqueTripPassengerIds","Set","pickedFilteredItems","onToggleAll","storePassengers","paginatedPassengers","pending","paginatedPassengersTotal","groupNamesToFilterIn","UpdatePassengerGroups","DeletePassengers","CreatePassengers","log","mounted","ready","editPassengerRoute","confirm","passengerName","groupNamesToAssignForSinglePassenger","pickedPassengers","column","items","isDesc","sort","a","b","newPassengerRoute","unpickAllPassengers","selectedGroups","onGroupAssignGroupPickerChange","groupsModified","updateGroups","f","deep","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","keys","Object","resolve","module","exports","AppEvents","static","sourceText","replace","response","applicationError","status","startsWith","String","trimDots","fullErrorMessage","apiErrors","validationErrors","errors","message","property","propertyError","Array","join","ModelStateError","type","TypeName","modelStateError","domProps","arrivalDepartureDays","arrivalDepartureDaysVisible","arrivalDepartureDay","arrivalsDepartures","hasPassengersMatchingSearch","arrivalsDeparturesGroup","onPassengerSelectClick","date","$dateHelper","formatDateWithLongWeekDay","dateId","allArrivalDeparturesCancelled","primaryArrivalDeparture","arrivalDeparturePassenger","nameMatchesSearch","atOtherMessageForPassenger","completed","today","dayIsToday","userCanMarkArrivalDeparturesCompleted","ArrivalDepartureListItem","arrivalsDeparturesFiltered","ad","exists","arrivalsDeparturesIds","te","cancelledArrivalDepartures","cancellingArrivalDepartures","passengerIds","cancelledPassengerIds","cancellingPassengerIds","arrivalDeparturePassengers","UpdateArrivalDepartures","routeDateId","isArrivalDepartureCancelledForPassenger","isArrivalDepartureCancellingForPassenger","isCancelling","isCancelled","atOtherTimeForPassenger","arrivalDepartureForPassenger","atOther","isArrival","time","moment","isSame","weekDayName","formatDateShort","todayYMD","DateHelper","dateYMD","Date","ArrivalsDeparturesDaySelector","todayArrivalsDeparturesDay","todayArrivalsDeparturesDayArrivalDepartures","todayArrivalsDeparturesDayArrivalDeparturesCount","nextDayAfterToday","todayIndex","findIndex","nextDayAfterTodayIsTomorrow","isTomorrow","nextDayAfterTodayArrivalDepartures","nextDayAfterTodayArrivalDeparturesCount","nextDayAfterTodayWeekdayName","showWeekends","routeName","$route","redirectToFirstAvailableDay","onRouteNameChanged","arrivalsDeparturesRoute","onRouteDestinationIdChanged","updatedDate","disabled","dateChooser","dateLabel","hideIcon","appendIcon","editedDateFormatted","datePickerTitle","weekStartsOnSunday","allowedDates","locale","datePickerTitleFormat","save","editedDate","updatedTime","timeChooser","timeLabel","editedTime","timePickerTitle","DateTimePicker","onDateChanged","onUpdatedDateChanged","oldValue","onTimeChanged","onUpdatedTimeChanged","formatDateWithShortWeekDay","minDateStamp","min","getTime","maxDateStamp","max","valDate","valDateStamp","day","getDay","isWeekend","allowWeekends","ArrivalsDeparturesDay","sortedArrivalDepartureGroups","sortedArrivalDepartures","sortByDate","reduce","arr","arrivalDepartureGroup","arrivalDepartureType","placeId","hasPassed","otherDateId","formatDateWeekdayName","isToday","todayMoment","startOf","dateMoment","diff","isWithinPastOrComingWeek","dateDifference","isWithinComingWeek","isWeekEndDay","isDuringDateDay","duringDate","duringDateMoment","format","ArrivalsDeparturesPage","arrivalsDeparturesIsLoading","onArrivalsDeparturesIsLoadingChange","isLoadingTimeout","window","arrivalsDeparturesCount","storeArrivalDepartures","destinationArrivalDepartures","atYMD","ted","dateShort","arrivalDeparturePassengerIds","getArrivalDeparturePassengersFromApi","_k","keyCode","onSignInClick","passwordVisible","signingInWithPassword","forgotPasswordRoute","signingInWithAzureAd","onAzureAdSignInClick","setLocale","$tlang","SignInPage","username","password","isAuthenticated","getters","onLoginSuccess","getApiErrorsFromError","routeOptions","signInAzureAdRoute","query","callbackUrl","URL","href","location","backendAzureAdLoginUrl","process","encodeURIComponent","isValidEmail","document","email","test","APP_LOGIN_SUCCESS","organizationIds","organizationRoute","redirect","rootRoute","signInRoute","SignInAzureAdPage","preventDefault","onSendRecoveryEmailClick","recoveryEmailSent","rules","loading","ForgotPasswordPage","v","validatingEmailAndCode","resetPasswordApiErrors","signinErrorMessage","newPasswordSaved","emailInputDisabled","onSaveNewPasswordClick","requireExternalAuthTenantLogin","passwordLength","passwordContainsUppercase","passwordContainsLowercase","passwordContainsNumber","confirmPassword","ResetPasswordPage","apiError","errorMessage","supportRequestSent","onBackClick","onSendClick","ContactSupportPage","version","app","url","selectedDestinationId","back","noDestinationsError","DestinationPage","navigationRoutes","topLevelRoutes","options","routes","childRoutesArr","children","childRoutes","allRoutes","navRoutes","meta","nav","guest","allowedNavigationRoutes","requireDestinationPermissions","alreadyRedirected","destinationRoute","firstDestinationId","redirectToFirstNavigationRoute","tab","showOnlyActivePermissions","startDate","endDate","useDateFilter","all","setStartDate","setEndDate","dateFilterChanged","removePermission","updatePermissions","completedPermissions","drafts","expiredPermissions","this$1","showTransportationPermissionEditor","updatePermission","clearSelected","selectedPermission","dateFilterSet","dateFilter","start","end","permissions","openPassengerPermission","passengerInactive","mainPlace","transportationPermission","priceCode","costCenter","_g","isValid","closeEditor","permissionIsValid","address","postalCode","city","passengerGroupPriceAreas","isEspoo","notNegativeValue","_n","cannotExceedInitialQuota","newFeb2021FieldsSupported","hasPassengerGroups","fieldNotSupportedInVersionNotificationText","startDateYMD","endDateYMD","deductibleType","DeductibleTypeEnum","FixedMonthly","originalIsDraft","extras","extra","extraId","price","removeExtra","adding","availableInstanceConfigExtras","selectedExtra","newExtra","addExtra","setPrice","deletePermission","savePermission","deductiblePaymentOptions","hint","persistentHint","selectedDeductiblePayment","selectDeductiblePayment","DeductiblePaymentSelect","DeductiblePaymentEnum","Invoice","onValueChanged","undefined","Car","deductiblePayment","deductibleTypeOptions","selectedDeductibleType","selectDeductibleType","DeductibleTypeSelect","NoDeductible","Static","Matkahuolto","WalttiHäme","Riihimäki","Nysse","EuraMatkahuolto","KessoteMatkahuolto","RaumaMatkahuolto","PoriMatkahuolto","HslTwoZoneMonthly","AskolaAsiointi","AskolaTyo","AskolaOpiskelu","Loviisa","PorvooAsiointi","PorvooTyo","PorvooOpiskelu","PorvooSHL","SipooAsiointi","SipooTyo","SipooSHL","HslStudentMonthly","SipooOpiskelu","WalttiJKL","Vpl","KeusoteMatkahuolto","types","defaultDeductibleTypes","deductibleTypeIds","deductibleTypes","x","deductibleOptions","dt","localeCompare","priceArea","passengerGroupName","transportationPermissionName","priceAreas","PriceAreasTable","getPriceAreasForPassengerGroups","priceTable","priceTables","areas","PriceAreaCard","permissionName","area","pt","temporaryPermission","passengerDestinationId","permissionPriceCode","parseFloat","canUseAutocomplete","ptpNames","PassengerTransportationPermissionNameInput","creatingNew","organizationPtpNames","names","n","costCenters","PassengerTransportationPermissionCostCenterInput","match","organizationCostCenters","cc","JSON","parse","stringify","toLocaleLowerCase","unshift","quotaTimes","selectedQuotaTime","selectQuotaTime","QuotaTimeSelect","TransportationPermissionExtra","tripDirections","selectedTripDirections","selectTripDirections","TripDirectionsSelect","tripDestinations","selectedTripDestinations","selectTripDestinations","TripDestinationsSelect","TransportationPermissionEditor","initialQuota","showTransportationPermissionEditorChanged","showChangedIterator","onValueChange","lastEmitted","isDraft","onTransportationPermissionChange","decisionType","onDeductibleTypeChange","espooOrganizations","storeMovitInstanceConfigs","movitInstanceConfigs","destinationMovitInstanceConfig","mic","instanceId","movitInstanceId","instanceConfigExtras","ice","excitingName","passengerGroups","destinationPriceArea","priceAreasByGroupNames","allPriceAreas","instanceConfigHasExtras","target","splice","defaultPrice","passengerTransportationPermissionId","showDeductiblePaymentOptions","showPriceCodeField","showFixedDeductibleField","fixedDeductible","transportationPermissionId","permission","TransportationPermission","__tpeditor","PassengerTransportationPermissionTable","filterWithDatesChanged","filterWithDates","startDateChanged","endDatesChanged","getPassengersByIds","OrganizationTransportationPermissions","setHours","getFullYear","setDate","getDate","getPermissions","routeOrganizationId","transportationPermissions","content","c","filterPermissionByTimePeriod","organizations","getTransportationPermissions","perm","passengerMainPlace","tableContent","tp","permissionEndDate","updatedPermission","bookingEnabled","userCanViewBookings","userCanViewTimeTables","selectedBookingRouteTabId","onSingleBookingTabClick","onRecurringBookingTabClick","TimetableEditor","onStartDateStringChanged","editedTimetable","startDateString","onEndDateStringChanged","endDateString","onShowChanged","resetTimeout","showEditor","storeTimetables","timetables","timetableIsLocked","timetableRides","ride","timetableId","userCanDeleteTimetables","DeleteTimetables","minStartDateString","tomorrowMoment","add","minEndDateString","startDateMoment","laterMoment","isAfter","onRouteChanged","timetableListCreateNewRoute","openNewTimetableDialog","closeNewTimetableDialog","TimetableEditor_1","EVENT_TIMETABLE_EDITOR_CLOSE","toDate","isoWeekday","newTimetable","creating","onEditTimetable","EVENT_TIMETABLE_EDITOR_OPEN","onCloseEditorEvent","startMoment","endMoment","oldStartMoment","previousDurationDays","clone","endDatePicker","$children","isActive","deleting","deleteConfirmed","$confirm","okButton","cancelButton","saveTimetable","newTimetableId","createWithAllDestinationPassengers","addpeople","routeStateNameLowerCase","isCreateNewTimetableRoute","timetableListWithStateRoute","TimetableInfoDialog","isValidDate","formatDate","TimetableInfoDialog_1","EVENT_TIMETABLE_INFO_DIALOG_OPEN","onOpenDialog","editedBooking","step","priceEstimate","selectedProduct","passengerOptions","passengerSelectFilter","searchInProgress","passengerSearchInput","parent","selectedPassengerId","formatDateTimeWithShortWeekDay","fromAddress","startDateLabel","bookingIsLocked","startDateTitle","onStartDateStringUpdated","startTimeLabel","startTimeString","startTimeTitle","onStartTimeStringUpdated","isDropoffTime","passengerBookingPlacesInfo","fromPlace","onGetPriceEstimateClick","product","toAddress","priceCategory","onProductSelected","onProductDeselected","isUnableToCreateBooking","requirements","description","valid","onSubmit","placeholder","formattedAddress","clearable","onClear","PlacePicker","isOrigin","booking","toPlace","i","prediction","scoreA","scoreB","aliasA","aliasB","descA","descB","onSearchChanged","placeSelectedFlag","allowedPlacesInfo","allowFreeAddresses","favoritePlaces","getGooglePlacesPredictions","autocompleteSessionToken","onPlacesResultsAvailable","addresses","onPlacesChanged","predictions","concatGooglePlacesPredictions","onModelChanged","onGetDetailsComplete","google","maps","places","PlacesServiceStatus","OK","getGooglePlacesPlaceDetails","place","googlePlacesApiResultToAddressViewModel","AddressTypeEnum","Origin","Destination","createNewGoogleAutocompleteSessionToken","ms","Promise","__ppicker","getFavoritePlaceAsJson","getPredictionResultsAsJson","getPredictionResultAsJsonAsync","ensureGooglePlacesServicesCreated","googlePlacesAutocompleteService","AutocompleteService","googlePlacesService","PlacesService","googlePlacesContainer","AutocompleteSessionToken","sessionToken","getGooglePlacesPredictionsTimeout","request","input","componentRestrictions","country","getPlacePredictions","ZERO_RESULTS","fields","place_id","getDetails","alert","addressComponents","addressComponentTypes","street_number","locality","administrative_area_level_1","postal_code","address_components","ac","addressType","placeType","streetAddress","vicinity","combinedAddress","endsWith","formatted_address","addressViewModel","postalcode","lat","geometry","lng","category","favoritePlacesListType","warn","maxPassengers","maxLuggage","onSelectProductClick","onDeselectProductClick","BookingProductListItem","selectable","deselectable","selectedItem","selectPermission","BookingPtpSelect","selectedItemId","BookingEditor","Math","round","random","prevPassengerSearchInput","passengerSearchResults","onStartTimeStringChanged","bookingListCreateNewRoute","bookingListWithStateRoute","isTransportationPermissionEnabled","ReadTransportationPermissions","fetchPassengerBookingPlacesInfoFromStore","info","passengerPlacesInfo","gInfo","convertMovitBookingAddressInfoToGoogle","adhocPassenger","fetchPassengerBookingPlacesInfo","fetchPassengerTransportationPermissionInfo","storePassenger","storeBookings","bookings","userCanDeleteBookings","DeleteBookings","transportationPermissionInfo","transportationPermissionInfos","tpi","timitPassengerId","bookingDate","ptp","externalId","openNewBookingDialog","closeNewBookingDialog","BookingEditor_1","EVENT_BOOKING_EDITOR_CLOSE","remainder","minute","newBooking","Booking","createdByEmail","onEditBooking","__beditor","EVENT_BOOKING_EDITOR_OPEN","estimateRequest","startTime","startPlace","latitude","longitude","endPlace","saveBooking","toApiBookingRequestViewModel","toApiBookingUpdateRequestViewModel","selectedPassId","then","bookingAddressInfo","element","convertToGoogleAddress","movitPlace","long_name","short_name","LatLng","makeModel","pax","bags","shortId","bookingPassenger","driverNotes","createdAt","wasOrdered","orderedByEmail","orderedAt","updatedAt","BookingInfoDialog","BookingInfoDialog_1","EVENT_BOOKING_INFO_DIALOG_OPEN","TimetablePage","ReadBookings","ReadTimetables","destinationTimetables","destinationBookings","updateTimetables","beforeRouteEnter","to","from","next","vm","opacity","mounting","showOnlyMyTimetables","showExpiredTimetables","showTimetablesAsList","onCreateTimeTableClick","nameLowerCase","timetableCountWithState","filteredDestinationTimetables","onTableHeaderClick","display","listView","onListItemClick","hasCustomTemplate","idNumberWithHash","timetablePassengerIds","passengersWithTripsCount","timetablePassengerIdsWithRidesCount","passengersCount","timetablePassengersCount","onTimetableEditClick","isRejected","rejectedReason","onTimetableInfoClick","timetableIsOrdered","timetableOrderIsCancelable","cancelOrderInProgress","onCancelOrderTimetableClick","timetableIsAccepted","timetableIsOrderable","orderInProgress","onOrderTimetableClick","onAddPeopleClick","locked","timetableIsSaved","ordered","note","idNumber","timetableCurrentStateAlertClass","timetableCurrentStateColor","i18nStateAndPhaseKey","daysUntilStart","timetableDaysUntilStart","daysUntilEnd","timetableDaysUntilEnd","onViewTimetableClick","TimetableListItem","TimetableStates","isAccepted","isOrdered","isOrderable","timetableHasRides","isOrderIsCancelable","timetableHasExpired","hasExpired","timetableStartDateTooClose","hasEnoughTimeBeforeStart","timetableStartDatePassed","hasStartDatePassed","currentStateColor","currentStateAlertClass","timetablePassengers","uniquePassengerIds","pid","TimetablePassenger","dest","CreateTransportationPermissions","timetablePassengersIdsWithRides","passengerIdsWithRides","passengerWithRidesCount","timetableHasPassenger","activate","apiTimetable","New","Ordered","TimetableList","SelectableStates","fi","timetableListDataTablePagination","storeRides","filteredDestinationTimetableRides","timetableIds","timetablePassengersIds","timetablePassengersWithRidesCount","assign","passengerCountA","passengerCountB","onIsLoadingChanged","dispatchEvent","Event","selectedTimetableId","routeStateId","sortedDestinationTimetables","routeState","s","onRouteStateChanged","stateId","destinationFor","lastSelectedTimetableId","userCanCreateTimetables","CreateTimetables","lastSelectedTimetableState","lastSelectedTimetableStateNameLowerCase","timetableElement","querySelector","scrollIntoView","behavior","block","classList","remove","onBackToListClick","isSplitting","showPassengerList","storeTimetablePassengers","onPickPassengers","onCancelPick","timetableStateNameLowerCase","timetableStateName","passengersWhitoutPermissions","pas","timetableGroups","templateStartsTimeOfDay","templateStartsTimeOfDayChanged","templateEndsTimeOfDay","templateEndsTimeOfDayChanged","editedRide","timeOfDayUpdate","timeOfDay","onTimeOfDayEditorBlur","onRideUpdated","visibleHeaders","passengerWeekdayRides","passengersLoading","allFilteredPassengersSelected","onFetchSchedulesClick","enabled","weekend","weekDayId","onStartsClicked","onEndsClicked","missingTripPermission","arrival","rideType","RideType","Arrival","departure","Departure","weekDay","onRideCellClick","total","pageStart","pageStop","itemsLength","onAddPassengersClick","selectedFilteredPassengers","onDeletePassengersClick","amount","WeekDay","sunday","days","diffDays","abs","dayNumbersInRange","deltaDay","slice","TimeOfDayEditor","onTimeOfDayChanged","empty","editedTimeOfDay","onEditedTimeOfDayChanged","TimeOfDay","hours","minutes","textField","onEnterKeyUp","onFocus","focused","select","onBlur","submit","onWheel","deltaMinutes","deltaY","updatedTimeOfDay","addMinutes","onClick","ScheduleItemDirectionEnum","TimetableView","Ride","getRides","routeTimetableId","storeTimetable","canDeletePassengers","weekDays","WeekDays","visibleWeekDays","wd","filteredTimetablePassengers","r1","arrivals","fromHome","departures","toHome","r2","selectedWeekDay","selectPassengerWeekDay","timetableListRoute","getTimetableRidesForPassenger","getRidesForPassengerDay","minAllowedSplitDate","minAllowedSplitDateStamp","maxAllowedSplitDate","maxAllowedSplitDateStamp","tomorrowDateStamp","allowedSplitDates","getTimetablePassengersFromApi","addPassengerIds","queryCreated","queryAddPeople","transportPermissions","timetableStarted","momentNow","momentStart","isSameOrAfter","timetableState","States","splitAllowed","splitButtonTitle","splitDisabledReason","splitLimitDays","allowDaysBeforeEnd","passengersRequiredPermission","passengersPermisionsRequired","transportationPermissionRequired","permissionBetweenDates","passengersWitOutPermission","onTimetableSplitClick","nowMoment","nowToEndDuration","nowToEndDays","asDays","splitDate","ceil","splitDatePickerVisible","newTimetableFromStoreId","newRides","timetableRoute","toApiRide","templateTimeOfDay","fromId","toId","editorElement","timeOfDayEditorRef","$el","originalParent","parentNode","removeChild","closest","appendChild","timeOfDayDisplay","focusTimeOfDayTimeout","querySelectorAll","elem","focus","ridesToCreateOrUpdate","availableWeekdays","schedules","getPassengerSchedules","currentSchedule","passengerRides","tr","scheduleItemDirectionMatchesRideType","itemDirection","Start","End","usableScheduleItems","scheduleItems","si","dayOfWeek","scheduleItemRide","direction","fromMinutesFromMidnight","updating","createRideFromScheduleItem","apiRides","scheduleItem","getRideType","Unknown","creatingId","Guid","create","ridesToDelete","currentRidesForPassengerWeekday","firstRideForPassengerWeekDay","matches","updateStartsOrEnds","updateDatatableRef","updateDatatableRefInterval","clearInterval","isMounted","passId","localStorage","getItem","endTime","setInterval","appContainer","scrollTop","timetablesRoute","setItem","stringValue","showOnlyMyBookings","showExpiredBookings","onCreateBookingClick","bookingCountWithState","showBookingsAsList","filteredDestinationBookings","onBookingInfoClick","bookingPassengersCount","userCanEditBookings","bookingOrderIsCancelable","onCancelOrderBookingClick","bookingIsAccepted","bookingIsOrdered","bookingIsOrderable","onOrderBookingClick","BookingListItem","BookingStates","bookingId","bookingHasExpired","bookingStartDateTooClose","bookingStartDatePassed","bookingDaysUntilStart","bookingCurrentStateColor","bookingCurrentStateAlertClass","bookingIsSaved","unnamedPassengersCount","UpdateBookings","bookingHasPassenger","bookingPassengers","onBookingEditClick","BookingList","passengerCount","selectedBookingId","sortedDestinationBookings","canUserViewBookingsForDestinationId","lastSelectedBookingId","userCanCreateBookings","CreateBookings","lastSelectedBookingState","lastSelectedBookingStateNameLowerCase","bookingElement","OrganizationPage","organization","organizationRoot","organizationNav","firstOrganizationId","path","tag","createNewUser","userTableItems","tableItemsSearch","handleRowCLick","UsersPage","users","currentRoute","router","tableItems","placesText","destinationRoles","dr","placeText","substring","searchLower","organizationEditUserRoute","userEmail","organizationNewUserRoute","openModal","open","destinationIsValid","newDestination","validPostalCode","instances","checkAddress","matchingDestination","createDestination","CreateDestinationModal","validatePostalCode","getServiceProviders","regex","RegExp","emptyForm","resetValidation","DestinationsPage","isAdminUser","administratorIds","dialog","openPassengerGroup","newPassengerGroup","closeDialog","Name","createPassengerGroup","CreatePassengerGroup","Description","OrganizationId","resetForm","oraganizationId","PassengerGroupsPage","passengerGroup","passengerGroupId","OrganizationDetails","isEditingUser","isCreatingUser","tabs","openAddPassengerToPassengerGroupDialog","createNewPassenger","openPassengerDetails","transportationPermissionCount","openRemoveModal","openCreateNewPassengerDialog","closeCreateNewPassengerDialog","closeAddPassengerToPassengerGroupDialog","openRemoveConfirmationModal","removePassengerFromGroup","closeRemoveModal","allowUserInput","onSaveClick","maxLength","hasSsn","phoneNumbersChanged","billingUseHomeAddress","billingNameMaxlength","postalCodeMaxlength","billingCityMaxLength","tagsChanged","isEditing","panel","number","sms","showToDriver","assistant","update","removePhoneNumber","closeDropDown","addPhoneNumber","PassengerPhonenumberEditor","phoneNumbers","valueChanged","phoneNumber","newPhoneNumber","showSsn","toggleVisibility","ssn","SsnEditor","isValidSsn","ssnModified","originalSsn","padStart","getSsn","setPassengerSsn","getSsnForNewPassenger","parts","num","check","toUpperCase","PassengerDetailsEditor","validateEternalId","validateBillingCity","validateBillingName","originalPhoneNumbers","getPassengerAvailableDestinationGroups","resetOriginalPhoneNumbers","passengersOrganizationId","showSsnToOrganization","canSeeSsn","showExternalId","allDestinations","host","somethingChanged","postalCity","saveSsn","ssnEditor","getNewPassengerSsn","saveSsnForNewPassenger","PassengerUtilities","OrganizationPassengerPage","fromPhoneNumberEditorClick","newPassengerGroupPassengerRequest","modifyPassenger","createPassenger","addPassenger","existingPassengerIds","onPassengerSelect","close","PassengerInformationCard","AddPassengerToPassengerGroupForm","passengerGroupPassengers","AddPassengerToPassengerGroupDialog","existingPassenger","PassengerGroupId","PassengerIds","RemovePassengerFromGroupConfirmationDialog","PassengerGroupPassengers","selectedPassengerGroup","getMainDestination","firstDestination","storeDestination","addTenantDialogVisible","organizationAuthTenants","authTenantIsValid","newAuthTenant","createAuthTenant","AddTenantDialog","externalTenantId","AuthTenantTypeEnum","AzureAD","OrganizationAuthTenantsPage","authTenants","passengerPassengerGroups","editedTransportationPermission","routePassengerId","hasDestination","setDestinationValues","mainDestination","onActivateClick","onDeactivateClick","onDeleteClick","userCanEditSchedules","userCanEditTransportationPermissions","routePassenGerGroupIds","tripsStartDate","startDateUpdated","tripsEndDate","endDateUpdated","disableSearchTrips","onSearchTripsClick","sortedTrips","tripHeaders","loadingTrips","selectAllTripsStatus","toggleAllPicked","selectedForCancelling","formatDateTimeWithShortWeekDayAndTime","disableCancelTrips","selectedTripsCount","showCancelDialog","onCancelTripsClick","PassengerTripList","toISOString","substr","userCanReadPassengers","ReadPassengers","getPassengerTrips","tripArray","trips","dateA","startDateTime","endDateTime","dateB","selection","maxEnd","setMonth","getMonth","minStart","tripsHaveBeenSearched","clearSelections","forceSelectionForTrips","trip","toBeCancelled","cancellation","reason","finally","PassengerDestination","passengerInfoIsBeingUpdated","transportationPermissionHeaders","getQuotaTime","isEditingDisabled","editPermission","addPermission","TransportationPermissionList","TransportationPermissionSourceEnum","getPassengerTransportationPermissionInfo","hasMovitId","hasOrganizationId","organizationSavePtpAsDraftByDefault","organizationPtpDeductiblePaymentBillableAsDefault","endOf","source","Timit","streetAdress","PassengerDestinationPicker","toParent","secondaryDestination","selectDestination","clearSelection","SecondaryDestinationPicker","secondaryDestinationId","newSchedule","scheduleIndex","schedule","canEditSchedules","handleSavedSchedule","handleCreatedSchedule","previous","active","toggle","isEdited","ScheduleItem","scheduleId","originalTime","Schedule","originalName","originalStartDate","originalEndDate","schedulesExternallyEditable","originalSchedulesExternallyEditable","isExpired","apiSchedule","canEditSchedule","prop","disableTimePicker","validateInput","formattedTime","TimePicker","formatted","formatTime","prevVal","Number","minutesFromMidnight","hoursNum","floor","minutesNum","onFormattedChange","emitValue","timeSplit","timeValue","hasError","NaN","acceptedChars","modifierPressed","ctrlKey","acceptedCommands","allowedCommand","selObj","getSelection","noNumbersOrLetters","isAcceptedChar","isNumber","isAcceptedValue","reg","ScheduleEditor","canSaveSchedule","createScheduleItemRow","createNewScheduleItem","row","copy","saveSchedule","createSchedule","savedApiSchedule","updateSchedule","savedSchedule","createSuccessToast","createdApiSchedule","createdSchedule","Schedules","getActiveScheduleIndex","activeSchedule","nextIndex","defaultSchedule","getDefaultSchedule","previousSchedule","previousDate","apiSchedules","PassengerGroupPassenger","passengerGroupPassenger","PassengerGroup","apiPassengerGroup","PassengerPage","PermissionEnum","isCreating","routeMeta","onCreateTransportationPermissionErrorChanged","createTransportationPermission","onUpdateTransportationPermissionErrorChanged","updateTransportationPermission","onDeleteTransportationPermissionErrorChanged","deleteTransportationPermission","newOrganizationPassenger","userCanReadTransportationPermissions","UpdateTransportationPermissions","userCanReadSchedules","passengerGroupIds","canRead","Read","Write","canEdit","canCreate","routePassenger","initializePassengerEdit","passengerDestination","getPassengerPassengerGroups","fromApi","passengerEditor","peopleRoute","PassengerPageRoot","passengerRoot","passengerNav","stepperStep","disableBackButton","backStep","disableForwardButton","nextStep","uploadFile","clearFile","file","SheetNames","selectedSheetName","selectSheet","selectedSheet","rows","fileName","onFileInput","readFile","ExcelImporter","fileInput","click","files","reader","FileReader","onload","Uint8Array","workbook","XLSX","dateNF","readAsArrayBuffer","sheetNames","SheetSelect","sheet","sheetErrors","missingHeaders","sheetHeaders","SheetPreview","onSheetChanged","getSheetHeaders","importer","excelSheetHeaders","rowData","range","decode_range","columnLetter","getColumnAsLetters","rowNumber","cell","w","missingHeader","width","sh","alphabet","firstLetter","SheetHelper","json","sheet_to_json","JsonConvertOptions","shift","raw","defval","FileSelectionStep","showSheetSelect","firstSheetName","sn","sheetName","Sheets","getSheetAsJsonRows","getSheetAsJson","selectPassengerImporter","passengerImporterSelected","selectPtpImporter","ptpImporterSelected","fetchMatches","clearMappings","importPassengers","mappings","onPassengerSearchMappingChanged","onPassengerMappingChanged","onPhoneNumberMappingsChanged","onTransportationPermissionsMappingsChanged","passengerImporter","ptpImporters","loadingMessage","loadingProgress","showMappings","mapping","selectMainDestination","selectSecondaryDestination","useStatic","allowStatic","label","_t","selectedColumn","selectColumn","MappingHeaderSelect","MappingPropertyInput","propertyName","getUtilityLabel","passengerMapping","PassengerMapping","propertyType","k","UTILITY_KEY","updateSearchProperty","searchProperty","updatedProperty","PassengerUtilityMapper","utilityMappings","nameParts","handleMappingChanged","removeMapping","addMapping","PhoneNumberMapping","passengerExternalId","passengerSsn","PhoneNumberMapper","onMappingChanged","PhoneNumbersMapper","firstMapping","configs","NON_ENTITY_MAPPINGS","ENTITY_CREATION_MAPPING","newMapping","PassengerImportMapper","EEntityMatchType","EEntityImportState","indeterminate","toggleAll","selectRow","selectedItems","rowImportStateClass","entity","excelRowIndex","matchedByClass","entityMatchType","matchedBy","propertyUpdate","cellClass","propertyUpdateValue","PropertyUpdateHelper","newValue","propertyMapping","excelRowData","doNotUpdate","overrideValue","PropertyUpdateRow","getValue","headerValues","shownPropertyUpdates","hv","propertyUpdates","pu","importState","Mapped","Imported","Failed","Created","ExternalId","Ssn","ImportsTableCell","openOverrideEdit","overrideInput","overrideInputs","setValue","setDestinationValue","oi","PROPERTY_MAPPING_DESTINATION","PROPERTY_MAPPING_SECONDARY_DESTINATION","showEdit","PropertyUpdateTable","PassengerImportsTable","onPassengerImporterChanged","selectedEntities","entities","ImportsTableRow","PassengerEntity","pm","rowKey","getNewValueFromMapping","getIsValid","utilityUpdate","getUtilitiesPropertyUpdate","utilityUpdateIndex","propertyMappingIsDefined","utilityUpdateNewValue","hasData","PROPERTY_MAPPING_UTILITIES","PassengerImporter","updatedEntities","getNewValueString","matchPassengers","foundEntities","entityResult","utilitiesProp","mappingPropertyValues","mp","undefinedPassengerUtilities","puv","updatedUtilityValues","getNewValueAsPropertyValue","destinationMatch","destProp","getDestinationPropertyUpdate","shouldUpdateProperty","matchDestinationInSameMovitInstance","secondaryDestinationMatch","secondaryDestProp","getSecondaryDestinationPropertyUpdate","newPassenger","PROPERTY_MAPPING_SSN","first","doNotUpdateProperties","destinationProperty","getPassengerDestination","secondaryDestValue","getDestination","importedPassenger","createOrUpdatePassenger","getSsnValue","importedSsn","requiredPropertyNames","mappingProperty","createdPassenger","updatedPassenger","updatePassenger","ssnPropertyUpdate","PassengerSearchMapper","PassengerSearchMapping","PhoneNumberEntity","getNewValue","PhoneNumberImporter","passengerEntities","matchedEntities","matchFromPassengers","rowIndex","numberUpdate","numberValue","matchedPassengers","pe","pn","shouldCreateEntity","createNewPhoneNumber","createdEntity","phoneNumberProps","isCreationColumnDefined","creationPropertyUpdate","TransportationPermissionMapping","quotaTime","tripDirection","child","TransportationPermissionMapper","TransportationPermissionsMapper","TransportationPermissionEntity","TransportationPermissionImporter","createNewTransportationPermission","COSTCENTER_MAPPING","costCenterPropertyUpdate","createCostCenter","createdPtp","CostCenter","tabIndex","showSelectedRow","closeRowDialog","selectedRow","TransportationPermissionImportsTable","ptpImporter","ImportsTable","valueMax","ptpTabs","ptpTab","ImportSelectionStep","getOrInitializeMappings","selectScheduleImporter","scheduleImporterSelected","saveMappings","copyUpdate","phoneNumberImporters","m","showImportsTable","excelRows","rd","matchExisting","pnm","phoneImporter","phoneParams","ptpm","entries","ptpParams","storedMappings","initializeMappings","clearImporters","selectedEntitites","phoneNumberEntities","getPhoneNumbersForPassengerImport","pne","updatedEntity","postEntity","passengerEntityRowIndexes","entityAmount","flatMap","imp","progress","passengerEntity","ptpEntities","ptpe","pnEntity","PassengerImportsPage","newStep","searchDone","activeTrips","ids","fetchTrips","clearSearch","dialogLoading","cancelReason","percentage","activeTripsCountHeader","onPickedPassengersChange","MassCancellationOfTripsView","Trip","WithPassengerId","cancelledTripsForPassenger","groupsSize","prototype","hasOwnProperty","call","cancelPassengerTrips","updateCanceledTripsToAllTrips","updatedTrip","allowAnonymous","hideMenus","hideRefresh","showDestinationSelector","ReadArrivalDepartures","bookingListRoute","requirePassengerPermissions","singleBooking","massCancellationOfTrips","contactSupportRoute","requireAdmin","organizationDetails","organizationPassengerGroups","organizationUsers","organizationDestinations","organizationPassengerTransportationPermissions","organizationPassengerImports","resetPasswordRoute","aboutRoute","ArrivalDepartureType","tripId","at","cancelledByEmail","getHours","getMinutes","atOtherYMD","atMoment","isDeparture","nameFromEmail","apiArrivalDeparture","apiModel","BookingPhase","BookingPhases","Undefined","NotStarted","AlmostStarted","Ongoing","AlmostEnded","Ended","guidString","noteString","createdByNameFromEmail","subtract","lockDaysBeforeStart","isBefore","nonLockingStates","stateObj","lockingStates","Ok","Open","Cancelled","Rejected","Finished","stateName","stateNameLowerCase","color","alertClass","phase","YYYY","MM","DD","HH","mm","valTime","setMinutes","setSeconds","setMilliseconds","startDateTimeString","namedPassengersCount","primaryPassenger","primaryPassengerName","mockPriceEstimate","distance","duration","products","kilometers","startAreaFee","flatRate","currency","bookingsAdvanceMinimumMins","bookingsAdvanceBetweenFrom","bookingsAdvanceBetweenTo","startFee","kmFee","minimumFee","timitDestinationId","bookingState","bookingRefId","pickupDateTime","dropoffDateTime","notes","pickupDetails","supplierPricingRefId","rateId","flights","priceEstimateRoute","selectedPriceEstimateProduct","bookingRequest","flight","requests","addressToMovitAddress","transportationPermissionExternalId","orderer","company","BookingState","PassengerState","Normal","deletedAt","deletedBy","language","timitNote","homeCity","homePostalcode","billingName","billingAddress","billingPostalcode","billingCity","hasPendingPropertyChanges","isArchived","Archived","isDeleted","Deleted","isArchivedOrDeleted","phoneNumbersList","homeOrPickupAddress","splitUtilities","uid","newGroupsString","g2","yearGradeFormatted","yearGradeMatchesSearch","searchAsInteger","searchLowercase","nameA","nameB","tripType","distanceLimit","initialExpressQuota","remainingQuota","accountKey","startDateFormatted","endDateFormatted","remainingQuotaFormatted","carName","carRegisterNumber","movitPassengerId","cancelledBy","pickupTime","dropoffTime","noShowTime","tripFromApi","sourceRide","apiRide","hour","timeOfDayA","timeOfDayB","totalMinutes","isValidValue","hasNumbersOnly","newTotalMinutes","otherTimeOfDay","TimetablePhase","TimetablePhases","deleted","costCenterName","originalTimetableId","updatedByEmail","isRecurrent","oldTimetableNewEndMoment","hasEnoughTimeBeforeEnd","momentEnd","Accepted","AcceptedModified","RejectedModified","hasEndDatePassed","sp","itemIndex","dateHelper","OrderedProcessing","AcceptedOld","RejectedOld","TimetableState","use","Vuetify","iconfont","theme","customProperties","showOnlyMissingTranslations","masked","mask","translations","visiblePhrases","master","updatePhrase","selectedLanguage","Editable","innerText","TranslateView","phrases","refreshView","currentLocale","otherLocale","set","getText","translateIn","originalText","updateView","axios","closeTranslateMode","en","values","rerender","$nextTick","onLocaleChange","onMasterTranslationsChange","onMissingTranslationCounterChange","Version","versionString","partString","major","minor","revision","isGreaterOrEqual","other","selectedTimeTable","timeTables","selectTimeTable","stateColor","stateText","OrderSearch","searchOrder","searchTimeTable","timeTableSearchResult","ERouteType","AppRoot","themeId","onThemeIdChanged","$vuetify","vuetifyTheme","themes","toggleTheme","themeCssClassName","cssClassName","isResourcesLoading","isLocalesLoading","hasPermissionToTimeTables","timetablePermission","localesLoaded","splitPaneRef","splitPane","contentPaneHtmlElement","resizeHandleHtmlElement","translatePaneHtmlElement","translateModeEnabled","hostname","translateMode","storeTranslateMode","selectedOrganization","extendedToolbarTitle","currentRouteType","Organization","extendedToolbarCaption","userIsOrganizationAdmin","organizationNavRoutes","nr","currentRouterPath","onTranslateModeChanged","toggleTranslateMode","drawer","contentPanePreferredWidth","translatePanePreferredWidth","left","getMe","getAllMovitInstanceConfigs","getAllDestinations","getAllOrganizations","getOrganizationPtpNames","getOrganizationCostCenters","ellipsis","len","__appRoot","navigator","dashIndex","supportedLocaleCodes","defaultLocale","_approot","pollApiInfo","initApp","themeToggleEnabled","hash","APP_API_UNAUTHORIZED","apiInfo","frontend","apiInfoVersion","currentVersion","newVersion","pollApiInfoTimeout","apiInfoPollingTimeoutMS","onNewVersionOkClick","reload","refreshing","refreshCache","onMenuContactSupportClick","onMenuSignOutClick","onMenuSignInClick","destinationSelectRef","destRole","passengerPermission","onTimeTableSelect","timeTable","onDrawerItemClick","drawerItem","onResizeTranslationPane","enLocale","fiLocale","locales","ThemeDefault","accent","ThemeKovanen","primary","secondary","warning","ThemeEspoo","Themes","Extra","apiExtra","Requirement","apiRequirement","requirement","MovitInstanceConfig","supportsFeaturePassengerPropertyChanges","supportedFeatures","featurePassengerPropertyChanges","apiMovitInstanceConfig","movitInstanceConfig","appApi","Vapi","baseURL","online","bookingListDataTablePagination","arrivalsDeparturesSelectedDateId","l","allowDaysAfterStart","newStartMinDaysFromToday","get","action","onSuccess","payload","onError","handleApiError","appStore","getStore","namespaced","persist","actions","loadLocales","context","mutations","setTranslateMode","setThemeId","setShowExpiredTimetables","setShowOnlyMyTimetables","setShowTimetablesAsList","setTimetableListDataTablePagination","setLastSelectedTimetableId","setLastSelectedTimetableState","setShowExpiredBookings","setShowOnlyMyBookings","setShowBookingsAsList","setBookingListDataTablePagination","setLastSelectedBookingId","setLastSelectedBookingState","userApi","User","post","userStore","addDestinationPermission","newRole","DestinationRole","newAdminRole","setShowWeekends","setWeekStartsOnSunday","AuthService","BaseService","Instance","instance","credentials","res","api","auth_token","withCredentials","authService","EventBus","PermissionService","ReadAllPassengerTrips","passengerRead","passengerWrite","DeleteTransportationPermissions","getPassengerPermissionLevel","writePermissionRequired","readPermissionRequired","NoPermission","getTimetablePermissionLevel","timetableWrite","timetableRead","getArrivalPermissionLevel","arrivalWrite","arrivalRead","getBookingPermissionLevel","bookingWrite","bookingRead","getTransportationPermissionLevel","transportationPermissionWrite","transportationPermissionRead","token","authState","authStatus","authToken","hasPassengerPermission","authGetters","rootState","rootGetters","routerRoute","permissionLevel","handlePassengerPermissions","handlePassengerGroupPermissions","handlePassengerDestinationPermissions","hasDestinationPermission","numericDestinationId","destinationRole","hasTransportationPermission","pgp","userPermission","passengerGroupRoles","pgr","hasSchedulePermission","hasPermissionToPassengerGroup","hasPermissionToDestination","schedulePermission","isOrganizationAdmin","organizationCanSeeSsn","loginAsync","removeItem","azureAdSignInOrSignUp","authLogout","reject","authRequest","authSuccess","authError","dId","passengerGroupsIds","pg","hasPassengerGroupPermission","pgId","timetableApi","selectedTimetable","apiTimetables","timetableIndex","put","delete","timetableStore","setSelectedTimetable","TransportationPermissionInfo","permissionTypes","passengerApi","queryParams","handlePassengerResponse","transportationPermissionIndex","qi","q","passengerOrganizationId","findPassengerById","collections","collection","deleteLocal","passengerStore","replacePassenger","addPassengerCommit","foundPassenger","passengerIndex","changeShowActivePassengers","setHasSsnToPassenger","HasSsn","resetSelectedPassenger","isHome","priceCategoryIds","aliasAndMovitInstanceName","hasPriceCategories","destinationApi","destinationIndex","destinationStore","addDestination","rideApi","newRide","rideIndex","beforeRequest","tempApiRides","tempApiride","tempRides","newApiRides","createdRide","tempRidesCreating","createdOrUpdatedRide","updatedRides","updatedRide","rideId","rideIds","rideStore","arrivalDepartureApi","apiADs","apiAD","newAD","AD","arrivalDepartureStore","bookingApi","bookingPriceEstimate","selectedBooking","apiBookings","apiBooking","fromApiBookingDetailsViewModel","bookingIndex","estimate","bookingStore","setSelectedBooking","ptpDeductibleTypeIds","requirePtpByDefault","savePtpAsDraftByDefault","ptpDeductiblePaymentBillableAsDefault","admins","d1","d2","AuthTenant","costCenterNames","organizationApi","orgId","addedPassengers","removedUser","userIndex","authTenant","costcenterId","organizationCostCenterNames","organizationPtpDeductibleTypeIds","organizationRequirePtpByDefault","organizationStore","setExcelSheetHeaders","importerState","setRowData","getLocalStorageKey","Vuex","modules","auth","authStore","importerStore","getPersistedPaths","mods","paths","modName","modPaths","store","plugins","createPersistedState","initVuex","vuexI18n","plugin","moduleName","onTranslationNotFound","def","Router","mode","scrollBehavior","savedPosition","position","y","routeRequiresPermissions","beforeEach","matched","redirectRoutes","redirectRoute","fullPath","GoogleMaps","install","apiKey","vgaMapState","initMap","initVGAMaps","googleMapScript","createElement","libraries","paramsString","setAttribute","body","exception","appInsightsConnString","appInsights","ApplicationInsights","config","connectionString","loadAppInsights","errorHandler","componentName","_name","trackException","properties","baseName","startTrackPage","afterEach","protocol","stopTrackPage","defineProperty","productionTip","devtools","performance","Authorization","vue","sync","VueSplitPane","VConfirmDialog","applicationInsights","App","$mount","typeName","arrivalsDeparturesPermission","bookingPermission","transPermRead","transPermWrite","transPerm","apiDestinationRole","PassengerGroupUserRole","passengerGroupUserRole","PassengerGroupPermissionType","hasDestinationPermissions","permissionType","apiUser","organizationPassengerGroupsRoles","ur","searchParamKeys","dateString","toLocaleDateString","weekday","month","year","dateValue","dateStr","seed","luminosity","randomSeededNumber","sin","RandomColor","charAt","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","deferred","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","getter","__esModule","definition","enumerable","chunkId","promises","miniCssF","globalThis","Function","obj","inProgress","dataWebpackPrefix","done","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","nc","src","onScriptComplete","prev","onerror","doneFns","bind","head","Symbol","toStringTag","nmd","createStylesheet","fullhref","oldTag","linkTag","rel","onLinkComplete","errorType","realHref","insertBefore","nextSibling","findStylesheet","existingLinkTags","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","promise","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}