{"version":3,"file":"js/chunk-common.2b00015e.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/th/theme_th.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/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?e2e6","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_th.scss';\r\nimport ITheme from '../ITheme';\r\nimport NavigationItems from '@/navigationItems';\r\n\r\nexport default class ThemeTh implements ITheme {\r\n id: string = 'th';\r\n matchIfHostNameContainsAny: string[] = [\"th\"];\r\n name: string = 'th';\r\n cssClassName: string = 'theme_th';\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: '#f9cf0c',\r\n accent: '#f9cf0c',\r\n warning: '#f9cf0c',\r\n bottomNavColor: '#f9cf0c',\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'];\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 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\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\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 ];\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 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 }\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 const daysInMonth = moment().year(this.editedYear).month(this.editedMonth).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=25cd59c1&\"\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","themeIds","matchedTenantByPathname","pathname","devTheme","matchedTenantByHostname","matchIfHostNameContainsAny","ThemeFimlab","ThemeLahitaksi","themeEspoo","themeKovanen","themeFixutaxi","themeMeneva","themeHelpbus","themeTatKela","themeFcg","themeKulkukeskus","themeKeskustaksi","themeTh","themeFimlab","themeDemo","themeLahitaksi","themeLapha","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":""}