{"version":3,"file":"js/chunk-common.310d00a0.js","mappings":"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","sources":["webpack://rideit-frontend/./node_modules/moment/locale/ sync [/\\\\](fi(\\.js)","webpack://rideit-frontend/./src/extansions/date-ext.ts","webpack://rideit-frontend/./src/helpers/DateHelper.ts","webpack://rideit-frontend/./src/helpers/MenuHelper.ts","webpack://rideit-frontend/./src/helpers/arrayExtensions.ts","webpack://rideit-frontend/./src/locale/index.ts","webpack://rideit-frontend/./src/i18n.ts","webpack://rideit-frontend/./src/layouts/app-root.vue?2c8b","webpack://rideit-frontend/./src/components/LocaleListItemGroup.vue?151d","webpack://rideit-frontend/./src/components/LocaleListItemGroup.vue","webpack://rideit-frontend/./src/components/LocaleListItemGroup.vue?625c","webpack://rideit-frontend/./src/components/LocaleListItemGroup.vue?8bad","webpack://rideit-frontend/./src/components/NoticeBar.vue?44ae","webpack://rideit-frontend/./src/components/NoticeBar.vue","webpack://rideit-frontend/./src/components/NoticeBar.vue?be03","webpack://rideit-frontend/./src/components/NoticeBar.vue?daa6","webpack://rideit-frontend/./src/plugins/@vue-a11y/VueSkipTo.vue?4bb0","webpack://rideit-frontend/./src/plugins/@vue-a11y/VueSkipToSingle.vue?799c","webpack://rideit-frontend/./src/plugins/@vue-a11y/VueSkipToSingle.vue","webpack://rideit-frontend/./src/plugins/@vue-a11y/VueSkipToSingle.vue?ff74","webpack://rideit-frontend/./src/plugins/@vue-a11y/VueSkipToSingle.vue?e684","webpack://rideit-frontend/./src/plugins/@vue-a11y/VueSkipToList.vue?4221","webpack://rideit-frontend/./src/plugins/@vue-a11y/VueSkipToList.vue","webpack://rideit-frontend/./src/plugins/@vue-a11y/VueSkipToList.vue?4dc4","webpack://rideit-frontend/./src/plugins/@vue-a11y/VueSkipToList.vue?bcd8","webpack://rideit-frontend/./src/plugins/@vue-a11y/util.ts","webpack://rideit-frontend/./src/plugins/@vue-a11y/VueSkipTo.vue","webpack://rideit-frontend/./src/plugins/@vue-a11y/VueSkipTo.vue?21ed","webpack://rideit-frontend/./src/plugins/@vue-a11y/VueSkipTo.vue?1dfc","webpack://rideit-frontend/./src/layouts/app-root.vue","webpack://rideit-frontend/./src/layouts/app-root.vue?985f","webpack://rideit-frontend/./src/layouts/app-root.vue?0319","webpack://rideit-frontend/./src/applicationInsights.ts","webpack://rideit-frontend/./src/plugins/fontawesome-autogen.ts","webpack://rideit-frontend/./src/plugins/vuetify-fontawesome.ts","webpack://rideit-frontend/./src/plugins/vuetify.ts","webpack://rideit-frontend/./src/sanitizer.ts","webpack://rideit-frontend/./src/helpers/ColorHelper.ts","webpack://rideit-frontend/./src/filters.ts","webpack://rideit-frontend/./src/registerServiceWorker.ts","webpack://rideit-frontend/./src/plugins/googlemaps/index.ts","webpack://rideit-frontend/./src/main.ts","webpack://rideit-frontend/./src/navigationItems.ts","webpack://rideit-frontend/./src/router.ts","webpack://rideit-frontend/./src/services/restService.ts","webpack://rideit-frontend/./src/services/tokenService.ts","webpack://rideit-frontend/./src/services/localeService.ts","webpack://rideit-frontend/./src/services/cacheService.ts","webpack://rideit-frontend/./src/store/app-store.ts","webpack://rideit-frontend/./src/store/auth-store.ts","webpack://rideit-frontend/./src/store/passenger-store.ts","webpack://rideit-frontend/./src/store/trip-store.ts","webpack://rideit-frontend/./src/store/message-store.ts","webpack://rideit-frontend/./src/store/notice-store.ts","webpack://rideit-frontend/./src/store/quota-store.ts","webpack://rideit-frontend/./src/store/store.ts","webpack://rideit-frontend/./src/themes/default/theme_default.ts","webpack://rideit-frontend/./src/themes/espoo/theme_espoo.ts","webpack://rideit-frontend/./src/themes/kovanen/theme_kovanen.ts","webpack://rideit-frontend/./src/themes/fixutaxi/theme_fixutaxi.ts","webpack://rideit-frontend/./src/themes/meneva/theme_meneva.ts","webpack://rideit-frontend/./src/themes/helpbus/theme_helpbus.ts","webpack://rideit-frontend/./src/themes/tatkela/theme_tatkela.ts","webpack://rideit-frontend/./src/themes/fcg/theme_fcg.ts","webpack://rideit-frontend/./src/themes/kulkukeskus/theme_kulkukeskus.ts","webpack://rideit-frontend/./src/themes/keskustaksi/theme_keskustaksi.ts","webpack://rideit-frontend/./src/themes/fimlab/theme_fimlab.ts","webpack://rideit-frontend/./src/themes/demo/theme_demo.ts","webpack://rideit-frontend/./src/themes/lahitaksi/theme_lahitaksi.ts","webpack://rideit-frontend/./src/themes/lapha/theme_lapha.ts","webpack://rideit-frontend/./src/themes/luvn/theme_luvn.ts","webpack://rideit-frontend/./src/themes/index.ts","webpack://rideit-frontend/./src/components/AccessibleTextInputDatePicker.vue?bbcf","webpack://rideit-frontend/./src/components/AccessibleTextInputDatePicker.vue","webpack://rideit-frontend/./src/components/AccessibleTextInputDatePicker.vue?4fcb","webpack://rideit-frontend/./src/components/AccessibleTextInputDatePicker.vue?6b44","webpack://rideit-frontend/./src/components/AccessibleThreeFieldDatePicker.vue?afec","webpack://rideit-frontend/./src/components/AccessibleThreeFieldDatePicker.vue","webpack://rideit-frontend/./src/components/AccessibleThreeFieldDatePicker.vue?5de8","webpack://rideit-frontend/./src/components/AccessibleThreeFieldDatePicker.vue?2a59","webpack://rideit-frontend/./src/views/AccessibilityReport.vue?fb97","webpack://rideit-frontend/./src/views/AccessibilityReport.vue","webpack://rideit-frontend/./src/views/AccessibilityReport.vue?aa32","webpack://rideit-frontend/./src/views/AccessibilityReport.vue?8ed0","webpack://rideit-frontend/./src/views/AccessibilityReportKeusote.vue?5f24","webpack://rideit-frontend/./src/views/AccessibilityReportKeusote.vue","webpack://rideit-frontend/./src/views/AccessibilityReportKeusote.vue?7e1d","webpack://rideit-frontend/./src/views/AccessibilityReportKeusote.vue?e45b","webpack://rideit-frontend/./src/views/Booking.vue?5047","webpack://rideit-frontend/./src/components/Booking/BookingStepSelectPassenger.vue?1f51","webpack://rideit-frontend/./src/components/Booking/BookingStepSelectPassenger.vue","webpack://rideit-frontend/./src/components/Booking/BookingStepSelectPassenger.vue?f8c5","webpack://rideit-frontend/./src/components/Booking/BookingStepSelectPassenger.vue?f816","webpack://rideit-frontend/./src/components/Booking/BookingStepSelectDate.vue?62fa","webpack://rideit-frontend/./src/components/Booking/models/BookingStep.ts","webpack://rideit-frontend/./src/components/Booking/BookingStepSelectDate.vue","webpack://rideit-frontend/./src/components/Booking/BookingStepSelectDate.vue?5d72","webpack://rideit-frontend/./src/components/Booking/BookingStepSelectDate.vue?a863","webpack://rideit-frontend/./src/components/Booking/BookingStepSelectTimeAndAddresses.vue?ba3a","webpack://rideit-frontend/./src/components/Booking/models/PlacePickerDestination.ts","webpack://rideit-frontend/./src/components/PlacePickerG.vue?0afa","webpack://rideit-frontend/./src/components/PlacePickerG.vue","webpack://rideit-frontend/./src/components/PlacePickerG.vue?59af","webpack://rideit-frontend/./src/components/PlacePickerG.vue?2f08","webpack://rideit-frontend/./src/components/TimePicker.vue?de16","webpack://rideit-frontend/./src/components/TimePicker.vue","webpack://rideit-frontend/./src/components/Booking/BookingStepSelectTimeAndAddresses.vue","webpack://rideit-frontend/./src/components/TimePicker.vue?34d3","webpack://rideit-frontend/./src/components/TimePicker.vue?93df","webpack://rideit-frontend/./src/components/Booking/BookingStepSelectTimeAndAddresses.vue?b4b1","webpack://rideit-frontend/./src/components/Booking/BookingStepSelectTimeAndAddresses.vue?6447","webpack://rideit-frontend/./src/components/Booking/BookingStepEnterAdditionalInfo.vue?bd29","webpack://rideit-frontend/./src/components/Booking/PhoneNumber.vue?579a","webpack://rideit-frontend/./src/components/Booking/PhoneNumber.vue","webpack://rideit-frontend/./src/components/Booking/PhoneNumber.vue?62a9","webpack://rideit-frontend/./src/components/Booking/PhoneNumber.vue?2e69","webpack://rideit-frontend/./src/components/Booking/BookingStepEnterAdditionalInfo.vue","webpack://rideit-frontend/./src/components/Booking/BookingStepEnterAdditionalInfo.vue?0019","webpack://rideit-frontend/./src/components/Booking/BookingStepEnterAdditionalInfo.vue?d9a6","webpack://rideit-frontend/./src/components/Booking/BookingStepSelectQuota.vue?84ab","webpack://rideit-frontend/./src/components/Booking/QuotaChip.vue?d267","webpack://rideit-frontend/./src/components/Booking/QuotaChip.vue","webpack://rideit-frontend/./src/components/Booking/QuotaChip.vue?3212","webpack://rideit-frontend/./src/components/Booking/QuotaChip.vue?acc2","webpack://rideit-frontend/./src/components/Booking/BookingStepSelectQuota.vue","webpack://rideit-frontend/./src/components/Booking/BookingStepSelectQuota.vue?0a8b","webpack://rideit-frontend/./src/components/Booking/BookingStepSelectQuota.vue?020c","webpack://rideit-frontend/./src/components/Booking/BookingStepViewOrderSummary.vue?3aaf","webpack://rideit-frontend/./src/components/Booking/BookingStepViewOrderSummary.vue","webpack://rideit-frontend/./src/components/Booking/BookingStepViewOrderSummary.vue?8e1d","webpack://rideit-frontend/./src/components/Booking/BookingStepViewOrderSummary.vue?0bdd","webpack://rideit-frontend/./src/views/Booking.vue","webpack://rideit-frontend/./src/views/Booking.vue?bfee","webpack://rideit-frontend/./src/views/Booking.vue?dd40","webpack://rideit-frontend/./src/views/CancelTrips.vue?71a7","webpack://rideit-frontend/./src/views/CancelTrips.vue","webpack://rideit-frontend/./src/views/CancelTrips.vue?81dc","webpack://rideit-frontend/./src/views/CancelTrips.vue?b21f","webpack://rideit-frontend/./src/views/Home.vue?3cbc","webpack://rideit-frontend/./src/views/Home.vue","webpack://rideit-frontend/./src/views/Home.vue?e50a","webpack://rideit-frontend/./src/views/Home.vue?39aa","webpack://rideit-frontend/./src/views/Invitation.vue?b6d5","webpack://rideit-frontend/./src/views/Invitation.vue","webpack://rideit-frontend/./src/views/Invitation.vue?5b6b","webpack://rideit-frontend/./src/views/Invitation.vue?4023","webpack://rideit-frontend/./src/views/LoggedOut.vue?133a","webpack://rideit-frontend/./src/views/LoggedOut.vue","webpack://rideit-frontend/./src/views/LoggedOut.vue?cc44","webpack://rideit-frontend/./src/views/LoggedOut.vue?cd8c","webpack://rideit-frontend/./src/views/Messages.vue?ec56","webpack://rideit-frontend/./src/components/MessageItem.vue?7a70","webpack://rideit-frontend/./src/components/MessageItem.vue","webpack://rideit-frontend/./src/components/MessageItem.vue?e56a","webpack://rideit-frontend/./src/components/MessageItem.vue?ed8a","webpack://rideit-frontend/./src/components/MessageForm.vue?1256","webpack://rideit-frontend/./src/components/MessageForm.vue","webpack://rideit-frontend/./src/components/MessageForm.vue?8321","webpack://rideit-frontend/./src/components/MessageForm.vue?d626","webpack://rideit-frontend/./src/views/Messages.vue","webpack://rideit-frontend/./src/views/Messages.vue?5e21","webpack://rideit-frontend/./src/views/Messages.vue?6cbd","webpack://rideit-frontend/./src/views/PassengerTransportationPermission.vue?3a2a","webpack://rideit-frontend/./src/components/ReservationPeriodListItem.vue?d715","webpack://rideit-frontend/./src/components/ReservationPeriodListItem.vue","webpack://rideit-frontend/./src/components/ReservationPeriodListItem.vue?3d05","webpack://rideit-frontend/./src/components/ReservationPeriodListItem.vue?aa0c","webpack://rideit-frontend/./src/views/PassengerTransportationPermission.vue","webpack://rideit-frontend/./src/views/PassengerTransportationPermission.vue?b302","webpack://rideit-frontend/./src/views/PassengerTransportationPermission.vue?eb41","webpack://rideit-frontend/./src/views/PassengerTransportationPermissions.vue?6df1","webpack://rideit-frontend/./src/components/TransportationPermissionListItem.vue?80ac","webpack://rideit-frontend/./src/components/TransportationPermissionListItem.vue","webpack://rideit-frontend/./src/components/TransportationPermissionListItem.vue?8a82","webpack://rideit-frontend/./src/components/TransportationPermissionListItem.vue?2279","webpack://rideit-frontend/./src/views/PassengerTransportationPermissions.vue","webpack://rideit-frontend/./src/views/PassengerTransportationPermissions.vue?b337","webpack://rideit-frontend/./src/views/PassengerTransportationPermissions.vue?cb0f","webpack://rideit-frontend/./src/views/Passengers.vue?82e3","webpack://rideit-frontend/./src/components/PassengerListItem.vue?f679","webpack://rideit-frontend/./src/components/PassengerEdit.vue?57cd","webpack://rideit-frontend/./src/components/PassengerEdit.vue","webpack://rideit-frontend/./src/components/PassengerEdit.vue?8397","webpack://rideit-frontend/./src/components/PassengerEdit.vue?848e","webpack://rideit-frontend/./src/components/PassengerListItem.vue","webpack://rideit-frontend/./src/components/PassengerListItem.vue?f97a","webpack://rideit-frontend/./src/components/PassengerListItem.vue?303e","webpack://rideit-frontend/./src/views/Passengers.vue","webpack://rideit-frontend/./src/views/Passengers.vue?4133","webpack://rideit-frontend/./src/views/Passengers.vue?e5fd","webpack://rideit-frontend/./src/views/Password.vue?0cbf","webpack://rideit-frontend/./src/views/Password.vue","webpack://rideit-frontend/./src/views/Password.vue?e533","webpack://rideit-frontend/./src/views/Password.vue?3e4f","webpack://rideit-frontend/./src/views/PersonalInfo.vue?cda1","webpack://rideit-frontend/./src/views/PersonalInfo.vue","webpack://rideit-frontend/./src/views/PersonalInfo.vue?cdab","webpack://rideit-frontend/./src/views/PersonalInfo.vue?404b","webpack://rideit-frontend/./src/views/Privacy.vue?f3e9","webpack://rideit-frontend/./src/views/Privacy.vue","webpack://rideit-frontend/./src/views/Privacy.vue?2b62","webpack://rideit-frontend/./src/views/Privacy.vue?97dd","webpack://rideit-frontend/./src/views/PrivacyKeusote.vue?556f","webpack://rideit-frontend/./src/views/PrivacyKeusote.vue","webpack://rideit-frontend/./src/views/PrivacyKeusote.vue?9265","webpack://rideit-frontend/./src/views/PrivacyKeusote.vue?dc6a","webpack://rideit-frontend/./src/views/RegisterTravelCard.vue?2acb","webpack://rideit-frontend/./src/views/RegisterTravelCard.vue","webpack://rideit-frontend/./src/views/RegisterTravelCard.vue?7de2","webpack://rideit-frontend/./src/views/RegisterTravelCard.vue?d67a","webpack://rideit-frontend/./src/views/Trips.vue?c163","webpack://rideit-frontend/./src/components/TripListItem.vue?29b5","webpack://rideit-frontend/./src/components/TripListItem.vue","webpack://rideit-frontend/./src/components/TripListItem.vue?4fbd","webpack://rideit-frontend/./src/components/TripListItem.vue?9619","webpack://rideit-frontend/./src/views/Trips.vue","webpack://rideit-frontend/./src/views/Trips.vue?9917","webpack://rideit-frontend/./src/views/Trips.vue?4dd9","webpack://rideit-frontend/./src/views/TripsEdit.vue?35b8","webpack://rideit-frontend/./src/components/TripTrackingStatus.vue","webpack://rideit-frontend/./src/components/TripTrackingStatus.vue?bc3f","webpack://rideit-frontend/./src/components/TripTrackingStatus.vue?0a2a","webpack://rideit-frontend/./src/components/TripTrackingStatus.vue?a62f","webpack://rideit-frontend/./src/components/Map/TripMap.vue?a182","webpack://rideit-frontend/./src/components/Map/mapHelpers.ts","webpack://rideit-frontend/./src/components/Map/placeMarkerFeature.ts","webpack://rideit-frontend/./src/components/Map/placeLayer.ts","webpack://rideit-frontend/./src/components/Map/carLayer.ts","webpack://rideit-frontend/./src/components/Map/TripMap.vue","webpack://rideit-frontend/./src/components/Map/TripMap.vue?d880","webpack://rideit-frontend/./src/components/Map/TripMap.vue?a5d3","webpack://rideit-frontend/./src/views/TripsEdit.vue","webpack://rideit-frontend/./src/views/TripsEdit.vue?1e5d","webpack://rideit-frontend/./src/views/TripsEdit.vue?2e7b","webpack://rideit-frontend/./src/views/ lazy ^\\.\\/.*\\.vue$ chunkName: view-[request] namespace object"],"sourcesContent":["var map = {\n\t\"./fi\": 1897,\n\t\"./fi.js\": 1897,\n\t\"./sv\": 8760,\n\t\"./sv.js\": 8760,\n\t\"moment/locale/fi\": 1897,\n\t\"moment/locale/fi.js\": 1897,\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 = 6870;","\r\nif (!Date.prototype.toISODate) {\r\n // Returns a date that match UTC midnight at the same date\r\n Date.prototype.toISODate = function() {\r\n if (this === null) { throw new TypeError('this is null'); }\r\n const y = this.getFullYear();\r\n const m = this.getMonth() + 1;\r\n const d = this.getDate();\r\n return y + '-' + (m < 10 ? '0' + m : m) + '-' + (d < 10 ? '0' + d : d);\r\n };\r\n}\r\n","import moment from \"moment\";\r\nimport Vue from \"vue\";\r\n\r\nexport default class DateHelper {\r\n\r\n public static isoDateToFinnishDate(val: string): string {\r\n return moment(val).format('D.M.YYYY')\r\n }\r\n\r\n public static isIsoDate(val: string): boolean {\r\n const valParts = val.split(\"-\");\r\n if (valParts.length != 3){\r\n return false;\r\n }\r\n const year = valParts[0];\r\n const month = valParts[1];\r\n const dayOfMonth = valParts[2];\r\n return DateHelper.isValidYMD(year, month, dayOfMonth);\r\n }\r\n\r\n public static finnishDateToIsoDate(val: string): string | null {\r\n let valParts, year, month, dayOfMonth;\r\n if (DateHelper.isIsoDate(val)){\r\n valParts = val.split(\"-\");\r\n year = valParts[0];\r\n month = valParts[1];\r\n dayOfMonth = valParts[2];\r\n } else {\r\n valParts = val.split(\".\");\r\n if (valParts.length < 3){\r\n console.warn(\"DateHelper:\", \"Not enough date components:\", val);\r\n return null;\r\n }\r\n year = valParts[2];\r\n month = valParts[1];\r\n dayOfMonth = valParts[0];\r\n if (!DateHelper.isValidYMD(year, month, dayOfMonth)){\r\n return null;\r\n }\r\n }\r\n return year + \"-\" + month.padStart(2, \"0\") + \"-\" + dayOfMonth.padStart(2, \"0\");\r\n }\r\n\r\n public static isValidYMD(year: string, month: string, dayOfMonth: string): boolean {\r\n return DateHelper.isValidYear(year) && DateHelper.isValidMonth(month) && DateHelper.isValidDayOfMonth(dayOfMonth);\r\n }\r\n\r\n public static isValidYear(yearString: string){\r\n const year: number = DateHelper.toNumber(yearString);\r\n if (isNaN(year) || year < 1900 || year > 2999){\r\n console.warn(\"DateHelper:\", \"Year is invalid:\", year);\r\n return false;\r\n }\r\n return true;\r\n }\r\n public static isValidMonth(monthString: string){\r\n const month: number = DateHelper.toNumber(monthString);\r\n if (isNaN(month) || month < 1 || month > 12){\r\n console.warn(\"DateHelper:\", \"Month is invalid:\", month);\r\n return false;\r\n }\r\n return true;\r\n }\r\n public static isValidDayOfMonth(dayOfMonthString: string){\r\n const dayOfMonth: number = DateHelper.toNumber(dayOfMonthString);\r\n if (isNaN(dayOfMonth) || dayOfMonth < 1 || dayOfMonth > 31){\r\n console.warn(\"DateHelper:\", \"DayOfMonth is invalid:\", dayOfMonth);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public static toNumber(val: string): number {\r\n const isNumber = /^\\d+$/.test(val);\r\n return isNumber ? parseInt(val): NaN; \r\n }\r\n}","import Vue from \"vue\";\r\n\r\nexport default class MenuHelper {\r\n public static menuTabPressed(event: KeyboardEvent, component: Vue){\r\n const eventTarget = event.target as any;\r\n if (!eventTarget){\r\n return;\r\n }\r\n let menu = component.$refs[eventTarget.dataset.menu] as any;\r\n if (!menu){\r\n return;\r\n }\r\n // make sure children are evaluated\r\n menu.getTiles();\r\n // In most cases, we want the event to be stopped,\r\n // however, in the cases where we tab 'out of' the menu,\r\n // we want to propagate the event.\r\n let propagate = false;\r\n \r\n if (menu.isActive) {\r\n if (event.shiftKey) {\r\n if (menu.listIndex <= 0) {\r\n menu.isActive = false;\r\n propagate = true;\r\n } else {\r\n menu.prevTile();\r\n }\r\n } else {\r\n if (menu.listIndex < 0) {\r\n menu.firstTile();\r\n } else if (menu.listIndex + 1 >= menu.tiles.length) {\r\n menu.isActive = false;\r\n propagate = true;\r\n } else {\r\n menu.nextTile()\r\n }\r\n }\r\n } else {\r\n propagate = true;\r\n }\r\n if (!propagate) {\r\n event.preventDefault();\r\n }\r\n }\r\n}","if (!Array.prototype.indexById) {\r\n // Returns Movit models index in array by given Id or model\r\n Array.prototype.indexById = function(id: number | string | object) {\r\n if (!Array.isArray(this)) { throw new TypeError('this is null'); }\r\n if (typeof (id) === 'undefined') { return -1; }\r\n if (typeof (id) === 'object') {\r\n id = (id as any).id;\r\n }\r\n for (let i = 0; i < this.length; i++) {\r\n if (this[i].id === id) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n}\r\n\r\nif (!Array.prototype.replaceOrAddById) {\r\n // Replaces Movit model in array if Id matches and returns the replaced index (-1 if not found)\r\n Array.prototype.replaceOrAddById = function(item: any) {\r\n if (!Array.isArray(this)) { throw new TypeError('this is null'); }\r\n const i = this.indexById(item);\r\n if (i >= 0) {\r\n this.splice(i, 1, item);\r\n return i;\r\n } else {\r\n this.push(item);\r\n return this.length - 1;\r\n }\r\n };\r\n}\r\n","export default {\r\n en: require('./en.json'),\r\n fi: require('./fi.json'),\r\n sv: require('./sv.json'),\r\n};\r\n","import Vue from 'vue';\r\nimport VueI18n, { I18nOptions, TranslateResult, Path } from 'vue-i18n';\r\nimport messages from './locale';\r\nimport store from './store/store';\r\n\r\n// Declare $tt method for translating theme specific translations\r\nVue.prototype.$tt = function(key: Path, ...values: any): TranslateResult {\r\n const themeId = this.$store.state.app.themeId;\r\n const vueI18n = this.$i18n;\r\n\r\n const exists = vueI18n._te(key + '.' + themeId, vueI18n.locale, vueI18n._getMessages(), ...values);\r\n if (exists) {\r\n key = key + '.' + themeId;\r\n }\r\n return vueI18n._t(key, vueI18n.locale, vueI18n._getMessages(), this, ...values);\r\n};\r\n\r\n// Create VueI18n instance with options\r\nVue.use(VueI18n);\r\nconst i18n = new VueI18n({\r\n locale: store.getters['app/locale'], // set locale\r\n fallbackLocale: 'fi',\r\n messages,\r\n silentTranslationWarn: true,\r\n});\r\n\r\nexport default i18n;\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-app',{class:[_vm.themeCssClassName],attrs:{\"id\":\"rideit-app\",\"dark\":_vm.theme.dark}},[_c('div',{attrs:{\"id\":\"top\",\"tabindex\":\"-1\"}}),_c('div',{staticClass:\"a11y-top-bar\",attrs:{\"id\":\"skip-to\"}},[(!_vm.drawer)?_c('VueSkipTo',{attrs:{\"to\":\"#main-content\",\"label\":_vm.$t('general.jump_to_content')}}):_vm._e()],1),_c('div',{staticStyle:{\"position\":\"absolute\"},attrs:{\"id\":\"main-menu-title\",\"aria-live\":\"polite\"}},[_vm._v(\" \"+_vm._s(_vm.mainMenuStatusText)+\" \")]),_c('v-app-bar',{attrs:{\"app\":\"\",\"height\":_vm.appBarHeight,\"clipped-left\":true,\"dark\":_vm.theme.toolbarDark,\"color\":\"primary\",\"absolute\":\"\",\"aria-hidden\":_vm.drawer}},[_c('v-app-bar-nav-icon',{ref:\"navOpenButtonRef\",attrs:{\"title\":_vm.$t('general.button.menu'),\"tabindex\":_vm.$vuetify.breakpoint.mobile && _vm.drawer ? -1 : 0},on:{\"click\":function($event){$event.stopPropagation();return _vm.onNavOpenClick.apply(null, arguments)}}}),_c('router-link',{staticClass:\"pa-2\",attrs:{\"to\":\"/\",\"tabindex\":_vm.$vuetify.breakpoint.mobile && _vm.drawer ? -1 : 0,\"title\":_vm.$t('menu.home_alt_text', [_vm.theme.name])}},[(_vm.hasLogo)?_c('img',{staticClass:\"logo\",attrs:{\"src\":_vm.themeLogo,\"height\":\"33\",\"aria-hidden\":\"true\"}}):_vm._e(),_c('v-toolbar-title',{staticClass:\"white--text\"},[_vm._v(_vm._s(_vm.title))])],1),_c('v-spacer'),(_vm.isAuthenticated)?_c('v-menu',{ref:\"myAccountMenuRef\",attrs:{\"attach\":\"#myAccountMenuAnchor\",\"offset-y\":\"\",\"bottom\":\"\",\"left\":\"\",\"internal-activator\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._b({staticClass:\"my-account-button\",attrs:{\"title\":_vm.$t('general.button.my_account'),\"icon\":\"\",\"data-menu\":\"myAccountMenuRef\",\"aria-haspopup\":\"false\",\"tabindex\":_vm.$vuetify.breakpoint.mobile && _vm.drawer ? -1 : 0},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }return _vm.menuTabPressed.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return on.keydown.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }return on.keydown.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }return on.keydown.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return on.keydown.apply(null, arguments)}],\"click\":on.click}},'v-btn',attrs,false),[_c('v-icon',{attrs:{\"dark\":\"\"}},[_vm._v(\"$fas-fa-user-circle\")])],1)]}}],null,false,1205062546)},[_c('v-list',[_c('v-list-item',{attrs:{\"to\":\"/personal-info\"}},[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(\"menu.personal-info\")))])],1),(!_vm.userHasPassword)?_c('v-list-item',{attrs:{\"to\":\"/password\"}},[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(\"menu.create-password\")))])],1):_vm._e(),(_vm.userHasPassword)?_c('v-list-item',{attrs:{\"to\":\"/password\"}},[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(\"menu.change-password\")))])],1):_vm._e(),_c('v-list-item',{attrs:{\"to\":\"/logout\"}},[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(\"menu.logout\")))])],1)],1)],1):_vm._e(),_c('div',{attrs:{\"id\":\"myAccountMenuAnchor\"}})],1),_c('v-navigation-drawer',{ref:\"drawerRef\",attrs:{\"clipped\":true,\"fixed\":\"\",\"app\":\"\",\"width\":\"380\",\"disable-resize-watcher\":\"\",\"dark\":_vm.theme.menuDark,\"right\":_vm.theme.menuRight,\"aria-label\":_vm.$t('general.main_menu_links'),\"aria-expanded\":_vm.drawer,\"id\":\"main-menu\",\"mobile-breakpoint\":\"0\",\"temporary\":\"\"},model:{value:(_vm.drawer),callback:function ($$v) {_vm.drawer=$$v},expression:\"drawer\"}},[_c('v-toolbar',{attrs:{\"absolute\":\"\",\"height\":\"54\",\"width\":\"379\",\"elevation\":\"0\"}},[_c('v-spacer'),_c('v-app-bar-nav-icon',{attrs:{\"title\":_vm.$t('general.button.menu'),\"aria-label\":_vm.$t('general.button.close_menu'),\"aria-flowto\":\"main-menu-item-0\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onNavCloseClick.apply(null, arguments)}}},[_c('v-icon',[_vm._v(\"$fas-fa-close\")])],1)],1),_c('v-list',{ref:\"navListRef\",staticClass:\"mt-12\",attrs:{\"id\":\"main-menu-listbox\"}},[_c('v-list-item-group',{attrs:{\"id\":\"main-menu-listbox\",\"aria-label\":_vm.$t('general.main_menu_links')}},[_c('div',{staticStyle:{\"visibility\":\"hidden\",\"height\":\"0\"},attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" ..... \")]),_vm._l((_vm.navigationItems),function(item,index){return _c('v-list-item',{key:item.url,attrs:{\"id\":'main-menu-item-' + index,\"to\":item.url,\"role\":\"option\",\"aria-selected\":index == _vm.currentNavigationItemIndex ? 'true' : 'false',\"tabindex\":_vm.drawer ? 0 : -1,\"aria-hidden\":!_vm.drawer},on:{\"click\":function($event){return _vm.onNavItemClick(item)}}},[_c('v-list-item-content',[_c('v-list-item-title',[_c('v-icon',[_vm._v(_vm._s(item.icon))]),(item.badge && item.badgeContent)?_c('v-badge',{attrs:{\"color\":\"red\",\"overlap\":\"\",\"bottom\":\"\",\"offset-y\":\"15\",\"offset-x\":\"5\"},scopedSlots:_vm._u([{key:\"badge\",fn:function(){return [_c('span',[_vm._v(_vm._s(item.badgeContent))])]},proxy:true}],null,true),model:{value:(item.badge),callback:function ($$v) {_vm.$set(item, \"badge\", $$v)},expression:\"item.badge\"}}):_vm._e(),_c('span',{staticClass:\"ml-2\"}),_vm._v(\" \"+_vm._s(_vm.$t(item.text))+\" \")],1)],1)],1)})],2),_c('v-subheader',{attrs:{\"aria-hidden\":true}}),_c('LocaleListItemGroup',{attrs:{\"tabindex\":_vm.drawer ? false : -1,\"aria-hidden\":!_vm.drawer,\"bottom\":\"\",\"left\":\"\"}})],1),_c('div',{staticStyle:{\"height\":\"72px\"}})],1),_c('v-main',{ref:\"appContentMainRef\",staticClass:\"app-body-container\",attrs:{\"aria-hidden\":_vm.drawer}},[(!_vm.$store.state.app.online)?_c('v-alert',{staticClass:\"mt-0 pt-3 pb-3\",attrs:{\"type\":\"error\",\"transition\":\"slide-y-transition\",\"aria-live\":\"assertive\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"error.network_offline\"))+\" \")]):_vm._e(),(_vm.isLoading)?_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"justify-center\":\"\",\"column\":\"\",\"fill-height\":\"\"}},[_c('v-col',{staticClass:\"text-center\",attrs:{\"cols\":12}},[_c('v-progress-circular',{attrs:{\"size\":70,\"width\":7,\"color\":\"primary\",\"indeterminate\":\"\"}}),_c('p',{staticClass:\"body-2 mt-3\"},[_vm._v(_vm._s(_vm.$t(\"general.loading\"))+\"...\")])],1)],1)],1):_vm._e(),(!_vm.isLoading)?_c('router-view'):_vm._e()],1),_c('v-footer',{staticClass:\"pa-0 sticky\",attrs:{\"aria-hidden\":_vm.drawer}},[(_vm.isAuthenticated)?_c('v-bottom-navigation',{attrs:{\"tag\":\"nav\",\"aria-label\":_vm.$t('general.footer_menu_links'),\"value\":_vm.bottomNav,\"background-color\":\"primary\",\"color\":_vm.bottomNavColor,\"shift\":\"\",\"dark\":_vm.theme.bottomNavDark}},[_vm._l((_vm.bottomNavItems),function(item,index){return _c('v-btn',{key:item.url,attrs:{\"dark\":\"\",\"to\":{ path: item.url },\"title\":_vm.$t(item.text)}},[(index === _vm.bottomNav)?[_c('span',[_vm._v(_vm._s(_vm.$t(item.text)))])]:_vm._e(),_c('v-icon',[_vm._v(_vm._s(item.icon))])],2)}),_c('v-badge',{attrs:{\"color\":\"red\",\"overlap\":\"\",\"value\":_vm.unseenMessages,\"content\":_vm.unseenMessages,\"offset-x\":\"30\",\"offset-y\":\"25\"},model:{value:(_vm.showMessageBadge),callback:function ($$v) {_vm.showMessageBadge=$$v},expression:\"showMessageBadge\"}})],2):_vm._e(),(_vm.themeToggleEnabled)?_c('v-btn',{staticClass:\"theme-switch-button\",attrs:{\"icon\":\"\",\"title\":\"Theme\"},on:{\"click\":_vm.toggleTheme}},[_c('v-icon',[_vm._v(\"palette\")])],1):_vm._e(),_c('notice-bar')],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-list-item-group',{attrs:{\"aria-label\":_vm.$t('general.button.language_selection')}},[_c('div',{staticStyle:{\"visibility\":\"hidden\",\"height\":\"0\"},attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" ..... \")]),_c('v-list-item',{attrs:{\"role\":\"option\",\"disabled\":_vm.currentLocale === 'fi',\"aria-selected\":_vm.currentLocale === 'fi',\"lang\":\"fi\"},on:{\"click\":function($event){return _vm.changeLocale('fi')}}},[_c('v-list-item-content',[_c('v-list-item-title',[_c('span',{staticClass:\"ml-2\"}),_vm._v(\" Suomeksi \")])],1)],1),_c('v-list-item',{attrs:{\"role\":\"option\",\"disabled\":_vm.currentLocale === 'en',\"aria-selected\":_vm.currentLocale === 'en',\"lang\":\"en\"},on:{\"click\":function($event){return _vm.changeLocale('en')}}},[_c('v-list-item-content',[_c('v-list-item-title',[_c('span',{staticClass:\"ml-2\"}),_vm._v(\" In English \")])],1)],1),_c('v-list-item',{attrs:{\"role\":\"option\",\"disabled\":_vm.currentLocale === 'sv',\"aria-selected\":_vm.currentLocale === 'sv',\"lang\":\"sv\"},on:{\"click\":function($event){return _vm.changeLocale('sv')}}},[_c('v-list-item-content',[_c('v-list-item-title',[_c('span',{staticClass:\"ml-2\"}),_vm._v(\" PÃ¥ svenska \")])],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\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport ITheme from '../themes/ITheme';\r\nimport { IAppState } from '../store/app-store';\r\nimport Themes from '../themes';\r\n\r\n@Component\r\n export default class LocaleDropdown extends Vue {\r\n locales: string[] = ['en', 'fi', 'sv'];\r\n\r\n changeLocale(locale: string) {\r\n this.$store.commit('app/changeLocale', locale);\r\n // Due to a11y requirements, we unfortunately need to reload the page\r\n // if we don't want to manually reset all state to \"initial\"\r\n window.setTimeout(() => {window.location.reload()}, 200);\r\n }\r\n\r\n get currentLocale() {\r\n return this.appState.locale;\r\n }\r\n\r\n get appState(): IAppState {\r\n return this.$store.state.app;\r\n }\r\n\r\n get themes(): ITheme[] {\r\n return this.appState.themes;\r\n }\r\n\r\n get theme(): ITheme {\r\n const theme = this.themes.find(t => t.id === this.themeId);\r\n return theme ? theme : Themes.themeDefault;\r\n }\r\n\r\n get themeId() {\r\n return this.appState.themeId;\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LocaleListItemGroup.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LocaleListItemGroup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LocaleListItemGroup.vue?vue&type=template&id=9a68f252&\"\nimport script from \"./LocaleListItemGroup.vue?vue&type=script&lang=ts&\"\nexport * from \"./LocaleListItemGroup.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\ninstallComponents(component, {VListItem,VListItemContent,VListItemGroup,VListItemTitle})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-snackbar',{attrs:{\"color\":_vm.color,\"timeout\":20000,\"multi-line\":\"\",\"role\":\"alertdialog\",\"aria-label\":_vm.$t('general.notifications')},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_vm._v(\" \"+_vm._s(_vm.$t(_vm.text))+\" \"),_c('v-btn',{attrs:{\"color\":\"white\",\"text\":\"\"},on:{\"click\":_vm.buttonClicked}},[_vm._v(\" \"+_vm._s(_vm.$t(_vm.button))+\" \")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue } from 'vue-property-decorator';\r\nimport { INoticeState } from '../store/notice-store';\r\n\r\n@Component\r\nexport default class NoticeBar extends Vue {\r\n\r\n get noticeState(): INoticeState {\r\n return this.$store.state.notice;\r\n }\r\n\r\n get show() {\r\n return this.noticeState.show;\r\n }\r\n set show(val) {\r\n this.$store.commit('notice/hideNotice');\r\n }\r\n\r\n get text() {\r\n return this.noticeState.text;\r\n }\r\n\r\n get color() {\r\n return this.noticeState.color;\r\n }\r\n\r\n get button() {\r\n return this.noticeState.button;\r\n }\r\n\r\n buttonClicked() {\r\n if (this.noticeState.link) {\r\n this.$router.push({ path: this.noticeState.link });\r\n }\r\n this.$store.commit('notice/hideNotice');\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NoticeBar.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NoticeBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NoticeBar.vue?vue&type=template&id=15614b80&\"\nimport script from \"./NoticeBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./NoticeBar.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VSnackbar } from 'vuetify/lib/components/VSnackbar';\ninstallComponents(component, {VBtn,VSnackbar})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"skipTo\",staticClass:\"vue-skip-to\",class:{ 'focused': _vm.focused }},[_c(_vm.comp,_vm._b({tag:\"component\",on:{\"focused\":_vm.focusWithin,\"focus-within\":_vm.focusWithin}},'component',_vm.props,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('a',{staticClass:\"vue-skip-to__link\",attrs:{\"href\":_vm.to},on:{\"focus\":function($event){return _vm.$emit('focused', true)},\"blur\":function($event){return _vm.$emit('focused', false)}}},[_vm._t(\"default\",function(){return [_vm._v(_vm._s(_vm.label))]})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator'\r\n// import { programmaticFocus, focusedTags } from './util'\r\n\r\n@Component({\r\n name: \"VueSkipToSingle\"\r\n})\r\nexport default class VueSkipToSingle extends Vue {\r\n\r\n @Prop({default: 'Skip to main content'})\r\n label!: string;\r\n\r\n @Prop({default: '#main'})\r\n to!: string;\r\n\r\n // handleFocusElement (event: Event) {\r\n // const target = event.target as HTMLElement;\r\n // if (!target){\r\n // return;\r\n // }\r\n // const href = target.getAttribute('href');\r\n // if (!href){\r\n // return;\r\n // }\r\n // this.focusElement(href.substring(1))\r\n // }\r\n\r\n // focusElement (id: string) {\r\n // if (!id) {\r\n // return;\r\n // }\r\n // const element = window.document.getElementById(id)\r\n // if (!element) {\r\n // return;\r\n // }\r\n // if (!focusedTags.test(element.tagName.toLowerCase())){\r\n // this.$router.replace({ hash: this.to });\r\n // return programmaticFocus(element);\r\n // }\r\n // element.focus();\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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VueSkipToSingle.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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VueSkipToSingle.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VueSkipToSingle.vue?vue&type=template&id=5024035d&\"\nimport script from \"./VueSkipToSingle.vue?vue&type=script&lang=ts&\"\nexport * from \"./VueSkipToSingle.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{staticClass:\"vue-skip-to__nav\",attrs:{\"aria-labelledby\":\"list-title\"}},[_c('span',{attrs:{\"id\":\"list-title\"}},[_vm._v(_vm._s(_vm.listLabel))]),_c('ul',{staticClass:\"vue-skip-to__nav-list\"},_vm._l((_vm.to),function(el){return _c('li',{key:el.anchor,staticClass:\"vue-skip-to__nav-list-item\",on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }$event.preventDefault();return _vm.handleKeydown.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }$event.preventDefault();return _vm.handleKeydown.apply(null, arguments)}]}},[_c('VueSkipToSingle',{attrs:{\"to\":el.anchor,\"aria-label\":el.ariaLabel || el.label},on:{\"focused\":function($event){return _vm.$emit('focus-within', $event)}}},[_vm._v(\" \"+_vm._s(el.label)+\" \")])],1)}),0)])}\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, Component, Prop } from 'vue-property-decorator'\r\nimport VueSkipToSingle from './VueSkipToSingle.vue'\r\n\r\n@Component({\r\n name: \"VueSkipToList\",\r\n components: {\r\n VueSkipToSingle\r\n }\r\n})\r\nexport default class VueSkipToList extends Vue {\r\n\r\n @Prop({default: 'Skip to'})\r\n listLabel!: string;\r\n\r\n @Prop({\r\n default: () => [], \r\n validator: (val) => {\r\n return Array.isArray(val) &&\r\n val.every(({ anchor, label }) => (\r\n typeof anchor === 'string' &&\r\n anchor.indexOf('#') === 0 &&\r\n typeof String(label) === 'string'\r\n ))\r\n }\r\n })\r\n to!: Array<{ anchor: string, label: string, ariaLabel: string }>;\r\n\r\n handleKeydown ({key, target}: { key: string, target: HTMLElement }) {\r\n const parent = target.parentElement\r\n if (!parent){ \r\n return;\r\n }\r\n\r\n const itemList = /(ArrowUp|Up)/g.test(key) \r\n ? parent.previousElementSibling \r\n : parent.nextElementSibling\r\n\r\n if (!itemList){ \r\n return;\r\n }\r\n\r\n const link = itemList.getElementsByTagName('a')\r\n if (link.length) { \r\n link[0].focus()\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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VueSkipToList.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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VueSkipToList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VueSkipToList.vue?vue&type=template&id=88aab334&\"\nimport script from \"./VueSkipToList.vue?vue&type=script&lang=ts&\"\nexport * from \"./VueSkipToList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export function programmaticFocus (el: HTMLElement, timeout = 1000) {\r\n const originalTabIndex = el.getAttribute('tabindex')\r\n el.setAttribute('tabindex', '-1')\r\n el.focus();\r\n if (!originalTabIndex){\r\n setTimeout(() => el.removeAttribute('tabindex'), timeout);\r\n } else {\r\n setTimeout(() => el.setAttribute('tabindex', originalTabIndex), timeout);\r\n }\r\n}\r\n\r\nexport const focusedTags = new RegExp('^(a|select|input|button|textarea)', 'i');\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport VueSkipToSingle from './VueSkipToSingle.vue'\r\nimport VueSkipToList from './VueSkipToList.vue'\r\nimport { programmaticFocus, focusedTags } from './util'\r\nimport { Vue, Component, Prop } from 'vue-property-decorator'\r\n\r\n@Component({\r\n name: \"VueSkipTo\"\r\n})\r\nexport default class VueSkipTo extends Vue {\r\n\r\n @Prop({default: 'Skip to'})\r\n listLabel!: string;\r\n \r\n @Prop({default: 'Skip to main content'})\r\n label!: string;\r\n \r\n @Prop({default: 'main'})\r\n to!: string | Array<{ anchor: string, label: string, ariaLabel: string }>;\r\n\r\n @Prop({default: 'top'})\r\n top!: string | Array<{ anchor: string, label: string, ariaLabel: string }>;\r\n\r\n focused = false;\r\n \r\n get isList () {\r\n return Array.isArray(this.to)\r\n }\r\n\r\n get comp () {\r\n return this.isList ? VueSkipToList : VueSkipToSingle\r\n }\r\n\r\n get props () {\r\n if (this.isList) return { listLabel: this.listLabel, to: this.to }\r\n return { label: this.label, to: this.to }\r\n }\r\n\r\n focusWithin(val: boolean) {\r\n this.focused = val\r\n }\r\n\r\n mounted () {\r\n if (this.$route) {\r\n this.$watch('$route.path', () => {\r\n // const skipTo = this.$refs.skipTo;\r\n // if (skipTo){\r\n // const el = (skipTo as Vue).$el;\r\n // this.$nextTick(() => programmaticFocus(skipTo as HTMLElement))\r\n // }\r\n if (typeof(this.top) === \"string\"){\r\n const element = window.document.getElementById(this.top)\r\n if (!element) {\r\n return;\r\n }\r\n if (!focusedTags.test(element.tagName.toLowerCase())){\r\n this.$router.replace({ hash: this.top });\r\n return programmaticFocus(element);\r\n }\r\n }\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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VueSkipTo.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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VueSkipTo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VueSkipTo.vue?vue&type=template&id=6de35538&\"\nimport script from \"./VueSkipTo.vue?vue&type=script&lang=ts&\"\nexport * from \"./VueSkipTo.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./VueSkipTo.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 LocaleListItemGroup from \"../components/LocaleListItemGroup.vue\";\r\nimport NoticeBar from \"../components/NoticeBar.vue\";\r\nimport { TranslateResult } from \"vue-i18n\";\r\nimport ITheme from \"../themes/ITheme\";\r\nimport { IAppState } from \"../store/app-store\";\r\nimport Themes from \"../themes\";\r\nimport Vuetify from \"vuetify\";\r\nimport NavigationItems from \"@/navigationItems\";\r\nimport MenuHelper from \"@/helpers/MenuHelper\";\r\nimport { Route } from \"vue-router\";\r\nimport VueSkipTo from \"@/plugins/@vue-a11y/VueSkipTo.vue\"\r\n\r\n@Component({\r\n components: {\r\n LocaleListItemGroup,\r\n NoticeBar,\r\n VueSkipTo\r\n },\r\n})\r\nexport default class AppRoot extends Vue {\r\n drawer = false;\r\n isLoading: boolean = true;\r\n color: string = \"primary\";\r\n themeToggleEnabled: boolean = false;\r\n mainMenuStatusText: string | TranslateResult = \"\";\r\n\r\n @Watch(\"drawer\")\r\n drawerChanged(val: boolean){\r\n let drawerStateIndicatorElem = document.getElementById('main-menu-title') as HTMLElement;\r\n if (drawerStateIndicatorElem){\r\n drawerStateIndicatorElem.setAttribute(\"aria-hidden\", \"false\");\r\n }\r\n if (val){\r\n this.mainMenuStatusText = this.$t(\"general.main_menu_title_open\");\r\n // Keep focus in the drawer now that it's open\r\n window.addEventListener('focusin', this.onDrawerFocusin);\r\n } else {\r\n this.mainMenuStatusText = this.$t(\"general.main_menu_title_closed\");\r\n // Stop keeping focus in the drawer now that it's closed\r\n window.removeEventListener('focusin', this.onDrawerFocusin);\r\n }\r\n if (drawerStateIndicatorElem){\r\n window.setTimeout(() => {\r\n drawerStateIndicatorElem.setAttribute(\"aria-hidden\", \"true\");\r\n }, 1000);\r\n }\r\n }\r\n\r\n onDrawerFocusin (e: Event) {\r\n if (!e){\r\n return;\r\n } \r\n const ref = (this.$refs.drawerRef as Vue);\r\n if (!ref){\r\n return;\r\n }\r\n const drawerElem = ref.$el as HTMLElement;\r\n const target = e.target as HTMLElement;\r\n if (\r\n !!target &&\r\n drawerElem &&\r\n // It isn't the document or the drawer body\r\n ![document, drawerElem].includes(target) &&\r\n // It isn't inside the drawer body\r\n !drawerElem.contains(target) // &&\r\n // We're the topmost drawer\r\n // this.activeZIndex >= this.getMaxZIndex() &&\r\n // It isn't inside a dependent element (like a menu)\r\n // !this.getOpenDependentElements().some(el => el.contains(target))\r\n ) {\r\n // We must have focused something outside the drawer (or its children)\r\n // Find and focus the first available element inside the dialog\r\n const focusable = drawerElem.querySelectorAll(\r\n 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n )\r\n const el = [...focusable].find(el => !el.hasAttribute('disabled') && !el.matches('[tabindex=\"-1\"]')) as HTMLElement | undefined\r\n el && el.focus()\r\n }\r\n }\r\n\r\n get appBarHeight() {\r\n if (this.themeId !== \"default\") {\r\n return 56;\r\n }\r\n }\r\n\r\n get showTopNav() {\r\n return this.themeId !== \"default\";\r\n }\r\n\r\n get showBottomNav() {\r\n return this.themeId === \"default\";\r\n }\r\n\r\n get bookingEnabled() {\r\n return this.theme.booking;\r\n }\r\n\r\n get appState(): IAppState {\r\n return this.$store.state.app;\r\n }\r\n\r\n get themes(): ITheme[] {\r\n return this.appState.themes;\r\n }\r\n\r\n get theme(): ITheme {\r\n return this.$store.getters[\"app/theme\"];\r\n }\r\n\r\n get themeId() {\r\n return this.appState.themeId;\r\n }\r\n\r\n get hasLogo() {\r\n return !!this.themeLogo;\r\n }\r\n\r\n get themeLogo() {\r\n switch (this.themeId) {\r\n case \"kovanen\":\r\n return require(\"../themes/kovanen/kovanen-logo-valkoinen-260.png\");\r\n case \"fixutaxi\":\r\n return require(\"../themes/fixutaxi/logo.png\");\r\n case \"meneva\":\r\n return require(\"../themes/meneva/logo.svg\");\r\n case \"espoo\":\r\n return require(\"../themes/espoo/espoo_logo.png\");\r\n case \"fcg\":\r\n return require(\"../themes/fcg/fcg_title_valkoinen.png\");\r\n case \"kulkukeskus\":\r\n return require(\"../themes/kulkukeskus/kulkukeskus_logo.png\");\r\n case \"keskustaksi\":\r\n return require(\"../themes/keskustaksi/logo-keskustaksi.png\");\r\n case \"th\":\r\n return require(\"../themes/th/logo-taksihelsinki.png\");\r\n case \"fimlab\":\r\n return require(\"../themes/fimlab/logo-fimlab.png\");\r\n case \"lahitaksi\":\r\n return require(\"../themes/lahitaksi/logo-lahitaksi.png\");\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n @Watch(\"themeId\", { immediate: true })\r\n onThemeIdChanged(val: string, oldVal: string) {\r\n if (!this.theme) {\r\n throw new Error(\"Theme was not found with theme id \" + val);\r\n return;\r\n }\r\n Object.assign(this.$vuetify.theme.themes.light, this.theme.vuetifyTheme);\r\n }\r\n\r\n toggleTheme() {\r\n const themeIndex = this.themes.findIndex((t) => t.id === this.themeId);\r\n const newThemeIndex =\r\n themeIndex < this.themes.length - 1 ? themeIndex + 1 : 0;\r\n const newThemeId = this.themes[newThemeIndex].id;\r\n this.$store.dispatch(\"app/setThemeId\", newThemeId);\r\n }\r\n\r\n get themeCssClassName() {\r\n return this.theme.cssClassName;\r\n }\r\n\r\n get currentRoute(): Route {\r\n return this.$route;\r\n }\r\n\r\n get currentNavigationItemIndex(): number {\r\n const index = this.navigationItems.findIndex(i => i.url === this.currentRoute.path);\r\n return index;\r\n }\r\n \r\n get navigationItems() {\r\n let items = this.theme.menuNavigationItems;\r\n\r\n const messages = items.find((i) => i === NavigationItems.messages);\r\n if (messages) {\r\n messages.badge = this.showMessages;\r\n messages.badgeContent = this.unseenMessages;\r\n }\r\n if (this.userHasPassword) {\r\n items = items.concat([NavigationItems.changePassword]);\r\n } else {\r\n items = items.concat([NavigationItems.createPassword]);\r\n }\r\n items = items.concat([NavigationItems.logout]);\r\n\r\n items = items\r\n .filter((item) => this.showMessages || item.url !== \"/messages\")\r\n .filter((item) => !item.requireAuth || this.isAuthenticated);\r\n return items;\r\n }\r\n\r\n get isAuthenticated() {\r\n return this.$store.getters[\"auth/isAuthenticated\"];\r\n }\r\n\r\n get userHasPassword() {\r\n return this.$store.getters[\"app/userHasPassword\"];\r\n }\r\n\r\n get title(): TranslateResult {\r\n switch (this.$store.state.route.name) {\r\n case \"terms\": {\r\n return this.$t(\"menu.terms_of_service\");\r\n }\r\n default: {\r\n return this.$tt(\"sitetitle\");\r\n }\r\n }\r\n }\r\n\r\n get currentBottomNavigationItemIndex(): number {\r\n const index = this.bottomNavItems.findIndex(i => i.url === this.currentRoute.path);\r\n return index;\r\n }\r\n\r\n get bottomNavItems(): INavigationItem[] {\r\n return this.theme.bottomNavNavigationItems.filter(\r\n (item) => this.showMessages || item.url !== \"/messages\"\r\n );\r\n }\r\n\r\n get bottomNav() {\r\n const path = this.$store.state.route.path;\r\n const index = this.theme.bottomNavNavigationItems.findIndex(\r\n (i) => i.url === path\r\n );\r\n return index >= 0 ? index : undefined;\r\n }\r\n\r\n get bottomNavColor() {\r\n if (this.theme) {\r\n const color = this.theme.vuetifyTheme.bottomNavColor;\r\n return color ? color : \"#ffffff\";\r\n }\r\n return \"#ffffff\";\r\n }\r\n\r\n get showMessages() {\r\n return this.$store.state.message.messages.length > 0;\r\n }\r\n\r\n get unseenMessages() {\r\n return this.$store.getters[\"message/unseenCount\"];\r\n }\r\n\r\n get showMessageBadge() {\r\n return this.unseenMessages > 0;\r\n }\r\n\r\n onJumpToContentClick(e: any) {\r\n const ref = this.$refs.appContentMainRef;\r\n if (ref) {\r\n (ref as any).focus();\r\n }\r\n }\r\n\r\n menuTabPressed(event: any) {\r\n MenuHelper.menuTabPressed(event, this);\r\n }\r\n\r\n page(name: string) {\r\n if (name !== this.$store.state.route.path) {\r\n this.$router.push(name);\r\n }\r\n }\r\n\r\n logout() {\r\n this.$store.dispatch(\"auth/logout\");\r\n }\r\n\r\n globalKeyDownHandler(event: KeyboardEvent) {\r\n // Implemented for a11y #5244\r\n if (event.code === \"Escape\") {\r\n this.drawer = false;\r\n }\r\n }\r\n\r\n onNavOpenClick(){\r\n this.drawer = !this.drawer; \r\n // window.setTimeout(() => {\r\n // let mainMenuFocusElem = document.getElementById('main-menu-title') as HTMLElement;\r\n // if (mainMenuFocusElem){\r\n // mainMenuFocusElem.focus();\r\n // } else {\r\n // let firstMenuItem = document.getElementById('main-menu-item-0');\r\n // if (!firstMenuItem){\r\n // const listElement = (this.$refs.navListRef as any).$el as HTMLElement;\r\n // const listBoxElement = (listElement.firstElementChild) as HTMLElement;\r\n // firstMenuItem = (listBoxElement.firstElementChild as HTMLAnchorElement);\r\n // }\r\n // firstMenuItem.focus();\r\n // }\r\n // }, 200);\r\n }\r\n\r\n onNavCloseClick(){\r\n this.drawer = !this.drawer; \r\n // window.setTimeout(() => {\r\n // (this.$refs.navOpenButtonRef as any).$el.focus();\r\n // }, 120);\r\n }\r\n\r\n onNavItemClick(item: INavigationItem){\r\n this.drawer = false;\r\n window.setTimeout(() => {\r\n var top = document.getElementById(\"top\") as HTMLElement;\r\n if (top){\r\n top.focus();\r\n }\r\n }, 100); \r\n }\r\n\r\n async created() {\r\n // begin temp fix: \r\n // redirect /#/invitation/xxx urls to /invitation/xxx\r\n var currentUrl = document.location.href;\r\n if (currentUrl.includes(\"/#/invitation/\")){\r\n console.warn(\"Redirecting a legacy URL with /#/invitation to /invitation\");\r\n document.location.href = currentUrl.replace(\"/#/invitation/\", \"/invitation/\");\r\n }\r\n // end temp fix\r\n (window as any)._approot = this;\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(\"127.0.0.1\") > -1 ||\r\n document.location.host.indexOf(\"192.168.8.107\") > -1 ||\r\n document.location.host.indexOf(\"staging\") > -1 ||\r\n document.location.hash.indexOf(\"dev_theme_testing\") > -1 ||\r\n document.location.host.indexOf(\".ngrok.io\") > -1;\r\n\r\n window.addEventListener(\"keydown\", this.globalKeyDownHandler);\r\n }\r\n\r\n destroyed() {\r\n window.removeEventListener(\"keydown\", this.globalKeyDownHandler);\r\n }\r\n\r\n async initApp() {\r\n try {\r\n await this.$store.dispatch(\"app/initializeApp\");\r\n } catch (e) {\r\n // if (e.response.status === 401) {\r\n // // TODO\r\n // }\r\n }\r\n this.isLoading = 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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./app-root.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./app-root.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./app-root.vue?vue&type=template&id=28f5ca20&\"\nimport script from \"./app-root.vue?vue&type=script&lang=ts&\"\nexport * from \"./app-root.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./app-root.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VAppBarNavIcon } from 'vuetify/lib/components/VAppBar';\nimport { VBadge } from 'vuetify/lib/components/VBadge';\nimport { VBottomNavigation } from 'vuetify/lib/components/VBottomNavigation';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VFooter } from 'vuetify/lib/components/VFooter';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMain } from 'vuetify/lib/components/VMain';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VNavigationDrawer } from 'vuetify/lib/components/VNavigationDrawer';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VAlert,VApp,VAppBar,VAppBarNavIcon,VBadge,VBottomNavigation,VBtn,VCol,VContainer,VFooter,VIcon,VList,VListItem,VListItemContent,VListItemGroup,VListItemTitle,VMain,VMenu,VNavigationDrawer,VProgressCircular,VRow,VSpacer,VSubheader,VToolbar,VToolbarTitle})\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 || '(Rideit)';\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","// Auto generated @ Tue Jun 11 2024 09:34:30 GMT+0300 (Eastern European Summer Time)\r\n\r\n//fas\r\nimport {\r\n\tfaUsers as fasUsers,\r\n\tfaInfo as fasInfo,\r\n\tfaBusinessTime as fasBusinessTime,\r\n\tfaClock as fasClock,\r\n\tfaMapMarker as fasMapMarker,\r\n\tfaTrashCan as fasTrashCan,\r\n\tfaPhone as fasPhone,\r\n\tfaPaperPlane as fasPaperPlane,\r\n\tfaTimesCircle as fasTimesCircle,\r\n\tfaCheck as fasCheck,\r\n\tfaHome as fasHome,\r\n\tfaStreetView as fasStreetView,\r\n\tfaSchool as fasSchool,\r\n\tfaCheckDouble as fasCheckDouble,\r\n\tfaBan as fasBan,\r\n\tfaUserXmark as fasUserXmark,\r\n\tfaTimes as fasTimes,\r\n\tfaUserCircle as fasUserCircle,\r\n\tfaClose as fasClose,\r\n\tfaFileMedical as fasFileMedical,\r\n\tfaFile as fasFile,\r\n\tfaTaxi as fasTaxi,\r\n\tfaCreditCard as fasCreditCard,\r\n\tfaUser as fasUser,\r\n\tfaEnvelope as fasEnvelope,\r\n\tfaUserSecret as fasUserSecret,\r\n\tfaIdCard as fasIdCard,\r\n\tfaSignOutAlt as fasSignOutAlt,\r\n\tfaUnlockAlt as fasUnlockAlt,\r\n\tfaStar as fasStar,\r\n\tfaEuro as fasEuro,\r\n\tfaNoteSticky as fasNoteSticky,\r\n\tfaTrash as fasTrash\r\n} from '@fortawesome/free-solid-svg-icons';\r\n\r\n//far\r\nimport {\r\n\tfaSquareCheck as farSquareCheck,\r\n\tfaSquare as farSquare,\r\n\tfaCalendarAlt as farCalendarAlt\r\n} from '@fortawesome/free-regular-svg-icons';\r\n\r\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\r\nlibrary.add(\r\n\tfasUsers,\r\n\tfasInfo,\r\n\tfasBusinessTime,\r\n\tfasClock,\r\n\tfasMapMarker,\r\n\tfasTrashCan,\r\n\tfasPhone,\r\n\tfasPaperPlane,\r\n\tfasTimesCircle,\r\n\tfasCheck,\r\n\tfasHome,\r\n\tfasStreetView,\r\n\tfasSchool,\r\n\tfasCheckDouble,\r\n\tfasBan,\r\n\tfasUserXmark,\r\n\tfasTimes,\r\n\tfasUserCircle,\r\n\tfasClose,\r\n\tfasFileMedical,\r\n\tfasFile,\r\n\tfasTaxi,\r\n\tfasCreditCard,\r\n\tfasUser,\r\n\tfasEnvelope,\r\n\tfasUserSecret,\r\n\tfasIdCard,\r\n\tfasSignOutAlt,\r\n\tfasUnlockAlt,\r\n\tfarSquareCheck,\r\n\tfarSquare,\r\n\tfarCalendarAlt,\r\n\tfasStar,\r\n\tfasEuro,\r\n\tfasNoteSticky,\r\n\tfasTrash\r\n);\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\r\nconst CUSTOM_ICONS: any = {\r\n \"fas-fa-users\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-users']\r\n }\r\n },\r\n \"fas-fa-info\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-info']\r\n }\r\n },\r\n \"fas-fa-business-time\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-business-time']\r\n }\r\n },\r\n \"fas-fa-clock\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-clock']\r\n }\r\n },\r\n \"fas-fa-map-marker\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-map-marker']\r\n }\r\n },\r\n \"fas-fa-trash-can\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-trash-can']\r\n }\r\n },\r\n \"fas-fa-phone\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-phone']\r\n }\r\n },\r\n \"fas-fa-paper-plane\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-paper-plane']\r\n }\r\n },\r\n \"fas-fa-times-circle\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-times-circle']\r\n }\r\n },\r\n \"fas-fa-check\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-check']\r\n }\r\n },\r\n \"fas-fa-home\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-home']\r\n }\r\n },\r\n \"fas-fa-street-view\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-street-view']\r\n }\r\n },\r\n \"fas-fa-school\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-school']\r\n }\r\n },\r\n \"fas-fa-check-double\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-check-double']\r\n }\r\n },\r\n \"fas-fa-ban\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-ban']\r\n }\r\n },\r\n \"fas-fa-user-xmark\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-user-xmark']\r\n }\r\n },\r\n \"fas-fa-times\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-times']\r\n }\r\n },\r\n \"fas-fa-user-circle\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-user-circle']\r\n }\r\n },\r\n \"fas-fa-close\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-close']\r\n }\r\n },\r\n \"fas-fa-file-medical\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-file-medical']\r\n }\r\n },\r\n \"fas-fa-file\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-file']\r\n }\r\n },\r\n \"fas-fa-taxi\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-taxi']\r\n }\r\n },\r\n \"fas-fa-credit-card\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-credit-card']\r\n }\r\n },\r\n \"fas-fa-user\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-user']\r\n }\r\n },\r\n \"fas-fa-envelope\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-envelope']\r\n }\r\n },\r\n \"fas-fa-user-secret\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-user-secret']\r\n }\r\n },\r\n \"fas-fa-id-card\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-id-card']\r\n }\r\n },\r\n \"fas-fa-sign-out-alt\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-sign-out-alt']\r\n }\r\n },\r\n \"fas-fa-unlock-alt\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-unlock-alt']\r\n }\r\n },\r\n \"far-fa-square-check\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['far', 'fa-square-check']\r\n }\r\n },\r\n \"far-fa-square\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['far', 'fa-square']\r\n }\r\n },\r\n \"far-fa-calendar-alt\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['far', 'fa-calendar-alt']\r\n }\r\n },\r\n \"fas-fa-star\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-star']\r\n }\r\n },\r\n \"fas-fa-euro\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-euro']\r\n }\r\n },\r\n \"fas-fa-note-sticky\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-note-sticky']\r\n }\r\n },\r\n \"fas-fa-trash\": {\r\n component: FontAwesomeIcon,\r\n props: {\r\n icon: ['fas', 'fa-trash']\r\n }\r\n },\r\n}\r\nexport { CUSTOM_ICONS }\r\n","import Vue from 'vue';\r\n// import { library } from '@fortawesome/fontawesome-svg-core';\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\r\n// import { fas } from '@fortawesome/free-solid-svg-icons';\r\n\r\n// import '@fortawesome/fontawesome-free/css/all.css';\r\n// import '@fortawesome/fontawesome-free/js/all.js';\r\n\r\nVue.component('font-awesome-icon', FontAwesomeIcon); // Register component globally\r\n// library.add(fas); // Include needed icons\r\n\r\n// Import autogenerated fontawesome icons\r\nimport { CUSTOM_ICONS } from \"@/plugins/fontawesome-autogen\"; \r\n// Manually import some framework icons not autodetected\r\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\r\nimport {\r\n\tfaBars,\r\n faExclamationTriangle,\r\n faExclamation,\r\n faCaretDown,\r\n faChevronLeft,\r\n faChevronRight,\r\n faCheckSquare,\r\n faCheckCircle\r\n} from '@fortawesome/free-solid-svg-icons';\r\nlibrary.add(\r\n\tfaBars,\r\n faExclamationTriangle,\r\n faExclamation,\r\n faCaretDown,\r\n faChevronLeft,\r\n faChevronRight,\r\n faCheckSquare,\r\n faCheckCircle\r\n);\r\nimport {\r\n faCircle,\r\n faDotCircle,\r\n faSquare\r\n} from '@fortawesome/free-regular-svg-icons';\r\nimport { Iconfont } from 'vuetify/types/services/icons';\r\nlibrary.add(\r\n faSquare,\r\n faCircle,\r\n faDotCircle\r\n);\r\n\r\nconst VuetifyFontAwesomeIconsConfig = {\r\n iconfont: 'faSvg' as Iconfont,\r\n values: CUSTOM_ICONS\r\n};\r\nexport { VuetifyFontAwesomeIconsConfig };","import Vue from 'vue';\r\nimport Vuetify from 'vuetify/lib/framework';\r\nimport { VuetifyFontAwesomeIconsConfig } from '@/plugins/vuetify-fontawesome'\r\nimport i18n from '@/i18n';\r\n\r\nVue.use(Vuetify);\r\nexport default new Vuetify({\r\n lang: {\r\n t: (key, ...params) => i18n.t(key, params).toString(),\r\n },\r\n icons: VuetifyFontAwesomeIconsConfig,\r\n theme: {\r\n themes: {\r\n light: {\r\n primary: '#099',\r\n success: '#1f890e',\r\n warning: '#FFC107',\r\n },\r\n },\r\n },\r\n});\r\n","import Vue from 'vue';\r\nimport sanitizeHTML from 'sanitize-html';\r\n\r\n/**\r\n * Sanitize dirty HTML, with default settings.\r\n */\r\nVue.prototype.$sanitize = (dirty: string) => sanitizeHTML(dirty, {\r\n allowedTags: [ 'b', 'i', 'strong', 'br' ],\r\n allowedAttributes: {},\r\n});\r\n","import RandomColor from \"randomcolor\"\r\nexport class ColorHelper {\r\n\r\n public static getRandomColorWithSeed(\r\n seed: string | number,\r\n luminosity: \"bright\" | \"light\" | \"dark\" | \"random\" = \"dark\",\r\n contrastToHex: string = \"#ffffff\"): string {\r\n\r\n let seedNumber: number = 0;\r\n if (typeof (seed) === 'string') {\r\n seedNumber = parseInt(seed, 10);\r\n if (isNaN(seedNumber)) {\r\n seedNumber = ColorHelper.getHash(seed);\r\n }\r\n } else {\r\n seedNumber = seed;\r\n }\r\n const minContrast = 4.5;\r\n const minMultiplier = 10000;\r\n const maxTries = 30;\r\n let contrast = 0;\r\n let hsl = [0, 0, 0]\r\n // Try to get enough contrast for [maxTries] times\r\n for (var i = minMultiplier; i < minMultiplier + maxTries; i++) {\r\n const normalizedSeedNumber = Math.floor(Math.sin(seedNumber) * i);\r\n // RandomColor returns random colors\r\n // but the seed must have variance for the resulting colors to have variance\r\n // When format is hsvArray, RandomColor returns an array like [236, 87, 98]\r\n hsl = RandomColor({\r\n seed: normalizedSeedNumber.toString(),\r\n luminosity,\r\n format: 'hslArray'\r\n }) as unknown as number[];\r\n // Force saturation to a specific range (like 30-60)\r\n hsl[1] = 45 + Math.round(((Math.sin(Math.sin(seedNumber * i)) + 1) / 2) * 45);\r\n // check contrast\r\n const rgb = ColorHelper.hslToRgb(hsl[0] / 360, hsl[1] / 100, hsl[2] / 100);\r\n const hex = ColorHelper.rgbToHex(rgb[0], rgb[1], rgb[2]);\r\n contrast = ColorHelper.getContrast(contrastToHex, hex);\r\n if (contrast >= minContrast) {\r\n // enough contrast, use this color\r\n break;\r\n }\r\n }\r\n const hslString = `hsl(${hsl[0]}, ${hsl[1]}%, ${hsl[2]}%)`;\r\n return hslString;\r\n\r\n }\r\n\r\n public static hexToRgb(hexString: string) {\r\n if (hexString.startsWith(\"#\")) hexString = hexString.substr(1);\r\n return [\r\n parseInt(hexString.substring(0, 2), 16),\r\n parseInt(hexString.substring(2, 4), 16),\r\n parseInt(hexString.substring(4, 6), 16),\r\n ];\r\n };\r\n\r\n public static hue2rgb(p: number, q: number, t: number) {\r\n if (t < 0) t += 1;\r\n if (t > 1) t -= 1;\r\n if (t < 1 / 6) return p + (q - p) * 6 * t;\r\n if (t < 1 / 2) return q;\r\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\r\n return p;\r\n }\r\n\r\n public static hslToRgb(h: number, s: number, l: number) {\r\n var r, g, b;\r\n if (s == 0) {\r\n r = g = b = l; // achromatic\r\n } else {\r\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n var p = 2 * l - q;\r\n r = ColorHelper.hue2rgb(p, q, h + 1 / 3);\r\n g = ColorHelper.hue2rgb(p, q, h);\r\n b = ColorHelper.hue2rgb(p, q, h - 1 / 3);\r\n }\r\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\r\n }\r\n\r\n public static rgbToHex(r: number, g: number, b: number) {\r\n return \"#\" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\r\n }\r\n\r\n public static relativeLuminance(rgbArray: number[]) {\r\n let [r, g, b] = rgbArray.map((channel) => {\r\n return channel / 255 <= 0.03928\r\n ? channel / 255 / 12.92\r\n : ((channel / 255 + 0.055) / 1.055) ** 2.4;\r\n });\r\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\r\n };\r\n\r\n public static getContrast(color1: string, color2: string) {\r\n const luminance1 = ColorHelper.relativeLuminance(ColorHelper.hexToRgb(color1)),\r\n luminance2 = ColorHelper.relativeLuminance(ColorHelper.hexToRgb(color2));\r\n return luminance1 > luminance2\r\n ? (luminance1 + 0.05) / (luminance2 + 0.05)\r\n : (luminance2 + 0.05) / (luminance1 + 0.05);\r\n };\r\n\r\n private static getHash(input: string): number {\r\n var hash = 0, len = input.length;\r\n for (var i = 0; i < len; i++) {\r\n hash = ((hash << 5) - hash) + input.charCodeAt(i);\r\n hash |= 0; // to 32bit integer\r\n }\r\n return hash;\r\n }\r\n}\r\n(window as any).ColorHelper = ColorHelper;\r\nexport default ColorHelper;","import Vue from 'vue';\r\nimport moment from 'moment';\r\nimport i18n from './i18n';\r\n\r\n/** Global filters for Vue. Mostly localization date formats */\r\n\r\nVue.filter('dateTime', (date: Date | string) => {\r\n if (!date) { return ''; }\r\n return moment(date).format('L HH:mm');\r\n});\r\n\r\nVue.filter('dateTimeOrNA', (date: Date | string) => {\r\n if (!date) { \r\n return i18n.t('general.time_na');\r\n }\r\n return moment(date).format('L HH:mm');\r\n});\r\n\r\nVue.filter('date', (date: Date | string) => {\r\n if (!date) { return ''; }\r\n return moment(date).format('L');\r\n});\r\n\r\nVue.filter('time', (date: Date | string) => {\r\n if (!date) {\r\n return i18n.t('general.time_na');\r\n }\r\n return moment(date).format('HH:mm');\r\n});\r\n\r\nVue.filter('emptyField', (content: string) => {\r\n if (!content) {\r\n return i18n.t('general.empty_field');\r\n }\r\n return content;\r\n});\r\n","/* tslint:disable:no-console */\r\nimport { register } from 'register-service-worker';\r\n\r\nif ('serviceWorker' in navigator) {\r\n if (process.env.NODE_ENV === 'production') {\r\n register(`${process.env.BASE_URL}sw.js`, {\r\n ready() {\r\n // TODO\r\n },\r\n cached() {\r\n // TODO\r\n },\r\n updated() {\r\n // TODO\r\n },\r\n offline() {\r\n // TODO\r\n },\r\n error(error) {\r\n console.error('Error during service worker registration:', error);\r\n },\r\n });\r\n }\r\n}\r\n","export default class GoogleMaps {\r\n\r\n install(Vue: any, 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: any) => `${encodeURIComponent(key)}=${encodeURIComponent((params as any)[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\r\n","import '@/helpers/arrayExtensions';\r\nimport Vue from 'vue';\r\nimport AppRoot from './layouts/app-root.vue';\r\nimport i18n from './i18n';\r\nimport router from './router';\r\nimport store from './store/store';\r\nimport applicationInsights from './applicationInsights';\r\nimport vuetify from './plugins/vuetify';\r\nimport axios from 'axios';\r\nimport { sync } from 'vuex-router-sync';\r\n// import 'babel-polyfill';\r\nimport './sanitizer';\r\nimport ColorHelper from './helpers/ColorHelper';\r\nimport './filters';\r\nimport './registerServiceWorker';\r\nimport './sass/main.scss';\r\nimport '@/extansions';\r\nimport tokenService from './services/tokenService';\r\nimport GoogleMaps from '@/plugins/googlemaps/index';\r\n\r\nVue.config.productionTip = false;\r\n\r\nVue.prototype.$randomColor = ColorHelper.getRandomColorWithSeed;\r\n\r\naxios.interceptors.request.use((config: any) => {\r\n const authToken = store.getters['auth/accessToken'];\r\n if (authToken) {\r\n const tokenData = tokenService.decodeToken(authToken);\r\n if (tokenData && tokenData.exp) {\r\n const expiration = Math.round(tokenData.exp - (new Date().getTime() / 1000));\r\n // console.log(`access_token expires in ${expiration} seconds [${new Date(tokenData.exp * 1000).toISOString()}]`);\r\n }\r\n config.headers.Authorization = `Bearer ${authToken}`;\r\n }\r\n return config;\r\n}, (err: any) => {\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 store.dispatch('auth/authenticationExpired');\r\n }\r\n return Promise.reject(err.response);\r\n});\r\n\r\nsync(store, router);\r\n\r\nVue.use(applicationInsights, {router});\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\nconst app = new Vue({\r\n i18n,\r\n router,\r\n store,\r\n vuetify,\r\n render: h => h(AppRoot),\r\n created: () => {\r\n const html = document.documentElement;\r\n html.setAttribute('lang', i18n.locale);\r\n },\r\n});\r\n\r\napp.$mount('#app');\r\nexport default app;\r\n\r\n","export default class NavigationItems {\r\n\r\n static accessibilityReport: INavigationItem = {\r\n url: '/accessibility-report',\r\n icon: '$fas-fa-file-medical',\r\n text: 'menu.accessibility-report', \r\n requireAuth: false,\r\n }\r\n\r\n static accessibilityReportKeusote: INavigationItem = {\r\n url: '/accessibility-report-keusote',\r\n icon: '$fas-fa-file-medical',\r\n text: 'menu.accessibility-report', \r\n requireAuth: false,\r\n }\r\n\r\n static passengers: INavigationItem = {\r\n url: '/passengers',\r\n icon: '$fas-fa-users',\r\n text: 'menu.passengers',\r\n requireAuth: true,\r\n };\r\n\r\n static passengerTransportationPermissions: INavigationItem = {\r\n url: '/transportationPermissions',\r\n icon: '$fas-fa-file',\r\n text: 'menu.passengersTransportationPermissions',\r\n requireAuth: true,\r\n };\r\n\r\n static trips: INavigationItem = {\r\n url: '/trips',\r\n icon: '$fas-fa-taxi',\r\n // icon: '$fas-fa-taxi',\r\n text: 'menu.trips',\r\n requireAuth: true,\r\n };\r\n\r\n static cancelTrips: INavigationItem = {\r\n url: '/canceltrips',\r\n icon: '$fas-fa-times-circle',\r\n text: 'menu.canceltrips',\r\n requireAuth: true,\r\n };\r\n\r\n static booking: INavigationItem = {\r\n url: '/booking',\r\n icon: '$fas-fa-credit-card',\r\n text: 'menu.booking',\r\n requireAuth: true,\r\n };\r\n\r\n static personalInfo: INavigationItem = {\r\n url: '/personal-info',\r\n icon: '$fas-fa-user',\r\n text: 'menu.personal-info',\r\n requireAuth: true,\r\n };\r\n\r\n static messages: INavigationItem = {\r\n url: '/messages',\r\n icon: '$fas-fa-envelope',\r\n text: 'menu.messages',\r\n requireAuth: true,\r\n };\r\n\r\n static privacy: INavigationItem = {\r\n url: '/privacy',\r\n icon: '$fas-fa-user-secret',\r\n text: 'menu.privacy_policy',\r\n requireAuth: false,\r\n };\r\n\r\n static privacyKeusote: INavigationItem = {\r\n url: '/privacy-keusote',\r\n icon: '$fas-fa-user-secret',\r\n text: 'menu.privacy_policy',\r\n requireAuth: false,\r\n };\r\n\r\n static register: INavigationItem = {\r\n url: '/register-travel-card',\r\n icon: '$fas-fa-id-card',\r\n text: 'menu.register-travel-card',\r\n requireAuth: false,\r\n };\r\n\r\n static createPassword: INavigationItem = {\r\n url: '/password',\r\n icon: '$fas-fa-sign-out-alt',\r\n text: 'menu.create-password',\r\n requireAuth: true,\r\n };\r\n\r\n static changePassword: INavigationItem = {\r\n url: '/password',\r\n icon: '$fas-fa-unlock-alt',\r\n text: 'menu.change-password',\r\n requireAuth: true,\r\n };\r\n\r\n static logout: INavigationItem = {\r\n url: '/logout',\r\n icon: '$fas-fa-sign-out-alt',\r\n text: 'menu.logout',\r\n requireAuth: true,\r\n };\r\n\r\n}\r\n","import Vue from 'vue';\r\nimport Router, { Route } from 'vue-router';\r\nimport i18n from './i18n';\r\n// import app from './main';\r\nimport store from './store/store';\r\nimport Home from '@/views/Home.vue';\r\nimport Invitation from '@/views/Invitation.vue';\r\nimport Passengers from '@/views/Passengers.vue';\r\nimport PassengerTransportationPermissions from '@/views/PassengerTransportationPermissions.vue';\r\nimport Booking from '@/views/Booking.vue';\r\nimport Trips from '@/views/Trips.vue';\r\nimport TripsEdit from '@/views/TripsEdit.vue';\r\nimport Messages from '@/views/Messages.vue';\r\nimport CancelTrips from '@/views/CancelTrips.vue';\r\nimport PersonalInfo from '@/views/PersonalInfo.vue';\r\nimport Password from '@/views/Password.vue';\r\nimport Privacy from '@/views/Privacy.vue';\r\nimport LoggedOut from '@/views/LoggedOut.vue';\r\nimport RegisterTravelCard from '@/views/RegisterTravelCard.vue';\r\nimport AccessibilityReport from '@/views/AccessibilityReport.vue';\r\nimport AccesibilityReportKeusote from '@/views/AccessibilityReportKeusote.vue';\r\nimport PrivacyKeusote from '@/views/PrivacyKeusote.vue';\r\n\r\nVue.use(Router);\r\n\r\nfunction loadView(view: string) {\r\n return () => import(/* webpackChunkName: \"view-[request]\" */ `@/views/${view}.vue`);\r\n}\r\n\r\nconst router = new Router({\r\n mode:'history',\r\n routes: [\r\n {\r\n path: '/',\r\n name: 'home',\r\n component: Home, //loadView('Home'),\r\n meta: {\r\n title: 'home',\r\n },\r\n },\r\n {\r\n path: '/invitation/:code',\r\n name: 'invitation',\r\n component: Invitation, //loadView('Invitation'),\r\n },\r\n {\r\n path: '/passengers',\r\n name: 'passengers',\r\n component: Passengers, //loadView('Passengers'),\r\n meta: {\r\n requireAuthentication: true,\r\n title: 'passengers',\r\n },\r\n },\r\n {\r\n path: '/transportationPermissions',\r\n name: 'transportationPermissions',\r\n component: PassengerTransportationPermissions, //loadView('PassengerTransportationPermissions'),\r\n meta: {\r\n requireAuthentication: true,\r\n title: 'transportationPermissions',\r\n },\r\n },\r\n {\r\n path: '/booking',\r\n name: 'booking',\r\n component: Booking, //loadView('Booking'),\r\n meta: {\r\n requireAuthentication: true,\r\n title: 'booking',\r\n },\r\n },\r\n {\r\n path: '/trips',\r\n name: 'trips',\r\n component: Trips, //loadView('Trips'),\r\n meta: {\r\n requireAuthentication: true,\r\n title: 'trips',\r\n },\r\n },\r\n {\r\n path: '/trips/:id/:date',\r\n name: 'trip-edit',\r\n component: TripsEdit, //loadView('TripsEdit'),\r\n meta: {\r\n requireAuthentication: true,\r\n },\r\n },\r\n {\r\n path: '/messages',\r\n name: 'messages',\r\n component: Messages, //loadView('Messages'),\r\n meta: {\r\n requireAuthentication: true,\r\n title: 'messages',\r\n },\r\n },\r\n {\r\n path: '/canceltrips',\r\n name: 'canceltrips',\r\n component: CancelTrips, //loadView('CancelTrips'),\r\n meta: {\r\n requireAuthentication: true,\r\n title: 'canceltrips',\r\n },\r\n },\r\n {\r\n path: '/personal-info',\r\n name: 'personal-info',\r\n component: PersonalInfo, //loadView('PersonalInfo'),\r\n meta: {\r\n requireAuthentication: true,\r\n title: 'personal-info',\r\n },\r\n },\r\n {\r\n path: '/password',\r\n name: 'password',\r\n component: Password, //loadView('Password'),\r\n meta: {\r\n requireAuthentication: true,\r\n title: 'password',\r\n },\r\n },\r\n {\r\n path: '/privacy',\r\n name: 'privacy',\r\n component: Privacy, //loadView('Privacy'),\r\n meta: {\r\n title: 'privacy',\r\n },\r\n },\r\n {\r\n path: '/privacy-keusote',\r\n name: 'privacy-keusote',\r\n component: PrivacyKeusote, //loadView('Privacy'),\r\n meta: {\r\n title: 'privacy',\r\n },\r\n },\r\n {\r\n path: '/logout',\r\n name: 'logout',\r\n component: LoggedOut, //loadView('LoggedOut'),\r\n beforeEnter: () => store.dispatch('auth/logout')\r\n },\r\n {\r\n path: '/register-travel-card',\r\n name: 'register-travel-card',\r\n component: RegisterTravelCard, //loadView('RegisterTravelCard'),\r\n meta: {\r\n title: 'register-travel-card',\r\n },\r\n },\r\n {\r\n path: '/track/:link',\r\n name: 'track',\r\n component: TripsEdit, //loadView('TripsEdit'),\r\n meta: {\r\n title: 'track',\r\n },\r\n },\r\n {\r\n path: '/accessibility-report',\r\n name: 'accessibility-report',\r\n component: AccessibilityReport, //loadView('AccessibilityReport'),\r\n meta: {\r\n title: 'accessibility-report',\r\n },\r\n },\r\n {\r\n path: '/accessibility-report-keusote',\r\n name: 'accessibility-report-keusote',\r\n component: AccesibilityReportKeusote, //loadView('AccessibilityReport'),\r\n meta: {\r\n title: 'accessibility-report',\r\n },\r\n },\r\n ],\r\n});\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n // Set correct locale if url contains lang=FI\r\n if (to.query.lang) {\r\n store.commit('app/changeLocale', to.query.lang);\r\n }\r\n if (to.matched.some(route => route.meta.requireAuthentication)) {\r\n if (!store.getters['auth/isAuthenticated']) {\r\n next({\r\n name: 'home',\r\n query: { redirect: to.fullPath },\r\n });\r\n return;\r\n }\r\n }\r\n\r\n document.title = getTitle(to);\r\n next();\r\n});\r\n\r\nfunction getTitle(to: Route) {\r\n const theme = store.getters['app/theme'];\r\n const themeName = theme ? theme.name : '';\r\n const pageName = to.meta && to.meta.title ? i18n.t(`title.${to.meta.title}`) : '';\r\n\r\n if (!pageName) {\r\n return themeName;\r\n }\r\n\r\n return `${pageName} - ${themeName}`;\r\n}\r\n\r\nexport default router;\r\n","import Themes from '@/themes';\r\nimport axios, { AxiosRequestConfig } from 'axios';\r\n\r\ninterface IAccessTokenResponse {\r\n accessToken: string;\r\n expiresIn: number;\r\n tokenType: string;\r\n}\r\n\r\nexport class RideitBackend {\r\n static host = document.location.href.includes('.ngrok.io')\r\n ? ''\r\n : (process.env.VUE_APP_API_HOST || '');\r\n static baseUrl = RideitBackend.host + '/';\r\n}\r\n\r\nconst getFromCache = async (url: string) => {\r\n const cache = await caches.open('api');\r\n const res = await cache.match(url);\r\n if (!res || !res.ok) {\r\n throw new Error('GET ' + url + ' not cached');\r\n }\r\n return await res.json() as T;\r\n};\r\n\r\nconst rideItTenantHeaderName = \"X-Rideit-Tenant\";\r\n\r\nconst decorateRequestConfig = (config?: AxiosRequestConfig) => {\r\n if (!config){\r\n config = {\r\n }\r\n }\r\n if (!config.headers){\r\n config.headers = {};\r\n }\r\n if (!config.headers[rideItTenantHeaderName]){\r\n const tenantFromUrl = Themes.MatchTenantFromUrl();\r\n if (tenantFromUrl && tenantFromUrl !== 'default'){\r\n config.headers[rideItTenantHeaderName] = tenantFromUrl;\r\n } else {\r\n // No specific tenant from current Url found. Don't set the header, \r\n // so that backend can still use it's own config override.\r\n }\r\n }\r\n return config;\r\n};\r\n\r\nconst restGet = async (url: string, config?: AxiosRequestConfig) => {\r\n const response = await axios.get(RideitBackend.baseUrl + url, decorateRequestConfig(config));\r\n return response.data;\r\n};\r\n\r\nconst restPost = async (url: string, data: any, config?: AxiosRequestConfig) => {\r\n const response = await axios.post(RideitBackend.baseUrl + url, data, decorateRequestConfig(config));\r\n return response.data;\r\n};\r\n\r\nconst restPut = async (url: string, data: any, config?: AxiosRequestConfig) => {\r\n const response = await axios.put(RideitBackend.baseUrl + url, data, decorateRequestConfig(config));\r\n return response.data;\r\n};\r\n\r\nconst restDelete = async (url: string, config?: AxiosRequestConfig) => {\r\n const response = await axios.delete(RideitBackend.baseUrl + url, decorateRequestConfig(config));\r\n return response;\r\n};\r\n\r\nexport default {\r\n auth: {\r\n getUserData: () => {\r\n return restGet('api/account');\r\n },\r\n updateLogin: (username: string, password: string) => {\r\n return restPost('api/account/edit', { userName: username, password}, {\r\n withCredentials: true,\r\n });\r\n },\r\n changePassword: (username: string, password: string, currentPassword: string) => {\r\n return restPost('api/account/changePassword', { userName: username, password, currentPassword }, {\r\n withCredentials: true,\r\n });\r\n },\r\n getAccessToken: () => {\r\n if (process.env.NODE_ENV === 'development') {\r\n return restGet('api/auth/access_token', {\r\n withCredentials: true,\r\n });\r\n }\r\n return restGet('api/auth/access_token');\r\n },\r\n registerTravelCard: (cardNumber: string, name: string ) => {\r\n return restPost(`api/account/registercard`, { cardNumber, name });\r\n },\r\n },\r\n passenger: {\r\n get: () => restGet('api/passenger'),\r\n getTrips: (id: string) => restGet(`api/passenger/${id}/trips`),\r\n claim: (token: string) => restPost('api/passenger', { token }),\r\n put: (passenger: IPassenger) => restPut(`api/passenger/${passenger.id}`, passenger),\r\n getPassengerPlaces: (id: string) => restGet(`api/passenger/${id}/places`),\r\n },\r\n trips: {\r\n cancel: (cancellation: ITripCancellation) => restPost('api/trip/cancel', cancellation),\r\n review: (review: ITripReview) => restPost('api/trip/review', review),\r\n tracked: (link: string) => restGet(`api/track/${link}`),\r\n withStatus: (request: ITripStatusRequest) => restPost(`api/trip/status`, request),\r\n },\r\n message: {\r\n get: (page?: number) => {\r\n let url = 'api/message';\r\n if (page) {\r\n url += '?page=' + page;\r\n }\r\n return restGet(url);\r\n },\r\n send: (passengerId: string, content: string) => restPost('api/message', { passengerId, content}),\r\n markSeen: (message: IMessage) => restPut(`api/message/${message.id}/seen`, message),\r\n markConfirmed: (message: IMessage) => restPut(`api/message/${message.id}/confirm`, message),\r\n },\r\n invitation: {\r\n get: (code: string) => {\r\n return restGet(`api/invitation/${code}`);\r\n },\r\n accept: (invite: IUserInvitation) => {\r\n return restPost('api/invitation', invite);\r\n },\r\n },\r\n quotas: {\r\n get: (passengerId: string, date: string) => restGet(`api/passenger/${passengerId}/quotas?date=${date}`),\r\n \r\n getWithPeriods: (passengerId: string) => restGet(`api/passenger/${passengerId}/transportationPermissions`),\r\n },\r\n booking: {\r\n getEstimates: (booking: IBooking) => restPost('api/booking/estimate', booking),\r\n postBooking: (booking: IBooking) => restPost('api/booking', booking),\r\n getRoute: (destinations: IDestination[]) => restPost('api/booking/route', destinations),\r\n },\r\n nominatim: {\r\n searchAddress: async(search: string) => {\r\n const nominatimServer = 'https://nominatim.movit.fi';\r\n const geocodingUrl = nominatimServer + '/search?format=json&addressdetails=1&countrycodes=fi&limit=30&q=';\r\n const encodedAddress = encodeURIComponent(search);\r\n try {\r\n const response = await axios.get(geocodingUrl + encodedAddress);\r\n return response.data;\r\n } catch (error) {\r\n return [];\r\n }\r\n },\r\n },\r\n google: {\r\n searchAddress: async(search: string) => {\r\n const key = process.env.VUE_APP_GOOGLE_KEY;\r\n const encodedAddress = encodeURIComponent(search);\r\n // tslint:disable-next-line:max-line-length\r\n const url = `https://maps.googleapis.com/maps/api/geocode/json?address=${encodedAddress}&key=${key}&language=fi®ion=fi`;\r\n\r\n try {\r\n const response = JSON.parse(await makeRequest('GET', url));\r\n const results = response.results\r\n .filter(filterGoogleResults)\r\n .map(convertGoogleResultToDestination);\r\n return results;\r\n } catch (error) {\r\n return [];\r\n }\r\n },\r\n },\r\n};\r\n\r\nfunction makeRequest(method: string, url: string): Promise {\r\n return new Promise((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(method, url);\r\n xhr.onload = function() {\r\n if (this.status >= 200 && this.status < 300) {\r\n resolve(xhr.response);\r\n } else {\r\n reject({\r\n status: this.status,\r\n statusText: xhr.statusText,\r\n });\r\n }\r\n };\r\n xhr.onerror = function() {\r\n reject({\r\n status: this.status,\r\n statusText: xhr.statusText,\r\n });\r\n };\r\n xhr.send();\r\n });\r\n}\r\n\r\nfunction filterGoogleResults(result: IGoogleSearchResult) {\r\n return true;\r\n}\r\n\r\nfunction convertGoogleResultToDestination(result: IGoogleSearchResult) {\r\n const destination: IDestination = {\r\n id: result.place_id,\r\n alias: '',\r\n display: result.formatted_address,\r\n address: result.formatted_address.split(',')[0],\r\n postalcode: result.address_components.filter(c => c.types.indexOf('postal_code') >= 0)[0].long_name,\r\n city: result.address_components.filter(c => c.types.indexOf('locality') >= 0)[0].long_name,\r\n latitude: result.geometry.location.lat,\r\n longitude: result.geometry.location.lng,\r\n isHome: false,\r\n isPickup: false,\r\n isViaPoint: false,\r\n isMain: false,\r\n isSecondaryPlace: false,\r\n };\r\n return destination;\r\n}\r\n\r\n","export default {\r\n decodeToken(token: string) {\r\n try {\r\n const base64Url = token.split('.')[1];\r\n const base64 = base64Url.replace('-', '+').replace('_', '/');\r\n return JSON.parse(window.atob(base64));\r\n } catch (e) {\r\n return undefined;\r\n }\r\n },\r\n expiresIn(token: string) {\r\n const tokenData = this.decodeToken(token);\r\n if (!tokenData || !tokenData.exp) {\r\n // If token is not valid or it doesn't have exp value\r\n return Number.MIN_SAFE_INTEGER;\r\n }\r\n const currentTime = new Date().getTime() / 1000;\r\n const expiresIn = Math.floor(tokenData.exp - currentTime);\r\n return expiresIn;\r\n },\r\n};\r\n","import Vue from 'vue';\r\nimport moment from 'moment-timezone';\r\n\r\nlet timezone = 'Europe/Helsinki';\r\nif (document.location.host.endsWith(\".uk\")) {\r\n \r\n timezone = 'Europe/London';\r\n}\r\nif (document.location.host.endsWith(\".us\")) {\r\n timezone = 'US/Central'\r\n}\r\nmoment.tz.setDefault(timezone);\r\nVue.prototype.$moment = moment;\r\n\r\nexport default {\r\n availableLocales: ['fi', 'en', 'sv'],\r\n isValid(locale: string) {\r\n return locale && this.availableLocales.indexOf(locale) >= 0;\r\n },\r\n defaultLanguage() {\r\n \r\n let locale = this.availableLocales[1];\r\n if (document.location.host.endsWith(\".fi\")) {\r\n locale = this.availableLocales[0];\r\n }\r\n // First try localstorage, then browser lang and then set default language by host url\r\n const storageLocale = localStorage.getItem('locale') ||\r\n navigator.language.substring(0,2).toLocaleLowerCase();\r\n \r\n if (this.isValid(storageLocale)) {\r\n locale = storageLocale;\r\n } \r\n moment.locale(locale);\r\n return locale;\r\n },\r\n};\r\n","class CacheService {\r\n\r\n async clearMissingPassengersFromCache(passengers: IPassenger[]) {\r\n const passengerIds = passengers.map(p => p.id);\r\n const cachedPassengers = await this.cachedPassengers();\r\n const clearPassengers = cachedPassengers.filter(p => passengerIds.indexOf(p) < 0);\r\n return Promise.all(clearPassengers.map(p => this.clearPassengerTrips(p)));\r\n }\r\n\r\n async cachedPassengers() {\r\n if ('caches' in window) {\r\n const passengerUrl = '/api/passenger/';\r\n const cache = await window.caches.open('api');\r\n const requests = await cache.keys();\r\n return requests.filter(r => r.url.indexOf(passengerUrl) > -1)\r\n .map(r => {\r\n const index = r.url.indexOf(passengerUrl);\r\n return r.url.substring(index + passengerUrl.length).split('/')[0];\r\n });\r\n } else {\r\n return Promise.resolve([]);\r\n }\r\n }\r\n\r\n async clearPassengerTrips(passengerId: string) {\r\n if ('caches' in window) {\r\n const tripUrl = `/api/passenger/${passengerId}/trips`;\r\n const cache = await window.caches.open('api');\r\n const requests = await cache.keys();\r\n await Promise.all(requests.filter(r => r.url.indexOf(tripUrl) > -1)\r\n .map(r => cache.delete(r)));\r\n }\r\n }\r\n\r\n async clearApiCache() {\r\n return this.clearCache('api');\r\n }\r\n\r\n private async clearCache(cacheName: string) {\r\n if ('caches' in window) {\r\n const cache = await window.caches.open(cacheName);\r\n const requests = await cache.keys();\r\n for (const request of requests) {\r\n await cache.delete(request);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default new CacheService();\r\n","import { Module, Commit, ActionContext } from 'vuex';\r\nimport moment from 'moment';\r\nimport 'moment/locale/fi';\r\nimport 'moment/locale/sv';\r\nimport mobileDeviceDetect from 'mobile-device-detect';\r\nimport i18n from '../i18n';\r\nimport localeService from '@/services/localeService';\r\nimport restService from '@/services/restService';\r\nimport ITheme from '@/themes/ITheme';\r\nimport Themes from '@/themes';\r\nimport { IRootState } from './store';\r\nimport cacheService from '@/services/cacheService';\r\nimport router from '@/router';\r\n\r\nexport interface IAppState {\r\n online: boolean;\r\n useDateTypeInput: boolean;\r\n useSeparateFieldsDateTimeInput: boolean;\r\n locale: string;\r\n user?: IUser;\r\n errors: string[];\r\n themes: ITheme[];\r\n themeId: string;\r\n persist: string[];\r\n}\r\n\r\ntype AppModule = Module;\r\ntype AppActionContext = ActionContext;\r\n\r\nlet siteThemeId = Themes.MatchTenantFromUrl();\r\nconst browserIsIosOrMacOs = /iPad|iPhone|iPod|Mac OS X/.test(window.navigator.userAgent)\r\n\r\n// STATE\r\nconst state: IAppState = {\r\n online: navigator.onLine,\r\n useDateTypeInput: mobileDeviceDetect.isAndroid || mobileDeviceDetect.isIOS,\r\n useSeparateFieldsDateTimeInput: (\r\n browserIsIosOrMacOs \r\n || mobileDeviceDetect.isIOS \r\n || mobileDeviceDetect.isMacOs \r\n || mobileDeviceDetect.isIPad13\r\n ),\r\n locale: localeService.defaultLanguage(),\r\n user: undefined,\r\n errors: [],\r\n themes: Themes.themes,\r\n themeId: siteThemeId,\r\n persist: ['themeId'],\r\n};\r\n\r\n// GETTERS\r\nconst getters = {\r\n useDateTypeInput: (appState: IAppState) => appState.useDateTypeInput,\r\n useSeparateFieldsDateTimeInput: (appState: IAppState) => appState.useSeparateFieldsDateTimeInput,\r\n locale: (appState: IAppState) => appState.locale,\r\n userHasPassword: (appState: IAppState) => appState.user && appState.user.hasPassword,\r\n userIdentityVerified: (appState: IAppState) => appState.user && appState.user.identityVerified,\r\n userName: (appState: IAppState) => appState.user && appState.user.name,\r\n theme: (appState: IAppState) => appState.themes.find(t => t.id === appState.themeId) || Themes.themeDefault,\r\n browserIsIosOrMacOs: (appState: IAppState) => browserIsIosOrMacOs\r\n};\r\n\r\n// MUTATIONS\r\nconst mutations = {\r\n setOnline: (appState: IAppState, online: boolean) => appState.online = online,\r\n setUser: (appState: IAppState, user: IUser) => appState.user = user,\r\n setUserPassword: (appState: IAppState) => {\r\n if (appState.user) {\r\n appState.user.hasPassword = true;\r\n }\r\n },\r\n changeLocale: (appState: IAppState, locale: string) => {\r\n if (localeService.isValid(locale)) {\r\n localStorage.setItem('locale', locale);\r\n appState.locale = locale;\r\n i18n.locale = locale;\r\n moment.locale(locale);\r\n const html = document.documentElement;\r\n html.setAttribute('lang', locale);\r\n }\r\n },\r\n navigateToLandingPage: (appState: IAppState) => {\r\n // const themesWithBooking = ['meneva', 'kovanen', 'fixutaxi', 'tatkela', 'fcg', 'kulkukeskus', 'keskustaksi', 'th'];\r\n\r\n const themesWithBooking = appState.themes.filter(t => t.booking).map(t => t.id);\r\n\r\n if (themesWithBooking.indexOf(appState.themeId) >= 0) {\r\n router.push({ name: 'booking' });\r\n } else {\r\n router.push({ name: 'passengers' });\r\n }\r\n },\r\n clearUserData: (appState: IAppState) => {\r\n appState.user = undefined;\r\n },\r\n error: (appState: IAppState, error: string) => {\r\n appState.errors.push(error);\r\n },\r\n setThemeId: (appState: IAppState, themeId: string) => {\r\n console.log(themeId);\r\n appState.themeId = themeId;\r\n if (document.location.host.indexOf('localhost') > -1 || document.location.host.indexOf('.ngrok.io')) {\r\n // Only used in development\r\n\r\n // Save selected themeId to localStorage, for including it in the XHR header \r\n // (checked in backend GetTenant() -> tenantSlugFromHeader)\r\n if (themeId && themeId !== \"default\"){\r\n localStorage.setItem('themeId', themeId);\r\n } else {\r\n // No themeId set or using 'default' theme, remove storage item\r\n localStorage.removeItem('themeId');\r\n }\r\n\r\n // Save selected themeId to a cookie, for use in the initial loading \r\n // (checked in backend GetTenant() -> tenantSlugFromDevCookie)\r\n if (themeId && themeId !== \"default\"){\r\n let d = new Date();\r\n d.setTime(d.getTime() + 10 * 365 * 24 * 60 * 60 * 1000);\r\n let expires = \"expires=\" + d.toUTCString();\r\n document.cookie = \"dev-rideit-tenant=\" + themeId + \";\" + expires + \";path=/\";\r\n } else {\r\n // No themeId set or using 'default' theme, remove cookie\r\n let expires = \"expires=\" + \"Thu, 01 Jan 1970 00:00:00 UTC\";\r\n document.cookie = \"dev-rideit-tenant=\" + \"\" + \";\" + expires + \";path=/\";\r\n }\r\n }\r\n },\r\n};\r\n\r\n// ACTIONS\r\nconst actions = {\r\n initializeApp: async ({rootGetters, dispatch}: {rootGetters: any, dispatch: any}) => {\r\n await dispatch('auth/refreshAccessToken', null, { root: true });\r\n const isAuthenticated = rootGetters['auth/isAuthenticated'];\r\n if (isAuthenticated) {\r\n await dispatch('auth/updateRefreshTokenTimeout', null, { root: true });\r\n await dispatch('initializeUserData');\r\n await dispatch('passenger/initializePassengers', null, { root: true });\r\n await dispatch('message/initializeMessages', null, { root: true });\r\n dispatch('passenger/fetchTrips', null, { root: true });\r\n }\r\n },\r\n initializeUserData: async ({commit, dispatch}: {commit: any, dispatch: any}) => {\r\n const user = await restService.auth.getUserData();\r\n commit('setUser', user);\r\n return user;\r\n },\r\n clearUserData: ({commit}: {commit: any}) => {\r\n commit('clearUserData', null);\r\n commit('trip/clearUserData', null, { root: true });\r\n commit('passenger/clearUserData', null, { root: true });\r\n commit('message/clearUserData', null, { root: true });\r\n commit('notice/clearUserData', null, { root: true });\r\n\r\n // Delete all cached api calls\r\n cacheService.clearApiCache();\r\n },\r\n updateLogin: async ({commit}: {commit: any}, login: IUsernameAndPassword) => {\r\n await restService.auth.updateLogin(login.username, login.password);\r\n commit('setUserPassword');\r\n },\r\n changePassword: async ({commit}: {commit: any}, login: IUsernameAndPassword) => {\r\n await restService.auth.changePassword(login.username, login.password, login.currentPassword);\r\n commit('setUserPassword');\r\n },\r\n setThemeId: (context: AppActionContext, themeId: string) => {\r\n context.commit('setThemeId', themeId);\r\n },\r\n};\r\n\r\nconst appStore: AppModule = {\r\n namespaced: true,\r\n state,\r\n mutations,\r\n actions,\r\n getters,\r\n};\r\nexport default appStore;\r\n","import { Module } from 'vuex';\r\nimport tokenService from '@/services/tokenService';\r\nimport restService, { RideitBackend } from '@/services/restService';\r\nimport router from '@/router';\r\nimport { IRootState } from './store';\r\nimport i18n from '@/i18n';\r\n\r\nexport interface IAuthState {\r\n accessToken?: string;\r\n refreshTimeout?: number;\r\n}\r\n\r\nconst authState: IAuthState = {\r\n accessToken: localStorage.getItem('access_token') || '',\r\n refreshTimeout: undefined,\r\n};\r\n\r\nconst authGetters = {\r\n isAuthenticated: (state: IAuthState, getters: any) => !!getters.accessToken,\r\n accessToken: (state: IAuthState) => {\r\n // Check if access token exists and if it is still valid\r\n if (state.accessToken) {\r\n const currentTime = new Date().getTime() / 1000;\r\n const token = tokenService.decodeToken(state.accessToken);\r\n if (token && token.exp && token.exp > currentTime) {\r\n return state.accessToken;\r\n }\r\n }\r\n return '';\r\n },\r\n};\r\n\r\nconst authMutations = {\r\n setAccessToken: (state: IAuthState, token: string) => {\r\n localStorage.setItem('access_token', token);\r\n state.accessToken = token;\r\n },\r\n authSuccess: (state: IAuthState, token: string) => {\r\n state.accessToken = token;\r\n },\r\n authError: (state: IAuthState) => {\r\n localStorage.removeItem('access_token');\r\n state.accessToken = undefined;\r\n },\r\n authLogout: (state: IAuthState) => {\r\n localStorage.removeItem('access_token');\r\n state.accessToken = undefined;\r\n },\r\n};\r\n\r\nconst authActions = {\r\n logout: async ({commit, dispatch}: {commit: any, dispatch: any}) => {\r\n commit('authLogout');\r\n await dispatch('app/clearUserData', null, { root: true });\r\n\r\n const url = RideitBackend.baseUrl + 'logout?locale=' + i18n.locale;\r\n window.location.href = url;\r\n },\r\n authenticationExpired: async ({commit, dispatch, rootState}: {commit: any, dispatch: any, rootState: any}) => {\r\n if (navigator.onLine) {\r\n commit('authLogout');\r\n await dispatch('app/clearUserData', null, { root: true });\r\n if (rootState.route.meta.requireAuthentication) {\r\n const currentPath = rootState.route.fullPath;\r\n localStorage.setItem('redirect', currentPath);\r\n router.push({\r\n name: 'home',\r\n query: { redirect: currentPath },\r\n });\r\n }\r\n }\r\n },\r\n updateRefreshTokenTimeout: ({commit, state, dispatch}: {commit: any, state: IAuthState, dispatch: any}) => {\r\n if (state.refreshTimeout) {\r\n clearTimeout(state.refreshTimeout);\r\n state.refreshTimeout = undefined;\r\n }\r\n if (state.accessToken) {\r\n const expiresIn = tokenService.expiresIn(state.accessToken);\r\n if (expiresIn > 0) {\r\n state.refreshTimeout = window.setTimeout(() => {\r\n dispatch('refreshAccessToken');\r\n }, (expiresIn - 30) * 1000);\r\n } else {\r\n // Token has expired\r\n dispatch('authenticationExpired');\r\n }\r\n }\r\n },\r\n refreshAccessToken: async ({commit, dispatch, getters}: {commit: any, dispatch: any, getters: any}) => {\r\n try {\r\n const wasLoggedIn = getters.isAuthenticated;\r\n const tokenData = await restService.auth.getAccessToken();\r\n if (tokenData && tokenData.accessToken) {\r\n commit('setAccessToken', tokenData.accessToken);\r\n dispatch('updateRefreshTokenTimeout');\r\n if (!wasLoggedIn) {\r\n const redirect = localStorage.getItem('redirect');\r\n if (redirect) {\r\n localStorage.removeItem('redirect');\r\n router.push({ path: redirect });\r\n } else {\r\n commit('app/navigateToLandingPage', null, {root: true});\r\n }\r\n }\r\n } else {\r\n dispatch('authenticationExpired');\r\n }\r\n } catch (error) {\r\n // Should not happen\r\n // dispatch('authenticationExpired');\r\n // console.error(error);\r\n }\r\n },\r\n};\r\n\r\nconst authStore: Module = {\r\n namespaced: true,\r\n state: authState,\r\n getters: authGetters,\r\n actions: authActions,\r\n mutations: authMutations,\r\n};\r\nexport default authStore;\r\n","import restService from '@/services/restService';\r\nimport { Module } from 'vuex';\r\nimport { IRootState } from './store';\r\nimport cacheService from '@/services/cacheService';\r\n\r\nexport interface IPassengerState {\r\n passengers: IPassenger[];\r\n}\r\n\r\n// STATE\r\nconst passengerState: IPassengerState = {\r\n passengers: [],\r\n};\r\n\r\n// GETTERS\r\nconst getters = {\r\n passengers: (state: IPassengerState) => state.passengers,\r\n passengerById: (state: IPassengerState) => (id: string) =>\r\n state.passengers.filter(p => p.id === id)[0],\r\n};\r\n\r\n// MUTATIONS\r\nconst mutations = {\r\n passengerReplaceOrAdd: (state: IPassengerState, payload: IPassenger) => {\r\n const passenger = state.passengers.find(p => p.id === payload.id);\r\n if (passenger) {\r\n const index = state.passengers.indexOf(passenger);\r\n state.passengers.splice(index, 1, payload);\r\n } else {\r\n state.passengers.push(payload);\r\n }\r\n state.passengers.sort((p1, p2) => p1.name.localeCompare(p2.name));\r\n },\r\n clearUserData: (state: IPassengerState) => {\r\n state.passengers = [];\r\n },\r\n};\r\n\r\n// ACTIONS\r\nconst actions = {\r\n async initializePassengers({ commit, dispatch }: { commit: any; dispatch: any }) {\r\n try {\r\n // Get all passengers\r\n const passengers = await restService.passenger.get();\r\n await cacheService.clearMissingPassengersFromCache(passengers);\r\n // Add / update passengers\r\n passengers.forEach(passenger =>\r\n commit('passengerReplaceOrAdd', passenger),\r\n );\r\n return passengers;\r\n } catch (error) {\r\n commit('app/error', (error as any).message || error, { root: true });\r\n }\r\n },\r\n async fetchTrips({ state, commit, dispatch }: { state: IPassengerState, commit: any; dispatch: any }) {\r\n try {\r\n // Get trips for each passenger\r\n await Promise.all(\r\n state.passengers.map(passenger => {\r\n return dispatch('getPassengerTrips', passenger);\r\n }),\r\n );\r\n return state.passengers;\r\n } catch (error) {\r\n commit('app/error', (error as any).message || error, { root: true });\r\n }\r\n },\r\n async getPassengerTrips({ commit }: { commit: any }, passenger: IPassenger) {\r\n let trips: ITrip[] = [ ];\r\n try {\r\n if (!('caches' in window)) {\r\n const localTrips: any = JSON.parse(localStorage.getItem(`/api/passenger/${passenger.id}/trips`) as any);\r\n if (localTrips && new Date(localTrips.time).getTime() - new Date().getTime() < 60 * 1000) {\r\n trips = localTrips.trips;\r\n } else {\r\n trips = await restService.passenger.getTrips(passenger.id);\r\n localStorage.setItem(`/api/passenger/${passenger.id}/trips`, JSON.stringify({\r\n time: new Date().toISOString,\r\n trips,\r\n }),\r\n );\r\n }\r\n } else {\r\n trips = await restService.passenger.getTrips(passenger.id);\r\n }\r\n trips.forEach(trip => { commit('trip/addOrReplaceTrip', trip, { root: true }); });\r\n } catch (error) {\r\n commit('app/error', (error as any).message || error, { root: true });\r\n }\r\n },\r\n async acceptInvitation({ commit, dispatch }: { commit: any; dispatch: any }, invite: IUserInvitation) {\r\n try {\r\n const tokens = await restService.invitation.accept(invite);\r\n tokens.forEach(t => {\r\n commit('passengerReplaceOrAdd', t.passenger);\r\n dispatch('getPassengerTrips', t.passenger);\r\n });\r\n } catch (error) {\r\n if ((error as any).response && (error as any).response.status === 404) {\r\n // Token not found or already claimed\r\n }\r\n commit('app/error', (error as any).message || error, { root: true });\r\n }\r\n },\r\n async claimPassenger({ commit, dispatch }: { commit: any; dispatch: any }, token: string) {\r\n try {\r\n const tokenResp = await restService.passenger.claim(token);\r\n commit('passengerReplaceOrAdd', tokenResp.passenger);\r\n dispatch('getPassengerTrips', tokenResp.passenger);\r\n } catch (error) {\r\n if ((error as any).response && (error as any).response.status === 404) {\r\n // Token not found or already claimed\r\n } else if ((error as any).response && (error as any).response.status === 400) {\r\n // Validation error\r\n }\r\n commit('app/error', (error as any).message || error, { root: true });\r\n throw error;\r\n }\r\n },\r\n async updatePassenger({ commit }: { commit: any }, passenger: IPassenger) {\r\n try {\r\n const updatedPassenger = await restService.passenger.put(passenger);\r\n commit('passengerReplaceOrAdd', updatedPassenger);\r\n commit('trip/updatePassenger', updatedPassenger, { root: true });\r\n return updatedPassenger;\r\n } catch (error) {\r\n commit('app/error', (error as any).message || error, { root: true });\r\n }\r\n },\r\n async pollTrips({ state , dispatch }: { state: IPassengerState , dispatch: any }) {\r\n state.passengers.forEach(async (passenger: IPassenger) => {\r\n const trips = await restService.passenger.getTrips(passenger.id);\r\n trips.forEach(trip => {\r\n dispatch('trip/updateTrip', trip, { root: true });\r\n });\r\n });\r\n },\r\n};\r\n\r\nconst passengerStore: Module = {\r\n namespaced: true,\r\n state: passengerState,\r\n mutations,\r\n actions,\r\n getters,\r\n};\r\n\r\nexport default passengerStore;\r\n","import restService from '@/services/restService';\r\nimport moment from 'moment-timezone';\r\nimport { Module } from 'vuex';\r\nimport { IRootState } from './store';\r\nimport { INotice } from './notice-store';\r\n\r\nexport interface ITripState {\r\n trips: ITrip[];\r\n}\r\n\r\n// STATE\r\nconst tripState: ITripState = {\r\n trips: [],\r\n};\r\n\r\n// GETTERS\r\nconst getters = {\r\n tripById: (state: ITripState) => (id: number, date: string) => {\r\n const trip = state.trips.find(t => {\r\n const tripDate = (t.startDateTime || t.endDateTime).split('T')[0];\r\n return t.id === id && tripDate === date;\r\n });\r\n return trip;\r\n },\r\n dates: (state: ITripState) => {\r\n return state.trips.map(t => (t.startDateTime || t.endDateTime).split('T')[0])\r\n .filter((d, i, a) => a.indexOf(d) === i);\r\n },\r\n trips: (state: ITripState) => (date: string, passenger?: IPassenger) => {\r\n const min = new Date(date);\r\n min.setHours(0, 0, 0, 0);\r\n const max = new Date(min);\r\n max.setDate(max.getDate() + 1);\r\n const tripsForDate = state.trips.filter(t => {\r\n const startTime = new Date(t.startDateTime || t.endDateTime).getTime();\r\n return min.getTime() <= startTime && startTime < max.getTime();\r\n });\r\n if (passenger) {\r\n return tripsForDate.filter(t => t.passenger.id === passenger.id);\r\n } else {\r\n return tripsForDate;\r\n }\r\n },\r\n nextTripForPassenger: (state: ITripState) => (passneger: IPassenger) => {\r\n const now = moment();\r\n const upcomingTrips = state.trips.filter(t => {\r\n if (t.passenger.id !== passneger.id) {\r\n return false;\r\n }\r\n const startTime = moment(t.startDateTime);\r\n return now < startTime;\r\n });\r\n if (upcomingTrips.length > 0) {\r\n return upcomingTrips[0];\r\n }\r\n },\r\n};\r\n\r\n// MUTATIONS\r\nconst mutations = {\r\n tripsSetInitial: (state: ITripState, trips: ITrip[]) => {\r\n state.trips = trips;\r\n },\r\n addOrReplaceTrip: (state: ITripState, trip: ITrip) => {\r\n const tripTime = moment(trip.startDateTime || trip.endDateTime).valueOf();\r\n const existing = state.trips.filter(t => t.id === trip.id)\r\n .filter(t => {\r\n const time = moment(t.startDateTime || t.endDateTime).valueOf();\r\n return time === tripTime;\r\n }).find(e => e);\r\n\r\n if (existing) {\r\n const index = state.trips.indexOf(existing);\r\n state.trips.splice(index, 1, trip);\r\n } else {\r\n state.trips.push(trip);\r\n }\r\n state.trips.sort((t1, t2) => {\r\n const d1 = new Date(t1.startDateTime || t1.endDateTime);\r\n const d2 = new Date(t2.startDateTime || t2.endDateTime);\r\n const sd = d1. getTime() - d2.getTime();\r\n if (sd === 0) {\r\n return t1.passenger.name.localeCompare(t2.passenger.name);\r\n } else {\r\n return sd;\r\n }\r\n });\r\n },\r\n updatePassenger: (state: ITripState, passenger: IPassenger) => {\r\n state.trips.forEach(t => {\r\n if (t.passenger.id === passenger.id) {\r\n t.passenger = passenger;\r\n }\r\n });\r\n },\r\n clearUserData: (state: ITripState) => {\r\n state.trips = [];\r\n },\r\n};\r\n\r\n// ACTIONS\r\nconst actions = {\r\n async updateTrip({state, commit}: {state: ITripState, commit: any}, trip: ITrip) {\r\n const tripDate = (trip.startDateTime || trip.endDateTime).split('T')[0];\r\n const existing = state.trips.filter(t => t.id === trip.id)\r\n .filter(t => {\r\n const date = (t.startDateTime || t.endDateTime).split('T')[0];\r\n return date === tripDate;\r\n })[0];\r\n\r\n if (existing) {\r\n const link = `/trips/${trip.id}/${tripDate}`;\r\n const notice: INotice = {\r\n text: '',\r\n button: 'notice.open_trip',\r\n link,\r\n };\r\n if (!existing.pickupTime && trip.pickupTime) {\r\n notice.text = 'notice.passenger_picked_up';\r\n commit('notice/showNotice', notice , { root: true });\r\n }\r\n if (!existing.dropoffTime && trip.dropoffTime) {\r\n notice.text = 'notice.passenger_dropped_of';\r\n commit('notice/showNotice', notice, { root: true });\r\n }\r\n }\r\n\r\n commit('addOrReplaceTrip', trip);\r\n },\r\n async cancelTrips({commit}: {commit: any}, cancellation: ITripCancellation) {\r\n try {\r\n const updatedTrips = await restService.trips.cancel(cancellation);\r\n updatedTrips.forEach(t => commit('addOrReplaceTrip', t));\r\n // Remove trip caches from effected passengers\r\n const passengers = updatedTrips.map(t => t.passenger.id)\r\n .filter((p, i, a) => a.indexOf(p) === i);\r\n const apicache = await caches.open('api');\r\n for (const id of passengers) {\r\n const cachePath = `/api/passenger/${id}/trips`;\r\n await apicache.delete(cachePath);\r\n }\r\n return updatedTrips;\r\n } \r\n catch(error) {\r\n commit('app/error', (error as any).message || error, { root: true });\r\n throw error;\r\n }\r\n },\r\n async reviewTrip({commit, state}: {commit: any, state: ITripState}, review: ITripReview) {\r\n const result = await restService.trips.review(review);\r\n // TODO: What to do in case of errror?\r\n const trip = state.trips.filter(t => t.id === review.trip.id)[0];\r\n if (trip.reviews) {\r\n trip.reviews.push(review);\r\n } else {\r\n const reviews = new Array();\r\n reviews.push(review);\r\n trip.reviews = reviews;\r\n }\r\n commit('addOrReplaceTrip', trip);\r\n },\r\n async addTrackingTrip({ commit }: { commit: any }, link: string) {\r\n const trip = await restService.trips.tracked(link);\r\n commit('addOrReplaceTrip', trip);\r\n return trip;\r\n },\r\n\r\n};\r\n\r\nconst tripStore: Module = {\r\n namespaced: true,\r\n state: tripState,\r\n mutations,\r\n actions,\r\n getters,\r\n};\r\n\r\nexport default tripStore;\r\n","import { Module } from 'vuex';\r\nimport restService from '@/services/restService';\r\nimport { IRootState } from './store';\r\n\r\nexport interface IMessageState {\r\n messages: IMessage[];\r\n firstPage?: number;\r\n totalPages: number;\r\n}\r\n\r\nconst messageSorter = (a: IMessage, b: IMessage) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime();\r\n\r\n// STATE\r\nconst messageState: IMessageState = {\r\n messages: [],\r\n firstPage: undefined,\r\n totalPages: 0,\r\n};\r\n\r\n// GETTERS\r\nconst getters = {\r\n userName: (state: IMessageState, getter: any, rootState: any) => {\r\n return (rootState.app.user || { name: '' }).name;\r\n },\r\n sentByUser: (state: IMessageState, getter: any) => {\r\n const username = getter.userName;\r\n return state.messages.filter(m => m.from === username);\r\n },\r\n unseenCount: (state: IMessageState, getter: any, rootState: any) => {\r\n const username = getter.userName;\r\n return state.messages.filter(m => !m.seenAt && m.to === username).length;\r\n },\r\n forPassenger: (state: IMessageState) => (passengerId: string) => {\r\n return state.messages.filter(m => m.passengerId === passengerId);\r\n },\r\n canLoadMore: (state: IMessageState) => {\r\n return state.firstPage !== 1;\r\n },\r\n};\r\n\r\n// MUTATIONS\r\nconst mutations = {\r\n addMessages: (state: IMessageState, messagePage: IPagedMessages) => {\r\n messagePage.items.forEach(m => state.messages.replaceOrAddById(m));\r\n state.messages.sort(messageSorter);\r\n state.totalPages = messagePage.totalPages;\r\n state.firstPage = Math.min(messagePage.page, (state.firstPage || Number.MAX_SAFE_INTEGER));\r\n },\r\n updateMessage: (state: IMessageState, message: IMessage) => {\r\n state.messages.replaceOrAddById(message);\r\n state.messages.sort(messageSorter);\r\n },\r\n clearUserData: (state: IMessageState) => {\r\n state.messages = [];\r\n },\r\n};\r\n\r\n// ACTIONS\r\nconst actions = {\r\n initializeMessages: async ({dispatch, commit}: {dispatch: any, commit: any}) => {\r\n const messages = await restService.message.get();\r\n commit('addMessages', messages);\r\n // If last page contains less than 10 messages, load prev page also\r\n if (messages.items.length < 10 && messages.hasPreviousPage) {\r\n await dispatch('loadPreviousPage');\r\n }\r\n },\r\n loadLastPage: async ({commit}: {commit: any}) => {\r\n const messages = await restService.message.get();\r\n commit('addMessages', messages);\r\n return messages;\r\n },\r\n loadPreviousPage: async ({state, commit}: {state: IMessageState, commit: any}) => {\r\n if (typeof(state.firstPage) === 'number' && state.firstPage > 1) {\r\n const messages = await restService.message.get(state.firstPage - 1);\r\n commit('addMessages', messages);\r\n return messages;\r\n }\r\n },\r\n sendMessage: async ({commit}: {commit: any}, message: IMessage) => {\r\n const result = await restService.message.send(message.passengerId, message.body);\r\n commit('updateMessage', result);\r\n },\r\n markAsSeen: async ({commit}: {commit: any}, message: IMessage) => {\r\n const result = await restService.message.markSeen(message);\r\n commit('updateMessage', result);\r\n },\r\n markAsConfirmed: async ({commit}: {commit: any}, message: IMessage) => {\r\n const result = await restService.message.markConfirmed(message);\r\n commit('updateMessage', result);\r\n },\r\n};\r\n\r\nconst appStore: Module = {\r\n namespaced: true,\r\n state: messageState,\r\n mutations,\r\n actions,\r\n getters,\r\n};\r\nexport default appStore;\r\n","import { Module } from 'vuex';\r\nimport { IRootState } from './store';\r\n\r\nexport interface INoticeState {\r\n show: boolean;\r\n text: string;\r\n color?: string;\r\n button: string;\r\n link: string;\r\n queue: INotice[];\r\n}\r\n\r\nexport interface INotice {\r\n text: string;\r\n color?: string;\r\n button: string;\r\n link: string;\r\n}\r\n\r\n// STATE\r\nconst messageState: INoticeState = {\r\n show: false,\r\n text: '',\r\n color: undefined,\r\n button: '',\r\n link: '',\r\n queue: [],\r\n};\r\n\r\n// GETTERS\r\nconst getters = {\r\n};\r\n\r\n// MUTATIONS\r\nconst mutations = {\r\n showNotice: (state: INoticeState, notice: INotice) => {\r\n if (state.queue.length === 0) {\r\n state.text = notice.text;\r\n state.color = notice.color;\r\n state.link = notice.link;\r\n state.button = notice.button;\r\n state.show = true;\r\n } else {\r\n state.queue.push(notice);\r\n }\r\n },\r\n hideNotice: (state: INoticeState) => {\r\n state.show = false;\r\n },\r\n showNextNotice: (state: INoticeState) => {\r\n const next = state.queue.shift();\r\n if (next) {\r\n state.text = next.text;\r\n state.color = next.color;\r\n state.link = next.link;\r\n state.button = next.button;\r\n state.show = true;\r\n }\r\n },\r\n clearUserData: (state: INoticeState) => {\r\n state.queue = [];\r\n state.text = '';\r\n state.color = undefined;\r\n state.button = '';\r\n state.link = '';\r\n },\r\n};\r\n\r\n// ACTIONS\r\nconst actions = {\r\n\r\n};\r\n\r\nconst appStore: Module = {\r\n namespaced: true,\r\n state: messageState,\r\n mutations,\r\n actions,\r\n getters,\r\n};\r\nexport default appStore;\r\n","import restService from '@/services/restService';\r\n\r\n\r\ninterface ITransportationPermissionsState {\r\n permissions: IBookingQuotaWithPeriods[];\r\n}\r\n\r\n// STATE\r\nconst state: ITransportationPermissionsState = {\r\n permissions: [],\r\n};\r\n\r\n// GETTERS\r\nconst getters = {\r\n permissionsForPassenger: (state: ITransportationPermissionsState) => (id: string) =>\r\n state.permissions.filter(p => p.passenger === id),\r\n permissionById: (state: ITransportationPermissionsState) => (id: number) =>\r\n state.permissions.find(p => p.id === id),\r\n\r\n};\r\n\r\n// MUTATIONS\r\nconst mutations = {\r\n setPermissions: (state: ITransportationPermissionsState, permissions: IBookingQuotaWithPeriods[]) => state.permissions = permissions,\r\n};\r\n\r\nconst actions = {\r\n getPassengerTransportationPermissions : async ({commit}: {commit: any}, passengerId: string) => {\r\n const permissions = await restService.quotas.getWithPeriods(passengerId);\r\n commit('setPermissions', permissions);\r\n }\r\n};\r\n\r\nconst quotaStore = { state, mutations, actions, getters };\r\n(quotaStore as any).namespaced = true;\r\nexport default quotaStore;\r\n","import Vue from 'vue';\r\nimport Vuex, { Module, ModuleTree } from 'vuex';\r\nimport appStore, { IAppState } from './app-store';\r\nimport authStore, { IAuthState } from './auth-store';\r\nimport passengerStore, { IPassengerState } from './passenger-store';\r\nimport tripStore, { ITripState } from './trip-store';\r\nimport messageStore, { IMessageState } from './message-store';\r\nimport noticeStore, { INoticeState } from './notice-store';\r\nimport quotaStore from './quota-store';\r\n\r\nVue.use(Vuex);\r\n\r\nexport interface IRootState {\r\n app: IAppState;\r\n auth: IAuthState;\r\n passenger: IPassengerState;\r\n trip: ITripState;\r\n message: IMessageState;\r\n}\r\n\r\nconst modules: ModuleTree = {\r\n app: appStore,\r\n auth: authStore,\r\n passenger: passengerStore,\r\n trip: tripStore,\r\n message: messageStore,\r\n notice: noticeStore,\r\n quota: quotaStore,\r\n};\r\n\r\nconst getPersistedPaths = (mods: ModuleTree) => {\r\n let paths: string[] = [];\r\n Object.keys(mods).forEach(modName => {\r\n const modPaths: string[] = mods[modName].state.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};\r\n\r\n// PWA. Workbox will use staleWhileRevalidate strategy with broadcastUpdate.Plugin\r\n// to route API requests. Reqister to receive updates and trigger vuex events.\r\n// https://developers.google.com/web/tools/workbox/modules/workbox-broadcast-cache-update\r\nconst handleCacheUpdate = async (event: MessageEvent) => {\r\n // console.log(\"store: handleCacheUpdate for workbox event\");\r\n // Optional: ensure the message came from workbox-broadcast-update\r\n if (event.data.meta !== 'workbox-broadcast-update') {\r\n // console.log(\" event.meta does not indicate workbox update, ignoring ...\")\r\n return;\r\n }\r\n\r\n const {cacheName, updatedURL} = event.data.payload;\r\n /**\r\n * Function to fetch update data from cache\r\n * @param regex For matching the API path\r\n * @param callback What to do with the returned data if regex mathced the update\r\n */\r\n const readDataFromCache = async (regex: string, callback: (data: T) => void) => {\r\n const reg = new RegExp(regex);\r\n if (updatedURL.match(reg)) {\r\n const cache = await caches.open(cacheName);\r\n const updatedResponse = await cache.match(updatedURL);\r\n if (updatedResponse) {\r\n const data: T = await updatedResponse.json();\r\n callback(data);\r\n }\r\n }\r\n };\r\n // Handle passenger update\r\n readDataFromCache('/api/passenger$', passengers => {\r\n passengers.forEach(passenger => store.commit('passenger/passengerReplaceOrAdd', passenger));\r\n });\r\n // Handle trips update for a passenger\r\n readDataFromCache('/api/passenger/(.*)/trips$', trips => {\r\n trips.forEach(t => store.commit('trip/addOrReplaceTrip', t));\r\n });\r\n};\r\n\r\n// Updated for workbox >= v5\r\nif (typeof(navigator.serviceWorker) === 'object') {\r\n navigator.serviceWorker.ready.then(() => {\r\n navigator.serviceWorker.addEventListener('message', handleCacheUpdate);\r\n });\r\n}\r\n\r\n// Try to keep track of the current network state\r\nwindow.addEventListener('load', () => {\r\n function handleNetworkChange() {\r\n store.commit('app/setOnline', navigator.onLine);\r\n }\r\n window.addEventListener('online', handleNetworkChange);\r\n window.addEventListener('offline', handleNetworkChange);\r\n});\r\n\r\nconst store = new Vuex.Store({\r\n modules,\r\n});\r\nexport default store;\r\n","import './theme_default.scss';\r\nimport ITheme from '../ITheme';\r\nimport NavigationItems from '@/navigationItems';\r\n\r\nexport default class ThemeDefault implements ITheme {\r\n id: string = 'default';\r\n matchIfHostNameContainsAny: string[] = [\"localhost\", \".ngrok.io\", \"127.0.0.1\"];\r\n name: string = 'Kouluun.fi';\r\n cssClassName: string = 'theme_default';\r\n dark: boolean = false;\r\n menuDark: boolean = false;\r\n toolbarDark: boolean = true;\r\n bottomNavDark: boolean = false;\r\n menuRight: boolean = false;\r\n booking: boolean = false;\r\n menuNavigationItems: INavigationItem[] = [\r\n NavigationItems.passengers,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.personalInfo,\r\n NavigationItems.messages,\r\n NavigationItems.accessibilityReport,\r\n NavigationItems.privacy,\r\n ];\r\n bottomNavNavigationItems: INavigationItem[] = [\r\n NavigationItems.passengers,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.messages,\r\n ];\r\n vuetifyTheme: any = {\r\n primary: '#099',\r\n warning: '#FFC107',\r\n // accent: '#ffffff',\r\n bottomNavColor: '#ffffff',\r\n };\r\n}\r\n","import './theme_espoo.scss';\r\nimport ITheme from '../ITheme';\r\nimport NavigationItems from '@/navigationItems';\r\n\r\nexport default class ThemeEspoo implements ITheme {\r\n id: string = 'espoo';\r\n matchIfHostNameContainsAny: string[] = ['ekyyti.'];\r\n name: string = 'Kuljetuspalvelut';\r\n cssClassName: string = 'theme_espoo';\r\n dark: boolean = false;\r\n menuDark: boolean = false;\r\n toolbarDark: boolean = false;\r\n bottomNavDark: boolean = true;\r\n menuRight: boolean = true;\r\n booking: boolean = true;\r\n menuNavigationItems: INavigationItem[] = [\r\n NavigationItems.passengers,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.booking,\r\n NavigationItems.personalInfo,\r\n NavigationItems.messages,\r\n NavigationItems.accessibilityReport,\r\n NavigationItems.privacy,\r\n ];\r\n bottomNavNavigationItems: INavigationItem[] = [\r\n NavigationItems.booking,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.messages,\r\n ];\r\n vuetifyTheme: any = {\r\n primary: '#0047b6',\r\n secondary: '#00ff00',\r\n accent: '#0047b6',\r\n warning: '#00b7f1',\r\n bottomNavColor: '#ffffff',\r\n };\r\n}\r\n","import './theme_kovanen.scss';\r\nimport ITheme from '../ITheme';\r\nimport NavigationItems from '@/navigationItems';\r\n\r\nexport default class ThemeKovanen implements ITheme {\r\n id: string = 'kovanen';\r\n matchIfHostNameContainsAny: string[] = ['kovanen.'];\r\n name: string = 'Kovanen';\r\n cssClassName: string = 'theme_kovanen';\r\n dark: boolean = false;\r\n menuDark: boolean = false;\r\n toolbarDark: boolean = true;\r\n bottomNavDark: boolean = true;\r\n menuRight: boolean = false;\r\n booking: boolean = true;\r\n menuNavigationItems: INavigationItem[] = [\r\n NavigationItems.passengers,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.booking,\r\n NavigationItems.personalInfo,\r\n NavigationItems.messages,\r\n NavigationItems.register,\r\n NavigationItems.accessibilityReport,\r\n NavigationItems.privacy,\r\n ];\r\n bottomNavNavigationItems: INavigationItem[] = [\r\n NavigationItems.booking,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.messages,\r\n ];\r\n vuetifyTheme: any = {\r\n primary: '#0a0a0a',\r\n secondary: '#00ff00',\r\n accent: '#ffcb31',\r\n warning: '#ffcb31',\r\n bottomNavColor: '#ffcb31',\r\n };\r\n}\r\n","import './theme_fixutaxi.scss';\r\nimport ITheme from '../ITheme';\r\nimport NavigationItems from '@/navigationItems';\r\n\r\nexport default class ThemeFixutaxi implements ITheme {\r\n id: string = 'fixutaxi';\r\n matchIfHostNameContainsAny: string[] = [\"fixutaxi.\"];\r\n name: string = 'Fixutaxi';\r\n cssClassName: string = 'theme_fixutaxi';\r\n dark: boolean = false;\r\n menuDark: boolean = false;\r\n toolbarDark: boolean = true;\r\n bottomNavDark: boolean = true;\r\n menuRight: boolean = false;\r\n booking: boolean = true;\r\n menuNavigationItems: INavigationItem[] = [\r\n NavigationItems.passengers,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.booking,\r\n NavigationItems.personalInfo,\r\n NavigationItems.messages,\r\n NavigationItems.register,\r\n NavigationItems.accessibilityReport,\r\n NavigationItems.privacy,\r\n ];\r\n bottomNavNavigationItems: INavigationItem[] = [\r\n NavigationItems.booking,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.messages,\r\n ];\r\n vuetifyTheme: any = {\r\n primary: '#050505',\r\n secondary: '#ffcb31',\r\n accent: '#ffcb31',\r\n warning: '#ffcb31',\r\n bottomNavColor: '#ffcb31',\r\n };\r\n}\r\n","import './theme_meneva.scss';\r\nimport ITheme from '../ITheme';\r\nimport NavigationItems from '@/navigationItems';\r\n\r\nexport default class ThemeMeneva implements ITheme {\r\n id: string = 'meneva';\r\n matchIfHostNameContainsAny: string[] = ['verna.', 'meneva.']\r\n name: string = 'Menevä';\r\n cssClassName: string = 'theme_meneva';\r\n dark: boolean = false;\r\n menuDark: boolean = false;\r\n toolbarDark: boolean = true;\r\n bottomNavDark: boolean = true;\r\n menuRight: boolean = false;\r\n booking: boolean = true;\r\n menuNavigationItems: INavigationItem[] = [\r\n NavigationItems.passengers,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.booking,\r\n NavigationItems.personalInfo,\r\n NavigationItems.messages,\r\n NavigationItems.register,\r\n NavigationItems.accessibilityReport,\r\n NavigationItems.privacy,\r\n ];\r\n bottomNavNavigationItems: INavigationItem[] = [\r\n NavigationItems.booking,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.messages,\r\n ];\r\n vuetifyTheme: any = {\r\n primary: '#006643',\r\n secondary: '#00ae65',\r\n accent: '#00ae65',\r\n warning: '#eeda36',\r\n error: '#ff6666',\r\n bottomNavColor: '#ffffff',\r\n };\r\n}\r\n","import './theme_helpbus.scss';\r\nimport ITheme from '../ITheme';\r\nimport NavigationItems from '@/navigationItems';\r\n\r\nexport default class ThemeHelpbus implements ITheme {\r\n id: string = 'helpbus';\r\n matchIfHostNameContainsAny: string[] = ['helpbus'];\r\n name: string = 'Helpbus';\r\n cssClassName: string = 'theme_helpbus';\r\n dark: boolean = false;\r\n menuDark: boolean = false;\r\n toolbarDark: boolean = true;\r\n bottomNavDark: boolean = false;\r\n menuRight: boolean = false;\r\n booking: boolean = false;\r\n menuNavigationItems: INavigationItem[] = [\r\n NavigationItems.passengers,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.personalInfo,\r\n NavigationItems.messages,\r\n NavigationItems.accessibilityReport,\r\n NavigationItems.privacy,\r\n ];\r\n bottomNavNavigationItems: INavigationItem[] = [\r\n NavigationItems.passengers,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.messages,\r\n ];\r\n vuetifyTheme: any = {\r\n primary: '#333333',\r\n warning: '#FFC107',\r\n // accent: '#ffffff',\r\n bottomNavColor: '#ffffff',\r\n };\r\n}\r\n","import './theme_tatkela.scss';\r\nimport ITheme from '../ITheme';\r\nimport NavigationItems from '@/navigationItems';\r\n\r\nexport default class ThemeTatKela implements ITheme {\r\n id: string = 'tatkela';\r\n matchIfHostNameContainsAny: string[] = ['tat']; //TODO: Dangerously short, high false positive probability\r\n name: string = 'Taksi Tampere';\r\n cssClassName: string = 'theme_tatkela';\r\n dark: boolean = false;\r\n menuDark: boolean = false;\r\n toolbarDark: boolean = true;\r\n bottomNavDark: boolean = true;\r\n menuRight: boolean = false;\r\n booking: boolean = true;\r\n menuNavigationItems: INavigationItem[] = [\r\n NavigationItems.passengers,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.booking,\r\n NavigationItems.personalInfo,\r\n NavigationItems.messages,\r\n NavigationItems.accessibilityReport,\r\n NavigationItems.privacy,\r\n ];\r\n bottomNavNavigationItems: INavigationItem[] = [\r\n NavigationItems.booking,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.messages,\r\n ];\r\n vuetifyTheme: any = {\r\n primary: '#050505',\r\n secondary: '#fae50c',\r\n accent: '#fae50c',\r\n warning: '#fae50c',\r\n bottomNavColor: '#fae50c',\r\n };\r\n}\r\n","import './theme_fcg.scss';\r\nimport ITheme from '../ITheme';\r\nimport NavigationItems from '@/navigationItems';\r\n\r\nexport default class ThemeFcg implements ITheme {\r\n id: string = 'fcg';\r\n matchIfHostNameContainsAny: string[] = ['fcg'];\r\n name: string = 'Fcg';\r\n cssClassName: string = 'theme_fcg';\r\n dark: boolean = false;\r\n menuDark: boolean = false;\r\n toolbarDark: boolean = true;\r\n bottomNavDark: boolean = true;\r\n menuRight: boolean = false;\r\n booking: boolean = true;\r\n menuNavigationItems: INavigationItem[] = [\r\n NavigationItems.passengers,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.booking,\r\n NavigationItems.personalInfo,\r\n NavigationItems.messages,\r\n NavigationItems.accessibilityReport,\r\n NavigationItems.privacy,\r\n ];\r\n bottomNavNavigationItems: INavigationItem[] = [\r\n NavigationItems.booking,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.messages,\r\n ];\r\n vuetifyTheme: any = {\r\n primary: '#005192',\r\n secondary: '#e95d0e',\r\n accent: '#e95d0e',\r\n warning: '#e95d0e',\r\n bottomNavColor: '#ffffff',\r\n };\r\n}\r\n","import './theme_kulkukeskus.scss';\r\nimport ITheme from '../ITheme';\r\nimport NavigationItems from '@/navigationItems';\r\n\r\nexport default class ThemeKulkukeskus implements ITheme {\r\n id: string = 'kulkukeskus';\r\n matchIfHostNameContainsAny: string[] = ['kulkukeskus'];\r\n name: string = 'Kulkukeskus';\r\n cssClassName: string = 'theme_kulkukeskus';\r\n dark: boolean = false;\r\n menuDark: boolean = false;\r\n toolbarDark: boolean = true;\r\n bottomNavDark: boolean = true;\r\n menuRight: boolean = false;\r\n booking: boolean = true;\r\n menuNavigationItems: INavigationItem[] = [\r\n NavigationItems.passengers,\r\n NavigationItems.passengerTransportationPermissions,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.booking,\r\n NavigationItems.personalInfo,\r\n NavigationItems.messages,\r\n NavigationItems.accessibilityReport,\r\n NavigationItems.privacy,\r\n ];\r\n bottomNavNavigationItems: INavigationItem[] = [\r\n NavigationItems.booking,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.messages,\r\n ];\r\n vuetifyTheme: any = {\r\n primary: '#8052EB',\r\n secondary: '#c24e0a',\r\n accent: '#c24e0a',\r\n warning: '#c24e0a',\r\n error: \"#eb1111\",\r\n red: \"#e91b0c\",\r\n grey: \"#767676\",\r\n bottomNavColor: '#ffffff'\r\n };\r\n}\r\n","import './theme_keskustaksi.scss';\r\nimport ITheme from '../ITheme';\r\nimport NavigationItems from '@/navigationItems';\r\n\r\nexport default class ThemeKeskustaksi implements ITheme {\r\n id: string = 'keskustaksi';\r\n matchIfHostNameContainsAny: string[] = ['keskustaksi'];\r\n name: string = 'Keskustaksi';\r\n cssClassName: string = 'theme_keskustaksi';\r\n dark: boolean = false;\r\n menuDark: boolean = false;\r\n toolbarDark: boolean = true;\r\n bottomNavDark: boolean = true;\r\n menuRight: boolean = false;\r\n booking: boolean = true;\r\n menuNavigationItems: INavigationItem[] = [\r\n NavigationItems.passengers,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.booking,\r\n NavigationItems.personalInfo,\r\n NavigationItems.messages,\r\n NavigationItems.accessibilityReport,\r\n NavigationItems.privacy,\r\n ];\r\n bottomNavNavigationItems: INavigationItem[] = [\r\n NavigationItems.booking,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.messages,\r\n ];\r\n vuetifyTheme: any = {\r\n primary: '#006FB9',\r\n secondary: '#dd9933',\r\n accent: '#e95d0e',\r\n warning: '#e95d0e',\r\n bottomNavColor: '#ffffff',\r\n };\r\n}\r\n","import './theme_fimlab.scss';\r\nimport ITheme from '../ITheme';\r\nimport NavigationItems from '@/navigationItems';\r\n\r\nexport default class ThemeTh implements ITheme {\r\n id: string = 'fimlab';\r\n matchIfHostNameContainsAny: string[] = [\"fimlab\"];\r\n name: string = 'fimlab';\r\n cssClassName: string = 'theme_fimlab';\r\n dark: boolean = false;\r\n menuDark: boolean = false;\r\n toolbarDark: boolean = true;\r\n bottomNavDark: boolean = true;\r\n menuRight: boolean = false;\r\n booking: boolean = true;\r\n menuNavigationItems: INavigationItem[] = [\r\n NavigationItems.passengers,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.booking,\r\n NavigationItems.personalInfo,\r\n NavigationItems.messages,\r\n NavigationItems.accessibilityReport,\r\n NavigationItems.privacy,\r\n ];\r\n bottomNavNavigationItems: INavigationItem[] = [\r\n NavigationItems.booking,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.messages,\r\n ];\r\n \r\n vuetifyTheme: any = {\r\n primary: '#022f49',\r\n secondary: '#41b6e6',\r\n accent: '#022f49',\r\n warning: 'df1995',\r\n bottomNavColor: '#41b6e6',\r\n };\r\n}\r\n","import './theme_demo.scss';\r\nimport ITheme from '../ITheme';\r\nimport NavigationItems from '@/navigationItems';\r\n\r\nconst isKeusote = window.location.hostname.includes('keusote') || window.location.hostname.includes('localhost');\r\n\r\nexport default class ThemeDemo implements ITheme {\r\n id: string = 'demo';\r\n matchIfHostNameContainsAny: string[] = ['demo', 'itauusimaa', 'keusote', '02', 'optigo.co.uk', 'optigo.us', 'etelapohjanmaa'];\r\n name: string = 'Demo';\r\n cssClassName: string = 'theme_demo';\r\n dark: boolean = false;\r\n menuDark: boolean = false;\r\n toolbarDark: boolean = true;\r\n bottomNavDark: boolean = true;\r\n menuRight: boolean = false;\r\n booking: boolean = true;\r\n menuNavigationItems: INavigationItem[] = [\r\n NavigationItems.passengers,\r\n NavigationItems.passengerTransportationPermissions,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.booking,\r\n NavigationItems.personalInfo,\r\n NavigationItems.messages,\r\n isKeusote ? NavigationItems.accessibilityReportKeusote : NavigationItems.accessibilityReport,\r\n isKeusote ? NavigationItems.privacyKeusote : NavigationItems.privacy,\r\n ];\r\n bottomNavNavigationItems: INavigationItem[] = [\r\n NavigationItems.booking,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.messages,\r\n ];\r\n vuetifyTheme: any = {\r\n primary: '#000000',\r\n secondary: '#FFD700',\r\n accent: 'FFD700',\r\n warning: 'FFD700',\r\n error: \"#eb1111\",\r\n red: \"#e91b0c\",\r\n grey: \"#767676\",\r\n bottomNavColor: '#ffffff'\r\n };\r\n}\r\n","import './theme_lahitaksi.scss';\r\nimport ITheme from '../ITheme';\r\nimport NavigationItems from '@/navigationItems';\r\n\r\nexport default class ThemeFixutaxi implements ITheme {\r\n id: string = 'lahitaksi';\r\n matchIfHostNameContainsAny: string[] = [\"lahitaksi.\"];\r\n name: string = 'Lahitaksi';\r\n cssClassName: string = 'theme_lahitaksi';\r\n dark: boolean = false;\r\n menuDark: boolean = false;\r\n toolbarDark: boolean = false;\r\n bottomNavDark: boolean = false;\r\n menuRight: boolean = false;\r\n booking: boolean = true;\r\n menuNavigationItems: INavigationItem[] = [\r\n NavigationItems.passengers,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.booking,\r\n NavigationItems.personalInfo,\r\n NavigationItems.messages,\r\n NavigationItems.register,\r\n NavigationItems.accessibilityReport,\r\n NavigationItems.privacy,\r\n ];\r\n bottomNavNavigationItems: INavigationItem[] = [\r\n NavigationItems.booking,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.messages,\r\n ];\r\n vuetifyTheme: any = {\r\n primary: '#ffd400',\r\n secondary: '#000000',\r\n accent: '#000000',\r\n warning: '#ffcb31',\r\n bottomNavColor: '#FFFFFF',\r\n };\r\n}\r\n","import './theme_lapha.scss';\r\nimport ITheme from '../ITheme';\r\nimport NavigationItems from '@/navigationItems';\r\n\r\nexport default class ThemeLapha implements ITheme {\r\n id: string = 'lapha';\r\n matchIfHostNameContainsAny: string[] = ['lapha'];\r\n name: string = 'Lapha';\r\n cssClassName: string = 'theme_lapha';\r\n dark: boolean = false;\r\n menuDark: boolean = false;\r\n toolbarDark: boolean = true;\r\n bottomNavDark: boolean = true;\r\n menuRight: boolean = false;\r\n booking: boolean = true;\r\n menuNavigationItems: INavigationItem[] = [\r\n NavigationItems.passengers,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.booking,\r\n NavigationItems.personalInfo,\r\n NavigationItems.messages,\r\n NavigationItems.register,\r\n NavigationItems.accessibilityReport,\r\n NavigationItems.privacy,\r\n ];\r\n bottomNavNavigationItems: INavigationItem[] = [\r\n NavigationItems.booking,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.messages,\r\n ];\r\n vuetifyTheme: any = {\r\n primary: '#333399',\r\n secondary: '#FFCC00',\r\n accent: '#FFCC00',\r\n warning: '#FFCC00',\r\n error: \"#EB0000\",\r\n red: \"#EB0000\",\r\n grey: \"#767676\",\r\n bottomNavColor: '#ffffff'\r\n };\r\n}\r\n","import './theme_luvn.scss';\r\nimport ITheme from '../ITheme';\r\nimport NavigationItems from '@/navigationItems';\r\n\r\nexport default class ThemeLuvn implements ITheme {\r\n id: string = 'luvn';\r\n matchIfHostNameContainsAny: string[] = ['luvn'];\r\n name: string = 'luvn';\r\n cssClassName: string = 'theme_luvn';\r\n dark: boolean = false;\r\n menuDark: boolean = false;\r\n toolbarDark: boolean = true;\r\n bottomNavDark: boolean = true;\r\n menuRight: boolean = false;\r\n booking: boolean = true;\r\n menuNavigationItems: INavigationItem[] = [\r\n NavigationItems.passengers,\r\n NavigationItems.passengerTransportationPermissions,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.booking,\r\n NavigationItems.personalInfo,\r\n NavigationItems.messages,\r\n NavigationItems.accessibilityReport,\r\n NavigationItems.privacy,\r\n ];\r\n bottomNavNavigationItems: INavigationItem[] = [\r\n NavigationItems.booking,\r\n NavigationItems.trips,\r\n NavigationItems.cancelTrips,\r\n NavigationItems.messages,\r\n ];\r\n vuetifyTheme: any = {\r\n primary: '#6e112e',\r\n secondary: '#116e51',\r\n accent: '#116e51',\r\n warning: '#c24e0a',\r\n error: \"#eb1111\",\r\n red: \"#e91b0c\",\r\n grey: \"#767676\",\r\n bottomNavColor: '#ffffff'\r\n };\r\n}\r\n","import ThemeDefault from './default/theme_default';\r\nimport ThemeEspoo from './espoo/theme_espoo';\r\nimport ThemeKovanen from './kovanen/theme_kovanen';\r\nimport ThemeFixutaxi from './fixutaxi/theme_fixutaxi';\r\nimport ThemeMeneva from './meneva/theme_meneva';\r\nimport ITheme from './ITheme';\r\nimport ThemeHelpbus from './helpbus/theme_helpbus';\r\nimport ThemeTatKela from './tatkela/theme_tatkela';\r\nimport ThemeFcg from './fcg/theme_fcg';\r\nimport ThemeKulkukeskus from './kulkukeskus/theme_kulkukeskus';\r\nimport ThemeKeskustaksi from './keskustaksi/theme_keskustaksi';\r\nimport ThemeTh from './th/theme_th';\r\nimport ThemeFimlab from './fimlab/theme_fimlab';\r\nimport ThemeDemo from './demo/theme_demo';\r\nimport ThemeLahitaksi from './lahitaksi/theme_lahitaksi'\r\nimport ThemeLapha from './lapha/theme_lapha';\r\nimport ThemeLuvn from './luvn/theme_luvn';\r\n\r\nexport default class Themes {\r\n\r\n static themeDefault = new ThemeDefault();\r\n static themeEspoo = new ThemeEspoo();\r\n static themeKovanen = new ThemeKovanen();\r\n static themeFixutaxi = new ThemeFixutaxi();\r\n static themeMeneva = new ThemeMeneva();\r\n static themeHelpbus = new ThemeHelpbus();\r\n static themeTatKela = new ThemeTatKela();\r\n static themeFcg = new ThemeFcg();\r\n static themeKulkukeskus = new ThemeKulkukeskus();\r\n static themeKeskustaksi = new ThemeKeskustaksi();\r\n // static themeTh = new ThemeTh();\r\n static themeFimlab = new ThemeFimlab();\r\n static themeDemo = new ThemeDemo();\r\n static themeLahitaksi = new ThemeLahitaksi();\r\n static themeLapha = new ThemeLapha();\r\n static themeLuvn = new ThemeLuvn();\r\n\r\n static themes: ITheme[] = [\r\n Themes.themeDefault,\r\n Themes.themeEspoo,\r\n Themes.themeKovanen,\r\n Themes.themeFixutaxi,\r\n Themes.themeMeneva,\r\n Themes.themeHelpbus,\r\n Themes.themeTatKela,\r\n Themes.themeFcg,\r\n Themes.themeKulkukeskus,\r\n Themes.themeKeskustaksi,\r\n // Themes.themeTh,\r\n Themes.themeFimlab,\r\n Themes.themeDemo,\r\n Themes.themeLahitaksi,\r\n Themes.themeLapha,\r\n Themes.themeLuvn,\r\n ];\r\n\r\n static get themeIds(): string[] {\r\n // ['default', 'kovanen', 'fixutaxi', 'espoo', 'meneva', 'helpbus', 'tatkela', 'fcg', 'kulkukeskus', 'keskustaksi', 'taksihelsinki', 'fimlab'];\r\n return this.themes.map(t => t.id);\r\n }\r\n\r\n static MatchTenantFromUrl(): string{\r\n if (document.location.host.indexOf('localhost') > -1 || document.location.host.indexOf('.ngrok.io') > -1) {\r\n const matchedTenantByPathname = Themes.themes.find(t => document.location.pathname.startsWith(\"/\" + t.id));\r\n if (matchedTenantByPathname){\r\n return matchedTenantByPathname.id;\r\n }\r\n const devTheme = localStorage.getItem('themeId');\r\n if (typeof(devTheme) === 'string' && Themes.themes.some(t => t.id === devTheme)) {\r\n return devTheme;\r\n }\r\n }\r\n const matchedTenantByHostname = Themes.themes.find(t => t.matchIfHostNameContainsAny.some(m => document.location.host.indexOf(m) > -1));\r\n if (matchedTenantByHostname){\r\n return matchedTenantByHostname.id;\r\n }\r\n return 'default';\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-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"d-flex flex-shrink-1 flex-grow-0 mr-2\"},[_c('v-menu',{staticStyle:{\"position\":\"relative\"},attrs:{\"close-on-content-click\":false,\"transition\":\"none\",\"min-width\":\"290px\",\"attach\":'#' + _vm.datePickerAnchorName},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({attrs:{\"id\":\"calendar-toggle\",\"icon\":\"\",\"width\":\"48\",\"height\":\"48\",\"title\":_vm.$t('general.choose_date_from_calendar')}},on),[_c('v-icon',[_vm._v(\"event\")])],1)]}}]),model:{value:(_vm.startDateOpen),callback:function ($$v) {_vm.startDateOpen=$$v},expression:\"startDateOpen\"}},[_c('v-date-picker',{attrs:{\"locale\":_vm.locale,\"first-day-of-week\":\"1\",\"min\":_vm.minDate},on:{\"input\":function($event){_vm.startDateOpen = false}},model:{value:(_vm.dateWithoutTime),callback:function ($$v) {_vm.dateWithoutTime=$$v},expression:\"dateWithoutTime\"}})],1),_c('div',{staticClass:\"date-picker-anchor\",attrs:{\"id\":_vm.datePickerAnchorName}})],1),(!_vm.startDateOpen)?_c('v-col',{staticClass:\"d-flex flex-grow-1\"},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-text-field',{attrs:{\"type\":\"text\",\"value\":_vm.textFieldValue,\"aria-label\":_vm.label,\"required\":_vm.required,\"aria-required\":_vm.required,\"rules\":[\n _vm.rules.notEmpty,\n _vm.rules.filledAndValidDateFormat,\n _vm.rules.filledAndMinDate\n ]},on:{\"change\":_vm.onTextFieldChange,\"input\":_vm.onTextFieldInput,\"blue\":_vm.onTextFieldBlur},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [(_vm.label)?_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.label)),(_vm.required)?[_vm._v(\"*\")]:_vm._e()],2):_vm._e()]},proxy:true}],null,false,3455835135)})],1),_vm._l((_vm.errors),function(error,index){return _c('v-col',{key:index,staticClass:\"py-0 error--text\",attrs:{\"cols\":\"12\"}},[_vm._v(\" \"+_vm._s(error)+\" \")])})],2)],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\r\nimport Vue from 'vue';\r\nimport { Component, Watch, Prop } from 'vue-property-decorator';\r\nimport moment from 'moment';\r\nimport DateHelper from '@/helpers/DateHelper';\r\n\r\n@Component({\r\n components: {},\r\n})\r\nexport default class AccessibleTextInputDatePicker extends Vue {\r\n\r\n @Prop({ default: () => [] })\r\n errors!: any[];\r\n\r\n @Prop({ default: '' })\r\n value!: string;\r\n\r\n @Prop({ default: () => new Date().toISOString().substr(0, 10)})\r\n minDate!: string;\r\n\r\n @Prop({ default: false })\r\n required!: boolean;\r\n\r\n @Prop({ default: '' })\r\n label!: string;\r\n\r\n @Prop({ default: '' })\r\n ariaLabel!: string;\r\n\r\n uid: string = (Math.random() * 10e16).toString(16);\r\n\r\n get datePickerAnchorName(): string {\r\n return \"datePickerAnchor\" + \"_\" + this.uid;\r\n }\r\n\r\n get ariaLabelPrefix(): string {\r\n if (!this.ariaLabel && !this.ariaLabel.trim()){\r\n return '';\r\n }\r\n return this.ariaLabel + \", \";\r\n }\r\n\r\n @Watch('value', {immediate: true})\r\n valueChanged(newVal: string, oldVal: string) {\r\n if (newVal === oldVal || !newVal){\r\n return;\r\n }\r\n var newDate = new Date(newVal);\r\n this.editedYear = newDate.getFullYear();\r\n this.editedMonth = newDate.getMonth() + 1;\r\n this.editedDay = newDate.getDate();\r\n this.textFieldValue = `${this.editedDay}.${this.editedMonth}.${this.editedYear}`\r\n }\r\n\r\n textFieldValue = \"\";\r\n \r\n // TODO: Remove when not needed anymore\r\n startDateOpen: boolean = false;\r\n\r\n todayDate: Date = new Date();\r\n editedYearValid = true;\r\n editedMonthValid = true;\r\n editedDayValid = true;\r\n\r\n twoNumberYearInputSupported = false;\r\n\r\n get rules(): any {\r\n return {\r\n notEmpty: (v: string) =>\r\n !!(this.required && (v ? true : false) && v.trim().length > 0) || this.$t(\"error.must_not_be_empty\"),\r\n filledAndValidDateFormat: (v: string) =>\r\n (!this.isFilled(v) || !!this.dateIsValid(v)) || this.$t(\"general.check_date_format\"),\r\n filledAndMinDate: (v: string) =>\r\n (!this.isFilled(v) || !!this.dateIsAtOrAfterIsoDate(v, this.minDate)) ||\r\n this.$t(\"general.date_cannot_be_before_date\", {\r\n date: DateHelper.isoDateToFinnishDate(this.minDate),\r\n }),\r\n };\r\n }\r\n\r\n isFilled(v: string): boolean {\r\n var date = this.parseInputToDate(v);\r\n if (date){\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n parseInputToDate(v: string): Date | null {\r\n let date = null;\r\n v = v.trim();\r\n if (\r\n v.length >= 6 && \r\n v.indexOf(\".\") < 0 && \r\n v.indexOf(\"-\") < 0 &&\r\n v.indexOf(\"/\")){\r\n date = moment(v).toDate();\r\n }\r\n let separator = v.indexOf(\".\") > -1\r\n ? \".\"\r\n : v.indexOf(\"-\")\r\n ? \"-\"\r\n : v.indexOf(\"/\")\r\n ? \"/\"\r\n : null;\r\n if (separator){\r\n const parts = v.split(separator);\r\n let yearInput = \"\";\r\n let monthInput = \"\";\r\n let dayInput = \"\";\r\n \r\n if (parts.length === 3 && parts.every(p => p.trim().length > 0)) {\r\n if (separator === \".\"){\r\n yearInput = parts[2];\r\n monthInput = parts[1];\r\n dayInput = parts[0];\r\n } else if (separator === \"/\"){\r\n yearInput = parts[2];\r\n monthInput = parts[0];\r\n dayInput = parts[1];\r\n } else if (separator === \"-\"){\r\n yearInput = parts[0];\r\n monthInput = parts[1];\r\n dayInput = parts[2];\r\n }\r\n\r\n let year = 0;\r\n let month = 0;\r\n let day = 0;\r\n \r\n if (yearInput.length === 4){\r\n year = parseInt(yearInput);\r\n } else if (yearInput.length === 2 && this.twoNumberYearInputSupported){\r\n let yearCandidate = parseInt(yearInput);\r\n if (yearCandidate > 20){\r\n year = yearCandidate + 2000;\r\n }\r\n }\r\n if (monthInput.length > 0 && monthInput.length <= 2){\r\n month = parseInt(monthInput);\r\n }\r\n if (dayInput.length > 0 && dayInput.length <= 2){\r\n day = parseInt(dayInput);\r\n }\r\n if (year > 0 && month > 0 && day > 0){\r\n console.log(\"parsed to date ok\", year, month, day)\r\n date = moment(`${year}-${month}-${day}`).toDate();\r\n }\r\n }\r\n }\r\n return date;\r\n }\r\n\r\n onTextFieldChange(){\r\n }\r\n\r\n \r\n onTextFieldInput(v: string){\r\n this.editedYearValid = false;\r\n this.editedMonthValid = false;\r\n this.editedDayValid = false;\r\n\r\n if (this.dateIsValid(v)){\r\n var date = this.parseInputToDate(v);\r\n if (date === null){\r\n return;\r\n }\r\n //this.textFieldValue = v;\r\n const valMoment = moment(date);\r\n this.editedYear = valMoment.get(\"year\");\r\n this.editedMonth = valMoment.get(\"month\") + 1;\r\n this.editedDay = valMoment.get(\"date\");\r\n if (!this.isValidYear(this.editedYear)){\r\n this.editedYearValid = true;\r\n }\r\n if (!this.isValidDay(this.editedMonth)){\r\n this.editedMonthValid = true;\r\n }\r\n if (!this.isValidDay(this.editedDay)){\r\n this.editedDayValid = true;\r\n }\r\n this.dateWithoutTime = `${this.editedYear}-${this.editedMonth}-${this.editedDay}`;\r\n }\r\n }\r\n\r\n onTextFieldBlur(){\r\n }\r\n\r\n\r\n dateIsAtOrAfterIsoDate(v: string, otherIsoDate: string){\r\n const date = this.parseInputToDate(v);\r\n return !moment(date).isBefore(moment(otherIsoDate));\r\n }\r\n\r\n dateIsValid(val: string): boolean {\r\n var date = this.parseInputToDate(val);\r\n console.log(\"dateIsValid?\", date);\r\n if (!date){\r\n return false;\r\n }\r\n const valMoment = moment(date);\r\n if (!valMoment.isValid()){\r\n return false;\r\n }\r\n if (valMoment.isBefore(\"1900-01-01\")){\r\n return false;\r\n }\r\n if (valMoment.isAfter(\"2099-12-31\")){\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n get valid(){\r\n return this.editedYearValid && this.editedMonthValid && this.editedDayValid;\r\n }\r\n @Watch('valid')\r\n validChanged(newVal: boolean, oldVal: boolean){\r\n console.log(\"validChanged\", newVal);\r\n this.$emit(\"validChange\", newVal);\r\n }\r\n\r\n editedYear: number = this.currentYear;\r\n editedMonth: number = this.currentMonth;\r\n editedDay: number = this.currentDay;\r\n\r\n isValidYear(val: number){\r\n return val && !isNaN(val) && val >= 1000 && val <= 9999;\r\n }\r\n isValidMonth(val: number){\r\n return val && !isNaN(val) && val >= 1 && val <= 12;\r\n }\r\n isValidDay(val: number){\r\n const daysInMonth = moment().year(this.editedYear).month(this.editedMonth).daysInMonth();\r\n return val && !isNaN(val) && val >= 1 && val <= daysInMonth;\r\n }\r\n\r\n get dateWithoutTime(): string{\r\n return this.value;\r\n }\r\n set dateWithoutTime(val: string){\r\n this.$emit(\"change\", val);\r\n }\r\n \r\n get currentYear(){\r\n return this.todayDate.getFullYear();\r\n }\r\n\r\n get currentMonth(){\r\n return this.todayDate.getMonth() + 1;\r\n }\r\n \r\n get currentDay(){\r\n return this.todayDate.getDate();\r\n }\r\n\r\n get locale() {\r\n return this.$store.getters['app/locale'];\r\n }\r\n\r\n mounted(){\r\n this.todayDate = new Date();\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AccessibleTextInputDatePicker.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AccessibleTextInputDatePicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AccessibleTextInputDatePicker.vue?vue&type=template&id=0a152d71&\"\nimport script from \"./AccessibleTextInputDatePicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./AccessibleTextInputDatePicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDatePicker } from 'vuetify/lib/components/VDatePicker';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCol,VDatePicker,VIcon,VMenu,VRow,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"d-flex flex-shrink-1 flex-grow-0 mr-2\"},[_c('v-menu',{attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"transition\":\"scale-transition\",\"offset-y\":\"\",\"min-width\":\"290px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({attrs:{\"id\":\"calendar-toggle\",\"icon\":\"\",\"width\":\"24\",\"tabindex\":\"-1\",\"aria-hidden\":\"true\"}},on),[_c('v-icon',[_vm._v(\"event\")])],1)]}}]),model:{value:(_vm.startDateOpen),callback:function ($$v) {_vm.startDateOpen=$$v},expression:\"startDateOpen\"}},[_c('v-date-picker',{attrs:{\"locale\":_vm.locale,\"first-day-of-week\":\"1\",\"min\":_vm.minDate},on:{\"input\":function($event){_vm.startDateOpen = false}},model:{value:(_vm.dateWithoutTime),callback:function ($$v) {_vm.dateWithoutTime=$$v},expression:\"dateWithoutTime\"}})],1)],1),_c('v-col',{staticClass:\"d-flex flex-grow-1 \"},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-select',{ref:\"yearFieldRef\",attrs:{\"attach\":'#editedYearAnchor-' + _vm.uid,\"items\":_vm.yearOptions,\"hide-details\":\"\",\"dense\":\"\",\"label\":_vm.labelPrefix + _vm.$t('general.year'),\"required\":_vm.required,\"aria-required\":_vm.required},model:{value:(_vm.editedYear),callback:function ($$v) {_vm.editedYear=$$v},expression:\"editedYear\"}}),_c('div',{staticClass:\"a11y-dropdown hide-details\",attrs:{\"id\":'editedYearAnchor-' + _vm.uid}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-select',{ref:\"monthFieldRef\",attrs:{\"attach\":'#editedMonthAnchor-' + _vm.uid,\"items\":_vm.monthNameOptions,\"hide-details\":\"\",\"dense\":\"\",\"label\":_vm.labelPrefix + _vm.$t('general.month'),\"required\":_vm.required,\"aria-required\":_vm.required},model:{value:(_vm.editedMonthName),callback:function ($$v) {_vm.editedMonthName=$$v},expression:\"editedMonthName\"}}),_c('div',{staticClass:\"a11y-dropdown hide-details\",attrs:{\"id\":'editedMonthAnchor-' + _vm.uid}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-select',{ref:\"dayFieldRef\",attrs:{\"attach\":'#editedDayAnchor-' + _vm.uid,\"items\":_vm.dayOptions,\"disabled\":!_vm.editedYear || !_vm.editedMonth,\"hide-details\":\"\",\"dense\":\"\",\"label\":_vm.labelPrefix + _vm.$t('general.day'),\"required\":_vm.required,\"aria-required\":_vm.required},model:{value:(_vm.editedDay),callback:function ($$v) {_vm.editedDay=$$v},expression:\"editedDay\"}}),_c('div',{staticClass:\"a11y-dropdown hide-details\",attrs:{\"id\":'editedDayAnchor-' + _vm.uid}})],1),_vm._l((_vm.errors),function(error,index){return _c('v-col',{key:index,staticClass:\"py-0 error--text\",attrs:{\"cols\":\"12\"}},[_vm._v(\" \"+_vm._s(error)+\" \")])}),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c('div',{ref:\"dayChosenIndicatorRef\",staticClass:\"v-alert v-alert v-alert-success v-sheet theme--dark success\",staticStyle:{\"margin-bottom\":\"36px\"},attrs:{\"tabindex\":\"0\"}},[_c('div',{staticClass:\"v-alert__wrapper\"},[_c('div',{staticClass:\"v-alert__content\"},[_vm._v(\" \"+_vm._s(_vm.labelPrefix)+\" valittu: \"+_vm._s(_vm.dateWithoutTimeLocaleFormatted)+\" \")])])])])],2)],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\r\nimport Vue from 'vue';\r\nimport { Component, Watch, Prop } from 'vue-property-decorator';\r\nimport moment from 'moment';\r\nimport DateHelper from '@/helpers/DateHelper';\r\n\r\n@Component({\r\n components: {},\r\n})\r\nexport default class AccessibleTextInputDatePicker extends Vue {\r\n\r\n @Prop({ default: () => [] })\r\n errors!: any[];\r\n\r\n @Prop({ default: '' })\r\n value!: string;\r\n\r\n @Prop({ default: () => new Date().toISOString().substr(0, 10)})\r\n minDate!: string;\r\n\r\n @Prop({ default: false })\r\n required!: boolean;\r\n\r\n @Prop({ default: '' })\r\n ariaLabel!: string;\r\n\r\n @Prop({ default: '' })\r\n label!: string;\r\n\r\n uid: string = (Math.random() * 10e16).toString(16);\r\n\r\n dayChosen: boolean = false;\r\n\r\n get ariaLabelPrefix(): string {\r\n if (!this.ariaLabel && !this.ariaLabel.trim()){\r\n return '';\r\n }\r\n return this.ariaLabel + \", \";\r\n }\r\n\r\n get labelPrefix(): string {\r\n if (!this.label && !this.label.trim()){\r\n return '';\r\n }\r\n return this.label + \", \";\r\n }\r\n\r\n @Watch('value')\r\n valueChanged(newVal: string, oldVal: string) {\r\n if (newVal === oldVal || !newVal){\r\n return;\r\n }\r\n const newDate = new Date(newVal);\r\n this.editedYear = newDate.getFullYear();\r\n this.editedMonth = newDate.getMonth() + 1;\r\n this.editedDay = newDate.getDate();\r\n }\r\n \r\n // TODO: Remove when not needed anymore\r\n startDateOpen: boolean = false;\r\n\r\n todayDate: Date = new Date();\r\n editedYearValid = true;\r\n editedMonthValid = true;\r\n editedDayValid = true;\r\n get valid(){\r\n return this.editedYearValid && this.editedMonthValid && this.editedDayValid;\r\n }\r\n @Watch('valid')\r\n validChanged(newVal: boolean, oldVal: boolean){\r\n this.$emit(\"validChange\", newVal);\r\n }\r\n\r\n editedYear: number = this.currentYear;\r\n @Watch('editedYear')\r\n editedYearChanged(newVal: string, oldVal: string) {\r\n if (!newVal){\r\n this.editedYearValid = false;\r\n return;\r\n }\r\n if(newVal?.toString() === oldVal?.toString()){\r\n // No change, don't do anything, just return\r\n return;\r\n }\r\n // console.log(\"editedYearChanged\", newVal, oldVal)\r\n const newValNumber = parseInt(newVal, 10);\r\n if (!this.isValidYear(newValNumber)){\r\n // New value is not valid\r\n const oldValNumber = parseInt(oldVal, 10);\r\n if (!this.isValidYear(oldValNumber)){\r\n // Old value is not valid either, restore editedYear to currentMonth\r\n this.$nextTick(() => this.editedYear = this.currentYear);\r\n return;\r\n } \r\n // Old value is valid, restore editedYear to oldValue\r\n this.$nextTick(() => this.editedYear = oldValNumber);\r\n return;\r\n }\r\n this.editedYearValid = true;\r\n let date: Date = new Date(this.dateWithoutTime);\r\n if (date.getFullYear() === newValNumber){\r\n // No change to original model, don't do anything, just return\r\n return;\r\n }\r\n date.setFullYear(newValNumber);\r\n\r\n // Check if we are below minimum, if so, set date to minimum\r\n const minDateMoment = moment(this.minDate);\r\n if (moment(date).isBefore(minDateMoment)){\r\n // console.log(\"Date is before minDate, setting date to minDate\");\r\n this.$nextTick(() => {\r\n this.editedYear = minDateMoment.year();\r\n this.editedMonth = minDateMoment.month() + 1;\r\n this.editedDay = minDateMoment.date();\r\n });\r\n return;\r\n }\r\n\r\n // console.log(\" editedYearChanged\", \"setting new value\")\r\n this.dateWithoutTime = date.toISOString().substr(0, 10);\r\n this.$nextTick(() => {\r\n if (this.$refs.yearFieldRef){\r\n (this.$refs.yearFieldRef as HTMLElement).blur();\r\n }\r\n this.$nextTick(() => {\r\n if (this.$refs.monthFieldRef){\r\n (this.$refs.monthFieldRef as HTMLElement).focus();\r\n }\r\n });\r\n });\r\n }\r\n\r\n editedMonth: number = this.currentMonth;\r\n @Watch('editedMonth')\r\n editedMonthChanged(newVal: string, oldVal: string) {\r\n if (!newVal){\r\n this.editedMonthValid = false;\r\n return;\r\n }\r\n if (newVal?.toString() === oldVal?.toString()){\r\n // No change, don't do anything, just return\r\n return;\r\n }\r\n // console.log(\"editedMonthChanged\", newVal, oldVal)\r\n const newValNumber = parseInt(newVal, 10);\r\n if (!this.isValidMonth(newValNumber)){\r\n // New value is not valid\r\n const oldValNumber = parseInt(oldVal, 10);\r\n if (!this.isValidMonth(oldValNumber)){\r\n // Old value is not valid either, restore editedMonth to currentMonth\r\n this.$nextTick(() => this.editedMonth = this.currentMonth);\r\n return;\r\n } \r\n // Old value is valid, restore editedMonth to oldValue\r\n this.$nextTick(() => this.editedMonth = oldValNumber);\r\n return;\r\n }\r\n this.editedMonthValid = true;\r\n let date: Date = new Date(this.dateWithoutTime);\r\n if (date.getMonth() === newValNumber - 1){\r\n // No change to original model, don't do anything, just return\r\n return;\r\n }\r\n date.setMonth(newValNumber - 1);\r\n\r\n // Check if we are below minimum, if so, set date to minimum\r\n const minDateMoment = moment(this.minDate);\r\n if (moment(date).isBefore(minDateMoment)){\r\n // console.log(\"Date is before minDate, setting date to minDate\");\r\n this.$nextTick(() => {\r\n this.editedYear = minDateMoment.year();\r\n this.editedMonth = minDateMoment.month() + 1;\r\n this.editedDay = minDateMoment.date();\r\n });\r\n return;\r\n }\r\n\r\n // console.log(\" editedMonthChanged\", \"setting new value\");\r\n this.dateWithoutTime = date.toISOString().substr(0, 10);\r\n this.$nextTick(() => {\r\n if (this.$refs.monthFieldRef){\r\n (this.$refs.monthFieldRef as HTMLElement).blur();\r\n }\r\n this.$nextTick(() => {\r\n if (this.$refs.dayFieldRef){\r\n (this.$refs.dayFieldRef as HTMLElement).focus();\r\n }\r\n });\r\n });\r\n }\r\n\r\n months = [...Array(12).keys()]\r\n .map(x => x + 1)\r\n .map(x => {\r\n return {\r\n value: x,\r\n name: moment(x, 'M').format('MMMM')\r\n }\r\n });\r\n\r\n editedMonthName: string = moment(this.currentMonth, \"M\").format(\"MMMM\");\r\n @Watch('editedMonthName')\r\n editedMonthNameChanged(newVal: string, oldVal: string) {\r\n const newMonth = this.months.find(x => x.name === newVal);\r\n if (newMonth && newMonth.name !== oldVal){\r\n this.editedMonth = newMonth.value;\r\n }\r\n }\r\n\r\n editedDay: number = this.currentDay;\r\n @Watch('editedDay')\r\n editedDayChanged(newVal: string, oldVal: string) {\r\n if (!newVal){\r\n this.editedDayValid = false;\r\n return;\r\n }\r\n if (newVal?.toString() === oldVal?.toString()){\r\n // No change, don't do anything, just return\r\n return;\r\n }\r\n // console.log(\"editedDayChanged\", newVal, oldVal)\r\n const newValNumber = parseInt(newVal, 10);\r\n if (!this.isValidDay(newValNumber)){\r\n // New value is not valid\r\n const oldValNumber = parseInt(oldVal, 10);\r\n if (!this.isValidDay(oldValNumber)){\r\n // Old value is not valid either, restore editedDay to currentMonth\r\n this.$nextTick(() => this.editedDay = this.currentDay);\r\n return;\r\n } \r\n // Old value is valid, restore editedDay to oldValue\r\n this.$nextTick(() => this.editedDay = oldValNumber);\r\n return;\r\n }\r\n this.editedDayValid = true;\r\n let date: Date = new Date(this.dateWithoutTime)\r\n if (date.getDate() === newValNumber){\r\n // No change to original model, don't do anything, just return\r\n return;\r\n }\r\n date.setDate(newValNumber);\r\n\r\n // Check if we are below minimum, if so, set date to minimum\r\n const minDateMoment = moment(this.minDate);\r\n if (moment(date).isBefore(minDateMoment)){\r\n // console.log(\"Date is before minDate, setting date to minDate\");\r\n this.$nextTick(() => {\r\n this.editedYear = minDateMoment.year();\r\n this.editedMonth = minDateMoment.month() + 1;\r\n this.editedDay = minDateMoment.date();\r\n });\r\n return;\r\n }\r\n\r\n // console.log(\" editedDayChanged\", \"setting new value\")\r\n this.dateWithoutTime = date.toISOString().substr(0, 10);\r\n this.dayChosen = true;\r\n this.$nextTick(() => {\r\n if (this.$refs.dayFieldRef){\r\n (this.$refs.dayFieldRef as HTMLElement).blur();\r\n }\r\n this.$nextTick(() => {\r\n if (this.$refs.dayChosenIndicatorRef){\r\n (this.$refs.dayChosenIndicatorRef as HTMLElement).focus();\r\n }\r\n });\r\n });\r\n\r\n }\r\n\r\n isValidYear(val: number){\r\n return val && !isNaN(val) && val >= 1000 && val <= 9999;\r\n }\r\n isValidMonth(val: number){\r\n return val && !isNaN(val) && val >= 1 && val <= 12;\r\n }\r\n isValidDay(val: number){\r\n const daysInMonth = moment().year(this.editedYear).month(this.editedMonth).daysInMonth();\r\n return val && !isNaN(val) && val >= 1 && val <= daysInMonth;\r\n }\r\n\r\n get dateWithoutTime(): string{\r\n return this.value;\r\n }\r\n set dateWithoutTime(val: string){\r\n // console.log(\"EMIT dateWithoutTime:\", val);\r\n this.$emit(\"change\", val);\r\n }\r\n\r\n get dateWithoutTimeLocaleFormatted(): string {\r\n return DateHelper.isoDateToFinnishDate(this.dateWithoutTime);\r\n }\r\n \r\n get yearOptions(){\r\n return [this.currentYear, this.currentYear + 1];\r\n }\r\n\r\n get monthOptions(){\r\n if (this.editedYear === this.currentYear){\r\n return this.months.filter(x => x.value >= this.currentMonth);\r\n }\r\n return this.months;\r\n }\r\n\r\n get monthNameOptions(){\r\n return this.monthOptions.map(x => x.name);\r\n }\r\n\r\n get dayOptions(){\r\n if (!this.editedYear || !this.editedMonth){\r\n return [];\r\n }\r\n\r\n const daysInMonth = moment().year(this.editedYear).month(this.editedMonth - 1).daysInMonth();\r\n const dayNumbers = [...Array(daysInMonth).keys()].map(x => x + 1);\r\n if (this.editedYear === this.currentYear && this.editedMonth === this.currentMonth){\r\n return dayNumbers.filter(x => x >= this.currentDay);\r\n } \r\n return dayNumbers; \r\n }\r\n\r\n get currentYear(){\r\n return this.todayDate.getFullYear();\r\n }\r\n\r\n get currentMonth(){\r\n return this.todayDate.getMonth() + 1;\r\n }\r\n \r\n get currentDay(){\r\n return this.todayDate.getDate();\r\n }\r\n\r\n get locale() {\r\n return this.$store.getters['app/locale'];\r\n }\r\n\r\n mounted(){\r\n this.todayDate = new Date();\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AccessibleThreeFieldDatePicker.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AccessibleThreeFieldDatePicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AccessibleThreeFieldDatePicker.vue?vue&type=template&id=db7d569a&\"\nimport script from \"./AccessibleThreeFieldDatePicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./AccessibleThreeFieldDatePicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDatePicker } from 'vuetify/lib/components/VDatePicker';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\ninstallComponents(component, {VBtn,VCol,VDatePicker,VIcon,VMenu,VRow,VSelect})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"page\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-card',[_c('v-card-title',{attrs:{\"primary-title\":\"\"}},[_c('h1',{ref:\"pageTitleRef\",staticClass:\"headline\",attrs:{\"id\":\"main-content\",\"role\":\"heading\",\"tabindex\":\"-1\"}},[_vm._v(\" \"+_vm._s(_vm.$t('accessibilityReport.header1'))+\" \")])]),_c('v-card-text',[_c('i18n',{attrs:{\"path\":\"accessibilityReport.paragraph1\",\"tag\":\"p\"},scopedSlots:_vm._u([{key:\"link\",fn:function(){return [_c('a',{attrs:{\"href\":_vm.$t('accessibilityReport.link1Href'),\"target\":\"_blank\"},on:{\"click\":_vm.onExternalLinkClicked}},[_vm._v(_vm._s(_vm.$t('accessibilityReport.link1Text')))])]},proxy:true}])}),_c('p',[_vm._v(_vm._s(_vm.$t('accessibilityReport.paragraph2')))]),_c('h2',[_vm._v(_vm._s(_vm.$t('accessibilityReport.stateOfAccessibility.header21')))]),_c('p',[_vm._v(_vm._s(_vm.$t('accessibilityReport.stateOfAccessibility.paragraph3')))]),_c('p',[_vm._v(_vm._s(_vm.$t('accessibilityReport.stateOfAccessibility.paragraph4')))]),_c('h2',[_vm._v(_vm._s(_vm.$t('accessibilityReport.feedBack.header23')))]),_c('p',[_vm._v(_vm._s(_vm.$t('accessibilityReport.feedBack.paragraph9')))]),_c('i18n',{attrs:{\"path\":\"accessibilityReport.feedBack.paragraph10\",\"tag\":\"p\"},scopedSlots:_vm._u([{key:\"link\",fn:function(){return [_c('a',{attrs:{\"href\":_vm.$t('accessibilityReport.feedBack.email1Href')}},[_vm._v(_vm._s(_vm.$t('accessibilityReport.feedBack.email1Text')))])]},proxy:true}])}),_c('h3',[_vm._v(_vm._s(_vm.$t('accessibilityReport.feedBack.header35')))]),_c('i18n',{attrs:{\"path\":\"accessibilityReport.feedBack.paragraph11\",\"tag\":\"p\"},scopedSlots:_vm._u([{key:\"link\",fn:function(){return [_c('a',{attrs:{\"href\":_vm.$t('accessibilityReport.feedBack.link3Href'),\"target\":\"_blank\"},on:{\"click\":_vm.onExternalLinkClicked}},[_vm._v(_vm._s(_vm.$t('accessibilityReport.feedBack.link3Text')))])]},proxy:true}])}),_c('p',[_vm._v(_vm._s(_vm.$t('accessibilityReport.supervisingAuthority.name')))]),_c('p',[_vm._v(_vm._s(_vm.$t('accessibilityReport.supervisingAuthority.unit')))]),_c('p',[_c('a',{attrs:{\"href\":_vm.$t('accessibilityReport.supervisingAuthority.email2Href')}},[_vm._v(_vm._s(_vm.$t('accessibilityReport.supervisingAuthority.email2Text')))])]),_c('i18n',{attrs:{\"path\":\"accessibilityReport.supervisingAuthority.paragraph12\",\"tag\":\"p\"},scopedSlots:_vm._u([{key:\"link\",fn:function(){return [_c('a',{attrs:{\"href\":_vm.$t('accessibilityReport.supervisingAuthority.phone1Href')}},[_vm._v(_vm._s(_vm.$t('accessibilityReport.supervisingAuthority.phone1Text')))])]},proxy:true}])})],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\r\nimport moment, { Moment } from 'moment-timezone';\r\nimport { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport restService from '../services/restService';\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class AccessibilityReport extends Vue {\r\n \r\n onExternalLinkClicked(e: any) {\r\n const message = this.$t('general.external_link_confirm') as string;\r\n var confirmed = window.confirm(message);\r\n if (!confirmed){\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n mounted() {\r\n // #5929 forbids programmatic focus on page change\r\n // (this.$refs.pageTitleRef as HTMLElement).focus();\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AccessibilityReport.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AccessibilityReport.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AccessibilityReport.vue?vue&type=template&id=4c5822c6&scoped=true&\"\nimport script from \"./AccessibilityReport.vue?vue&type=script&lang=ts&\"\nexport * from \"./AccessibilityReport.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c5822c6\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCard,VCardText,VCardTitle,VCol,VContainer,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"page\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-card',[_c('v-card-title',{attrs:{\"primary-title\":\"\"}},[_c('h1',{ref:\"pageTitleRef\",staticClass:\"headline\",attrs:{\"id\":\"main-content\",\"role\":\"heading\",\"tabindex\":\"-1\"}},[_vm._v(\" \"+_vm._s(_vm.$t('accessibilityReportKeusote.header1'))+\" \")])]),_c('v-card-text',[_c('p',[_vm._v(_vm._s(_vm.$t('accessibilityReportKeusote.paragraph1')))]),_c('i18n',{attrs:{\"path\":\"accessibilityReportKeusote.paragraph2\",\"tag\":\"p\"},scopedSlots:_vm._u([{key:\"link\",fn:function(){return [_c('a',{attrs:{\"href\":_vm.$t('accessibilityReportKeusote.link1Href'),\"target\":\"_blank\"},on:{\"click\":_vm.onExternalLinkClicked}},[_vm._v(_vm._s(_vm.$t('accessibilityReportKeusote.link1Text')))])]},proxy:true}])}),_c('p',[_vm._v(_vm._s(_vm.$t('accessibilityReportKeusote.paragraph3')))]),_c('h2',[_vm._v(_vm._s(_vm.$t('accessibilityReportKeusote.stateOfAccessibility.header21')))]),_c('p',[_vm._v(_vm._s(_vm.$t('accessibilityReportKeusote.stateOfAccessibility.paragraph3')))]),_c('h2',[_vm._v(_vm._s(_vm.$t('accessibilityReportKeusote.feedBack.header23')))]),_c('i18n',{attrs:{\"path\":\"accessibilityReportKeusote.feedBack.paragraph9\",\"tag\":\"p\"},scopedSlots:_vm._u([{key:\"link\",fn:function(){return [_c('a',{attrs:{\"href\":_vm.$t('accessibilityReportKeusote.feedBack.email1Href')}},[_vm._v(_vm._s(_vm.$t('accessibilityReportKeusote.feedBack.email1Text')))])]},proxy:true}])}),_c('p',[_vm._v(_vm._s(_vm.$t('accessibilityReportKeusote.feedBack.paragraph10')))]),_c('h3',[_vm._v(_vm._s(_vm.$t('accessibilityReportKeusote.feedBack.header35')))]),_c('i18n',{attrs:{\"path\":\"accessibilityReportKeusote.feedBack.paragraph11\",\"tag\":\"p\"},scopedSlots:_vm._u([{key:\"link1\",fn:function(){return [_c('a',{attrs:{\"href\":_vm.$t('accessibilityReportKeusote.feedBack.link3Href'),\"target\":\"_blank\"},on:{\"click\":_vm.onExternalLinkClicked}},[_vm._v(_vm._s(_vm.$t('accessibilityReportKeusote.feedBack.link3Text')))])]},proxy:true},{key:\"link2\",fn:function(){return [_c('a',{attrs:{\"href\":_vm.$t('accessibilityReportKeusote.supervisingAuthority.email2Href'),\"target\":\"_blank\"},on:{\"click\":_vm.onExternalLinkClicked}},[_vm._v(_vm._s(_vm.$t('accessibilityReportKeusote.supervisingAuthority.email2Text')))])]},proxy:true},{key:\"link3\",fn:function(){return [_c('a',{attrs:{\"href\":_vm.$t('accessibilityReportKeusote.supervisingAuthority.phone1Href'),\"target\":\"_blank\"},on:{\"click\":_vm.onExternalLinkClicked}},[_vm._v(_vm._s(_vm.$t('accessibilityReportKeusote.supervisingAuthority.phone1Text')))])]},proxy:true}])}),_c('p',[_vm._v(_vm._s(_vm.$t('accessibilityReportKeusote.paragraph4'))+\" \")]),_c('i18n',{attrs:{\"path\":\"accessibilityReportKeusote.paragraph5\",\"tag\":\"p\"},scopedSlots:_vm._u([{key:\"link\",fn:function(){return [_c('a',{attrs:{\"href\":_vm.$t('accessibilityReportKeusote.link4Href'),\"target\":\"_blank\"},on:{\"click\":_vm.onExternalLinkClicked}},[_vm._v(_vm._s(_vm.$t('accessibilityReportKeusote.link4Text')))])]},proxy:true}])})],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\r\nimport moment, { Moment } from 'moment-timezone';\r\nimport { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport restService from '../services/restService';\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class AccessibilityReportKeusote extends Vue {\r\n \r\n onExternalLinkClicked(e: any) {\r\n const message = this.$t('general.external_link_confirm') as string;\r\n var confirmed = window.confirm(message);\r\n if (!confirmed){\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n mounted() {\r\n // #5929 forbids programmatic focus on page change\r\n // (this.$refs.pageTitleRef as HTMLElement).focus();\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AccessibilityReportKeusote.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AccessibilityReportKeusote.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AccessibilityReportKeusote.vue?vue&type=template&id=3c33ce34&scoped=true&\"\nimport script from \"./AccessibilityReportKeusote.vue?vue&type=script&lang=ts&\"\nexport * from \"./AccessibilityReportKeusote.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3c33ce34\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCard,VCardText,VCardTitle,VCol,VContainer,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"page\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-card',[_c('v-card-title',{attrs:{\"primary-title\":\"\"}},[_c('h1',{ref:\"pageTitleRef\",staticClass:\"headline\",attrs:{\"id\":\"main-content\",\"role\":\"heading\",\"tabindex\":\"-1\"}},[_vm._v(\" \"+_vm._s(_vm.$t('menu.booking'))+\" \")])]),(_vm.currentStep)?_c('v-form',{ref:\"bookingFormRef\"},[_c('v-stepper',{attrs:{\"flat\":\"\",\"non-linear\":\"\"},model:{value:(_vm.currentStep.id),callback:function ($$v) {_vm.$set(_vm.currentStep, \"id\", $$v)},expression:\"currentStep.id\"}},[_c('v-stepper-header',{staticClass:\"elevation-0 resize-to-fit\"},[_c('h2',{ref:\"stepTitleRef\",staticClass:\"text-subtitle-1 mx-2 mx-sm-4\",attrs:{\"tabindex\":\"0\",\"role\":\"heading\"}},[_vm._v(\" \"+_vm._s(_vm.$t('booking.step'))+\" \"+_vm._s(_vm.currentStepNumber)+\": \"+_vm._s(_vm.currentStepTitle)+\" \")])]),_c('v-stepper-items',[_c('v-stepper-content',{attrs:{\"step\":\"1\"}},[_c('BookingStepSelectPassenger',{attrs:{\"value\":_vm.order.passenger},on:{\"change\":_vm.onPassengerChanged,\"nextClick\":_vm.nextStep,\"prevClick\":_vm.prevStep}})],1),_c('v-stepper-content',{attrs:{\"step\":\"2\"}},[_c('BookingStepSelectDate',{attrs:{\"value\":_vm.dateWithoutTime,\"loading\":_vm.loading,\"hasPrevStep\":_vm.passengers.length > 1},on:{\"change\":_vm.onDateWithoutTimeChange,\"nextClick\":_vm.nextStep,\"prevClick\":_vm.prevStep}})],1),_c('v-stepper-content',{attrs:{\"step\":\"3\"}},[_c('BookingStepSelectQuota',{attrs:{\"order\":_vm.order,\"loading\":_vm.loading,\"items\":_vm.bookingQuotas},on:{\"nextClick\":_vm.nextStep,\"prevClick\":_vm.prevStep}})],1),_c('v-stepper-content',{attrs:{\"step\":\"4\"}},[(_vm.currentStep.id === 4)?_c('BookingStepSelectTimeAndAddresses',{attrs:{\"order\":_vm.order,\"passengerDestinations\":_vm.passengerDestinations,\"rules\":_vm.rules},on:{\"placeChange\":_vm.onPlaceChange,\"nextClick\":_vm.nextStep,\"prevClick\":_vm.prevStep}}):_vm._e()],1),_c('v-stepper-content',{attrs:{\"step\":\"5\"}},[_c('BookingStepEnterAdditionalInfo',{attrs:{\"bookingPhoneNumber\":_vm.bookingPhoneNumber,\"order\":_vm.order,\"rules\":_vm.rules},on:{\"bookingPhoneNumberChange\":function (val) { return _vm.bookingPhoneNumber = val; },\"nextClick\":_vm.nextStep,\"prevClick\":_vm.prevStep}})],1),_c('v-stepper-content',{attrs:{\"step\":\"6\"}},[_c('BookingStepViewOrderSummary',{attrs:{\"order\":_vm.order,\"booking\":_vm.convertOrderToBooking(_vm.order),\"saving\":_vm.bookingSaving,\"saved\":_vm.bookingSaved},on:{\"saveClick\":_vm.createBooking,\"prevClick\":_vm.prevStep,\"createReturnBookingClick\":_vm.gotoReturnBookingStep,\"resetClick\":_vm.onResetClick}})],1),_c('v-stepper-content',{attrs:{\"step\":\"7\"}},[(_vm.currentStep.id === 7)?_c('BookingStepSelectTimeAndAddresses',{attrs:{\"order\":_vm.order,\"dateAndTime\":_vm.order.dateAndTime,\"passengerDestinations\":_vm.passengerDestinations,\"rules\":_vm.rules,\"hasPrevStep\":false},on:{\"placeChange\":_vm.onPlaceChange,\"nextClick\":_vm.nextStep,\"prevClick\":_vm.prevStep}}):_vm._e()],1),_c('v-stepper-content',{attrs:{\"step\":\"8\"}},[_c('BookingStepEnterAdditionalInfo',{attrs:{\"bookingPhoneNumber\":_vm.bookingPhoneNumber,\"order\":_vm.order,\"rules\":_vm.rules},on:{\"bookingPhoneNumberChange\":function (val) { return _vm.bookingPhoneNumber = val; },\"nextClick\":_vm.nextStep,\"prevClick\":_vm.prevStep}})],1),_c('v-stepper-content',{attrs:{\"step\":\"9\"}},[_c('BookingStepViewOrderSummary',{attrs:{\"order\":_vm.order,\"booking\":_vm.convertOrderToBooking(_vm.order),\"saving\":_vm.bookingSaving,\"saved\":_vm.bookingSaved,\"enableCreateReturnBooking\":false},on:{\"saveClick\":_vm.createBooking,\"prevClick\":_vm.prevStep,\"createReturnBookingClick\":_vm.gotoReturnBookingStep,\"resetClick\":_vm.onResetClick}})],1)],1)],1)],1):_vm._e()],1)],1)],1),(_vm.bookingSaved)?_c('v-alert',{attrs:{\"type\":\"success\",\"aria-live\":\"polite\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"booking.bookingSubmittedSuccessfully\"))+\" \"),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"success darken-1 mt-3\",\"dark\":\"\"},on:{\"click\":function($event){_vm.$router.push({ path: '/trips' }); _vm.bookingSaved = false;}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"booking.move_to_trips\"))+\" \")])],1):_vm._e(),(_vm.bookingSaveError)?_c('v-alert',{attrs:{\"type\":\"error\",\"aria-live\":\"polite\"}},[_vm._v(\" \"+_vm._s(_vm.bookingSaveError)+\" \")]):_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-col',{attrs:{\"cols\":12}},[_c('v-row',[(_vm.passengers.length > 0)?_c('fieldset',{staticClass:\"no-border\"},[_c('v-radio-group',{staticClass:\"mt-0 a11y-radios\",staticStyle:{\"flex-grow\":\"1\"},attrs:{\"label\":_vm.$t('booking.passenger') + '*',\"aria-label\":_vm.$t('booking.passenger'),\"required\":true,\"aria-required\":true},model:{value:(_vm.editedPassenger),callback:function ($$v) {_vm.editedPassenger=$$v},expression:\"editedPassenger\"}},_vm._l((_vm.passengers),function(passenger){return _c('v-radio',{key:passenger.id,attrs:{\"value\":passenger,\"aria-label\":passenger.name,\"color\":\"blue darken-3 white--text\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('v-list-item-content',{attrs:{\"aria-hidden\":\"true\"}},[_c('v-list-item-title',[_vm._v(_vm._s(passenger.name))])],1),_c('v-list-item-avatar',{attrs:{\"color\":_vm.$randomColor(passenger.id),\"size\":\"30\",\"aria-hidden\":\"true\"}},[_c('span',{staticClass:\"white--text\"},[_vm._v(_vm._s(passenger.avatarText))])])]},proxy:true}],null,true)})}),1)],1):_vm._e()]),_c('v-row',{staticClass:\"mb-0\"},[_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"primary\",\"disabled\":!_vm.editedPassenger},on:{\"click\":function($event){return _vm.$emit('nextClick')}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.next_step\"))+\" \")])],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\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\n\r\n@Component\r\nexport default class BookingStepSelectPassenger extends Vue {\r\n @Prop()\r\n private value!: IPassenger;\r\n\r\n get editedPassenger(): IPassenger | null {\r\n return this.value;\r\n }\r\n set editedPassenger(val) {\r\n this.$emit(\"change\", val);\r\n }\r\n\r\n get passengers(): IPassenger[] {\r\n return this.$store.getters[\"passenger/passengers\"];\r\n }\r\n\r\n // TODO: on mounted/created?\r\n // if (passengers.length === 1) {\r\n // this.passenger = passengers[0];\r\n // }\r\n\r\n isObject(item: any) {\r\n return typeof item === \"object\";\r\n }\r\n\r\n created(){\r\n if (this.passengers.length >= 1){\r\n this.editedPassenger = this.passengers[0];\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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingStepSelectPassenger.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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingStepSelectPassenger.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BookingStepSelectPassenger.vue?vue&type=template&id=3968e35a&\"\nimport script from \"./BookingStepSelectPassenger.vue?vue&type=script&lang=ts&\"\nexport * from \"./BookingStepSelectPassenger.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VListItemAvatar } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRadio } from 'vuetify/lib/components/VRadioGroup';\nimport { VRadioGroup } from 'vuetify/lib/components/VRadioGroup';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCol,VListItemAvatar,VListItemContent,VListItemTitle,VRadio,VRadioGroup,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-col',{attrs:{\"cols\":12}},[_c('v-row',[_c('v-col',{staticClass:\"px-0\"},[(_vm.useSeparateFieldsDateTimeInput)?[_c('AccessibleThreeFieldDatePicker',{attrs:{\"value\":_vm.selectedIsoDate,\"required\":true,\"min\":_vm.minDate,\"label\":_vm.$t('general.date'),\"aria-label\":_vm.$t('general.date')},on:{\"change\":_vm.onSelectedIsoDateChange}})]:(_vm.useDateTypeInput)?[_c('v-text-field',{attrs:{\"type\":\"date\",\"value\":_vm.selectedIsoDate,\"aria-label\":_vm.$t('general.date'),\"rules\":[_vm.rules.isoDateFormat, _vm.rules.selectedIsoDateMinDate],\"aria-required\":\"true\",\"min\":_vm.minDate},on:{\"change\":_vm.onSelectedIsoDateChange},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('general.date'))+\"* \")])]},proxy:true}])})]:[_c('AccessibleTextInputDatePicker',{attrs:{\"value\":_vm.selectedIsoDate,\"required\":true,\"min\":_vm.minDate,\"label\":_vm.$t('general.date'),\"aria-label\":_vm.$t('general.date')},on:{\"change\":_vm.onSelectedIsoDateChange}})]],2)],1),_c('v-row',{staticClass:\"mb-0\"},[_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"primary\",\"disabled\":!_vm.selectedDateIsValid},on:{\"click\":function($event){return _vm.$emit('nextClick')}}},[_vm._v(\" \"+_vm._s(_vm.$t('general.button.next_step'))+\" \")]),(_vm.hasPrevStep)?_c('v-btn',{staticClass:\"ml-2\",attrs:{\"large\":\"\"},on:{\"click\":function($event){return _vm.$emit('prevClick')}}},[_vm._v(\" \"+_vm._s(_vm.$t('general.button.back'))+\" \")]):_vm._e()],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { TranslateResult } from \"vue-i18n\";\r\n\r\nexport default class BookingStep {\r\n id: number = 0;\r\n type: BookingStepTypeEnum = BookingStepTypeEnum.Unknown;\r\n title!: TranslateResult;\r\n\r\n static departureTimeOptions = [\r\n { label: 'booking.departure', value: true },\r\n { label: 'booking.arrival', value: false },\r\n ];\r\n}\r\n\r\nexport class BookingStepLoading {\r\n passengers = false;\r\n quotas = false;\r\n}\r\n\r\nexport enum BookingStepTypeEnum {\r\n Unknown = 0,\r\n SelectPassenger = 1,\r\n SelectDate = 2,\r\n SelectQuota = 3,\r\n SelectTimeAndAddresses = 4,\r\n EnterAdditionalInfo = 5,\r\n ViewOrderSummary = 6,\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 DateHelper from '@/helpers/DateHelper';\r\nimport moment from 'moment';\r\nimport { Component, Vue, Prop, Watch } from 'vue-property-decorator';\r\nimport { BookingStepLoading } from './models/BookingStep';\r\nimport AccessibleTextInputDatePicker from '@/components/AccessibleTextInputDatePicker.vue';\r\nimport AccessibleThreeFieldDatePicker from '@/components/AccessibleThreeFieldDatePicker.vue';\r\n\r\n@Component({\r\n components: {\r\n AccessibleTextInputDatePicker,\r\n AccessibleThreeFieldDatePicker\r\n },\r\n})\r\nexport default class BookingStepSelectDate extends Vue {\r\n @Prop() \r\n private value!: string;\r\n @Prop() \r\n private loading!: BookingStepLoading;\r\n @Prop({default: true}) \r\n hasPrevStep!: boolean;\r\n\r\n\r\n minDate: string = new Date().toISOString().substr(0, 10);\r\n\r\n datePickerOpen: boolean = false;\r\n\r\n selectedDateFormattedIsValid: boolean = true;\r\n\r\n get useSeparateFieldsDateTimeInput(){\r\n return this.$store.getters['app/useSeparateFieldsDateTimeInput'];\r\n }\r\n\r\n get useDateTypeInput(){\r\n return this.$store.getters['app/useDateTypeInput'];\r\n }\r\n\r\n get locale() {\r\n return this.$store.getters['app/locale'];\r\n }\r\n\r\n get rules(): any {\r\n return {\r\n dateFormattedFormat: (v: string) => \r\n !!this.formattedDateIsValid(v) || \r\n this.$t(\"general.check_date_format\"),\r\n selectedDateMinDate: (v: string) => \r\n !!this.formattedDateIsAtOrAfterIsoDate(v, this.minDate) || \r\n this.$t(\r\n \"general.date_cannot_be_before_date\", \r\n { \r\n date: DateHelper.isoDateToFinnishDate(this.minDate)\r\n }\r\n ),\r\n isoDateFormat: (v: string) => \r\n !!this.formattedDateIsValid(v) || \r\n this.$t(\"general.check_date_format\"),\r\n selectedIsoDateMinDate: (v: string) => \r\n !!this.isoDateIsAtOrAfterIsoDate(v, this.minDate) || \r\n this.$t(\r\n \"general.date_cannot_be_before_date\", \r\n { \r\n date: DateHelper.isoDateToFinnishDate(this.minDate)\r\n }\r\n ),\r\n }\r\n }\r\n\r\n\r\n // Start date formatted conversion, input handlnig & validation\r\n get selectedIsoDate(): string {\r\n // console.log(\" get selectedDateFormatted triggered\")\r\n return this.selectedDate;\r\n }\r\n set selectedIsoDate(val: string){\r\n const selectedIsoDateIsValid = this.isoDateIsValid(val) && this.isoDateIsAtOrAfterIsoDate(val, this.minDate);\r\n if (!selectedIsoDateIsValid){\r\n return;\r\n }\r\n this.selectedDate = DateHelper.finnishDateToIsoDate(val) as string;\r\n }\r\n get selectedDateFormatted(): string {\r\n // console.log(\" get selectedDateFormatted triggered\")\r\n return DateHelper.isoDateToFinnishDate(this.selectedDate);\r\n }\r\n set selectedDateFormatted(val: string){\r\n const selectedDateFormattedIsValid = this.formattedDateIsValid(val) && this.formattedDateIsAtOrAfterIsoDate(val, this.minDate);\r\n if (!selectedDateFormattedIsValid){\r\n return;\r\n }\r\n this.selectedDate = DateHelper.finnishDateToIsoDate(val) as string;\r\n }\r\n @Watch(\"selectedDateFormatted\")\r\n selectedDateFormattedChanged(val: string){\r\n this.selectedDateFormattedIsValid = this.formattedDateIsValid(val) && this.formattedDateIsAtOrAfterIsoDate(val, this.minDate);\r\n }\r\n // onSelectedDateFormattedInput(val: string){\r\n // console.log(\"onSelectedDateFormattedInput, val:\", val)\r\n // this.selectedDateFormattedIsValid = this.formattedDateIsValid(val) && this.formattedDateIsAtOrAfterIsoDate(val, this.minDate);\r\n // }\r\n onSelectedDateFormattedChange(val: string){\r\n this.selectedDateFormatted = val;\r\n }\r\n onSelectedDateInput(val: string){\r\n this.datePickerOpen = false\r\n }\r\n\r\n selectedIsoDateIsValid: boolean = false;\r\n\r\n @Watch(\"selectedIsoDate\")\r\n selectedIsoDateChanged(val: string){\r\n this.selectedIsoDateIsValid = this.isoDateIsValid(val) && this.isoDateIsAtOrAfterIsoDate(val, this.minDate);\r\n }\r\n onSelectedIsoDateChange(val: string){\r\n this.selectedIsoDate = val;\r\n }\r\n onSelectedIsoDateInput(val: string){\r\n this.datePickerOpen = false\r\n }\r\n\r\n isoDateIsAtOrAfterIsoDate(isoDate: string, otherIsoDate: string){\r\n return !moment(isoDate).isBefore(moment(otherIsoDate));\r\n }\r\n\r\n // Generic date validation\r\n formattedDateIsAtOrAfterIsoDate(val: string, otherIsoDate: string){\r\n const isoDate = DateHelper.finnishDateToIsoDate(val);\r\n return !moment(isoDate).isBefore(moment(otherIsoDate));\r\n }\r\n\r\n formattedDateIsValid(val: string): boolean {\r\n const isoDate = DateHelper.finnishDateToIsoDate(val);\r\n if (!isoDate){\r\n console.warn(\"formattedDateIsValid:\" + \" cannot convert to iso date: \" + val);\r\n return false;\r\n }\r\n const valMoment = moment(isoDate);\r\n if (!valMoment.isValid()){\r\n console.warn(\"formattedDateIsValid:\" + \" moment isValid=false: \" + valMoment);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n isoDateIsValid(val: string): boolean {\r\n const isIsoDate = DateHelper.isIsoDate(val);\r\n if (!isIsoDate){\r\n console.warn(\"isoDateIsValid:\" + \" cannot convert to iso date: \" + val);\r\n return false;\r\n }\r\n const valMoment = moment(val);\r\n if (!valMoment.isValid()){\r\n console.warn(\"isoDateIsValid:\" + \" moment isValid=false: \" + valMoment);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n \r\n\r\n get selectedDateIsValid(): boolean {\r\n return this.selectedDateFormattedIsValid;\r\n }\r\n\r\n get selectedDate(): string {\r\n return this.value;\r\n }\r\n set selectedDate(val: string) {\r\n this.$emit(\"change\", val);\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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingStepSelectDate.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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingStepSelectDate.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BookingStepSelectDate.vue?vue&type=template&id=330ecbd1&\"\nimport script from \"./BookingStepSelectDate.vue?vue&type=script&lang=ts&\"\nexport * from \"./BookingStepSelectDate.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCol,VRow,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-col',{attrs:{\"cols\":12}},[_c('v-row',[_c('v-col',{staticClass:\"px-0\",attrs:{\"cols\":12}},[_c('TimePicker',{ref:\"timePicker\",staticClass:\"form-control\",attrs:{\"name\":\"time\",\"rules\":_vm.rules.timeWithoutDate,\"required\":true,\"label\":_vm.$t('booking.time') + '*',\"aria-label\":_vm.$t('booking.time')},on:{\"input\":_vm.timeChangedInPicked},model:{value:(_vm.timeWithoutDate),callback:function ($$v) {_vm.timeWithoutDate=$$v},expression:\"timeWithoutDate\"}})],1),(!_vm.isLikumaPermission)?_c('v-col',{staticClass:\"px-0\",attrs:{\"cols\":12}},[_c('v-radio-group',{staticClass:\"mt-0 mb-4 a11y-radios\",attrs:{\"value\":_vm.selectedDepartureTimeOptionValue,\"row\":\"\",\"mandatory\":\"\",\"hide-details\":\"\",\"prepend-icon\":\"$fas-fa-business-time\",\"required\":true,\"aria-required\":true,\"aria-label\":_vm.$t('booking.departureOrArrivalTimePrompt')},on:{\"change\":_vm.onIsDepartureTimeChanged},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('label',{attrs:{\"aria-hidden\":\"true\",\"id\":\"departureOrArrivalTimeQuestionLabel\"}},[_vm._v(_vm._s(_vm.$t('booking.departureOrArrivalTimeQuestion'))+\"*\")])]},proxy:true}],null,false,3141421067)},_vm._l((_vm.departureTimeOptions),function(item,index){return _c('v-radio',{key:index,attrs:{\"label\":_vm.$t(item.label),\"value\":item.value,\"aria-label\":_vm.$t(item.label),\"aria-describedby\":\"departureOrArrivalTimeQuestionLabel\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('label',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(_vm._s(_vm.$t(item.label)))])]},proxy:true}],null,true)})}),1)],1):_vm._e()],1),_c('v-row',[_c('v-col',{staticClass:\"px-0\",attrs:{\"cols\":12}},[_c('PlacePickerG',{ref:\"originPlaceInputRef\",attrs:{\"rules\":_vm.rules.fromAddress,\"label\":_vm.$t('booking.addressFrom'),\"aria-label\":_vm.$t('booking.addressFrom') + '(' + _vm.$t('booking.address') + ')',\"required\":true,\"isOrigin\":true,\"allowAllPlaces\":_vm.allowAllPlaces,\"places\":_vm.availablePassengerPlaces},on:{\"input\":_vm.onOriginPlaceChange,\"placeSelected\":_vm.onOriginPlaceSelected},model:{value:(_vm.order.fromAddress),callback:function ($$v) {_vm.$set(_vm.order, \"fromAddress\", $$v)},expression:\"order.fromAddress\"}})],1)],1),_c('v-row',{staticClass:\"mt-0\"},[(_vm.allowAllPlaces)?_c('v-col',{staticClass:\"px-0 pt-1\",attrs:{\"cols\":6}},[_c('v-text-field',{staticClass:\"ml-8 a11y-has-prepend-icon\",attrs:{\"aria-label\":_vm.$t('booking.addressFrom') + ': ' + _vm.$t('booking.apartment'),\"persistent-placeholder\":\"\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('booking.apartment'))+\" \")])]},proxy:true}],null,false,4001630297),model:{value:(_vm.order.fromApartment),callback:function ($$v) {_vm.$set(_vm.order, \"fromApartment\", $$v)},expression:\"order.fromApartment\"}})],1):_vm._e()],1),_c('v-row',[_c('v-col',{staticClass:\"px-0\",attrs:{\"cols\":12}},[_c('PlacePickerG',{ref:\"destinationPlaceInputRef\",attrs:{\"rules\":_vm.rules.toAddress,\"label\":_vm.$t('booking.addressTo'),\"aria-label\":_vm.$t('booking.addressTo') + '(' + _vm.$t('booking.address') + ')',\"required\":true,\"isOrigin\":false,\"allowAllPlaces\":_vm.allowAllPlaces,\"places\":_vm.availablePassengerDestinationPlaces},on:{\"input\":_vm.onDestinationPlaceChange,\"placeSelected\":_vm.onDestinationPlaceSelected},model:{value:(_vm.order.toAddress),callback:function ($$v) {_vm.$set(_vm.order, \"toAddress\", $$v)},expression:\"order.toAddress\"}})],1)],1),_c('v-row',{staticClass:\"mt-0\"},[(_vm.allowAllPlaces)?_c('v-col',{staticClass:\"px-0 pt-1\",attrs:{\"cols\":6}},[_c('v-text-field',{staticClass:\"ml-8 a11y-has-prepend-icon\",attrs:{\"aria-label\":_vm.$t('booking.addressTo') + ': ' + _vm.$t('booking.apartment'),\"persistent-placeholder\":\"\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('booking.apartment'))+\" \")])]},proxy:true}],null,false,4001630297),model:{value:(_vm.order.toApartment),callback:function ($$v) {_vm.$set(_vm.order, \"toApartment\", $$v)},expression:\"order.toApartment\"}})],1):_vm._e()],1),(_vm.viaPointsEnabled)?[_c('div'),_c('v-row',[(_vm.viaPointsEnabled && _vm.order.viaPoints.length === 0)?_c('v-col',{staticClass:\"px-0\",attrs:{\"cols\":12}},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\"$fas-fa-map-marker\")]),_c('v-btn',{ref:\"addViaPointButtonRef\",staticClass:\"mt-1\",staticStyle:{\"margin-bottom\":\"1em\"},attrs:{\"large\":\"\",\"aria-label\":_vm.viaPointStatusMessage + ', ' + _vm.$t('booking.viaPoint.add')},on:{\"click\":function($event){return _vm.addViaPoint()}}},[_vm._v(\" \"+_vm._s(_vm.$t('booking.viaPoint.add'))+\" \")])],1):_vm._e()],1),_vm._l((_vm.order.viaPoints),function(viaPoint,index){return _c('v-row',{key:index},[_c('v-col',{attrs:{\"cols\":12}},[_c('v-row',[_c('v-col',{attrs:{\"cols\":10}},[_c('PlacePickerG',{ref:\"viaPointPlaceInputRef\",refInFor:true,attrs:{\"label\":_vm.$t('booking.viaPoint.viaPoint'),\"aria-label\":_vm.$t('booking.viaPoint.viaPoint') +\n '(' +\n _vm.$t('booking.address') +\n ')',\"allowAllPlaces\":_vm.viaPointsEnabled,\"required\":true,\"isViaPoint\":true,\"rules\":_vm.rules.viaAddress,\"places\":_vm.availablePassengerPlaces,\"autofocus\":\"\"},on:{\"input\":_vm.onViaPointChange},model:{value:(viaPoint.viaPointAddress),callback:function ($$v) {_vm.$set(viaPoint, \"viaPointAddress\", $$v)},expression:\"viaPoint.viaPointAddress\"}})],1),_c('v-col',{attrs:{\"cols\":1}},[_c('v-btn',{staticClass:\"mt-2 a11y-large-rect-button\",attrs:{\"title\":_vm.$t('booking.viaPoint.remove'),\"aria-label\":_vm.$t('booking.viaPoint.remove'),\"icon\":\"\"},on:{\"click\":function($event){return _vm.removeViaPoint(viaPoint)}}},[_c('v-icon',[_vm._v(\"$fas-fa-trash-can\")])],1)],1)],1),_c('v-row',{staticClass:\"mt-0\"},[(_vm.viaPointsEnabled)?_c('v-col',{staticClass:\"pt-1\",attrs:{\"cols\":6}},[_c('v-text-field',{staticClass:\"ml-8\",attrs:{\"aria-label\":_vm.$t('booking.addressFrom') + ': ' + _vm.$t('booking.apartment'),\"persistent-placeholder\":\"\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('booking.apartment'))+\" \")])]},proxy:true}],null,true),model:{value:(viaPoint.viaPointApartment),callback:function ($$v) {_vm.$set(viaPoint, \"viaPointApartment\", $$v)},expression:\"viaPoint.viaPointApartment\"}})],1):_vm._e()],1),(_vm.viaPointDeviationExceedsMax)?_c('v-row',{attrs:{\"aria-live\":\"polite\"}},[_c('v-col',{attrs:{\"cols\":12}},[_c('v-alert',{attrs:{\"type\":\"warning\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"booking.viaPoint.warning\", [ _vm.viaPointDeviation, _vm.viaPointMaxDeviation ]))+\" \")])],1)],1):_vm._e()],1)],1)})]:_vm._e(),_c('v-row',{staticClass:\"mt-5 mb-0\"},[_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"primary\",\"disabled\":!_vm.stepIsValid},on:{\"click\":function($event){return _vm.$emit('nextClick')}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.next_step\"))+\" \")]),(_vm.hasPrevStep)?_c('v-btn',{staticClass:\"ml-2\",attrs:{\"large\":\"\"},on:{\"click\":function($event){return _vm.$emit('prevClick')}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.back\"))+\" \")]):_vm._e()],1)],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import IGooglePlaceAddressComponents from './IGooglePlaceAddressComponents';\r\nimport IGooglePlaceCachedPrediction from './IGooglePlaceCachedPrediction';\r\n\r\nclass PlacePickerDestination implements IDestination {\r\n\r\n static fromGooglePlaceResult(result: google.maps.places.PlaceResult): PlacePickerDestination {\r\n const place = new PlacePickerDestination();\r\n place.source = DestinationSource.GooglePlaceResult;\r\n\r\n const addressComponents: IGooglePlaceAddressComponents = {};\r\n\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 administrative_area_level_3: 'long_name',\r\n country: 'long_name',\r\n postal_code: 'short_name',\r\n };\r\n\r\n result.address_components?.forEach((ac: any) => {\r\n const addressType = ac.types[0];\r\n if (addressComponentTypes[addressType]) {\r\n const val = ac[addressComponentTypes[addressType]];\r\n (addressComponents as any)[addressType] = val;\r\n }\r\n });\r\n\r\n const streetAddress = [addressComponents.route, addressComponents.street_number]\r\n .filter(x => x)\r\n .join(' ');\r\n\r\n const postalCode = addressComponents.postal_code;\r\n\r\n let locality = addressComponents.locality ? addressComponents.locality : addressComponents.administrative_area_level_3 ? addressComponents.administrative_area_level_3 : result.vicinity;\r\n if (result.name === locality) {\r\n locality = '';\r\n }\r\n\r\n const combinedAddress = [result.name, locality]\r\n .filter(x => x)\r\n .join(', ');\r\n\r\n const address = combinedAddress ? combinedAddress : result.formatted_address + '';\r\n\r\n place.alias = address;\r\n place.address = streetAddress ? streetAddress : result.formatted_address + '';\r\n place.streetnumber = addressComponents.street_number ? addressComponents.street_number : '';\r\n place.city = locality + '';\r\n place.postalcode = postalCode ? postalCode : '-';\r\n place.latitude = typeof(result.geometry?.location.lat) === 'number'\r\n ? result.geometry.location.lat as unknown as number\r\n : result.geometry?.location.lat() as unknown as number;\r\n place.longitude = typeof(result.geometry?.location.lng) === 'number'\r\n ? result.geometry.location.lng as unknown as number\r\n : result.geometry?.location.lng() as unknown as number;\r\n\r\n return place;\r\n }\r\n\r\n static fromGooglePlacePrediction(result: IGooglePlaceCachedPrediction): PlacePickerDestination {\r\n const place = new PlacePickerDestination();\r\n place.source = DestinationSource.GooglePlacePrediction;\r\n place.alias = result.prediction.description;\r\n place.prediction = result.prediction;\r\n return place;\r\n }\r\n\r\n static fromRideitDestination(destination: IDestination): PlacePickerDestination {\r\n const place = new PlacePickerDestination();\r\n Object.keys(destination).forEach(key => {\r\n (place as any)[key] = (destination as any)[key];\r\n });\r\n place.source = DestinationSource.Rideit;\r\n const streetAddress = destination.address.split(',')[0];\r\n place.alias = place.alias ? place.alias : [streetAddress, destination.city].filter(x => x).join(', ');\r\n return place;\r\n }\r\n\r\n id: string = '';\r\n alias: string = '';\r\n display: string = '';\r\n address: string = '';\r\n streetnumber?: string;\r\n city: string = '';\r\n postalcode: string = '';\r\n latitude: number = 0;\r\n longitude: number = 0;\r\n isHome: boolean = false;\r\n isViaPoint: boolean = false;\r\n isPickup: boolean = false;\r\n isMain: boolean = false;\r\n isSecondaryPlace: boolean = false;\r\n prediction?: google.maps.places.AutocompletePrediction;\r\n source?: DestinationSource;\r\n\r\n}\r\n\r\nexport enum DestinationSource {\r\n Unknown,\r\n Rideit,\r\n GooglePlaceResult,\r\n GooglePlacePrediction,\r\n}\r\n\r\nexport default PlacePickerDestination;\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"a11y-place-picker\"},[_c('div',{ref:\"googlePlacesContainer\"}),_c('div',{staticClass:\"picker-row\"},[_c('div',{staticClass:\"picker-col-icon\"},[_c('v-icon',{staticClass:\"picker-col-icon__icon\"},[_vm._v(\" \"+_vm._s(_vm.locationIcon(_vm.model))+\" \")])],1),_c('div',{staticClass:\"picker-col-content\"},[(_vm.model)?_c('div',{staticClass:\"picker-selected-item\"},[_c('label',{class:[_vm.validationErrors.length > 0 ? 'error--text' : 'grey--text'],attrs:{\"aria-label\":_vm.ariaLabel}},[_vm._v(\" \"+_vm._s(_vm.label + (_vm.required ? '*' : ''))+\" \")]),_c('div',{staticClass:\"picker-selected-item__title\"},[_vm._v(\" \"+_vm._s(_vm.model.alias)+\" \"),(_vm.validationErrors.length > 0)?_c('div',{staticClass:\"validation-errors error--text\",attrs:{\"role\":\"alert\"}},_vm._l((_vm.validationErrors),function(error){return _c('div',{key:error},[_vm._v(\" \"+_vm._s(error)+\" \")])}),0):_vm._e()]),_c('v-spacer'),_c('v-btn',{ref:\"changeButtonRef\",staticClass:\"mt-2\",attrs:{\"large\":\"\",\"aria-invalid\":_vm.validationErrors.length > 0,\"aria-label\":(_vm.ariaLabel || _vm.label) + \n ', ' + \n _vm.$t('booking.addressSelected') + \n ', ' + \n _vm.model.alias + \n ', ' + \n _vm.$t('booking.modifyAddress')},on:{\"click\":_vm.onChangeClick}},[_c('v-icon',[_vm._v(\"edit\")])],1)],1):_vm._e(),_c('v-autocomplete',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.model ? false : true),expression:\"model ? false : true\"}],ref:\"autocompleteRef\",staticClass:\"a11y-has-prepend-icon\",attrs:{\"attach\":'#' + _vm.attachId,\"rules\":_vm.rules,\"items\":_vm.filteredItems,\"loading\":_vm.isLoading,\"search-input\":_vm.search,\"no-filter\":\"\",\"hide-no-data\":\"\",\"auto-select-first\":\"\",\"item-text\":\"alias\",\"item-value\":\"alias\",\"aria-label\":_vm.ariaLabel || _vm.label,\"required\":_vm.required,\"aria-required\":_vm.required,\"placeholder\":_vm.placeholder,\"return-object\":\"\",\"disabled\":_vm.disabled,\"clearable\":_vm.clearable,\"autofocus\":_vm.autofocus,\"persistent-placeholder\":\"\"},on:{\"update:searchInput\":function($event){_vm.search=$event},\"update:search-input\":function($event){_vm.search=$event},\"change\":function () { return _vm.$emit('change'); },\"click:clear\":function($event){_vm.model = null}},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.label + (_vm.required ? '*' : ''))+\" \")])]},proxy:true},{key:\"selection\",fn:function(data){return [_vm._v(\" \"+_vm._s(data.item.alias)+\" \")]}},{key:\"item\",fn:function(data){return [_c('v-list-item-icon',[_c('v-icon',[_vm._v(_vm._s(_vm.locationIcon(data.item)))])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(data.item.alias)+\" \")])],1)]}}]),model:{value:(_vm.model),callback:function ($$v) {_vm.model=$$v},expression:\"model\"}})],1)]),_c('div',{staticClass:\"a11y-dropdown ml-8\",attrs:{\"id\":_vm.attachId}})])}\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\r\nimport Vue from 'vue';\r\nimport { Component, Watch, Prop } from 'vue-property-decorator';\r\n// import Booking from \"./Booking/models/Booking\";\r\nimport IAddressViewModel, {\r\n AddressTypeEnum,\r\n} from './Booking/models/IAddressViewModel';\r\nimport IGooglePlaceAddressComponents from './Booking/models/IGooglePlaceAddressComponents';\r\nimport IGooglePlaceCachedPrediction from './Booking/models/IGooglePlaceCachedPrediction';\r\nimport PlacePickerDestination, { DestinationSource } from './Booking/models/PlacePickerDestination';\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\n\r\n@Component({\r\n components: {},\r\n})\r\nexport default class PlacePickerG extends Vue {\r\n\r\n componentInstanceUuid: string = uuidv4();\r\n mountedAt: Date | null = null;\r\n\r\n get attachId() {\r\n return this.attach ? this.attach : \"attach_\" + this.componentInstanceUuid;\r\n }\r\n\r\n get filteredItems() {\r\n if (!this.search) {\r\n let allItems = this.items;\r\n if (this.passengerPlaces.length > 0) {\r\n allItems = allItems.concat(this.passengerPlaces);\r\n }\r\n allItems = allItems.filter(i => i);\r\n // deduplicate, otherwise will have this.items + this.passengerPlaces (which also return this.items)\r\n allItems = [...new Map(allItems.map(item => [item.id, item])).values()];\r\n return allItems;\r\n }\r\n const query = this.search.toLowerCase();\r\n let items = this.items;\r\n items = items.concat(this.passengerPlaces).filter(i => i);\r\n\r\n return items.filter(i => i.alias && i.alias.toLowerCase().includes(query))\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 return scoreB - scoreA;\r\n });\r\n }\r\n\r\n\r\n get favoritePlaces(): PlacePickerDestination[] {\r\n return [];\r\n }\r\n\r\n get isValid() {\r\n return !(this.$refs.autocompleteRef as any).hasError;\r\n }\r\n\r\n @Prop({ default: '' }) label!: string;\r\n @Prop({ default: '' }) ariaLabel!: string;\r\n @Prop({ default: '' }) placeholder!: string;\r\n @Prop({ default: '' }) attach!: string;\r\n @Prop({ default: false }) required!: boolean;\r\n @Prop({ default: false }) autofocus!: boolean;\r\n @Prop({ default: false }) disabled!: boolean;\r\n @Prop({ default: false }) clearable!: boolean;\r\n @Prop({ default: false }) allowAllPlaces!: boolean;\r\n @Prop({ default: () => [] }) places!: IDestination[];\r\n @Prop({ default: null }) value!: IDestination | null;\r\n @Prop({ default: null }) rules!: any[];\r\n\r\n isLoading: boolean = false;\r\n\r\n items: PlacePickerDestination[] = [];\r\n search: string = '';\r\n autocompleteSessionToken!: google.maps.places.AutocompleteSessionToken;\r\n\r\n model: IDestination | null = null;\r\n\r\n placeSelectedFlag: boolean = false;\r\n\r\n googlePlacesAutocompleteService!: google.maps.places.AutocompleteService;\r\n googlePlacesService!: google.maps.places.PlacesService;\r\n getGooglePlacesPredictionsTimeout: number = 0;\r\n\r\n lastEmitted: IDestination | null = null;\r\n passengerPlaces: PlacePickerDestination[] = [];\r\n\r\n get validationErrors(): string[]{\r\n const autocompleteRef = this.$refs.autocompleteRef as Vue;\r\n if (autocompleteRef){\r\n return (autocompleteRef as any).errorBucket as string[];\r\n }\r\n return []; \r\n }\r\n\r\n @Watch('search')\r\n onSearchChanged(val: string, oldVal: string) {\r\n if (this.placeSelectedFlag) {\r\n this.placeSelectedFlag = false;\r\n return;\r\n }\r\n\r\n if (!this.allowAllPlaces) {\r\n this.items = this.passengerPlaces;\r\n return;\r\n }\r\n\r\n this.items = this.favoritePlaces;\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 onPlacesResultsAvailable(predictions: any, status: any) {\r\n this.isLoading = false;\r\n this.items = this.concatGooglePlacesPredictions(\r\n [],\r\n predictions,\r\n status,\r\n ).map(p => PlacePickerDestination.fromGooglePlacePrediction(p));\r\n }\r\n\r\n @Watch('model', { immediate: true })\r\n onModelChanged(val: PlacePickerDestination | null, oldVal: PlacePickerDestination | null) {\r\n this.placeSelectedFlag = true;\r\n if (val && val.source) {\r\n if (val.source === DestinationSource.GooglePlacePrediction) {\r\n this.getGooglePlacesPlaceDetails(\r\n val.prediction as google.maps.places.AutocompletePrediction,\r\n this.autocompleteSessionToken,\r\n this.onGetDetailsComplete,\r\n );\r\n } else {\r\n if (this.lastEmitted != this.model){\r\n this.$emit('input', this.model);\r\n this.lastEmitted = this.model;\r\n\r\n const mountedAtMilliseconds = this.mountedAt ? this.mountedAt.getTime() : new Date().getTime();\r\n const mountedMillisecondsAgo = new Date().getTime() - mountedAtMilliseconds;\r\n if (mountedMillisecondsAgo > 500){\r\n window.setTimeout(() => {\r\n const changeButtonComponent = this.$refs.changeButtonRef as Vue;\r\n if (changeButtonComponent){\r\n (changeButtonComponent as any).$el.focus();\r\n }\r\n }, 200);\r\n }\r\n }\r\n return;\r\n }\r\n } else {\r\n this.$emit('input', null);\r\n this.lastEmitted = null;\r\n }\r\n \r\n }\r\n\r\n @Watch('value', { immediate: true }) \r\n onValueChanged(value: any) {\r\n if (value !== this.lastEmitted) {\r\n if (value) {\r\n const destination = PlacePickerDestination.fromRideitDestination(value);\r\n const foundDestination = this.items.find(d => d.alias === destination.alias);\r\n if (!foundDestination) {\r\n this.items.push(destination);\r\n }\r\n this.model = foundDestination ? foundDestination : destination;\r\n } else {\r\n this.model = value;\r\n }\r\n }\r\n \r\n }\r\n\r\n @Watch('places', { immediate: true }) \r\n onPlacesChanged() {\r\n this.passengerPlaces = this.places.map(p => PlacePickerDestination.fromRideitDestination(p));\r\n // TODO: The below original line will make it impossible to remove items from the items, hence it's commented out\r\n // this.items = this.items.concat(this.passengerPlaces);\r\n this.items = this.passengerPlaces;\r\n }\r\n\r\n onGetDetailsComplete(result: google.maps.places.PlaceResult, status: google.maps.places.PlacesServiceStatus) {\r\n const place = this.googlePlacesApiResultToAddressViewModel(\r\n result,\r\n status,\r\n );\r\n if (place) {\r\n this.items = this.items.concat(place);\r\n this.model = place;\r\n this.lastEmitted = place;\r\n this.$emit('input', place);\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 this.$emit('placeSelected');\r\n }\r\n\r\n timeout(ms: number) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n }\r\n\r\n async mounted() {\r\n this.mountedAt = new Date();\r\n }\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 const sessionToken = new google.maps.places.AutocompleteSessionToken();\r\n return sessionToken;\r\n }\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 alert('Error when getting place autocomplete results from Places API: ' + 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 ): IDestination | undefined {\r\n\r\n if (status !== google.maps.places.PlacesServiceStatus.OK) {\r\n alert('Error: Google Places API: googlePlacesService.getDetails: ' + status);\r\n return;\r\n }\r\n\r\n if (!result.address_components) {\r\n alert('Error: Google Places API: googlePlacesService.getDetails: No address components found in result.');\r\n return;\r\n }\r\n\r\n const destination = PlacePickerDestination.fromGooglePlaceResult(result);\r\n\r\n if (!destination.address) {\r\n alert('Error: Google Places API: googlePlacesService.getDetails: Address cannot be found in result.');\r\n return;\r\n }\r\n\r\n if (!result.geometry) {\r\n alert('Error: Google Places API: googlePlacesService.getDetails: Coordinates cannot be found in result.');\r\n return;\r\n }\r\n return destination;\r\n }\r\n\r\n focus() {\r\n (this.$refs.autocompleteRef as any).focus();\r\n }\r\n\r\n locationIcon(destination: IDestination | null): string {\r\n let icon = '$fas-fa-map-marker';\r\n if (destination) {\r\n if (destination.isHome) {\r\n icon = '$fas-fa-home';\r\n }\r\n if (destination.isPickup) {\r\n icon = '$fas-fa-street-view';\r\n }\r\n if (destination.isMain) {\r\n icon = '$fas-fa-school';\r\n }\r\n }\r\n return icon;\r\n }\r\n\r\n onChangeClick(){\r\n this.model = null; \r\n window.setTimeout(() => { \r\n this.focusInput();\r\n }, 150)\r\n }\r\n\r\n focusInput(){\r\n const autocomplete = this.$refs.autocompleteRef as Vue;\r\n if (!autocomplete){\r\n return;\r\n }\r\n const inputElem = autocomplete.$refs.input as HTMLInputElement;\r\n if (!inputElem){\r\n return;\r\n }\r\n inputElem.focus();\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PlacePickerG.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PlacePickerG.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PlacePickerG.vue?vue&type=template&id=2457529c&\"\nimport script from \"./PlacePickerG.vue?vue&type=script&lang=ts&\"\nexport * from \"./PlacePickerG.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAutocomplete } from 'vuetify/lib/components/VAutocomplete';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VAutocomplete,VBtn,VIcon,VListItemContent,VListItemIcon,VListItemTitle,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-text-field',_vm._b({ref:\"timePicker\",staticClass:\"a11y-has-prepend-icon\",attrs:{\"type\":\"time\",\"prepend-icon\":\"watch\",\"rules\":_vm.rules,\"required\":_vm.required,\"aria-required\":_vm.required,\"autofocus\":_vm.autofocus,\"aria-label\":_vm.ariaLabel || _vm.label},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.label)+\" \")])]},proxy:true}]),model:{value:(_vm.formattedTime),callback:function ($$v) {_vm.formattedTime=$$v},expression:\"formattedTime\"}},'v-text-field',_vm.$attrs,false))],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\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class TimePicker extends Vue {\r\n\r\n formatted: string | null = null;\r\n hasError: boolean = false;\r\n lastEmitted: number | null | undefined = null;\r\n\r\n @Prop({ default: '' }) label!: string;\r\n @Prop({ default: '' }) ariaLabel!: string;\r\n @Prop({default: undefined}) from: number | undefined;\r\n @Prop() private value!: number;\r\n @Prop({ default: null }) rules!: any[];\r\n @Prop({default: false}) required!: boolean;\r\n @Prop({ default: false }) autofocus!: boolean;\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 get isValid() {\r\n return !(this.$refs.timePicker as any).hasError;\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 const hoursNum = Math.floor(this.value / 60) % 24;\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 }\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\r\n emitValue = this.hasError ? NaN : timeValue;\r\n }\r\n\r\n this.lastEmitted = emitValue;\r\n this.$emit('input', emitValue);\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\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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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, Prop, Watch } from \"vue-property-decorator\";\r\nimport PlacePickerG from \"@/components/PlacePickerG.vue\";\r\nimport TimePicker from \"@/components/TimePicker.vue\";\r\nimport BookingStep from \"./models/BookingStep\";\r\nimport restService from \"@/services/restService\";\r\nimport { TranslateResult } from \"vue-i18n\";\r\n\r\nenum ETripDestinations {\r\n Home_MainPlace,\r\n PlaceGroups,\r\n PassengerPlaces,\r\n FreePlaces,\r\n Home_Secondary,\r\n MainPlace_Secondary,\r\n}\r\n\r\n@Component({\r\n components: {\r\n PlacePickerG,\r\n TimePicker,\r\n },\r\n})\r\nexport default class BookingStepSelectTimeAndAddresses extends Vue {\r\n @Prop()\r\n order!: IBookingOrder;\r\n @Prop()\r\n rules!: any;\r\n @Prop({ default: () => [] })\r\n private passengerDestinations!: IDestination[];\r\n @Prop({default: true}) \r\n hasPrevStep!: boolean;\r\n @Prop({default: null})\r\n dateAndTime!: string | null;\r\n\r\n @Watch(\"dateAndTime\", { immediate: true})\r\n dateAndTimeDateChanged(val: string | null) {\r\n if (!val){\r\n this.timeWithoutDate = this.getDefaultTimeWithoutDate();\r\n }\r\n this.timeWithoutDate = this.$moment(this.order.dateAndTime)\r\n .diff(\r\n this.$moment().startOf(\"day\"),\r\n \"minutes\"\r\n );\r\n }\r\n\r\n timeWithoutDate: string = this.getDefaultTimeWithoutDate();\r\n departureTimeOptions: any[] = BookingStep.departureTimeOptions;\r\n selectedDepartureTimeOptionValue: any = BookingStep.departureTimeOptions[0].value;\r\n viaPointToOrder: boolean = false;\r\n bookingRouteDetails: IComparableRoute | null = null;\r\n waitTimes = [0, 5, 10];\r\n viaPointsAreValid: boolean = false;\r\n viaPointStatusMessage: TranslateResult | string = \"\";\r\n\r\n getDefaultTimeWithoutDate(){\r\n const lastMinuteOfDay = this.$moment().endOf('day');\r\n return this.$moment.max(\r\n this.$moment().add(5, 'minutes'), \r\n lastMinuteOfDay\r\n )\r\n .diff(\r\n this.$moment().startOf(\"day\"),\r\n \"minutes\"\r\n );\r\n }\r\n\r\n created() {\r\n (window as any).__b3 = this;\r\n this.$on(\"placeChange\", () => {\r\n setTimeout(async () => {\r\n // this.viaPointsAreValid\r\n const viaPointRef = this.$refs.viaPointPlaceInputRef as PlacePickerG[];\r\n if (viaPointRef) {\r\n this.viaPointsAreValid = viaPointRef.every((r) => r.isValid);\r\n } else {\r\n this.viaPointsAreValid = true;\r\n }\r\n const t = this.order.viaPoints;\r\n if (this.orderHasAllAddresses) {\r\n this.bookingRouteDetails = await this.getRouteDetails();\r\n }\r\n }, 0);\r\n });\r\n }\r\n\r\n async getRouteDetails() {\r\n let destinations: IDestination[] = [];\r\n if (this.order.viaPoints.length > 0) {\r\n destinations = this.order.viaPoints\r\n .filter((v) => v.viaPointAddress)\r\n .map((v) => v.viaPointAddress!);\r\n }\r\n destinations.push(this.order.toAddress!);\r\n destinations.unshift(this.order.fromAddress!);\r\n const result = await restService.booking.getRoute(destinations);\r\n return result;\r\n }\r\n\r\n get availablePassengerPlaces(): IDestination[] {\r\n \r\n if(this.order.quota) {\r\n return this.filterDestinationByQuota(this.passengerDestinations, this.order.quota);\r\n }\r\n return this.passengerDestinations;\r\n }\r\n\r\n get availablePassengerDestinationPlaces(): IDestination[] {\r\n // Filter out already used destinations\r\n return this.availablePassengerPlaces.filter(\r\n (pd) => pd.id !== this.order.fromAddress?.id\r\n );\r\n }\r\n\r\n get stepIsValid(){\r\n const requireValids = [\r\n this.order.fromAddress ? true : false,\r\n this.order.toAddress ? true : false,\r\n this.$refs.timePicker && (this.$refs.timePicker as TimePicker).isValid,\r\n this.$refs.originPlaceInputRef && (this.$refs.originPlaceInputRef as PlacePickerG).isValid,\r\n this.$refs.destinationPlaceInputRef && (this.$refs.destinationPlaceInputRef as PlacePickerG).isValid,\r\n this.viaPointsAreValid || !this.order.viaPoints || this.order.viaPoints.length === 0,\r\n !this.viaPointDeviationExceedsMax\r\n ];\r\n return requireValids.every(v => v);\r\n }\r\n\r\n get isLikumaPermission() {\r\n if (this.order.quota) {\r\n return (\r\n this.order.quota.decisionType === \"VPL\" ||\r\n this.order.quota.decisionType === \"SHL\"\r\n );\r\n }\r\n return false;\r\n }\r\n\r\n get allowAllPlaces() {\r\n if (this.order.quota) {\r\n return this.order.quota.tripDestinations === ETripDestinations.FreePlaces;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n // get viaPointsAreValid() {\r\n // const startPlace = this.order.fromAddress;\r\n // const vias = this.order.viaPoints.map(v => v);\r\n // const endPlace = this.order.toAddress;\r\n // if(this.order.viaPoints.length > 0) {\r\n // const test = this.order.viaPoints.every((v, i) => (this.$refs['viaPointPlaceInputRef' + i] as any).isValid);\r\n // return this.order.viaPoints.every((v, i) => (this.$refs['viaPointPlaceInputRef' + i] as any).isValid);\r\n // }\r\n // return true;\r\n // }\r\n\r\n get orderHasAllAddresses() {\r\n return (\r\n !!this.order.fromAddress &&\r\n this.order.viaPoints.every((v) => !!v.viaPointAddress) &&\r\n !!this.order.toAddress\r\n );\r\n }\r\n\r\n get viaPointsEnabled() {\r\n return this.order.quota?.allowViaPoints;\r\n }\r\n\r\n get viaPointMaxDeviation(): number | null {\r\n if (this.viaPointsEnabled) {\r\n if (this.order.quota?.viaPointMaxDeviation) {\r\n return this.order.quota?.viaPointMaxDeviation / 1000;\r\n }\r\n return null;\r\n }\r\n return null;\r\n }\r\n\r\n get viaPointDeviation(): number {\r\n if (\r\n this.bookingRouteDetails &&\r\n this.bookingRouteDetails.routeWithViaPointDistance &&\r\n this.bookingRouteDetails.routeWithViaPointDuration\r\n ) {\r\n let difference =\r\n this.bookingRouteDetails.routeWithViaPointDistance -\r\n this.bookingRouteDetails.originalRouteDistance;\r\n difference = Math.round((difference / 1000) * 100) / 100;\r\n return difference;\r\n }\r\n return 0;\r\n }\r\n\r\n get viaPointDeviationExceedsMax() {\r\n if (!this.viaPointsEnabled) {\r\n return false;\r\n }\r\n\r\n if (this.viaPointsEnabled && !this.viaPointMaxDeviation) {\r\n return false;\r\n }\r\n return this.viaPointDeviation > this.viaPointMaxDeviation!;\r\n }\r\n\r\n // get fromAddressApartment() {\r\n // console.log(\"get fromAddressApartment()\")\r\n // return this.order.fromAddress\r\n // ? this.order.fromAddress.apartment as string\r\n // : '';\r\n // }\r\n // set fromAddressApartment(val: string) {\r\n // console.log(\"set fromAddressApartment, val:\", val)\r\n // if (this.order.fromAddress) {\r\n // this.order.fromAddress.apartment = val;\r\n // }\r\n // }\r\n // get toAddressApartment() {\r\n // console.log(\"get toAddressApartment()\")\r\n // return this.order.toAddress\r\n // ? this.order.toAddress.apartment as string\r\n // : '';\r\n // }\r\n // set toAddressApartment(val: string) {\r\n // console.log(\"set toAddressApartment, val:\", val)\r\n // if (this.order.toAddress) {\r\n // this.order.toAddress.apartment = val;\r\n // }\r\n // }\r\n\r\n filterDestinationByQuota(destinations: IDestination[], quota: IBookingQuota): IDestination[] {\r\n switch (quota.tripDestinations) {\r\n case ETripDestinations.Home_MainPlace:\r\n return destinations.filter(d => d.isHome || d.isPickup || d.isMain);\r\n case ETripDestinations.Home_Secondary:\r\n return destinations.filter(d => d.isHome || d.isPickup || d.isSecondaryPlace);\r\n case ETripDestinations.MainPlace_Secondary:\r\n return destinations.filter(d => d.isMain || d.isSecondaryPlace);\r\n default:\r\n return destinations;\r\n }\r\n}\r\n\r\n addViaPoint() {\r\n const newViaPoint: IViaPoint = {\r\n viaPointPlace: \"\",\r\n viaPointAddress: null,\r\n viaPointApartment: null,\r\n waitTime: 10\r\n };\r\n this.order.viaPoints.push(newViaPoint);\r\n this.viaPointStatusMessage = \"\";\r\n }\r\n\r\n removeViaPoint(viaPoint: IViaPoint) {\r\n const index = this.order.viaPoints.indexOf(viaPoint);\r\n this.order.viaPoints.splice(index, 1);\r\n this.bookingRouteDetails = null;\r\n this.viaPointStatusMessage = this.$t(\"booking.viaPoint.removed\");\r\n\r\n const t = this;\r\n window.setTimeout(() => {\r\n const addViaPointButtonRef = t.$refs.addViaPointButtonRef as Vue;\r\n if (addViaPointButtonRef){\r\n const addViaPointButtonElem = addViaPointButtonRef.$el as HTMLElement;\r\n if (addViaPointButtonElem){\r\n addViaPointButtonElem.focus();\r\n } \r\n } \r\n }, 120);\r\n\r\n window.setTimeout(() => {\r\n t.viaPointStatusMessage = \"\";\r\n }, 2000);\r\n }\r\n\r\n onIsDepartureTimeChanged(optionValue: any) {\r\n this.order.isDepartureTime = optionValue;\r\n }\r\n\r\n onOriginPlaceChange(event: any) {\r\n this.$emit(\"placeChange\");\r\n }\r\n\r\n onViaPointChange(event: any) {\r\n this.$emit(\"placeChange\");\r\n }\r\n\r\n onDestinationPlaceChange(event: any) {\r\n this.$emit(\"placeChange\");\r\n }\r\n\r\n onOriginPlaceSelected(event: any) {\r\n // TODO: Do we need any of the below\r\n // this.$emit(\"placeChange\");\r\n // (this.$refs.destinationPlaceInputRef as any).focus();\r\n }\r\n\r\n onDestinationPlaceSelected(event: any) {\r\n // TODO: Do we need any of the below\r\n // this.$emit(\"placeChange\");\r\n // (this.$refs.step2SubmitButtonRef as any).$el.focus();\r\n }\r\n\r\n timeChangedInPicked(value: number) {\r\n const hours = value / 60;\r\n const rhours = Math.floor(hours);\r\n const minutes = (hours - rhours) * 60;\r\n const rminutes = Math.round(minutes);\r\n const updatedTime = this.$moment(this.order.dateAndTime);\r\n updatedTime.set({ hours: rhours, minutes: rminutes });\r\n this.order.dateAndTime = updatedTime;\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[0].rules[0].use[2]!../../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[0].rules[0].use[2]!../../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=e876f2f8&scoped=true&\"\nimport script from \"./TimePicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimePicker.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TimePicker.vue?vue&type=style&index=0&id=e876f2f8&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e876f2f8\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VTextField})\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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingStepSelectTimeAndAddresses.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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingStepSelectTimeAndAddresses.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BookingStepSelectTimeAndAddresses.vue?vue&type=template&id=cfabaa46&\"\nimport script from \"./BookingStepSelectTimeAndAddresses.vue?vue&type=script&lang=ts&\"\nexport * from \"./BookingStepSelectTimeAndAddresses.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRadio } from 'vuetify/lib/components/VRadioGroup';\nimport { VRadioGroup } from 'vuetify/lib/components/VRadioGroup';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VAlert,VBtn,VCol,VIcon,VRadio,VRadioGroup,VRow,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-col',{attrs:{\"cols\":12}},[_c('v-row',[_c('v-col',{staticClass:\"px-0\",attrs:{\"cols\":12,\"md\":8}},[(_vm.requirePhoneNumber)?_c('PhoneNumber',{ref:\"phoneNumRef\",attrs:{\"value\":_vm.bookingPhoneNumber,\"rules\":_vm.rules.phoneNumber,\"aria-placeholder\":_vm.$t('personalinfo.mobile-alt'),\"label\":_vm.$t('personalinfo.phone'),\"placeholder\":_vm.$t('personalinfo.phone'),\"passengerId\":_vm.order.passenger.id,\"autofocus\":true},on:{\"input\":function (val) { return _vm.$emit('bookingPhoneNumberChange', val); }}}):_vm._e()],1),(_vm.isLikumaPermission)?_c('v-col',{staticClass:\"px-0\",attrs:{\"cols\":12,\"md\":4}},[_c('v-text-field',{ref:\"passengerCountRef\",attrs:{\"aria-label\":_vm.$t('booking.additionalPassengers'),\"prepend-icon\":\"$fas-fa-users\",\"rules\":_vm.rules.passengerCount,\"autofocus\":true},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('booking.additionalPassengers'))+\" \")])]},proxy:true}],null,false,724120349),model:{value:(_vm.order.passengerCount),callback:function ($$v) {_vm.$set(_vm.order, \"passengerCount\", _vm._n($$v))},expression:\"order.passengerCount\"}})],1):_vm._e()],1),_c('v-row',[_c('v-col',{staticClass:\"px-0\",attrs:{\"cols\":12}},[_c('v-textarea',{attrs:{\"outlined\":\"\",\"prepend-icon\":\"$fas-fa-info\",\"aria-label\":_vm.$t('booking.additionalInfo'),\"aria-placeholder\":_vm.$t('booking.additionalInfoPlaceholder'),\"auto-grow\":\"\",\"rows\":\"2\",\"autofocus\":true,\"persistent-placeholder\":\"\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('booking.additionalInfo'))+\" \")])]},proxy:true}]),model:{value:(_vm.order.additionalInfo),callback:function ($$v) {_vm.$set(_vm.order, \"additionalInfo\", $$v)},expression:\"order.additionalInfo\"}})],1)],1),(_vm.isLikumaPermission && _vm.order.quota)?_c('v-row',{staticClass:\"pl-11 mb-8\"},_vm._l((_vm.order.quota.extras),function(extra){return _c('v-checkbox',{key:extra.extraId,staticClass:\"a11y-checkbox mr-6\",attrs:{\"hide-details\":\"\",\"label\":extra.name},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(extra.name)+\" \")])]},proxy:true}],null,true),model:{value:(extra.selected),callback:function ($$v) {_vm.$set(extra, \"selected\", $$v)},expression:\"extra.selected\"}})}),1):_vm._e(),_c('v-row',{staticClass:\"mt-4 mb-0\"},[_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"primary\",\"disabled\":_vm.requirePhoneNumber && _vm.$refs.phoneNumRef && !_vm.$refs.phoneNumRef.isValid ||\n (_vm.$refs.passengerCountRef && _vm.$refs.passengerCountRef.hasError)},on:{\"click\":function($event){return _vm.$emit('nextClick')}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.next_step\"))+\" \")]),(_vm.hasPrevStep)?_c('v-btn',{staticClass:\"ml-2\",attrs:{\"large\":\"\"},on:{\"click\":function($event){return _vm.$emit('prevClick')}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.back\"))+\" \")]):_vm._e()],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-combobox',{ref:\"phoneNumRef\",attrs:{\"prepend-icon\":\"$fas-fa-phone\",\"label\":_vm.label,\"items\":_vm.phoneNumbers,\"rules\":_vm.rules,\"autofocus\":_vm.autofocus,\"aria-label\":_vm.ariaLabel || _vm.label},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.label)+\" \")])]},proxy:true}]),model:{value:(_vm.selectedNumber),callback:function ($$v) {_vm.selectedNumber=$$v},expression:\"selectedNumber\"}})],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\r\nimport { Component, Vue, Prop, Watch } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class PhoneNumber extends Vue {\r\n\r\n get phoneNumbers() {\r\n let numbers = '';\r\n const user = this.$store.state.app.user;\r\n if (user.phoneNumber) {\r\n numbers += user.phoneNumber + ', ';\r\n }\r\n\r\n if (this.passenger && this.passenger.phone) {\r\n numbers += this.passenger.phone;\r\n }\r\n const phoneNumbers = numbers.split(/[\\s,]+/)\r\n .filter(n => n)\r\n .map((n: string ) => n.replace(/^0/, '+358') as string);\r\n\r\n return phoneNumbers;\r\n }\r\n\r\n get passenger() {\r\n if (this.passengerId) {\r\n return this.$store.getters['passenger/passengerById'](this.passengerId);\r\n }\r\n }\r\n\r\n get isValid() {\r\n return !(this.$refs.phoneNumRef as any).hasError;\r\n }\r\n\r\n selectedNumber: string = this.phoneNumbers.length > 0 ? this.phoneNumbers[0] : '+358';\r\n\r\n @Prop({ default: '' }) label!: string;\r\n @Prop({ default: '' }) ariaLabel!: string;\r\n @Prop({ default: '' }) private passengerId!: string;\r\n @Prop({ default: null }) rules!: any[];\r\n @Prop({ default: '' }) private value!: string;\r\n @Prop({ default: false }) autofocus!: boolean;\r\n\r\n @Watch('value', { immediate: true }) onValueChanged() {\r\n if ( this.selectedNumber !== this.value) {\r\n this.selectedNumber = this.value ? this.value : this.phoneNumbers.length > 0 ? this.phoneNumbers[0] : '+358';\r\n }\r\n }\r\n\r\n @Watch('selectedNumber', { immediate: true }) onSelectedNumberChanged() {\r\n this.selectedNumber = this.selectedNumber ? this.selectedNumber.replace(/^0/, '+358') : '';\r\n this.$emit('input', this.selectedNumber);\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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PhoneNumber.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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PhoneNumber.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PhoneNumber.vue?vue&type=template&id=970a30d6&scoped=true&\"\nimport script from \"./PhoneNumber.vue?vue&type=script&lang=ts&\"\nexport * from \"./PhoneNumber.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PhoneNumber.vue?vue&type=style&index=0&id=970a30d6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"970a30d6\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCombobox } from 'vuetify/lib/components/VCombobox';\ninstallComponents(component, {VCombobox})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 Themes from \"@/themes\";\r\nimport ITheme from \"@/themes/ITheme\";\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport PhoneNumber from \"./PhoneNumber.vue\";\r\n\r\n@Component({\r\n components: {\r\n PhoneNumber,\r\n },\r\n})\r\nexport default class BookingStepEnterAdditionalInfo extends Vue {\r\n @Prop({required: true})\r\n order!: IBookingOrder;\r\n @Prop()\r\n rules!: any;\r\n @Prop({default: true}) \r\n hasPrevStep!: boolean;\r\n @Prop({default: ''}) \r\n bookingPhoneNumber!: string;\r\n\r\n get isLikumaPermission() {\r\n if (this.order.quota) {\r\n return (\r\n this.order.quota.decisionType === \"VPL\" ||\r\n this.order.quota.decisionType === \"SHL\"\r\n );\r\n }\r\n return false;\r\n }\r\n\r\n get theme(): ITheme {\r\n return this.$store.getters[\"app/theme\"];\r\n }\r\n\r\n get requirePhoneNumber() {\r\n return (\r\n this.theme.id === Themes.themeMeneva.id ||\r\n this.theme.id === Themes.themeFixutaxi.id ||\r\n this.theme.id === Themes.themeLahitaksi.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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingStepEnterAdditionalInfo.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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingStepEnterAdditionalInfo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BookingStepEnterAdditionalInfo.vue?vue&type=template&id=6b0048fd&\"\nimport script from \"./BookingStepEnterAdditionalInfo.vue?vue&type=script&lang=ts&\"\nexport * from \"./BookingStepEnterAdditionalInfo.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VBtn,VCheckbox,VCol,VRow,VTextField,VTextarea})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-col',{attrs:{\"cols\":12,\"sm\":12}},[_c('v-row',[(_vm.loading.quotas)?[_c('v-col',{staticClass:\"text-subtitle-1\",attrs:{\"cols\":12}},[_c('div',[_vm._v(_vm._s(_vm.$t(\"booking.fetchingQuotas\")))])]),_c('v-col',{attrs:{\"cols\":12}},[_c('v-progress-linear',{attrs:{\"color\":\"primary\",\"indeterminate\":\"\",\"rounded\":\"\",\"height\":\"6\"}})],1)]:[(_vm.items.length > 0)?_c('fieldset',{staticClass:\"no-border\"},[_c('v-radio-group',{staticClass:\"mt-0 a11y-radios\",staticStyle:{\"flex-grow\":\"1\"},attrs:{\"label\":_vm.$t('booking.quotaName') + '*',\"aria-label\":_vm.$t('booking.quotaName'),\"required\":true,\"aria-required\":true},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('label',{attrs:{\"aria-hidden\":\"true\",\"id\":\"quotaNameLabel\"}},[_vm._v(_vm._s(_vm.$t('booking.quotaName'))+\"*\")])]},proxy:true}],null,false,1531914091),model:{value:(_vm.order.quota),callback:function ($$v) {_vm.$set(_vm.order, \"quota\", $$v)},expression:\"order.quota\"}},_vm._l((_vm.items),function(quota){return _c('v-radio',{key:quota.name,attrs:{\"color\":\"blue darken-3 white--text\",\"value\":quota,\"aria-label\":'Matkaoikeus: ' +\n quota.name +\n ', ' +\n _vm.$t('booking.tripsLeft') +\n ': ' +\n quota.remainingQuota +\n (\n quota.note \n ? ' ' + quota.note\n : ''\n ),\"aria-describedby\":\"quotaNameLabel\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-list-item-title',{staticClass:\"\\n primary--text\\n d-flex\\n justify-space-between\\n flex-wrap-reverse\\n \",attrs:{\"aria-hidden\":\"true\"}},[_c('span',[_vm._v(\" \"+_vm._s(quota.name)+\" \")]),_c('v-spacer'),_c('QuotaChip',{staticClass:\"mx-2\",attrs:{\"quota\":quota.remainingQuota,\"text\":_vm.$t('booking.tripsLeft'),\"small\":\"\"}}),(quota.expressQuotaTimeLimit > 0)?_c('QuotaChip',{staticClass:\"mx-2\",attrs:{\"quota\":quota.remainingExpressQuota,\"text\":_vm.$t('transportationPermission.expressQuotas'),\"small\":\"\"}}):_vm._e(),(quota.decisionType)?_c('v-chip',{attrs:{\"small\":\"\",\"label\":\"\",\"outlined\":\"\",\"color\":\"primary\"}},[_vm._v(\" \"+_vm._s(quota.decisionType)+\" \")]):_vm._e()],1),_c('v-list-item-subtitle',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(quota.note)+\" \")])],1)]},proxy:true}],null,true)})}),1)],1):[_c('v-alert',{attrs:{\"type\":\"error\",\"value\":true,\"aria-live\":\"polite\"}},[_c('div',[_vm._v(_vm._s(_vm.$t(\"booking.noQuotas\")))]),_c('div',[_vm._v(_vm._s(_vm.$t(\"booking.noQuotasHelp\")))])])]]],2),_c('v-row',{staticClass:\"mb-0\"},[_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"primary\",\"disabled\":!_vm.order.quota || _vm.loading.quotas},on:{\"click\":function($event){return _vm.$emit('nextClick')}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.next_step\"))+\" \")]),(_vm.hasPrevStep)?_c('v-btn',{staticClass:\"ml-2\",attrs:{\"large\":\"\"},on:{\"click\":function($event){return _vm.$emit('prevClick')}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.back\"))+\" \")]):_vm._e()],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.hide)?_c('v-chip',_vm._b({attrs:{\"color\":_vm.color}},'v-chip',_vm.$attrs,false),[_vm._v(\" \"+_vm._s(_vm.text)+\" \"+_vm._s(_vm.quota)+\" \")]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { Vue, Component, Prop } from 'vue-property-decorator';\n\n@Component\nexport default class QuotaChip extends Vue {\n @Prop({ required: false }) quota!: number;\n @Prop({ default: '' }) text!: string;\n\n get hide() {\n return typeof(this.quota) === 'undefined' || this.quota === null;\n }\n\n get color() {\n if (this.quota) {\n return 'success';\n } else {\n return 'error';\n }\n }\n}\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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./QuotaChip.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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./QuotaChip.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./QuotaChip.vue?vue&type=template&id=f559013c&\"\nimport script from \"./QuotaChip.vue?vue&type=script&lang=ts&\"\nexport * from \"./QuotaChip.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VChip } from 'vuetify/lib/components/VChip';\ninstallComponents(component, {VChip})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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, Prop } from \"vue-property-decorator\";\r\nimport { BookingStepLoading } from \"./models/BookingStep\";\r\nimport QuotaChip from \"./QuotaChip.vue\";\r\n\r\n@Component({\r\n components: {\r\n QuotaChip,\r\n },\r\n})\r\nexport default class BookingStepSelectQuota extends Vue {\r\n @Prop()\r\n order!: IBookingOrder;\r\n @Prop()\r\n items!: IBookingQuota[];\r\n @Prop()\r\n loading!: BookingStepLoading;\r\n @Prop({default: true}) \r\n hasPrevStep!: boolean;\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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingStepSelectQuota.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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingStepSelectQuota.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BookingStepSelectQuota.vue?vue&type=template&id=7fc3934c&\"\nimport script from \"./BookingStepSelectQuota.vue?vue&type=script&lang=ts&\"\nexport * from \"./BookingStepSelectQuota.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VRadio } from 'vuetify/lib/components/VRadioGroup';\nimport { VRadioGroup } from 'vuetify/lib/components/VRadioGroup';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VAlert,VBtn,VChip,VCol,VListItemSubtitle,VListItemTitle,VProgressLinear,VRadio,VRadioGroup,VRow,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-col',{attrs:{\"cols\":12}},[(_vm.shouldShowExpressQuotaWarning && _vm.remainingExpressQuotaAmount > 0)?_c('v-row',[_c('v-col',{attrs:{\"cols\":12}},[_c('v-alert',{attrs:{\"type\":\"warning\"}},[_vm._v(\" \"+_vm._s(_vm.$t('booking.validation.expressQuotaWarning',[_vm.expressQuotaTimeLimit]))+\" \")])],1)],1):_vm._e(),(_vm.shouldShowExpressQuotaWarning && _vm.remainingExpressQuotaAmount < 1)?_c('v-row',[_c('v-col',{attrs:{\"cols\":12}},[_c('v-alert',{attrs:{\"type\":\"error\"}},[_vm._v(\" \"+_vm._s(_vm.expressQuotaTimeLimit)+\" \"+_vm._s(_vm.$t('booking.validation.expressQuotaDanger', [_vm.expressQuotaTimeLimit]))+\" \")])],1)],1):_vm._e(),(_vm.passenger)?_c('v-row',[_c('v-col',{attrs:{\"cols\":12,\"md\":6}},[_c('h3',{staticClass:\"grey--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.passenger'))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm.passenger.name)+\" \")])])],1):_vm._e(),_c('v-row',[_c('v-col',{attrs:{\"cols\":12,\"md\":6}},[_c('h3',{staticClass:\"grey--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.date'))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm.date)+\" \")])]),_c('v-col',{attrs:{\"cols\":12,\"md\":6}},[_c('h3',{staticClass:\"grey--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.time'))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm.time)+\" \")])])],1),_vm._l((_vm.booking.destinations),function(destination,index){return _c('v-row',{key:index},[(index === 0)?[_c('v-col',{attrs:{\"cols\":12}},[_c('h3',{staticClass:\"grey--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.addressFrom'))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm.startPlace)+\" \")])]),(_vm.order && _vm.order.fromApartment)?_c('v-col',{attrs:{\"cols\":12}},[_c('h4',{staticClass:\"grey--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.apartment'))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm.order.fromApartment)+\" \")])]):_vm._e()]:_vm._e(),(index === _vm.booking.destinations.length - 1)?[_c('v-col',{attrs:{\"cols\":12}},[_c('h3',{staticClass:\"grey--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.addressTo'))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm.endPlace)+\" \")])]),(_vm.order && _vm.order.toApartment)?_c('v-col',{attrs:{\"cols\":12}},[_c('h4',{staticClass:\"grey--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.apartment'))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm.order.toApartment)+\" \")])]):_vm._e()]:_vm._e(),(destination.isViaPoint)?[_c('v-col',{attrs:{\"cols\":12}},[_c('h3',{staticClass:\"grey--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.viaPoint.viaPoint'))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(destination.address)+\" \")])])]:_vm._e()],2)}),(_vm.totalPassengers > 1)?_c('v-row',[_c('v-col',{attrs:{\"cols\":12}},[_c('h3',{staticClass:\"grey--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.totalPassengers'))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm.totalPassengers)+\" \")])])],1):_vm._e(),(_vm.passenger && _vm.passenger.phone)?_c('v-row',[_c('v-col',{attrs:{\"cols\":12,\"md\":6}},[_c('h3',{staticClass:\"grey--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('personalinfo.phone'))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm.passenger.phone)+\" \")])])],1):_vm._e(),(_vm.booking.additionalInformation)?_c('v-row',[_c('v-col',[_c('h3',{staticClass:\"grey--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.additionalInfo'))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm.booking.additionalInformation)+\" \")])])],1):_vm._e(),_c('v-row',{staticClass:\"mt-6 mb-0\"},[_c('v-btn',{staticClass:\"mr-2\",attrs:{\"large\":\"\",\"color\":\"primary\",\"disabled\":_vm.saved || _vm.saveDisabled},on:{\"click\":_vm.saveOrder}},[(!_vm.saved)?[_vm._v(\" \"+_vm._s(_vm.$t('booking.confirm'))+\" \")]:[_vm._v(\" \"+_vm._s(_vm.$t('booking.confirmed'))+\" \")]],2),(!_vm.saved)?[(_vm.hasPrevStep)?_c('v-btn',{staticClass:\"mr-2\",attrs:{\"large\":\"\"},on:{\"click\":function($event){return _vm.$emit('prevClick')}}},[_vm._v(\" \"+_vm._s(_vm.$t('general.button.back'))+\" \")]):_vm._e()]:_vm._e()],2),(_vm.saved)?_c('v-row',{staticClass:\"mt-2 mb-0\"},[(_vm.enableCreateReturnBooking)?_c('v-btn',{staticClass:\"mr-2\",attrs:{\"large\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.$emit('createReturnBookingClick')}}},[_vm._v(\" \"+_vm._s(_vm.$t('booking.createReturnBooking'))+\" \")]):_vm._e(),_c('v-btn',{staticClass:\"mr-2\",attrs:{\"large\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.$emit('resetClick')}}},[_vm._v(\" \"+_vm._s(_vm.$t('booking.newBooking'))+\" \")])],1):_vm._e()],2)],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\r\nimport moment from 'moment';\r\nimport { Component, Vue, Prop } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class BookingStepViewOrderSummary extends Vue {\r\n @Prop() \r\n order!: IBookingOrder;\r\n @Prop() \r\n booking!: IBooking;\r\n @Prop({default: false}) \r\n private saving!: boolean;\r\n @Prop({default: false}) \r\n saved!: boolean;\r\n @Prop({default: true}) \r\n hasPrevStep!: boolean;\r\n @Prop({default: true}) \r\n enableCreateReturnBooking!: boolean;\r\n \r\n get passengerName() {\r\n return this.passenger ? this.passenger.name : '';\r\n }\r\n\r\n get passenger() {\r\n if (this.booking && this.booking.passengers && this.booking.passengers.length > 0) {\r\n return this.booking.passengers[0];\r\n }\r\n }\r\n\r\n get storePassenger() {\r\n if (this.passenger) {\r\n return this.$store.getters['passenger/passengerById'](this.passenger.id) as IPassenger;\r\n }\r\n }\r\n\r\n get quota() {\r\n return this.order.quota;\r\n }\r\n\r\n get expressQuotaTimeLimit() {\r\n return this.quota?.expressQuotaTimeLimit ? this.quota.expressQuotaTimeLimit : 0;\r\n }\r\n\r\n get remainingExpressQuotaAmount() {\r\n return this.quota ? this.quota?.remainingExpressQuota : 0;\r\n\r\n }\r\n\r\n get shouldShowExpressQuotaWarning() {\r\n if(this.expressQuotaTimeLimit > 0) {\r\n const now = moment();\r\n const departureDateTime = moment(this.booking.departureDateTime);\r\n const diff = departureDateTime.diff(now, 'minutes');\r\n return diff < this.expressQuotaTimeLimit;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n get date() {\r\n if (this.booking) {\r\n if (this.booking.departureDateTime) {\r\n return this.$moment(this.booking.departureDateTime).format('DD.MM.YYYY');\r\n } else {\r\n return this.$moment(this.booking.arrivalDateTime).format('DD.MM.YYYY');\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n get time() {\r\n if (this.booking) {\r\n if (this.booking.departureDateTime) {\r\n const time = this.$moment(this.booking.departureDateTime).format('HH:mm') ;\r\n const departureOrArrival = this.$t('booking.departure');\r\n return `${departureOrArrival} : ${time}`;\r\n } else {\r\n const time = this.$moment(this.booking.arrivalDateTime).format('HH:mm') ;\r\n const departureOrArrival = this.$t('booking.arrival');\r\n return `${departureOrArrival} : ${time}`;\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n get startPlace() {\r\n if(this.booking) {\r\n return `${this.getAddressString(this.booking.destinations[0])}`;\r\n }\r\n }\r\n\r\n get endPlace() {\r\n if(this.booking) {\r\n return `${this.getAddressString(this.booking.destinations[this.booking.destinations.length - 1])}`;\r\n }\r\n }\r\n\r\n get totalPassengers() {\r\n return this.booking.passengers ? this.booking.passengers.length : 0;\r\n }\r\n\r\n get orderPrice() {\r\n return this.booking ? this.booking.price : 0.00;\r\n }\r\n\r\n get saveDisabled() {\r\n if (this.shouldShowExpressQuotaWarning) {\r\n return !(!this.saving\r\n && !!this.booking.destinations[0] && !!this.booking.destinations[1]\r\n && (!!this.booking.departureDateTime || !!this.booking.arrivalDateTime))\r\n || this.remainingExpressQuotaAmount < 1;\r\n } else {\r\n return !(!this.saving\r\n // && !!this.booking.quota\r\n && !!this.booking.destinations[0] && !!this.booking.destinations[1]\r\n && (!!this.booking.departureDateTime || !!this.booking.arrivalDateTime));\r\n }\r\n }\r\n\r\n \r\n\r\n getAddressString(destination: IDestination) {\r\n if (destination && !destination.address) {\r\n return destination.alias;\r\n }\r\n let address = destination.address;\r\n address += destination.city ? `, ${destination.city}` : ``;\r\n return address;\r\n }\r\n\r\n saveOrder() {\r\n this.$emit('saveClick');\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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingStepViewOrderSummary.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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BookingStepViewOrderSummary.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BookingStepViewOrderSummary.vue?vue&type=template&id=388af509&\"\nimport script from \"./BookingStepViewOrderSummary.vue?vue&type=script&lang=ts&\"\nexport * from \"./BookingStepViewOrderSummary.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VAlert,VBtn,VCol,VRow})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 restService from '@/services/restService';\r\nimport BookingStepSelectPassenger from '@/components/Booking/BookingStepSelectPassenger.vue';\r\nimport BookingStepSelectDate from '@/components/Booking/BookingStepSelectDate.vue';\r\nimport BookingStepSelectTimeAndAddresses from '@/components/Booking/BookingStepSelectTimeAndAddresses.vue';\r\nimport BookingStepEnterAdditionalInfo from '@/components/Booking/BookingStepEnterAdditionalInfo.vue';\r\nimport BookingStepSelectQuota from '@/components/Booking/BookingStepSelectQuota.vue';\r\nimport BookingStepViewOrderSummary from '@/components/Booking/BookingStepViewOrderSummary.vue';\r\nimport { TranslateResult } from 'vue-i18n';\r\nimport { INotice } from '../store/notice-store';\r\nimport { DestinationSource } from '../components/Booking/models/PlacePickerDestination';\r\nimport BookingStep, { BookingStepLoading, BookingStepTypeEnum } from '@/components/Booking/models/BookingStep';\r\nimport ITheme from '@/themes/ITheme';\r\nimport Themes from '@/themes';\r\n\r\n@Component({\r\n components: {\r\n BookingStepSelectPassenger,\r\n BookingStepSelectDate,\r\n BookingStepSelectQuota,\r\n BookingStepSelectTimeAndAddresses,\r\n BookingStepEnterAdditionalInfo,\r\n BookingStepViewOrderSummary,\r\n }\r\n})\r\nexport default class BookingView extends Vue {\r\n\r\n get steps(): BookingStep[] { \r\n let steps = [] as BookingStep[];\r\n if (this.passengers.length != 1){\r\n steps.push(\r\n {\r\n id: 1,\r\n type: BookingStepTypeEnum.SelectPassenger,\r\n title: this.$t('booking.selectPassenger')\r\n }\r\n )\r\n }\r\n steps = steps.concat(\r\n\r\n [\r\n \r\n {\r\n id: 2,\r\n type: BookingStepTypeEnum.SelectDate,\r\n title: this.$t('booking.chooseDate')\r\n },\r\n {\r\n id: 3,\r\n type: BookingStepTypeEnum.SelectQuota,\r\n title: this.$t('booking.chooseQuotaType')\r\n },\r\n {\r\n id: 4,\r\n type: BookingStepTypeEnum.SelectTimeAndAddresses,\r\n title: this.$t('booking.enterTripInformation')\r\n },\r\n {\r\n id: 5,\r\n type: BookingStepTypeEnum.EnterAdditionalInfo,\r\n title: this.$t('booking.enterAdditionalInfo')\r\n },\r\n {\r\n id: 6,\r\n type: BookingStepTypeEnum.ViewOrderSummary,\r\n title: this.$t('booking.summary')\r\n },\r\n {\r\n id: 7,\r\n type: BookingStepTypeEnum.SelectTimeAndAddresses,\r\n title: this.$t('booking.enterTripInformationReturnTrip')\r\n },\r\n {\r\n id: 8,\r\n type: BookingStepTypeEnum.EnterAdditionalInfo,\r\n title: this.$t('booking.enterAdditionalInfoReturnTrip')\r\n },\r\n {\r\n id: 9,\r\n type: BookingStepTypeEnum.ViewOrderSummary,\r\n title: this.$t('booking.summaryReturnTrip')\r\n },\r\n ]);\r\n return steps;\r\n }\r\n\r\n currentStep: BookingStep | null = null;\r\n bookingQuotas: IBookingQuota[] = [];\r\n\r\n // holding passenger places from movit\r\n passengerBookingPlacesInfo: IBookingAddressInfo | null = null;\r\n passengerDestinations: IDestination[] = [];\r\n\r\n dateWithoutTime: string = new Date().toISOString().substr(0, 10);\r\n bookingPhoneNumber: string = '';\r\n\r\n emptyBooking: IBookingOrder = {\r\n passenger: null,\r\n fromAddress: null,\r\n fromApartment: null,\r\n viaPoints: [],\r\n toAddress: null,\r\n toApartment: null,\r\n passengerCount: 1,\r\n dateAndTime: this.$moment.min(\r\n this.$moment().add(5, 'minutes'), \r\n this.$moment().endOf('day')\r\n ),\r\n isDepartureTime: BookingStep.departureTimeOptions[0].value,\r\n withAttendant: false,\r\n additionalInfo: '',\r\n quota: null,\r\n price: 0,\r\n };\r\n\r\n order: IBookingOrder = Object.assign({}, this.emptyBooking);\r\n\r\n loading: BookingStepLoading = new BookingStepLoading();\r\n \r\n bookingSaving = false;\r\n bookingSaved = false;\r\n bookingSaveError = '';\r\n\r\n get locale() {\r\n return this.$store.getters['app/locale'];\r\n }\r\n\r\n\r\n get formattedDate() {\r\n return this.$moment(this.order.dateAndTime).format('DD.MM.YYYY');\r\n }\r\n\r\n get formattedDateAndTime() {\r\n return this.$moment(this.order.dateAndTime).format('DD.MM.YYYY HH:mm');\r\n }\r\n\r\n get passengers(): IPassenger[] {\r\n return this.$store.getters[\"passenger/passengers\"];\r\n }\r\n\r\n get selectedPassengerName() {\r\n return this.order.passenger ? this.order.passenger.name : '';\r\n }\r\n\r\n get avatarColor() {\r\n return this.order.passenger ? this.$randomColor(this.order.passenger.id) : '#ffffff';\r\n }\r\n get avatarText() {\r\n return this.order.passenger ? this.order.passenger.avatarText : '';\r\n }\r\n\r\n get theme(): ITheme {\r\n return this.$store.getters[\"app/theme\"];\r\n }\r\n\r\n get quotaRecap() {\r\n if (this.order.quota) {\r\n let quotaRecap = this.order.quota.name;\r\n quotaRecap += this.order.quota.decisionType ? ` - ${this.order.quota.decisionType}` : '';\r\n quotaRecap += this.order.quota.note ? `: ${this.order.quota.note}` : ``;\r\n return `${quotaRecap}`;\r\n }\r\n return '';\r\n }\r\n\r\n get remainingQouta() {\r\n if (this.order.quota) {\r\n return this.order.quota.remainingQuota;\r\n }\r\n }\r\n\r\n get rules() {\r\n return {\r\n passenger: [() => !!this.order.passenger],\r\n quota: [() => this.order.passenger ? !!this.order.quota : true ],\r\n travelInfo: [],\r\n useTravelInfoRules: false,\r\n phoneNumber: [\r\n (val: string) => {\r\n if ((this.theme.id === Themes.themeLahitaksi.id || this.theme.id === Themes.themeLapha.id) && !val) {\r\n return true;\r\n } else {\r\n return /^\\+(?:[0-9] ?){6,14}[0-9]$/.test(val || '');\r\n }\r\n \r\n \r\n },\r\n (val: string) => val !== '+358',\r\n ],\r\n timeWithoutDate: [ (val: string) => !!val],\r\n fromAddress: [\r\n () => this.order.fromAddress ? true : false,\r\n () => {\r\n if (this.order.fromAddress && this.order.toAddress) {\r\n const lat = this.order.fromAddress.latitude === this.order.toAddress.latitude;\r\n const lon = this.order.fromAddress.longitude === this.order.toAddress.longitude;\r\n return lat && lon ? this.$t('booking.validation.locationSame') : true;\r\n }\r\n return true;\r\n },\r\n // Note: Validation for missing street number removed (#5941)\r\n // () => {\r\n // if (this.order.fromAddress && this.order.fromAddress.source === DestinationSource.GooglePlaceResult) {\r\n // return this.order.fromAddress.streetnumber ? true : this.$t('booking.validation.streetNumberRequired');\r\n // }\r\n // return true;\r\n // },\r\n ],\r\n viaAddress: [\r\n (viaPoint: IDestination) => {\r\n return viaPoint ? true : false;\r\n },\r\n (viaPoint: IDestination) => {\r\n const startPlace = this.order.fromAddress;\r\n const endPlace = this.order.toAddress;\r\n if(viaPoint && startPlace && endPlace) {\r\n return (startPlace.latitude === viaPoint.latitude && startPlace.longitude === viaPoint.longitude) ||\r\n (endPlace.latitude === viaPoint.latitude && endPlace.longitude === viaPoint.longitude)\r\n ? this.$t('booking.validation.viaPointLocationSame') : true;\r\n }\r\n return true\r\n },\r\n (viaPoint: IDestination) => {\r\n if(this.order.viaPoints.length > 1) {\r\n let hits = this.order.viaPoints.filter(v => v.viaPointAddress?.longitude === viaPoint.longitude &&\r\n v.viaPointAddress.latitude === viaPoint.latitude);\r\n\r\n return hits.length > 1 ? this.$t('booking.validation.viaPointSameAsOtherViaPoint') : true;\r\n }\r\n return true;\r\n } \r\n ],\r\n toAddress: [\r\n () => this.order.toAddress ? true : false,\r\n () => {\r\n if (this.order.fromAddress && this.order.toAddress) {\r\n const lat = this.order.fromAddress.latitude === this.order.toAddress.latitude;\r\n const lon = this.order.fromAddress.longitude === this.order.toAddress.longitude;\r\n return lat && lon ? this.$t('booking.validation.locationSame') : true;\r\n }\r\n return true;\r\n },\r\n // Note: Validation for missing street number removed (#5941)\r\n // () => {\r\n // if (this.order.fromAddress && this.order.fromAddress.source === DestinationSource.GooglePlaceResult) {\r\n // return this.order.fromAddress.streetnumber ? true : this.$t('booking.validation.streetNumberRequired');\r\n // }\r\n // return true;\r\n // },\r\n ],\r\n passengerCount: [() => this.order.passengerCount >= 1 ? true : this.$t('booking.validation.passengerCount', [1])],\r\n };\r\n }\r\n\r\n async onResetClick(){\r\n await this.resetBookingAndKeepPassenger();\r\n this.currentStep = this.steps[0];\r\n }\r\n\r\n async resetBookingAndKeepPassenger(){\r\n const passenger = JSON.parse(JSON.stringify(this.order.passenger));\r\n this.order = Object.assign({}, this.emptyBooking);\r\n this.order.viaPoints = [];\r\n this.bookingPhoneNumber = '';\r\n this.bookingSaved = false;\r\n this.bookingSaveError = '';\r\n this.order.passenger = passenger;\r\n await this.updatePassengerQuotas();\r\n }\r\n\r\n onPlaceChange(){\r\n this.$nextTick(() => {\r\n const bookingFormRef = this.$refs.bookingFormRef;\r\n if (bookingFormRef){\r\n if (this.order.fromAddress && this.order.toAddress){\r\n (bookingFormRef as any).validate();\r\n }\r\n };\r\n });\r\n }\r\n\r\n onDateWithoutTimeChange(val: string) {\r\n this.dateWithoutTime = val;\r\n const myDate = new Date(this.dateWithoutTime);\r\n const day = myDate.getDate();\r\n const month = myDate.getMonth() + 1;\r\n const year = myDate.getFullYear();\r\n\r\n this.onDayChange(day);\r\n this.onMonthChange(month);\r\n this.onYearChange(year);\r\n this.updatePassengerQuotas();\r\n }\r\n\r\n @Watch('currentStep') \r\n onCurrenStepChanged(newVal: BookingStep, oldVal: BookingStep | null) {\r\n if (newVal == null || newVal === oldVal || oldVal == null){\r\n return;\r\n }\r\n this.$nextTick(() => {\r\n const stepTitleRef = (this.$refs.stepTitleRef as HTMLElement);\r\n if (stepTitleRef){\r\n stepTitleRef.focus();\r\n }\r\n });\r\n }\r\n\r\n onMinuteEnterKeyup() {\r\n const isDepartureTimeSwitchElem = document.querySelector('#is-departure-time-switch');\r\n if (isDepartureTimeSwitchElem) {\r\n (isDepartureTimeSwitchElem as HTMLInputElement).focus();\r\n }\r\n }\r\n\r\n onDayChange(date: number) {\r\n const updatedTime = this.$moment(this.order.dateAndTime);\r\n updatedTime.set({ date });\r\n this.order.dateAndTime = updatedTime;\r\n }\r\n\r\n onMonthChange(month: number) {\r\n const updatedTime = this.$moment(this.order.dateAndTime);\r\n updatedTime.set({ month: month - 1 });\r\n this.order.dateAndTime = updatedTime;\r\n }\r\n\r\n onYearChange(year: number) {\r\n const updatedTime = this.$moment(this.order.dateAndTime);\r\n updatedTime.set({ year });\r\n this.order.dateAndTime = updatedTime;\r\n }\r\n\r\n async onPassengerChanged(val: IPassenger | null) {\r\n this.order.passenger = val;\r\n this.order.fromAddress = null;\r\n this.order.toAddress = null;\r\n this.bookingPhoneNumber = '';\r\n\r\n if (!val){\r\n return;\r\n }\r\n await this.fetchPassengerBookingPlacesInfo();\r\n await this.updatePassengerQuotas();\r\n }\r\n\r\n async updatePassengerQuotas() {\r\n if (this.order.passenger) {\r\n this.loading.quotas = true;\r\n this.bookingQuotas = await restService.quotas.get(this.order.passenger.id, this.dateWithoutTime);\r\n if (this.order.quota) {\r\n // Reselect the same quota that was previously selected (from new objects)\r\n this.order.quota = this.bookingQuotas.find(q => q.id === this.order.quota!.id) || null;\r\n } else if (this.bookingQuotas.length >= 1){\r\n const availableQuotas = this.bookingQuotas.filter(q => q.remainingQuota > 0);\r\n if (availableQuotas.length >= 1){\r\n this.order.quota = availableQuotas[0];\r\n }\r\n }\r\n this.loading.quotas = false;\r\n } else {\r\n this.bookingQuotas = [];\r\n }\r\n // this.quotaEditable = this.bookingQuotas.length !== 1;\r\n }\r\n\r\n get currentStepTitle(): TranslateResult {\r\n let step = this.steps.find(s => s.id === this.currentStep?.id);\r\n return step\r\n ? step.title\r\n : \"TODO: StepTitleWhenNoStepFound\";\r\n }\r\n\r\n get currentStepIndex(){\r\n const currentStepIndex = this.steps.findIndex(s => s.id === this.currentStep?.id);\r\n if (currentStepIndex < 0 || currentStepIndex >= this.steps.length){\r\n return -1;\r\n }\r\n return currentStepIndex;\r\n }\r\n\r\n get currentStepNumber(){\r\n return this.currentStepIndex + 1;\r\n }\r\n\r\n nextStep(){\r\n if (this.currentStepIndex < 0){\r\n return;\r\n }\r\n this.currentStep = this.steps[this.currentStepIndex + 1];\r\n }\r\n\r\n gotoReturnBookingStep(){\r\n if (this.currentStepIndex < 0){\r\n return;\r\n }\r\n\r\n // Reset state \r\n this.bookingSaving = false;\r\n this.bookingSaved = false;\r\n this.bookingSaveError = \"\";\r\n\r\n // Switch from and to addresses\r\n var originalFromAddress = this.order.fromAddress;\r\n var originalFromApartment = this.order.fromApartment;\r\n this.order.fromAddress = this.order.toAddress;\r\n this.order.fromApartment = this.order.toApartment;\r\n this.order.toAddress = originalFromAddress;\r\n this.order.toApartment = originalFromApartment;\r\n\r\n // Fast forward time for additional x hours\r\n const lastMinuteOfDay = this.$moment(this.order.dateAndTime).endOf('day');\r\n this.order.dateAndTime = this.$moment.min(\r\n this.$moment(this.order.dateAndTime).add(1, 'hour'), \r\n lastMinuteOfDay\r\n );\r\n\r\n // Make sure time is departure time\r\n this.order.isDepartureTime = true;\r\n\r\n // Clear via points\r\n this.order.viaPoints = [];\r\n\r\n // Move to the return trip info adding step\r\n this.currentStep = this.steps[this.currentStepIndex + 1];\r\n }\r\n \r\n prevStep(){\r\n if (this.currentStepIndex < 0){\r\n return;\r\n }\r\n this.bookingSaveError = '';\r\n this.currentStep = this.steps[this.currentStepIndex - 1];\r\n }\r\n\r\n\r\n async createBooking() {\r\n this.bookingSaving = true;\r\n this.bookingSaveError = '';\r\n try {\r\n const order = this.convertOrderToBooking(this.order);\r\n const result = await restService.booking.postBooking(order);\r\n // Fetch trips for the passenger if booking was automatic\r\n await this.$store.dispatch('passenger/getPassengerTrips', this.order.passenger);\r\n\r\n // Display notice\r\n // TODO: A11y: Snackbar notice is read twice on NVDA, this can be re-enabled once fixed\r\n // const notice: INotice = {\r\n // text: 'booking.bookingSubmittedSuccessfully',\r\n // color: 'success',\r\n // link: '/trips',\r\n // button: 'booking.move_to_trips',\r\n // };\r\n // this.$store.commit('notice/showNotice', notice);\r\n this.bookingSaved = true;\r\n } catch (error) {\r\n // TODO: Strong type error\r\n let formattedErrorMessage = null;\r\n let genericErrorMessage: string = this.$t(\"booking.failed\").toString();\r\n let specificErrorMessage = (error as any).data && (error as any).data.message\r\n ? (error as any).data.message\r\n : null;\r\n if ((error as any).status === 400 && specificErrorMessage) {\r\n if (specificErrorMessage.includes('municipalit')){\r\n specificErrorMessage = this.$t(\"booking.error_municipality\");\r\n }\r\n formattedErrorMessage = genericErrorMessage + ': ' + specificErrorMessage;\r\n }\r\n\r\n if (!formattedErrorMessage){\r\n formattedErrorMessage = genericErrorMessage;\r\n }\r\n // TODO: A11y: Snackbar notice is read twice on NVDA, this can be re-enabled once fixed\r\n // const notice: INotice = {\r\n // text: errorMessage,\r\n // color: 'error',\r\n // link: '/booking',\r\n // button: 'general.button.back',\r\n // };\r\n // this.$store.commit('notice/showNotice', notice);\r\n // For now, using a component-defined error message layout\r\n this.bookingSaveError = formattedErrorMessage;\r\n this.bookingSaved = false;\r\n }\r\n this.bookingSaving = false;\r\n }\r\n\r\n convertOrderToBooking(order: IBookingOrder) {\r\n const booking: IBooking = {\r\n transportationPermissionId: order.quota ? order.quota.id : undefined,\r\n passengers: order.passenger ? [ this.convertToBookingPassenger(order.passenger) ] : [],\r\n departureDateTime: order.isDepartureTime ? order.dateAndTime : '',\r\n arrivalDateTime: order.isDepartureTime ? '' : order.dateAndTime,\r\n type: order.quota ? order.quota.name : '',\r\n destinations: [],\r\n \r\n additionalInformation: this.order.additionalInfo,\r\n attributes: this.order.quota\r\n ? this.order.quota.extras.filter(e => e.selected).map(e => e.extraId).join('')\r\n : '',\r\n };\r\n (window as any).__cbooking = booking;\r\n (window as any).__corder = order;\r\n if(order.viaPoints.length > 0) {\r\n booking.destinations = order.viaPoints\r\n .filter(v => v.viaPointAddress)\r\n .map(v => {\r\n const viaPoint = this.addApartmentToAddress(v.viaPointApartment, v.viaPointAddress!)\r\n viaPoint.isViaPoint = true;\r\n viaPoint.waitTime = v.waitTime;\r\n return viaPoint;\r\n })\r\n }\r\n if(order.fromAddress && order.toAddress) {\r\n booking.destinations.push(this.addApartmentToAddress(order.toApartment, order.toAddress));\r\n booking.destinations.unshift(this.addApartmentToAddress(order.fromApartment, order.fromAddress));\r\n }\r\n\r\n return booking;\r\n }\r\n\r\n convertToBookingPassenger(p: IPassenger): IBookingPassenger {\r\n const id = this.order.passenger?.id || '';\r\n const name = this.order.passenger?.name || '';\r\n const phone = this.bookingPhoneNumber || '';\r\n const passengerCount = this.order.passengerCount;\r\n\r\n return { id, name, phone, email: '', passengerCount };\r\n }\r\n\r\n convertToDestinations(destinations: IPassengerDestination[]): IDestination[] {\r\n const result: IDestination[] = [];\r\n\r\n destinations.forEach(dest => {\r\n result.push(\r\n {\r\n id: dest.id,\r\n alias: dest.alias,\r\n display: dest.display,\r\n address: dest.streetAddress,\r\n city: dest.city,\r\n postalcode: dest.postalcode,\r\n latitude: dest.latitude,\r\n longitude: dest.longitude,\r\n isHome: dest.isHome,\r\n isViaPoint: dest.isViaPoint,\r\n isPickup: dest.isPickup,\r\n isMain: dest.isMain,\r\n isSecondaryPlace: dest.isSecondaryPlace,\r\n });\r\n });\r\n return result.filter(d => d);\r\n }\r\n \r\n addApartmentToAddress(apartment: string | null, destination: IDestination) {\r\n const destinationCopy = { ...destination };\r\n if (!destination.isHome && !destination.isMain && apartment) {\r\n const address = destination.address.toLowerCase().replace(/\\s/g, '');\r\n const apartmentCleaned = apartment.toLowerCase().replace(/\\s/g, '');\r\n if (address.indexOf(apartmentCleaned) !== address.length - apartmentCleaned.length) {\r\n destinationCopy.address = [destinationCopy.address, apartmentCleaned].filter(x => x).join(' ');\r\n }\r\n }\r\n return destinationCopy;\r\n }\r\n\r\n async fetchPassengerBookingPlacesInfo() {\r\n if (this.order.passenger) {\r\n const bookingPlaces = await restService.passenger.getPassengerPlaces(\r\n this.order.passenger ? this.order.passenger.id : '');\r\n this.passengerBookingPlacesInfo = bookingPlaces;\r\n this.passengerDestinations = this.convertToDestinations(bookingPlaces.addresses);\r\n }\r\n }\r\n\r\n created() {\r\n (window as any).__book = this;\r\n if (this.passengers.length === 1){\r\n this.order.passenger = this.passengers[0];\r\n }\r\n }\r\n\r\n mounted() {\r\n if (this.currentStep == null){\r\n this.currentStep = this.steps[0];\r\n }\r\n // #5929 forbids programmatic focus on page change\r\n // (this.$refs.pageTitleRef as HTMLElement).focus();\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Booking.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Booking.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Booking.vue?vue&type=template&id=47f6c94b&\"\nimport script from \"./Booking.vue?vue&type=script&lang=ts&\"\nexport * from \"./Booking.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Booking.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VStepper } from 'vuetify/lib/components/VStepper';\nimport { VStepperContent } from 'vuetify/lib/components/VStepper';\nimport { VStepperHeader } from 'vuetify/lib/components/VStepper';\nimport { VStepperItems } from 'vuetify/lib/components/VStepper';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardTitle,VCol,VContainer,VForm,VRow,VSpacer,VStepper,VStepperContent,VStepperHeader,VStepperItems})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"page\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-card',[_c('v-card-title',{attrs:{\"primary-title\":\"\"}},[_c('h1',{ref:\"pageTitleRef\",staticClass:\"headline\",attrs:{\"id\":\"main-content\",\"role\":\"heading\",\"tabindex\":\"-1\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"menu.canceltrips\"))+\" \")])]),_c('v-stepper',{attrs:{\"flat\":\"\"},model:{value:(_vm.currentStep),callback:function ($$v) {_vm.currentStep=$$v},expression:\"currentStep\"}},[_c('v-stepper-header',{staticClass:\"elevation-0 resize-to-fit\"},[_c('h2',{ref:\"stepTitleRef\",staticClass:\"text-subtitle-1 mx-2 mx-sm-4\",attrs:{\"tabindex\":\"0\",\"role\":\"heading\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"booking.step\"))+\" \"+_vm._s(_vm.currentStepNumber)+\": \"+_vm._s(_vm.currentStepTitle)+\" \")])]),_c('v-stepper-items',[_c('v-stepper-content',{attrs:{\"step\":\"1\"}},[_c('v-col',[_c('v-row',{attrs:{\"wrap\":\"\"}},[_c('v-col',{attrs:{\"cols\":12}},[_c('v-switch',{staticClass:\"ml-2 a11y-switch\",attrs:{\"aria-label\":_vm.$t('canceltrips.time_period'),\"value\":_vm.multipleDates ? true : false,\"type\":_vm.platformSpecificSwitchType},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('canceltrips.time_period'))+\" \")])]},proxy:true}]),model:{value:(_vm.multipleDates),callback:function ($$v) {_vm.multipleDates=$$v},expression:\"multipleDates\"}}),_c('div',{staticStyle:{\"opacity\":\"0\",\"font-size\":\"0\"},attrs:{\"aria-live\":\"polite\"}},[(_vm.multipleDates)?[_vm._v(\" \"+_vm._s(_vm.$t('canceltrips.time_period'))+\" \"+_vm._s(_vm.$t('general.button.selected'))+\" \")]:[_vm._v(\" \"+_vm._s(_vm.$t('canceltrips.time_period'))+\" \"+_vm._s(_vm.$t('general.button.not_selected'))+\" \")]],2)],1),(_vm.useSeparateFieldsDateTimeInput)?[_c('AccessibleThreeFieldDatePicker',{attrs:{\"value\":_vm.startIsoDate,\"required\":true,\"min\":_vm.minDate,\"label\":_vm.startDateLabel,\"aria-label\":_vm.startDateLabel,\"chosen-label\":_vm.startDateLabel},on:{\"change\":function (val) { return (_vm.startDate = val); }}})]:(_vm.useDateTypeInput)?[_c('v-col',{attrs:{\"cols\":12,\"sm\":6}},[_c('v-text-field',{attrs:{\"type\":\"date\",\"value\":_vm.startIsoDate,\"aria-label\":_vm.startDateLabel,\"rules\":[\n _vm.rules.dateIsoFormat,\n _vm.rules.startIsoDateMinDate ],\"min\":_vm.minDate,\"aria-required\":\"true\"},on:{\"change\":function (val) { return (_vm.startDate = val); },\"input\":_vm.onStartIsoDateInput},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.startDateLabel)+\"* \")])]},proxy:true}])})],1)]:[_c('v-col',{attrs:{\"cols\":12}},[_c('AccessibleTextInputDatePicker',{attrs:{\"value\":_vm.startIsoDate,\"required\":true,\"min\":_vm.minDate,\"label\":_vm.startDateLabel,\"aria-label\":_vm.startDateLabel},on:{\"change\":_vm.onStartIsoDateInput}})],1)],(_vm.multipleDates)?[(_vm.useSeparateFieldsDateTimeInput)?[_c('AccessibleThreeFieldDatePicker',{attrs:{\"value\":_vm.endIsoDate,\"required\":true,\"min\":_vm.startDate,\"label\":_vm.$t('general.end'),\"aria-label\":_vm.$t('general.end'),\"chosen-label\":_vm.$t('general.end')},on:{\"change\":function (val) { return (_vm.endDate = val); }}})]:(_vm.useDateTypeInput)?[_c('v-col',{attrs:{\"cols\":12,\"sm\":6}},[_c('v-text-field',{attrs:{\"type\":\"text\",\"value\":_vm.endIsoDate,\"aria-label\":_vm.$t('general.end'),\"rules\":[\n _vm.rules.dateIsoFormat,\n _vm.rules.endIsoDateMinDate ],\"min\":_vm.startDate,\"aria-required\":\"true\"},on:{\"change\":function (val) { return (_vm.endDate = val); },\"input\":_vm.onEndIsoDateInput},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('general.end'))+\" \")])]},proxy:true}],null,false,3380543501)})],1)]:[_c('v-col',{attrs:{\"cols\":12}},[_c('AccessibleTextInputDatePicker',{attrs:{\"value\":_vm.endIsoDate,\"required\":true,\"min\":_vm.startDate,\"label\":_vm.$t('general.end'),\"aria-label\":_vm.$t('general.end')},on:{\"change\":_vm.onEndIsoDateInput}})],1)]]:_vm._e()],2),(_vm.cancellableTripsInTimeFrame.length === 0)?_c('v-alert',{attrs:{\"type\":\"warning\",\"text\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"trips.no_trips\"))+\" \")]):_vm._e(),_c('v-row',{staticClass:\"mb-0\"},[_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"primary\",\"disabled\":!_vm.startDateIsValid || !_vm.endDateIsValid || _vm.cancellableTripsInTimeFrame.length === 0},on:{\"click\":function($event){return _vm.nextStep(2)}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.next\"))+\" \")])],1)],1)],1),_c('v-stepper-content',{attrs:{\"step\":\"2\"}},[_c('v-col',[_c('v-row',[_c('v-list',{attrs:{\"aria-label\":_vm.$t('canceltrips.choose_passengers')}},[_c('v-list-item-group',{attrs:{\"multiple\":\"\"}},_vm._l((_vm.passengers),function(passenger){return _c('v-list-item',{key:passenger.id,attrs:{\"role\":\"option\"},on:{\"click\":function($event){return _vm.togglePassengerSelection(passenger)}}},[_c('v-list-item-action',[(_vm.passengerSelected(passenger))?[_c('v-icon',{staticClass:\"primary--text\"},[_vm._v(\"$far-fa-square-check\")])]:[_c('v-icon',[_vm._v(\"$far-fa-square\")])]],2),_c('v-list-item-content',[_c('div',{staticClass:\"a11y-hidden-prompt\"},[_vm._v(\" \"+_vm._s(_vm.passengerSelected(passenger) ? _vm.$t(\"general.button.selected\") : _vm.$t(\"general.button.select\"))+\" \")]),_c('v-list-item-title',[_vm._v(_vm._s(passenger.name))])],1),_c('v-list-item-avatar',{attrs:{\"color\":_vm.$randomColor(passenger.id),\"size\":\"30\",\"aria-hidden\":\"true\"}},[_c('span',{staticClass:\"white--text\"},[_vm._v(_vm._s(passenger.avatarText))])])],1)}),1)],1)],1),_c('v-row',{staticClass:\"mb-0\"},[_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"primary\",\"disabled\":_vm.selectedPassengers.length === 0},on:{\"click\":function($event){return _vm.nextStep(3)}}},[_vm._v(_vm._s(_vm.$t(\"general.button.next\"))+\" \")]),_c('v-btn',{staticClass:\"ml-2\",attrs:{\"large\":\"\"},on:{\"click\":function($event){return _vm.prevStep(1)}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.back\"))+\" \")])],1)],1)],1),_c('v-stepper-content',{attrs:{\"step\":\"3\"}},[_c('v-col',[_c('v-row',[_c('v-list',{staticClass:\"narrow\",attrs:{\"three-line\":\"\",\"aria-label\":_vm.$t('canceltrips.choose_trips')}},[_c('v-list-item-group',{attrs:{\"multiple\":\"\"}},_vm._l((_vm.trips),function(trip){return _c('v-list-item',{key:trip.id,attrs:{\"role\":\"option\"},on:{\"click\":function($event){return _vm.toggleTripSelection(trip)},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }return _vm.toggleTripSelection(trip)}}},[_c('v-list-item-action',[(_vm.tripSelected(trip))?[_c('v-icon',{staticClass:\"primary--text\"},[_vm._v(\"$far-fa-square-check\")])]:[_c('v-icon',[_vm._v(\"$far-fa-square\")])]],2),_c('v-list-item-content',[_c('div',{staticClass:\"a11y-hidden-prompt\"},[_vm._v(\" \"+_vm._s(_vm.tripSelected(trip) ? _vm.$t(\"general.button.selected\") : _vm.$t(\"general.button.select\"))+\" \")]),_c('v-list-item-title',[_c('strong',[(_vm.selectedPassengers && _vm.selectedPassengers.length > 1)?[_vm._v(\" \"+_vm._s(trip.passenger.name)+\" \"),_c('br')]:_vm._e(),_vm._v(\" \"+_vm._s(_vm._f(\"dateTimeOrNA\")(trip.startDateTime))+\" \")],2),_c('span',{staticClass:\"primary--text ml-3\"},[_vm._v(_vm._s(trip.carName))])]),_c('v-list-item-subtitle',{staticClass:\"text-wrap-all\"},[_vm._v(\" \"+_vm._s(trip.startPlace)+\" \")]),_c('v-list-item-subtitle',{staticClass:\"text-wrap-all\"},[_vm._v(\" \"+_vm._s(trip.endPlace)+\" \")])],1)],1)}),1)],1),_c('div',{staticStyle:{\"opacity\":\"0\",\"font-size\":\"0\"},attrs:{\"aria-live\":\"polite\"}},[_vm._v(\" \"+_vm._s(_vm.$t('canceltrips.trips_selected', [_vm.selectedTrips.length]))+\" \")])],1),_c('v-row',{staticClass:\"mt-4 mb-0\"},[_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"primary\",\"disabled\":_vm.selectedTrips.length === 0},on:{\"click\":function($event){return _vm.nextStep(4)}}},[_vm._v(_vm._s(_vm.$t(\"general.button.next\")))]),_c('v-btn',{staticClass:\"ml-2\",attrs:{\"large\":\"\"},on:{\"click\":function($event){return _vm.prevStep(2)}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.back\"))+\" \")])],1)],1)],1),_c('v-stepper-content',{attrs:{\"step\":\"4\"}},[_c('v-form',{model:{value:(_vm.reasonIsValid),callback:function ($$v) {_vm.reasonIsValid=$$v},expression:\"reasonIsValid\"}},[_c('v-col',[_c('v-textarea',{attrs:{\"outlined\":\"\",\"name\":\"reasontext\",\"rules\":_vm.reasonRules,\"aria-label\":_vm.$t('trips.cancel_reason'),\"label\":_vm.$t('trips.cancel_reason') + '*',\"aria-required\":\"true\",\"autofocus\":\"\",\"placeholder\":_vm.$t('trips.cancel_reason_placeholder'),\"persistent-placeholder\":\"\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('trips.cancel_reason'))+\"* \")])]},proxy:true}]),model:{value:(_vm.cancelreason),callback:function ($$v) {_vm.cancelreason=$$v},expression:\"cancelreason\"}}),_c('v-row',{staticClass:\"mt-4 mb-0\"},[_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"primary\",\"disabled\":!_vm.reasonIsValid},on:{\"click\":function($event){return _vm.createCancellations()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"canceltrips.create_cancellation\"))+\" \")]),_c('v-btn',{staticClass:\"ml-2\",attrs:{\"large\":\"\"},on:{\"click\":function($event){return _vm.prevStep(3)}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.back\"))+\" \")])],1)],1)],1)],1),_c('v-stepper-content',{attrs:{\"step\":\"5\"}},[(_vm.currentStep === 5)?_c('div',[(_vm.creatingCancellations)?[_c('div',{staticClass:\"text-center\"},[_c('v-progress-circular',{attrs:{\"color\":\"primary\",\"indeterminate\":\"\"}})],1)]:[(_vm.cancellationError)?_c('v-alert',{attrs:{\"type\":\"error\",\"text\":\"\",\"aria-live\":\"polite\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"canceltrips.cancellation_error\"))+\" \")]):_c('v-alert',{attrs:{\"type\":\"success\",\"text\":\"\",\"aria-live\":\"polite\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"canceltrips.cancellations_done\", [_vm.cancellationStats]))+\" \")])],_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"primary\",\"disabled\":_vm.creatingCancellations},on:{\"click\":function($event){return _vm.reset()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.back\"))+\" \")])],2):_vm._e()])],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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 moment from \"moment\";\r\nimport restService from \"@/services/restService\";\r\nimport DateHelper from \"@/helpers/DateHelper\";\r\nimport AccessibleTextInputDatePicker from '@/components/AccessibleTextInputDatePicker.vue';\r\nimport AccessibleThreeFieldDatePicker from '@/components/AccessibleThreeFieldDatePicker.vue';\r\n\r\n\r\n@Component({\r\n components: {\r\n AccessibleTextInputDatePicker,\r\n AccessibleThreeFieldDatePicker\r\n },\r\n})\r\nexport default class CancelTripsView extends Vue {\r\n currentStep: number = 1;\r\n startDateOpen: boolean = false;\r\n endDateOpen: boolean = false;\r\n\r\n multipleDates: boolean = false;\r\n minDate: string = new Date().toISOString().substr(0, 10);\r\n startDate: string = new Date().toISOString().substr(0, 10);\r\n endDate: string = new Date().toISOString().substr(0, 10);\r\n\r\n startIsoDateIsValid: boolean = true;\r\n endIsoDateIsValid: boolean = true;\r\n\r\n selectedPassengers: string[] = [];\r\n\r\n selectedTrips: ITrip[] = [];\r\n headers = [\r\n { text: \"Henkilö\", value: \"passenger.name\", align: \"center\" },\r\n { text: \"Lähtö\", value: \"startDateTime\" },\r\n { text: \"Matkustaja\", value: \"name\" },\r\n ];\r\n\r\n cancelreason: string = \"\";\r\n reasonRules: any[] = [this.notEmpty];\r\n reasonIsValid: boolean = false;\r\n creatingCancellations: boolean = false;\r\n cancellationError: boolean = false;\r\n\r\n cancellationStats: string = '';\r\n\r\n get useSeparateFieldsDateTimeInput(){\r\n return this.$store.getters['app/useSeparateFieldsDateTimeInput'];\r\n }\r\n\r\n get useDateTypeInput(){\r\n return this.$store.getters['app/useDateTypeInput'];\r\n }\r\n\r\n get rules(): any {\r\n return {\r\n dateIsoFormat: (v: string) =>\r\n !!this.isoDateIsValid(v) || this.$t(\"general.check_date_format\"),\r\n startIsoDateMinDate: (v: string) =>\r\n !!this.isoDateIsAtOrAfterIsoDate(v, this.minDate) ||\r\n this.$t(\"general.date_cannot_be_before_date\", {\r\n date: DateHelper.isoDateToFinnishDate(this.minDate),\r\n }),\r\n endIsoDateMinDate: (v: string) =>\r\n !!this.isoDateIsAtOrAfterIsoDate(v, this.startDate) ||\r\n this.$t(\"general.date_cannot_be_before_date\", {\r\n date: DateHelper.isoDateToFinnishDate(this.startDate),\r\n }),\r\n };\r\n }\r\n\r\n @Watch(\"startDate\") \r\n onStartDateChanged(value: string, oldVal: string) {\r\n // If start date is changed to be after end date, set end date to be the same as start\r\n if (new Date(value) > new Date(this.endDate)) {\r\n this.endDate = value;\r\n }\r\n }\r\n\r\n @Watch(\"currentStep\")\r\n onCurrenStepChanged(newVal: number, oldVal: number) {\r\n if (newVal == null || newVal === oldVal || oldVal == null) {\r\n return;\r\n }\r\n this.$nextTick(() => {\r\n const stepTitleRef = this.$refs.stepTitleRef as HTMLElement;\r\n if (stepTitleRef) {\r\n stepTitleRef.focus();\r\n }\r\n });\r\n }\r\n\r\n get startIsoDate(): string {\r\n return this.startDate;\r\n }\r\n set startIsoDate(val: string) {\r\n this.startIsoDateIsValid =\r\n this.isoDateIsValid(val) &&\r\n this.isoDateIsAtOrAfterIsoDate(val, this.minDate);\r\n if (!this.startIsoDateIsValid) {\r\n console.warn(\"set startIsoDate(): startIsoDateIsValid is not valid\")\r\n return;\r\n }\r\n this.startDate = DateHelper.finnishDateToIsoDate(val) as string;\r\n }\r\n @Watch(\"startIsoDate\")\r\n startIsoDateChanged(val: string){\r\n this.startIsoDateIsValid = \r\n this.isoDateIsValid(val) && \r\n this.isoDateIsAtOrAfterIsoDate(val, this.minDate);\r\n }\r\n onStartIsoDateInput(val: string) {\r\n this.startIsoDateIsValid =\r\n this.isoDateIsValid(val) &&\r\n this.isoDateIsAtOrAfterIsoDate(val, this.minDate);\r\n if (this.startDateIsValid){\r\n this.startDate = val;\r\n };\r\n }\r\n\r\n get endIsoDate(): string {\r\n return this.endDate;\r\n }\r\n set endIsoDate(val: string) {\r\n this.endIsoDateIsValid =\r\n this.isoDateIsValid(val) &&\r\n this.isoDateIsAtOrAfterIsoDate(val, this.minDate);\r\n if (!this.endIsoDateIsValid) {\r\n console.warn(\"set startIsoDate(): startIsoDateIsValid is not valid\")\r\n return;\r\n }\r\n this.endDate = DateHelper.finnishDateToIsoDate(val) as string;\r\n }\r\n @Watch(\"endIsoDate\")\r\n endIsoDateChanged(val: string){\r\n this.endIsoDateIsValid = \r\n this.isoDateIsValid(val) && \r\n this.isoDateIsAtOrAfterIsoDate(val, this.minDate);\r\n }\r\n onEndIsoDateInput(val: string) {\r\n this.endIsoDateIsValid =\r\n this.isoDateIsValid(val) &&\r\n this.isoDateIsAtOrAfterIsoDate(val, this.minDate);\r\n if (this.endDateIsValid){\r\n this.endDate = val;\r\n };\r\n }\r\n\r\n // Generic date validation\r\n isoDateIsAtOrAfterIsoDate(isoDate: string, otherIsoDate: string){\r\n return !moment(isoDate).isBefore(moment(otherIsoDate));\r\n }\r\n\r\n isoDateIsValid(val: string): boolean {\r\n const isIsoDate = DateHelper.isIsoDate(val);\r\n if (!isIsoDate){\r\n console.warn(\"isoDateIsValid:\" + \" cannot convert to iso date: \" + val);\r\n return false;\r\n }\r\n const valMoment = moment(val);\r\n if (!valMoment.isValid()){\r\n console.warn(\"isoDateIsValid:\" + \" moment isValid=false: \" + valMoment);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n get startDateIsValid(): boolean {\r\n return this.startIsoDateIsValid;\r\n }\r\n get endDateIsValid(): boolean {\r\n return this.endIsoDateIsValid;\r\n }\r\n\r\n get locale() {\r\n return this.$store.getters[\"app/locale\"];\r\n }\r\n\r\n get startDateLabel() {\r\n if (this.multipleDates) {\r\n return this.$t(\"general.start\");\r\n } else {\r\n return this.$t(\"general.date\");\r\n }\r\n }\r\n\r\n get selectedDates() {\r\n let res = moment(this.startDate).format(\"L\");\r\n if (this.multipleDates && this.startDate !== this.endDate) {\r\n res += ` - ${moment(this.endDate).format(\"L\")}`;\r\n }\r\n return res;\r\n }\r\n\r\n get cancellableTripsInTimeFrame(): ITrip[] {\r\n const min = new Date(this.startDate);\r\n min.setHours(0, 0, 0, 0);\r\n\r\n const max = this.multipleDates\r\n ? new Date(this.endDate)\r\n : new Date(this.startDate);\r\n\r\n max.setDate(max.getDate() + 1);\r\n\r\n const trips = (this.$store.state.trip.trips as ITrip[])\r\n .filter(t => !t.cancelledAt)\r\n .filter(t => this.tripIsWithinTimeFrame(t, min, max))\r\n .filter(t => this.tripIsCancellable(t));\r\n\r\n return trips;\r\n }\r\n\r\n tripIsWithinTimeFrame(trip: ITrip, min: Date, max: Date) {\r\n const startTime = new Date(trip.startDateTime || trip.endDateTime).getTime();\r\n return min.getTime() <= startTime && startTime < max.getTime();\r\n }\r\n\r\n tripIsCancellable(trip: ITrip) {\r\n if (trip.pickupTime || trip.noShowTime) {\r\n return false;\r\n }\r\n const now = new Date().getTime();\r\n const startTime = new Date(trip.startDateTime || trip.endDateTime).getTime();\r\n\r\n return startTime > now;\r\n }\r\n\r\n filter: any = null;\r\n\r\n get tripDates(): string[] {\r\n return this.$store.getters[\"trip/dates\"];\r\n }\r\n\r\n dateColor(date: string) {\r\n const trips = this.$store.getters[\"trip/trips\"](date, this.filter)\r\n .filter((t: ITrip) => !t.cancelledAt)\r\n const colors = trips\r\n .map((t: any) => this.$randomColor(t.passenger.id))\r\n .filter((v: any, i: number, a: any) => a.indexOf(v) === i);\r\n if (colors.length > 1) {\r\n return \"primary\";\r\n } else if (colors.length === 1) {\r\n return colors[0];\r\n }\r\n }\r\n\r\n get browserIsIosOrMacOs(): boolean {\r\n return this.$store.getters[\"app/browserIsIosOrMacOs\"]\r\n }\r\n\r\n get platformSpecificSwitchType(): string {\r\n return this.browserIsIosOrMacOs\r\n ? \"switch\"\r\n : \"checkbox\";\r\n }\r\n\r\n get passengers(): IPassenger[] {\r\n let passengers = this.$store.getters[\"passenger/passengers\"];\r\n const passengersInTrips: IPassenger[] = this.cancellableTripsInTimeFrame.map(\r\n (trip) => trip.passenger\r\n );\r\n // remove passengers that have no trips for selected timeframe.\r\n passengers = passengers.filter(\r\n (p: IPassenger) =>\r\n passengersInTrips.map(({ id }) => id).indexOf(p.id) > -1\r\n );\r\n return passengers;\r\n }\r\n\r\n get passengerNames() {\r\n return this.passengers.map((p) => p.name).join(\", \");\r\n }\r\n\r\n get trips() {\r\n const trips = this.cancellableTripsInTimeFrame\r\n .filter(t => this.selectedPassengers.indexOf(t.passenger.id) >= 0)\r\n return trips;\r\n }\r\n\r\n\r\n get steps(): any[] {\r\n let steps = [\r\n {\r\n id: 1,\r\n title: this.$t(\"canceltrips.choose_dates\"),\r\n }\r\n ];\r\n if (this.passengers.length > 1){\r\n steps.push({\r\n id: 2,\r\n title: this.$t(\"canceltrips.choose_passengers\"),\r\n });\r\n }\r\n steps = steps.concat([\r\n {\r\n id: 3,\r\n title: this.$t(\"canceltrips.choose_trips\"),\r\n },\r\n {\r\n id: 4,\r\n title: this.$t(\"canceltrips.create_cancellation\"),\r\n },\r\n {\r\n id: 5,\r\n title: this.$t(\"canceltrips.creating_cancellations\"),\r\n },\r\n ]);\r\n return steps;\r\n }\r\n\r\n get currentStepNumber(): number {\r\n return this.steps.findIndex((s) => s.id === this.currentStep) + 1;\r\n }\r\n\r\n get currentStepTitle(): string {\r\n let step = this.steps.find((s) => s.id === this.currentStep);\r\n return step ? step.title : \"TODO: StepTitleWhenNoStepFound\";\r\n }\r\n\r\n nextStep(stepNumber: number) {\r\n switch (stepNumber) {\r\n case 2: {\r\n if (this.passengers.length === 0) {\r\n return;\r\n }\r\n if (this.passengers.length === 1) {\r\n // skip the step forwards\r\n this.selectedPassengers = [this.passengers[0].id];\r\n stepNumber++;\r\n }\r\n break;\r\n }\r\n case 3: {\r\n if (this.selectedPassengers.length === 0) {\r\n return;\r\n }\r\n break;\r\n }\r\n case 4: {\r\n if (this.selectedTrips.length === 0) {\r\n return;\r\n }\r\n break;\r\n }\r\n }\r\n this.currentStep = stepNumber;\r\n }\r\n\r\n prevStep(stepNumber: number) {\r\n switch (stepNumber) {\r\n case 2: {\r\n if (this.passengers.length === 1) {\r\n // skip the step backwards\r\n stepNumber--;\r\n }\r\n break;\r\n }\r\n }\r\n this.currentStep = stepNumber;\r\n }\r\n\r\n async createCancellations() {\r\n this.cancellationError = false;\r\n this.nextStep(5);\r\n this.creatingCancellations = true;\r\n this.cancellationStats = '';\r\n\r\n const cancellation: ITripCancellation = {\r\n reason: this.cancelreason.trim(),\r\n trips: this.selectedTrips,\r\n };\r\n try {\r\n const cancelledTrips = await this.$store.dispatch(\"trip/cancelTrips\", cancellation);\r\n if (cancelledTrips.length != cancellation.trips.length) {\r\n this.cancellationStats = `${cancelledTrips.length}/${cancellation.trips.length}`;\r\n }\r\n } catch (err){\r\n this.creatingCancellations = false;\r\n this.cancellationError = true;\r\n return;\r\n }\r\n // Clear selection after success to avoid double cancellations\r\n this.selectedPassengers = [];\r\n this.selectedTrips = [];\r\n this.creatingCancellations = false;\r\n }\r\n\r\n created() {\r\n // Select all passengers by default when view is opened\r\n // this.selectedPassengers = this.passengers.map((p) => p.id);\r\n if (this.passengers.length >= 1){\r\n this.selectedPassengers = [this.passengers[0].id];\r\n }\r\n }\r\n\r\n passengerSelected(passenger: IPassenger) {\r\n if (!passenger){\r\n return;\r\n }\r\n return this.selectedPassengers.indexOf(passenger.id) >= 0;\r\n }\r\n\r\n togglePassengerSelection(passenger: IPassenger) {\r\n const index = this.selectedPassengers.indexOf(passenger.id);\r\n if (index >= 0) {\r\n this.selectedPassengers.splice(index, 1);\r\n // If some of the passengers trips were selected, remove selection\r\n this.selectedTrips = this.selectedTrips.filter(\r\n (t) => this.selectedPassengers.indexOf(t.passenger.id) >= 0\r\n );\r\n } else {\r\n this.selectedPassengers.push(passenger.id);\r\n }\r\n }\r\n\r\n toggleTripSelection(trip: ITrip) {\r\n const index = this.selectedTrips.indexOf(trip);\r\n if (index >= 0) {\r\n this.selectedTrips.splice(index, 1);\r\n } else {\r\n this.selectedTrips.push(trip);\r\n }\r\n }\r\n\r\n tripSelected(trip: ITrip) {\r\n return this.selectedTrips.indexOf(trip) >= 0;\r\n }\r\n\r\n mustChooseOne(value: any) {\r\n if (!Array.isArray(value) || value.length === 0) {\r\n return this.$t(\"error.choose_at_least_one\");\r\n }\r\n return true;\r\n }\r\n\r\n notEmpty(value: any) {\r\n if (!value || /^\\s*$/.test(value)) {\r\n return this.$t(\"error.must_not_be_empty\");\r\n }\r\n return true;\r\n }\r\n\r\n reset() {\r\n this.currentStep = 1;\r\n }\r\n\r\n mounted() {\r\n // #5929 forbids programmatic focus on page change\r\n // (this.$refs.pageTitleRef as HTMLElement).focus();\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CancelTrips.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CancelTrips.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CancelTrips.vue?vue&type=template&id=144b2251&\"\nimport script from \"./CancelTrips.vue?vue&type=script&lang=ts&\"\nexport * from \"./CancelTrips.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CancelTrips.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAction } from 'vuetify/lib/components/VList';\nimport { VListItemAvatar } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VStepper } from 'vuetify/lib/components/VStepper';\nimport { VStepperContent } from 'vuetify/lib/components/VStepper';\nimport { VStepperHeader } from 'vuetify/lib/components/VStepper';\nimport { VStepperItems } from 'vuetify/lib/components/VStepper';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardTitle,VCol,VContainer,VForm,VIcon,VList,VListItem,VListItemAction,VListItemAvatar,VListItemContent,VListItemGroup,VListItemSubtitle,VListItemTitle,VProgressCircular,VRow,VStepper,VStepperContent,VStepperHeader,VStepperItems,VSwitch,VTextField,VTextarea})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"page\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-card',{attrs:{\"id\":\"main-content\",\"tabindex\":\"-1\"}},[(_vm.showImage)?_c('v-img',{attrs:{\"aspect-ratio\":16/9,\"src\":_vm.image,\"lazy-src\":\"\"}},[_c('v-row',{staticClass:\"lightbox white--text pa-2 fill-height\",attrs:{\"align\":\"end\"}},[_c('v-col',[_c('h1',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$tt('sitetitle')))]),_c('p',[_vm._v(_vm._s(_vm.$tt('slogan')))])])],1)],1):_c('v-card-title',[_c('h1',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$tt('sitetitle')))])]),_c('v-card-text',[_c('p',[_vm._v(_vm._s(_vm.$tt('home.paragraph1')))]),(_vm.showList)?_c('ul',{staticClass:\"mb-4\"},[_c('li',[_vm._v(_vm._s(_vm.$t('home.info1')))]),_c('li',[_vm._v(_vm._s(_vm.$t('home.info2')))]),_c('li',[_vm._v(_vm._s(_vm.$t('home.info3')))])]):_vm._e(),_c('p',[_vm._v(_vm._s(_vm.$tt('home.paragraph2')))]),_c('p',[_vm._v(_vm._s(_vm.$tt('home.paragraph3')))]),_c('p',[_vm._v(_vm._s(_vm.$tt('home.paragraph4')))]),_c('p',[_vm._v(_vm._s(_vm.$tt('home.paragraph5')))])]),_c('v-card-actions',[_c('v-spacer'),(!_vm.isAuthenticated)?[(_vm.showRegister)?_c('v-btn',{attrs:{\"large\":\"\",\"to\":\"/register-travel-card\",\"color\":\"default\"}},[_vm._v(_vm._s(_vm.$t('general.register'))+\" \")]):_vm._e(),_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.login()}}},[_vm._v(\" \"+_vm._s(_vm.$t('general.login'))+\" \")])]:_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.logout()}}},[_vm._v(\" \"+_vm._s(_vm.$t('menu.logout'))+\" \")])],2)],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\r\nimport { RideitBackend } from '@/services/restService';\r\nimport { Component, Vue } from 'vue-property-decorator';\r\nimport { IAppState } from '../store/app-store';\r\nimport Themes from '../themes';\r\n\r\n@Component\r\nexport default class Home extends Vue {\r\n\r\n get isAuthenticated() {\r\n return this.$store.getters['auth/isAuthenticated'];\r\n }\r\n\r\n get appState(): IAppState {\r\n return this.$store.state.app;\r\n }\r\n\r\n get showList() {\r\n return this.appState.themeId !== Themes.themeMeneva.id;\r\n }\r\n\r\n get showRegister() {\r\n return this.appState.themeId === Themes.themeMeneva.id ||\r\n this.appState.themeId === Themes.themeFixutaxi.id || \r\n this.appState.themeId === Themes.themeLahitaksi.id ||\r\n this.appState.themeId === Themes.themeLapha.id;\r\n }\r\n\r\n get showImage() {\r\n return !!this.image;\r\n }\r\n\r\n get image() {\r\n if (this.appState.themeId === Themes.themeDefault.id) {\r\n return require('../../public/img/default/welcome.jpg');\r\n } else if (this.appState.themeId === Themes.themeMeneva.id) {\r\n return require('../../public/img/meneva/welcome.jpg');\r\n }\r\n }\r\n\r\n login() {\r\n const url = RideitBackend.baseUrl + 'login?locale=' + this.$i18n.locale;\r\n console.log('login url', url);\r\n window.location.href = url;\r\n }\r\n\r\n logout() {\r\n this.$store.dispatch('auth/logout');\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=218eccec&\"\nimport script from \"./Home.vue?vue&type=script&lang=ts&\"\nexport * from \"./Home.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VContainer,VImg,VRow,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"page\",attrs:{\"fluid\":\"\",\"id\":\"main-content\",\"tabindex\":\"-1\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[(_vm.loading)?_c('v-card',[_c('v-card-text',{staticClass:\"text-xs-center\"},[_c('v-progress-circular',{attrs:{\"size\":70,\"width\":7,\"color\":\"primary\",\"indeterminate\":\"\"}}),_c('p',{staticClass:\"body-2 mt-3\"},[_vm._v(_vm._s(_vm.$t('general.loading'))+\"...\")])],1)],1):(_vm.notFound)?_c('v-card',[_c('v-card-text',[_c('h1',{staticClass:\"headline mb-5\"},[_vm._v(_vm._s(_vm.$t('invitation.not_found')))]),_c('div',{staticClass:\"text-xs-center mb-3\"},[_c('v-btn',{attrs:{\"large\":\"\",\"to\":\"/\"}},[_vm._v(\" \"+_vm._s(_vm.$t('menu.home'))+\" \")])],1)])],1):(_vm.bruteForce)?_c('v-card',[_c('v-card-text',[_c('h1',{staticClass:\"headline mb-5\"},[_vm._v(_vm._s(_vm.$t('error.too_many_requests')))]),_c('div',{staticClass:\"text-xs-center mb-3\"},[_c('v-btn',{attrs:{\"large\":\"\",\"to\":\"/\"}},[_vm._v(\" \"+_vm._s(_vm.$t('menu.home'))+\" \")])],1)])],1):_c('v-card',[_c('v-card-text',[(_vm.invitation.acceptedByUser)?_c('div',[_c('h1',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$t('invitation.title_accepted')))]),_c('div',{staticClass:\"text-xs-center mb-3\"},[_c('v-btn',{attrs:{\"large\":\"\",\"to\":\"/passengers\",\"color\":\"primary\"}},[_vm._v(\" \"+_vm._s(_vm.$t('menu.home'))+\" \")])],1)]):_c('div',[_c('h1',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$t('invitation.title')))]),_c('p',[_vm._v(_vm._s(_vm.$tt('invitation.paragraph1')))]),_c('ul',{staticClass:\"mb-3\"},[_c('li',[_vm._v(_vm._s(_vm.$tt('home.info1')))]),_c('li',[_vm._v(_vm._s(_vm.$tt('home.info2')))]),_c('li',[_vm._v(_vm._s(_vm.$tt('home.info3')))])]),_c('p',[_vm._v(_vm._s(_vm.$tt('invitation.paragraph2')))])])]),(_vm.isAuthenticated && !_vm.invitation.acceptedByUser)?_c('v-card-actions',[_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.acceptInvitation}},[_vm._v(\" \"+_vm._s(_vm.$t('general.accept'))+\" \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"default\"},on:{\"click\":_vm.changeUser}},[_vm._v(\" \"+_vm._s(_vm.$t('invitation.change_user'))+\" \")])],1):_c('v-card-actions',[_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.changeUser}},[_vm._v(\" \"+_vm._s(_vm.$t('general.register'))+\" / \"+_vm._s(_vm.$t('general.login'))+\" \")])],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\r\nimport { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport restService from '../services/restService';\r\n\r\n@Component\r\nexport default class Invitation extends Vue {\r\n\r\n loading: boolean = true;\r\n notFound: boolean = false;\r\n bruteForce: boolean = false;\r\n invitation: IUserInvitation | null = null;\r\n\r\n get isAuthenticated() {\r\n return this.$store.getters['auth/isAuthenticated'];\r\n }\r\n\r\n created() {\r\n this.onRouteChanged();\r\n }\r\n\r\n @Watch('$route')\r\n async onRouteChanged() {\r\n if (this.$route.params.code) {\r\n this.loading = true;\r\n this.notFound = false;\r\n this.bruteForce = false;\r\n try {\r\n this.invitation = await restService.invitation.get(this.$route.params.code);\r\n } catch (error) {\r\n // TODO: Strong type error\r\n this.invitation = null;\r\n if ((error as any).status === 404) {\r\n this.notFound = true;\r\n } else if ((error as any).status === 429) {\r\n this.bruteForce = true;\r\n }\r\n }\r\n this.loading = false;\r\n }\r\n }\r\n\r\n async acceptInvitation() {\r\n if (this.invitation) {\r\n try {\r\n await this.$store.dispatch('passenger/acceptInvitation', this.invitation);\r\n\r\n } catch (error) {\r\n // TODO: Strong type error\r\n if ((error as any).status === 404) {\r\n // TODO: show error message\r\n this.$store.commit('app/error', this.$t('invitation.not_found').toString());\r\n }\r\n }\r\n // Reload invite data\r\n this.onRouteChanged();\r\n }\r\n }\r\n\r\n changeUser() {\r\n if (this.invitation) {\r\n if (this.isAuthenticated) {\r\n window.location.href = '/logoutandacceptinvite?code=' + this.invitation.code + '&locale=' + this.$i18n.locale;\r\n } else {\r\n window.location.href = '/acceptinvite?code=' + this.invitation.code + '&locale=' + this.$i18n.locale;\r\n }\r\n }\r\n }\r\n\r\n goBack() {\r\n this.$router.go(-1);\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Invitation.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Invitation.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Invitation.vue?vue&type=template&id=dfd29174&\"\nimport script from \"./Invitation.vue?vue&type=script&lang=ts&\"\nexport * from \"./Invitation.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCol,VContainer,VProgressCircular,VRow,VSpacer})\n","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',{attrs:{\"xs12\":\"\",\"sm6\":\"\",\"offset-sm3\":\"\"}},[_c('v-card',{attrs:{\"id\":\"main-content\",\"tabindex\":\"-1\"}},[(_vm.showImage)?_c('v-img',{attrs:{\"aspect-ratio\":16/9,\"src\":_vm.image}},[_c('v-layout',{staticClass:\"lightbox white--text text-center\",attrs:{\"shrink\":\"\",\"pa-3\":\"\",\"column\":\"\",\"fill-height\":\"\"}},[_c('v-flex',{attrs:{\"shrink\":\"\"}},[_c('h1',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$t('loggedOut.title')))]),_c('p',[_vm._v(_vm._s(_vm.$tt('home.paragraph1')))])]),_c('v-spacer')],1)],1):_c('v-card-title',[_c('h1',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$t('loggedOut.title')))])]),_c('v-card-text',[(_vm.isAuthenticated)?_c('div',{staticClass:\"text-center\"},[_c('p',[_vm._v(_vm._s(_vm.$t('loggedOut.logBackIn')))]),_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"info\"},on:{\"click\":function($event){return _vm.login()}}},[_vm._v(\" \"+_vm._s(_vm.$t('Login'))+\" \")])],1):_vm._e()])],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\r\nimport { RideitBackend } from '@/services/restService';\r\nimport { Component, Vue } from 'vue-property-decorator';\r\nimport { IAppState } from '../store/app-store';\r\nimport Themes from '../themes';\r\n\r\n@Component\r\nexport default class Home extends Vue {\r\n\r\n mounted() {\r\n this.$store.dispatch('auth/logout');\r\n }\r\n\r\n get isAuthenticated() {\r\n return this.$store.getters['auth/isAuthenticated'];\r\n }\r\n\r\n get showImage() {\r\n return !!this.image;\r\n }\r\n\r\n get image() {\r\n if (this.appState.themeId === Themes.themeDefault.id) {\r\n return require('../../public/img/default/welcome.jpg');\r\n } else if (this.appState.themeId === Themes.themeMeneva.id) {\r\n return require('../../public/img/meneva/welcome.jpg');\r\n }\r\n }\r\n\r\n get appState(): IAppState {\r\n return this.$store.state.app;\r\n }\r\n\r\n login() {\r\n const url = RideitBackend.baseUrl + 'login?locale=' + this.$i18n.locale;\r\n window.location.href = url;\r\n }\r\n\r\n logout() {\r\n this.$store.dispatch('auth/logout');\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LoggedOut.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LoggedOut.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LoggedOut.vue?vue&type=template&id=56c84b86&\"\nimport script from \"./LoggedOut.vue?vue&type=script&lang=ts&\"\nexport * from \"./LoggedOut.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VFlex } from 'vuetify/lib/components/VGrid';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VLayout } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VFlex,VImg,VLayout,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"pb-0\",attrs:{\"id\":\"main-content\",\"tabindex\":\"-1\",\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":12,\"sm\":6,\"offset-:sm\":\"3\"}},[(_vm.loading)?_c('div',{staticClass:\"text-center pa-6\"},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":\"primary\"}})],1):_vm._e(),_vm._l((_vm.messages),function(message){return _c('message-item',{key:message.id,attrs:{\"message\":message,\"show-passenger-chip\":_vm.moreThanOnePassenger}})})],2)],1),(false)?_c('v-row',[_c('v-col',{staticClass:\"pa-0\",attrs:{\"cols\":12}},[_c('message-form',{attrs:{\"mt-4\":\"\"},on:{\"messageSent\":_vm.scrollToEnd}})],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-row',[_c('v-col',[_c('v-card',{staticClass:\"message mb-3 lighten-5\",class:{'own light-blue ml-6': _vm.ownMessage, 'white mr-6': !_vm.ownMessage},attrs:{\"elevation\":6},on:{\"click\":function($event){return _vm.markAsConfirmed()}}},[_c('v-col',{staticClass:\"pt-0\"},[_c('v-row',[_c('v-col',{staticClass:\"flex-grow-1 flex-shrink-0\",attrs:{\"col\":\"1\"}},[_c('strong',[_vm._v(_vm._s(_vm.message.from))])]),_c('v-col',{staticClass:\"text-right subtitle-2 flex-grow-0 flex-shrink-0\",attrs:{\"col\":\"1\",\"shrink\":\"\"}},[_vm._v(_vm._s(_vm._f(\"dateTime\")(_vm.message.createdAt)))])],1),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.content)}}),(_vm.showPassengerChip)?_c('div',{staticClass:\"text-right mt-1\"},[_c('v-chip',{staticClass:\"ma-0\",attrs:{\"pill\":\"\"}},[_c('v-avatar',{staticClass:\"white--text\",attrs:{\"left\":\"\",\"color\":_vm.$randomColor(_vm.passenger.id)}},[_vm._v(_vm._s(_vm.passenger.avatarText))]),_vm._v(\" \"+_vm._s(_vm.passenger.name)+\" \"),(_vm.message.seenAt)?_c('v-icon',{attrs:{\"small\":\"\",\"right\":\"\"}},[_vm._v(\"$fas-fa-check\")]):_vm._e()],1)],1):_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\r\nimport { Component, Vue, Prop } from 'vue-property-decorator';\r\nimport restService from '@/services/restService';\r\n\r\n@Component\r\nexport default class MessageItem extends Vue {\r\n\r\n @Prop() message!: IMessage;\r\n @Prop({ default: true }) showPassengerChip!: boolean;\r\n\r\n private timer?: number;\r\n\r\n get passenger(): IPassenger {\r\n return this.$store.getters['passenger/passengerById'](this.message.passengerId);\r\n }\r\n\r\n get content(): string {\r\n return this.$sanitize(this.message.body.replace(/\\n/g, '
'));\r\n }\r\n\r\n get ownMessage() {\r\n const username = this.$store.state.app.user.name;\r\n return this.message.from === username;\r\n }\r\n\r\n mounted() {\r\n if (!this.message.seenAt && !this.ownMessage) {\r\n this.timer = window.setTimeout(() => {\r\n this.markAsSeen();\r\n this.timer = undefined;\r\n }, 4000);\r\n }\r\n }\r\n\r\n destroyed() {\r\n if (this.timer) {\r\n window.clearTimeout(this.timer);\r\n this.timer = undefined;\r\n }\r\n }\r\n\r\n markAsSeen() {\r\n if (!this.ownMessage) {\r\n this.$store.dispatch('message/markAsSeen', this.message);\r\n }\r\n }\r\n\r\n markAsConfirmed() {\r\n if (!this.ownMessage) {\r\n this.$store.dispatch('message/markAsConfirmed', this.message);\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MessageItem.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MessageItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MessageItem.vue?vue&type=template&id=095b0d43&\"\nimport script from \"./MessageItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./MessageItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MessageItem.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VAvatar,VCard,VChip,VCol,VIcon,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"primary darken-2\",attrs:{\"flat\":\"\",\"tile\":\"\",\"width\":\"100%\",\"dark\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":12,\"sm\":6,\"offset-:sm\":3}},[_c('v-card-text',[_c('v-form',{ref:\"form\",model:{value:(_vm.sendFromValid),callback:function ($$v) {_vm.sendFromValid=$$v},expression:\"sendFromValid\"}},[(_vm.showPassengerSelect)?_c('div',{staticClass:\"mb-2\"},[_c('v-combobox',{attrs:{\"aria-label\":_vm.$t('messages.select_passenger'),\"items\":_vm.passengers,\"rules\":[_vm.passengerRule],\"disabled\":_vm.sending,\"item-text\":\"name\",\"chips\":\"\",\"dense\":\"\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('messages.select_passenger'))+\" \")])]},proxy:true},{key:\"selection\",fn:function(data){return [_c('v-chip',{key:data.id,staticClass:\"v-chip--select-multi\",attrs:{\"pill\":\"\",\"input-value\":data.selected,\"disabled\":data.disabled},on:{\"click\":function($event){$event.stopPropagation();data.parent.selectedIndex = data.index},\"input\":function($event){return data.parent.selectItem(data.item)}}},[_c('v-avatar',{staticClass:\"white--text\",attrs:{\"left\":\"\",\"color\":_vm.$randomColor(data.item.id)}},[_vm._v(\" \"+_vm._s(data.item.avatarText)+\" \")]),_vm._v(\" \"+_vm._s(data.item.name)+\" \")],1)]}}],null,false,3416271438),model:{value:(_vm.selectedPassenger),callback:function ($$v) {_vm.selectedPassenger=$$v},expression:\"selectedPassenger\"}})],1):_vm._e(),_c('div',[_c('v-flex',{attrs:{\"xs12\":\"\"}},[_c('v-text-field',{attrs:{\"aria-label\":_vm.$t('messages.type_a_message'),\"append-outer-icon\":\"$fas-fa-paper-plane\",\"rules\":[_vm.messageRule],\"disabled\":_vm.sending,\"outlined\":\"\",\"dense\":\"\",\"clear-icon\":\"$fas-fa-times-circle\",\"clearable\":\"\",\"type\":\"text\",\"required\":\"\"},on:{\"click:append-outer\":_vm.sendMessage,\"click:clear\":_vm.clearMessage},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('messages.type_a_message'))+\" \")])]},proxy:true}]),model:{value:(_vm.message),callback:function ($$v) {_vm.message=$$v},expression:\"message\"}})],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\n\n\n\n\n\n\n\n\n\n\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, Prop } from 'vue-property-decorator';\r\nimport restService from '@/services/restService';\r\n\r\n@Component\r\nexport default class MessageForm extends Vue {\r\n\r\n sending = false;\r\n message: string = '';\r\n sendFromValid: boolean = false;\r\n selectedPassenger: IPassenger | null = null;\r\n\r\n @Prop() private passenger!: IPassenger;\r\n\r\n get passengers(): IPassenger[] {\r\n return this.$store.state.passenger.passengers;\r\n }\r\n\r\n get showPassengerSelect() {\r\n return !this.passenger && this.passengers.length > 1;\r\n }\r\n\r\n get onlyPassenger() {\r\n if (this.passengers.length === 1) {\r\n return this.passengers[0];\r\n }\r\n }\r\n\r\n passengerRule() {\r\n return !!this.passenger || !!this.selectedPassenger || this.$t('messages.select_passenger');\r\n }\r\n\r\n messageRule(value: any) {\r\n return !!value || this.$t('error.must_not_be_empty');\r\n }\r\n\r\n async sendMessage() {\r\n const passenger = this.passenger || this.selectedPassenger || this.onlyPassenger;\r\n if (this.message && passenger) {\r\n this.sending = true;\r\n await this.$store.dispatch('message/sendMessage', { passengerId: passenger.id, body: this.message });\r\n this.sending = false;\r\n (this.$refs.form as any).reset();\r\n this.$emit('messageSent');\r\n }\r\n }\r\n\r\n clearMessage() {\r\n this.message = '';\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MessageForm.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MessageForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MessageForm.vue?vue&type=template&id=c845448e&\"\nimport script from \"./MessageForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./MessageForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VCombobox } from 'vuetify/lib/components/VCombobox';\nimport { VFlex } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VAvatar,VCard,VCardText,VChip,VCol,VCombobox,VFlex,VForm,VRow,VTextField})\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 MessageItem from '@/components/MessageItem.vue';\r\nimport MessageForm from '@/components/MessageForm.vue';\r\nimport restService from '@/services/restService';\r\n\r\n@Component({\r\n components: {\r\n MessageItem,\r\n MessageForm,\r\n },\r\n})\r\nexport default class Messages extends Vue {\r\n loading: boolean = false;\r\n heightBeforeLoading: number = 0;\r\n message: string = '';\r\n sendFromValid: boolean = false;\r\n\r\n get messages(): IMessage[] {\r\n return this.$store.state.message.messages;\r\n }\r\n\r\n get canLoadMore() {\r\n return this.$store.getters['message/canLoadMore'];\r\n }\r\n\r\n get moreThanOnePassenger() {\r\n return this.messages.map(m => m.passengerId)\r\n .filter((p, i, a) => a.indexOf(p) === i)\r\n .length > 1;\r\n }\r\n\r\n created() {\r\n window.addEventListener('scroll', this.onScroll);\r\n }\r\n\r\n mounted() {\r\n this.scrollToEnd();\r\n }\r\n\r\n beforeDestroy() {\r\n window.removeEventListener('scroll', this.onScroll);\r\n }\r\n\r\n onScroll() {\r\n if (window.scrollY === 0 && !this.loading) {\r\n this.loadMoreMessages();\r\n }\r\n }\r\n\r\n scrollTo() {\r\n // After rendering new messages scoll back to the position before loading\r\n this.$nextTick(() => {\r\n const currentHeight = document.body.scrollHeight;\r\n const diffrence = currentHeight - this.heightBeforeLoading;\r\n window.scrollTo(0, diffrence);\r\n });\r\n }\r\n\r\n scrollToEnd() {\r\n this.$nextTick(() => {\r\n window.scrollTo(0, document.body.scrollHeight);\r\n });\r\n }\r\n\r\n loadMoreMessages() {\r\n if (this.canLoadMore) {\r\n // Display loading circle and when its rendered fetch data\r\n this.loading = true;\r\n this.$nextTick(async () => {\r\n // Get document heigth after drawing loading circle\r\n this.heightBeforeLoading = document.body.scrollHeight;\r\n await this.$store.dispatch('message/loadPreviousPage');\r\n this.loading = false;\r\n this.scrollTo();\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Messages.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Messages.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Messages.vue?vue&type=template&id=70c34b73&\"\nimport script from \"./Messages.vue?vue&type=script&lang=ts&\"\nexport * from \"./Messages.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCol,VContainer,VProgressCircular,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.permission)?_c('v-card',[_c('v-card-title',{attrs:{\"primary-title\":\"\"}},[_c('div',[(_vm.permission)?_c('h1',{staticClass:\"headline mb-0\",attrs:{\"id\":\"main-content\",\"tabindex\":\"-1\",\"role\":\"heading\"}},[_vm._v(_vm._s(_vm.permission.name))]):_vm._e()])]),_c('v-card-subtitle',[_vm._v(\" \"+_vm._s(_vm.$t(\"transportationPermission.validityPeriod\"))+\" \"+_vm._s(_vm.startDate)+\" - \"+_vm._s(_vm.endDate)+\" \")]),_c('v-list',{attrs:{\"disabled\":\"\",\"tag\":\"ul\"}},_vm._l((_vm.permission.periods),function(period,index){return _c('ReservationPeriodListItem',{key:index,attrs:{\"period\":period}})}),1),_c('v-card-actions',[_c('v-btn',{attrs:{\"large\":\"\"},on:{\"click\":function($event){return _vm.closeDialog()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.close\"))+\" \")]),_c('v-spacer')],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-list-item',{attrs:{\"tag\":\"li\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t(\"transportationPermission.timePeriod\"))+\" \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(\" \"+_vm._s(_vm.periodStart)+\" - \"+_vm._s(_vm.periodEnd)+\" \")]),(_vm.isActive)?[_vm._v(\" (\"+_vm._s(_vm.$t(\"transportationPermission.currentPeriod\"))+\") \")]:_vm._e()],2),_c('v-list-item-subtitle',[_vm._v(\" \"+_vm._s(_vm.$t(\"transportationPermission.quota\"))+\": \"),_c('span',{staticClass:\"d-inline-block font-weight-bold\"},[_vm._v(\" \"+_vm._s(_vm.period.totalQuota)+\" \"+_vm._s(_vm.$t(\"transportationPermission.usedQuotasIndication\", {amount: _vm.period.usedQuota}))+\" \")])]),(_vm.period.totalExpressQuota > 0)?_c('v-list-item-subtitle',[_vm._v(\" \"+_vm._s(_vm.$t(\"transportationPermission.expressQuotas\"))+\": \"),_c('span',{staticClass:\"d-inline-block font-weight-bold\"},[_vm._v(\" \"+_vm._s(_vm.period.totalExpressQuota)+\" \"+_vm._s(_vm.$t(\"transportationPermission.usedQuotasIndication\", {amount: _vm.period.usedExpressQuota}))+\" \")])]):_vm._e(),(_vm.period.savedToNext)?_c('v-list-item-subtitle',[_vm._v(\" \"+_vm._s(_vm.$t(\"transportationPermission.savedQuota\"))+\" : \"),_c('span',{staticClass:\"d-inline-block font-weight-bold\"},[_vm._v(\" \"+_vm._s(-_vm.period.savedToNext)+\" \")])]):_vm._e(),(_vm.period.borrowed)?_c('v-list-item-subtitle',[_vm._v(\" \"+_vm._s(_vm.$t(\"transportationPermission.borrowedQuota\"))+\" : \"),_c('span',{staticClass:\"d-inline-block font-weight-bold\"},[_vm._v(\" \"+_vm._s(_vm.period.borrowed)+\" \")])]):_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\r\nimport moment from \"moment\";\r\nimport { Vue, Component, Prop } from \"vue-property-decorator\";\r\n@Component({\r\n components: {},\r\n})\r\nexport default class ReservationPeriodListItem extends Vue {\r\n @Prop() period!: IReservationPeriod;\r\n\r\n today = moment();\r\n\r\n get periodStart() {\r\n if (this.period) {\r\n return this.$moment(this.period.startDate).format(\"DD.MM.YYYY\");\r\n }\r\n return \"\";\r\n }\r\n\r\n get periodEnd() {\r\n if (this.period) {\r\n return this.$moment(this.period.endDate).format(\"DD.MM.YYYY\");\r\n }\r\n return \"\";\r\n }\r\n\r\n get isActive(): boolean {\r\n const today = this.today.set({\r\n hour: 0,\r\n minute: 0,\r\n second: 0,\r\n millisecond: 0,\r\n });\r\n const start = moment(this.period.startDate);\r\n const end = moment(this.period.endDate);\r\n\r\n return today >= start && today <= end;\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReservationPeriodListItem.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReservationPeriodListItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ReservationPeriodListItem.vue?vue&type=template&id=de1b1a14&\"\nimport script from \"./ReservationPeriodListItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./ReservationPeriodListItem.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\ninstallComponents(component, {VListItem,VListItemContent,VListItemSubtitle,VListItemTitle})\n","\n\n\n\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 ReservationPeriodListItem from '@/components/ReservationPeriodListItem.vue';\r\nimport moment from 'moment';\r\n@Component({\r\n components: {\r\n ReservationPeriodListItem\r\n }\r\n})\r\nexport default class PassengerTransportationPermission extends Vue {\r\n \r\n @Prop({ required: true })\r\n permission!: IBookingQuotaWithPeriods;\r\n\r\n activePeriodIndex = 0;\r\n\r\n closeDialog() {\r\n this.$emit(\"close\");\r\n }\r\n\r\n @Watch(\"permission\", { immediate: true })\r\n passengerChanged(newVal: IPassenger, oldVal: IPassenger) {\r\n if (newVal) {\r\n this.setActivePeriod();\r\n }\r\n }\r\n\r\n @Prop({ required: true, default: false })\r\n dialogOpen!: boolean;\r\n @Watch(\"dialogOpen\", { immediate: true })\r\n dialogOpenChanged(newVal: boolean, oldVal: boolean) {\r\n if (newVal) {\r\n this.setActivePeriod();\r\n } else {\r\n // Do nothing?\r\n }\r\n }\r\n\r\n // async created(){\r\n // const id = parseInt(this.$route.params.id, 10);\r\n // this.permission = this.$store.getters['quota/permissionById'](id);\r\n // if (!this.permission){\r\n // // If permission was not found, reload passenger\r\n // const passengerId = this.$route.params.passengerId;\r\n // await this.$store.dispatch(\r\n // \"quota/getPassengerTransportationPermissions\",\r\n // passengerId\r\n // );\r\n // }\r\n // this.permission = this.$store.getters['quota/permissionById'](id);\r\n // this.setActivePeriod();\r\n // }\r\n\r\n\r\n get startDate() {\r\n if (this.permission) {\r\n return this.$moment(this.permission.startDate).format('DD.MM.YYYY');\r\n } \r\n return '';\r\n }\r\n\r\n get endDate() {\r\n if (this.permission) {\r\n return this.$moment(this.permission.endDate).format('DD.MM.YYYY');\r\n } \r\n return '';\r\n }\r\n\r\n setActivePeriod() {\r\n if(this.permission) {\r\n const today = moment();\r\n today.set({hour:0,minute:0,second:0,millisecond:0});\r\n\r\n\r\n if(this.permission.periods.length < 2) {\r\n this.activePeriodIndex = 0;\r\n return;\r\n }\r\n\r\n const activePeriod = this.permission?.periods.find(p => {\r\n const start = moment(p.startDate); \r\n const end = moment(p.endDate); \r\n return today >= start && today <= end;\r\n });\r\n \r\n if(activePeriod) {\r\n this.activePeriodIndex = this.permission?.periods.indexOf(activePeriod);\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerTransportationPermission.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerTransportationPermission.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerTransportationPermission.vue?vue&type=template&id=fb5be9b0&\"\nimport script from \"./PassengerTransportationPermission.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerTransportationPermission.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardSubtitle } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardSubtitle,VCardTitle,VList,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"page\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-card',[_c('v-card-title',{attrs:{\"primary-title\":\"\"}},[_c('h1',{ref:\"pageTitleRef\",staticClass:\"headline\",attrs:{\"id\":\"main-content\",\"tabindex\":\"-1\",\"role\":\"heading\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"menu.passengersTransportationPermissions\"))+\" \")])]),_c('v-stepper',{attrs:{\"flat\":\"\"},model:{value:(_vm.currentStepNumber),callback:function ($$v) {_vm.currentStepNumber=$$v},expression:\"currentStepNumber\"}},[_c('v-stepper-header',{staticClass:\"elevation-0 resize-to-fit\"},[_c('h2',{ref:\"stepTitleRef\",staticClass:\"text-subtitle-1 mx-2 mx-sm-4\",attrs:{\"tabindex\":\"0\",\"role\":\"heading\"}},[_vm._v(\" \"+_vm._s(_vm.currentStepTitle)+\" \")])]),_c('v-stepper-items',[_c('v-stepper-content',{attrs:{\"step\":\"1\"}},[(_vm.passengers.length > 0)?_c('fieldset',{staticClass:\"no-border\"},[_c('v-radio-group',{staticClass:\"mt-0 a11y-radios\",staticStyle:{\"flex-grow\":\"1\"},attrs:{\"label\":_vm.$t('booking.passenger') + '*',\"aria-label\":_vm.$t('booking.passenger'),\"required\":true,\"aria-required\":true},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('label',{attrs:{\"aria-hidden\":\"true\",\"id\":\"passengerLabel\"}},[_vm._v(_vm._s(_vm.$t('booking.passenger'))+\"*\")])]},proxy:true}],null,false,322952843),model:{value:(_vm.selectedPassenger),callback:function ($$v) {_vm.selectedPassenger=$$v},expression:\"selectedPassenger\"}},_vm._l((_vm.passengers),function(passenger){return _c('v-radio',{key:passenger.id,attrs:{\"color\":\"blue darken-3 white--text\",\"value\":passenger,\"aria-label\":passenger.name,\"aria-describedby\":\"passengerLabel\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('v-list-item-content',{attrs:{\"aria-hidden\":\"true\"}},[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(passenger.name)+\" \")])],1),_c('v-list-item-avatar',{attrs:{\"color\":_vm.$randomColor(passenger.id),\"size\":\"30\",\"aria-hidden\":\"true\"}},[_c('span',{staticClass:\"white--text\"},[_vm._v(_vm._s(passenger.avatarText))])])]},proxy:true}],null,true)})}),1)],1):_c('fieldset',{staticClass:\"no-border\"},[_c('v-alert',{attrs:{\"type\":\"warning\"}},[_c('h4',{staticClass:\"subheadline\"},[_vm._v(_vm._s(_vm.$t('passenger.no_passengers')))]),_c('p',[_vm._v(_vm._s(_vm.$t('passenger.no_passengers_paragraph')))])])],1),_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.passengers.length > 0),expression:\"passengers.length > 0\"}],attrs:{\"large\":\"\",\"disabled\":!_vm.selectedPassenger,\"color\":\"primary\"},on:{\"click\":function($event){return _vm.nextStep(2)}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.next\"))+\" \")])],1),_c('v-stepper-content',{attrs:{\"step\":\"2\"}},[(_vm.selectedPassenger && _vm.passengerPermissions.length < 1)?[_c('v-col',{attrs:{\"cols\":12,\"sm\":12}},[_vm._v(\" \"+_vm._s(_vm.$t(\"transportationPermission.noPermissions\"))+\" \")])]:[_c('v-row',[_c('v-col',{attrs:{\"cols\":12,\"sm\":12}},[_c('v-list',{attrs:{\"three-line\":\"\",\"subheader\":\"\"}},_vm._l((_vm.passengerPermissions),function(permission){return _c('TransportationPermissionListItem',{key:permission.id,attrs:{\"permission\":permission},on:{\"selected\":_vm.permissionSelected}})}),1)],1)],1)],(_vm.passengers.length > 1)?[_c('v-row',{staticClass:\"mb-0\"},[_c('v-btn',{attrs:{\"large\":\"\"},on:{\"click\":function($event){return _vm.prevStep(1)}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.back\"))+\" \")])],1)]:_vm._e()],2)],1)],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('v-list-item',{attrs:{\"tag\":\"li\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.permission.name)+\" \")]),_c('v-list-item-subtitle',[_vm._v(\" \"+_vm._s(_vm.startDate)+\" - \"+_vm._s(_vm.endDate)+\" \")])],1),_c('v-list-item-action',[_c('v-dialog',{attrs:{\"max-width\":\"500px\",\"retain-focus\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"dark\":\"\",\"color\":\"primary\",\"title\":_vm.$t('transportationPermission.view'),\"aria-label\":_vm.$t('transportationPermission.view') + ' ' + _vm.permission.name}},'v-btn',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.$t(\"transportationPermission.view\"))+\" \")])]}}]),model:{value:(_vm.viewPermissionDialog),callback:function ($$v) {_vm.viewPermissionDialog=$$v},expression:\"viewPermissionDialog\"}},[_c('PassengerTransportationPermission',{attrs:{\"permission\":_vm.permission,\"dialogOpen\":_vm.viewPermissionDialog},on:{\"close\":function($event){_vm.viewPermissionDialog = false}}})],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\r\nimport PassengerTransportationPermission from '@/views/PassengerTransportationPermission.vue';\r\nimport {Vue, Prop, Component} from 'vue-property-decorator';\r\n@Component({\r\n components: {\r\n PassengerTransportationPermission\r\n }\r\n})\r\nexport default class TransportationPermissionListItem extends Vue {\r\n @Prop({required: true}) permission!: IBookingQuotaWithPeriods;\r\n\r\n viewPermissionDialog: boolean = false;\r\n\r\n get startDate() {\r\n if (this.permission) {\r\n return this.$moment(this.permission.startDate).format('DD.MM.YYYY');\r\n } \r\n return '';\r\n }\r\n\r\n get endDate() {\r\n if (this.permission && this.permission.endDate) {\r\n return this.$moment(this.permission.endDate).format('DD.MM.YYYY');\r\n } \r\n return '';\r\n }\r\n\r\n}\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TransportationPermissionListItem.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TransportationPermissionListItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TransportationPermissionListItem.vue?vue&type=template&id=6da108c7&\"\nimport script from \"./TransportationPermissionListItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./TransportationPermissionListItem.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAction } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\ninstallComponents(component, {VBtn,VDialog,VListItem,VListItemAction,VListItemContent,VListItemSubtitle,VListItemTitle})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 TransportationPermissionListItem from \"@/components/TransportationPermissionListItem.vue\";\r\nimport restService from \"@/services/restService\";\r\n\r\n@Component({\r\n components: {\r\n TransportationPermissionListItem,\r\n },\r\n})\r\nexport default class PassengerTransportationPermissions extends Vue {\r\n selectedPassenger: IPassenger | null = null;\r\n // passengerPermissions: IBookingQuotaWithPeriods[] = []\r\n dateWithoutTime: string = new Date().toISOString().substr(0, 10);\r\n\r\n selectedPermissionIndex: number = 0;\r\n currentStep: number = 1;\r\n\r\n @Watch(\"currentStep\")\r\n onCurrenStepChanged(newVal: number, oldVal: number) {\r\n if (newVal == null || newVal === oldVal || oldVal == null) {\r\n return;\r\n }\r\n this.$nextTick(() => {\r\n if(this.passengers.length > 1){\r\n const stepTitleRef = this.$refs.stepTitleRef as HTMLElement;\r\n if (stepTitleRef) {\r\n stepTitleRef.focus();\r\n }\r\n }\r\n });\r\n }\r\n\r\n get steps(): any[] {\r\n let steps = [\r\n { id: 1, title: this.$t(\"transportationPermission.selectPassenger\") },\r\n ];\r\n \r\n steps = steps.concat([\r\n {\r\n id: 2,\r\n title: this.selectedPassenger \r\n ? this.selectedPassenger.name\r\n : this.$t(\"transportationPermission.selectPassenger\") \r\n }\r\n ]);\r\n return steps;\r\n }\r\n \r\n\r\n get currentStepNumber(): number {\r\n return this.steps.findIndex((s) => s.id === this.currentStep) + 1;\r\n }\r\n\r\n get currentStepTitle(): string {\r\n let step = this.steps.find((s) => s.id === this.currentStep);\r\n return step ? step.title : \"TODO: StepTitleWhenNoStepFound\";\r\n }\r\n\r\n nextStep(stepNumber: number) {\r\n switch (stepNumber) {\r\n case 1: {\r\n if (this.passengers.length === 0) {\r\n return;\r\n }\r\n if (this.passengers.length === 1) {\r\n // skip the step forwards\r\n this.selectedPassenger = this.passengers[0];\r\n stepNumber++;\r\n }\r\n break;\r\n }\r\n case 2: {\r\n if (!this.selectedPassenger) {\r\n return;\r\n }\r\n break;\r\n }\r\n }\r\n this.currentStep = stepNumber;\r\n }\r\n\r\n prevStep(stepNumber: number) {\r\n switch (stepNumber) {\r\n case 2: {\r\n if (this.passengers.length === 1) {\r\n // skip the step backwards\r\n stepNumber--;\r\n }\r\n break;\r\n }\r\n }\r\n this.currentStep = stepNumber;\r\n }\r\n\r\n @Watch(\"selectedPassenger\")\r\n async passengerChanged() {\r\n if (this.selectedPassenger) {\r\n await this.$store.dispatch(\r\n \"quota/getPassengerTransportationPermissions\",\r\n this.selectedPassenger.id\r\n );\r\n // this.passengerPermissions = await restService.quotas.getWithPeriods(this.selectedPassenger.id);\r\n }\r\n }\r\n\r\n get passengerPermissions() {\r\n if (this.selectedPassenger) {\r\n return this.$store.getters[\"quota/permissionsForPassenger\"](\r\n this.selectedPassenger.id\r\n );\r\n }\r\n return [];\r\n }\r\n\r\n get passengers(): IPassenger[] {\r\n return this.$store.getters[\"passenger/passengers\"];\r\n }\r\n\r\n permissionSelected(permission: IBookingQuotaWithPeriods) {\r\n if (!this.selectedPassenger){\r\n return;\r\n }\r\n this.$router.push(\r\n {\r\n name: \"transportationPermission\",\r\n params: {\r\n passengerId: this.selectedPassenger.id.toString(),\r\n id: permission.id.toString()\r\n }\r\n }\r\n );\r\n }\r\n\r\n isObject(item: any) {\r\n return typeof item === \"object\";\r\n }\r\n\r\n reset() {\r\n this.currentStep = 1;\r\n }\r\n\r\n mounted() {\r\n // #5929 forbids programmatic focus on page change\r\n // (this.$refs.pageTitleRef as HTMLElement).focus();\r\n }\r\n\r\n created(){\r\n if (this.passengers.length === 1){\r\n this.selectedPassenger = this.passengers[0];\r\n this.nextStep(2);\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerTransportationPermissions.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerTransportationPermissions.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerTransportationPermissions.vue?vue&type=template&id=635cf11d&\"\nimport script from \"./PassengerTransportationPermissions.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerTransportationPermissions.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItemAvatar } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRadio } from 'vuetify/lib/components/VRadioGroup';\nimport { VRadioGroup } from 'vuetify/lib/components/VRadioGroup';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VStepper } from 'vuetify/lib/components/VStepper';\nimport { VStepperContent } from 'vuetify/lib/components/VStepper';\nimport { VStepperHeader } from 'vuetify/lib/components/VStepper';\nimport { VStepperItems } from 'vuetify/lib/components/VStepper';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardTitle,VCol,VContainer,VList,VListItemAvatar,VListItemContent,VListItemTitle,VRadio,VRadioGroup,VRow,VStepper,VStepperContent,VStepperHeader,VStepperItems})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"page\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-card',{staticClass:\"mb-12 elevation=0\"},[_c('v-card-title',{attrs:{\"primary-title\":\"\"}},[_c('div',[_c('h1',{ref:\"pageTitleRef\",staticClass:\"headline mb-0\",attrs:{\"id\":\"main-content\",\"tabindex\":\"-1\",\"role\":\"heading\"}},[_vm._v(_vm._s(_vm.$t('menu.passengers')))])])]),(_vm.claimPassengerSuccess)?_c('v-alert',{attrs:{\"color\":\"success\",\"dark\":\"\",\"aria-live\":\"polite\"}},[_vm._v(\" \"+_vm._s(_vm.claimPassengerSuccess)+\" \")]):_vm._e(),(_vm.passengers.length > 0)?_c('v-list',{staticClass:\"a11y-list\",attrs:{\"three-line\":\"\",\"tag\":\"ul\"}},_vm._l((_vm.passengers),function(passenger){return _c('PassengerListItem',{key:passenger.id,attrs:{\"passenger\":passenger},on:{\"editDialogClose\":_vm.onPassengerEditDialogClose}})}),1):_c('v-card-text',[_c('h4',{staticClass:\"subheadline\"},[_vm._v(_vm._s(_vm.$t('passenger.no_passengers')))]),_c('p',[_vm._v(_vm._s(_vm.$t('passenger.no_passengers_paragraph')))])]),_c('v-divider'),_c('v-card-actions',[_c('v-spacer'),_c('v-dialog',{attrs:{\"max-width\":\"500px\",\"retain-focus\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"large\":\"\",\"dark\":\"\",\"color\":\"primary\",\"title\":_vm.$t('general.button.add_passenger')}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"add\")]),_vm._v(\" \"+_vm._s(_vm.$t('general.button.add_passenger'))+\" \")],1)]}}]),model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-card-title',{staticClass:\"headline grey lighten-2\",attrs:{\"primary-title\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t('passenger.add_passenger'))+\" \"),_c('v-spacer')],1),_c('v-card-text',[_c('p',[_vm._v(_vm._s(_vm.$t('passenger.insert_token_long')))]),_c('v-text-field',{ref:\"tokenTextFieldRef\",attrs:{\"outlined\":\"\",\"aria-label\":_vm.$t('passenger.token_short')},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('passenger.token_short'))+\" \")])]},proxy:true}]),model:{value:(_vm.token),callback:function ($$v) {_vm.token=$$v},expression:\"token\"}}),(_vm.claimPassengerError)?_c('v-alert',{attrs:{\"color\":\"error\",\"dark\":\"\",\"aria-live\":\"assertive\"}},[_vm._v(\" \"+_vm._s(_vm.claimPassengerError)+\" \")]):_vm._e()],1),_c('v-card-actions',[_c('v-btn',{attrs:{\"large\":\"\"},on:{\"click\":function($event){_vm.dialog = false}}},[_vm._v(_vm._s(_vm.$t('general.button.cancel')))]),_c('v-spacer'),_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.claimPassenger}},[_vm._v(_vm._s(_vm.$t('general.button.save')))])],1)],1)],1)],1)],1),_c('v-alert',{attrs:{\"type\":\"success\",\"value\":_vm.lastSaveSuccess,\"aria-live\":\"polite\"}},[_vm._v(\" \"+_vm._s(_vm.$t('password.success'))+\" \")]),_c('v-alert',{attrs:{\"type\":\"error\",\"value\":_vm.lastSaveError,\"aria-live\":\"assertive\"}},[_vm._v(\" \"+_vm._s(_vm.$t('password.errors.genericSaveError'))+\" \")])],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('v-list-item',{key:_vm.passenger.name,attrs:{\"tag\":\"li\"}},[_c('v-list-item-avatar',{attrs:{\"color\":_vm.$randomColor(_vm.passenger.id),\"aria-hidden\":\"true\"}},[_c('span',{staticClass:\"white--text headline\"},[_vm._v(_vm._s(_vm.passenger.avatarText))])]),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.passenger.name))]),_c('v-list-item-subtitle',[(_vm.nextTrip)?[_vm._v(\" \"+_vm._s(_vm.$t(\"passenger.next_trip\"))+\" : \"+_vm._s(_vm._f(\"dateTime\")(_vm.nextTrip))+\" \")]:[_vm._v(\" \"+_vm._s(_vm.$t(\"passenger.no_upcoming_trips\"))+\" \")]],2)],1),_c('v-list-item-action',[_c('v-dialog',{attrs:{\"max-width\":\"500px\",\"retain-focus\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"dark\":\"\",\"color\":\"primary\",\"title\":_vm.$t('passenger.edit_passenger'),\"aria-label\":_vm.$t('passenger.edit_passenger') + ' ' + _vm.passenger.name}},'v-btn',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.edit_passenger\"))+\" \")])]}}]),model:{value:(_vm.editPassengerDialog),callback:function ($$v) {_vm.editPassengerDialog=$$v},expression:\"editPassengerDialog\"}},[_c('PassengerEdit',{attrs:{\"passenger\":_vm.passenger,\"dialogOpen\":_vm.editPassengerDialog},on:{\"close\":_vm.onClosePassengerDialog}})],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.editedPassenger)?_c('v-card',[_c('v-card-title',[_c('v-list-item-avatar',{attrs:{\"color\":_vm.$randomColor(_vm.editedPassenger.id),\"aria-hidden\":\"true\"}},[_c('span',{staticClass:\"white--text headline\"},[_vm._v(_vm._s(_vm.editedPassenger.avatarText))])]),_c('h3',{staticClass:\"headline mb-0 d-inline text-truncate\"},[_vm._v(\" \"+_vm._s(_vm.editedPassenger.name)+\" \")])],1),_c('v-card-text',[_c('v-form',{model:{value:(_vm.passengerFormValid),callback:function ($$v) {_vm.passengerFormValid=$$v},expression:\"passengerFormValid\"}},[_c('div',{staticClass:\"subtitle-1 mb-3\"},[_vm._v(_vm._s(_vm.$t(\"passenger.edit_passenger\")))]),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-text-field',{attrs:{\"rules\":_vm.passengerInitalRules,\"aria-label\":_vm.$t('passenger.initials'),\"outlined\":\"\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('passenger.initials'))+\" \")])]},proxy:true}],null,false,2725684563),model:{value:(_vm.editedPassenger.avatarText),callback:function ($$v) {_vm.$set(_vm.editedPassenger, \"avatarText\", $$v)},expression:\"editedPassenger.avatarText\"}})],1)],1)],1)],1),_c('v-card-actions',[_c('v-btn',{attrs:{\"large\":\"\"},on:{\"click\":function($event){return _vm.closePassengerDialog(false, false)}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.cancel\"))+\" \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"primary\",\"dark\":\"\",\"disabled\":!_vm.passengerFormValid},on:{\"click\":function($event){return _vm.savePassenger()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.save\"))+\" \")])],1)],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\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport restService from \"@/services/restService\";\r\n\r\n@Component({\r\n name: \"PassengerEdit\"\r\n})\r\nexport default class PassengerEdit extends Vue {\r\n @Prop({ required: true })\r\n passenger!: IPassenger;\r\n\r\n @Watch(\"passenger\", { immediate: true })\r\n passengerChanged(newVal: IPassenger, oldVal: IPassenger) {\r\n if (newVal) {\r\n this.editedPassenger = JSON.parse(JSON.stringify(newVal));\r\n }\r\n }\r\n\r\n @Prop({ required: true, default: false })\r\n dialogOpen!: boolean;\r\n @Watch(\"dialogOpen\", { immediate: true })\r\n dialogOpenChanged(newVal: boolean, oldVal: boolean) {\r\n if (newVal) {\r\n this.editedPassenger = JSON.parse(JSON.stringify(this.passenger));\r\n } else {\r\n this.editedPassenger = null;\r\n }\r\n }\r\n\r\n passengerFormValid: boolean = true;\r\n passengerInitalRules = [(v: string) => this.intialLengthRule(v)];\r\n editedPassenger: any = null;\r\n colors = [\r\n \"#D32F2F\",\r\n \"#C2185B\",\r\n \"#7B1FA2\",\r\n \"#512DA8\",\r\n \"#303F9F\",\r\n \"#1976D2\",\r\n \"#0288D1\",\r\n \"#0097A7\",\r\n \"#00796B\",\r\n \"#388E3C\",\r\n \"#689F38\",\r\n \"#AFB42B\",\r\n \"#FBC02D\",\r\n \"#FFA000\",\r\n \"#F57C00\",\r\n \"#E64A19\",\r\n \"#5D4037\",\r\n \"#616161\",\r\n \"#455A64\",\r\n ];\r\n\r\n dialog = false;\r\n\r\n token: string = \"\";\r\n\r\n get passengers(): IPassenger[] {\r\n return this.$store.getters[\"passenger/passengers\"];\r\n }\r\n\r\n intialLengthRule(v: string) {\r\n return (\r\n (v && v.length > 0 && v.length < 3) ||\r\n this.$t(\"error.length_between_one_and_two\")\r\n );\r\n }\r\n\r\n closePassengerDialog(saveSuccess: boolean, saveError: boolean) {\r\n this.$emit(\"close\", { saveSuccess, saveError });\r\n }\r\n\r\n async savePassenger() {\r\n let saveSuccess = false;\r\n let saveError = false;\r\n // Only call save if data has changed\r\n try {\r\n if (this.passenger.avatarText !== this.editedPassenger.avatarText) {\r\n await this.$store.dispatch(\r\n \"passenger/updatePassenger\",\r\n this.editedPassenger\r\n ); \r\n }\r\n saveSuccess = true;\r\n saveError = false;\r\n } catch (error) {\r\n saveSuccess = false;\r\n saveError = true;\r\n }\r\n this.closePassengerDialog(saveSuccess, saveError);\r\n }\r\n\r\n mounted() {\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerEdit.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerEdit.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerEdit.vue?vue&type=template&id=2ebd9be6&\"\nimport script from \"./PassengerEdit.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerEdit.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VListItemAvatar } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VForm,VListItemAvatar,VRow,VSpacer,VTextField})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 PassengerEdit from \"./PassengerEdit.vue\";\r\n\r\n@Component({\r\n components: {\r\n PassengerEdit,\r\n },\r\n})\r\nexport default class PassengerListItem extends Vue {\r\n @Prop({ default: null }) passenger!: IPassenger;\r\n\r\n editPassengerDialog: boolean = false;\r\n\r\n editPassenger(passenger: IPassenger) {\r\n // workaround for screen readers to retain focus\r\n // unfortunate side effect is that we have a zillion dialog instances laying around\r\n this.editPassengerDialog = true;\r\n // this.$router.push('/passengers/' + passenger.id);\r\n }\r\n\r\n get nextTrip() {\r\n const nextTrip = this.$store.getters[\"trip/nextTripForPassenger\"](\r\n this.passenger\r\n );\r\n if (nextTrip) {\r\n return nextTrip.startDateTime || nextTrip.endDateTime;\r\n }\r\n }\r\n onClosePassengerDialog(result: {saveSuccess: boolean, saveError: boolean}) {\r\n this.editPassengerDialog = false;\r\n this.$emit(\"editDialogClose\", 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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerListItem.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PassengerListItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PassengerListItem.vue?vue&type=template&id=79b225ec&\"\nimport script from \"./PassengerListItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./PassengerListItem.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAction } from 'vuetify/lib/components/VList';\nimport { VListItemAvatar } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\ninstallComponents(component, {VBtn,VDialog,VListItem,VListItemAction,VListItemAvatar,VListItemContent,VListItemSubtitle,VListItemTitle})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 restService from '@/services/restService';\r\nimport PassengerListItem from '@/components/PassengerListItem.vue';\r\nimport { INotice } from '@/store/notice-store';\r\n\r\n@Component({\r\n components: {\r\n PassengerListItem\r\n }\r\n})\r\nexport default class Passengers extends Vue {\r\n dialog = false;\r\n @Watch(\"dialog\")\r\n dialogChanged(val: boolean, oldVal: boolean){\r\n this.claimPassengerError = null;\r\n if (val){\r\n this.claimPassengerSuccess = null;\r\n }\r\n }\r\n token: string = '';\r\n lastSaveSuccess: boolean = false;\r\n lastSaveError: boolean = false;\r\n\r\n onPassengerEditDialogClose(result: {saveSuccess: boolean, saveError: boolean}) {\r\n this.lastSaveSuccess = result.saveSuccess && !result.saveError;\r\n this.lastSaveError = result.saveError && !result.saveSuccess;\r\n }\r\n\r\n get passengers(): IPassenger[] {\r\n return this.$store.getters['passenger/passengers'];\r\n }\r\n\r\n nextTrip(passenger: IPassenger) {\r\n const nextTrip = this.$store.getters['trip/nextTripForPassenger'](\r\n passenger,\r\n );\r\n if (nextTrip) {\r\n return nextTrip.startDateTime || nextTrip.endDateTime;\r\n }\r\n }\r\n\r\n claimPassengerError: string | null = null;\r\n claimPassengerSuccess: string | null = null;\r\n\r\n async claimPassenger() {\r\n this.claimPassengerError = null;\r\n try {\r\n if (!this.token || this.token.length < 2) {\r\n throw {status: 400, data: {message: \"Koodi ei kelpaa\"}};\r\n }\r\n await this.$store.dispatch('passenger/claimPassenger', this.token);\r\n this.token = '';\r\n this.dialog = false;\r\n this.claimPassengerSuccess = this.$t(\"passenger.success_passenger_added\").toString();\r\n } catch (error) {\r\n this.claimPassengerError = this.$t(\"passenger.error_invalid_token\").toString();\r\n (this.$refs[\"tokenTextFieldRef\"] as any).focus();\r\n }\r\n }\r\n\r\n mounted() {\r\n // #5929 forbids programmatic focus on page change\r\n // (this.$refs.pageTitleRef as HTMLElement).focus();\r\n this.claimPassengerError = null;\r\n this.claimPassengerSuccess = 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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Passengers.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Passengers.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Passengers.vue?vue&type=template&id=5a4c1e0e&\"\nimport script from \"./Passengers.vue?vue&type=script&lang=ts&\"\nexport * from \"./Passengers.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VContainer,VDialog,VDivider,VIcon,VList,VRow,VSpacer,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"page\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-card',{staticClass:\"mb-12 elevation=0\"},[_c('v-card-title',{attrs:{\"primary-title\":\"\"}},[_c('div',[_c('h1',{ref:\"pageTitleRef\",staticClass:\"headline mb-0\",attrs:{\"id\":\"main-content\",\"tabindex\":\"-1\"}},[_vm._v(_vm._s(_vm.title))])])]),_c('v-card-text',[(_vm.done)?_c('div',[_c('v-alert',{attrs:{\"type\":\"success\",\"aria-live\":\"polite\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"password.passwordChanged\"))+\" \")])],1):_vm._e(),(!_vm.done)?_c('v-form',{ref:\"form\",model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[(!_vm.userHasPassword)?_c('v-text-field',{ref:\"userNameRef\",attrs:{\"rules\":_vm.usernameRules,\"aria-label\":_vm.$t('password.userName'),\"aria-required\":\"true\",\"persistent-placeholder\":\"\",\"aria-invalid\":!_vm.userNameIsValid},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('password.userName'))+\"* \")])]},proxy:true}],null,false,3431880919),model:{value:(_vm.userName),callback:function ($$v) {_vm.userName=$$v},expression:\"userName\"}}):_vm._e(),(_vm.userHasPassword && !_vm.userIdentityVerified)?_c('v-text-field',{ref:\"currentPasswordRef\",staticClass:\"mt-2\",attrs:{\"id\":\"current-password\",\"type\":'password',\"rules\":_vm.currentPasswordRules,\"aria-label\":_vm.$t('password.currentPassword'),\"aria-required\":\"true\",\"autocomplete\":\"current-password\",\"persistent-placeholder\":\"\",\"aria-invalid\":!_vm.currentPasswordIsValid},on:{\"input\":_vm.onCurrentPasswordFieldInput},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('password.currentPassword'))+\"* \")])]},proxy:true}],null,false,2564217047),model:{value:(_vm.currentPassword),callback:function ($$v) {_vm.currentPassword=$$v},expression:\"currentPassword\"}}):_vm._e(),_c('v-text-field',{ref:\"newPasswordRef\",staticClass:\"mt-4\",attrs:{\"id\":\"new-password\",\"rules\":_vm.newPasswordRules,\"type\":_vm.showPasswords ? 'text' : 'password',\"aria-label\":_vm.$t('password.newPassword') + ' ' + _vm.$t('general.validation.atLeastChars', [_vm.minPasswordLength]),\"aria-required\":\"true\",\"hint\":_vm.$t('general.validation.atLeastChars', [_vm.minPasswordLength]),\"name\":\"input-new-password\",\"autocomplete\":\"new-password\",\"persistent-placeholder\":\"\",\"counter\":\"\",\"aria-invalid\":!_vm.newPasswordIsValid},on:{\"input\":_vm.onNewPasswordFieldInput},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('password.newPassword'))+\"* \")])]},proxy:true},{key:\"append\",fn:function(){return [_c('v-btn',{attrs:{\"icon\":\"\",\"aria-label\":_vm.showPasswords ? _vm.$t('password.hidePassword'): _vm.$t('password.showPassword')},on:{\"click\":function($event){_vm.showPasswords =! _vm.showPasswords}}},[_c('v-icon',[_vm._v(_vm._s(_vm.showPasswords ? 'visibility_off' : 'visibility'))])],1)]},proxy:true}],null,false,4029488509),model:{value:(_vm.newPassword),callback:function ($$v) {_vm.newPassword=$$v},expression:\"newPassword\"}}),_c('v-text-field',{ref:\"confirmPasswordRef\",staticClass:\"mt-4\",attrs:{\"id\":\"confirm-new-password\",\"append-icon\":_vm.showPasswords ? 'visibility' : 'visibility_off',\"rules\":_vm.confirmPasswordRules,\"type\":_vm.showPasswords ? 'text' : 'password',\"aria-label\":_vm.$t('password.confirmPassword'),\"aria-required\":\"true\",\"hint\":_vm.$t('general.validation.atLeastChars', [_vm.minPasswordLength]),\"name\":\"input-confirm-password\",\"autocomplete\":\"new-password\",\"persistent-placeholder\":\"\",\"counter\":\"\",\"aria-invalid\":!_vm.confirmPasswordIsValid},on:{\"input\":_vm.onNewPasswordConfirmationFieldInput},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('password.confirmPassword'))+\"* \")])]},proxy:true},{key:\"append\",fn:function(){return [_c('v-btn',{attrs:{\"icon\":\"\",\"aria-label\":_vm.showPasswords ? _vm.$t('password.hidePassword'): _vm.$t('password.showPassword')},on:{\"click\":function($event){_vm.showPasswords =! _vm.showPasswords}}},[_c('v-icon',[_vm._v(_vm._s(_vm.showPasswords ? 'visibility_off' : 'visibility'))])],1)]},proxy:true}],null,false,2316031091),model:{value:(_vm.confirmPassword),callback:function ($$v) {_vm.confirmPassword=$$v},expression:\"confirmPassword\"}})],1):_vm._e()],1),_c('v-card-actions',[(!_vm.done)?_c('v-btn',{attrs:{\"large\":\"\",\"color\":\"primary\",\"loading\":_vm.loading,\"disabled\":!_vm.valid || _vm.loading},on:{\"click\":function($event){return _vm.saveChanges()}}},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]):_vm._e(),_c('v-btn',{attrs:{\"large\":\"\",\"disabled\":_vm.loading},on:{\"click\":function($event){return _vm.goBack()}}},[_vm._v(\" \"+_vm._s(_vm.$t('general.button.back'))+\" \")])],1)],1),_c('v-alert',{attrs:{\"type\":\"error\",\"value\":_vm.saveErrors.length > 0,\"aria-live\":\"assertive\"}},_vm._l((_vm.saveErrors),function(saveError){return _c('div',{key:saveError},[_vm._v(\" \"+_vm._s(saveError)+\" \")])}),0)],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 { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport { TranslateResult } from 'vue-i18n';\r\n\r\n@Component\r\nexport default class Password extends Vue {\r\n\r\n minPasswordLength = 12;\r\n\r\n userName: string = '';\r\n currentPassword: string = '';\r\n newPassword: string = '';\r\n confirmPassword: string = '';\r\n showPasswords = false;\r\n\r\n valid = true;\r\n loading = false;\r\n done = false;\r\n\r\n existingUsernames: string[] = [];\r\n serverErrors: { \r\n currentPassword: string,\r\n password: string | TranslateResult, \r\n userName: string \r\n } = { \r\n currentPassword: '',\r\n password: '', \r\n userName: '' \r\n };\r\n\r\n saveErrors: Array = [];\r\n\r\n\r\n get userNameIsValid(): boolean{\r\n return this.$refs.userNameRef \r\n ? (this.$refs.userNameRef as any).valid\r\n : false;\r\n }\r\n\r\n get currentPasswordIsValid(): boolean {\r\n return this.$refs.currentPasswordRef\r\n ? (this.$refs.currentPasswordRef as any).valid\r\n : false;\r\n }\r\n\r\n get newPasswordIsValid(): boolean {\r\n return this.$refs.newPasswordRef\r\n ? (this.$refs.newPasswordRef as any).valid\r\n : false;\r\n }\r\n\r\n get confirmPasswordIsValid(): boolean {\r\n return this.$refs.confirmPasswordRef\r\n ? (this.$refs.confirmPasswordRef as any).valid\r\n : false;\r\n }\r\n\r\n get userHasPassword() {\r\n return this.$store.getters['app/userHasPassword'];\r\n }\r\n\r\n get userIdentityVerified() {\r\n return this.$store.getters['app/userIdentityVerified'];\r\n }\r\n\r\n get title() {\r\n if (this.userHasPassword) {\r\n return this.$t('password.changeTitle');\r\n } else {\r\n return this.$t('password.createTitle');\r\n }\r\n }\r\n\r\n get locale() {\r\n return this.$store.state.app.locale;\r\n }\r\n\r\n get usernameRules() {\r\n return [this.minUsername, this.maxUsername, this.uniqueName, this.serverUserName];\r\n }\r\n\r\n get currentPasswordRules() {\r\n return [this.requiredField, this.serverCurrentPassword];\r\n }\r\n\r\n get newPasswordRules() {\r\n return [this.requiredField, this.minPassword, this.serverPassword];\r\n }\r\n\r\n get confirmPasswordRules() {\r\n return [this.requiredField, this.passwordsMatch];\r\n }\r\n\r\n async saveChanges() {\r\n this.saveErrors = [];\r\n try {\r\n this.loading = true;\r\n await this.$store.dispatch(\r\n this.userHasPassword ? 'app/changePassword' : 'app/updateLogin' , \r\n {\r\n username: this.userName, \r\n currentPassword: this.currentPassword, \r\n password: this.newPassword\r\n }\r\n );\r\n this.done = true;\r\n } catch (error) {\r\n // TODO: Strong type error\r\n switch ((error as any).status)\r\n {\r\n case 400:\r\n const data: IValidationError = (error as any).data;\r\n this.serverErrors.currentPassword = data.errors.filter(e => e.property === 'currentPassword').map(e => e.error).join('');\r\n this.serverErrors.userName = data.errors.filter(e => e.property === 'userName').map(e => e.error).join('');\r\n this.serverErrors.password = data.errors.filter(e => e.property === 'password').map(e => e.error)\r\n .map(errorText => {\r\n // Special handling for required number of unique characters\r\n const uniqueCharsValidationErrorStart = \"Passwords must use at least\";\r\n const uniqueCharsValidationErrorEnd = \" different characters.\";\r\n if (\r\n errorText.startsWith(uniqueCharsValidationErrorStart) && \r\n errorText.endsWith(uniqueCharsValidationErrorEnd)\r\n ){\r\n const numberOfUniqueCharsRequired = errorText.substring(\r\n uniqueCharsValidationErrorStart.length, \r\n errorText.lastIndexOf(uniqueCharsValidationErrorEnd)\r\n );\r\n errorText = this.$t(\"password.validation.passwordRequiresUniqueChars\", { numberOfUniqueCharsRequired }).toString();\r\n }\r\n\r\n // These come from authit\r\n if (errorText == `Passwords must have at least one non alphanumeric character.`) {\r\n errorText = this.$t(\"password.validation.passwordRequiresNonAlphaNumeric\").toString();\r\n }\r\n if (errorText == `Passwords must have at least one digit ('0'-'9').`) {\r\n errorText = this.$t(\"password.validation.passwordRequiresDigit\").toString();\r\n }\r\n if (errorText == `Passwords must have at least one uppercase ('A'-'Z').`) {\r\n errorText = this.$t(\"password.validation.passwordRequiresUppercase\").toString();\r\n }\r\n if (errorText == `Passwords must have at least one lowercase ('a'-'z').`) {\r\n errorText = this.$t(\"password.validation.passwordRequiresLowercase\").toString();\r\n }\r\n\r\n return errorText;\r\n })\r\n .join(' ');\r\n\r\n // Force-validate the form\r\n (this.$refs.form as any).validate();\r\n break;\r\n\r\n case 500:\r\n default:\r\n this.saveErrors.push(this.$t(\"password.errors.genericSaveError\"));\r\n break;\r\n }\r\n }\r\n this.loading = false;\r\n }\r\n\r\n goBack() {\r\n this.$router.go(-1);\r\n }\r\n\r\n a11yValidationIteration = 0;\r\n a11yValidationIterationString = \"\";\r\n\r\n onCurrentPasswordFieldInput(){\r\n this.serverErrors.currentPassword = '';\r\n }\r\n\r\n onNewPasswordFieldInput(){\r\n this.refreshA11yValidationPrompts();\r\n }\r\n\r\n onNewPasswordConfirmationFieldInput(){\r\n this.refreshA11yValidationPrompts();\r\n }\r\n\r\n refreshA11yValidationPrompts(){\r\n this.a11yValidationIteration++;\r\n this.a11yValidationIterationString = this.a11yValidationIteration % 2 === 0\r\n ? \"\"\r\n : \"​\"; // this looks like a space, but is an U+200B\r\n }\r\n\r\n minUsername(v: any) {\r\n const minChars = 4;\r\n return v.length >= minChars || this.$t('general.validation.atLeastChars', [minChars]);\r\n }\r\n maxUsername(value: string) {\r\n const maxChars = 256;\r\n return value.length <= maxChars || this.$t('general.validation.atMostChars', [maxChars]);\r\n }\r\n minPassword(v: any) {\r\n return v.length >= this.minPasswordLength || this.$t('general.validation.atLeastChars', [this.minPasswordLength]) + \" \" + this.a11yValidationIterationString;\r\n }\r\n requiredField(v: any) {\r\n return !!v || this.$t('password.validation.required') + \" \" + this.a11yValidationIterationString;\r\n }\r\n passwordsMatch(v: any) {\r\n return v === this.newPassword ? true : this.$t('password.validation.passwordMatch') + \" \" + this.a11yValidationIterationString;\r\n }\r\n uniqueName(v: any) {\r\n return this.existingUsernames.includes(v) ? this.$t('password.validation.userNameTaken') : true;\r\n }\r\n serverUserName(v: any) {\r\n return !this.serverErrors.userName || this.serverErrors.userName;\r\n }\r\n serverPassword(v: any) {\r\n return !this.serverErrors.password || this.serverErrors.password;\r\n }\r\n serverCurrentPassword(v: any) {\r\n return !this.serverErrors.currentPassword || this.$t('password.validation.currentPasswordIsNotValid');\r\n }\r\n\r\n @Watch('userName') onUserNameChange(val: any, oldVal: any) {\r\n this.serverErrors.userName = '';\r\n }\r\n @Watch('newPassword') onPasswordChange(val: any, oldVal: any) {\r\n this.serverErrors.password = '';\r\n }\r\n @Watch('locale') onLocaleChange(val: any) {\r\n if (this.$refs.form) {\r\n (this.$refs.form as any).validate();\r\n }\r\n }\r\n mounted() {\r\n // #5929 forbids programmatic focus on page change\r\n // (this.$refs.pageTitleRef as HTMLElement).focus();\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Password.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Password.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Password.vue?vue&type=template&id=2279713f&\"\nimport script from \"./Password.vue?vue&type=script&lang=ts&\"\nexport * from \"./Password.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VContainer,VForm,VIcon,VRow,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"page\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-card',[_c('v-card-title',{attrs:{\"primary-title\":\"\"}},[_c('h1',{ref:\"pageTitleRef\",staticClass:\"headline\",attrs:{\"id\":\"main-content\",\"tabindex\":\"-1\"}},[_vm._v(_vm._s(_vm.$t('menu.personal-info')))])]),_c('v-list',{attrs:{\"two-line\":\"\"}},[_c('v-list-item',[_c('v-list-item-content',[_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm.$t('personalinfo.name')))]),_c('v-list-item-title',[_vm._v(_vm._s(_vm._f(\"emptyField\")(_vm.name)))])],1)],1),_c('v-list-item',[_c('v-list-item-content',[(_vm.userHasPassword)?_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm.$t('personalinfo.username')))]):_vm._e(),_c('v-list-item-title',[_vm._v(_vm._s(_vm._f(\"emptyField\")(_vm.username)))])],1)],1),_c('v-list-item',[_c('v-list-item-content',[_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm.$t('personalinfo.phone')))]),_c('v-list-item-title',[_vm._v(_vm._s(_vm._f(\"emptyField\")(_vm.phone)))])],1)],1),_c('v-list-item',[_c('v-list-item-content',[_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm.$t('personalinfo.email')))]),_c('v-list-item-title',[_vm._v(_vm._s(_vm._f(\"emptyField\")(_vm.email)))])],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\n\n\r\nimport { Component, Vue } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class PersonalInfo extends Vue {\r\n\r\n get userHasPassword() {\r\n return this.$store.getters['app/userHasPassword'];\r\n }\r\n\r\n get name() {\r\n return this.$store.state.app.user.name;\r\n }\r\n\r\n get username() {\r\n return this.$store.state.app.user.userName;\r\n }\r\n\r\n get email() {\r\n return this.$store.state.app.user.email || '';\r\n }\r\n\r\n get phone() {\r\n return this.$store.state.app.user.phone || '';\r\n }\r\n mounted() {\r\n // #5929 forbids programmatic focus on page change\r\n // (this.$refs.pageTitleRef as HTMLElement).focus();\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PersonalInfo.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PersonalInfo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PersonalInfo.vue?vue&type=template&id=463619a6&\"\nimport script from \"./PersonalInfo.vue?vue&type=script&lang=ts&\"\nexport * from \"./PersonalInfo.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCard,VCardTitle,VCol,VContainer,VList,VListItem,VListItemContent,VListItemSubtitle,VListItemTitle,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"page\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-card',{attrs:{\"id\":\"main-content\",\"tabindex\":\"-1\"}},[_c('v-card-text',{staticStyle:{\"display\":\"none\"}},[_c('h1',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$t(\"menu.privacy_policy\")))])]),_c('v-card-text',[_c('h1',{staticClass:\"card-title\",staticStyle:{\"line-height\":\"2rem\"}},[_vm._v(_vm._s(_vm.$t(\"privacy.title\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"privacy.updated\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"privacy.summary1\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"privacy.summary2\")))]),_c('h2',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter1.title\")))]),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t(\"privacy.chapter1.company\"))),_c('br'),_vm._v(\" \"+_vm._s(_vm.$t(\"privacy.chapter1.address\"))),_c('br'),_vm._v(\" \"+_vm._s(_vm.$t(\"privacy.chapter1.contact\"))+\" tuki(a)movit.fi \")]),_c('h2',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter2.title\")))]),_c('p',[_c('strong',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter2.sub1\")))])]),_c('p',[_c('strong',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter2.data1.name\")))]),_c('br'),_vm._v(\" \"+_vm._s(_vm.$t(\"privacy.chapter2.data1.description\"))+\" \")]),_c('p',[_c('strong',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter2.data2.name\")))]),_c('br'),_vm._v(\" \"+_vm._s(_vm.$t(\"privacy.chapter2.data2.description\"))+\" \")]),_c('p',[_c('strong',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter2.data3.name\")))]),_c('br'),_vm._v(\" \"+_vm._s(_vm.$t(\"privacy.chapter2.data3.description\"))+\" \")]),_c('p',[_c('strong',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter2.data4.name\")))]),_c('br'),_vm._v(\" \"+_vm._s(_vm.$t(\"privacy.chapter2.data4.description\"))+\" \")]),_c('p',[_c('strong',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter2.sub2\")))])]),_c('p',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter2.sub2text\")))]),_c('p',[_c('strong',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter2.sub3\")))])]),_c('p',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter2.sub3text\")))]),_c('h2',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter3.title\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter3.usage\")))]),_c('ul',{staticStyle:{\"margin-bottom\":\"16px\"}},[_c('li',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter3.usage1\")))]),_c('li',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter3.usage2\")))])]),_c('h2',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter4.title\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter4.paragraph1\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter4.paragraph2\")))]),_c('h2',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter5.title\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter5.paragraph1\")))]),_c('h2',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter6.title\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter6.paragraph1\")))]),_c('h2',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter7.title\")))]),_c('ol',{attrs:{\"type\":\"a\"}},[_c('li',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter7.item1\")))]),_c('li',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter7.item2\")))]),_c('li',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter7.item3\")))]),_c('li',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter7.item4\")))]),_c('li',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter7.item5\")))]),_c('li',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter7.item6\")))]),_c('li',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter7.item7\")))]),_c('li',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter7.item8\")))]),_c('li',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter7.item9\")))])]),_c('h2',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter8.title\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter8.paragraph1\")))]),_c('h2',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter9.title\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"privacy.chapter9.paragraph1\")))]),_c('div',[_vm._v(_vm._s(_vm.$t(\"privacy.disclaimer\")))])])],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\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\n\r\n@Component\r\nexport default class Privacy extends Vue {}\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Privacy.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Privacy.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Privacy.vue?vue&type=template&id=318e1fa4&scoped=true&\"\nimport script from \"./Privacy.vue?vue&type=script&lang=ts&\"\nexport * from \"./Privacy.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Privacy.vue?vue&type=style&index=0&id=318e1fa4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"318e1fa4\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCard,VCardText,VCol,VContainer,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"page\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-card',{attrs:{\"id\":\"main-content\",\"tabindex\":\"-1\"}},[_c('v-card-text',{staticStyle:{\"display\":\"none\"}},[_c('h1',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.$t(\"menu.privacy_policy\")))])]),_c('v-card-text',[_c('p',[_vm._v(_vm._s(_vm.$t(\"privacyKeusote.updated\")))]),_c('h2',[_vm._v(\"1. \"+_vm._s(_vm.$t(\"privacyKeusote.chapter1.title\")))]),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t(\"privacyKeusote.chapter1.company\"))),_c('br')]),_c('h2',[_vm._v(\"2. \"+_vm._s(_vm.$t(\"privacyKeusote.chapter2.title\")))]),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t(\"privacyKeusote.chapter2.data1\"))+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t(\"privacyKeusote.chapter2.data2\"))+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t(\"privacyKeusote.chapter2.data3\"))+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t(\"privacyKeusote.chapter2.data4\"))+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t(\"privacyKeusote.chapter2.data5\"))+\" \")]),_c('h2',[_vm._v(\"3. \"+_vm._s(_vm.$t(\"privacyKeusote.chapter3.title\")))]),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t(\"privacyKeusote.chapter3.company\"))),_c('br'),_vm._v(\" \"+_vm._s(_vm.$t(\"privacyKeusote.chapter3.address\"))),_c('br'),_vm._v(\" \"+_vm._s(_vm.$t(\"privacyKeusote.chapter3.postalcodeAndCity\"))),_c('br'),_c('a',{attrs:{\"href\":\"mailto:kirjaamo.hva@keusote.fi\"}},[_vm._v(\" kirjaamo.hva@keusote.fi \")])]),_c('h2',[_vm._v(\"4. \"+_vm._s(_vm.$t(\"privacyKeusote.chapter4.title\"))+\"!\")]),_c('a',{attrs:{\"href\":\"mailto:mari.patronen@keusote.fi\"}},[_vm._v(\" mari.patronen@keusote.fi \")]),_c('h2',[_vm._v(\"5. \"+_vm._s(_vm.$t(\"privacyKeusote.chapter5.title\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"privacyKeusote.chapter5.paragraph1\")))]),_c('h2',[_vm._v(\"6. \"+_vm._s(_vm.$t(\"privacyKeusote.chapter6.title\")))]),_c('a',{attrs:{\"href\":\"mailto:tietosuojavastaava@keusote.fi\"}},[_vm._v(\" tietosuojavastaava@keusote.fi \")]),_c('h2',[_vm._v(\"7. \"+_vm._s(_vm.$t(\"privacyKeusote.chapter7.title\")))]),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"input-value\":\"1\",\"label\":\"Kyllä\"}}),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"label\":\"Ei\"}}),_c('h2',[_vm._v(\"8. \"+_vm._s(_vm.$t(\"privacyKeusote.chapter8.title\")))]),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"label\":_vm.$t('privacyKeusote.chapter8.checkbox1')}}),_c('strong',[_vm._v(_vm._s(_vm.$t(\"privacyKeusote.chapter8.paragraph2\"))+\":\")]),_c('ul',[_c('li',[_vm._v(_vm._s(_vm.$t(\"privacyKeusote.chapter8.listItem1\")))]),_c('li',[_vm._v(_vm._s(_vm.$t(\"privacyKeusote.chapter8.listItem2\")))]),_c('li',[_vm._v(_vm._s(_vm.$t(\"privacyKeusote.chapter8.listItem3\")))]),_c('li',[_vm._v(_vm._s(_vm.$t(\"privacyKeusote.chapter8.listItem4\")))])]),_c('strong',[_vm._v(_vm._s(_vm.$t(\"privacyKeusote.chapter8.paragraph3\"))+\":\")]),_c('ul',[_c('li',[_vm._v(\" \"+_vm._s(_vm.$t(\"privacyKeusote.chapter8.listItem5\"))+\" \")]),_c('li',[_c('a',{attrs:{\"href\":\"https://stm.fi/sotepalvelut/lainsaadanto\"}},[_vm._v(\"https://stm.fi/sotepalvelut/lainsaadanto\")])])]),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"label\":_vm.$t('privacyKeusote.chapter8.checkbox2')}}),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"label\":_vm.$t('privacyKeusote.chapter8.checkbox3')}}),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"label\":_vm.$t('privacyKeusote.chapter8.checkbox4')}}),_c('p',[_c('strong',[_vm._v(\" \"+_vm._s(_vm.$t(\"privacyKeusote.chapter8.paragraph4\"))+\" \")])]),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"label\":\"Kyllä\"}}),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"input-value\":\"1\",\"label\":\"Ei\"}}),_c('h2',[_vm._v(\"9. \"+_vm._s(_vm.$t(\"privacyKeusote.chapter9.title\")))]),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"input-value\":\"1\",\"label\":\"nimi\"}}),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"input-value\":\"1\",\"disabled\":true,\"label\":\"henkilötunnus\"}}),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"input-value\":\"1\",\"label\":\"osoite / muu yhteysosoite\"}}),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"input-value\":\"1\",\"label\":\"sähköpostiosoite\"}}),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"label\":\"asiointikieli\"}}),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"input-value\":\"1\",\"label\":\"Yksilölliset sosiaalihuoltolain ja vammaispalvelulain mukaiset kuljetuspalvelupäätökset\"}}),_c('h2',[_vm._v(\"10. \"+_vm._s(_vm.$t(\"privacyKeusote.chapter10.title\")))]),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"input-value\":\"1\",\"label\":\"Ei\"}}),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"label\":\"Kyllä\"}}),_c('h2',[_vm._v(\"11. \"+_vm._s(_vm.$t(\"privacyKeusote.chapter11.title\")))]),_c('ul',[_c('li',[_vm._v(\"asiakas itse tai hänen laillinen edustajansa\")]),_c('li',[_vm._v(\"lapsen huoltajat tai lapsen lailliset edustajat\")]),_c('li',[_vm._v(\"asiakkaalle tehty palvelu-/kuljetuspäätös\")])]),_c('h2',[_vm._v(\"12. \"+_vm._s(_vm.$t(\"privacyKeusote.chapter12.title\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"privacyKeusote.chapter12.paragraph1\")))]),_c('h2',[_vm._v(\"13. \"+_vm._s(_vm.$t(\"privacyKeusote.chapter13.title\")))]),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"input-value\":\"1\",\"label\":\"Ei\"}}),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"label\":\"Kyllä\"}}),_c('p',[_c('strong',[_vm._v(_vm._s(_vm.$t(\"privacyKeusote.chapter13.paragraph1\")))]),_vm._v(\": \"+_vm._s(_vm.$t(\"privacyKeusote.chapter13.paragraph2\")))]),_c('p',[_c('strong',[_vm._v(_vm._s(_vm.$t(\"privacyKeusote.chapter13.paragraph3\")))]),_vm._v(\": \"+_vm._s(_vm.$t(\"privacyKeusote.chapter13.paragraph4\")))]),_c('h2',[_vm._v(\"14. \"+_vm._s(_vm.$t(\"privacyKeusote.chapter14.title\")))]),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"input-value\":\"1\",\"label\":\"Ei\"}}),_c('v-checkbox',{staticClass:\"a11y-checkbox mr-6\",attrs:{\"disabled\":true,\"label\":\"Kyllä\"}}),_c('h2',[_vm._v(\"15. \"+_vm._s(_vm.$t(\"privacyKeusote.chapter15.title\")))]),_c('p',[_vm._v(_vm._s(_vm.$t(\"privacyKeusote.chapter15.paragraph1\")))]),_c('h2',[_vm._v(\"16. \"+_vm._s(_vm.$t(\"privacyKeusote.chapter16.title\")))]),_c('p',[_c('a',{attrs:{\"href\":\"https://www.keusote.fi/etusivu/meilla-asiakkaana/tietosuoja/henkilotietoihin-liittyvat-oikeudet-ja-niiden-toteuttaminen/\"}},[_vm._v(\" https://www.keusote.fi/etusivu/meilla-asiakkaana/tietosuoja/henkilotietoihin-liittyvat-oikeudet-ja-niiden-toteuttaminen/ \")])])],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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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\n\r\n@Component\r\nexport default class PrivacyKeusote extends Vue {}\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PrivacyKeusote.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PrivacyKeusote.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PrivacyKeusote.vue?vue&type=template&id=db69680a&scoped=true&\"\nimport script from \"./PrivacyKeusote.vue?vue&type=script&lang=ts&\"\nexport * from \"./PrivacyKeusote.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PrivacyKeusote.vue?vue&type=style&index=0&id=db69680a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"db69680a\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCard,VCardText,VCheckbox,VCol,VContainer,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"page\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[(_vm.loading)?_c('v-card',[_c('v-card-text',{staticClass:\"text-xs-center\"},[_c('v-progress-circular',{attrs:{\"size\":70,\"width\":7,\"color\":\"primary\",\"indeterminate\":\"\"}}),_c('p',{staticClass:\"body-2 mt-3\"},[_vm._v(_vm._s(_vm.$t('general.loading'))+\"...\")])],1)],1):_c('v-card',{attrs:{\"id\":\"main-content\",\"tabindex\":\"-1\"}},[_c('v-card-title',{attrs:{\"primary-title\":\"\"}},[_c('h1',{staticClass:\"headline\"},[_vm._v(\" \"+_vm._s(_vm.$t('travelCard.title'))+\" \")])]),_c('v-card-text',[_c('v-form',[_c('v-col',[_c('v-col',[_c('v-row',[_c('v-text-field',{attrs:{\"aria-label\":_vm.$t('personalinfo.name'),\"aria-required\":\"true\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('personalinfo.name'))+\"* \")])]},proxy:true}]),model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}})],1),_c('v-row',[_c('v-text-field',{attrs:{\"aria-label\":_vm.$t('travelCard.cardNumber'),\"aria-required\":\"true\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('travelCard.cardNumber'))+\"* \")])]},proxy:true}]),model:{value:(_vm.cardNumber),callback:function ($$v) {_vm.cardNumber=$$v},expression:\"cardNumber\"}})],1)],1),_c('v-col',{staticClass:\"pl-0 pr-0\",attrs:{\"sm\":12}},[(_vm.notFound)?_c('v-alert',{attrs:{\"type\":\"error\",\"aria-live\":\"polite\",\"dismissible\":\"\",\"cols\":12,\"sm\":12}},[_vm._v(\" \"+_vm._s(_vm.$t('travelCard.notFoundErrorText'))+\" \")]):_vm._e(),(_vm.failed)?_c('v-alert',{attrs:{\"type\":\"error\",\"aria-live\":\"polite\",\"dismissible\":\"\",\"cols\":12,\"sm\":12}},[_vm._v(\" \"+_vm._s(_vm.$t('travelCard.registrationFailed'))+\" \")]):_vm._e(),(_vm.isInvited)?_c('v-alert',{attrs:{\"type\":\"success\",\"cols\":12,\"sm\":12,\"aria-live\":\"polite\"}},[_vm._v(\" \"+_vm._s(_vm.$t('travelCard.registrationSuccess'))+\" \"),(_vm.isAuthenticated)?_c('span',[_vm._v(\" \"+_vm._s(_vm.$t('travelCard.registrationSuccessAuthenticated'))+\" \")]):_vm._e(),(!_vm.isAuthenticated)?_c('span',[_vm._v(\" \"+_vm._s(_vm.$t('travelCard.registrationSuccessNotAuthenticated'))+\" \")]):_vm._e()]):_vm._e()],1),(!_vm.invitation)?_c('v-col',[_c('v-row',{attrs:{\"sm\":12}},[_c('v-btn',{attrs:{\"color\":\"primary\",\"disabled\":!_vm.name || !_vm.cardNumber},on:{\"click\":function($event){return _vm.sendRegistration()}}},[_vm._v(\" \"+_vm._s(_vm.$t('general.button.send'))+\" \")]),_c('v-spacer'),_c('v-btn',{on:{\"click\":function($event){return _vm.$router.go(-1)}}},[_vm._v(\" \"+_vm._s(_vm.$t('general.button.back'))+\" \")])],1)],1):_vm._e(),(_vm.invitation && _vm.isAuthenticated)?_c('v-col',[_c('v-row',{attrs:{\"sm\":12}},[_c('v-btn',{staticClass:\"mt-5\",attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.acceptAsCurrentUser()}}},[_vm._v(\" \"+_vm._s(_vm.$t('travelCard.registerToCurrentUser'))+\" \")]),_c('v-spacer'),_c('v-btn',{staticClass:\"mt-5\",on:{\"click\":function($event){return _vm.acceptAndLogOut()}}},[_vm._v(\" \"+_vm._s(_vm.$t('travelCard.registerToNewUser'))+\" \")])],1)],1):_vm._e(),(_vm.invitation && !_vm.isAuthenticated)?_c('v-col',[_c('v-row',{attrs:{\"sm\":12}}),_c('v-row',{attrs:{\"sm\":12}},[_c('v-btn',{on:{\"click\":function($event){return _vm.acceptAndLogOut()}}},[_vm._v(\" \"+_vm._s(_vm.$t('general.button.continue'))+\" \")])],1)],1):_vm._e()],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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 restService from '../services/restService';\r\n@Component({\r\n components: {\r\n\r\n },\r\n})\r\nexport default class RegisterTravelCard extends Vue {\r\n loading: boolean = false;\r\n notFound: boolean = false;\r\n failed: boolean = false;\r\n name: string = '';\r\n cardNumber: string = '';\r\n invitation: IUserInvitation | null = null;\r\n\r\n get isInvited() {\r\n return this.invitation ? true : false;\r\n }\r\n\r\n get isAuthenticated() {\r\n return this.$store.getters['auth/isAuthenticated'];\r\n }\r\n\r\n async sendRegistration() {\r\n this.loading = true;\r\n this.notFound = false;\r\n this.failed = false;\r\n\r\n try {\r\n this.invitation = await restService.auth.registerTravelCard(this.cardNumber, this.name);\r\n } catch (error) {\r\n this.invitation = null;\r\n // TODO: Strong type error\r\n if ((error as any).status === 404) {\r\n this.notFound = true;\r\n } else {\r\n this.failed = true;\r\n }\r\n } finally {\r\n this.loading = false;\r\n }\r\n }\r\n\r\n async acceptAsCurrentUser() {\r\n if (this.invitation && this.isAuthenticated) {\r\n try {\r\n await this.$store.dispatch('passenger/acceptInvitation', this.invitation);\r\n this.$router.push('/passengers');\r\n } catch (error) {\r\n // TODO: Strong type error\r\n if ((error as any).status === 404) {\r\n this.$store.commit('app/error', this.$t('invitation.not_found').toString());\r\n }\r\n }\r\n }\r\n }\r\n\r\n async acceptAndLogOut() {\r\n if (this.invitation) {\r\n if (this.isAuthenticated) {\r\n window.location.href = '/logoutandacceptinvite?code=' + this.invitation.code + '&locale=' + this.$i18n.locale;\r\n } else {\r\n window.location.href = '/acceptinvite?code=' + this.invitation.code + '&locale=' + this.$i18n.locale;\r\n }\r\n }\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegisterTravelCard.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegisterTravelCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RegisterTravelCard.vue?vue&type=template&id=e90025da&\"\nimport script from \"./RegisterTravelCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./RegisterTravelCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardText,VCardTitle,VCol,VContainer,VForm,VProgressCircular,VRow,VSpacer,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"page\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-card',[_c('v-card-title',{attrs:{\"primary-title\":\"\"}},[_c('div',[_c('h1',{ref:\"pageTitleRef\",staticClass:\"headline mb-0\",attrs:{\"id\":\"main-content\",\"tabindex\":\"-1\",\"role\":\"heading\",\"aria-live\":\"polite\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"menu.trips\"))+\" \"+_vm._s(_vm.dateTitle)),_c('span',{staticStyle:{\"opacity\":\"0\",\"font-size\":\"0\"}},[_vm._v(\", \"+_vm._s(_vm.$tc(\"trips.found_n_trips\", _vm.trips.length)))])])]),_c('v-spacer'),_c('input',{ref:\"chooseDateInputRef\",staticStyle:{\"opacity\":\"0\"},attrs:{\"type\":\"date\",\"aria-hidden\":\"true\",\"tabindex\":\"-1\",\"max\":_vm.maxDate,\"min\":_vm.minDate,\"locale\":_vm.locale},domProps:{\"value\":_vm.date},on:{\"change\":function (e) { return (_vm.date = e.target.value); }}}),_c('v-btn',{staticClass:\"a11y-large-rect-button\",attrs:{\"icon\":\"\",\"title\":_vm.$t('trips.choose_date')},on:{\"click\":function () {if (_vm.$refs.chooseDateInputRef) { _vm.$refs.chooseDateInputRef.showPicker()}}}},[_c('v-icon',[_vm._v(\"$far-fa-calendar-alt\")])],1)],1),_c('v-app-bar',{staticClass:\"elevation-0\",staticStyle:{\"z-index\":\"4\"},attrs:{\"dense\":\"\"}},[(_vm.hasPrevDay)?_c('v-btn',{staticClass:\"a11y-medium-wide-rect-button\",attrs:{\"icon\":\"\",\"title\":_vm.$t('general.button.show_trips') + ', ' + _vm.$t('general.button.prevDay') + ', ' + _vm.prevDateTitle},on:{\"click\":function($event){return _vm.showPrevDay()}}},[_c('v-icon',[_vm._v(\"arrow_back\")])],1):_vm._e(),_c('v-layout',{attrs:{\"row\":\"\",\"justify-center\":\"\",\"align-center\":\"\"}}),_c('v-menu',{ref:\"filterMenuRef\",attrs:{\"attach\":\"#filterMenuAnchor\",\"offset-y\":\"\",\"bottom\":\"\",\"left\":\"\",\"close-on-content-click\":true,\"internal-activator\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [(_vm.passengers.length > 1)?_c('v-btn',_vm._b({staticClass:\"a11y-medium-wide-rect-button\",attrs:{\"title\":_vm.$t('trips.select_passenger'),\"icon\":!_vm.filter,\"data-menu\":\"filterMenuRef\",\"fab\":!!_vm.filter,\"small\":!!_vm.filter,\"color\":_vm.filter ? _vm.$randomColor(_vm.filter.id) : 'none'},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }return _vm.menuTabPressed.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return on.keydown.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }return on.keydown.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }return on.keydown.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return on.keydown.apply(null, arguments)}],\"click\":on.click}},'v-btn',attrs,false),[(!_vm.filter)?_c('v-icon',[_vm._v(\"filter_list\")]):_vm._e(),(_vm.filter)?_c('span',{staticClass:\"white--text text-capitalize\",attrs:{\"aria-label\":_vm.filter.name}},[_vm._v(_vm._s(_vm.filter.avatarText))]):_vm._e()],1):_vm._e()]}}])},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){return _vm.clearPassengerFilter()}}},[_c('v-list-item-avatar',{attrs:{\"color\":\"primary\",\"aria-hidden\":\"true\"}},[_c('v-icon',{staticClass:\"white--text\"},[_vm._v(\"list\")])],1),_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(\"general.all\")))])],1),_vm._l((_vm.passengers),function(item){return _c('v-list-item',{key:item.id,on:{\"click\":function($event){return _vm.filterPassenger(item)}}},[_c('v-list-item-avatar',{attrs:{\"color\":_vm.$randomColor(item.id),\"aria-hidden\":\"true\"}},[_c('span',{staticClass:\"white--text\"},[_vm._v(_vm._s(item.avatarText))])]),_c('v-list-item-title',[_vm._v(_vm._s(item.name))])],1)})],2)],1),_c('div',{attrs:{\"id\":\"filterMenuAnchor\"}}),(_vm.hasNextDay)?_c('v-btn',{staticClass:\"a11y-medium-wide-rect-button\",attrs:{\"icon\":\"\",\"title\":_vm.$t('general.button.show_trips') + ', ' + _vm.$t('general.button.nextDay') + ', ' + _vm.nextDateTitle},on:{\"click\":function($event){return _vm.showNextDay()}}},[_c('v-icon',[_vm._v(\"arrow_forward\")])],1):_vm._e()],1),(_vm.trips.length === 0)?_c('div',{staticClass:\"text-center pb-4\"},[_c('h1',{staticClass:\"headline mt-6\"},[_vm._v(_vm._s(_vm.$t(\"trips.no_trips\")))]),(_vm.nextTripAt)?_c('p',{staticClass:\"pa-4\"},[_vm._v(_vm._s(_vm.$t(\"trips.next_trip\", { nextTripAt: _vm.nextTripAt })))]):_vm._e()]):_vm._e(),(_vm.trips.length > 0)?_c('v-list',{staticClass:\"a11y-list\",attrs:{\"three-line\":\"\",\"subheader\":\"\",\"role\":\"\"}},[_c('v-list-item-group',{attrs:{\"role\":\"\"}},_vm._l((_vm.trips),function(t){return _c('TripListItem',{key:t.id,attrs:{\"trip\":t},on:{\"click\":function($event){return _vm.openTripDialog(t)}}})}),1)],1):_vm._e()],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('v-list-item',{attrs:{\"role\":\"link\"},on:{\"click\":function($event){return _vm.$emit('click', _vm.trip)}}},[_c('v-list-item-avatar',{attrs:{\"color\":_vm.avatarColor,\"aria-hidden\":\"true\"}},[_c('span',{staticClass:\"white--text headline\"},[_vm._v(_vm._s(_vm.trip.passenger.avatarText))])]),_c('v-list-item-content',[_c('v-list-item-title',[_c('span',{staticClass:\"mr-2\"},[_vm._v(\" \"+_vm._s(_vm._f(\"time\")(_vm.trip.startDateTime))+\" \")]),_c('span',{staticClass:\"primary--text\"},[_vm._v(\" \"+_vm._s(_vm.trip.carName)+\" \")])]),_c('v-list-item-subtitle',{staticClass:\"list-item-subtitle-truncate\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"trips.start_place\"))+\": \"+_vm._s(_vm.startAddress)+\" \")]),_vm._l((_vm.trip.viaPoints),function(via,index){return _c('v-list-item-subtitle',{key:index,staticClass:\"text-no-truncate\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"trips.viaPoint\"))+\": \"+_vm._s(_vm.getViaPointAddress(via))+\" \"),(via.waitTime > 0)?_c('span',[_vm._v(\" \"+_vm._s(via.waitTime)+\" min \")]):_vm._e()])}),_c('v-list-item-subtitle',{staticClass:\"list-item-subtitle-truncate\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"trips.end_place\"))+\": \"+_vm._s(_vm.endAddress)+\" \")])],2),_c('v-list-item-action',[(_vm.trip.pickupTime && !_vm.trip.dropoffTime)?_c('v-chip',{attrs:{\"color\":\"success\"}},[_c('v-icon',{attrs:{\"small\":\"\",\"left\":\"\",\"color\":\"white\"}},[_vm._v(\"$fas-fa-check\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"trips.picked_up\"))+\" \")],1):_vm._e(),(_vm.trip.pickupTime && _vm.trip.dropoffTime)?_c('v-chip',{attrs:{\"color\":\"success\"}},[_c('v-icon',{attrs:{\"small\":\"\",\"left\":\"\",\"color\":\"white\"}},[_vm._v(\"$fas-fa-check-double\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"trips.dropped_off\"))+\" \")],1):_vm._e(),(_vm.trip.cancelledAt)?_c('v-chip',{attrs:{\"color\":\"error\"}},[_c('v-icon',{attrs:{\"small\":\"\",\"left\":\"\",\"color\":\"white\"}},[_vm._v(\"$fas-fa-ban\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"trips.cancelled\"))+\" \")],1):_vm._e(),(\n !_vm.trip.carName &&\n !_vm.trip.pickupTime &&\n !_vm.trip.dropoffTime &&\n !_vm.trip.cancelledAt\n )?_c('v-chip',{attrs:{\"color\":\"warning\"}},[_c('v-icon',{attrs:{\"small\":\"\",\"left\":\"\",\"color\":\"white\"}},[_vm._v(\"$fas-fa-clock\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"trips.waiting_for_car\"))+\" \")],1):_vm._e(),(_vm.trip.noShowTime)?_c('v-chip',{attrs:{\"color\":\"error\"}},[_c('v-icon',{attrs:{\"small\":\"\",\"left\":\"\",\"color\":\"white\"}},[_vm._v(\"$fas-fa-user-xmark\")]),_c('span',[_vm._v(_vm._s(_vm.$t(\"trips.no_show\")))])],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\r\nimport moment from \"moment\";\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\n\r\n@Component({\r\n name: \"TripListItem\"\r\n})\r\nexport default class TripListItem extends Vue {\r\n @Prop() trip!: ITrip;\r\n\r\n get avatarColor() {\r\n if (this.trip.cancelledAt) {\r\n return \"#444444\";\r\n } else {\r\n return this.$randomColor(this.trip.passenger.id);\r\n }\r\n }\r\n\r\n get startAddress() {\r\n if (this.trip.startAddress) {\r\n return [this.trip.startAddress.alias, this.trip.startAddress.address]\r\n .map((s) => (s || \"\").trim())\r\n .filter((s) => !!s)\r\n .join(\", \");\r\n }\r\n return this.trip.startPlace;\r\n }\r\n\r\n get endAddress() {\r\n if (this.trip.endAddress) {\r\n return [this.trip.endAddress.alias, this.trip.endAddress.address]\r\n .map((s) => (s || \"\").trim())\r\n .filter((s) => !!s)\r\n .join(\", \");\r\n }\r\n return this.trip.endPlace;\r\n }\r\n\r\n getViaPointAddress(via: IViaPoint) {\r\n return [via.viaPointAddress?.alias, via.viaPointAddress?.address]\r\n .map((s) => (s || \"\").trim())\r\n .filter((s) => !!s)\r\n .join(\", \");\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TripListItem.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TripListItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TripListItem.vue?vue&type=template&id=25ea3b2a&\"\nimport script from \"./TripListItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./TripListItem.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAction } from 'vuetify/lib/components/VList';\nimport { VListItemAvatar } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\ninstallComponents(component, {VChip,VIcon,VListItem,VListItemAction,VListItemAvatar,VListItemContent,VListItemSubtitle,VListItemTitle})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 moment from \"moment\";\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport TripListItem from \"@/components/TripListItem.vue\";\r\nimport MenuHelper from \"@/helpers/MenuHelper\";\r\n\r\n@Component({\r\n components: {\r\n TripListItem,\r\n },\r\n})\r\nexport default class Trips extends Vue {\r\n\r\n get useDateTypeInput(){\r\n return this.$store.getters['app/useDateTypeInput'];\r\n }\r\n\r\n get locale() {\r\n return this.$store.getters[\"app/locale\"];\r\n }\r\n\r\n get passengers(): IPassenger[] {\r\n return this.$store.getters[\"passenger/passengers\"];\r\n }\r\n\r\n get minDate() {\r\n return this.tripDates[0];\r\n // return new Date().toISODate();\r\n }\r\n\r\n get maxDate() {\r\n return this.tripDates[this.tripDates.length - 1];\r\n }\r\n\r\n get tripDates(): string[] {\r\n return this.$store.getters[\"trip/dates\"];\r\n }\r\n\r\n get nextTripAt() {\r\n console.log(\"nextTripAt\", \"this.date:\", this.date);\r\n const current = new Date(this.date);\r\n const nextTrips = this.tripDates.filter((d) => {\r\n return current.getTime() < new Date(d).getTime();\r\n });\r\n if (nextTrips.length > 0) {\r\n return this.displayDate(nextTrips[0]);\r\n }\r\n }\r\n\r\n get dateTitle() {\r\n return this.displayDate(this.date);\r\n }\r\n\r\n get prevDateTitle() {\r\n return moment(this.prevDay).format(\"dddd D. MMMM\");\r\n }\r\n\r\n get nextDateTitle() {\r\n return moment(this.nextDay).format(\"dddd D. MMMM\");\r\n }\r\n\r\n get trips() {\r\n return this.$store.getters[\"trip/trips\"](this.date, this.filter);\r\n }\r\n dateselectopen = false;\r\n date: string = new Date().toISOString().substring(0, 10);\r\n\r\n filter: IPassenger | null = null;\r\n\r\n menuTabPressed(event: any) {\r\n MenuHelper.menuTabPressed(event, this);\r\n }\r\n\r\n openTripDialog(trip: ITrip) {\r\n const date = (trip.startDateTime || trip.endDateTime).split(\"T\")[0];\r\n this.$router.push(\"/trips/\" + trip.id + \"/\" + date);\r\n }\r\n\r\n get currentDate() {\r\n return new Date(this.date);\r\n }\r\n\r\n get comingDates() {\r\n return this.tripDates\r\n .map((d) => new Date(d))\r\n .filter((d) => d.getTime() > this.currentDate.getTime());\r\n }\r\n\r\n get pastDates() {\r\n return this.tripDates\r\n .map((d) => new Date(d))\r\n .filter((d) => d.getTime() < this.currentDate.getTime());\r\n }\r\n\r\n get nextDay() {\r\n return this.comingDates[0] || this.currentDate;\r\n }\r\n\r\n get prevDay() {\r\n return this.pastDates.length === 0\r\n ? this.currentDate\r\n : this.pastDates[this.pastDates.length - 1];\r\n }\r\n\r\n get hasPrevDay(): boolean {\r\n return this.prevDay && this.prevDay !== this.currentDate;\r\n }\r\n\r\n get hasNextDay(): boolean {\r\n return this.nextTripAt ? true : false;\r\n }\r\n\r\n showNextDay() {\r\n this.date = this.nextDay.toISOString().substring(0, 10);\r\n }\r\n\r\n showPrevDay() {\r\n this.date = this.prevDay.toISOString().substring(0, 10);\r\n }\r\n\r\n filterPassenger(passenger: IPassenger) {\r\n this.filter = passenger;\r\n }\r\n\r\n clearPassengerFilter() {\r\n this.filter = null;\r\n }\r\n\r\n dateColor(date: string) {\r\n const trips = this.$store.getters[\"trip/trips\"](date, this.filter);\r\n const colors = trips\r\n .map((t: any) => this.$randomColor(t.passenger.id))\r\n .filter((v: any, i: number, a: any) => a.indexOf(v) === i);\r\n if (colors.length > 1) {\r\n return \"primary\";\r\n } else if (colors.length === 1) {\r\n return colors[0];\r\n }\r\n }\r\n\r\n mounted() {\r\n // #5929 forbids programmatic focus on page change\r\n // (this.$refs.pageTitleRef as HTMLElement).focus();\r\n }\r\n\r\n private displayDate(date: string): string {\r\n const title = moment(date).calendar(undefined, {\r\n lastDay: `[${this.$t(\"dates.yesterday\")}]`,\r\n sameDay: `[${this.$t(\"dates.today\")}]`,\r\n nextDay: `[${this.$t(\"dates.tomorrow\")}]`,\r\n lastWeek: \"dd D.M.YYYY\",\r\n nextWeek: \"dd D.M.YYYY\",\r\n sameElse: \"dd D.M.YYYY\",\r\n });\r\n return title.toLowerCase();\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Trips.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Trips.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Trips.vue?vue&type=template&id=151cf55e&\"\nimport script from \"./Trips.vue?vue&type=script&lang=ts&\"\nexport * from \"./Trips.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VLayout } from 'vuetify/lib/components/VGrid';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAvatar } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VAppBar,VBtn,VCard,VCardTitle,VCol,VContainer,VIcon,VLayout,VList,VListItem,VListItemAvatar,VListItemGroup,VListItemTitle,VMenu,VRow,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"page\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[(_vm.dialogTrip)?_c('v-card',[_c('v-card-title',{attrs:{\"primary-title\":\"\"}},[_c('v-col',{attrs:{\"cols\":12}},[_c('v-row',[_c('h1',{ref:\"pageTitleRef\",staticClass:\"headline mb-0\",attrs:{\"id\":\"main-content\",\"tabindex\":\"-1\",\"role\":\"heading\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"trips.trip\"))+\" \"+_vm._s(_vm._f(\"date\")(_vm.dialogTrip.startDateTime))+\" \")])])],1)],1),_c('v-list',[_c('v-list-item',[_c('v-list-item-avatar',{attrs:{\"color\":_vm.$randomColor(_vm.dialogTrip.passenger.id),\"aria-hidden\":\"true\"}},[_c('span',{staticClass:\"white--text headline\"},[_vm._v(_vm._s(_vm.dialogTrip.passenger.avatarText))])]),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.dialogTrip.passenger.name))])],1)],1)],1),(_vm.dialogTrip.cancelledAt)?_c('v-alert',{attrs:{\"value\":true,\"type\":\"error\",\"aria-live\":\"polite\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"trips.cancelled\"))+\" \"+_vm._s(_vm._f(\"dateTime\")(_vm.dialogTrip.cancelledAt))+\" \"),_c('p',[_vm._v(_vm._s(_vm.dialogTrip.cancelReason))])]):_vm._e(),_c('v-list',{attrs:{\"subheader\":\"\"}},[(_vm.dialogTrip.carName)?_c('v-list-item',[_c('v-list-item-action',[_c('v-icon',{attrs:{\"color\":\"primary\"}},[_vm._v(\"$fas-fa-taxi\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_c('span',[_vm._v(_vm._s(_vm.dialogTrip.carName))]),(_vm.dialogTrip.carRegisterNumber)?_c('span',[_vm._v(\" - \"+_vm._s(_vm.dialogTrip.carRegisterNumber))]):_vm._e()]),(_vm.dialogTrip.carPhoneNumber)?_c('v-list-item-subtitle',[_c('span',[_vm._v(_vm._s(_vm.$t(\"personalinfo.phone\"))+\": \")]),_c('a',{attrs:{\"href\":(\"tel:\" + (_vm.dialogTrip.carPhoneNumber))}},[_vm._v(_vm._s(_vm.dialogTrip.carPhoneNumber))])]):_vm._e(),(_vm.dialogTrip.driverName)?_c('v-list-item-subtitle',[_c('span',[_vm._v(_vm._s(_vm.$t(\"general.driver\"))+\": \")]),_c('span',[_vm._v(_vm._s(_vm.dialogTrip.driverName))])]):_vm._e()],1)],1):_vm._e(),(_vm.dialogTrip.deductible)?_c('v-list-item',[_c('v-list-item-action',[_c('v-icon',{attrs:{\"color\":\"primary\"}},[_vm._v(\"$fas-fa-euro\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t(\"trips.deductible\"))+\" \")]),_c('v-list-item-subtitle',[_vm._v(\" \"+_vm._s(_vm.dialogTrip.deductible)+\" € \")])],1)],1):_vm._e(),_c('v-list-item',[_c('v-list-item-action',[_c('v-icon',{attrs:{\"color\":\"green\"}},[_vm._v(\"$fas-fa-map-marker\")])],1),_c('v-list-item-content',[_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm.$t(\"trips.start_place\")))]),_c('v-list-item-title',[_c('strong',[_vm._v(_vm._s(_vm._f(\"time\")(_vm.dialogTrip.startDateTime)))]),_vm._v(\" \"+_vm._s(_vm.dialogTrip.startPlace)+\" \")])],1)],1),_vm._l((_vm.dialogTrip.viaPoints),function(via,index){return _c('v-list-item',{key:index},[_c('v-list-item-action',[_c('v-icon',{attrs:{\"color\":\"#FFCC00\"}},[_vm._v(\"$fas-fa-map-marker\")])],1),_c('v-list-item-content',[_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm.$t(\"booking.viaPoint.viaPoint\")))]),_c('v-list-item-title',[_c('strong',[_vm._v(_vm._s(_vm._f(\"time\")(via.time)))]),_vm._v(\" \"+_vm._s(via.viaPointPlace)+\" \"),(via.waitTime)?_c('div',[_vm._v(\" \"+_vm._s(_vm.$t(\"booking.viaPoint.waitTimeDur\", [via.waitTime]))+\" \")]):_vm._e()])],1)],1)}),_c('v-list-item',[_c('v-list-item-action',[_c('v-icon',{attrs:{\"color\":\"red\"}},[_vm._v(\"$fas-fa-map-marker\")])],1),_c('v-list-item-content',[_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm.$t(\"trips.end_place\")))]),_c('v-list-item-title',[_c('strong',[_vm._v(_vm._s(_vm._f(\"time\")(_vm.dialogTrip.endDateTime)))]),_vm._v(\" \"+_vm._s(_vm.dialogTrip.endPlace))])],1)],1),(_vm.dialogTrip.note)?_c('v-list-item',[_c('v-list-item-action',[_c('v-icon',{attrs:{\"color\":\"primary\"}},[_vm._v(\"$fas-fa-note-sticky\")])],1),_c('v-list-item-content',[_c('v-list-item-subtitle',[_vm._v(\" \"+_vm._s(_vm.$t(\"trips.note\"))+\" \")]),_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.dialogTrip.note)+\" \")])],1)],1):_vm._e()],2),(_vm.showTrackingStatus)?_c('trip-tracking-status',{attrs:{\"trip\":_vm.dialogTrip}}):_vm._e(),(_vm.showTripMap)?_c('trip-map',{attrs:{\"trip\":_vm.dialogTrip,\"carLocation\":_vm.carLocation}}):_vm._e(),_c('v-expansion-panels',{attrs:{\"elevation\":0}},[_c('v-divider'),(_vm.showReview)?_c('v-expansion-panel',[_c('v-expansion-panel-header',{attrs:{\"expand-icon\":\"$fas-fa-star\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"trips.review\"))+\" \")]),_c('v-expansion-panel-content',[_c('v-form',{ref:\"reviewform\",model:{value:(_vm.reviewformvalid),callback:function ($$v) {_vm.reviewformvalid=$$v},expression:\"reviewformvalid\"}},[_c('div',{staticClass:\"text-center\"},[_c('label',{staticClass:\"grey--text\",attrs:{\"readonly\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"trips.review_driver_stars\")))]),_c('v-rating',{key:\"driverStars\",attrs:{\"length\":_vm.maxStars,\"readonly\":_vm.isReviewDisabled,\"empty-icon\":\"$fas-fa-star\",\"background-color\":\"grey lighten-1\",\"icon-label\":_vm.$t('trips.review_driver_stars_star') + \n (\n _vm.experienceStars === 0 \n ? '' \n : _vm.$t('trips.review_stars_star_selected_suffix', _vm.driverStars, _vm.maxStars)\n )},model:{value:(_vm.driverStars),callback:function ($$v) {_vm.driverStars=$$v},expression:\"driverStars\"}}),_c('label',{staticClass:\"grey--text\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"trips.review_experience_stars\"))+\" \")]),_c('v-rating',{key:\"experienceStars\",attrs:{\"readonly\":_vm.isReviewDisabled,\"length\":_vm.maxStars,\"empty-icon\":\"$fas-fa-star\",\"background-color\":\"grey lighten-1\",\"icon-label\":_vm.$t('trips.review_experience_stars_star') + \n (\n _vm.experienceStars === 0 \n ? '' \n : _vm.$t('trips.review_stars_star_selected_suffix', _vm.experienceStars, _vm.maxStars)\n )},model:{value:(_vm.experienceStars),callback:function ($$v) {_vm.experienceStars=$$v},expression:\"experienceStars\"}})],1),(_vm.isReviewDisabled)?_c('div',[_vm._v(\" \"+_vm._s(_vm.reviewComment)+\" \")]):_c('v-textarea',{attrs:{\"outlined\":\"\",\"name\":\"reviewcomment\",\"readonly\":_vm.isReviewDisabled,\"persistent-placeholder\":\"\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"trips.review_comment\"))+\" \")])]},proxy:true}],null,false,820155150),model:{value:(_vm.reviewComment),callback:function ($$v) {_vm.reviewComment=$$v},expression:\"reviewComment\"}}),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{staticClass:\"white--text\",attrs:{\"loading\":_vm.reviewing,\"color\":\"warning\",\"depressed\":\"\",\"disabled\":_vm.isReviewDisabled},on:{\"click\":function($event){return _vm.reviewtrip()}}},[_vm._v(_vm._s(_vm.$t(\"trips.review_send\")))])],1)],1)],1)],1):_vm._e()],1),_c('v-card-actions',[_c('v-btn',{attrs:{\"large\":\"\"},on:{\"click\":function($event){return _vm.closeTripDialog()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.back\"))+\" \")]),_c('v-spacer'),(_vm.canBeCancelled)?_c('v-dialog',{attrs:{\"max-width\":\"500px\",\"retain-focus\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\n var attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"large\":\"\",\"dark\":\"\",\"text\":\"\",\"color\":\"warning\",\"title\":_vm.$t('trips.cancel_trip'),\"aria-label\":_vm.$t('trips.cancel_trip')}},'v-btn',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.$t(\"trips.cancel_trip\"))+\" \"),_c('v-icon',{staticClass:\"ml-2\"},[_vm._v(\"$fas-fa-trash\")])],1)]}}],null,false,57286593),model:{value:(_vm.cancelTripDialogOpen),callback:function ($$v) {_vm.cancelTripDialogOpen=$$v},expression:\"cancelTripDialogOpen\"}},[_c('v-card',[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.$t(\"trips.cancel_trip\"))+\" \")]),_c('v-card-text',[_c('v-form',{ref:\"cancelform\",model:{value:(_vm.cancelformvalid),callback:function ($$v) {_vm.cancelformvalid=$$v},expression:\"cancelformvalid\"}},[_c('v-textarea',{attrs:{\"outlined\":\"\",\"name\":\"cancelreason\",\"aria-label\":_vm.$t('trips.cancel_reason'),\"label\":_vm.$t('trips.cancel_reason') + '*',\"rules\":_vm.reasonRules,\"aria-required\":\"true\",\"persistent-placeholder\":\"\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\" \"+_vm._s(_vm.$t('trips.cancel_reason'))+\" \")])]},proxy:true}],null,false,1479432453),model:{value:(_vm.cancelReason),callback:function ($$v) {_vm.cancelReason=$$v},expression:\"cancelReason\"}})],1)],1),_c('v-card-actions',[_c('v-btn',{attrs:{\"large\":\"\"},on:{\"click\":function($event){_vm.cancelTripDialogOpen = false}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.close\"))+\" \")]),_c('v-spacer'),_c('v-btn',{staticClass:\"white--text\",attrs:{\"large\":\"\",\"color\":\"warning\",\"depressed\":\"\",\"disabled\":!_vm.cancelformvalid,\"loading\":_vm.cancelling},on:{\"click\":function($event){return _vm.canceltrip()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"trips.cancel_trip\"))+\" \")])],1)],1)],1):_vm._e()],1)],1):_c('v-card',[_c('v-card-title',{attrs:{\"primary-title\":\"\"}},[_c('div',[_c('h3',{staticClass:\"headline mb-0\"},[_vm._v(_vm._s(_vm.$t(\"trips.not_found\")))])])]),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{staticClass:\"white--text\",attrs:{\"large\":\"\",\"color\":\"primary\",\"depressed\":\"\"},on:{\"click\":function($event){return _vm.closeTripDialog()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"general.button.back\"))+\" \")])],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\r\nimport moment, { Moment } from 'moment';\r\nimport { Component, Vue, Prop } from 'vue-property-decorator';\r\n\r\nexport enum TripStatusCode {\r\n Unknown = 0,\r\n Booked = 1,\r\n Routed = 2,\r\n Dispatching = 3,\r\n Dispatched = 4,\r\n Cancelled = 5,\r\n\r\n EnRoute = 10,\r\n CarWaiting = 11,\r\n NoShow = 12,\r\n Pickup = 13,\r\n DropOff = 14,\r\n}\r\n\r\n@Component\r\nexport default class TripTrackingStatus extends Vue {\r\n // Enum usable by template\r\n tripStatusCode = TripStatusCode;\r\n creationTime: Moment | null = null;\r\n updateInterval: any;\r\n\r\n @Prop() private trip!: ITrip;\r\n\r\n created() {\r\n this.creationTime = moment();\r\n }\r\n\r\n get isTrackingTrip() {\r\n return this.$route.name === 'track';\r\n }\r\n\r\n get showTime() {\r\n switch (this.trip.status!.code) {\r\n case TripStatusCode.Cancelled:\r\n case TripStatusCode.NoShow:\r\n case TripStatusCode.DropOff:\r\n return false;\r\n default:\r\n return true;\r\n }\r\n }\r\n\r\n get showCancelled() {\r\n switch (this.trip.status!.code) {\r\n case TripStatusCode.Cancelled:\r\n case TripStatusCode.NoShow:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n get showCompleted() {\r\n return this.trip.status!.code === TripStatusCode.DropOff;\r\n }\r\n\r\n get statusColor() {\r\n switch (this.trip.status?.code) {\r\n case TripStatusCode.EnRoute:\r\n return 'orange';\r\n case TripStatusCode.Pickup:\r\n case TripStatusCode.DropOff:\r\n return 'green';\r\n case TripStatusCode.NoShow:\r\n case TripStatusCode.Cancelled:\r\n return 'red';\r\n default:\r\n return 'primary';\r\n }\r\n return 'primary';\r\n }\r\n\r\n get statusText() {\r\n if (this.trip && this.trip.status) {\r\n switch (this.trip.status.code) {\r\n case TripStatusCode.EnRoute:\r\n return 'tripStatus.en_route.status';\r\n case TripStatusCode.Pickup:\r\n return 'tripStatus.pickup.status';\r\n case TripStatusCode.DropOff:\r\n return 'tripStatus.dropoff.status';\r\n case TripStatusCode.Cancelled:\r\n return 'tripStatus.cancelled.status';\r\n case TripStatusCode.NoShow:\r\n return 'tripStatus.no_show.status';\r\n default:\r\n return 'tripStatus.unknown.status';\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n get estimationText() {\r\n switch (this.trip.status!.code) {\r\n case TripStatusCode.DropOff:\r\n return 'tripStatus.dropoff.text';\r\n case TripStatusCode.Cancelled:\r\n return this.trip.cancelReason || 'tripStatus.cancelled.text';\r\n case TripStatusCode.NoShow:\r\n return 'tripStatus.no_show.text';\r\n case TripStatusCode.Pickup:\r\n return 'tripStatus.pickup.text';\r\n default:\r\n return 'tripStatus.unknown.text';\r\n }\r\n }\r\n\r\n get estimatedEndTime() {\r\n const ata = moment(this.trip.status!.ata);\r\n if (ata.year() > 1) { return ata; }\r\n\r\n const eta = moment(this.trip.status!.eta);\r\n if (eta.year() > 1) { return eta; }\r\n\r\n const tripEndTime = moment(this.trip.endDateTime);\r\n return tripEndTime;\r\n }\r\n\r\n get estimatedMinutes() {\r\n const now = moment();\r\n let timeDiff = 0;\r\n if (this.trip.status!.code < TripStatusCode.Pickup) {\r\n timeDiff = this.estimatedStartTime.diff(now, 'm');\r\n } else {\r\n timeDiff = this.estimatedEndTime.diff(now, 'm');\r\n }\r\n return timeDiff > 0 ? timeDiff : 0;\r\n }\r\n\r\n get estimatedStartTime() {\r\n if (this.isTrackingTrip || !this.trip.status) {\r\n const startTime = moment(this.trip.startDateTime);\r\n const endTime = moment(this.trip.endDateTime);\r\n const timeDiff = moment(this.estimatedEndTime).diff(endTime, 'm');\r\n const adjustedStart = startTime.add(timeDiff, 'm');\r\n return adjustedStart;\r\n }\r\n const etd = moment(this.trip.status!.etd);\r\n if (etd.year() > 1) {\r\n return etd;\r\n }\r\n\r\n return moment(this.trip.startDateTime);\r\n }\r\n\r\n get timeProgress() {\r\n if (this.showCancelled || this.showCompleted) { return 100; }\r\n\r\n if (this.estimatedMinutes === 0) { return 95; }\r\n\r\n const now = moment();\r\n let totalMinutes = 0;\r\n if (this.trip.status!.code < TripStatusCode.Pickup) {\r\n totalMinutes = this.estimatedStartTime.diff(this.creationTime, 'm');\r\n } else if (this.trip.status!.code === TripStatusCode.Pickup) {\r\n totalMinutes = this.trip.pickupTime ?\r\n this.estimatedEndTime.diff(moment(this.trip.pickupTime), 'm')\r\n : this.estimatedEndTime.diff(this.estimatedStartTime, 'm');\r\n } else if (this.trip.status!.code < TripStatusCode.DropOff) {\r\n totalMinutes = this.estimatedEndTime.diff(this.estimatedStartTime, 'm');\r\n }\r\n\r\n const waitedMinutes = totalMinutes - this.estimatedMinutes;\r\n const timeProgress = ( waitedMinutes / totalMinutes ) * 100;\r\n\r\n return timeProgress < 10 ? 10 : Math.round(timeProgress);\r\n }\r\n\r\n get estimatedTime() {\r\n switch (this.trip.status!.code) {\r\n case TripStatusCode.DropOff:\r\n return moment(this.trip.status!.ata);\r\n case TripStatusCode.Cancelled:\r\n return '';\r\n case TripStatusCode.NoShow:\r\n return moment(this.trip.status!.ata);\r\n case TripStatusCode.Pickup:\r\n return this.estimatedEndTime;\r\n default:\r\n return this.estimatedStartTime;\r\n }\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('v-card',{staticClass:\"pa-4\",attrs:{\"flat\":\"\"}},[_c('div',{staticClass:\"d-flex flex-no-wrap\"},[_c('div',{staticClass:\"text-center\"},[_c('v-progress-circular',{attrs:{\"size\":\"100\",\"color\":_vm.statusColor,\"value\":_vm.timeProgress,\"aria-valuetext\":_vm.showTime \n ? _vm.$t('trips.aria_estimated_minutes', [_vm.estimatedMinutes])\n : _vm.showCancelled\n ? _vm.$t('tripStatus.cancelled.text')\n : _vm.showCompleted\n ? _vm.$t('tripStatus.dropoff.text')\n : '',\"rotate\":-90,\"width\":20}},[(_vm.showTime)?_c('div',[_c('div',{staticClass:\"text-h5\",staticStyle:{\"margin-bottom\":\"-10px\"}},[_vm._v(\" \"+_vm._s(_vm.estimatedMinutes)+\" \")]),_c('div',{staticClass:\"caption\"},[_vm._v(\" min \")])]):_vm._e(),(_vm.showCancelled)?_c('div',[_c('v-icon',{attrs:{\"color\":\"red\",\"x-large\":\"\"}},[_vm._v(\"$fas-fa-times\")])],1):_vm._e(),(_vm.showCompleted)?_c('div',[_c('v-icon',{attrs:{\"color\":\"success\",\"x-large\":\"\"}},[_vm._v(\"$fas-fa-check\")])],1):_vm._e()])],1),_c('br'),_c('div',{attrs:{\"aria-live\":\"polite\"}},[_c('v-card-title',{staticClass:\"text-h6\",attrs:{\"aria-description\":_vm.$t('tripStatus.aria_description')}},[_vm._v(\" \"+_vm._s(_vm.$t(_vm.statusText))+\" \")]),_c('v-card-text',{attrs:{\"aria-describedby\":\"estimationText\"}},[_c('span',{attrs:{\"id\":\"estimationText\"}},[_vm._v(\" \"+_vm._s(_vm.$t(_vm.estimationText))+\" \")]),(_vm.estimatedTime)?_c('strong',{attrs:{\"aria-description\":_vm.$t('trips.aria_estimated_minutes', [_vm.estimatedMinutes])}},[_vm._v(\" \"+_vm._s(_vm._f(\"time\")(_vm.estimatedTime))+\" \")]):_vm._e()])],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TripTrackingStatus.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TripTrackingStatus.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TripTrackingStatus.vue?vue&type=template&id=5f33c50b&\"\nimport script from \"./TripTrackingStatus.vue?vue&type=script&lang=ts&\"\nexport * from \"./TripTrackingStatus.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\ninstallComponents(component, {VCard,VCardText,VCardTitle,VIcon,VProgressCircular})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"mapRef\",attrs:{\"id\":\"map\",\"aria-hidden\":\"true\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { fromLonLat } from 'ol/proj';\r\n\r\nexport default class MapHelpers {\r\n public static getCoordinateFromAddress(address: IAddress) {\r\n if (address && address.lat && address.lng) {\r\n const latitude = typeof address.lat === 'string' ? parseFloat(address.lat) : address.lat;\r\n const longitude = typeof address.lng === 'string' ? parseFloat(address.lng) : address.lng;\r\n return fromLonLat([longitude, latitude]);\r\n }\r\n return null;\r\n }\r\n\r\n public static getCoordinateFromCarLocation(carLocation: ICarLocation) {\r\n if (carLocation) {\r\n return fromLonLat([carLocation.longitude, carLocation.latitude]);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Coordinate } from 'ol/coordinate';\r\nimport Feature from 'ol/Feature';\r\nimport { Point } from 'ol/geom';\r\nimport Style from 'ol/style/Style';\r\nimport Icon from 'ol/style/Icon';\r\n\r\nimport { faMapMarker as fasMapMarker } from '@fortawesome/free-solid-svg-icons';\r\nimport Stroke from 'ol/style/Stroke';\r\n\r\nexport default class PlaceMarkerFeature extends Feature {\r\n constructor(coordinates: Coordinate, markerType: EPlaceMarkerType, options?: any) {\r\n super(options);\r\n this.setGeometry(new Point(coordinates));\r\n \r\n const iconStyle = this.createIconStyle(markerType, 1, [0.5, 1]);\r\n iconStyle.setZIndex(1);\r\n const iconShadowStyle = this.createIconStyle('#333333', 0.75, [2.5, -3]);\r\n iconStyle.setZIndex(0);\r\n\r\n\r\n this.setStyle([iconShadowStyle, iconStyle]);\r\n }\r\n\r\n createIconStyle(color: string, opacity: number = 1.0, displacement: number[] = [0, 0], width: string = '27px', height: string = '36px') {\r\n const path = fasMapMarker.icon[4];\r\n const iconColor = color.replace('#', '%23');\r\n const strokeColor = '%23333333';\r\n const svgElement = \r\n ``\r\n +`` \r\n +``;\r\n\r\n const icon = new Icon({ src: 'data:image/svg+xml;utf8,' + svgElement, displacement});\r\n\r\n const style = new Style({ image: icon });\r\n\r\n return style;\r\n }\r\n}\r\n\r\nexport enum EPlaceMarkerType {\r\n Start = '#1f890e',\r\n ViaPoint = '#FFCC00',\r\n End = '#F44336',\r\n}\r\n","import { Geometry } from 'ol/geom';\r\nimport VectorLayer from 'ol/layer/Vector';\r\nimport VectorSource from 'ol/source/Vector';\r\nimport MapHelpers from './mapHelpers';\r\nimport PlaceMarkerFeature, { EPlaceMarkerType } from './placeMarkerFeature';\r\n\r\nexport default class PlaceLayer extends VectorLayer> {\r\n constructor(trip: ITrip, options: any = { className: 'mapPlaces' }) {\r\n super(options);\r\n\r\n let startFeature: PlaceMarkerFeature | null = null;\r\n const startCoordinates = MapHelpers.getCoordinateFromAddress(trip.startAddress);\r\n if (startCoordinates) {\r\n startFeature = new PlaceMarkerFeature(startCoordinates, EPlaceMarkerType.Start)\r\n startFeature.setId('startPlace');\r\n }\r\n\r\n let viaPointFeatures: PlaceMarkerFeature[] = [];\r\n if(trip.viaPoints.length > 0) {\r\n const viaPointCoordinates = trip.viaPoints.map(v => MapHelpers.getCoordinateFromAddress(v.viaPointAddress))\r\n .filter(a => a);\r\n\r\n viaPointFeatures = viaPointCoordinates.map((c, i) => {\r\n const placeMarker = new PlaceMarkerFeature(c!, EPlaceMarkerType.ViaPoint);\r\n placeMarker.setId('viaPoint' + i);\r\n return placeMarker;\r\n });\r\n }\r\n \r\n\r\n let endFeature: PlaceMarkerFeature | null = null;\r\n const endCoordinates = MapHelpers.getCoordinateFromAddress(trip.endAddress);\r\n if (endCoordinates) {\r\n endFeature = new PlaceMarkerFeature(endCoordinates, EPlaceMarkerType.End);\r\n endFeature.setId('endPlace')\r\n }\r\n\r\n const features: PlaceMarkerFeature[] = [];\r\n if(startFeature) {\r\n features.unshift(startFeature);\r\n }\r\n \r\n viaPointFeatures.forEach(v => features.push(v));\r\n\r\n if(endFeature) {\r\n features.push(endFeature);\r\n }\r\n\r\n this.setSource(new VectorSource({ features }));\r\n }\r\n}\r\n","import store from '@/store/store';\r\nimport ITheme from '@/themes/ITheme';\r\nimport { Feature } from 'ol';\r\nimport { Coordinate } from 'ol/coordinate';\r\nimport { Geometry, Point } from 'ol/geom';\r\nimport VectorLayer from 'ol/layer/Vector';\r\nimport VectorSource from 'ol/source/Vector';\r\nimport Fill from 'ol/style/Fill';\r\nimport Style from 'ol/style/Style';\r\nimport { faTaxi as fasTaxi } from '@fortawesome/free-solid-svg-icons';\r\nimport Icon from 'ol/style/Icon';\r\nimport Circle from 'ol/style/Circle';\r\n\r\nexport default class CarLayer extends VectorLayer> {\r\n constructor(carCoordinates: Coordinate, options: any = { className: 'mapCar' }) {\r\n super(options);\r\n\r\n const feature = new Feature({\r\n geometry: new Point(carCoordinates),\r\n style: this.getCarLayerStyles(),\r\n });\r\n\r\n feature.setId('carFeature');\r\n\r\n const features = [feature];\r\n this.setSource(new VectorSource({ features }));\r\n }\r\n\r\n public updateCoordinates(coordinates: Coordinate) {\r\n const feature = this.getSource()?.getFeatureById('carFeature');\r\n if (feature) {\r\n feature.setStyle(this.getCarLayerStyles());\r\n feature.setGeometry(this.getGeometry(coordinates));\r\n }\r\n }\r\n\r\n private getGeometry(coordinates: Coordinate) {\r\n return new Point(coordinates);\r\n }\r\n\r\n private getCarLayerStyles() {\r\n const theme: ITheme = store.getters['app/theme'];\r\n\r\n const carStyle = this.createIconStyle(theme.vuetifyTheme.bottomNavColor, 1, [0, 0]);\r\n carStyle.setZIndex(1);\r\n\r\n const circleStyle = new Style({ \r\n image: new Circle({ \r\n radius: 16, \r\n fill: new Fill({ \r\n color: theme.vuetifyTheme.primary \r\n }), \r\n }),\r\n });\r\n circleStyle.setZIndex(0);\r\n\r\n const shadowCircleStyle = new Style({\r\n image: new Circle({\r\n radius: 18,\r\n fill: new Fill({\r\n color: 'rgba(0, 0, 0, 0.75)',\r\n }),\r\n }),\r\n })\r\n\r\n return [shadowCircleStyle, circleStyle, carStyle];\r\n }\r\n \r\n\r\n createIconStyle(color: string, opacity: number = 1.0, displacement: number[] = [0, 0], width: string = '20px', height: string = '20px') {\r\n const path = fasTaxi.icon[4];\r\n const iconColor = color.replace('#', '%23');\r\n const svgElement = \r\n ``\r\n +`` \r\n +``;\r\n\r\n const icon = new Icon({ src: 'data:image/svg+xml;utf8,' + svgElement, displacement, anchorOrigin: 'bottom-right'});\r\n const style = new Style({ image: icon });\r\n return style;\r\n }\r\n\r\n}\r\n","\n\n\n\n\r\nimport { Component, Vue, Prop, Watch } from 'vue-property-decorator';\r\nimport 'ol/ol.css';\r\nimport Map from 'ol/Map';\r\nimport TileLayer from 'ol/layer/Tile';\r\nimport OSM from 'ol/source/OSM';\r\nimport View from 'ol/View';\r\nimport MapHelpers from './mapHelpers';\r\nimport PlaceLayer from './placeLayer';\r\nimport CarLayer from './carLayer';\r\nimport { extend } from 'ol/extent';\r\n\r\n@Component\r\nexport default class TripMap extends Vue {\r\n\r\n map: Map | null = null \r\n carLayer: CarLayer | null = null;\r\n // placeLayer: PlaceLayer | null = null;\r\n\r\n @Prop({ required: true }) trip!: ITrip;\r\n @Prop({ default: () => null }) carLocation!: ICarLocation | null;\r\n\r\n\r\n @Watch('carLocation', { immediate: true }) onCarLocationChanged() {\r\n if (!this.carLocation) {\r\n this.carLayer?.setVisible(false);\r\n return;\r\n }\r\n\r\n const coordinates = MapHelpers.getCoordinateFromCarLocation(this.carLocation);\r\n if (!coordinates) {\r\n return;\r\n }\r\n \r\n if (!this.carLayer) {\r\n this.carLayer = new CarLayer(coordinates);\r\n this.map?.addLayer(this.carLayer);\r\n\r\n const startPlaceExtent = this.placeLayer?.getSource()?.getFeatureById('startPlace')?.getGeometry()?.getExtent();\r\n const carExtent = this.carLayer.getSource()?.getFeatureById('carFeature')?.getGeometry()?.getExtent();\r\n\r\n if (startPlaceExtent && carExtent) {\r\n const combinedExtent = extend(startPlaceExtent, carExtent);\r\n this.map?.getView().fit(combinedExtent, { duration: 300, padding: [ 50, 50, 50, 50 ]});\r\n }\r\n } \r\n if (this.carLayer.getVisible() === false) {\r\n this.carLayer.setVisible(true);\r\n }\r\n\r\n this.carLayer.updateCoordinates(coordinates);\r\n \r\n }\r\n\r\n get center() {\r\n let coordinates = [0, 0];\r\n\r\n if (this.trip.startAddress) {\r\n const startCoordinates = MapHelpers.getCoordinateFromAddress(this.trip.startAddress);\r\n coordinates = startCoordinates ?? coordinates;\r\n } else if (this.trip.endAddress) {\r\n const endCoordinates = MapHelpers.getCoordinateFromAddress(this.trip.endAddress);\r\n coordinates = endCoordinates ?? coordinates;\r\n }\r\n\r\n return coordinates;\r\n }\r\n\r\n get placeLayer(): PlaceLayer | null {\r\n if (this.trip) {\r\n return new PlaceLayer(this.trip);\r\n }\r\n return null;\r\n }\r\n\r\n mounted() {\r\n const tileLayer = new TileLayer({ source: new OSM() }); \r\n const placeLayer = new PlaceLayer(this.trip);\r\n\r\n const layers = [ tileLayer, placeLayer ];\r\n \r\n if (this.carLayer) {\r\n layers.push(this.carLayer);\r\n }\r\n\r\n this.map = new Map({\r\n target: 'map',\r\n layers,\r\n view: new View({\r\n center: this.center,\r\n zoom: 15,\r\n maxZoom: 17,\r\n minZoom: 10,\r\n })\r\n });\r\n // Hide interactive elements inside map from screen readers (#5927)\r\n let mapElem = this.$refs.mapRef as HTMLElement;\r\n window.setTimeout(() => {\r\n const interactives = mapElem.querySelectorAll(\"button, a\");\r\n for(let interactive of interactives){\r\n interactive.setAttribute(\"tabindex\", \"-1\");\r\n }\r\n }, 200);\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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TripMap.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[0].rules[0].use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TripMap.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TripMap.vue?vue&type=template&id=2c700a79&scoped=true&\"\nimport script from \"./TripMap.vue?vue&type=script&lang=ts&\"\nexport * from \"./TripMap.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TripMap.vue?vue&type=style&index=0&id=2c700a79&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2c700a79\",\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport moment, { Moment } from \"moment-timezone\";\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport restService from \"../services/restService\";\r\nimport TripTrackingStatus, {\r\n TripStatusCode,\r\n} from \"@/components/TripTrackingStatus.vue\";\r\nimport ITheme from \"@/themes/ITheme\";\r\nimport Themes from \"@/themes\";\r\nimport TripMap from \"@/components/Map/TripMap.vue\";\r\n\r\n@Component({\r\n components: {\r\n TripMap,\r\n TripTrackingStatus,\r\n },\r\n async beforeRouteEnter(to, from, next) {\r\n // TODO: MAKE IT BETTER\r\n if (to.name === \"track\") {\r\n const trip = await restService.trips.tracked(to.params.link);\r\n const names = trip.passenger.name.split(\" \");\r\n const letters = names.filter((x) => x).map((n) => n[0].toUpperCase());\r\n letters.length = letters.length > 2 ? 2 : letters.length;\r\n trip.passenger.avatarText = `${letters.join(\"\")}`;\r\n // TODO: What's this, how can this be done with this.$randomColor(trip.passenger.id)?\r\n // trip.passenger.avatarColor = 'primary';\r\n next(async (instance: any) => {\r\n const trackingLink = {\r\n link: to.params.link,\r\n id: trip.id,\r\n date: trip.startDateTime.split(\"T\")[0],\r\n };\r\n instance.trackingLink = trackingLink;\r\n instance.$store.commit(\"trip/addOrReplaceTrip\", trip);\r\n });\r\n } else {\r\n // Normal trips enter without hacks\r\n next();\r\n }\r\n },\r\n async beforeRouteUpdate(to, from, next) {\r\n if (to.name === \"track\") {\r\n const trip = await restService.trips.tracked(to.params.link);\r\n const trackingLink = {\r\n link: to.params.link,\r\n id: trip.id,\r\n date: trip.startDateTime.split(\"T\")[0],\r\n };\r\n (this as any).trackingLink = trackingLink;\r\n this.$store.commit(\"trip/addOrReplaceTrip\", trip);\r\n }\r\n },\r\n})\r\nexport default class TripsEdit extends Vue {\r\n static readonly QUERY_CUTOFF_MINUTES = 30;\r\n static readonly QUERY_INCREASE_MINUTES = 15;\r\n static readonly QUERY_FAST_INTERVAL = 10 * 1000;\r\n static readonly QUERY_DEFAULT_INTERVAL = 60 * 1000;\r\n\r\n dialog = false;\r\n cancelReason: string = \"\";\r\n cancelling: boolean = false;\r\n reviewing: boolean = false;\r\n cancelformvalid: boolean = false;\r\n reviewformvalid: boolean = false;\r\n reviewComment: string = \"\";\r\n driverStars: number = 0;\r\n experienceStars: number = 0;\r\n reviewGiven: boolean = false;\r\n trackingLink: { link: string; id: number; date: string } | null = null;\r\n tripStatusCode = TripStatusCode;\r\n\r\n trackingInterval: any = null;\r\n trackingStartFastQueryTimeout: any;\r\n trackingEndFastQueryTimeout: any;\r\n\r\n statusInterval: any = null;\r\n statusStartFastQueryTimeout: any;\r\n statusEndFastQueryTimeout: any;\r\n\r\n tripCompletionInterval: any;\r\n tripIsCompleted: boolean = false;\r\n\r\n reasonRules: any[] = [this.notEmpty];\r\n\r\n cancelTripDialogOpen: boolean = false;\r\n\r\n notEmpty(value: any) {\r\n if (!value || /^\\s*$/.test(value)) {\r\n return this.$t(\"error.must_not_be_empty\");\r\n }\r\n return true;\r\n }\r\n\r\n get theme(): ITheme {\r\n return this.$store.getters[\"app/theme\"];\r\n }\r\n\r\n get showTrackingStatus() {\r\n const shouldQueryTrip =\r\n this.$route.name === \"track\" ||\r\n (this.dialogTrip && this.dialogTrip.allowEtaQuery);\r\n\r\n if (!shouldQueryTrip) {\r\n return false;\r\n }\r\n\r\n return (\r\n this.dialogTrip.status &&\r\n this.dialogTrip.status.code !== TripStatusCode.Unknown &&\r\n this.dialogTrip.status.code !== TripStatusCode.Cancelled\r\n );\r\n }\r\n\r\n get showTripMap() {\r\n if (!this.dialogTrip || !this.showTrackingStatus) {\r\n return false;\r\n }\r\n\r\n const addresses = [\r\n this.dialogTrip.startAddress,\r\n this.dialogTrip.endAddress,\r\n ];\r\n\r\n return addresses.some((a) => a.lat && a.lng);\r\n }\r\n\r\n get canBeCancelled(): boolean {\r\n // Currently tracked trips cannot be cancelled\r\n if (this.$route.name === \"track\") {\r\n return false;\r\n }\r\n\r\n const tomorrow = moment().startOf(\"day\");\r\n const tripDate = moment(\r\n this.dialogTrip.startDateTime || this.dialogTrip.endDateTime\r\n ).startOf(\"day\");\r\n if (tripDate < tomorrow) {\r\n return false;\r\n }\r\n\r\n if (\r\n this.dialogTrip &&\r\n this.dialogTrip.status &&\r\n this.isFinalTripStatus(this.dialogTrip.status.code)\r\n ) {\r\n return false;\r\n }\r\n\r\n const hasStarted = this.dialogTrip.pickupTime || this.dialogTrip.noShowTime;\r\n return !hasStarted && !this.dialogTrip.cancelledAt;\r\n }\r\n\r\n get showReview(): boolean {\r\n if (\r\n this.dialogTrip &&\r\n (this.dialogTrip.cancelledAt ||\r\n this.dialogTrip.noShowTime ||\r\n !this.dialogTrip.allowReview)\r\n ) {\r\n return false;\r\n }\r\n return this.tripIsCompleted;\r\n }\r\n\r\n get maxStars(): number {\r\n if (this.theme.id === Themes.themeKulkukeskus.id) {\r\n return 4;\r\n }\r\n return 5;\r\n }\r\n\r\n get isReviewDisabled() {\r\n return this.reviewGiven;\r\n }\r\n\r\n get dialogTrip(): ITrip {\r\n const id = this.trackingLink\r\n ? this.trackingLink.id\r\n : Number.parseInt(this.$route.params.id, 10);\r\n const date = this.trackingLink\r\n ? this.trackingLink.date\r\n : this.$route.params.date;\r\n const trip = this.$store.getters[\"trip/tripById\"](id, date);\r\n if (trip) {\r\n if (trip.reviews && trip.reviews.length > 0) {\r\n this.reviewComment = trip.reviews[0].comment;\r\n this.driverStars = trip.reviews[0].driverStars;\r\n this.experienceStars = trip.reviews[0].experienceStars;\r\n this.reviewGiven = true;\r\n }\r\n }\r\n return trip;\r\n }\r\n\r\n get carLocation(): ICarLocation | null {\r\n if (!this.dialogTrip || !this.dialogTrip.status) {\r\n return null;\r\n }\r\n return this.dialogTrip.status.carLocation || null;\r\n }\r\n\r\n @Watch(\"dialogTrip\", { immediate: true }) async onDialogTripChanged(\r\n newVal: any,\r\n oldVal: any\r\n ) {\r\n const isNew = oldVal === null || oldVal === undefined;\r\n if (\r\n this.dialogTrip &&\r\n this.dialogTrip.allowEtaQuery &&\r\n isNew &&\r\n !this.statusInterval\r\n ) {\r\n await this.updateTripStatus();\r\n }\r\n }\r\n\r\n closeTripDialog() {\r\n this.cancelling = false;\r\n this.cancelReason = \"\";\r\n this.$router.go(-1);\r\n }\r\n\r\n canceltrip() {\r\n this.cancelling = true;\r\n this.$store\r\n .dispatch(\"trip/cancelTrips\", {\r\n reason: this.cancelReason,\r\n trips: [this.dialogTrip],\r\n })\r\n .then(() => {\r\n this.cancelTripDialogOpen = false;\r\n this.closeTripDialog();\r\n });\r\n }\r\n\r\n reviewtrip() {\r\n this.reviewing = true;\r\n this.$store\r\n .dispatch(\"trip/reviewTrip\", {\r\n trip: this.dialogTrip,\r\n comment: this.reviewComment,\r\n driverStars: this.driverStars,\r\n experienceStars: this.experienceStars,\r\n })\r\n .then(() => {\r\n this.closeTripDialog();\r\n });\r\n }\r\n\r\n async updateTrackingTrip() {\r\n if (!this.trackingInterval) {\r\n this.setIntervalForTrackingUpdates();\r\n }\r\n\r\n const trip = await restService.trips.tracked(this.$route.params.link);\r\n\r\n if (!trip) {\r\n this.clearStatusIntervalsAndTimeouts();\r\n return;\r\n }\r\n\r\n const names = trip.passenger.name.split(\" \");\r\n const letters = names.filter((x) => x).map((n) => n[0].toUpperCase());\r\n letters.length = letters.length > 2 ? 2 : letters.length;\r\n trip.passenger.avatarText = `${letters.join(\"\")}`;\r\n // TODO: What's this, how can this be done with this.$randomColor(trip.passenger.id)?\r\n // trip.passenger.avatarColor = 'primary';\r\n this.trackingLink = {\r\n link: this.$route.params.link,\r\n id: trip.id,\r\n date: trip.startDateTime.split(\"T\")[0],\r\n };\r\n this.$store.commit(\"trip/addOrReplaceTrip\", trip);\r\n\r\n if (trip.status && this.isFinalTripStatus(trip.status.code)) {\r\n this.clearStatusIntervalsAndTimeouts();\r\n }\r\n }\r\n\r\n setIntervalForTrackingUpdates() {\r\n const diffToFastQueryStart = this.calculateDiffToFastQueryStart();\r\n const startingInterval =\r\n diffToFastQueryStart < 0\r\n ? TripsEdit.QUERY_FAST_INTERVAL\r\n : TripsEdit.QUERY_DEFAULT_INTERVAL;\r\n this.trackingInterval = setInterval(() => {\r\n this.updateTrackingTrip();\r\n }, startingInterval);\r\n\r\n // If time to set fast interval is in the future, set timeout to engage fast interval\r\n if (diffToFastQueryStart > 0) {\r\n this.trackingStartFastQueryTimeout = setTimeout(() => {\r\n clearInterval(this.trackingInterval);\r\n this.trackingInterval = setInterval(() => {\r\n this.updateTrackingTrip();\r\n }, TripsEdit.QUERY_FAST_INTERVAL);\r\n }, diffToFastQueryStart);\r\n }\r\n\r\n const diffToFastQueryEnd = this.calculateDiffToFastQueryEnd();\r\n\r\n // If time to end fast query interval is in the future, set timeout to set interval back to default\r\n if (diffToFastQueryEnd > 0) {\r\n this.trackingEndFastQueryTimeout = setTimeout(() => {\r\n clearInterval(this.trackingInterval);\r\n this.trackingInterval = setInterval(() => {\r\n this.updateTrackingTrip();\r\n }, TripsEdit.QUERY_DEFAULT_INTERVAL);\r\n }, diffToFastQueryEnd);\r\n }\r\n }\r\n\r\n async updateTripStatus() {\r\n if (!this.statusInterval) {\r\n this.setIntervalForStatusUpdates();\r\n }\r\n if (!this.dialogTrip.startDateTime) {\r\n return;\r\n }\r\n\r\n const now = moment();\r\n const startTime = moment(this.dialogTrip.startDateTime);\r\n const diffToStart = startTime.diff(now, \"m\");\r\n\r\n if (diffToStart > TripsEdit.QUERY_CUTOFF_MINUTES) {\r\n return;\r\n }\r\n\r\n const date = startTime.format(\"YYYY-MM-DD\");\r\n\r\n const request: ITripStatusRequest = {\r\n passengerId: this.dialogTrip.passenger.id,\r\n tripId: this.dialogTrip.id,\r\n date,\r\n };\r\n\r\n const trip = await restService.trips.withStatus(request);\r\n if (!trip) {\r\n this.clearStatusIntervalsAndTimeouts();\r\n return;\r\n }\r\n\r\n this.$store.commit(\"trip/addOrReplaceTrip\", trip);\r\n if (trip.status && this.isFinalTripStatus(trip.status.code)) {\r\n this.clearStatusIntervalsAndTimeouts();\r\n }\r\n }\r\n\r\n setIntervalForStatusUpdates() {\r\n const today = moment().date();\r\n\r\n if (moment(this.dialogTrip.startDateTime).date() < today) {\r\n return;\r\n }\r\n\r\n const diffToFastQueryStart = this.calculateDiffToFastQueryStart();\r\n\r\n const startingInterval =\r\n diffToFastQueryStart < 0\r\n ? TripsEdit.QUERY_FAST_INTERVAL\r\n : TripsEdit.QUERY_DEFAULT_INTERVAL;\r\n this.statusInterval = setInterval(() => {\r\n this.updateTripStatus();\r\n }, startingInterval);\r\n\r\n // If time to set fast interval is in the future, set timeout to engage fast interval\r\n if (diffToFastQueryStart > 0) {\r\n this.statusStartFastQueryTimeout = setTimeout(() => {\r\n clearInterval(this.statusInterval);\r\n this.statusInterval = setInterval(() => {\r\n this.updateTripStatus();\r\n }, TripsEdit.QUERY_FAST_INTERVAL);\r\n }, diffToFastQueryStart);\r\n }\r\n\r\n const diffToFastQueryEnd = this.calculateDiffToFastQueryEnd();\r\n\r\n // If time to end fast query interval is in the future, set timeout to set interval back to default\r\n if (diffToFastQueryEnd > 0) {\r\n this.statusEndFastQueryTimeout = setTimeout(() => {\r\n clearInterval(this.statusInterval);\r\n this.statusInterval = setInterval(() => {\r\n this.updateTripStatus();\r\n }, TripsEdit.QUERY_DEFAULT_INTERVAL);\r\n }, diffToFastQueryEnd);\r\n }\r\n }\r\n\r\n calculateDiffToFastQueryStart() {\r\n const now = moment();\r\n const startTime = moment(this.dialogTrip.startDateTime);\r\n const fastQueryStart = moment(startTime).subtract(\r\n TripsEdit.QUERY_INCREASE_MINUTES,\r\n \"m\"\r\n );\r\n return fastQueryStart.diff(now);\r\n }\r\n\r\n calculateDiffToFastQueryEnd() {\r\n const now = moment();\r\n const endTime = moment(this.dialogTrip.endDateTime);\r\n const fastQueryEnd = moment(endTime).add(\r\n TripsEdit.QUERY_INCREASE_MINUTES,\r\n \"m\"\r\n );\r\n return fastQueryEnd.diff(now);\r\n }\r\n\r\n clearStatusIntervalsAndTimeouts() {\r\n if (this.trackingInterval) {\r\n clearInterval(this.trackingInterval);\r\n this.trackingInterval = null;\r\n }\r\n if (this.trackingStartFastQueryTimeout) {\r\n clearTimeout(this.trackingStartFastQueryTimeout);\r\n }\r\n if (this.trackingEndFastQueryTimeout) {\r\n clearTimeout(this.trackingEndFastQueryTimeout);\r\n }\r\n\r\n if (this.statusInterval) {\r\n clearInterval(this.statusInterval);\r\n this.statusInterval = null;\r\n }\r\n if (this.statusStartFastQueryTimeout) {\r\n clearTimeout(this.statusStartFastQueryTimeout);\r\n }\r\n if (this.statusEndFastQueryTimeout) {\r\n clearTimeout(this.statusEndFastQueryTimeout);\r\n }\r\n }\r\n\r\n isFinalTripStatus(status: TripStatusCode) {\r\n const finalTripStatuses = [\r\n TripStatusCode.Cancelled,\r\n TripStatusCode.NoShow,\r\n TripStatusCode.DropOff,\r\n ];\r\n return finalTripStatuses.includes(status);\r\n }\r\n\r\n updateTripCompletion() {\r\n if (this.dialogTrip && this.dialogTrip.allowReview) {\r\n const now = new Date();\r\n const nowAsMinutes = this.millisToMinutes(now.getTime());\r\n const tripScheduledDropOff = new Date(this.dialogTrip.endDateTime);\r\n const dropOffAsMinutes = this.millisToMinutes(\r\n tripScheduledDropOff.getTime()\r\n );\r\n if (this.dialogTrip.noShowTime || this.dialogTrip.cancelledAt) {\r\n clearInterval(this.tripCompletionInterval);\r\n } else if (\r\n this.dialogTrip.pickupTime &&\r\n nowAsMinutes - dropOffAsMinutes >= 10\r\n ) {\r\n this.tripIsCompleted = true;\r\n clearInterval(this.tripCompletionInterval);\r\n } else if (this.dialogTrip.dropoffTime) {\r\n this.tripIsCompleted = true;\r\n clearInterval(this.tripCompletionInterval);\r\n }\r\n }\r\n }\r\n\r\n millisToMinutes(millis: number) {\r\n const minutes = Math.floor(millis / 60000);\r\n return minutes;\r\n }\r\n\r\n mounted() {\r\n if (this.$route.name === \"track\") {\r\n this.updateTrackingTrip();\r\n }\r\n\r\n if (this.dialogTrip) {\r\n // #5929 forbids programmatic focus on page change\r\n // (this.$refs.pageTitleRef as HTMLElement).focus();\r\n }\r\n\r\n if (\r\n this.dialogTrip &&\r\n (this.dialogTrip.allowReview || !this.dialogTrip.cancelledAt)\r\n ) {\r\n this.updateTripCompletion();\r\n this.tripCompletionInterval = setInterval(() => {\r\n this.updateTripCompletion();\r\n }, 60 * 1000);\r\n }\r\n }\r\n\r\n beforeDestroy() {\r\n if (this.tripCompletionInterval) {\r\n clearInterval(this.tripCompletionInterval);\r\n }\r\n this.clearStatusIntervalsAndTimeouts();\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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TripsEdit.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[0].rules[0].use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TripsEdit.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TripsEdit.vue?vue&type=template&id=4c7d8042&scoped=true&\"\nimport script from \"./TripsEdit.vue?vue&type=script&lang=ts&\"\nexport * from \"./TripsEdit.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TripsEdit.vue?vue&type=style&index=0&id=4c7d8042&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c7d8042\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VExpansionPanel } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelContent } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelHeader } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanels } from 'vuetify/lib/components/VExpansionPanel';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAction } from 'vuetify/lib/components/VList';\nimport { VListItemAvatar } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRating } from 'vuetify/lib/components/VRating';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VContainer,VDialog,VDivider,VExpansionPanel,VExpansionPanelContent,VExpansionPanelHeader,VExpansionPanels,VForm,VIcon,VList,VListItem,VListItemAction,VListItemAvatar,VListItemContent,VListItemSubtitle,VListItemTitle,VRating,VRow,VSpacer,VTextarea})\n","var map = {\n\t\"./AccessibilityReport.vue\": 7639,\n\t\"./AccessibilityReportKeusote.vue\": 6374,\n\t\"./Booking.vue\": 380,\n\t\"./CancelTrips.vue\": 1640,\n\t\"./Home.vue\": 3669,\n\t\"./Invitation.vue\": 3043,\n\t\"./LoggedOut.vue\": 8465,\n\t\"./Messages.vue\": 2833,\n\t\"./PassengerTransportationPermission.vue\": 8093,\n\t\"./PassengerTransportationPermissions.vue\": 7907,\n\t\"./Passengers.vue\": 903,\n\t\"./Password.vue\": 8288,\n\t\"./PersonalInfo.vue\": 5430,\n\t\"./Privacy.vue\": 4476,\n\t\"./PrivacyKeusote.vue\": 7860,\n\t\"./RegisterTravelCard.vue\": 2427,\n\t\"./Trips.vue\": 4240,\n\t\"./TripsEdit.vue\": 1071\n};\n\nfunction webpackAsyncContext(req) {\n\treturn Promise.resolve().then(function() {\n\t\tif(!__webpack_require__.o(map, req)) {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t}\n\n\t\tvar id = map[req];\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 6872;\nmodule.exports = webpackAsyncContext;"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","Date","prototype","toISODate","this","TypeError","y","getFullYear","m","getMonth","d","getDate","DateHelper","isoDateToFinnishDate","val","moment","format","isIsoDate","valParts","split","length","year","month","dayOfMonth","isValidYMD","finnishDateToIsoDate","console","warn","padStart","isValidYear","isValidMonth","isValidDayOfMonth","yearString","toNumber","isNaN","monthString","dayOfMonthString","isNumber","test","parseInt","NaN","MenuHelper","menuTabPressed","event","component","eventTarget","target","menu","$refs","dataset","getTiles","propagate","isActive","shiftKey","listIndex","prevTile","firstTile","tiles","nextTile","preventDefault","Array","indexById","isArray","i","replaceOrAddById","item","splice","push","en","require","fi","sv","Vue","$tt","key","values","themeId","$store","state","app","vueI18n","$i18n","exists","_te","locale","_getMessages","_t","use","VueI18n","i18n","store","getters","fallbackLocale","messages","silentTranslationWarn","render","_vm","_h","$createElement","_c","_self","class","themeCssClassName","attrs","theme","dark","staticClass","drawer","_e","$t","staticStyle","_v","_s","mainMenuStatusText","appBarHeight","toolbarDark","ref","$vuetify","breakpoint","mobile","on","$event","stopPropagation","onNavOpenClick","apply","arguments","name","themeLogo","title","scopedSlots","_u","fn","_b","type","indexOf","_k","keyCode","keydown","click","userHasPassword","menuDark","menuRight","model","value","callback","$$v","expression","onNavCloseClick","_l","index","url","currentNavigationItemIndex","onNavItemClick","icon","badge","badgeContent","proxy","$set","text","online","isLoading","bottomNav","bottomNavColor","bottomNavDark","path","unseenMessages","showMessageBadge","toggleTheme","staticRenderFns","currentLocale","changeLocale","LocaleDropdown","commit","window","setTimeout","location","reload","appState","themes","find","t","Themes","themeDefault","Component","VListItem","color","show","buttonClicked","button","NoticeBar","noticeState","notice","link","$router","VBtn","focused","comp","tag","focusWithin","props","to","$emit","label","VueSkipToSingle","__decorate","Prop","default","listLabel","el","anchor","handleKeydown","ariaLabel","VueSkipToList","parent","parentElement","itemList","previousElementSibling","nextElementSibling","getElementsByTagName","focus","validator","every","String","components","programmaticFocus","timeout","originalTabIndex","getAttribute","setAttribute","removeAttribute","focusedTags","RegExp","VueSkipTo","isList","mounted","$route","$watch","top","element","document","getElementById","tagName","toLowerCase","replace","hash","AppRoot","drawerChanged","drawerStateIndicatorElem","addEventListener","onDrawerFocusin","removeEventListener","drawerRef","drawerElem","$el","includes","contains","focusable","querySelectorAll","hasAttribute","matches","showTopNav","showBottomNav","bookingEnabled","booking","hasLogo","onThemeIdChanged","oldVal","assign","light","vuetifyTheme","themeIndex","findIndex","newThemeIndex","newThemeId","dispatch","cssClassName","currentRoute","navigationItems","items","menuNavigationItems","NavigationItems","showMessages","concat","changePassword","createPassword","logout","filter","requireAuth","isAuthenticated","route","currentBottomNavigationItemIndex","bottomNavItems","bottomNavNavigationItems","undefined","message","onJumpToContentClick","appContentMainRef","page","globalKeyDownHandler","created","currentUrl","href","_approot","initApp","themeToggleEnabled","host","destroyed","Watch","immediate","LocaleListItemGroup","VAlert","appInsightsConnString","process","install","options","appInsights","ApplicationInsights","config","connectionString","loadAppInsights","errorHandler","exception","info","routeName","componentName","_name","trackException","properties","error","router","baseName","beforeEach","from","next","startTrackPage","afterEach","protocol","fullPath","stopTrackPage","defineProperty","get","library","add","fasUsers","fasInfo","fasBusinessTime","fasClock","fasMapMarker","fasTrashCan","fasPhone","fasPaperPlane","fasTimesCircle","fasCheck","fasHome","fasStreetView","fasSchool","fasCheckDouble","fasBan","fasUserXmark","fasTimes","fasUserCircle","fasClose","fasFileMedical","fasFile","fasTaxi","fasCreditCard","fasUser","fasEnvelope","fasUserSecret","fasIdCard","fasSignOutAlt","fasUnlockAlt","farSquareCheck","farSquare","farCalendarAlt","fasStar","fasEuro","fasNoteSticky","fasTrash","CUSTOM_ICONS","FontAwesomeIcon","faBars","faExclamationTriangle","faExclamation","faCaretDown","faChevronLeft","faChevronRight","faCheckSquare","faCheckCircle","faSquare","faCircle","faDotCircle","VuetifyFontAwesomeIconsConfig","iconfont","Vuetify","lang","params","toString","icons","primary","success","warning","$sanitize","dirty","sanitizeHTML","allowedTags","allowedAttributes","ColorHelper","getRandomColorWithSeed","seed","luminosity","contrastToHex","seedNumber","getHash","minContrast","minMultiplier","maxTries","contrast","hsl","normalizedSeedNumber","Math","floor","sin","RandomColor","round","rgb","hslToRgb","hex","rgbToHex","getContrast","hslString","hexToRgb","hexString","startsWith","substr","substring","hue2rgb","p","q","h","s","l","r","g","b","slice","relativeLuminance","rgbArray","channel","color1","color2","luminance1","luminance2","input","len","charCodeAt","date","content","navigator","register","ready","cached","updated","offline","GoogleMaps","apiKey","vgaMapState","initMap","initVGAMaps","google","maps","places","googleMapScript","createElement","libraries","paramsString","encodeURIComponent","join","version","language","body","appendChild","productionTip","$randomColor","axios","request","authToken","tokenData","tokenService","decodeToken","exp","getTime","headers","Authorization","err","Promise","reject","response","status","sync","applicationInsights","vuetify","html","documentElement","$mount","Router","mode","routes","Home","meta","Invitation","Passengers","requireAuthentication","PassengerTransportationPermissions","Booking","Trips","TripsEdit","Messages","CancelTrips","PersonalInfo","Password","Privacy","PrivacyKeusote","LoggedOut","beforeEnter","RegisterTravelCard","AccessibilityReport","AccesibilityReportKeusote","getTitle","themeName","pageName","query","matched","some","redirect","RideitBackend","VUE_APP_API_HOST","rideItTenantHeaderName","decorateRequestConfig","tenantFromUrl","MatchTenantFromUrl","restGet","async","baseUrl","data","restPost","restPut","makeRequest","method","xhr","XMLHttpRequest","open","onload","statusText","onerror","send","filterGoogleResults","result","convertGoogleResultToDestination","destination","place_id","alias","display","formatted_address","address","postalcode","address_components","c","types","long_name","city","latitude","geometry","lat","longitude","lng","isHome","isPickup","isViaPoint","isMain","isSecondaryPlace","auth","getUserData","updateLogin","username","password","userName","withCredentials","currentPassword","getAccessToken","registerTravelCard","cardNumber","passenger","getTrips","claim","token","put","getPassengerPlaces","trips","cancel","cancellation","review","tracked","withStatus","passengerId","markSeen","markConfirmed","invitation","accept","invite","quotas","getWithPeriods","getEstimates","postBooking","getRoute","destinations","nominatim","searchAddress","nominatimServer","geocodingUrl","encodedAddress","search","VUE_APP_GOOGLE_KEY","JSON","parse","results","base64Url","base64","atob","expiresIn","Number","MIN_SAFE_INTEGER","currentTime","timezone","endsWith","setDefault","$moment","availableLocales","isValid","defaultLanguage","storageLocale","localStorage","getItem","toLocaleLowerCase","CacheService","clearMissingPassengersFromCache","passengers","passengerIds","cachedPassengers","clearPassengers","all","clearPassengerTrips","passengerUrl","cache","caches","requests","tripUrl","delete","clearApiCache","clearCache","cacheName","siteThemeId","browserIsIosOrMacOs","userAgent","onLine","useDateTypeInput","mobileDeviceDetect","useSeparateFieldsDateTimeInput","localeService","user","errors","persist","hasPassword","userIdentityVerified","identityVerified","mutations","setOnline","setUser","setUserPassword","setItem","navigateToLandingPage","themesWithBooking","clearUserData","setThemeId","log","removeItem","setTime","expires","toUTCString","cookie","actions","initializeApp","rootGetters","root","initializeUserData","restService","cacheService","login","context","appStore","namespaced","authState","accessToken","refreshTimeout","authGetters","authMutations","setAccessToken","authSuccess","authError","authLogout","authActions","authenticationExpired","rootState","currentPath","updateRefreshTokenTimeout","clearTimeout","refreshAccessToken","wasLoggedIn","authStore","passengerState","passengerById","passengerReplaceOrAdd","payload","sort","p1","p2","localeCompare","initializePassengers","forEach","fetchTrips","getPassengerTrips","localTrips","time","stringify","toISOString","trip","acceptInvitation","tokens","claimPassenger","tokenResp","updatePassenger","updatedPassenger","pollTrips","passengerStore","tripState","tripById","tripDate","startDateTime","endDateTime","dates","a","min","setHours","max","setDate","tripsForDate","startTime","nextTripForPassenger","passneger","now","upcomingTrips","tripsSetInitial","addOrReplaceTrip","tripTime","valueOf","existing","t1","t2","d1","d2","sd","updateTrip","pickupTime","dropoffTime","cancelTrips","updatedTrips","apicache","cachePath","reviewTrip","reviews","addTrackingTrip","tripStore","messageSorter","createdAt","messageState","firstPage","totalPages","getter","sentByUser","unseenCount","seenAt","forPassenger","canLoadMore","addMessages","messagePage","MAX_SAFE_INTEGER","updateMessage","initializeMessages","hasPreviousPage","loadLastPage","loadPreviousPage","sendMessage","markAsSeen","markAsConfirmed","queue","showNotice","hideNotice","showNextNotice","shift","permissions","permissionsForPassenger","permissionById","setPermissions","getPassengerTransportationPermissions","quotaStore","Vuex","modules","messageStore","noticeStore","quota","handleCacheUpdate","updatedURL","readDataFromCache","regex","reg","match","updatedResponse","json","serviceWorker","then","handleNetworkChange","ThemeDefault","personalInfo","accessibilityReport","privacy","ThemeEspoo","secondary","accent","ThemeKovanen","ThemeFixutaxi","ThemeMeneva","ThemeHelpbus","ThemeTatKela","ThemeFcg","ThemeKulkukeskus","passengerTransportationPermissions","red","grey","ThemeKeskustaksi","ThemeTh","isKeusote","hostname","ThemeDemo","accessibilityReportKeusote","privacyKeusote","ThemeLapha","ThemeLuvn","themeIds","matchedTenantByPathname","pathname","devTheme","matchedTenantByHostname","matchIfHostNameContainsAny","ThemeFimlab","ThemeLahitaksi","themeEspoo","themeKovanen","themeFixutaxi","themeMeneva","themeHelpbus","themeTatKela","themeFcg","themeKulkukeskus","themeKeskustaksi","themeFimlab","themeDemo","themeLahitaksi","themeLapha","themeLuvn","datePickerAnchorName","_g","startDateOpen","minDate","dateWithoutTime","textFieldValue","required","rules","notEmpty","filledAndValidDateFormat","filledAndMinDate","onTextFieldChange","onTextFieldInput","onTextFieldBlur","AccessibleTextInputDatePicker","random","currentYear","currentMonth","currentDay","uid","ariaLabelPrefix","trim","valueChanged","newVal","newDate","editedYear","editedMonth","editedDay","v","isFilled","dateIsValid","dateIsAtOrAfterIsoDate","parseInputToDate","toDate","separator","parts","yearInput","monthInput","dayInput","day","twoNumberYearInputSupported","yearCandidate","editedYearValid","editedMonthValid","editedDayValid","valMoment","isValidDay","otherIsoDate","isBefore","isAfter","valid","validChanged","daysInMonth","todayDate","yearOptions","labelPrefix","monthNameOptions","editedMonthName","dayOptions","dateWithoutTimeLocaleFormatted","x","editedYearChanged","newValNumber","oldValNumber","$nextTick","setFullYear","minDateMoment","yearFieldRef","blur","monthFieldRef","editedMonthChanged","setMonth","dayFieldRef","editedMonthNameChanged","newMonth","months","editedDayChanged","dayChosen","dayChosenIndicatorRef","monthOptions","dayNumbers","onExternalLinkClicked","confirmed","confirm","VCard","AccessibilityReportKeusote","currentStep","currentStepNumber","currentStepTitle","order","onPassengerChanged","nextStep","prevStep","loading","onDateWithoutTimeChange","bookingQuotas","passengerDestinations","onPlaceChange","bookingPhoneNumber","convertOrderToBooking","bookingSaving","bookingSaved","createBooking","gotoReturnBookingStep","onResetClick","dateAndTime","bookingSaveError","editedPassenger","avatarText","BookingStepSelectPassenger","isObject","IPassenger","BookingStepTypeEnum","selectedIsoDate","onSelectedIsoDateChange","isoDateFormat","selectedIsoDateMinDate","selectedDateIsValid","BookingStep","Unknown","BookingStepLoading","BookingStepSelectDate","dateFormattedFormat","formattedDateIsValid","selectedDateMinDate","formattedDateIsAtOrAfterIsoDate","isoDateIsAtOrAfterIsoDate","selectedDate","selectedIsoDateIsValid","isoDateIsValid","selectedDateFormatted","selectedDateFormattedIsValid","selectedDateFormattedChanged","onSelectedDateFormattedChange","onSelectedDateInput","datePickerOpen","selectedIsoDateChanged","onSelectedIsoDateInput","isoDate","AccessibleThreeFieldDatePicker","DestinationSource","timeWithoutDate","timeChangedInPicked","isLikumaPermission","selectedDepartureTimeOptionValue","onIsDepartureTimeChanged","fromAddress","allowAllPlaces","availablePassengerPlaces","onOriginPlaceChange","onOriginPlaceSelected","toAddress","availablePassengerDestinationPlaces","onDestinationPlaceChange","onDestinationPlaceSelected","viaPointsEnabled","viaPoints","viaPointStatusMessage","addViaPoint","viaPoint","refInFor","viaAddress","onViaPointChange","removeViaPoint","viaPointDeviation","viaPointMaxDeviation","stepIsValid","locationIcon","validationErrors","onChangeClick","directives","rawName","attachId","filteredItems","placeholder","disabled","clearable","autofocus","PlacePickerDestination","fromGooglePlaceResult","place","source","GooglePlaceResult","addressComponents","addressComponentTypes","street_number","locality","administrative_area_level_1","administrative_area_level_3","country","postal_code","ac","addressType","streetAddress","postalCode","vicinity","combinedAddress","streetnumber","fromGooglePlacePrediction","GooglePlacePrediction","prediction","description","fromRideitDestination","Rideit","PlacePickerG","uuidv4","attach","componentInstanceUuid","allItems","passengerPlaces","Map","scoreA","scoreB","aliasA","aliasB","favoritePlaces","autocompleteRef","hasError","errorBucket","onSearchChanged","placeSelectedFlag","getGooglePlacesPredictions","autocompleteSessionToken","onPlacesResultsAvailable","predictions","concatGooglePlacesPredictions","onModelChanged","lastEmitted","mountedAtMilliseconds","mountedAt","mountedMillisecondsAgo","changeButtonComponent","changeButtonRef","getGooglePlacesPlaceDetails","onGetDetailsComplete","onValueChanged","foundDestination","onPlacesChanged","googlePlacesApiResultToAddressViewModel","createNewGoogleAutocompleteSessionToken","ms","ensureGooglePlacesServicesCreated","googlePlacesAutocompleteService","AutocompleteService","googlePlacesService","PlacesService","googlePlacesContainer","sessionToken","AutocompleteSessionToken","getGooglePlacesPredictionsTimeout","componentRestrictions","getPlacePredictions","PlacesServiceStatus","ZERO_RESULTS","OK","alert","fields","placeId","getDetails","focusInput","autocomplete","inputElem","VAutocomplete","formattedTime","$attrs","TimePicker","formatted","formatTime","timePicker","onValueChange","prevVal","hoursNum","hours","minutesNum","minutes","onFormattedChange","emitValue","timeSplit","timeValue","ETripDestinations","VTextField","BookingStepSelectTimeAndAddresses","getDefaultTimeWithoutDate","departureTimeOptions","dateAndTimeDateChanged","diff","startOf","lastMinuteOfDay","endOf","__b3","$on","viaPointRef","viaPointPlaceInputRef","viaPointsAreValid","orderHasAllAddresses","bookingRouteDetails","getRouteDetails","viaPointAddress","unshift","filterDestinationByQuota","pd","requireValids","originPlaceInputRef","destinationPlaceInputRef","viaPointDeviationExceedsMax","decisionType","tripDestinations","FreePlaces","allowViaPoints","routeWithViaPointDistance","routeWithViaPointDuration","difference","originalRouteDistance","Home_MainPlace","Home_Secondary","MainPlace_Secondary","newViaPoint","viaPointPlace","viaPointApartment","waitTime","addViaPointButtonRef","addViaPointButtonElem","optionValue","isDepartureTime","rhours","rminutes","updatedTime","set","IBookingOrder","phoneNumber","passengerCount","_n","extra","extraId","requirePhoneNumber","phoneNumRef","passengerCountRef","phoneNumbers","selectedNumber","PhoneNumber","numbers","phone","n","onSelectedNumberChanged","VCombobox","BookingStepEnterAdditionalInfo","remainingQuota","note","expressQuotaTimeLimit","remainingExpressQuota","hide","QuotaChip","VChip","BookingStepSelectQuota","shouldShowExpressQuotaWarning","remainingExpressQuotaAmount","startPlace","fromApartment","endPlace","toApartment","totalPassengers","additionalInformation","saved","saveDisabled","saveOrder","BookingStepViewOrderSummary","passengerName","storePassenger","departureDateTime","arrivalDateTime","departureOrArrival","getAddressString","orderPrice","price","saving","IBooking","BookingView","withAttendant","additionalInfo","emptyBooking","steps","SelectPassenger","SelectDate","SelectQuota","SelectTimeAndAddresses","EnterAdditionalInfo","ViewOrderSummary","formattedDate","formattedDateAndTime","selectedPassengerName","avatarColor","quotaRecap","remainingQouta","travelInfo","useTravelInfoRules","lon","hits","resetBookingAndKeepPassenger","updatePassengerQuotas","bookingFormRef","validate","myDate","onDayChange","onMonthChange","onYearChange","onCurrenStepChanged","stepTitleRef","onMinuteEnterKeyup","isDepartureTimeSwitchElem","querySelector","fetchPassengerBookingPlacesInfo","availableQuotas","step","currentStepIndex","originalFromAddress","originalFromApartment","formattedErrorMessage","genericErrorMessage","specificErrorMessage","transportationPermissionId","convertToBookingPassenger","attributes","extras","selected","__cbooking","__corder","addApartmentToAddress","email","convertToDestinations","dest","apartment","destinationCopy","apartmentCleaned","bookingPlaces","passengerBookingPlacesInfo","addresses","__book","multipleDates","platformSpecificSwitchType","startIsoDate","startDateLabel","startDate","dateIsoFormat","startIsoDateMinDate","onStartIsoDateInput","endIsoDate","endDate","endIsoDateMinDate","onEndIsoDateInput","cancellableTripsInTimeFrame","startDateIsValid","endDateIsValid","togglePassengerSelection","passengerSelected","selectedPassengers","toggleTripSelection","tripSelected","_f","carName","selectedTrips","reasonIsValid","reasonRules","cancelreason","createCancellations","cancellationStats","creatingCancellations","reset","CancelTripsView","align","onStartDateChanged","startIsoDateIsValid","startIsoDateChanged","endIsoDateIsValid","endIsoDateChanged","selectedDates","res","cancelledAt","tripIsWithinTimeFrame","tripIsCancellable","noShowTime","tripDates","dateColor","colors","passengersInTrips","passengerNames","stepNumber","cancellationError","reason","cancelledTrips","mustChooseOne","image","showList","showRegister","showImage","acceptedByUser","changeUser","onRouteChanged","notFound","bruteForce","goBack","go","moreThanOnePassenger","ownMessage","domProps","MessageItem","timer","IMessage","VAvatar","sendFromValid","passengerRule","sending","selectedIndex","selectItem","selectedPassenger","messageRule","clearMessage","MessageForm","showPassengerSelect","onlyPassenger","form","onScroll","scrollToEnd","beforeDestroy","scrollY","loadMoreMessages","scrollTo","currentHeight","scrollHeight","diffrence","heightBeforeLoading","VCol","permission","period","closeDialog","periodStart","periodEnd","totalQuota","amount","usedQuota","totalExpressQuota","usedExpressQuota","savedToNext","borrowed","ReservationPeriodListItem","today","hour","minute","second","millisecond","start","end","IReservationPeriod","PassengerTransportationPermission","passengerChanged","setActivePeriod","dialogOpenChanged","periods","activePeriodIndex","activePeriod","IBookingQuotaWithPeriods","passengerPermissions","permissionSelected","viewPermissionDialog","TransportationPermissionListItem","claimPassengerSuccess","onPassengerEditDialogClose","dialog","claimPassengerError","lastSaveSuccess","lastSaveError","nextTrip","editPassengerDialog","onClosePassengerDialog","passengerFormValid","passengerInitalRules","closePassengerDialog","savePassenger","PassengerEdit","intialLengthRule","saveSuccess","saveError","PassengerListItem","editPassenger","dialogChanged","done","usernameRules","userNameIsValid","currentPasswordRules","currentPasswordIsValid","onCurrentPasswordFieldInput","newPasswordRules","showPasswords","minPasswordLength","newPasswordIsValid","onNewPasswordFieldInput","newPassword","confirmPasswordRules","confirmPasswordIsValid","onNewPasswordConfirmationFieldInput","confirmPassword","saveChanges","saveErrors","userNameRef","currentPasswordRef","newPasswordRef","confirmPasswordRef","minUsername","maxUsername","uniqueName","serverUserName","requiredField","serverCurrentPassword","minPassword","serverPassword","passwordsMatch","serverErrors","property","errorText","uniqueCharsValidationErrorStart","uniqueCharsValidationErrorEnd","numberOfUniqueCharsRequired","lastIndexOf","refreshA11yValidationPrompts","a11yValidationIteration","a11yValidationIterationString","minChars","maxChars","existingUsernames","onUserNameChange","onPasswordChange","onLocaleChange","sendRegistration","acceptAsCurrentUser","acceptAndLogOut","isInvited","failed","dateTitle","$tc","maxDate","chooseDateInputRef","showPicker","prevDateTitle","showPrevDay","clearPassengerFilter","filterPassenger","nextDateTitle","showNextDay","nextTripAt","openTripDialog","startAddress","via","getViaPointAddress","endAddress","TripListItem","ITrip","current","nextTrips","displayDate","prevDay","nextDay","currentDate","comingDates","pastDates","hasPrevDay","hasNextDay","calendar","lastDay","sameDay","lastWeek","nextWeek","sameElse","VAppBar","TripStatusCode","dialogTrip","cancelReason","carRegisterNumber","carPhoneNumber","driverName","deductible","carLocation","reviewformvalid","maxStars","isReviewDisabled","experienceStars","driverStars","reviewComment","reviewing","reviewtrip","closeTripDialog","cancelTripDialogOpen","cancelformvalid","cancelling","canceltrip","statusColor","timeProgress","showTime","estimatedMinutes","showCancelled","showCompleted","estimationText","estimatedTime","TripTrackingStatus","creationTime","isTrackingTrip","Cancelled","NoShow","DropOff","EnRoute","Pickup","estimatedEndTime","ata","eta","tripEndTime","timeDiff","estimatedStartTime","endTime","adjustedStart","etd","totalMinutes","waitedMinutes","MapHelpers","getCoordinateFromAddress","parseFloat","fromLonLat","getCoordinateFromCarLocation","EPlaceMarkerType","PlaceMarkerFeature","Feature","constructor","coordinates","markerType","super","setGeometry","Point","iconStyle","createIconStyle","setZIndex","iconShadowStyle","setStyle","opacity","displacement","width","height","iconColor","svgElement","Icon","src","style","Style","PlaceLayer","VectorLayer","className","startFeature","startCoordinates","Start","setId","viaPointFeatures","viaPointCoordinates","placeMarker","ViaPoint","endFeature","endCoordinates","End","features","setSource","VectorSource","CarLayer","carCoordinates","feature","getCarLayerStyles","updateCoordinates","getSource","getFeatureById","getGeometry","carStyle","circleStyle","Circle","radius","fill","Fill","shadowCircleStyle","anchorOrigin","TripMap","onCarLocationChanged","carLayer","setVisible","addLayer","startPlaceExtent","placeLayer","getExtent","carExtent","combinedExtent","extend","getView","fit","duration","padding","getVisible","center","tileLayer","TileLayer","OSM","layers","view","View","zoom","maxZoom","minZoom","mapElem","mapRef","interactives","interactive","showTrackingStatus","shouldQueryTrip","allowEtaQuery","showTripMap","canBeCancelled","tomorrow","isFinalTripStatus","hasStarted","showReview","allowReview","tripIsCompleted","reviewGiven","trackingLink","comment","onDialogTripChanged","isNew","statusInterval","updateTripStatus","updateTrackingTrip","trackingInterval","setIntervalForTrackingUpdates","clearStatusIntervalsAndTimeouts","names","letters","toUpperCase","diffToFastQueryStart","calculateDiffToFastQueryStart","startingInterval","TripsEdit_1","QUERY_FAST_INTERVAL","QUERY_DEFAULT_INTERVAL","setInterval","trackingStartFastQueryTimeout","clearInterval","diffToFastQueryEnd","calculateDiffToFastQueryEnd","trackingEndFastQueryTimeout","setIntervalForStatusUpdates","diffToStart","QUERY_CUTOFF_MINUTES","tripId","statusStartFastQueryTimeout","statusEndFastQueryTimeout","fastQueryStart","subtract","QUERY_INCREASE_MINUTES","fastQueryEnd","finalTripStatuses","updateTripCompletion","nowAsMinutes","millisToMinutes","tripScheduledDropOff","dropOffAsMinutes","tripCompletionInterval","millis","beforeRouteEnter","instance","beforeRouteUpdate","webpackAsyncContext"],"sourceRoot":""}