{"version":3,"file":"js/chunk-common.61f755a2.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?a956","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?f349","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?b27e","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?7640","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?a46b","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?efa1","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 @ Mon Sep 26 2022 20:47:50 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\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\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-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 };\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 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 : 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 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}\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 // Filter out already used destinations\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.passengerDestinations.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 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=379380d2&\"\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.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\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=663f8f40&\"\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.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\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 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 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 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=6d8cbe7c&\"\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 { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {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 onResetClick(){\r\n this.resetBooking();\r\n this.currentStep = this.steps[0];\r\n }\r\n\r\n resetBooking(){\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 }\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 console.warn(\"Booking: prevStep: currentStepIndex is below 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 console.warn(\"Booking: prevStep: currentStepIndex is below 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 console.warn(\"Booking: prevStep: currentStepIndex is below 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 console.log(\"Converted order to booking. Order:\", order, \"booking:\", booking);\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 });\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=092bc1bb&\"\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\":\"\",\"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\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=468b7977&\"\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)],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\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=b9f14c28&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=b9f14c28&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 \"b9f14c28\",\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\": 8359,\n\t\"./CancelTrips.vue\": 166,\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\": 9084\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","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","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","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","pd","requireValids","originPlaceInputRef","destinationPlaceInputRef","viaPointDeviationExceedsMax","decisionType","tripDestinations","FreePlaces","allowViaPoints","routeWithViaPointDistance","routeWithViaPointDuration","difference","originalRouteDistance","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","hide","QuotaChip","VChip","BookingStepSelectQuota","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","resetBooking","bookingFormRef","validate","myDate","onDayChange","onMonthChange","onYearChange","updatePassengerQuotas","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":""}