{"version":3,"file":"js/app.8997b33b.js","mappings":"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","sources":["webpack://tracker-frontend/./src/api/auth.ts","webpack://tracker-frontend/./src/api/device.ts","webpack://tracker-frontend/./src/api/groups.ts","webpack://tracker-frontend/./src/api/events.ts","webpack://tracker-frontend/./src/api/terms-and-conditions.ts","webpack://tracker-frontend/./src/api/report.ts","webpack://tracker-frontend/./src/api/index.ts","webpack://tracker-frontend/./src/config/api.ts","webpack://tracker-frontend/./src/config/mapSettings.ts","webpack://tracker-frontend/./src/i18n/de/components/index.ts","webpack://tracker-frontend/./src/i18n/de/pages/index.ts","webpack://tracker-frontend/./src/i18n/de/index.ts","webpack://tracker-frontend/./src/i18n/fr/components/index.ts","webpack://tracker-frontend/./src/i18n/fr/pages/index.ts","webpack://tracker-frontend/./src/i18n/fr/index.ts","webpack://tracker-frontend/./src/i18n/it/components/index.ts","webpack://tracker-frontend/./src/i18n/it/pages/index.ts","webpack://tracker-frontend/./src/i18n/it/index.ts","webpack://tracker-frontend/./src/i18n/en/components/index.ts","webpack://tracker-frontend/./src/i18n/en/pages/index.ts","webpack://tracker-frontend/./src/i18n/en/index.ts","webpack://tracker-frontend/./src/i18n/i18n.ts","webpack://tracker-frontend/./src/App.vue?e6af","webpack://tracker-frontend/./src/lib/useCookies.ts","webpack://tracker-frontend/./src/App.vue?847a","webpack://tracker-frontend/./src/App.vue","webpack://tracker-frontend/./src/components/MyButton.vue?21ae","webpack://tracker-frontend/./src/components/MyButton.vue?8fd9","webpack://tracker-frontend/./src/components/MyButton.vue","webpack://tracker-frontend/./src/components/filter-select/FilterSelect.vue?3fa2","webpack://tracker-frontend/./src/components/filter-select/FilterSelect.vue?b8e5","webpack://tracker-frontend/./src/components/filter-select/FilterSelect.vue","webpack://tracker-frontend/./src/components/filter-select/FilterSelectMulti.vue?b4f2","webpack://tracker-frontend/./src/components/filter-select/FilterSelectMulti.vue?accd","webpack://tracker-frontend/./src/components/filter-select/FilterSelectMulti.vue","webpack://tracker-frontend/./src/components/Datepicker/Datepicker.vue?ca96","webpack://tracker-frontend/./src/components/Datepicker/Datepicker.vue?2362","webpack://tracker-frontend/./src/components/Datepicker/Datepicker.vue","webpack://tracker-frontend/./src/plugins/components.ts","webpack://tracker-frontend/./src/store/auth.ts","webpack://tracker-frontend/./src/config/locales.ts","webpack://tracker-frontend/./src/store/ui.ts","webpack://tracker-frontend/./src/store/groups.ts","webpack://tracker-frontend/./src/store/layers.ts","webpack://tracker-frontend/./src/store/fences.ts","webpack://tracker-frontend/./src/store/events.ts","webpack://tracker-frontend/./src/store/report.ts","webpack://tracker-frontend/./src/store/index.ts","webpack://tracker-frontend/./src/pages/login/Login.vue?cfae","webpack://tracker-frontend/./src/pages/login/Login.vue?8dc3","webpack://tracker-frontend/./src/pages/login/Login.vue","webpack://tracker-frontend/./src/pages/redeem/Redeem.vue?416f","webpack://tracker-frontend/./src/pages/redeem/Redeem.vue?900c","webpack://tracker-frontend/./src/pages/redeem/Redeem.vue","webpack://tracker-frontend/./src/pages/forgot-password/ForgotPassword.vue?31c6","webpack://tracker-frontend/./src/pages/forgot-password/ForgotPassword.vue?28b0","webpack://tracker-frontend/./src/pages/forgot-password/ForgotPassword.vue","webpack://tracker-frontend/./src/pages/layout/Layout.vue?a03f","webpack://tracker-frontend/./src/components/user-settings/Modal.vue?0ce8","webpack://tracker-frontend/./src/components/user-settings/UserProperty.vue?71b8","webpack://tracker-frontend/./src/components/user-settings/UserProperty.vue?85d7","webpack://tracker-frontend/./src/components/user-settings/UserProperty.vue","webpack://tracker-frontend/./src/components/user-settings/Modal.vue?e6b2","webpack://tracker-frontend/./src/components/user-settings/Modal.vue","webpack://tracker-frontend/./src/components/terms-and-conditions/Modal.vue?8638","webpack://tracker-frontend/./src/components/terms-and-conditions/Modal.vue?eb61","webpack://tracker-frontend/./src/components/terms-and-conditions/Modal.vue","webpack://tracker-frontend/./src/utils/generateGravatar.ts","webpack://tracker-frontend/./src/firebase/init.ts","webpack://tracker-frontend/./src/pages/layout/Layout.vue?75dc","webpack://tracker-frontend/./src/pages/layout/Layout.vue","webpack://tracker-frontend/./src/pages/overview/Overview.vue?d5c4","webpack://tracker-frontend/./src/pages/overview/Overview.vue","webpack://tracker-frontend/./src/pages/notfound/NotFound.vue?63b0","webpack://tracker-frontend/./src/pages/notfound/NotFound.vue?758b","webpack://tracker-frontend/./src/pages/notfound/NotFound.vue","webpack://tracker-frontend/./src/router/index.ts","webpack://tracker-frontend/./src/main.ts","webpack://tracker-frontend/./src/pages/maps/devices-map/map/map-styles.ts","webpack://tracker-frontend/./src/pages/maps/devices-map/map/marker-cluster-styles.ts","webpack://tracker-frontend/./src/helpers/deviceBgColorSelector.ts","webpack://tracker-frontend/./src/config/colorsPalette.ts","webpack://tracker-frontend/./src/pages/maps/devices-map/map/Map.ts","webpack://tracker-frontend/./src/lib/saveKmlXmlFile.ts","webpack://tracker-frontend/./src/store/device.ts","webpack://tracker-frontend/./src/types/sorting/index.ts","webpack://tracker-frontend/webpack/bootstrap","webpack://tracker-frontend/webpack/runtime/amd options","webpack://tracker-frontend/webpack/runtime/chunk loaded","webpack://tracker-frontend/webpack/runtime/compat get default export","webpack://tracker-frontend/webpack/runtime/define property getters","webpack://tracker-frontend/webpack/runtime/ensure chunk","webpack://tracker-frontend/webpack/runtime/get javascript chunk filename","webpack://tracker-frontend/webpack/runtime/get mini-css chunk filename","webpack://tracker-frontend/webpack/runtime/global","webpack://tracker-frontend/webpack/runtime/hasOwnProperty shorthand","webpack://tracker-frontend/webpack/runtime/load script","webpack://tracker-frontend/webpack/runtime/make namespace object","webpack://tracker-frontend/webpack/runtime/publicPath","webpack://tracker-frontend/webpack/runtime/css loading","webpack://tracker-frontend/webpack/runtime/jsonp chunk loading","webpack://tracker-frontend/webpack/startup"],"sourcesContent":["import axios, { AxiosResponse } from 'axios';\r\n\r\nimport { apiUrl } from '@/config/api';\r\n\r\nimport { ApiLogin, ApiAccount } from './types/auth';\r\n\r\nconst login = (token: string): Promise> => {\r\n const config = {\r\n headers: {\r\n Authorization: `Basic ${token}`,\r\n },\r\n };\r\n return axios.post(`${apiUrl}/system/authentication/gettoken`, {}, config);\r\n};\r\n\r\nconst redeem = (token: string): Promise> => {\r\n return axios.get(`${apiUrl}/system/authentication/redeemtoken?tokenKey=${token}`);\r\n};\r\n\r\nconst account = (token: string): Promise> => {\r\n return axios.get(`${apiUrl}/trk/common/user/info`, {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n });\r\n};\r\n\r\nconst updateAccount = (token: string, userData: ApiAccount): Promise> => {\r\n return axios.post(`${apiUrl}/trk/common/user/info`, userData, {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n });\r\n};\r\n\r\n/* const logout = (token) => {\r\n axios({\r\n method: 'post',\r\n url: `${window.__env.apiUrl}/api/logout`,\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n });\r\n} */\r\n\r\n/* const verify = (token) => {\r\n return axios({\r\n method: 'post',\r\n url: `${window.__env.apiUrl}/api/verify`,\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n });\r\n} */\r\n\r\nexport default {\r\n login,\r\n redeem,\r\n account,\r\n updateAccount,\r\n // logout,\r\n // verify,\r\n};\r\n","import { DeviceToUpdate } from './../store/device';\nimport axios, { AxiosResponse } from 'axios';\n\nimport { apiUrl } from '@/config/api';\n\nimport { ApiDeviceList, ApiDeviceDates, ApiDeviceRoutes, ApiDeviceLayers, ApiDeviceActions } from './types/device';\n\nconst list = (token: string): Promise> => {\n return axios.post(\n `${apiUrl}/trk/tracking/device/detail/list`,\n {\n loadCurrentGeofences: true,\n },\n {\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n },\n );\n};\n\nconst dates = (token: string, deviceId: number): Promise> => {\n return axios.post(\n `${apiUrl}/trk/tracking/device/position/dates`,\n {\n deviceId,\n },\n {\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n },\n );\n};\n\nconst routes = (token: string, deviceId: number, fromDate: Date): Promise> => {\n return axios.post(\n `${apiUrl}/trk/tracking/device/position/routes`,\n {\n deviceId,\n from: fromDate.toISOString(),\n },\n {\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n },\n );\n};\n\nconst layers = (token: string): Promise> => {\n return axios.post(`${apiUrl}/trk/tracking/map-object/detail/list`, null, {\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n });\n};\n\nconst fences = (token: string): Promise> => {\n return axios.post(`${apiUrl}/trk/tracking/action/detail/list`, null, {\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n });\n};\n\nconst exportSingle = (token: string, fromDate: string, deviceId: number): Promise> => {\n return axios.post(\n `${apiUrl}/trk/tracking/report/kml/deviceroutes`,\n {\n deviceId: deviceId,\n from: fromDate,\n },\n {\n headers: {\n Authorization: `Bearer ${token}`,\n responseType: 'blob',\n },\n },\n );\n};\n\nconst exportAll = (token: string, fromDate: string): Promise> => {\n return axios.post(\n `${apiUrl}/trk/tracking/report/kml/devicepositions`,\n {\n from: fromDate,\n },\n {\n headers: {\n Authorization: `Bearer ${token}`,\n responseType: 'blob',\n },\n },\n );\n};\n\nconst updateSingle = (token: string, data: DeviceToUpdate, id: number): Promise> => {\n return axios.put(`${apiUrl}/trk/tracking/device/${id}`, data, {\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n });\n};\nexport default {\n list,\n dates,\n routes,\n layers,\n fences,\n exportSingle,\n exportAll,\n updateSingle,\n};\n","import axios, { AxiosResponse } from 'axios';\r\n\r\nimport { apiUrl } from '@/config/api';\r\n\r\nimport { ApiGroupsList } from './types/groups';\r\n\r\nconst list = (token: string): Promise> => {\r\n return axios.post(`${apiUrl}/trk/common/group/detail/list`, null, {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n};\r\n\r\nexport default {\r\n list,\r\n};\r\n","import axios, { AxiosResponse } from 'axios';\r\n\r\nimport { apiUrl } from '@/config/api';\r\n\r\nimport { ApiEventsList, PropertiesList } from './types/events';\r\n\r\nconst list = (data: PropertiesList, token: string): Promise> => {\r\n return axios.post(\r\n `${apiUrl}/trk/tracking/device-event/detail/list/bydevice`,\r\n {\r\n deviceId: data.deviceId,\r\n from: data.date,\r\n /* until: '2021-07-03T07:54:23.161Z', */\r\n },\r\n {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n },\r\n );\r\n};\r\n\r\nexport default {\r\n list,\r\n};\r\n","import axios, { AxiosResponse } from 'axios';\r\n\r\nimport { apiUrl } from '@/config/api';\r\n\r\nimport { ApiAccount } from './types/auth';\r\nimport { ApiTermsAndConditions } from './types/terms-and-conditions';\r\n\r\nconst getGtc = (token: string): Promise> => {\r\n return axios.get(`${apiUrl}/trk/common/user/text-gtc`, {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n });\r\n};\r\n\r\nconst getDtp = (token: string): Promise> => {\r\n return axios.get(`${apiUrl}/trk/common/user/text-dtp`, {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n });\r\n};\r\n\r\nconst confirmTermsAndConditions = (token: string): Promise> => {\r\n return axios.post(\r\n `${apiUrl}/trk/common/user/text-confirm`,\r\n {},\r\n {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n },\r\n );\r\n};\r\n\r\nexport default {\r\n getGtc,\r\n getDtp,\r\n confirmTermsAndConditions,\r\n};\r\n","import { ApiResponseReportDetailsList, ApiGetTableFilters, ApiResponseGetTable } from './types/report';\nimport axios, { AxiosResponse } from 'axios';\n\nimport { apiUrl } from '@/config/api';\n\nconst list = (token: string): Promise> => {\n return axios.post(\n `${apiUrl}/trk/tracking/report/list`,\n {\n deviceReports: false,\n deviceCollectionReports: true,\n },\n {\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n },\n );\n};\n\nconst getTable = (token: string, filters: ApiGetTableFilters): Promise> => {\n return axios.post(`${apiUrl}/trk/tracking/report/getTable`, filters, {\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n });\n};\n\nexport default {\n list,\n getTable,\n};\n","import auth from '@/api/auth';\r\nimport device from '@/api/device';\r\nimport groups from '@/api/groups';\r\nimport events from '@/api/events';\r\nimport terms from '@/api/terms-and-conditions';\r\nimport report from '@/api/report';\r\n\r\nexport default {\r\n auth,\r\n device,\r\n groups,\r\n events,\r\n terms,\r\n report,\r\n};\r\n","import axios from 'axios';\r\n\r\nexport const apiUrl = `https://portalbeta.tracker.com/api`;\r\n\r\nexport const configureInterceptor = (\r\n callbackLogout: () => void,\r\n addActiveRequest: (id: string) => void,\r\n removeActiveRequest: (id: string | number | boolean) => void,\r\n) => {\r\n axios.interceptors.request.use(\r\n (config) => {\r\n addActiveRequest(config.url);\r\n return config;\r\n },\r\n (error) => {\r\n return Promise.reject(error);\r\n },\r\n );\r\n axios.interceptors.response.use(\r\n function (response) {\r\n const url = response.config.url;\r\n\r\n removeActiveRequest(url);\r\n if (response.status === 401) {\r\n callbackLogout();\r\n }\r\n return response;\r\n },\r\n function (error) {\r\n const { response } = error;\r\n const url = response.config.url;\r\n\r\n removeActiveRequest(url);\r\n if (response.status === 401) {\r\n callbackLogout();\r\n }\r\n return Promise.reject(error);\r\n },\r\n );\r\n};\r\n","export const mapSettings = [\n {\n id: 0,\n name: 'roadmap',\n },\n {\n id: 1,\n name: 'roadmap_terrain',\n },\n {\n id: 2,\n name: 'satellite',\n },\n {\n id: 3,\n name: 'satellite_labels',\n },\n {\n id: 4,\n name: 'map_id',\n },\n];\n","import modal from './modal.json';\r\nimport eventsTypes from './eventsTypes.json';\r\nimport filterSelect from './filterSelect.json';\r\nimport reportExportModal from './reportExportModal.json';\r\n\r\nexport default {\r\n modal,\r\n eventsTypes,\r\n filterSelect,\r\n reportExportModal,\r\n};\r\n","import auth from './auth.json';\r\nimport layout from './layout.json';\r\nimport maps from './maps.json';\r\nimport reports from './reports.json';\r\n\r\nexport default {\r\n auth,\r\n layout,\r\n maps,\r\n reports,\r\n};\r\n","import components from './components';\r\nimport pages from './pages';\r\n\r\nexport default {\r\n components,\r\n pages,\r\n};\r\n","import modal from './modal.json';\r\nimport eventsTypes from './eventsTypes.json';\r\nimport filterSelect from './filterSelect.json';\r\nimport reportExportModal from './reportExportModal.json';\r\n\r\nexport default {\r\n modal,\r\n eventsTypes,\r\n filterSelect,\r\n reportExportModal,\r\n};\r\n","import auth from './auth.json';\r\nimport layout from './layout.json';\r\nimport maps from './maps.json';\r\nimport reports from './reports.json';\r\n\r\nexport default {\r\n auth,\r\n layout,\r\n maps,\r\n reports,\r\n};\r\n","import components from './components';\r\nimport pages from './pages';\r\n\r\nexport default {\r\n components,\r\n pages,\r\n};\r\n","import modal from './modal.json';\r\nimport eventsTypes from './eventsTypes.json';\r\nimport filterSelect from './filterSelect.json';\r\nimport reportExportModal from './reportExportModal.json';\r\n\r\nexport default {\r\n modal,\r\n eventsTypes,\r\n filterSelect,\r\n reportExportModal,\r\n};\r\n","import auth from './auth.json';\r\nimport layout from './layout.json';\r\nimport maps from './maps.json';\r\nimport reports from './reports.json';\r\n\r\nexport default {\r\n auth,\r\n layout,\r\n maps,\r\n reports,\r\n};\r\n","import components from './components';\r\nimport pages from './pages';\r\n\r\nexport default {\r\n components,\r\n pages,\r\n};\r\n","import modal from './modal.json';\r\nimport eventsTypes from './eventsTypes.json';\r\nimport filterSelect from './filterSelect.json';\r\nimport reportExportModal from './reportExportModal.json';\r\n\r\nexport default {\r\n modal,\r\n eventsTypes,\r\n filterSelect,\r\n reportExportModal,\r\n};\r\n","import auth from './auth.json';\r\nimport layout from './layout.json';\r\nimport maps from './maps.json';\r\nimport reports from './reports.json';\r\n\r\nexport default {\r\n auth,\r\n layout,\r\n maps,\r\n reports,\r\n};\r\n","import components from './components';\r\nimport pages from './pages';\r\n\r\nexport default {\r\n components,\r\n pages,\r\n};\r\n","import { createI18n } from 'vue-i18n';\r\n\r\nimport de from './de';\r\nimport fr from './fr';\r\nimport it from './it';\r\nimport en from './en';\r\n\r\nconst i18n = createI18n({\r\n legacy: false, // you must set `false`, to use Composition API\r\n globalInjection: true,\r\n locale: 'de',\r\n fallbackLocale: 'de',\r\n messages: {\r\n de,\r\n fr,\r\n it,\r\n en,\r\n },\r\n});\r\n\r\nexport default i18n;\r\n","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\nimport _imports_0 from '@/assets/rotate.svg'\n\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-795525e0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"banner-container\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"banner-box\"\n}\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\" We use 🍪 for more details check our \")\nconst _hoisted_4 = [\"href\"]\nconst _hoisted_5 = {\n key: 1,\n class: \"banner-box\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"p\", null, \"Please enable notifications in your browser.\", -1))\nconst _hoisted_7 = {\n key: 0,\n class: \"page-rotate\"\n}\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"img\", { src: _imports_0 }, null, -1))\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", null, \"Bitte verwenden Sie die Applikation im Portrait-Mode\", -1))\nconst _hoisted_10 = [\n _hoisted_8,\n _hoisted_9\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (_openBlock(), _createBlock(_component_router_view, {\n key: _ctx.$route.path\n })),\n _createVNode(_Transition, { name: \"slide\" }, {\n default: _withCtx(() => [\n (_ctx.showBanner || _ctx.isNotificationMessage)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.showBanner)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"p\", null, [\n _hoisted_3,\n _createElementVNode(\"a\", {\n href: _ctx.$t('pages.maps.user_settings.privacy.url'),\n target: \"_blank\"\n }, _toDisplayString(_ctx.$t('pages.maps.user_settings.privacy.label')), 9, _hoisted_4)\n ]),\n _createElementVNode(\"button\", {\n class: \"button accept-btn\",\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.okBannerClicked && _ctx.okBannerClicked(...args)))\n }, \"OK\")\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.isNotificationMessage && _ctx.isAllowedSubscriptions)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _hoisted_6,\n _createElementVNode(\"button\", {\n class: \"button accept-btn\",\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.closeNotificationMessage && _ctx.closeNotificationMessage(...args)))\n }, \"Hide message\")\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n (_ctx.isOs)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, _hoisted_10))\n : _createCommentVNode(\"\", true)\n ], 64))\n}","import { ref, watch, computed } from 'vue';\nimport { useCookie } from 'vue-cookie-next';\n\nconst allowCookies = ref();\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport default function useCookies(gtag: any) {\n const cookie = useCookie();\n\n if (cookie.isCookieAvailable('cookies_consent')) {\n allowCookies.value = cookie.getCookie('cookies_consent') === 'true';\n gtag.optIn();\n } else {\n allowCookies.value = undefined;\n }\n\n watch(allowCookies, () => {\n if (allowCookies.value != undefined) {\n cookie.setCookie('cookies_consent', allowCookies.value.toString(), {\n expire: new Date(new Date().setFullYear(new Date().getFullYear() + 1)), //next year\n });\n if (allowCookies.value) {\n gtag.optIn();\n } else {\n gtag.optOut();\n }\n }\n });\n\n const showBanner = computed(() => {\n return allowCookies.value === undefined;\n });\n\n const okClicked = () => (allowCookies.value = true);\n\n return {\n allowCookies,\n showBanner,\n okClicked,\n };\n}\n","\r\nimport { computed, defineComponent, inject } from 'vue';\r\nimport { useStore } from 'vuex';\r\nimport { UAParser } from 'ua-parser-js';\r\nimport useCookies from './lib/useCookies';\r\n\r\nexport default defineComponent({\r\n setup() {\r\n const store = useStore();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const gtag = inject('gtag');\r\n const { showBanner, okClicked } = useCookies(gtag);\r\n\r\n const isNotificationMessage = computed(() => store.getters['ui/isNotificationMessage']);\r\n\r\n const isAllowedSubscriptions = computed(() => {\r\n if (store.getters['auth/userSettingString']('allowSubscriptions') === 'True') {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n });\r\n\r\n const okBannerClicked = () => {\r\n okClicked();\r\n };\r\n\r\n const closeNotificationMessage = (): void => {\r\n store.commit('ui/closeNotificationMessage');\r\n };\r\n\r\n const isOs = computed(() => {\r\n const parser = new UAParser();\r\n if (parser.getOS().name.toLowerCase().includes('ios')) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n });\r\n\r\n return {\r\n isOs,\r\n showBanner,\r\n isNotificationMessage,\r\n isAllowedSubscriptions,\r\n okBannerClicked,\r\n closeNotificationMessage,\r\n };\r\n },\r\n});\r\n","import { render } from \"./App.vue?vue&type=template&id=795525e0&scoped=true&ts=true\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=795525e0&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\projects\\\\tracker-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-795525e0\"]])\n\nexport default __exports__","import { renderSlot as _renderSlot, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"disabled\", \"type\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"button\", {\n disabled: _ctx.disabled,\n type: _ctx.type,\n class: \"button\"\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 8, _hoisted_1))\n}","\r\nimport { defineComponent } from 'vue';\r\n\r\nexport default defineComponent({\r\n name: 'MyButton',\r\n props: {\r\n type: {\r\n type: String,\r\n default: 'button',\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n});\r\n","import { render } from \"./MyButton.vue?vue&type=template&id=0603e57a&ts=true\"\nimport script from \"./MyButton.vue?vue&type=script&lang=ts\"\nexport * from \"./MyButton.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\projects\\\\tracker-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, vModelRadio as _vModelRadio, withDirectives as _withDirectives, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\"\nimport _imports_0 from '@/assets/maps/close.svg'\n\n\nconst _hoisted_1 = { class: \"filter-select-label\" }\nconst _hoisted_2 = [\"alt\"]\nconst _hoisted_3 = {\n key: 0,\n class: \"filter-select-options\"\n}\nconst _hoisted_4 = [\"id\", \"value\"]\nconst _hoisted_5 = [\"for\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n ref: \"refDropdownList\",\n class: _normalizeClass({ 'filter-select': true, 'filter-select--open': _ctx.isOpen })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"filter-select-name\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.isOpen = !_ctx.isOpen))\n }, _toDisplayString(_ctx.currentText), 1),\n _createElementVNode(\"span\", {\n class: \"filter-select-close\",\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.clear && _ctx.clear(...args)))\n }, [\n _createElementVNode(\"img\", {\n src: _imports_0,\n alt: _ctx.$t('components.filterSelect.close_alt')\n }, null, 8, _hoisted_2)\n ])\n ]),\n (_ctx.isOpen)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (option) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: option.value,\n class: \"components-checkbox components-checkbox--radio components-checkbox--left\"\n }, [\n _withDirectives(_createElementVNode(\"input\", {\n id: `${_ctx.prefix}-${option.value}`,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.value) = $event)),\n type: \"radio\",\n value: option.value\n }, null, 8, _hoisted_4), [\n [_vModelRadio, _ctx.value]\n ]),\n _createElementVNode(\"label\", {\n for: `${_ctx.prefix}-${option.value}`\n }, _toDisplayString(option.text), 9, _hoisted_5)\n ]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ], 2))\n}","\r\nimport { defineComponent, PropType, ref, watch, computed } from 'vue';\r\nimport { onClickOutside } from '@vueuse/core';\r\n\r\ninterface FilterSelectOption {\r\n value: string;\r\n text: string;\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'FilterSelect',\r\n props: {\r\n modelValue: {\r\n type: String,\r\n default: null,\r\n },\r\n options: {\r\n type: Array as PropType>,\r\n default: () => [],\r\n },\r\n prefix: {\r\n type: String,\r\n default: 'filter-select',\r\n },\r\n empty: {\r\n type: String,\r\n default: 'empty',\r\n },\r\n },\r\n emits: ['update:modelValue'],\r\n setup(props, { emit }) {\r\n const isOpen = ref(false);\r\n const value = ref(props.modelValue);\r\n watch(value, () => {\r\n emit('update:modelValue', value);\r\n });\r\n const currentText = computed(() => {\r\n const optionIndex = props.options.findIndex((o: FilterSelectOption) => o.value === value.value);\r\n if (optionIndex >= 0) {\r\n return props.options[optionIndex].text;\r\n }\r\n return props.empty;\r\n });\r\n\r\n const clear = () => {\r\n isOpen.value = false;\r\n emit('update:modelValue', null);\r\n };\r\n const close = (): void => {\r\n isOpen.value = false;\r\n };\r\n\r\n const refDropdownList = ref(null);\r\n onClickOutside(refDropdownList, () => close());\r\n return {\r\n value,\r\n currentText,\r\n isOpen,\r\n clear,\r\n close,\r\n refDropdownList,\r\n };\r\n },\r\n});\r\n","import { render } from \"./FilterSelect.vue?vue&type=template&id=5f93be09&ts=true\"\nimport script from \"./FilterSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./FilterSelect.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\projects\\\\tracker-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, vModelCheckbox as _vModelCheckbox, withDirectives as _withDirectives, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\"\nimport _imports_0 from '@/assets/maps/close.svg'\n\n\nconst _hoisted_1 = { class: \"filter-select-label\" }\nconst _hoisted_2 = [\"alt\"]\nconst _hoisted_3 = {\n key: 0,\n class: \"filter-select-options\"\n}\nconst _hoisted_4 = [\"id\", \"value\"]\nconst _hoisted_5 = [\"for\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n ref: \"refDropdownList\",\n class: _normalizeClass({ 'filter-select': true, 'filter-select--open': _ctx.isOpen })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"filter-select-name\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.isOpen = !_ctx.isOpen))\n }, _toDisplayString(_ctx.currentText), 1),\n _createElementVNode(\"span\", {\n class: \"filter-select-close\",\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.clear && _ctx.clear(...args)))\n }, [\n _createElementVNode(\"img\", {\n src: _imports_0,\n alt: _ctx.$t('components.filterSelect.close_alt')\n }, null, 8, _hoisted_2)\n ])\n ]),\n (_ctx.isOpen)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (option) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: option.value,\n class: \"components-checkbox components-checkbox--left\"\n }, [\n _withDirectives(_createElementVNode(\"input\", {\n id: `${_ctx.prefix}-${option.value}`,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.value) = $event)),\n type: \"checkbox\",\n value: option.value\n }, null, 8, _hoisted_4), [\n [_vModelCheckbox, _ctx.value]\n ]),\n _createElementVNode(\"label\", {\n for: `${_ctx.prefix}-${option.value}`\n }, _toDisplayString(option.text), 9, _hoisted_5)\n ]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ], 2))\n}","\r\nimport { defineComponent, PropType, ref, watch, computed } from 'vue';\r\nimport { onClickOutside } from '@vueuse/core';\r\n\r\ninterface FilterSelectOption {\r\n value: string;\r\n text: string;\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'FilterSelectMulti',\r\n props: {\r\n modelValue: {\r\n type: Array as PropType>,\r\n default: () => [],\r\n },\r\n options: {\r\n type: Array as PropType>,\r\n default: () => [],\r\n },\r\n prefix: {\r\n type: String,\r\n default: 'filter-select',\r\n },\r\n empty: {\r\n type: String,\r\n default: 'empty',\r\n },\r\n },\r\n emits: ['update:modelValue'],\r\n setup(props, { emit }) {\r\n const isOpen = ref(false);\r\n const value = ref(props.modelValue);\r\n watch(value, () => {\r\n emit('update:modelValue', value);\r\n });\r\n const currentText = computed(() => {\r\n const optionIndex = props.options.findIndex((o: FilterSelectOption) => value.value.includes(o.value));\r\n if (optionIndex >= 0) {\r\n if (value.value.length > 1) {\r\n return `${props.options[optionIndex].text} (+${value.value.length - 1})`;\r\n }\r\n return props.options[optionIndex].text;\r\n }\r\n return props.empty;\r\n });\r\n\r\n const clear = () => {\r\n isOpen.value = false;\r\n emit('update:modelValue', []);\r\n };\r\n const close = (): void => {\r\n isOpen.value = false;\r\n };\r\n const refDropdownList = ref(null);\r\n onClickOutside(refDropdownList, () => close());\r\n return {\r\n value,\r\n currentText,\r\n isOpen,\r\n clear,\r\n close,\r\n refDropdownList,\r\n };\r\n },\r\n});\r\n","import { render } from \"./FilterSelectMulti.vue?vue&type=template&id=6144e26e&ts=true\"\nimport script from \"./FilterSelectMulti.vue?vue&type=script&lang=ts\"\nexport * from \"./FilterSelectMulti.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\projects\\\\tracker-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Vue3Datepicker = _resolveComponent(\"Vue3Datepicker\")!\n\n return (_openBlock(), _createBlock(_component_Vue3Datepicker, {\n \"model-value\": _ctx.modelValue,\n \"lower-limit\": _ctx.lowerLimit,\n \"upper-limit\": _ctx.upperLimit,\n locale: _ctx.datepickerLanguage,\n type: _ctx.type,\n \"input-format\": 'dd.MM.yyyy',\n disabled: _ctx.disabled,\n \"disabled-dates\": { dates: _ctx.disabledDatesArr },\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => (_ctx.$emit('update', $event)))\n }, null, 8, [\"model-value\", \"lower-limit\", \"upper-limit\", \"locale\", \"type\", \"input-format\", \"disabled\", \"disabled-dates\"]))\n}","\r\nimport { defineComponent, computed } from 'vue';\r\nimport Vue3Datepicker from 'vue3-datepicker';\r\nimport { de, enGB, fr, it } from 'date-fns/locale';\r\nimport { useI18n } from 'vue-i18n';\r\n\r\nconst getDatePickerLanguage = (lang: string) => {\r\n switch (lang) {\r\n case 'en':\r\n return enGB;\r\n case 'fr':\r\n return fr;\r\n case 'it':\r\n return it;\r\n case 'de':\r\n default:\r\n return de;\r\n }\r\n};\r\n\r\nexport default defineComponent({\r\n name: 'Datepicker',\r\n components: {\r\n Vue3Datepicker,\r\n },\r\n props: {\r\n modelValue: Vue3Datepicker.props.modelValue,\r\n lowerLimit: Vue3Datepicker.props.lowerLimit,\r\n upperLimit: Vue3Datepicker.props.upperLimit,\r\n disabledDatapicker: Boolean,\r\n disabledDates: Vue3Datepicker.props.disabledDates,\r\n type: Vue3Datepicker.props.type,\r\n },\r\n emits: ['update'],\r\n setup(props) {\r\n const i18n = useI18n({ useScope: 'global' });\r\n\r\n const disabledDatesArr = computed(() => props.disabledDates);\r\n const disabled = computed(() => props.disabledDatapicker);\r\n\r\n return {\r\n datepickerLanguage: getDatePickerLanguage(i18n.locale.value),\r\n disabledDatesArr,\r\n disabled,\r\n };\r\n },\r\n});\r\n","import { render } from \"./Datepicker.vue?vue&type=template&id=10ef888e&ts=true\"\nimport script from \"./Datepicker.vue?vue&type=script&lang=ts\"\nexport * from \"./Datepicker.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\projects\\\\tracker-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { App } from 'vue';\r\n\r\nimport MyButton from '@/components/MyButton.vue';\r\nimport FilterSelect from '@/components/filter-select/FilterSelect.vue';\r\nimport FilterSelectMulti from '@/components/filter-select/FilterSelectMulti.vue';\r\nimport Datepicker from '@/components/Datepicker/Datepicker.vue';\r\n\r\nexport default function registerGlobalComponents(app: App): void {\r\n app.component('FilterSelect', FilterSelect);\r\n app.component('FilterSelectMulti', FilterSelectMulti);\r\n app.component('Datepicker', Datepicker);\r\n app.component('MyButton', MyButton);\r\n}\r\n","/* eslint-disable no-async-promise-executor */\r\nimport { ActionContext } from 'vuex';\r\n\r\nimport api from '@/api';\r\nimport router from '@/router';\r\n\r\nimport { ApiAccount, ApiAccountUserSetting } from '@/api/types/auth';\r\n\r\ninterface AuthState {\r\n account: ApiAccount;\r\n isAdmin: boolean;\r\n accountRequestPending: boolean;\r\n}\r\n\r\nconst auth = {\r\n namespaced: true,\r\n state: {\r\n account: {},\r\n isAdmin: false,\r\n accountRequestPending: false,\r\n },\r\n getters: {\r\n userSettingBoolean(state: AuthState) {\r\n return (settingKey: string): boolean => {\r\n let value = false;\r\n if (state.account.UserSettings) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const userSettingsFromServer: any = state.account.UserSettings;\r\n const valueFromServer = userSettingsFromServer[`${settingKey}`];\r\n\r\n if (valueFromServer) {\r\n value = valueFromServer === 'True';\r\n }\r\n }\r\n\r\n return value;\r\n };\r\n },\r\n userSettingString(state: AuthState) {\r\n return (settingKey: string): string | null => {\r\n let value = null;\r\n if (state.account.UserSettings) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const userSettingsFromServer: any = state.account.UserSettings;\r\n const valueFromServer = userSettingsFromServer[`${settingKey}`];\r\n\r\n if (valueFromServer) {\r\n value = valueFromServer;\r\n }\r\n }\r\n\r\n return value;\r\n };\r\n },\r\n isAdmin(state: AuthState) {\r\n return state.isAdmin;\r\n },\r\n userSettings(state: AuthState) {\r\n return state.account.UserSettings;\r\n },\r\n userId(state: AuthState) {\r\n return state.account.Id;\r\n },\r\n },\r\n mutations: {\r\n startAccountRequest(state: AuthState): void {\r\n state.accountRequestPending = true;\r\n },\r\n endAccountRequest(state: AuthState): void {\r\n state.accountRequestPending = false;\r\n },\r\n updateAccount(state: AuthState, account: ApiAccount): void {\r\n state.account = account;\r\n },\r\n updateAdminRole(state: AuthState, isAdmin: boolean): void {\r\n state.isAdmin = isAdmin;\r\n },\r\n updateAccountSettings(state: AuthState, settings: ApiAccountUserSetting): void {\r\n if (state.account.UserSettings) {\r\n const userSettings = state.account.UserSettings;\r\n state.account.UserSettings = { ...userSettings, [`${settings.Key}`]: settings.Value };\r\n } else {\r\n state.account = { ...state.account, UserSettings: { [`${settings.Key}`]: settings.Value } };\r\n }\r\n },\r\n clearAccount(state: AuthState): void {\r\n state.account = {};\r\n state.isAdmin = false;\r\n },\r\n },\r\n actions: {\r\n login(\r\n context: ActionContext,\r\n credentials: { username: string; password: string },\r\n ): Promise {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const token = btoa(`${credentials.username}:${credentials.password}`);\r\n const authToken = await api.auth.login(token);\r\n\r\n window.localStorage.setItem('authcredentials', authToken.data.Token);\r\n /* context.dispatch('account'); */\r\n resolve(true);\r\n } catch {\r\n reject(new Error('auth_error'));\r\n }\r\n });\r\n },\r\n\r\n logout(context: ActionContext): void {\r\n try {\r\n window.localStorage.removeItem('authcredentials');\r\n context.dispatch('groups/clearList', null, { root: true });\r\n context.dispatch('groups/clearFilters', null, { root: true });\r\n context.dispatch('device/clearList', null, { root: true });\r\n context.dispatch('device/clearDates', null, { root: true });\r\n context.dispatch('device/clearRoutes', null, { root: true });\r\n context.dispatch('layers/clearList', null, { root: true });\r\n context.dispatch('ui/clearLanguage', null, { root: true });\r\n context.dispatch('events/clearList', null, { root: true });\r\n context.dispatch('clearAccount');\r\n context.dispatch('device/clearFilters', null, { root: true });\r\n // TODO - when token will be available: await api.auth.logout(window.localStorage.getItem('authcredentials'));\r\n // eslint-disable-next-line no-empty\r\n } catch {\r\n } finally {\r\n router.push({ name: 'login' });\r\n }\r\n },\r\n\r\n verifyUser(context: ActionContext): Promise {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n if (window.localStorage.getItem('authcredentials') !== null) {\r\n try {\r\n /* const token = window.localStorage.getItem('authcredentials');\r\n const authToken = await api.auth.login(`Bearer ${token}` || '');\r\n window.localStorage.setItem('authcredentials', authToken.data.Token); */\r\n await context.dispatch('account');\r\n resolve(true);\r\n } catch {\r\n reject(new Error('auth_error'));\r\n }\r\n } else {\r\n reject(new Error('auth_error'));\r\n }\r\n } catch {\r\n reject(new Error('storage_error'));\r\n }\r\n });\r\n },\r\n\r\n redeem(context: ActionContext, token: string): Promise {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const authToken = await api.auth.redeem(`${token}`);\r\n\r\n window.localStorage.setItem('authcredentials', authToken.data.Token);\r\n context.dispatch('account');\r\n resolve(true);\r\n } catch {\r\n reject(new Error('auth_error'));\r\n }\r\n });\r\n },\r\n\r\n clearAccount(context: ActionContext): void {\r\n context.commit('clearAccount');\r\n },\r\n\r\n async account(context: ActionContext): Promise {\r\n context.commit('startAccountRequest');\r\n try {\r\n const token = window.localStorage.getItem('authcredentials');\r\n const response = await api.auth.account(token || '');\r\n context.commit('updateAccount', {\r\n ...response.data,\r\n });\r\n // check and set admin flag\r\n context.commit(\r\n 'updateAdminRole',\r\n response.data.Rolenames\r\n ? response.data?.Rolenames.some((e) => e.toLowerCase().includes('admin'))\r\n : false,\r\n );\r\n context.commit('ui/updateLanguage', response.data?.LanguageCode, { root: true });\r\n } catch (err) {\r\n // console.log(err);\r\n } finally {\r\n context.commit('endAccountRequest');\r\n }\r\n },\r\n\r\n async updateAccount(context: ActionContext, userData: ApiAccount): Promise {\r\n context.commit('startAccountRequest');\r\n try {\r\n const token = window.localStorage.getItem('authcredentials');\r\n await api.auth.updateAccount(token || '', userData);\r\n } catch (err) {\r\n // console.log(err);\r\n } finally {\r\n context.commit('endAccountRequest');\r\n }\r\n },\r\n\r\n updateUserSetting(context: ActionContext, userSetting: ApiAccountUserSetting): void {\r\n context.commit('updateAccountSettings', { Key: userSetting.Key, Value: userSetting.Value });\r\n },\r\n\r\n async updateAndSaveUserSettings(context: ActionContext): Promise {\r\n try {\r\n const token = window.localStorage.getItem('authcredentials');\r\n await api.auth.updateAccount(token || '', { UserSettings: context.state.account.UserSettings });\r\n } catch (err) {\r\n // console.log(err);\r\n }\r\n },\r\n\r\n async updateFirebaseToken(context: ActionContext, tokenFCM: string) {\r\n try {\r\n const token = window.localStorage.getItem('authcredentials');\r\n await api.auth.updateAccount(token || '', {\r\n UserSettings: {\r\n ...context.state.account.UserSettings,\r\n tokenFCM: JSON.stringify([\r\n ...JSON.parse(context.state.account.UserSettings.tokenFCM),\r\n {\r\n token: tokenFCM,\r\n timestamp: new Date().getTime(),\r\n environment: process.env.VUE_APP_NAME,\r\n },\r\n ]),\r\n },\r\n });\r\n } catch (err) {\r\n // console.log(err);\r\n }\r\n },\r\n\r\n async unsubscribeAllDevices(context: ActionContext) {\r\n try {\r\n const token = window.localStorage.getItem('authcredentials');\r\n await api.auth.updateAccount(token || '', {\r\n UserSettings: {\r\n ...context.state.account.UserSettings,\r\n allowSubscriptions: 'False',\r\n tokenFCM: JSON.stringify([]),\r\n },\r\n });\r\n } catch (err) {\r\n // console.log(err);\r\n }\r\n },\r\n },\r\n};\r\n\r\nexport default auth;\r\n","export const locales = [\r\n {\r\n code: 'de',\r\n name: 'Deutsch',\r\n },\r\n {\r\n code: 'en',\r\n name: 'english',\r\n },\r\n {\r\n code: 'it',\r\n name: 'Italiano',\r\n },\r\n {\r\n code: 'fr',\r\n name: 'Français',\r\n },\r\n];\r\n\r\nexport const localesCodes = locales.map(({ code }) => code);\r\nexport const localesDefault = 'de';\r\n\r\nconst getLocalesUserDefault = (): string => {\r\n try {\r\n const storedLocale = window.localStorage.getItem('locale');\r\n if (storedLocale !== null) {\r\n if (localesCodes.includes(storedLocale)) {\r\n return storedLocale;\r\n }\r\n }\r\n } catch {\r\n // local storage error\r\n }\r\n\r\n const userLanguage = window.navigator.language;\r\n let lang = userLanguage ? userLanguage.split('-')[0] : localesDefault;\r\n lang = localesCodes.includes(lang) ? lang : localesDefault;\r\n return lang;\r\n};\r\n\r\nexport const localesUserDefault = getLocalesUserDefault();\r\n\r\nexport const localeNameByCode = (code: string): string | null => {\r\n const locale = locales.find((l) => l.code === code);\r\n if (typeof locale === 'undefined') {\r\n return null;\r\n }\r\n return locale.name;\r\n};\r\n","/* eslint-disable no-async-promise-executor */\r\nimport { ActionContext } from 'vuex';\r\n\r\nimport { localesCodes, localesDefault } from '@/config/locales';\r\n\r\ninterface ApiUiSettings {\r\n UserLanguageCode?: string;\r\n}\r\ninterface UiMobileItem {\r\n isOpen: boolean;\r\n}\r\ninterface UiSearchMobileItem extends UiMobileItem {\r\n isSearchInputVisiable: boolean;\r\n}\r\ninterface UiUserModalMobileItem extends UiMobileItem {\r\n isUserModalVisiable: boolean;\r\n}\r\n\r\ninterface UiSettingState {\r\n settings: ApiUiSettings;\r\n isMobileMenuOpen: boolean;\r\n isTermsAndConditionsModalOpen: boolean;\r\n isNotificationMessage: boolean;\r\n toolbarState: {\r\n isSearchLocationVisible: boolean;\r\n isMapLayersVisible: boolean;\r\n isDeviceLayersVisible: boolean;\r\n isDeviceGeofenciesVisible: boolean;\r\n };\r\n mobileMenuState: {\r\n deviceList: UiMobileItem;\r\n layers: UiMobileItem;\r\n geofencies: UiMobileItem;\r\n mapType: UiMobileItem;\r\n searchSettings: UiSearchMobileItem;\r\n profileSettings: UiUserModalMobileItem;\r\n };\r\n}\r\n\r\nconst ui = {\r\n namespaced: true,\r\n state: {\r\n settings: {},\r\n isMobileMenuOpen: false,\r\n isTermsAndConditionsModalOpen: false,\r\n isNotificationMessage: true,\r\n toolbarState: {\r\n isSearchLocationVisible: false,\r\n isMapLayersVisible: false,\r\n isDeviceLayersVisible: false,\r\n isDeviceGeofenciesVisible: false,\r\n },\r\n mobileMenuState: {\r\n deviceList: {\r\n isOpen: false,\r\n },\r\n layers: {\r\n isOpen: false,\r\n },\r\n geofencies: {\r\n isOpen: false,\r\n },\r\n mapType: {\r\n isOpen: false,\r\n },\r\n searchSettings: {\r\n isOpen: false,\r\n isSearchInputVisiable: false,\r\n },\r\n profileSettings: {\r\n isOpen: false,\r\n isUserModalVisiable: false,\r\n },\r\n },\r\n },\r\n getters: {\r\n languageCode(state: UiSettingState): string {\r\n if (\r\n typeof state.settings.UserLanguageCode !== 'undefined' &&\r\n localesCodes.includes(state.settings.UserLanguageCode.toLowerCase())\r\n ) {\r\n return state.settings.UserLanguageCode.toLowerCase();\r\n }\r\n return localesDefault;\r\n },\r\n isMobileMenuOpen(state: UiSettingState): boolean {\r\n return state.isMobileMenuOpen;\r\n },\r\n isTermsAndConditionsModalOpen(state: UiSettingState): boolean {\r\n return state.isTermsAndConditionsModalOpen;\r\n },\r\n isNotificationMessage(state: UiSettingState): boolean {\r\n return state.isNotificationMessage;\r\n },\r\n isDeviceListSubmenuOpen(state: UiSettingState): boolean {\r\n return state.mobileMenuState.deviceList.isOpen;\r\n },\r\n isLayersSubmenuOpen(state: UiSettingState): boolean {\r\n return state.mobileMenuState.layers.isOpen;\r\n },\r\n isGeofenciesSubmenuOpen(state: UiSettingState): boolean {\r\n return state.mobileMenuState.geofencies.isOpen;\r\n },\r\n isMapTypeSubmenuOpen(state: UiSettingState): boolean {\r\n return state.mobileMenuState.mapType.isOpen;\r\n },\r\n isSearchSettingsSubmenuOpen(state: UiSettingState): boolean {\r\n return state.mobileMenuState.searchSettings.isOpen;\r\n },\r\n isProfileSettingsSubmenuOpen(state: UiSettingState): boolean {\r\n return state.mobileMenuState.profileSettings.isOpen;\r\n },\r\n isSearchInputVisible(state: UiSettingState): boolean {\r\n return state.mobileMenuState.searchSettings.isSearchInputVisiable;\r\n },\r\n isUserModalVisible(state: UiSettingState): boolean {\r\n return state.mobileMenuState.profileSettings.isUserModalVisiable;\r\n },\r\n isToolbarSearchLocationVisible(state: UiSettingState): boolean {\r\n return state.toolbarState.isSearchLocationVisible;\r\n },\r\n isToolbarMapLayersVisible(state: UiSettingState): boolean {\r\n return state.toolbarState.isMapLayersVisible;\r\n },\r\n isToolbarDeviceLayersVisible(state: UiSettingState): boolean {\r\n return state.toolbarState.isDeviceLayersVisible;\r\n },\r\n isToolbarDeviceGeofenciesVisible(state: UiSettingState): boolean {\r\n return state.toolbarState.isDeviceGeofenciesVisible;\r\n },\r\n },\r\n mutations: {\r\n updateLanguage(state: UiSettingState, language: string): void {\r\n state.settings = { UserLanguageCode: language };\r\n },\r\n openMobileMenu(state: UiSettingState): void {\r\n state.isMobileMenuOpen = true;\r\n },\r\n closeMobileMenu(state: UiSettingState): void {\r\n state.isMobileMenuOpen = false;\r\n },\r\n triggerMobileMenu(state: UiSettingState): void {\r\n state.isMobileMenuOpen = !state.isMobileMenuOpen;\r\n },\r\n openTermsAndConditionsModal(state: UiSettingState): void {\r\n state.isTermsAndConditionsModalOpen = true;\r\n },\r\n closeTermsAndConditionsModal(state: UiSettingState): void {\r\n state.isTermsAndConditionsModalOpen = false;\r\n },\r\n openNotificationMessage(state: UiSettingState): void {\r\n state.isNotificationMessage = true;\r\n },\r\n closeNotificationMessage(state: UiSettingState): void {\r\n state.isNotificationMessage = false;\r\n },\r\n triggerDeviceListSubmenu(state: UiSettingState): void {\r\n state.mobileMenuState.deviceList.isOpen = !state.mobileMenuState.deviceList.isOpen;\r\n },\r\n triggerLayersSubmenu(state: UiSettingState): void {\r\n state.mobileMenuState.layers.isOpen = !state.mobileMenuState.layers.isOpen;\r\n },\r\n triggerGeofenciesSubmenu(state: UiSettingState): void {\r\n state.mobileMenuState.geofencies.isOpen = !state.mobileMenuState.geofencies.isOpen;\r\n },\r\n triggerMapTypeSubmenu(state: UiSettingState): void {\r\n state.mobileMenuState.mapType.isOpen = !state.mobileMenuState.mapType.isOpen;\r\n },\r\n triggerSearchSettingsSubmenu(state: UiSettingState): void {\r\n state.mobileMenuState.searchSettings.isOpen = !state.mobileMenuState.searchSettings.isOpen;\r\n },\r\n triggerProfileSettingsSubmenu(state: UiSettingState): void {\r\n state.mobileMenuState.profileSettings.isOpen = !state.mobileMenuState.profileSettings.isOpen;\r\n },\r\n triggerSearchInputVisibility(state: UiSettingState): void {\r\n state.mobileMenuState.searchSettings.isSearchInputVisiable =\r\n !state.mobileMenuState.searchSettings.isSearchInputVisiable;\r\n },\r\n openUserModalVisibility(state: UiSettingState): void {\r\n state.mobileMenuState.profileSettings.isUserModalVisiable = true;\r\n },\r\n closeUserModalVisibility(state: UiSettingState): void {\r\n state.mobileMenuState.profileSettings.isUserModalVisiable = false;\r\n },\r\n triggerToolbarSearchLocationVisibility(state: UiSettingState): void {\r\n state.toolbarState.isSearchLocationVisible = !state.toolbarState.isSearchLocationVisible;\r\n },\r\n showToolbarSearchLocationVisibility(state: UiSettingState): void {\r\n state.toolbarState.isSearchLocationVisible = true;\r\n },\r\n closeToolbarSearchLocationVisibility(state: UiSettingState): void {\r\n state.toolbarState.isSearchLocationVisible = false;\r\n },\r\n triggerToolbarMapLayersVisibility(state: UiSettingState): void {\r\n state.toolbarState.isMapLayersVisible = !state.toolbarState.isMapLayersVisible;\r\n },\r\n showToolbarMapLayersVisibility(state: UiSettingState): void {\r\n state.toolbarState.isMapLayersVisible = true;\r\n },\r\n closeToolbarMapLayersVisibility(state: UiSettingState): void {\r\n state.toolbarState.isMapLayersVisible = false;\r\n },\r\n triggerToolbarDeviceLayersVisibility(state: UiSettingState): void {\r\n state.toolbarState.isDeviceLayersVisible = !state.toolbarState.isDeviceLayersVisible;\r\n },\r\n showToolbarDeviceLayersVisibility(state: UiSettingState): void {\r\n state.toolbarState.isDeviceLayersVisible = true;\r\n },\r\n closeToolbarDeviceLayersVisibility(state: UiSettingState): void {\r\n state.toolbarState.isDeviceLayersVisible = false;\r\n },\r\n triggerToolbarDeviceGeofenciesVisibility(state: UiSettingState): void {\r\n state.toolbarState.isDeviceGeofenciesVisible = !state.toolbarState.isDeviceGeofenciesVisible;\r\n },\r\n showToolbarDeviceGeofenciesVisibility(state: UiSettingState): void {\r\n state.toolbarState.isDeviceGeofenciesVisible = true;\r\n },\r\n closeToolbarDeviceGeofenciesVisibility(state: UiSettingState): void {\r\n state.toolbarState.isDeviceGeofenciesVisible = false;\r\n },\r\n clearUiSettings(state: UiSettingState): void {\r\n state.settings = {};\r\n state.isMobileMenuOpen = false;\r\n state.isTermsAndConditionsModalOpen = false;\r\n state.isNotificationMessage = false;\r\n (state.toolbarState = {\r\n isSearchLocationVisible: false,\r\n isMapLayersVisible: false,\r\n isDeviceLayersVisible: false,\r\n isDeviceGeofenciesVisible: false,\r\n }),\r\n (state.mobileMenuState = {\r\n deviceList: {\r\n isOpen: false,\r\n },\r\n layers: {\r\n isOpen: false,\r\n },\r\n geofencies: {\r\n isOpen: false,\r\n },\r\n mapType: {\r\n isOpen: false,\r\n },\r\n searchSettings: {\r\n isOpen: false,\r\n isSearchInputVisiable: false,\r\n },\r\n profileSettings: {\r\n isOpen: false,\r\n isUserModalVisiable: false,\r\n },\r\n });\r\n },\r\n },\r\n actions: {\r\n changeLanguage(context: ActionContext, language: string): void {\r\n context.commit('updateLanguage', language);\r\n },\r\n clearLanguage(context: ActionContext): void {\r\n context.commit('clearUiSettings');\r\n },\r\n },\r\n};\r\n\r\nexport default ui;\r\n","import { ActionContext } from 'vuex';\r\n\r\nimport api from '@/api';\r\nimport { ApiGroupsList, ApiGroupsListItem } from '@/api/types/groups';\r\nimport { Sorting, SortingDir } from '@/types/sorting';\r\n\r\ninterface GroupsState {\r\n list: ApiGroupsList;\r\n listRequestPending: boolean;\r\n listSorting: Sorting;\r\n listSortingDir: SortingDir;\r\n listSortingOptions: Sorting[];\r\n listSearchFilter: string;\r\n}\r\n\r\nconst groups = {\r\n namespaced: true,\r\n state: {\r\n list: {},\r\n listRequestPending: false,\r\n listSorting: Sorting.NAME,\r\n listSortingDir: SortingDir.ASC,\r\n listSortingOptions: [Sorting.NAME],\r\n listSearchFilter: '',\r\n },\r\n getters: {\r\n items(state: GroupsState): Array {\r\n if (typeof state.list.List === 'undefined' || !state.list.List || state.list.List.length === 0) {\r\n return [];\r\n }\r\n\r\n const items = JSON.parse(JSON.stringify(state.list.List));\r\n\r\n items.sort((a: ApiGroupsListItem, b: ApiGroupsListItem) => {\r\n const dirModifier = state.listSortingDir === SortingDir.DESC ? -1 : 1;\r\n\r\n if (\r\n state.listSorting === Sorting.CODE &&\r\n Object.prototype.hasOwnProperty.call(a, 'Code') &&\r\n Object.prototype.hasOwnProperty.call(b, 'Code')\r\n ) {\r\n return (a.Code > b.Code ? 1 : b.Code > a.Code ? -1 : 0) * dirModifier;\r\n }\r\n return (a.Name > b.Name ? 1 : b.Name > a.Name ? -1 : 0) * dirModifier;\r\n });\r\n return items.filter((item: ApiGroupsListItem) =>\r\n item.Name?.toLocaleLowerCase().includes(state.listSearchFilter?.toLocaleLowerCase()),\r\n );\r\n },\r\n groups(state: GroupsState): Array {\r\n return (\r\n state.list?.List?.map((groupe) => ({\r\n Id: groupe.Id,\r\n Name: groupe.Name,\r\n Code: groupe.Code,\r\n Color: groupe.Color,\r\n })) || []\r\n );\r\n },\r\n },\r\n mutations: {\r\n startListRequest(state: GroupsState): void {\r\n state.listRequestPending = true;\r\n },\r\n endListRequest(state: GroupsState): void {\r\n state.listRequestPending = false;\r\n },\r\n updateList(state: GroupsState, list: ApiGroupsList): void {\r\n state.list = list;\r\n },\r\n updateSortingOptions(state: GroupsState, list: Sorting[]): void {\r\n state.listSortingOptions = list;\r\n state.listSorting = list[0];\r\n },\r\n clearList(state: GroupsState): void {\r\n state.list = {};\r\n },\r\n clearFilters(state: GroupsState): void {\r\n state.listRequestPending = false;\r\n state.listSorting = Sorting.NAME;\r\n state.listSortingDir = SortingDir.ASC;\r\n state.listSortingOptions = [Sorting.NAME];\r\n state.listSearchFilter = '';\r\n },\r\n updateListSorting(state: GroupsState, sort: Sorting): void {\r\n state.listSorting = sort;\r\n },\r\n updateListSortingDir(state: GroupsState, dir: SortingDir): void {\r\n state.listSortingDir = dir;\r\n },\r\n updateListSearchFilter(state: GroupsState, searchPhrase: string): void {\r\n state.listSearchFilter = searchPhrase;\r\n },\r\n },\r\n actions: {\r\n clearList(context: ActionContext): void {\r\n context.commit('clearList');\r\n },\r\n clearFilters(context: ActionContext): void {\r\n context.commit('clearFilters');\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n async list(context: ActionContext, translate: any): Promise {\r\n context.commit('startListRequest');\r\n try {\r\n const token = window.localStorage.getItem('authcredentials');\r\n const response = await api.groups.list(token || '');\r\n // eslint-disable-next-line no-unused-expressions\r\n response.data?.List\r\n ? response.data?.List.forEach((elem) => {\r\n const isCode = Object.prototype.hasOwnProperty.call(elem, 'Code');\r\n if (isCode) {\r\n context.commit('updateSortingOptions', [Sorting.CODE, Sorting.NAME]);\r\n }\r\n })\r\n : [];\r\n\r\n // create special group for devices without groups\r\n if (response.data?.List && response.data?.List.length > 0) {\r\n response.data.List = [\r\n ...response.data.List,\r\n {\r\n Id: -1,\r\n Name: translate('components.reportExportModal.devicesFilters.emptyGroup.name'),\r\n Code: '',\r\n Color: '#000',\r\n },\r\n ];\r\n }\r\n\r\n context.commit('updateList', response.data);\r\n } catch (err) {\r\n // console.log(err);\r\n } finally {\r\n context.commit('endListRequest');\r\n }\r\n },\r\n },\r\n};\r\n\r\nexport default groups;\r\n","import { ActionContext } from 'vuex';\r\n\r\nimport api from '@/api';\r\nimport { ApiDeviceLayers, ApiDeviceLayersItem } from '@/api/types/device';\r\n\r\ninterface LayersState {\r\n list: ApiDeviceLayers;\r\n listRequestPending: boolean;\r\n}\r\n\r\nexport interface ILayerForFilter {\r\n id: number;\r\n name: string;\r\n type: string;\r\n}\r\n\r\nconst layers = {\r\n namespaced: true,\r\n state: {\r\n list: {},\r\n listRequestPending: false,\r\n },\r\n getters: {\r\n layersForFilter(state: LayersState): Array {\r\n const polygons =\r\n state.list.List?.filter((l) => l.GeographyType === 'Polygon').map((l) => ({\r\n id: l.Id,\r\n name: l.Name,\r\n type: 'Polygon',\r\n })) || [];\r\n\r\n const categories = [];\r\n for (const item of state.list?.List || []) {\r\n if (item.GeographyType !== 'Point') {\r\n continue;\r\n }\r\n\r\n if (typeof item.Category === 'undefined') {\r\n continue;\r\n }\r\n\r\n const categoryIndex = categories.findIndex((c) => c.id === item.Category?.Id);\r\n if (categoryIndex === -1) {\r\n categories.push({\r\n id: item.Category.Id,\r\n name: item.Category.Name,\r\n type: 'Category',\r\n });\r\n }\r\n }\r\n\r\n return [...polygons, ...categories];\r\n },\r\n categoriesForFilter(state: LayersState): Array {\r\n const categories = [];\r\n for (const item of state.list?.List || []) {\r\n if (typeof item.Category === 'undefined') {\r\n continue;\r\n }\r\n\r\n const categoryIndex = categories.findIndex((c) => c.id === item.Category?.Id);\r\n if (categoryIndex === -1) {\r\n categories.push({\r\n id: item.Category.Id,\r\n name: item.Category.Name,\r\n type: 'Category',\r\n });\r\n }\r\n }\r\n\r\n return [...categories];\r\n },\r\n },\r\n mutations: {\r\n startListRequest(state: LayersState): void {\r\n state.listRequestPending = true;\r\n },\r\n endListRequest(state: LayersState): void {\r\n state.listRequestPending = false;\r\n },\r\n updateList(state: LayersState, list: ApiDeviceLayers): void {\r\n state.list = list;\r\n },\r\n clearList(state: LayersState): void {\r\n state.list = {};\r\n },\r\n },\r\n actions: {\r\n clearList(context: ActionContext): void {\r\n context.commit('clearList');\r\n },\r\n async list(context: ActionContext): Promise {\r\n context.commit('startListRequest');\r\n try {\r\n const token = window.localStorage.getItem('authcredentials');\r\n const response = await api.device.layers(token || '');\r\n\r\n let layers: Array = [];\r\n for (const item of response?.data.List || []) {\r\n if (typeof item.Category === 'undefined') {\r\n layers = [\r\n ...layers,\r\n {\r\n ...item,\r\n Category: {\r\n Id: 0,\r\n Name: '_empty',\r\n Key: '',\r\n },\r\n },\r\n ];\r\n } else {\r\n layers = [\r\n ...layers,\r\n {\r\n ...item,\r\n },\r\n ];\r\n }\r\n }\r\n context.commit('updateList', { ...response.data, List: layers });\r\n } catch (err) {\r\n // console.log(err);\r\n } finally {\r\n context.commit('endListRequest');\r\n }\r\n },\r\n },\r\n};\r\n\r\nexport default layers;\r\n","import { ActionContext } from 'vuex';\r\n\r\nimport api from '@/api';\r\nimport { ApiDeviceActions, ApiDeviceActionsItem, ApiDeviceListItem } from '@/api/types/device';\r\n\r\ninterface FencesState {\r\n list: ApiDeviceActions;\r\n listRequestPending: boolean;\r\n}\r\n\r\nconst fences = {\r\n namespaced: true,\r\n state: {\r\n list: {},\r\n listRequestPending: false,\r\n },\r\n getters: {\r\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\r\n deviceFences(state: FencesState, getters: any, rootState: any) {\r\n return (deviceActive: number | null): Array => {\r\n let fencesIn: Array | unknown = [];\r\n let fencesOut: Array | unknown = [];\r\n let fences: Array = [];\r\n\r\n if (!deviceActive) {\r\n return [];\r\n }\r\n const device = rootState.device?.list?.List?.find((d: ApiDeviceListItem) => d.Id === deviceActive);\r\n\r\n if (!device || !state.list) {\r\n fences = [];\r\n } else {\r\n if (typeof device.GeofIn === 'undefined' || !device.GeofIn || device.GeofIn.length === 0) {\r\n fencesIn = [];\r\n } else {\r\n fencesIn = state.list.List?.filter((f) => device.GeofIn.includes(f.Id));\r\n }\r\n\r\n if (typeof device.GeofOut === 'undefined' || !device.GeofOut || device.GeofOut.length === 0) {\r\n fencesOut = [];\r\n } else {\r\n fencesOut = state.list.List?.filter((f) => device.GeofOut.includes(f.Id));\r\n }\r\n fences =\r\n [...(fencesIn as Array), ...(fencesOut as Array)] ||\r\n [];\r\n }\r\n\r\n return fences || [];\r\n };\r\n },\r\n },\r\n mutations: {\r\n startListRequest(state: FencesState): void {\r\n state.listRequestPending = true;\r\n },\r\n endListRequest(state: FencesState): void {\r\n state.listRequestPending = false;\r\n },\r\n updateList(state: FencesState, list: ApiDeviceActions): void {\r\n state.list = list;\r\n },\r\n clearList(state: FencesState): void {\r\n state.list = {};\r\n },\r\n },\r\n actions: {\r\n clearList(context: ActionContext): void {\r\n context.commit('clearList');\r\n },\r\n async list(context: ActionContext): Promise {\r\n context.commit('startListRequest');\r\n try {\r\n const token = window.localStorage.getItem('authcredentials');\r\n const response = await api.device.fences(token || '');\r\n context.commit('updateList', response.data);\r\n } catch (err) {\r\n // console.log(err);\r\n } finally {\r\n context.commit('endListRequest');\r\n }\r\n },\r\n },\r\n};\r\n\r\nexport default fences;\r\n","import { ActionContext } from 'vuex';\r\n\r\nimport api from '@/api';\r\nimport { ApiEventsList, PropertiesList } from '@/api/types/events';\r\n\r\ninterface EventsState {\r\n list: ApiEventsList;\r\n listRequestPending: boolean;\r\n}\r\n\r\nconst events = {\r\n namespaced: true,\r\n state: {\r\n list: {},\r\n listRequestPending: false,\r\n },\r\n getters: {\r\n items(state: EventsState): Array {\r\n if (typeof state.list.List === 'undefined' || !state.list.List || state.list.List.length === 0) {\r\n return [];\r\n }\r\n\r\n const items = JSON.parse(JSON.stringify(state.list.List));\r\n return items;\r\n },\r\n },\r\n mutations: {\r\n startListRequest(state: EventsState): void {\r\n state.listRequestPending = true;\r\n },\r\n endListRequest(state: EventsState): void {\r\n state.listRequestPending = false;\r\n },\r\n updateList(state: EventsState, list: ApiEventsList): void {\r\n state.list = list;\r\n },\r\n clearList(state: EventsState): void {\r\n state.list = {};\r\n },\r\n },\r\n actions: {\r\n clearList(context: ActionContext): void {\r\n context.commit('clearList');\r\n },\r\n async list(context: ActionContext, data: PropertiesList): Promise {\r\n context.commit('startListRequest');\r\n try {\r\n const token = window.localStorage.getItem('authcredentials');\r\n const response = await api.events.list(data, token || '');\r\n context.commit('updateList', response.data);\r\n } catch (err) {\r\n // console.log(err);\r\n } finally {\r\n context.commit('endListRequest');\r\n }\r\n },\r\n },\r\n};\r\n\r\nexport default events;\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { ActionContext } from 'vuex';\r\n\r\nimport api from '@/api';\r\nimport { ApiReportDetailsItem } from '@/api/types/report';\r\nimport { format } from 'date-fns';\r\nimport { DataTab } from './device';\r\n\r\nfunction removeSecondsFromTimeString(timeString) {\r\n const [hours, minutes] = timeString.split(':');\r\n return `${hours}:${minutes}`;\r\n}\r\n\r\ninterface ReportDataItem {\r\n list: Array;\r\n columns: Array;\r\n}\r\n\r\ninterface ReportState {\r\n ReportDetailsList: Array;\r\n data: {\r\n list: Array;\r\n columns: Array;\r\n };\r\n listRequestPending: boolean;\r\n activeReport: string | null;\r\n dateFrom: string;\r\n dateTo: string;\r\n deviceIds: Array;\r\n cardType: DataTab;\r\n tableSettings: any;\r\n dataStoredForUser: number | null;\r\n}\r\n\r\nconst report = {\r\n namespaced: true,\r\n state: {\r\n ReportDetailsList: [],\r\n data: {\r\n list: [],\r\n columns: [],\r\n },\r\n listRequestPending: false,\r\n activeReport: null,\r\n dateFrom: format(new Date(), 'yyyy-MM-dd'),\r\n dateTo: format(new Date(), 'yyyy-MM-dd'),\r\n deviceIds: [],\r\n cardType: DataTab.Devices,\r\n tableSettings: {},\r\n dataStoredForUser: null,\r\n },\r\n getters: {\r\n reportDetailsList(state: ReportState): Array {\r\n return state.ReportDetailsList;\r\n },\r\n data(state: ReportState): ReportDataItem {\r\n return state.data;\r\n },\r\n dateFrom(state: ReportState): string {\r\n return state.dateFrom;\r\n },\r\n dateTo(state: ReportState): string {\r\n return state.dateTo;\r\n },\r\n deviceIds(state: ReportState): Array {\r\n return state.deviceIds;\r\n },\r\n activeReport(state: ReportState): string {\r\n return state.activeReport;\r\n },\r\n cardType(state: ReportState): string {\r\n return state.cardType;\r\n },\r\n tableSettings(state: ReportState): any {\r\n return state.tableSettings;\r\n },\r\n dataStoredForUser(state: ReportState): number | null {\r\n return state.dataStoredForUser;\r\n },\r\n },\r\n mutations: {\r\n startListRequest(state: ReportState): void {\r\n state.listRequestPending = true;\r\n },\r\n endListRequest(state: ReportState): void {\r\n state.listRequestPending = false;\r\n },\r\n updateDataList(state: ReportState, data: ReportDataItem): void {\r\n state.data = data;\r\n },\r\n updateReportsList(state: ReportState, list: Array): void {\r\n state.ReportDetailsList = list;\r\n },\r\n updateDeviceIds(state: ReportState, devices: Array): void {\r\n state.deviceIds = devices;\r\n },\r\n updateDateFrom(state: ReportState, date: string): void {\r\n state.dateFrom = date;\r\n },\r\n updateDateTo(state: ReportState, date: string): void {\r\n state.dateTo = date;\r\n },\r\n updateActiveReport(state: ReportState, activeReport: string): void {\r\n state.activeReport = activeReport;\r\n },\r\n storeTableSettings(state: ReportState, tableSettings: any): void {\r\n state.tableSettings = tableSettings;\r\n },\r\n updateUserId(state: ReportState, userId: number): void {\r\n state.dataStoredForUser = userId;\r\n },\r\n changeTabType(state: ReportState, type: DataTab): void {\r\n state.cardType = type;\r\n },\r\n clearReportsList(state: ReportState): void {\r\n state.ReportDetailsList = [];\r\n },\r\n clearActiveReport(state: ReportState): void {\r\n state.activeReport = '';\r\n },\r\n clearStoreTableSettings(state: ReportState): void {\r\n state.tableSettings = {};\r\n },\r\n clearDeviceIds(state: ReportState): void {\r\n state.deviceIds = [];\r\n },\r\n clearState(state: ReportState): void {\r\n state.ReportDetailsList = [];\r\n state.data = {\r\n list: [],\r\n columns: [],\r\n };\r\n state.listRequestPending = false;\r\n state.activeReport = null;\r\n state.dateFrom = format(new Date(), 'yyyy-MM-dd');\r\n state.dateTo = format(new Date(), 'yyyy-MM-dd');\r\n state.deviceIds = [];\r\n state.cardType = DataTab.Devices;\r\n state.tableSettings = {};\r\n state.dataStoredForUser = null;\r\n },\r\n },\r\n actions: {\r\n async list(context: ActionContext): Promise {\r\n context.commit('startListRequest');\r\n try {\r\n const token = window.localStorage.getItem('authcredentials');\r\n const response = await api.report.list(token || '');\r\n const reports = response.data.ReportDetails.filter((r) => r.ReportResultType === 'Table').map((r) => ({\r\n value: r.Code,\r\n text: r.Caption,\r\n }));\r\n\r\n context.commit('updateReportsList', reports);\r\n } catch (err) {\r\n // console.log(err);\r\n } finally {\r\n context.commit('endListRequest');\r\n }\r\n },\r\n async table(context: ActionContext): Promise {\r\n context.commit('startListRequest');\r\n try {\r\n const token = window.localStorage.getItem('authcredentials');\r\n const response = await api.report.getTable(token || '', {\r\n ReportCode: context.state.activeReport,\r\n from: context.state.dateFrom,\r\n until: context.state.dateTo,\r\n deviceIds: context.state.deviceIds,\r\n });\r\n const reportList = response.data?.TableData.List.map((r, index) => ({\r\n ...r,\r\n ID: index + 1,\r\n Route_Date: format(new Date(r.Route_Date), 'yyyy-MM-dd'),\r\n Route_Duration: removeSecondsFromTimeString(r.Route_Duration),\r\n Route_Start_Time: removeSecondsFromTimeString(r.Route_Start_Time),\r\n Route_End_Time: removeSecondsFromTimeString(r.Route_End_Time),\r\n }));\r\n\r\n context.commit('updateDataList', {\r\n list: reportList,\r\n columns: response.data?.TableData.Fields,\r\n });\r\n } catch (err) {\r\n // console.log(err);\r\n } finally {\r\n context.commit('endListRequest');\r\n }\r\n },\r\n },\r\n};\r\n\r\nexport default report;\r\n","import { createStore } from 'vuex';\r\nimport createPersistedState from 'vuex-persistedstate';\r\n\r\nimport auth from './auth';\r\nimport ui from './ui';\r\nimport device from './device';\r\nimport groups from './groups';\r\nimport layers from './layers';\r\nimport fences from './fences';\r\nimport events from './events';\r\nimport report from './report';\r\n\r\nconst dataPersisted = createPersistedState({\r\n key: 'ui-settings',\r\n paths: ['ui', 'report'],\r\n});\r\n\r\nexport default createStore({\r\n plugins: [dataPersisted],\r\n modules: {\r\n auth,\r\n ui,\r\n device,\r\n groups,\r\n layers,\r\n fences,\r\n events,\r\n report,\r\n },\r\n});\r\n","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, vModelText as _vModelText, normalizeClass as _normalizeClass, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode } from \"vue\"\nimport _imports_0 from '@/assets/logo-tracker.svg'\n\n\nconst _hoisted_1 = { class: \"page-auth\" }\nconst _hoisted_2 = { class: \"auth-container\" }\nconst _hoisted_3 = { class: \"login-logo\" }\nconst _hoisted_4 = [\"alt\"]\nconst _hoisted_5 = { class: \"auth-title\" }\nconst _hoisted_6 = { class: \"login-input\" }\nconst _hoisted_7 = [\"placeholder\"]\nconst _hoisted_8 = { class: \"login-input\" }\nconst _hoisted_9 = [\"placeholder\"]\nconst _hoisted_10 = {\n key: 0,\n class: \"login-error\"\n}\nconst _hoisted_11 = {\n type: \"submit\",\n class: \"button auth-button\"\n}\nconst _hoisted_12 = { class: \"forgot-bar\" }\nconst _hoisted_13 = {\n href: \"https://www.tracker.com/\",\n class: \"auth-powered\",\n target: \"_blank\"\n}\nconst _hoisted_14 = [\"alt\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NavLink = _resolveComponent(\"NavLink\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"img\", {\n src: _imports_0,\n alt: _ctx.$t('pages.auth.login.logo_alt')\n }, null, 8, _hoisted_4)\n ]),\n _createElementVNode(\"h1\", _hoisted_5, _toDisplayString(_ctx.$t('pages.auth.login.title')), 1),\n _createElementVNode(\"form\", {\n class: \"login-form\",\n onSubmit: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.handleSubmit && _ctx.handleSubmit(...args)))\n }, [\n _createElementVNode(\"div\", _hoisted_6, [\n _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.username) = $event)),\n class: _normalizeClass({ error: _ctx.error }),\n type: \"text\",\n placeholder: _ctx.$t('pages.auth.login.placeholder.username')\n }, null, 10, _hoisted_7), [\n [_vModelText, _ctx.username]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.password) = $event)),\n class: _normalizeClass({ error: _ctx.error }),\n type: \"password\",\n placeholder: _ctx.$t('pages.auth.login.placeholder.password')\n }, null, 10, _hoisted_9), [\n [_vModelText, _ctx.password]\n ])\n ]),\n (_ctx.error)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, _toDisplayString(_ctx.$t('pages.auth.login.error')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", _hoisted_11, _toDisplayString(_ctx.$t('pages.auth.login.button')), 1)\n ], 32),\n _createElementVNode(\"div\", _hoisted_12, [\n _createVNode(_component_router_link, {\n to: \"/forgot-password\",\n custom: \"\"\n }, {\n default: _withCtx(({ href, navigate, isActive }) => [\n _createVNode(_component_NavLink, {\n active: isActive,\n href: href,\n onClick: navigate\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('pages.auth.login.forgot_button')), 1)\n ]),\n _: 2\n }, 1032, [\"active\", \"href\", \"onClick\"])\n ]),\n _: 1\n })\n ])\n ]),\n _createElementVNode(\"a\", _hoisted_13, [\n _createTextVNode(_toDisplayString(_ctx.$t('pages.auth.login.powered_by')) + \" \", 1),\n _createElementVNode(\"img\", {\n src: _imports_0,\n alt: _ctx.$t('pages.auth.login.powered_by_alt')\n }, null, 8, _hoisted_14)\n ])\n ]))\n}","\nimport { Options, Vue } from 'vue-class-component';\n\n@Options({})\nexport default class Home extends Vue {\n username = '';\n password = '';\n error = false;\n\n private async handleSubmit(e: Event): Promise {\n e.preventDefault();\n\n this.error = false;\n if (this.username === '' || this.password === '') {\n this.error = true;\n return;\n }\n\n const credentials = {\n username: this.username,\n password: this.password,\n };\n\n try {\n const response = await this.$store.dispatch('auth/login', credentials);\n if (response === true) {\n this.$router.replace({ name: 'maps' });\n } else {\n this.error = true;\n }\n } catch {\n this.error = true;\n }\n }\n}\n","import { render } from \"./Login.vue?vue&type=template&id=279877d3&ts=true\"\nimport script from \"./Login.vue?vue&type=script&lang=ts\"\nexport * from \"./Login.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\projects\\\\tracker-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\nimport _imports_0 from '@/assets/logo-tracker.svg'\n\n\nconst _hoisted_1 = { class: \"page-auth\" }\nconst _hoisted_2 = {\n href: \"https://www.tracker.com/\",\n class: \"auth-powered\",\n target: \"_blank\"\n}\nconst _hoisted_3 = [\"alt\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"a\", _hoisted_2, [\n _createTextVNode(_toDisplayString(_ctx.$t('pages.auth.login.powered_by')) + \" \", 1),\n _createElementVNode(\"img\", {\n src: _imports_0,\n alt: _ctx.$t('pages.auth.login.powered_by_alt')\n }, null, 8, _hoisted_3)\n ])\n ]))\n}","\nimport { defineComponent, onMounted } from 'vue';\nimport { useStore } from 'vuex';\nimport router from '@/router';\nimport { useRoute } from 'vue-router';\n\nexport default defineComponent({\n name: 'Redeem',\n setup() {\n const store = useStore();\n const route = useRoute();\n\n onMounted(async () => {\n const urlQuery = route.query;\n const token = urlQuery?.tokenKey;\n\n if (!token) {\n router.push({ name: 'maps' });\n }\n\n try {\n await store.dispatch('auth/redeem', token);\n } catch (error) {\n new Error(error);\n }\n\n router.replace({ name: 'maps' });\n });\n },\n});\n","import { render } from \"./Redeem.vue?vue&type=template&id=d9ab41c6&ts=true\"\nimport script from \"./Redeem.vue?vue&type=script&lang=ts\"\nexport * from \"./Redeem.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\projects\\\\tracker-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, vModelText as _vModelText, normalizeClass as _normalizeClass, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode } from \"vue\"\nimport _imports_0 from '@/assets/logo-tracker.svg'\n\n\nconst _hoisted_1 = { class: \"page-auth\" }\nconst _hoisted_2 = { class: \"auth-container\" }\nconst _hoisted_3 = { class: \"login-logo\" }\nconst _hoisted_4 = [\"alt\"]\nconst _hoisted_5 = { class: \"auth-title\" }\nconst _hoisted_6 = { class: \"login-input\" }\nconst _hoisted_7 = [\"placeholder\"]\nconst _hoisted_8 = {\n key: 0,\n class: \"login-error\"\n}\nconst _hoisted_9 = {\n type: \"submit\",\n class: \"button auth-button\"\n}\nconst _hoisted_10 = { class: \"forgot-bar\" }\nconst _hoisted_11 = {\n href: \"https://www.tracker.com/\",\n class: \"auth-powered\",\n target: \"_blank\"\n}\nconst _hoisted_12 = [\"alt\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NavLink = _resolveComponent(\"NavLink\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"img\", {\n src: _imports_0,\n alt: _ctx.$t('pages.auth.login.logo_alt')\n }, null, 8, _hoisted_4)\n ]),\n _createElementVNode(\"h1\", _hoisted_5, _toDisplayString(_ctx.$t('pages.auth.forgot.title')), 1),\n _createElementVNode(\"form\", {\n class: \"login-form\",\n onSubmit: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.handleSubmit && _ctx.handleSubmit(...args)))\n }, [\n _createElementVNode(\"div\", _hoisted_6, [\n _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.email) = $event)),\n class: _normalizeClass({ error: _ctx.error }),\n type: \"text\",\n placeholder: _ctx.$t('pages.auth.forgot.placeholder.email')\n }, null, 10, _hoisted_7), [\n [_vModelText, _ctx.email]\n ])\n ]),\n (_ctx.error)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, _toDisplayString(_ctx.$t('pages.auth.forgot.error')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", _hoisted_9, _toDisplayString(_ctx.$t('pages.auth.forgot.button')), 1)\n ], 32),\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(_component_router_link, {\n to: \"/login\",\n custom: \"\"\n }, {\n default: _withCtx(({ href, navigate, isActive }) => [\n _createVNode(_component_NavLink, {\n active: isActive,\n href: href,\n onClick: navigate\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('pages.auth.forgot.login_button')), 1)\n ]),\n _: 2\n }, 1032, [\"active\", \"href\", \"onClick\"])\n ]),\n _: 1\n })\n ])\n ]),\n _createElementVNode(\"a\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_ctx.$t('pages.auth.login.powered_by')) + \" \", 1),\n _createElementVNode(\"img\", {\n src: _imports_0,\n alt: _ctx.$t('pages.auth.login.powered_by_alt')\n }, null, 8, _hoisted_12)\n ])\n ]))\n}","\nimport { Options, Vue } from 'vue-class-component';\n\n@Options({})\nexport default class Home extends Vue {\n email = '';\n error = false;\n\n private async handleSubmit(e: Event): Promise {\n e.preventDefault();\n const emailRegExp =\n /^(([^\\s\"(),.:;<>@[\\\\\\]]+(\\.[^\\s\"(),.:;<>@[\\\\\\]]+)*)|(\".+\"))@((\\[(?:\\d{1,3}\\.){3}\\d{1,3}])|(([\\dA-Za-z]+\\.)+[A-Za-z]{2,}))$/;\n\n const isValidEmail = this.email.match(emailRegExp);\n\n this.error = false;\n if (isValidEmail === null) {\n this.error = true;\n return;\n }\n\n const credentials = {\n email: this.email,\n };\n\n // eslint-disable-next-line no-console\n console.log(credentials);\n }\n}\n","import { render } from \"./ForgotPassword.vue?vue&type=template&id=614641f7&ts=true\"\nimport script from \"./ForgotPassword.vue?vue&type=script&lang=ts\"\nexport * from \"./ForgotPassword.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\projects\\\\tracker-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, withModifiers as _withModifiers, withCtx as _withCtx, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, Transition as _Transition, Fragment as _Fragment } from \"vue\"\nimport _imports_0 from '@/assets/auth/exit.svg'\nimport _imports_1 from '@/assets/logo-tracker.svg'\n\n\nconst _hoisted_1 = {\n key: 0,\n class: \"page-layout__spinner\"\n}\nconst _hoisted_2 = { class: \"page-layout\" }\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"layout-navigation-placeholder\" }, null, -1)\nconst _hoisted_4 = { class: \"layout-navigation\" }\nconst _hoisted_5 = {\n key: 0,\n class: \"navigation-logo\"\n}\nconst _hoisted_6 = [\"href\"]\nconst _hoisted_7 = [\"src\", \"alt\"]\nconst _hoisted_8 = {\n key: 1,\n class: \"navigation-logo\"\n}\nconst _hoisted_9 = [\"src\", \"alt\"]\nconst _hoisted_10 = { class: \"navigation-profile-avatar\" }\nconst _hoisted_11 = [\"src\", \"alt\"]\nconst _hoisted_12 = /*#__PURE__*/_createElementVNode(\"span\", { class: \"navigation-profile-avatar-edit\" }, [\n /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\"\n }, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n d: \"M1.6463,14.353A.4962.4962,0,0,0,2,14.5a.5939.5939,0,0,0,.138-.018l4.199-1.2.0078-.0026a.121.121,0,0,0,.0232-.0094l.04-.017a.4819.4819,0,0,0,.146-.099l7.179-7.179a2.622,2.622,0,0,0-3.708-3.708L2.8463,9.446a.4949.4949,0,0,0-.1.147l-.009.02.001-.001a.4291.4291,0,0,0-.019.05l-1.2,4.2A.5.5,0,0,0,1.6463,14.353Zm3.6-1.8-2.518.719.72-2.517Zm.954-.46,5.572-5.572L9.4793,4.228,3.9073,9.8Zm6.826-6.826-.547.547-2.293-2.293.547-.547a1.6236,1.6236,0,0,1,2.293,0A1.6236,1.6236,0,0,1,13.0263,5.267Z\",\n \"fill-rule\": \"evenodd\"\n })\n ])\n], -1)\nconst _hoisted_13 = { class: \"navigation-profile-name\" }\nconst _hoisted_14 = /*#__PURE__*/_createElementVNode(\"span\", { class: \"navigation-profile-arrow\" }, [\n /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"12\",\n height: \"10\",\n viewBox: \"0 0 12 10\"\n }, [\n /*#__PURE__*/_createElementVNode(\"polygon\", {\n points: \"5.95 10 0.646 4.697 1.354 3.99 5.95 8.586 10.546 3.99 11.253 4.697 5.95 10\",\n fill: \"#8b8b8b\"\n })\n ])\n], -1)\nconst _hoisted_15 = { class: \"navigation-menu\" }\nconst _hoisted_16 = /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M26.9219,6.4282l-6.25-2.5a2.0621,2.0621,0,0,0-1.5313,0L12.4878,6.59a1.0606,1.0606,0,0,1-.3922.0761l-.0018,0-.0016,0A1.0579,1.0579,0,0,1,11.7,6.59L5.5386,4.1255A1.282,1.282,0,0,0,3.7812,5.3193V20.291a2.0534,2.0534,0,0,0,1.2969,1.9151l6.2505,2.5009a2.0538,2.0538,0,0,0,1.5308-.0009l3.001-1.2012a.5.5,0,1,0-.3721-.9278l-2.8945,1.1581V7.5967a2.061,2.061,0,0,0,.2656-.0781l6.5468-2.62v7.1951a.5.5,0,1,0,1,0V4.8991l6.1446,2.4578a1.0565,1.0565,0,0,1,.668.9869V12.875a.5.5,0,0,0,1,0V8.3438A2.0526,2.0526,0,0,0,26.9219,6.4282ZM5.45,21.2783a1.06,1.06,0,0,1-.6685-.9873V5.3169A.2882.2882,0,0,1,4.8018,5.21a.2824.2824,0,0,1,.3657-.1558l6.1606,2.4644a2.0619,2.0619,0,0,0,.2657.078v16.14Zm17.7786-.4441a.4974.4974,0,0,1-.1971.0408.8915.8915,0,0,1-.8906-.8906l0-.0005,0,0a.879.879,0,0,1,.6956-.8512.5025.5025,0,0,1,.39,0,.8677.8677,0,0,1,.6561.6562.5011.5011,0,0,1,0,.39A.8677.8677,0,0,1,23.2283,20.8342Zm-.2,7.3846a1.2693,1.2693,0,0,1-.7871-.2725,1.2863,1.2863,0,0,1-.2187-.2188c-1.5606-1.9941-4.1787-5.6523-4.1787-7.7441a5.1875,5.1875,0,1,1,10.375,0c0,2.0889-2.6182,5.748-4.1788,7.7432a1.2714,1.2714,0,0,1-.8545.4834A1.4266,1.4266,0,0,1,23.0283,28.2188Zm.0029-12.4229a4.1927,4.1927,0,0,0-4.1874,4.1875c0,1.29,1.4824,3.9541,3.9658,7.127a.32.32,0,0,0,.2558.1064.2821.2821,0,0,0,.1875-.1055c2.4834-3.1758,3.9659-5.84,3.9659-7.1279A4.1928,4.1928,0,0,0,23.0312,15.7959Z\" })\n], -1)\nconst _hoisted_17 = { class: \"navigation-logout\" }\nconst _hoisted_18 = /*#__PURE__*/_createElementVNode(\"img\", {\n src: _imports_0,\n alt: 'logout'\n}, null, -1)\nconst _hoisted_19 = [\n _hoisted_18\n]\nconst _hoisted_20 = { class: \"navigation-locale\" }\nconst _hoisted_21 = {\n href: \"https://www.tracker.com/\",\n class: \"navigation-powered\",\n target: \"_blank\"\n}\nconst _hoisted_22 = [\"alt\"]\nconst _hoisted_23 = { class: \"navigation-old-frontend\" }\nconst _hoisted_24 = {\n href: \"https://admin.tracker.com/\",\n class: \"redirect-button\",\n target: \"_blank\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_vLottiePlayer = _resolveComponent(\"vLottiePlayer\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n const _component_user_settings_modal = _resolveComponent(\"user-settings-modal\")!\n const _component_terms_and_conditions_modal = _resolveComponent(\"terms-and-conditions-modal\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (_ctx.isPending)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_vLottiePlayer, {\n name: \"workoutMonkeyAnim\",\n loop: \"\",\n animationData: require('@/assets/lottie/loader.json')\n }, null, 8, [\"animationData\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, [\n (!!_ctx.companyUrl)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"a\", {\n href: _ctx.companyUrl,\n rel: \"external\",\n class: \"redirect-button\",\n target: \"_blank\"\n }, [\n _createElementVNode(\"img\", {\n src: _ctx.companyPicture,\n alt: _ctx.$t('pages.layout.logo_alt')\n }, null, 8, _hoisted_7)\n ], 8, _hoisted_6)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"img\", {\n src: _ctx.companyPicture,\n alt: _ctx.$t('pages.layout.logo_alt')\n }, null, 8, _hoisted_9)\n ])),\n _createElementVNode(\"div\", {\n class: _normalizeClass({ 'navigation-content': true, 'navigation-content--open': _ctx.mobileNavOpen })\n }, [\n _createElementVNode(\"button\", {\n class: \"navigation-profile\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.openUserModalSettings && _ctx.openUserModalSettings(...args)), [\"prevent\"]))\n }, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"img\", {\n class: \"navigation-profile-avatar-image\",\n src: _ctx.userPicture,\n alt: _ctx.userName\n }, null, 8, _hoisted_11),\n _hoisted_12\n ]),\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.userName), 1),\n _hoisted_14\n ]),\n _createElementVNode(\"nav\", _hoisted_15, [\n _createVNode(_component_router_link, {\n to: { name: 'maps' },\n \"exact-active-class\": \"active\"\n }, {\n default: _withCtx(() => [\n _hoisted_16,\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('pages.layout.navigation.maps')), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_17, [\n _createElementVNode(\"button\", {\n class: \"navigation-logout-btn\",\n onClick: _cache[1] || (_cache[1] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.logoutEvent && _ctx.logoutEvent(...args)), [\"prevent\"]))\n }, _hoisted_19)\n ]),\n _createElementVNode(\"div\", _hoisted_20, _toDisplayString(_ctx.serverLocale.toUpperCase()), 1),\n _createElementVNode(\"a\", _hoisted_21, [\n _createTextVNode(_toDisplayString(_ctx.$t('pages.auth.login.powered_by')) + \" \", 1),\n _createElementVNode(\"img\", {\n src: _imports_1,\n alt: _ctx.$t('pages.auth.login.powered_by_alt')\n }, null, 8, _hoisted_22)\n ]),\n _createElementVNode(\"div\", _hoisted_23, [\n _createElementVNode(\"a\", _hoisted_24, _toDisplayString(_ctx.$t('pages.auth.login.old_frontend')), 1)\n ])\n ], 2)\n ]),\n _createVNode(_component_router_view),\n _createVNode(_Transition, {\n name: \"modal\",\n duration: 1000\n }, {\n default: _withCtx(() => [\n (!_ctx.isTermsAndConditionsModalOpen && _ctx.modalLogoutOpen)\n ? (_openBlock(), _createBlock(_component_user_settings_modal, {\n key: 0,\n \"is-mobile\": false,\n username: _ctx.userName,\n email: _ctx.userEmail,\n \"default-settings\": _ctx.defaultSettings,\n text: _ctx.$t('pages.auth.logout.text'),\n \"button-text\": _ctx.$t('pages.auth.logout.button'),\n \"user-picture-url\": _ctx.userPicture,\n settings: _ctx.userSettings,\n onClose: _cache[2] || (_cache[2] = ($event: any) => (_ctx.modalLogoutOpen = false))\n }, null, 8, [\"username\", \"email\", \"default-settings\", \"text\", \"button-text\", \"user-picture-url\", \"settings\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n (!_ctx.isTermsAndConditionsModalOpen && _ctx.isUserModalVisible)\n ? (_openBlock(), _createBlock(_component_user_settings_modal, {\n key: 0,\n \"is-mobile\": true,\n username: _ctx.userName,\n email: _ctx.userEmail,\n \"default-settings\": _ctx.defaultSettings,\n text: _ctx.$t('pages.auth.logout.text'),\n \"button-text\": _ctx.$t('pages.auth.logout.button'),\n \"user-picture-url\": _ctx.userPicture,\n settings: _ctx.userSettings,\n onClose: _cache[3] || (_cache[3] = ($event: any) => (_ctx.closeUserModalVisibility()))\n }, null, 8, [\"username\", \"email\", \"default-settings\", \"text\", \"button-text\", \"user-picture-url\", \"settings\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.width > 767)\n ? (_openBlock(), _createBlock(_Transition, {\n key: 1,\n name: \"modal\",\n duration: 1000\n }, {\n default: _withCtx(() => [\n (_ctx.isTermsAndConditionsModalOpen || !_ctx.gtcAccepted)\n ? (_openBlock(), _createBlock(_component_terms_and_conditions_modal, {\n key: 0,\n \"is-mobile\": false,\n \"is-accepted\": _ctx.gtcAccepted,\n onClose: _cache[4] || (_cache[4] = ($event: any) => (_ctx.closeTermsAndConditionsModal()))\n }, null, 8, [\"is-accepted\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n ((_ctx.isTermsAndConditionsModalOpen || !_ctx.gtcAccepted) && _ctx.width <= 767)\n ? (_openBlock(), _createBlock(_component_terms_and_conditions_modal, {\n key: 2,\n \"is-mobile\": true,\n \"is-accepted\": _ctx.gtcAccepted,\n onClose: _cache[5] || (_cache[5] = ($event: any) => (_ctx.closeTermsAndConditionsModal()))\n }, null, 8, [\"is-accepted\"]))\n : _createCommentVNode(\"\", true)\n ])\n ], 64))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, withModifiers as _withModifiers, withCtx as _withCtx, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, createBlock as _createBlock, vModelText as _vModelText, withDirectives as _withDirectives, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode } from \"vue\"\nimport _imports_0 from '@/assets/navigation/icons/x-close@2x.png'\nimport _imports_1 from '@/assets/_svg/icon-save.svg'\n\n\nconst _hoisted_1 = { class: \"modal-window user-settings\" }\nconst _hoisted_2 = { class: \"user-settings-header\" }\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"img\", {\n src: _imports_0,\n alt: \"icon-close\"\n}, null, -1)\nconst _hoisted_4 = [\n _hoisted_3\n]\nconst _hoisted_5 = { class: \"user-settings-avatar\" }\nconst _hoisted_6 = [\"href\"]\nconst _hoisted_7 = [\"src\"]\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"span\", { class: \"user-settings-avatar--edit\" }, [\n /*#__PURE__*/_createElementVNode(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\"\n }, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n d: \"M1.6463,14.353A.4962.4962,0,0,0,2,14.5a.5939.5939,0,0,0,.138-.018l4.199-1.2.0078-.0026a.121.121,0,0,0,.0232-.0094l.04-.017a.4819.4819,0,0,0,.146-.099l7.179-7.179a2.622,2.622,0,0,0-3.708-3.708L2.8463,9.446a.4949.4949,0,0,0-.1.147l-.009.02.001-.001a.4291.4291,0,0,0-.019.05l-1.2,4.2A.5.5,0,0,0,1.6463,14.353Zm3.6-1.8-2.518.719.72-2.517Zm.954-.46,5.572-5.572L9.4793,4.228,3.9073,9.8Zm6.826-6.826-.547.547-2.293-2.293.547-.547a1.6236,1.6236,0,0,1,2.293,0A1.6236,1.6236,0,0,1,13.0263,5.267Z\",\n \"fill-rule\": \"evenodd\"\n })\n ])\n], -1)\nconst _hoisted_9 = { class: \"user-settings-name\" }\nconst _hoisted_10 = { class: \"user-settings-email\" }\nconst _hoisted_11 = /*#__PURE__*/_createElementVNode(\"img\", { src: _imports_1 }, null, -1)\nconst _hoisted_12 = { class: \"user-settings-body\" }\nconst _hoisted_13 = {\n key: 0,\n class: \"user-setting-input\"\n}\nconst _hoisted_14 = [\"for\"]\nconst _hoisted_15 = [\"id\", \"placeholder\"]\nconst _hoisted_16 = {\n key: 0,\n class: \"user-setting-input-error\"\n}\nconst _hoisted_17 = { class: \"user-setting-input\" }\nconst _hoisted_18 = [\"for\"]\nconst _hoisted_19 = [\"id\", \"placeholder\"]\nconst _hoisted_20 = {\n key: 0,\n class: \"user-setting-input-error\"\n}\nconst _hoisted_21 = { class: \"user-setting-input\" }\nconst _hoisted_22 = [\"for\"]\nconst _hoisted_23 = [\"id\", \"placeholder\"]\nconst _hoisted_24 = {\n key: 0,\n class: \"user-setting-input-error\"\n}\nconst _hoisted_25 = { class: \"user-setting-input\" }\nconst _hoisted_26 = [\"for\"]\nconst _hoisted_27 = [\"id\", \"placeholder\"]\nconst _hoisted_28 = {\n key: 0,\n class: \"user-setting-input-error\"\n}\nconst _hoisted_29 = { class: \"user-setting-dropdown-label\" }\nconst _hoisted_30 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"user-setting-dropdown-action\" }, null, -1)\nconst _hoisted_31 = { class: \"user-setting-dropdown-list\" }\nconst _hoisted_32 = [\"onClick\"]\nconst _hoisted_33 = { class: \"user-setting-dropdown-label\" }\nconst _hoisted_34 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"user-setting-dropdown-action\" }, null, -1)\nconst _hoisted_35 = { class: \"user-setting-dropdown-list\" }\nconst _hoisted_36 = [\"onClick\"]\nconst _hoisted_37 = { class: \"section-label\" }\nconst _hoisted_38 = [\"for\"]\nconst _hoisted_39 = { class: \"user-settings-privacy\" }\nconst _hoisted_40 = [\"href\"]\nconst _hoisted_41 = [\"href\"]\nconst _hoisted_42 = { class: \"user-settings-version\" }\nconst _hoisted_43 = { class: \"user-setting-buttons-bar\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_my_button = _resolveComponent(\"my-button\")!\n const _component_user_property = _resolveComponent(\"user-property\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass({ 'modal-overlay': true, mobile: _ctx.isMobile && _ctx.isUserModalVisible })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: \"modal-close icon-small\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$emit('close')))\n }, _hoisted_4),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"a\", {\n href: `https://${_ctx.serverLocale}.gravatar.com/emails`,\n rel: \"external\",\n target: \"_blank\"\n }, [\n _createElementVNode(\"img\", {\n class: \"user-settings-avatar--image\",\n src: _ctx.userPictureUrl,\n alt: \"user-image\"\n }, null, 8, _hoisted_7),\n _hoisted_8\n ], 8, _hoisted_6)\n ]),\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.username), 1),\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.email), 1),\n _createVNode(_component_my_button, {\n class: \"user-settings-header-btn\",\n onClick: _withModifiers(_ctx.saveChanges, [\"prevent\"])\n }, {\n default: _withCtx(() => [\n _hoisted_11\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]),\n _createElementVNode(\"div\", _hoisted_12, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.userSettings.switch, (setting, index) => {\n return (_openBlock(), _createBlock(_component_user_property, {\n key: index,\n checked: setting.value,\n \"onUpdate:checked\": ($event: any) => ((setting.value) = $event),\n hidden: setting.hidden,\n \"onUpdate:hidden\": ($event: any) => ((setting.hidden) = $event),\n \"field-id\": _ctx.$t(`pages.maps.user_settings.${setting.name}.placeholder`),\n value: setting.name\n }, null, 8, [\"checked\", \"onUpdate:checked\", \"hidden\", \"onUpdate:hidden\", \"field-id\", \"value\"]))\n }), 128)),\n (_ctx.userSettings.switch[1].value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"label\", {\n for: _ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.deviceGroupingNumber.name}.label`)\n }, _toDisplayString(_ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.deviceGroupingNumber.name}.label`)), 9, _hoisted_14),\n _withDirectives(_createElementVNode(\"input\", {\n id: _ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.deviceGroupingNumber.name}.label`),\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.userSettings.deviceGroupingNumber.value) = $event)),\n placeholder: \n _ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.deviceGroupingNumber.name}.placeholder`)\n ,\n type: \"number\"\n }, null, 8, _hoisted_15), [\n [_vModelText, _ctx.userSettings.deviceGroupingNumber.value]\n ]),\n (_ctx.userSettings.deviceGroupingNumber.error)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_16, _toDisplayString(_ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.deviceGroupingNumber.name}.error`)), 1))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_17, [\n _createElementVNode(\"label\", {\n for: _ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.refreshInterval.name}.label`)\n }, _toDisplayString(_ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.refreshInterval.name}.label`)), 9, _hoisted_18),\n _withDirectives(_createElementVNode(\"input\", {\n id: _ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.refreshInterval.name}.label`),\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.userSettings.refreshInterval.value) = $event)),\n placeholder: _ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.refreshInterval.name}.placeholder`),\n type: \"number\"\n }, null, 8, _hoisted_19), [\n [_vModelText, _ctx.userSettings.refreshInterval.value]\n ]),\n (_ctx.userSettings.refreshInterval.error)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20, _toDisplayString(_ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.refreshInterval.name}.error`)), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"label\", {\n for: _ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.deviceInactiveTime.name}.label`)\n }, _toDisplayString(_ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.deviceInactiveTime.name}.label`)), 9, _hoisted_22),\n _withDirectives(_createElementVNode(\"input\", {\n id: _ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.deviceInactiveTime.name}.label`),\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.userSettings.deviceInactiveTime.value) = $event)),\n placeholder: \n _ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.deviceInactiveTime.name}.placeholder`)\n ,\n type: \"number\"\n }, null, 8, _hoisted_23), [\n [_vModelText, _ctx.userSettings.deviceInactiveTime.value]\n ]),\n (_ctx.userSettings.deviceInactiveTime.error)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_24, _toDisplayString(_ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.deviceInactiveTime.name}.error`)), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"label\", {\n for: _ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.deviceWithoutContactTime.name}.label`)\n }, _toDisplayString(_ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.deviceWithoutContactTime.name}.label`)), 9, _hoisted_26),\n _withDirectives(_createElementVNode(\"input\", {\n id: _ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.deviceWithoutContactTime.name}.label`),\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.userSettings.deviceWithoutContactTime.value) = $event)),\n placeholder: \n _ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.deviceWithoutContactTime.name}.placeholder`)\n ,\n type: \"number\"\n }, null, 8, _hoisted_27), [\n [_vModelText, _ctx.userSettings.deviceWithoutContactTime.value]\n ]),\n (_ctx.userSettings.deviceWithoutContactTime.error)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_28, _toDisplayString(_ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.deviceWithoutContactTime.name}.error`)), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_29, _toDisplayString(_ctx.$t(`pages.maps.user_settings.default_map_settings.label`)), 1),\n _createElementVNode(\"div\", {\n class: _normalizeClass({\n 'user-setting-dropdown': true,\n 'user-setting-dropdown--open': _ctx.mapSettingsOpen,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"user-setting-dropdown-current\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.mapSettingsOpen = !_ctx.mapSettingsOpen))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.mapSettingsList.filter(\n (settings) => settings.name === _ctx.currentDefaultMapSettings,\n ), (mapSettings) => {\n return (_openBlock(), _createElementBlock(\"button\", {\n key: mapSettings.id\n }, _toDisplayString(_ctx.$t(`pages.maps.devices_map.settings.${mapSettings.name}`)), 1))\n }), 128)),\n _hoisted_30\n ]),\n _createElementVNode(\"div\", _hoisted_31, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.mapSettingsList.filter(\n (settings) => settings.name !== _ctx.currentDefaultMapSettings,\n ), (mapSettings) => {\n return (_openBlock(), _createElementBlock(\"button\", {\n key: mapSettings.id,\n onClick: ($event: any) => (_ctx.changeDefaultMapSettings(mapSettings.name))\n }, _toDisplayString(_ctx.$t(`pages.maps.devices_map.settings.${mapSettings.name}`)), 9, _hoisted_32))\n }), 128))\n ])\n ], 2),\n _createElementVNode(\"div\", _hoisted_33, _toDisplayString(_ctx.$t(`pages.maps.user_settings.languages.label`)), 1),\n _createElementVNode(\"div\", {\n class: _normalizeClass({\n 'user-setting-dropdown': true,\n 'user-setting-dropdown--open': _ctx.languageSettingsOpen,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"user-setting-dropdown-current\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.languageSettingsOpen = !_ctx.languageSettingsOpen))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.localesList.filter((locale) => locale.code === _ctx.currentLanguage), (locale) => {\n return (_openBlock(), _createElementBlock(\"button\", {\n key: locale.code\n }, _toDisplayString(_ctx.$t(`pages.maps.user_settings.languages.${locale.code}`)), 1))\n }), 128)),\n _hoisted_34\n ]),\n _createElementVNode(\"div\", _hoisted_35, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.localesList.filter((locale) => locale.code !== _ctx.currentLanguage), (locale) => {\n return (_openBlock(), _createElementBlock(\"button\", {\n key: locale.code,\n onClick: ($event: any) => (_ctx.changeLanguage(locale.code))\n }, _toDisplayString(_ctx.$t(`pages.maps.user_settings.languages.${locale.code}`)), 9, _hoisted_36))\n }), 128))\n ])\n ], 2),\n _createElementVNode(\"div\", _hoisted_37, [\n _createElementVNode(\"label\", {\n for: _ctx.$t(`pages.maps.user_settings.${_ctx.userSettings.deviceGroupingNumber.name}.label`)\n }, _toDisplayString(_ctx.$t(`pages.maps.user_settings.toolbar.label`)), 9, _hoisted_38)\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.userSettings.toolbar, (setting, index) => {\n return (_openBlock(), _createBlock(_component_user_property, {\n key: index,\n checked: setting.value,\n \"onUpdate:checked\": ($event: any) => ((setting.value) = $event),\n hidden: setting.hidden,\n \"onUpdate:hidden\": ($event: any) => ((setting.hidden) = $event),\n icon: setting.icon,\n \"field-id\": _ctx.$t(`pages.maps.user_settings.${setting.name}.placeholder`),\n value: setting.name\n }, null, 8, [\"checked\", \"onUpdate:checked\", \"hidden\", \"onUpdate:hidden\", \"icon\", \"field-id\", \"value\"]))\n }), 128)),\n _createElementVNode(\"div\", _hoisted_39, [\n _createElementVNode(\"a\", {\n href: _ctx.$t('pages.maps.user_settings.impressum.url'),\n target: \"_blank\"\n }, _toDisplayString(_ctx.$t('pages.maps.user_settings.impressum.label')), 9, _hoisted_40),\n _createElementVNode(\"a\", {\n href: _ctx.$t('pages.maps.user_settings.privacy.url'),\n target: \"_blank\"\n }, _toDisplayString(_ctx.$t('pages.maps.user_settings.privacy.label')), 9, _hoisted_41),\n _createElementVNode(\"button\", {\n onClick: _cache[7] || (_cache[7] = \n//@ts-ignore\n(...args) => (_ctx.openTermsAndConditionsModal && _ctx.openTermsAndConditionsModal(...args)))\n }, _toDisplayString(_ctx.$t('pages.maps.user_settings.terms_and_conditions.label')), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_42, _toDisplayString(_ctx.$t(`pages.maps.user_settings.version.label`)) + \": \" + _toDisplayString(_ctx.version), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_43, [\n _createVNode(_component_my_button, {\n onClick: _withModifiers(_ctx.saveChanges, [\"prevent\"])\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`components.modal.close`)), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ])\n ])\n ], 2))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, mergeProps as _mergeProps, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"user-settings-property-icon\"\n}\nconst _hoisted_2 = [\"src\"]\nconst _hoisted_3 = { class: \"toggle switch w-100\" }\nconst _hoisted_4 = { class: \"switch-label mr-auto\" }\nconst _hoisted_5 = [\"id\", \"checked\"]\nconst _hoisted_6 = [\"for\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass({\r\n 'components-switch user-settings-property': true,\r\n 'is-icon': _ctx.icon,\r\n hidden: _ctx.hidden,\r\n })\n }, [\n (_ctx.icon)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"img\", {\n src: _ctx.icon,\n alt: \"''\"\n }, null, 8, _hoisted_2)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.fieldId), 1),\n _createElementVNode(\"input\", _mergeProps({\n id: _ctx.fieldId,\n type: \"checkbox\",\n checked: !!_ctx.checked\n }, _ctx.$attrs, {\n onInput: _cache[0] || (_cache[0] = ($event: any) => (_ctx.check()))\n }), null, 16, _hoisted_5),\n _createElementVNode(\"label\", {\n class: \"toggle-item static-bg-color\",\n for: _ctx.fieldId\n }, null, 8, _hoisted_6)\n ])\n ], 2))\n}","\r\nimport { defineComponent } from 'vue';\r\n\r\nexport default defineComponent({\r\n name: 'UserProperty',\r\n props: {\r\n icon: {\r\n type: String,\r\n },\r\n fieldId: {\r\n type: String,\r\n required: true,\r\n },\r\n checked: {\r\n type: Boolean || Number,\r\n required: true,\r\n },\r\n hidden: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n },\r\n emits: ['update:checked'],\r\n setup(props, { emit }) {\r\n const check = () => {\r\n const isChecked = !props.checked;\r\n emit('update:checked', isChecked);\r\n };\r\n\r\n return {\r\n check,\r\n };\r\n },\r\n});\r\n","import { render } from \"./UserProperty.vue?vue&type=template&id=2444ede7&ts=true\"\nimport script from \"./UserProperty.vue?vue&type=script&lang=ts\"\nexport * from \"./UserProperty.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\projects\\\\tracker-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport { defineComponent, ref, PropType, onUnmounted, Ref, reactive, computed } from 'vue';\n\nimport { required, minValue, maxValue } from '@vuelidate/validators';\n\nimport useVuelidate from '@vuelidate/core';\n\nimport UserProperty from '@/components/user-settings/UserProperty.vue';\n/* import UserButtonProperty from '@/components/user-settings/UserButtonProperty.vue'; */\nimport { IUserSettings } from '@/pages/layout/Layout.vue';\nimport { useStore } from 'vuex';\nimport { useI18n } from 'vue-i18n';\nimport { locales } from '@/config/locales';\nimport { mapSettings } from '@/config/mapSettings';\n\nexport default defineComponent({\n components: {\n 'user-property': UserProperty,\n /* 'user-button-property': UserButtonProperty, */\n },\n props: {\n isMobile: {\n type: Boolean,\n required: true,\n },\n username: {\n type: String,\n required: true,\n },\n email: {\n type: String,\n required: true,\n },\n defaultSettings: {\n type: String,\n required: true,\n },\n buttonText: {\n type: String,\n required: true,\n },\n userPictureUrl: {\n type: String,\n required: true,\n },\n settings: {\n type: Object as PropType,\n required: true,\n },\n },\n emits: ['close'],\n setup(props, { emit }) {\n const i18n = useI18n({ useScope: 'global' });\n const userSettings: Ref = ref(props.settings);\n\n const userSettingsInitial = computed(() => store.getters['auth/userSettings']);\n\n const languageSettingsOpen = ref(false);\n const mapSettingsOpen = ref(false);\n const currentLanguage = ref(i18n.locale.value);\n const localesList = ref(locales);\n const isUserModalVisible = computed(() => store.getters['ui/isUserModalVisible']);\n const serverLocale = computed(() => store.getters['ui/languageCode']);\n\n const tokenFCM = computed(() => {\n const value = store.getters['auth/userSettingString']('tokenFCM');\n if (value) {\n try {\n return JSON.parse(value);\n } catch (e) {\n console.log('error tokenFCM', e);\n }\n }\n return [];\n });\n\n const currentDefaultMapSettings = ref(props.defaultSettings);\n\n const store = useStore();\n const state = reactive({\n firstName: '',\n lastName: '',\n contact: {\n email: '',\n },\n });\n const validationRules = {\n deviceGroupingNumber: {\n value: {\n required,\n minValue: minValue(2),\n },\n },\n refreshInterval: {\n value: {\n required,\n minValue: minValue(5),\n maxValue: maxValue(300),\n },\n },\n deviceInactiveTime: {\n value: {\n required,\n minValue: minValue(60),\n },\n },\n deviceWithoutContactTime: {\n value: {\n required,\n minValue: minValue(60),\n },\n },\n };\n const mapSettingsList = ref(mapSettings);\n\n const v$ = useVuelidate(validationRules, userSettings);\n\n onUnmounted(async () => {\n await store.dispatch('auth/account');\n await store.dispatch('device/list');\n });\n\n const changeLanguage = (lang: string) => {\n currentLanguage.value = lang;\n languageSettingsOpen.value = false;\n };\n\n const changeDefaultMapSettings = (settings: string) => {\n currentDefaultMapSettings.value = settings;\n mapSettingsOpen.value = false;\n };\n\n const openTermsAndConditionsModal = () => store.commit('ui/openTermsAndConditionsModal');\n\n const saveChanges = async () => {\n v$.value.$validate();\n\n userSettings.value.deviceGroupingNumber.error =\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (v$ as any).value.deviceGroupingNumber.$error;\n userSettings.value.refreshInterval.error =\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (v$ as any).value.refreshInterval.$error;\n userSettings.value.deviceInactiveTime.error =\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (v$ as any).value.deviceInactiveTime.$error;\n userSettings.value.deviceWithoutContactTime.error =\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (v$ as any).value.deviceWithoutContactTime.$error;\n\n if (v$.value.$errors.length === 0) {\n const userData = {\n UserSettings: {\n ...userSettingsInitial.value,\n 'usersetting.customer.devicemap.detailpage.map.countdownsec':\n userSettings.value.refreshInterval.value,\n 'usersetting.customer.devicemap.defaultpage.map.showtraffic': userSettings.value.switch[0].value\n ? 'True'\n : 'False',\n 'usersetting.customer.devicemap.defaultpage.map.devicegroupping': userSettings.value.switch[1]\n .value\n ? 'True'\n : 'False',\n 'usersetting.customer.devicemap.defaultpage.hideManualRefresh': userSettings.value.toolbar[1]\n .value\n ? 'True'\n : 'False',\n 'usersetting.customer.devicemap.defaultpage.hideAutoRefresh': userSettings.value.toolbar[2]\n .value\n ? 'True'\n : 'False',\n 'usersetting.customer.devicemap.defaultpage.hideSearch': userSettings.value.toolbar[3].value\n ? 'True'\n : 'False',\n 'usersetting.customer.devicemap.defaultpage.hideSelectLayers': userSettings.value.toolbar[4]\n .value\n ? 'True'\n : 'False',\n 'usersetting.customer.devicemap.defaultpage.hideSelectGeofences': userSettings.value.toolbar[5]\n .value\n ? 'True'\n : 'False',\n /* allowSubscriptions: userSettings.value.allowSubscriptions.value ? 'True' : 'False', */\n 'usersetting.customer.devicemap.defaultpage.map.devicegroupingnumber':\n userSettings.value.deviceGroupingNumber.value,\n 'usersetting.customer.devicemap.detailpage.map.deviceinactivetime':\n userSettings.value.deviceInactiveTime.value,\n 'usersetting.customer.devicemap.detailpage.map.devicewithoutcontacttime':\n userSettings.value.deviceWithoutContactTime.value,\n 'usersetting.customer.devicemap.detailpage.map.defaultmap': currentDefaultMapSettings.value,\n },\n LanguageCode: currentLanguage.value,\n };\n\n await store.dispatch('auth/updateAccount', userData);\n emit('close');\n }\n };\n\n const handleUnsubscribeAllDevices = async () => {\n userSettings.value.allowSubscriptions.value = false;\n await store.dispatch('auth/unsubscribeAllDevices');\n await store.dispatch('auth/account');\n };\n\n return {\n mapSettingsOpen,\n userSettings,\n currentLanguage,\n currentDefaultMapSettings,\n changeDefaultMapSettings,\n localesList,\n languageSettingsOpen,\n mapSettingsList,\n changeLanguage,\n saveChanges,\n state,\n v$,\n isUserModalVisible,\n version: process.env.VUE_APP_VERSION,\n serverLocale,\n tokenFCM,\n openTermsAndConditionsModal,\n handleUnsubscribeAllDevices,\n };\n },\n});\n","import { render } from \"./Modal.vue?vue&type=template&id=112568b7&ts=true\"\nimport script from \"./Modal.vue?vue&type=script&lang=ts\"\nexport * from \"./Modal.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\projects\\\\tracker-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withModifiers as _withModifiers, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode } from \"vue\"\nimport _imports_0 from '@/assets/navigation/icons/x-close@2x.png'\nimport _imports_1 from '@/assets/_svg/icon-save.svg'\n\n\nconst _hoisted_1 = { class: \"modal-window terms-and-conditions\" }\nconst _hoisted_2 = { class: \"terms-and-conditions-header\" }\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"img\", {\n src: _imports_0,\n alt: \"icon-close\"\n}, null, -1)\nconst _hoisted_4 = [\n _hoisted_3\n]\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"img\", { src: _imports_1 }, null, -1)\nconst _hoisted_6 = { class: \"terms-and-conditions-body\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"terms-and-conditions-body--title\"\n}\nconst _hoisted_8 = [\"innerHTML\"]\nconst _hoisted_9 = {\n key: 2,\n class: \"terms-and-conditions-body--text\"\n}\nconst _hoisted_10 = [\"checked\", \"disabled\"]\nconst _hoisted_11 = {\n class: \"terms-and-conditions-checkbox--label\",\n for: \"checkbox-gtc-accepted\"\n}\nconst _hoisted_12 = {\n key: 4,\n class: \"terms-and-conditions-body--title\"\n}\nconst _hoisted_13 = [\"innerHTML\"]\nconst _hoisted_14 = {\n key: 6,\n class: \"terms-and-conditions-body--text\"\n}\nconst _hoisted_15 = [\"checked\", \"disabled\"]\nconst _hoisted_16 = {\n class: \"terms-and-conditions-checkbox--label\",\n for: \"checkbox-dtp-accepted\"\n}\nconst _hoisted_17 = { class: \"terms-and-conditions-buttons-bar\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_my_button = _resolveComponent(\"my-button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass({ 'modal-overlay': true, mobile: _ctx.isMobile && _ctx.isTermsAndConditionsModalOpen })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: \"modal-close icon-small\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$emit('close')))\n }, _hoisted_4),\n (!_ctx.isAccepted)\n ? (_openBlock(), _createBlock(_component_my_button, {\n key: 0,\n class: \"terms-and-conditions-header-btn\",\n onClick: _withModifiers(_ctx.saveChanges, [\"prevent\"])\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n }, 8, [\"onClick\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n (_ctx.gtcData)\n ? (_openBlock(), _createElementBlock(\"h2\", _hoisted_7, _toDisplayString(_ctx.gtcData.Title), 1))\n : _createCommentVNode(\"\", true),\n (_ctx.gtcData && _ctx.gtcData.IsHtml)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"terms-and-conditions-body--text\",\n innerHTML: _ctx.gtcData.Text\n }, null, 8, _hoisted_8))\n : (_ctx.gtcData)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, _toDisplayString(_ctx.gtcData.Text), 1))\n : _createCommentVNode(\"\", true),\n (_ctx.gtcData)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 3,\n ref: \"refGtcCheckbox\",\n class: _normalizeClass({\n 'terms-and-conditions-body--checkbox components-checkbox components-checkbox--left': true,\n error: _ctx.gtcError,\n })\n }, [\n _createElementVNode(\"input\", {\n id: \"checkbox-gtc-accepted\",\n type: \"checkbox\",\n checked: !!_ctx.gtcAccepted || _ctx.isAccepted,\n disabled: _ctx.isAccepted,\n onInput: _cache[1] || (_cache[1] = ($event: any) => (_ctx.handleGtcCheck()))\n }, null, 40, _hoisted_10),\n _createElementVNode(\"label\", _hoisted_11, _toDisplayString(_ctx.$t(`components.modal.terms_and_conditions.gtc.label`)), 1)\n ], 2))\n : _createCommentVNode(\"\", true),\n (_ctx.dtpData)\n ? (_openBlock(), _createElementBlock(\"h2\", _hoisted_12, _toDisplayString(_ctx.dtpData.Title), 1))\n : _createCommentVNode(\"\", true),\n (_ctx.dtpData && _ctx.dtpData.IsHtml)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 5,\n class: \"terms-and-conditions-body--text\",\n innerHTML: _ctx.dtpData.Text\n }, null, 8, _hoisted_13))\n : (_ctx.dtpData)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, _toDisplayString(_ctx.dtpData.Text), 1))\n : _createCommentVNode(\"\", true),\n (_ctx.dtpData)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 7,\n ref: \"refDtpCheckbox\",\n class: _normalizeClass({\n 'terms-and-conditions-body--checkbox components-checkbox components-checkbox--left': true,\n error: _ctx.dtpError,\n })\n }, [\n _createElementVNode(\"input\", {\n id: \"checkbox-dtp-accepted\",\n type: \"checkbox\",\n checked: !!_ctx.dtpAccepted || _ctx.isAccepted,\n disabled: _ctx.isAccepted,\n onInput: _cache[2] || (_cache[2] = ($event: any) => (_ctx.handleDtpCheck()))\n }, null, 40, _hoisted_15),\n _createElementVNode(\"label\", _hoisted_16, _toDisplayString(_ctx.$t(`components.modal.terms_and_conditions.dtc.label`)), 1)\n ], 2))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_17, [\n (!_ctx.isAccepted)\n ? (_openBlock(), _createBlock(_component_my_button, {\n key: 0,\n onClick: _withModifiers(_ctx.saveChanges, [\"prevent\"])\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`components.modal.terms_and_conditions.submit.label`)), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ], 2))\n}","\nimport { defineComponent, onMounted, ref, computed, Ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useStore } from 'vuex';\nimport { required } from '@vuelidate/validators';\n\nimport useVuelidate from '@vuelidate/core';\n\nimport api from '@/api';\nimport { ApiTermsAndConditions } from '@/api/types/terms-and-conditions';\n\nexport default defineComponent({\n props: {\n isMobile: {\n type: Boolean,\n required: true,\n },\n isAccepted: {\n type: Boolean,\n required: true,\n },\n },\n emits: ['close'],\n setup() {\n const isTermsAndConditionsModalOpen = computed(() => store.getters['ui/isTermsAndConditionsModalOpen']);\n const { t } = useI18n({ useScope: 'global' });\n const store = useStore();\n const gtcData = ref();\n const dtpData = ref();\n const gtcAccepted = ref(false);\n const dtpAccepted = ref(false);\n const gtcError = ref(false);\n const dtpError = ref(false);\n const refGtcCheckbox = ref(null);\n const refDtpCheckbox = ref(null);\n\n const validationRules = {\n gtcAccepted: {\n required,\n isTrue: (val) => val === true,\n },\n dtpAccepted: {\n required,\n isTrue: (val) => val === true,\n },\n };\n\n const v$ = useVuelidate(validationRules, {\n gtcAccepted,\n dtpAccepted,\n });\n\n const scrollToCheckbox = (ref: Ref) => {\n ref.value.scrollIntoView({ behavior: 'smooth', block: 'center' });\n };\n\n onMounted(async () => {\n try {\n const token = window.localStorage.getItem('authcredentials');\n const responseGtc = await api.terms.getGtc(token);\n const responseDtp = await api.terms.getDtp(token);\n gtcData.value = responseGtc.data;\n dtpData.value = responseDtp.data;\n } catch (error) {\n new Error(error);\n }\n });\n\n const handleGtcCheck = () => {\n gtcAccepted.value = !gtcAccepted.value;\n gtcError.value = false;\n };\n\n const handleDtpCheck = () => {\n dtpAccepted.value = !dtpAccepted.value;\n dtpError.value = false;\n };\n\n const saveChanges = async () => {\n v$.value.$validate();\n\n if (v$.value.gtcAccepted.$error) {\n gtcError.value = true;\n }\n\n if (v$.value.dtpAccepted.$error) {\n dtpError.value = true;\n }\n\n if (v$.value.gtcAccepted.$error) {\n scrollToCheckbox(refGtcCheckbox);\n gtcError.value = true;\n return;\n }\n\n if (v$.value.dtpAccepted.$error) {\n scrollToCheckbox(refDtpCheckbox);\n dtpError.value = true;\n return;\n }\n\n if (v$.value.$errors.length === 0) {\n try {\n const token = window.localStorage.getItem('authcredentials');\n await api.terms.confirmTermsAndConditions(token);\n await store.dispatch('auth/account');\n } catch (error) {\n new Error(error);\n }\n }\n };\n return {\n t,\n gtcData,\n dtpData,\n gtcError,\n dtpError,\n gtcAccepted,\n dtpAccepted,\n refGtcCheckbox,\n refDtpCheckbox,\n isTermsAndConditionsModalOpen,\n saveChanges,\n handleGtcCheck,\n handleDtpCheck,\n };\n },\n});\n","import { render } from \"./Modal.vue?vue&type=template&id=735fb19d&ts=true\"\nimport script from \"./Modal.vue?vue&type=script&lang=ts\"\nexport * from \"./Modal.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\projects\\\\tracker-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import MD5 from 'crypto-js/md5';\r\nimport axios from 'axios';\r\nimport defaultProfileLogo from '@/assets/navigation/demo-profile.png';\r\n\r\nexport default async function generateGravatar(\r\n email = '',\r\n name = '',\r\n initialAvatarBackground = '757575',\r\n initialColor = 'fff',\r\n initialSize = '50',\r\n) {\r\n const processedName = name.toString().replace(/( )+/g, '+');\r\n const defaultImageUrl = encodeURIComponent(\r\n `https://ui-avatars.com/api/${processedName}/${initialSize}/${initialAvatarBackground}/${initialColor}`,\r\n );\r\n const processedEmail = email.toString().trim().toLowerCase();\r\n const hash = email ? MD5(processedEmail).toString() : '';\r\n\r\n const gravatarUrl = `https://www.gravatar.com/avatar/${hash}?d=404&s=${initialSize}`;\r\n\r\n try {\r\n const response = await axios.head(gravatarUrl);\r\n if (response.status === 200) {\r\n return gravatarUrl; // Gravatar exists\r\n }\r\n } catch (error) {\r\n if (processedName) {\r\n return `https://www.gravatar.com/avatar/${hash}?d=${defaultImageUrl}&s=${initialSize}`;\r\n } else {\r\n return defaultProfileLogo;\r\n }\r\n }\r\n}\r\n","import { initializeApp } from 'firebase/app';\nimport { getToken } from 'firebase/messaging';\nimport { getMessaging } from 'firebase/messaging/sw';\n\nconst firebaseConfig = {\n apiKey: process.env.VUE_APP_FIREBASE_API_KEY as string,\n authDomain: process.env.VUE_APP_FIREBASE_AUTH_DOMAIN as string,\n projectId: process.env.VUE_APP_FIREBASE_PROJECT_ID as string,\n storageBucket: process.env.VUE_APP_FIREBASE_STORAGE_BUCKET as string,\n messagingSenderId: process.env.VUE_APP_FIREBASE_SENDER_ID as string,\n appId: process.env.VUE_APP_FIREBASE_APP_ID as string,\n};\n\nconst cloudMessagingPermission = (\n saveTokenCallback: (token: string) => void,\n permissionGranted?: (isGranded: boolean) => void,\n) => {\n Notification.requestPermission().then((permission) => {\n if (permission === 'granted') {\n const app = initializeApp(firebaseConfig);\n const messaging = getMessaging(app);\n permissionGranted(true);\n\n getToken(messaging, {\n vapidKey: process.env.VUE_APP_FIREBASE_CLOUD_MESSAGING,\n })\n .then((currentToken) => {\n if (currentToken) {\n saveTokenCallback(currentToken);\n } else {\n console.log('Can not get token');\n }\n })\n .catch((err) => {\n throw err;\n });\n } else {\n permissionGranted(false);\n }\n });\n};\n\nexport default cloudMessagingPermission;\n","\nimport { defineComponent, ref, computed, watch, onMounted, watchEffect } from 'vue';\nimport { useStore } from 'vuex';\nimport { useI18n } from 'vue-i18n';\nimport VueLottiePlayer from 'vue-lottie-player';\nimport { useWindowSize } from '@vueuse/core';\n\nimport { apiUrl, configureInterceptor } from '@/config/api';\nimport UserSettingsModal from '@/components/user-settings/Modal.vue';\nimport TermsAndConditionsModal from '@/components/terms-and-conditions/Modal.vue';\n\nimport generateGravatar from '@/utils/generateGravatar';\n\nimport defaultCompanyLogo from '@/assets/logo-tracker.svg';\nimport defaultProfileLogo from '@/assets/navigation/demo-profile.png';\nimport { useInterval } from '@vueuse/core';\n\nimport iconMapSearch from '@/assets/_svg/toolbar/map_search.svg';\nimport iconMapLayers from '@/assets/_svg/toolbar/map_layers.svg';\nimport iconMapGeofences from '@/assets/_svg/toolbar/map_geofences.svg';\nimport iconMapAutoRefresh from '@/assets/_svg/toolbar/map_auto_refresh.svg';\nimport iconMapManualRefresh from '@/assets/_svg/toolbar/map_refresh.svg';\nimport iconMapType from '@/assets/_svg/toolbar/map_type.svg';\nimport cloudMessagingPermission from '@/firebase/init';\n\ninterface IUserPropertySettings {\n value: number | boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n icon?: any;\n name: string;\n error: boolean;\n hidden?: boolean;\n}\n\nexport interface IUserSettings {\n switch: Array;\n toolbar: Array;\n deviceGroupingNumber: IUserPropertySettings;\n refreshInterval: IUserPropertySettings;\n deviceInactiveTime: IUserPropertySettings;\n deviceWithoutContactTime: IUserPropertySettings;\n allowSubscriptions: IUserPropertySettings;\n}\n\nexport default defineComponent({\n name: 'Layout',\n components: {\n 'user-settings-modal': UserSettingsModal,\n 'terms-and-conditions-modal': TermsAndConditionsModal,\n vLottiePlayer: VueLottiePlayer,\n },\n setup() {\n const store = useStore();\n const i18n = useI18n({ useScope: 'global' });\n const serverLocale = computed(() => store.getters['ui/languageCode']);\n i18n.locale.value = serverLocale.value;\n const isUserModalVisible = computed(() => store.getters['ui/isUserModalVisible']);\n const activePendingRequests = ref([]);\n const isPending = ref(false);\n const { width } = useWindowSize();\n\n const showTraffic = computed(\n () =>\n store.getters['auth/userSettingString'](\n 'usersetting.customer.devicemap.defaultpage.map.showtraffic',\n ) === 'True',\n );\n\n const deviceGroupping = computed(() => {\n if (\n store.getters['auth/userSettingString'](\n 'usersetting.customer.devicemap.defaultpage.map.devicegroupping',\n ) === 'True'\n ) {\n return true;\n } else if (\n store.getters['auth/userSettingString'](\n 'usersetting.customer.devicemap.defaultpage.map.devicegroupping',\n ) === null &&\n store.getters['device/readNumberOfDevices'] > 500\n ) {\n return true;\n } else {\n return false;\n }\n });\n\n const deviceGroupingNumber = computed(() => {\n const value = parseInt(\n store.getters['auth/userSettingString'](\n 'usersetting.customer.devicemap.defaultpage.map.devicegroupingnumber',\n ),\n );\n if (value) {\n return value;\n }\n return 3; // default size\n });\n\n const deviceInactiveTime = computed(() => {\n const value = parseInt(\n store.getters['auth/userSettingString'](\n 'usersetting.customer.devicemap.detailpage.map.deviceinactivetime',\n ),\n );\n if (value) {\n return value;\n }\n return 120; // default size\n });\n\n const deviceWithoutContactTime = computed(() => {\n const value = parseInt(\n store.getters['auth/userSettingString'](\n 'usersetting.customer.devicemap.detailpage.map.devicewithoutcontacttime',\n ),\n );\n if (value) {\n return value;\n }\n return 180; // default size\n });\n\n const refreshInterval = computed(() => {\n const value = parseInt(\n store.getters['auth/userSettingString']('usersetting.customer.devicemap.detailpage.map.countdownsec'),\n );\n if (value) {\n return value;\n }\n return 30; // default size\n });\n\n const defaultSettings = computed(() => {\n const value = store.getters['auth/userSettingString'](\n 'usersetting.customer.devicemap.detailpage.map.defaultmap',\n );\n if (value) {\n return value;\n }\n return 'map_id'; // default map type (Map with POI)\n });\n\n //Toolbar settings\n const hideManualRefreshSettings = computed(() => {\n if (\n store.getters['auth/userSettingString'](\n 'usersetting.customer.devicemap.defaultpage.hideManualRefresh',\n ) === 'False'\n ) {\n return true;\n } else {\n return false;\n }\n });\n\n const hideAutoRefreshSettings = computed(() => {\n if (\n store.getters['auth/userSettingString'](\n 'usersetting.customer.devicemap.defaultpage.hideAutoRefresh',\n ) === 'False'\n ) {\n return true;\n } else {\n return false;\n }\n });\n\n const hideSearchSettings = computed(() => {\n if (\n store.getters['auth/userSettingString']('usersetting.customer.devicemap.defaultpage.hideSearch') ===\n 'False'\n ) {\n return true;\n } else {\n return false;\n }\n });\n\n const hideMapStyleSettings = computed(() => {\n if (\n store.getters['auth/userSettingString']('usersetting.customer.devicemap.defaultpage.hideMapStyle') ===\n 'False'\n ) {\n return true;\n } else {\n return false;\n }\n });\n\n const hideSelectLayersSettings = computed(() => {\n if (\n store.getters['auth/userSettingString'](\n 'usersetting.customer.devicemap.defaultpage.hideSelectLayers',\n ) === 'False'\n ) {\n return true;\n } else {\n return false;\n }\n });\n\n const hideSelectGeofencesSettings = computed(() => {\n if (\n store.getters['auth/userSettingString'](\n 'usersetting.customer.devicemap.defaultpage.hideSelectGeofences',\n ) === 'False'\n ) {\n return true;\n } else {\n return false;\n }\n });\n\n /* const tokenFCM = computed(() => {\n const value = store.getters['auth/userSettingString']('tokenFCM');\n if (value) {\n try {\n return JSON.parse(value);\n } catch (e) {\n console.log('error tokenFCM', e);\n }\n }\n return [];\n }); */\n\n const isAllowedSubscriptions = computed(() => {\n if (store.getters['auth/userSettingString']('allowSubscriptions') === 'True') {\n return true;\n } else {\n return false;\n }\n });\n\n const userSettings = computed(() => {\n return {\n switch: [\n {\n name: 'map_traffic',\n value: showTraffic.value,\n error: false,\n hidden: false,\n },\n {\n name: 'device_grouping',\n value: deviceGroupping.value,\n error: false,\n hidden: false,\n },\n ],\n toolbar: [\n {\n name: 'hide_map_style_settings',\n icon: iconMapType,\n value: !hideMapStyleSettings.value,\n error: false,\n hidden: false,\n },\n {\n name: 'hide_manual_refresh_settings',\n icon: iconMapManualRefresh,\n value: !hideManualRefreshSettings.value,\n error: false,\n hidden: false,\n },\n {\n name: 'hide_auto_refresh_settings',\n icon: iconMapAutoRefresh,\n value: !hideAutoRefreshSettings.value,\n error: false,\n hidden: false,\n },\n {\n name: 'hide_search_settings',\n icon: iconMapSearch,\n value: !hideSearchSettings.value,\n error: false,\n hidden: false,\n },\n {\n name: 'hide_select_layers_settings',\n icon: iconMapLayers,\n value: !hideSelectLayersSettings.value,\n error: false,\n hidden: false,\n },\n {\n name: 'hide_select_geofences_settings',\n icon: iconMapGeofences,\n value: !hideSelectGeofencesSettings.value,\n error: false,\n hidden: false,\n },\n ],\n deviceGroupingNumber: {\n name: 'device_grouping_number',\n value: deviceGroupingNumber.value,\n error: false,\n },\n refreshInterval: {\n name: 'refresh_interval',\n value: refreshInterval.value,\n error: false,\n },\n deviceInactiveTime: {\n name: 'device_inactive',\n value: deviceInactiveTime.value,\n error: false,\n },\n deviceWithoutContactTime: {\n name: 'device_without_contact_time',\n value: deviceWithoutContactTime.value,\n error: false,\n },\n allowSubscriptions: {\n name: 'allow_subscriptions',\n value: isAllowedSubscriptions.value,\n error: false,\n hidden: false,\n },\n };\n });\n\n watch(serverLocale, () => {\n i18n.locale.value = serverLocale.value;\n });\n\n const modalLogoutOpen = ref(false);\n const logoutEvent = () => {\n store.dispatch('auth/logout');\n };\n\n const mobileNavOpen = ref(false);\n\n const userName = computed(() => {\n return store.state.auth.account?.DisplayName;\n });\n\n const userEmail = computed(() => {\n return `${store.state.auth.account?.UserName}`;\n });\n\n const gtcAccepted = computed(() => {\n return store.state.auth.account?.RequireGTCAccept === true ? false : true;\n });\n\n const isTermsAndConditionsModalOpen = computed(() => store.getters['ui/isTermsAndConditionsModalOpen']);\n\n const companyUrl = computed(() => {\n let link = store.state.auth.account?.Customer?.BadgeImageUrl;\n if (link && link !== '') {\n if (!(link.indexOf('://') && !link.indexOf('https://'))) {\n link = 'http://www.' + link.substring(link.indexOf('.') + 1);\n }\n }\n return link;\n });\n\n const companyPicture = computed(() => {\n const storedImage = store.state.auth.account?.Customer?.BadgeImageName;\n if (storedImage) {\n const url = apiUrl + '/trk/common/image/badge/';\n return url + storedImage;\n }\n return defaultCompanyLogo;\n });\n\n const userPicture = ref(defaultProfileLogo);\n\n watchEffect(async () => {\n let email = store.state.auth.account?.Email;\n let name = userEmail.value;\n\n if (!name) {\n const generatedLogo = await generateGravatar(email, name);\n userPicture.value = generatedLogo ? generatedLogo : defaultProfileLogo;\n return;\n }\n\n const userNameTmp = name.split(' ');\n\n if (userNameTmp.length >= 2) {\n name = `${userNameTmp[0]} ${userNameTmp[1]}`;\n }\n\n const generatedLogo = await generateGravatar(email, name);\n\n userPicture.value = generatedLogo ? generatedLogo : defaultProfileLogo;\n });\n\n const closeUserModalVisibility = (): void => {\n store.commit('ui/closeUserModalVisibility');\n };\n\n const closeTermsAndConditionsModal = () => store.commit('ui/closeTermsAndConditionsModal');\n\n const { counter: requestsPollingChecker } = useInterval(500, { controls: true });\n\n const updateFirebaseToken = (/* token: string */): void => {\n return;\n /* const tokensArr = tokenFCM.value;\n\n if (\n !tokensArr.some((token) => token.token === token && token.environment === process.env.VUE_APP_NAME) &&\n isAllowedSubscriptions.value\n ) {\n store.dispatch('auth/updateFirebaseToken', token);\n return;\n } */\n };\n\n const permissionGranted = (isGranded): void => {\n if (isGranded) {\n store.commit('ui/closeNotificationMessage');\n } else {\n store.commit('ui/openNotificationMessage');\n }\n };\n\n const openUserModalSettings = (): void => {\n modalLogoutOpen.value = true;\n };\n\n watch([activePendingRequests, requestsPollingChecker], () => {\n const startTime = new Date().getTime();\n // checking if exist pending request with startTime longer then:\n const foundPendingRequest = activePendingRequests.value.filter((el) => el.startTime + 2000 < startTime);\n if (foundPendingRequest.length !== 0) {\n isPending.value = true;\n }\n });\n\n watch([isPending, activePendingRequests], () => {\n if (activePendingRequests.value.length === 0) {\n setTimeout(() => {\n if (activePendingRequests.value.length === 0) {\n isPending.value = false;\n }\n }, 1000);\n }\n });\n\n watch([gtcAccepted], () => {\n if (gtcAccepted.value) {\n store.commit('ui/openTermsAndConditionsModal');\n }\n });\n\n onMounted(() => {\n configureInterceptor(\n logoutEvent,\n (url) => {\n activePendingRequests.value = [\n ...activePendingRequests.value,\n {\n startTime: new Date().getTime(),\n url,\n },\n ];\n },\n (url) => {\n const activePendingRequestsFiltered = activePendingRequests.value.filter(\n (request) => request.url !== url,\n );\n activePendingRequests.value = [...activePendingRequestsFiltered];\n },\n );\n cloudMessagingPermission(updateFirebaseToken, permissionGranted);\n });\n\n return {\n width,\n modalLogoutOpen,\n logoutEvent,\n mobileNavOpen,\n userName,\n userEmail,\n companyPicture,\n serverLocale,\n userSettings,\n deviceGroupping,\n showTraffic,\n userPicture,\n companyUrl,\n defaultSettings,\n isUserModalVisible,\n isPending,\n gtcAccepted,\n isTermsAndConditionsModalOpen,\n closeUserModalVisibility,\n closeTermsAndConditionsModal,\n openUserModalSettings,\n };\n },\n});\n","import { render } from \"./Layout.vue?vue&type=template&id=2935cfd7&ts=true\"\nimport script from \"./Layout.vue?vue&type=script&lang=ts\"\nexport * from \"./Layout.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\projects\\\\tracker-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\nimport { defineComponent, onMounted } from 'vue';\r\nimport { useRouter } from 'vue-router';\r\n\r\nexport default defineComponent({\r\n name: 'Overview',\r\n setup() {\r\n const router = useRouter();\r\n\r\n onMounted(() => {\r\n router.push({ name: 'maps' });\r\n });\r\n\r\n return {};\r\n },\r\n});\r\n","import script from \"./Overview.vue?vue&type=script&lang=ts\"\nexport * from \"./Overview.vue?vue&type=script&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\nimport _imports_0 from '@/assets/logo-tracker.svg'\nimport _imports_1 from '@/assets/auth/notfound/notfound-error.svg'\n\n\nconst _hoisted_1 = { class: \"page-auth\" }\nconst _hoisted_2 = { class: \"auth-container\" }\nconst _hoisted_3 = { class: \"auth-logo\" }\nconst _hoisted_4 = [\"alt\"]\nconst _hoisted_5 = { class: \"auth-title\" }\nconst _hoisted_6 = { class: \"auth-desc\" }\nconst _hoisted_7 = { class: \"auth-image\" }\nconst _hoisted_8 = [\"alt\"]\nconst _hoisted_9 = {\n href: \"https://www.tracker.com/\",\n class: \"auth-powered\",\n target: \"_blank\"\n}\nconst _hoisted_10 = [\"alt\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"img\", {\n src: _imports_0,\n alt: _ctx.$t('pages.layout.notfound.logo_alt')\n }, null, 8, _hoisted_4)\n ]),\n _createElementVNode(\"h1\", _hoisted_5, _toDisplayString(_ctx.$t('pages.layout.notfound.title')), 1),\n _createElementVNode(\"p\", _hoisted_6, _toDisplayString(_ctx.$t('pages.layout.notfound.text')), 1),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"img\", {\n src: _imports_1,\n alt: _ctx.$t('pages.layout.notfound.image_alt')\n }, null, 8, _hoisted_8)\n ]),\n _createVNode(_component_router_link, {\n to: { name: 'home' },\n class: \"button auth-button\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('pages.layout.notfound.button')), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"a\", _hoisted_9, [\n _createTextVNode(_toDisplayString(_ctx.$t('pages.auth.login.powered_by')) + \" \", 1),\n _createElementVNode(\"img\", {\n src: _imports_0,\n alt: _ctx.$t('pages.auth.login.powered_by_alt')\n }, null, 8, _hoisted_10)\n ])\n ]))\n}","\r\nimport { defineComponent, computed, watch } from 'vue';\r\nimport { useStore } from 'vuex';\r\nimport { useI18n } from 'vue-i18n';\r\n\r\nexport default defineComponent({\r\n name: 'NotFound',\r\n setup() {\r\n const store = useStore();\r\n const i18n = useI18n({ useScope: 'global' });\r\n const serverLocale = computed(() => store.getters['ui/languageCode']);\r\n i18n.locale.value = serverLocale.value;\r\n watch(serverLocale, () => {\r\n i18n.locale.value = serverLocale.value;\r\n });\r\n\r\n return {\r\n serverLocale,\r\n };\r\n },\r\n});\r\n","import { render } from \"./NotFound.vue?vue&type=template&id=85d00f6e&ts=true\"\nimport script from \"./NotFound.vue?vue&type=script&lang=ts\"\nexport * from \"./NotFound.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\projects\\\\tracker-frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","/* eslint-disable no-empty */\nimport { createRouter, createWebHistory, RouteRecordRaw, NavigationGuard } from 'vue-router';\n\nimport store from '@/store';\n\nimport Login from '../pages/login/Login.vue';\nimport Redeem from '../pages/redeem/Redeem.vue';\nimport ForgotPassword from '../pages/forgot-password/ForgotPassword.vue';\n/* import ChangePassword from '../pages/change-password/ChangePassword.vue'; */\nimport Layout from '../pages/layout/Layout.vue';\n\nimport Overview from '../pages/overview/Overview.vue';\n/* import Devices from '../pages/devices/Devices.vue'; */\n/* import Stats from '../pages/stats/Stats.vue'; */\nimport NotFound from '../pages/notfound/NotFound.vue';\n\nconst requireAuth: NavigationGuard = async (to, from, next) => {\n try {\n const result = await store.dispatch('auth/verifyUser');\n if (result === true) {\n next();\n return;\n }\n } catch {}\n\n next({\n name: 'login',\n query: {\n redirect: to.fullPath,\n },\n });\n};\n\nconst requireNotAuth: NavigationGuard = async (to, from, next) => {\n try {\n const result = await store.dispatch('auth/verifyUser');\n if (result === true && !to.fullPath.includes('authorize')) {\n next({\n name: 'home',\n });\n return;\n }\n } catch {}\n\n next();\n};\n\nconst routes: Array = [\n {\n path: '/login',\n name: 'login',\n component: Login,\n beforeEnter: requireNotAuth,\n },\n {\n path: '/authorize',\n name: 'authorize',\n component: Redeem,\n beforeEnter: requireNotAuth,\n },\n {\n path: '/forgot-password',\n name: 'forgot-password',\n component: ForgotPassword,\n beforeEnter: requireNotAuth,\n },\n {\n path: '/',\n component: Layout,\n beforeEnter: requireAuth,\n children: [\n {\n path: '/',\n name: 'home',\n component: Overview,\n },\n {\n path: '/maps',\n name: 'maps',\n component: () => import('../pages/maps/Maps.vue'),\n },\n /* {\n path: '/reports',\n name: 'reports',\n component: () => import('../pages/reports/Reports.vue'),\n }, */\n /* {\n path: '/stats',\n name: 'stats',\n component: Stats,\n }, */\n /* {\n path: '/temperature-dashboard2',\n name: 'temperature-dashboard2',\n component: TemperatureDashboard2,\n }, */\n /* {\n path: '/change-password',\n name: 'change-password',\n component: ChangePassword,\n }, */\n ],\n },\n {\n path: '/:pathMatch(.*)*',\n name: 'notfound',\n component: NotFound,\n },\n];\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes,\n});\n\nexport default router;\n","import { createApp } from 'vue';\r\nimport Toaster from '@meforma/vue-toaster';\r\nimport VueGtag from 'vue-gtag';\r\nimport { VueCookieNext } from 'vue-cookie-next';\r\nimport KonamiCode from 'vue-konami-code';\r\n\r\nimport 'devextreme/dist/css/dx.light.css';\r\nimport '@/scss/main.scss';\r\n\r\nimport i18n from './i18n/i18n';\r\nimport App from './App.vue';\r\n\r\nimport registerGlobalComponents from './plugins/components';\r\n\r\nimport router from './router';\r\nimport store from './store';\r\n\r\nconst app = createApp(App);\r\n\r\napp.use(i18n);\r\napp.use(store);\r\napp.use(router);\r\napp.use(VueCookieNext);\r\napp.use(VueGtag, {\r\n config: {\r\n id: process.env.VUE_APP_GA4,\r\n params: {\r\n anonymize_ip: true,\r\n },\r\n },\r\n router,\r\n enabled: false,\r\n});\r\napp.use(Toaster, {\r\n position: 'bottom-left',\r\n maxToasts: 2,\r\n}).provide('toast', app.config.globalProperties.$toast);\r\napp.use(KonamiCode, {\r\n callback: function () {\r\n window.location.href = 'https://youtu.be/dQw4w9WgXcQ';\r\n },\r\n});\r\n\r\nregisterGlobalComponents(app);\r\n\r\n// Will be used later\r\napp.provide('gtag', app.config.globalProperties.$gtag);\r\n\r\napp.mount('#app');\r\n\r\ndocument.documentElement.style.setProperty('--vh', `${window.innerHeight * 0.01}px`);\r\nwindow.addEventListener('resize', () => {\r\n document.documentElement.style.setProperty('--vh', `${window.innerHeight * 0.01}px`);\r\n});\r\n","export default [\n {\n elementType: 'geometry',\n stylers: [\n {\n color: '#f5f5f5',\n },\n ],\n },\n {\n elementType: 'labels.icon',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#616161',\n },\n ],\n },\n {\n elementType: 'labels.text.stroke',\n stylers: [\n {\n color: '#f5f5f5',\n },\n ],\n },\n {\n featureType: 'administrative.land_parcel',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#bdbdbd',\n },\n ],\n },\n {\n featureType: 'poi',\n elementType: 'geometry',\n stylers: [\n {\n color: '#eeeeee',\n },\n ],\n },\n {\n featureType: 'poi',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#757575',\n },\n ],\n },\n {\n featureType: 'poi.park',\n elementType: 'geometry',\n stylers: [\n {\n color: '#e5e5e5',\n },\n ],\n },\n {\n featureType: 'poi.park',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#9e9e9e',\n },\n ],\n },\n {\n featureType: 'road',\n elementType: 'geometry',\n stylers: [\n {\n color: '#ffffff',\n },\n ],\n },\n {\n featureType: 'road.arterial',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#757575',\n },\n ],\n },\n {\n featureType: 'road.highway',\n elementType: 'geometry',\n stylers: [\n {\n color: '#ffeba1',\n },\n ],\n },\n {\n featureType: 'road.highway',\n elementType: 'geometry.stroke',\n stylers: [\n {\n color: '#ffeb3b',\n },\n ],\n },\n {\n featureType: 'road.highway',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#616161',\n },\n ],\n },\n {\n featureType: 'road.highway',\n elementType: 'labels',\n stylers: [\n {\n visibility: 'on',\n },\n ],\n },\n {\n featureType: 'road.local',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#9e9e9e',\n },\n ],\n },\n {\n featureType: 'transit.line',\n elementType: 'geometry',\n stylers: [\n {\n color: '#e5e5e5',\n },\n ],\n },\n {\n featureType: 'transit.station',\n elementType: 'geometry',\n stylers: [\n {\n color: '#eeeeee',\n },\n ],\n },\n {\n featureType: 'water',\n elementType: 'geometry',\n stylers: [\n {\n color: '#c9c9c9',\n },\n ],\n },\n {\n featureType: 'water',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#9e9e9e',\n },\n ],\n },\n];\n","export default [\r\n {\r\n textColor: 'white',\r\n textSize: 11,\r\n textDecoration: 'none',\r\n textLineHeight: 53,\r\n fontWeight: 'bold',\r\n fontStyle: 'normal',\r\n fontFamily: 'Arial,sans-serif',\r\n backgroundPosition: '0 0',\r\n url: require('@/assets/maps/markerclusterer/m1.png'),\r\n height: 53,\r\n width: 53,\r\n },\r\n {\r\n textColor: 'white',\r\n textSize: 11,\r\n textDecoration: 'none',\r\n textLineHeight: 56,\r\n fontWeight: 'bold',\r\n fontStyle: 'normal',\r\n fontFamily: 'Arial,sans-serif',\r\n backgroundPosition: '0 0',\r\n url: require('@/assets/maps/markerclusterer/m2.png'),\r\n height: 56,\r\n width: 56,\r\n },\r\n {\r\n textColor: 'white',\r\n textSize: 11,\r\n textDecoration: 'none',\r\n textLineHeight: 66,\r\n fontWeight: 'bold',\r\n fontStyle: 'normal',\r\n fontFamily: 'Arial,sans-serif',\r\n backgroundPosition: '0 0',\r\n url: require('@/assets/maps/markerclusterer/m3.png'),\r\n height: 66,\r\n width: 66,\r\n },\r\n {\r\n textColor: 'white',\r\n textSize: 11,\r\n textDecoration: 'none',\r\n textLineHeight: 78,\r\n fontWeight: 'bold',\r\n fontStyle: 'normal',\r\n fontFamily: 'Arial,sans-serif',\r\n backgroundPosition: '0 0',\r\n url: require('@/assets/maps/markerclusterer/m4.png'),\r\n height: 78,\r\n width: 78,\r\n },\r\n {\r\n textColor: 'white',\r\n textSize: 11,\r\n textDecoration: 'none',\r\n textLineHeight: 90,\r\n fontWeight: 'bold',\r\n fontStyle: 'normal',\r\n fontFamily: 'Arial,sans-serif',\r\n backgroundPosition: '0 0',\r\n url: require('@/assets/maps/markerclusterer/m5.png'),\r\n height: 90,\r\n width: 90,\r\n },\r\n];\r\n","import { ApiDeviceListItemDeviceStatus } from './../api/types/device';\n\nconst deviceBgColorSelector = (\n staticBgcolor: string | null,\n deviceStatusArr: Array | undefined,\n) => {\n let bgColor = '#fff';\n let deviceStatus = deviceStatusArr;\n\n if (staticBgcolor) {\n bgColor = staticBgcolor;\n } else if (deviceStatus && deviceStatus.length > 0) {\n deviceStatus = [...deviceStatus];\n deviceStatus.sort(function (a, b) {\n return a.Priority - b.Priority;\n });\n bgColor = deviceStatus[0].Color;\n } else {\n bgColor = '#fff';\n }\n\n return bgColor;\n};\n\nexport default deviceBgColorSelector;\n","export const colorsPalette = [\n '#f44336',\n '#e91e63',\n '#9c27b0',\n '#673ab7',\n '#3f51b5',\n '#2196f3',\n '#03a9f4',\n '#00bcd4',\n '#009688',\n '#4caf50',\n '#8bc34a',\n '#cddc39',\n '#ffeb3b',\n '#ffc107',\n '#ff9800',\n '#ff5722',\n '#795548',\n '#9e9e9e',\n '#607d8b',\n '#212121',\n '#ffffff',\n '#000000',\n];\n","import { Ref } from 'vue';\nimport { format } from 'date-fns';\n\nimport MarkerClusterer from '@googlemaps/markerclustererplus';\n\nimport mapStyles from './map-styles';\nimport markerClusterStyles from './marker-cluster-styles';\n\nimport {\n ApiDeviceListItem,\n ApiDeviceRoutes,\n ApiDeviceLayers,\n ApiDeviceActionsItem,\n ApiDeviceRoutesInfomodalContent,\n ApiDevicePoiInfomodalContent,\n ApiCoordinates,\n EventMarker,\n} from '@/api/types/device';\n\nimport {\n ApiDeviceInfomodalContent,\n ApiDeviceRoutesListItem,\n ApiDeviceRoutesListItemPos,\n ApiDeviceRoutesListItemStop,\n} from './../../../../api/types/device';\n\nimport { ILayersActive, IFencesActive } from '../../types';\nimport { ILayerForFilter } from '@/store/layers';\nimport { FilteredSearchLocation } from '@/store/device';\nimport deviceBgColorSelector from '@/helpers/deviceBgColorSelector';\nimport { colorsPalette } from '@/config/colorsPalette';\n\nconst ZOOM_LEVEL_WHEN_TO_HIDE_ROUTE_DATA_POINTS = 13;\nconst ZOOM_LEVEL_WHEN_TO_HIDE_ROUTE_STOP_POINTS = 11;\n\ndeclare global {\n interface Window {\n mapApiInitialized: () => void;\n }\n}\n\nconst MAP_ICONS = {\n markerDefault:\n 'M21.7347,4.0153S17.449.0357,15,.0357H9.49C4.8981.0357,0,4.0157,0,5.24v5.51l1.9922.5692a3.8254,3.8254,0,0,1,7.6506.0432H20.3571a3.8254,3.8254,0,0,1,7.6506-.0432L30,10.75V7.3826c0-1.2245-3.0613-2.7551-8.2654-3.3673ZM11.02,4.3,3.5357,4.0417A11.333,11.333,0,0,1,9.49,1.8724h1.53Zm1.8367.0634V1.8724H15c.8729,0,2.9046,1.3011,4.6108,2.724ZM8.4184,11.3622a2.6017,2.6017,0,0,1-2.6013,2.6021H5.8163a2.6017,2.6017,0,0,1-2.602-2.6014v-.0007A2.6017,2.6017,0,0,1,5.8155,8.76h.0008a2.6017,2.6017,0,0,1,2.6021,2.6013Zm18.3673,0a2.6019,2.6019,0,1,1,0-.0007Z',\n markerDefaultActive: (activeColor: string): string =>\n `data:image/svg+xml;charset=utf-8,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"38\" viewBox=\"0 0 32 38\"%3E%3Cpath d=\"M 15.75 1.484 A 14.3505 14.3505 90 0 1 24.649 27.092 L 16.8 35 C 16.1 35.7 15.4 35.7 14.7 35 L 6.8503 27.0915 A 14.3505 14.3505 90 0 1 15.75 1.484 Z\" fill-rule=\"evenodd\"/%3E%3Cpath d=\"M 15.75 0.784 A 15.0505 15.0505 90 0 1 25.112 27.6183 h 0 L 16.8 35.7 C 16.1 36.4 15.4 36.4 14.7 35.7 L 6.3872 27.6177 A 15.0504 15.0504 90 0 1 15.75 0.784 Z\" fill=\"%23fff\" stroke=\"%23000\" stroke-width=\"2\" fill-rule=\"evenodd\"/%3E%3Ccircle cx=\"16\" cy=\"16\" r=\"10\" fill=\"%23${activeColor}\"/%3E%3Cpath /%3E%3C/svg%3E`,\n startIcon:\n 'data:image/svg+xml;charset=utf-8,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 32 32\"%3E%3Cpath d=\"M31,16A15,15,0,1,1,16,1,15,15,0,0,1,31,16Z\" fill=\"%23B5D100\"/%3E%3Cpath d=\"M16,32A16,16,0,1,1,32,16,16.0183,16.0183,0,0,1,16,32ZM16,2A14,14,0,1,0,30,16,14.0158,14.0158,0,0,0,16,2Z\"/%3E%3C/svg%3E',\n eventIcon:\n 'data:image/svg+xml;charset=utf-8,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 32 32\"%3E%3Cpath d=\"M31,16A15,15,0,1,1,16,1,15,15,0,0,1,31,16Z\" fill=\"%230e719e\"/%3E%3Cpath d=\"M16,32A16,16,0,1,1,32,16,16.0183,16.0183,0,0,1,16,32ZM16,2A14,14,0,1,0,30,16,14.0158,14.0158,0,0,0,16,2Z\"/%3E%3C/svg%3E',\n endIcon:\n 'data:image/svg+xml;charset=utf-8,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 32 32\"%3E%3Cpath d=\"M31,16A15,15,0,1,1,16,1,15,15,0,0,1,31,16Z\" fill=\"%23E03905\"/%3E%3Cpath d=\"M16,32A16,16,0,1,1,32,16,16.0183,16.0183,0,0,1,16,32ZM16,2A14,14,0,1,0,30,16,14.0158,14.0158,0,0,0,16,2Z\"/%3E%3C/svg%3E',\n dataStampIcon: (activeColor: string): string =>\n `data:image/svg+xml;charset=utf-8,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 32 32\"%3E%3Cpath d=\"M31,16A15,15,0,1,1,16,1,15,15,0,0,1,31,16Z\" fill=\"%23fff\"/%3E%3Cpath d=\"M16,32A16,16,0,1,1,32,16,16.0183,16.0183,0,0,1,16,32ZM16,2A14,14,0,1,0,30,16,14.0158,14.0158,0,0,0,16,2Z\" fill=\"%23${activeColor}\"/%3E%3C/svg%3E`,\n pathIcon:\n 'data:image/svg+xml;charset=utf-8,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 32 32\"%3E%3Cpath d=\"M31,16A15,15,0,1,1,16,1,15,15,0,0,1,31,16Z\" fill=\"%23000\"/%3E%3Cpath d=\"M16,32A16,16,0,1,1,32,16,16.0183,16.0183,0,0,1,16,32ZM16,2A14,14,0,1,0,30,16,14.0158,14.0158,0,0,0,16,2Z\"/%3E%3C/svg%3E',\n stopIcon: (color: string): string =>\n `data:image/svg+xml;charset=utf-8,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"8\" height=\"8\" viewBox=\"0 0 32 32\"%3E%3Cpath d=\"M31,16A15,15,0,1,1,16,1,15,15,0,0,1,31,16Z\" fill=\"%23${color.substring(\n 1,\n )}\"/%3E%3Cpath /%3E%3C/svg%3E`,\n};\n\nconst CONSENT_INFOMODAL = {\n pathContent: (data: ApiDeviceRoutesInfomodalContent): string => `
\n

${data.route.name} ${data.route.key} ${data.route.value}

\n

${data.timeS.name}: ${data.timeS.value}

\n

${data.height.name}: ${data.height.value}

\n

${data.speed.name}: ${data.speed.value}

\n ${\n data.temp01.value\n ? `

${data.temp01.name}: ${data.temp01.value}°

`\n : ''\n }\n ${\n data.temp02.value\n ? `

${data.temp02.name}: ${data.temp02.value}°

`\n : ''\n }\n ${\n data.temp03.value\n ? `

${data.temp03.name}: ${data.temp03.value}°

`\n : ''\n }\n ${\n data.temp04.value\n ? `

${data.temp04.name}: ${data.temp04.value}°

`\n : ''\n }\n
`,\n stopContent: (data: ApiDeviceRoutesInfomodalContent): string => `
\n

${data.route.name} ${data.route.key} - ${data.stopPoint.name} ${data.stopPoint.value}

\n

${data.timeS.name}: ${data.timeS.value} - ${data.timeE?.value}

\n

${data.speed.name}: ${data.speed.value}

\n

${data.address.street}, ${data.address.postCode} ${data.address.city}

\n
`,\n startEndContent: (data: ApiDeviceRoutesInfomodalContent): string => `
\n

${data.route.name} ${data.route.key} - ${data.stopPoint.name}

\n

${data.timeS.name}: ${data.timeS.value}

\n

${data.height.name}: ${data.height.value}

\n ${\n data.temp01.value\n ? `

${data.temp01.name}: ${data.temp01.value}°

`\n : ''\n }\n ${\n data.temp02.value\n ? `

${data.temp02.name}: ${data.temp02.value}°

`\n : ''\n }\n ${\n data.temp03.value\n ? `

${data.temp03.name}: ${data.temp03.value}°

`\n : ''\n }\n ${\n data.temp04.value\n ? `

${data.temp04.name}: ${data.temp04.value}°

`\n : ''\n }\n

${data.address.street}, ${data.address.postCode} ${\n data.address.city\n }

\n
`,\n deviceContent: (data: ApiDeviceInfomodalContent): string => `
\n

${\n data.name.value\n }

\n

${data.altitude.name}: ${data.altitude.value}

\n

${data.lastPosition.name}: ${data.lastPosition.value}

\n

${data.lastContact.name}: ${\n data.lastContact.value\n }

\n

${data.address.street}, ${data.address.postCode} ${data.address.city}

\n ${data.showDetails ? `

` : ''}\n ${\n data.showDetails\n ? ``\n : ''\n }\n
`,\n poiContent: (data: ApiDevicePoiInfomodalContent): string => `
\n

${data.name.value}

\n

${data.description.value}

\n
`,\n};\n\nexport default class Map {\n map: google.maps.Map | null = null;\n mapElement: HTMLElement | null = null;\n mapReady = false;\n onMapReady: ((withZoom: boolean) => void) | null = null;\n searchBoxElement: HTMLInputElement | null = null;\n filterSearchBoxElement: HTMLInputElement | null = null;\n searchBox: google.maps.places.SearchBox | null = null;\n filterSearch: google.maps.places.SearchBox | null = null;\n searchActivate: ((active: boolean) => void) | undefined;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n filterSearchGetValue: (value: FilteredSearchLocation) => void = () => {};\n\n markers: Array = [];\n markersSearch: Array = [];\n markersNearbySearch: Array = [];\n markerCluster: MarkerClusterer | null = null;\n\n paths: Array = [];\n routePath: google.maps.Polyline;\n pathsMarkers: Array = [];\n pathInfoWindow: google.maps.InfoWindow | null = null;\n pathAnimatedInfoWindow: google.maps.InfoWindow | null = null;\n\n layerTraffic: google.maps.TrafficLayer | null = null;\n layers: Array = [];\n layersInfoWindow: google.maps.InfoWindow | null = null;\n\n fences: Array = [];\n\n routeAnimationInterval: number | undefined;\n markerAnimation: google.maps.Marker | undefined | null;\n routesAnimation:\n | (google.maps.LatLng | google.maps.LatLngLiteral | null | undefined)[]\n | { lat: number; lng: number }[] = [];\n\n routeAnimationPaused = false;\n routeAnimationProgress = 0;\n routeAnimationClearFunction: (() => void) | undefined;\n clearNearDevicesSearch: (() => void) | undefined;\n\n initialize(\n mapElement: HTMLElement,\n searchBoxElement: HTMLInputElement,\n filterBoxElement: HTMLInputElement, //nearby search\n showPlaces: () => void,\n onMapReady: () => void,\n searchActivate: (active: boolean) => void,\n clearNearDevicesSearch: () => void,\n ): void {\n this.mapElement = mapElement;\n this.searchBoxElement = searchBoxElement;\n this.filterSearchBoxElement = filterBoxElement;\n this.filterSearchGetValue = showPlaces;\n this.onMapReady = onMapReady;\n this.searchActivate = searchActivate;\n this.clearNearDevicesSearch = clearNearDevicesSearch;\n }\n\n loadScript(mapId = '', reloadOnlyMapType = false): boolean {\n const scriptId = 'map-api-script';\n const mapAttached = !!document.getElementById(scriptId);\n const defaultZoom = reloadOnlyMapType ? this.map?.getZoom() ?? 12 : 12;\n const defaultCenter = reloadOnlyMapType ? this.map?.getCenter() : { lat: 47.373878, lng: 8.545094 };\n const withZoom = !reloadOnlyMapType;\n\n if (mapAttached) {\n if (window.google) {\n this.init(mapId, defaultCenter, defaultZoom, withZoom);\n if (this.layers.length > 0) this.layersShow(withZoom);\n }\n } else {\n window.mapApiInitialized = () => {\n this.init(mapId, defaultCenter, defaultZoom, withZoom);\n if (this.layers.length > 0) this.layersShow(withZoom);\n };\n\n const apiKey = 'AIzaSyBtFYz8AyIxH1lk9hahlWBy1TFCBNTdEHE';\n const script = document.createElement('script');\n script.id = scriptId;\n /* script.src = `https://maps.googleapis.com/maps/api/js?key=${apiKey}&libraries=places,geometry&callback=mapApiInitialized`; */\n script.src = `https://maps.googleapis.com/maps/api/js?key=${apiKey}&libraries=places,geometry&callback=mapApiInitialized`;\n document.body.appendChild(script);\n }\n\n return mapAttached;\n }\n\n init(mapId = '', defaultCenter, defaultZoom = 12, withZoom = true): void {\n this.map = new window.google.maps.Map(this.mapElement as HTMLElement, {\n center: defaultCenter,\n zoom: defaultZoom,\n maxZoom: 20,\n disableDefaultUI: true,\n styles: mapStyles,\n streetViewControl: true,\n streetViewControlOptions: {\n position: google.maps.ControlPosition.TOP_LEFT,\n },\n zoomControl: true,\n zoomControlOptions: {\n position: google.maps.ControlPosition.TOP_LEFT,\n },\n scaleControl: true,\n mapId: mapId,\n });\n\n this.initSearchBox();\n this.initFilterSearchBox();\n this.changeStoppointsVisibilityBasedZoom();\n this.mapReady = true;\n if (this.onMapReady) {\n this.onMapReady(withZoom);\n }\n }\n\n fitBounds(onlyPaths: boolean): void {\n const bounds = new window.google.maps.LatLngBounds();\n let anyBound = false;\n if (!onlyPaths && this.markersSearch && this.markersSearch.length > 0) {\n anyBound = true;\n for (let i = 0; i < this.markersSearch.length; i++) {\n bounds.extend(this.markersSearch[i].getPosition() as google.maps.LatLng);\n }\n }\n if (!onlyPaths && this.markersNearbySearch && this.markersNearbySearch.length > 0) {\n anyBound = true;\n for (let i = 0; i < this.markersNearbySearch.length; i++) {\n bounds.extend(this.markersNearbySearch[i].getPosition() as google.maps.LatLng);\n }\n }\n if (!onlyPaths && this.markers && this.markers.length > 0) {\n anyBound = true;\n for (let i = 0; i < this.markers.length; i++) {\n bounds.extend(this.markers[i].getPosition() as google.maps.LatLng);\n }\n }\n if (this.paths && this.paths.length > 0) {\n anyBound = true;\n for (let i = 0; i < this.paths.length; i++) {\n this.paths[i].getPath().forEach(function (item) {\n bounds.extend(new google.maps.LatLng(item.lat(), item.lng()));\n });\n }\n }\n\n if (anyBound) {\n this.map?.setOptions({ maxZoom: 18 });\n\n this.map?.addListener('idle', () => {\n this.map?.setOptions({ maxZoom: 20 });\n });\n this.map?.fitBounds(bounds, { top: 110, right: 80, left: 60 }); // auto-zoom\n this.map?.panToBounds(bounds); // auto-center\n }\n }\n\n initSearchBox(): void {\n this.searchBox = new window.google.maps.places.SearchBox(this.searchBoxElement as HTMLInputElement);\n this.searchBox.addListener('places_changed', this.searchPlacesChanged.bind(this));\n if (this.map) {\n this.map.addListener('bounds_changed', () => {\n if (this.map && this.searchBox) {\n this.searchBox.setBounds(this.map.getBounds() as google.maps.LatLngBounds);\n }\n });\n }\n }\n\n initFilterSearchBox(): void {\n this.filterSearch = new window.google.maps.places.SearchBox(this.filterSearchBoxElement as HTMLInputElement);\n this.filterSearch.addListener('places_changed', this.searchNearbyPlaces.bind(this));\n if (this.map) {\n this.map.addListener('bounds_changed', () => {\n if (this.map && this.filterSearch) {\n this.filterSearch.setBounds(this.map.getBounds() as google.maps.LatLngBounds);\n }\n });\n }\n }\n\n searchPlacesChanged(): void {\n const bounds = new google.maps.LatLngBounds();\n\n const places = this.searchBox?.getPlaces();\n if (!places || !places?.length) {\n return;\n }\n\n // Clear out the old markers.\n this.searchClear();\n\n // For each place, get the icon, name and location.\n places?.forEach((place) => {\n if (!place.geometry || !place.geometry.location) {\n // console.log('Returned place contains no geometry');\n return;\n }\n\n const icon = {\n url: place.icon as string,\n size: new window.google.maps.Size(71, 71),\n origin: new window.google.maps.Point(0, 0),\n anchor: new window.google.maps.Point(17, 34),\n scaledSize: new window.google.maps.Size(25, 25),\n };\n\n const marker = new window.google.maps.Marker({\n map: this.map as google.maps.Map,\n icon,\n title: place.name,\n position: place.geometry.location,\n });\n\n // Create a marker for each place.\n this.markersSearch.push(marker);\n bounds.extend(place.geometry.location);\n });\n\n // need to expand bounds because for one location zoom is too close\n if (bounds.getNorthEast().equals(bounds.getSouthWest())) {\n // create fake points\n const extendPoint1 = new google.maps.LatLng(\n bounds.getNorthEast().lat() + 0.03,\n bounds.getNorthEast().lng() + 0.03,\n );\n const extendPoint2 = new google.maps.LatLng(\n bounds.getNorthEast().lat() - 0.03,\n bounds.getNorthEast().lng() - 0.03,\n );\n\n bounds.extend(extendPoint1);\n bounds.extend(extendPoint2);\n }\n\n this.map?.fitBounds(bounds); // auto-zoom\n this.map?.panToBounds(bounds); // auto-center\n\n if (this.searchActivate) {\n this.searchActivate(this.markersSearch.length > 0);\n }\n }\n\n searchNearbyPlaces(): void {\n const places = this.filterSearch?.getPlaces();\n const bounds = new google.maps.LatLngBounds();\n\n if (!places || !places?.length) {\n return;\n }\n\n // For each place, get the icon, name and location.\n places?.forEach((place) => {\n const icon = {\n url: place.icon as string,\n size: new window.google.maps.Size(71, 71),\n origin: new window.google.maps.Point(0, 0),\n anchor: new window.google.maps.Point(17, 34),\n scaledSize: new window.google.maps.Size(25, 25),\n };\n\n const marker = new window.google.maps.Marker({\n map: this.map as google.maps.Map,\n icon,\n title: place.name,\n position: place.geometry.location,\n });\n\n marker.addListener('click', () => {\n this.markersNearbyPlacesClear();\n this.clearNearDevicesSearch();\n });\n\n //Clear existing markers\n //this.markersClear();\n this.markersNearbyPlacesClear();\n\n // Create a marker for each place.\n this.markersNearbySearch.push(marker);\n\n bounds.extend(place.geometry.location);\n\n this.filterSearchGetValue({\n name: place.formatted_address,\n latLng: place.geometry.location as google.maps.LatLng,\n });\n });\n\n this.map?.fitBounds(bounds); // auto-zoom\n this.map?.panToBounds(bounds); // auto-center\n }\n\n searchClear(): void {\n this.routeAnimationClear();\n\n this.markersSearch.forEach((marker) => {\n marker.setMap(null);\n });\n this.markersSearch = [];\n this.fitBounds(false);\n }\n\n markersNearbyPlacesClear(): void {\n if (this.routePath) {\n this.routePath.setMap(null);\n }\n this.routeAnimationClear();\n\n this.markersNearbySearch.forEach((marker) => {\n marker.setMap(null);\n });\n this.markersNearbySearch = [];\n this.fitBounds(false);\n }\n\n markersClear(): void {\n this.routeAnimationClear();\n\n if (this.markerCluster) {\n this.markerCluster.clearMarkers();\n }\n\n for (const marker of this.markers) {\n marker.setMap(null);\n }\n this.markers = [];\n }\n\n markersEventsClear(): void {\n this.markers.forEach((pathsMarker, index) => {\n if (pathsMarker.get('markerType') === 'event') {\n this.markers[index].setMap(null);\n this.markers.splice(index, 1);\n }\n });\n }\n\n _markerIcon(item: ApiDeviceListItem, isActive: boolean): google.maps.Icon | google.maps.Symbol | string {\n // how to add icon - https://stackoverflow.com/questions/24413766/how-to-use-svg-markers-in-google-maps-api-v3/24426400#24426400\n // how to format svg icon - https://stackoverflow.com/questions/24413766/how-to-use-svg-markers-in-google-maps-api-v3/28816043#28816043\n\n if (!isActive) {\n if (item.IconName && item.svgIcon === '') {\n return {\n url: `https://portalbeta.tracker.com/api/trk/common/image/icon/svg/${\n item.IconName.includes('png') ? item.IconName.replace(/png/g, 'svg') : item.IconName\n }`,\n size: new google.maps.Size(45, 54),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(22, 54),\n labelOrigin: new google.maps.Point(17, 40),\n scaledSize: new google.maps.Size(32, 32),\n };\n }\n if (item.svgIcon !== '') {\n const icon = item.IconColor\n ? item?.svgIcon.replace(/#[0-9A-F]{3,6}/gi, () => item.IconColor)\n : item?.svgIcon;\n\n return {\n url: 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(icon),\n size: new google.maps.Size(45, 54),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(22, 54),\n labelOrigin: new google.maps.Point(17, 40),\n scaledSize: new google.maps.Size(32, 32),\n };\n }\n if (item.ImageName) {\n return {\n url: `https://portalbeta.tracker.com/api/trk/common/image/icon/32/${item.ImageName}`,\n size: new google.maps.Size(45, 54),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(22, 54),\n labelOrigin: new google.maps.Point(17, 40),\n scaledSize: new google.maps.Size(32, 32),\n };\n }\n if (item.HWT.Image) {\n return {\n url: `https://portalbeta.tracker.com/api/trk/common/image/icon/32/${item.HWT.Image}`,\n size: new google.maps.Size(45, 54),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(22, 54),\n labelOrigin: new google.maps.Point(17, 40),\n scaledSize: new google.maps.Size(32, 32),\n };\n }\n return {\n path: MAP_ICONS.markerDefault,\n fillColor: '#000000',\n fillOpacity: 0.9,\n strokeWeight: 0,\n scale: 1,\n size: new google.maps.Size(30, 14),\n origin: new google.maps.Point(0, 0),\n labelOrigin: new google.maps.Point(15, 30),\n anchor: new google.maps.Point(15, 7),\n };\n }\n\n let activeColor = '#fff';\n if (isActive) {\n /* const statusColors = {\n online: '27e005', // green\n offline: 'e3e008', // yellow\n dead: 'e30613', // red\n }; */\n const itemStatus = item.uiStatus;\n activeColor = itemStatus === 'online' ? '27e005' : itemStatus === 'offline' ? 'e3e008' : 'e30613';\n }\n\n return {\n url: MAP_ICONS.markerDefaultActive(activeColor),\n size: new google.maps.Size(32, 38),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(16, 38),\n labelOrigin: new google.maps.Point(16, 48),\n };\n }\n\n markersRender(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n t: any,\n routes: ApiDeviceRoutes,\n devices: Array,\n deviceActive: Ref,\n handleScrollToDevice: () => void,\n withZoom = true,\n withClustering = true,\n withClusterSize = 2,\n nearLocationPlace: FilteredSearchLocation,\n clearNearByLocationPlace: () => void,\n isToday = true,\n isAdmin = false,\n ): void {\n if (!this.map || !this.mapReady) {\n return;\n }\n this.markersClear();\n\n if (nearLocationPlace.name !== null) {\n this.markersNearbySearch.forEach((marker) => {\n marker.setMap(this.map);\n });\n }\n\n const hasActive = deviceActive.value && deviceActive.value > 0;\n if (typeof devices && devices.length > 0) {\n for (let i = 0; i < devices.length; i++) {\n const device = devices[i];\n const isActive = device.Id === deviceActive.value;\n\n if (!device.LastPos) {\n continue;\n }\n\n if (hasActive && !isActive) {\n continue;\n }\n\n const colorBackground = deviceBgColorSelector(device.ImageTextBGC, device?.DeviceStatus);\n\n const markerCurrentPosition = {\n lat: device.LastPos.Lat,\n lng: device.LastPos.Lng,\n street: device.LastPos?.AdrInfo?.Street,\n postCode: device.LastPos?.AdrInfo?.PC,\n city: device.LastPos?.AdrInfo?.City,\n evtDate: device.LastPos?.EvtDate,\n alt: device.LastPos?.Alt,\n };\n\n const markerLastRoutePosition = {\n lat: device.LastPos.Lat,\n lng: device.LastPos.Lng,\n street: device.LastPos?.AdrInfo?.Street,\n postCode: device.LastPos?.AdrInfo?.PC,\n city: device.LastPos?.AdrInfo?.City,\n evtDate: device.LastPos?.EvtDate,\n alt: device.LastPos?.Alt,\n };\n\n if (routes.List && routes.List.length > 0 && routes.List[routes.List.length - 1].RouteEnd) {\n markerLastRoutePosition.lat = routes.List[routes.List.length - 1].RouteEnd.Lat;\n markerLastRoutePosition.lng = routes.List[routes.List.length - 1].RouteEnd.Lng;\n markerLastRoutePosition.street = routes.List[routes.List.length - 1].RouteEnd?.AdrInfo?.Street;\n markerLastRoutePosition.postCode = routes.List[routes.List.length - 1].RouteEnd?.AdrInfo?.PC;\n markerLastRoutePosition.city = routes.List[routes.List.length - 1].RouteEnd?.AdrInfo?.City;\n markerLastRoutePosition.evtDate = routes.List[routes.List.length - 1].RouteEnd?.EvtDate;\n markerLastRoutePosition.alt = routes.List[routes.List.length - 1].RouteEnd?.Alt;\n }\n\n const markerToSetPosition = isToday ? markerCurrentPosition : markerLastRoutePosition;\n\n const marker = new window.google.maps.Marker({\n position: {\n lat: markerToSetPosition.lat,\n lng: markerToSetPosition.lng,\n },\n title: device.Name,\n // animation: google.maps.Animation.DROP,\n icon: this._markerIcon(device, isActive),\n\n label: {\n text: device.Name,\n color: colorsPalette.includes(colorBackground.toLocaleLowerCase())\n ? device.ImageTextFGC\n : '#000',\n className: `marker-label color-${\n colorsPalette.includes(colorBackground.toLocaleLowerCase())\n ? colorBackground.substring(1)\n : 'FFFFFF'\n }`,\n },\n });\n\n marker.set('deviceId', device.Id);\n\n marker.addListener('click', () => {\n if (!isActive) {\n deviceActive.value = marker.get('deviceId'); // TODO\n setTimeout(() => handleScrollToDevice(), 1000);\n if (nearLocationPlace.name !== null) {\n clearNearByLocationPlace();\n this.markersNearbyPlacesClear();\n }\n } else {\n const isDeviceInfoWindowOpened = this.pathInfoWindow\n ?.getContent()\n ?.toString()\n .search('content-device');\n\n if (!isDeviceInfoWindowOpened || isDeviceInfoWindowOpened === -1) {\n this.pathInfoWindow = new google.maps.InfoWindow();\n this.pathInfoWindow?.setContent(\n CONSENT_INFOMODAL.deviceContent({\n name: {\n name: '',\n value: device.Name,\n },\n altitude: {\n name: t('pages.maps.devices_map.deviceInfo.altitude'),\n value: !markerToSetPosition.alt ? '' : markerToSetPosition.alt,\n },\n lastPosition: {\n name: t('pages.maps.devices_map.deviceInfo.lastPosition'),\n value: format(new Date(markerToSetPosition.evtDate), 'dd.MM.yyyy, HH:mm'),\n },\n lastContact: {\n name: t('pages.maps.devices_map.deviceInfo.lastContact'),\n value: format(new Date(device.LastContact), 'dd.MM.yyyy, HH:mm'),\n },\n address: {\n street: markerToSetPosition.street,\n postCode: markerToSetPosition.postCode,\n city: markerToSetPosition.city,\n },\n details: {\n captionLabel: t('pages.maps.devices_list.caption'),\n codeLabel: t('pages.maps.devices_list.code'),\n caption: device.HWT.Caption,\n code: device.Code,\n },\n showDetails: isAdmin,\n }),\n );\n }\n\n this.pathInfoWindow?.setPosition({\n lat: markerToSetPosition.lat,\n lng: markerToSetPosition.lng,\n });\n this.pathInfoWindow?.setOptions({\n pixelOffset: new google.maps.Size(0, -50),\n });\n this.pathInfoWindow?.open(this.map);\n // deviceInfoDiagram\n }\n });\n\n if (!withClustering) {\n marker.setMap(this.map);\n }\n\n this.markers.push(marker);\n }\n\n if (withClustering) {\n this.markerCluster = new MarkerClusterer(this.map, this.markers, {\n imagePath: '/images/markerclusterer/m',\n styles: markerClusterStyles,\n minimumClusterSize: withClusterSize,\n maxZoom: 17,\n });\n }\n\n if (withZoom) {\n this.fitBounds(false);\n }\n }\n }\n\n polylineCalculateClosestPoint(polyline: google.maps.Polyline, latlng: google.maps.LatLng) {\n const needle = {\n minDistance: 9999999999, // silly high\n index: -1,\n latlng: null as unknown,\n };\n polyline.getPath().forEach((routePoint, index) => {\n const dist = google.maps.geometry.spherical.computeDistanceBetween(latlng, routePoint);\n if (dist < needle.minDistance) {\n needle.minDistance = dist;\n needle.index = index;\n needle.latlng = routePoint;\n }\n });\n return needle;\n }\n\n pathInfoDiagram(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n t: any,\n item: ApiDeviceRoutesListItem,\n path: google.maps.Polyline,\n updateRouteDetails: (offsetKey: string) => void,\n ): void {\n this.pathInfoWindow = new google.maps.InfoWindow();\n\n path.addListener('click', (h: { latLng: google.maps.LatLng }) => {\n const latlng = h.latLng;\n\n const needle = this.polylineCalculateClosestPoint(path, latlng);\n\n const pos = item.Pos[needle.index] as ApiDeviceRoutesListItemPos;\n const routeDistance = item.LenghtTrimmedKm;\n const offsetKey = item.OffsetKey;\n\n this.pathInfoWindow?.setContent(\n CONSENT_INFOMODAL.pathContent({\n route: {\n name: `${t('pages.maps.devices_map.routeInfo.route')}`,\n key: `${offsetKey}`,\n keyColor: item.Color,\n value: `(~${routeDistance}km)`,\n },\n stopPoint: {\n name: '',\n value: '',\n },\n timeS: {\n name: t('pages.maps.devices_map.routeInfo.time'),\n value: format(new Date(pos.EvtDate), 'HH:mm'),\n },\n timeE: {\n name: '',\n value: '',\n },\n height: {\n name: t('pages.maps.devices_map.routeInfo.height'),\n value: pos.Alt ? `${pos.Alt}m` : '',\n },\n speed: {\n name: t('pages.maps.devices_map.routeInfo.speed'),\n value: pos.Spd ? `${Math.floor(pos.Spd * 3.6)}km/h` : '', // round down\n },\n temp01: {\n name: 'Temp 1',\n value: null,\n },\n temp02: {\n name: 'Temp 2',\n value: null,\n },\n temp03: {\n name: 'Temp 3',\n value: null,\n },\n temp04: {\n name: 'Temp 4',\n value: null,\n },\n address: {\n street: '',\n postCode: '',\n city: '',\n },\n }),\n );\n this.pathInfoWindow?.setPosition(needle.latlng as google.maps.LatLng);\n this.pathInfoWindow?.setOptions({\n pixelOffset: new google.maps.Size(0, 0),\n });\n this.pathInfoWindow?.open(this.map);\n updateRouteDetails(offsetKey);\n });\n }\n\n stopOnPathInfoDiagram(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n t: any,\n routeKey: string,\n routeColor: string,\n routeDistance: number,\n point: google.maps.Marker,\n stop: ApiDeviceRoutesListItemPos,\n updateRouteDetails: (offsetKey: string) => void,\n ): void {\n this.pathInfoWindow = new google.maps.InfoWindow();\n\n const latLng = point.getPosition();\n\n point.addListener('click', () => {\n this.pathInfoWindow?.setContent(\n CONSENT_INFOMODAL.pathContent({\n route: {\n name: `${t('pages.maps.devices_map.routeInfo.route')}`,\n key: `${routeKey}`,\n keyColor: routeColor,\n value: `(~${routeDistance}km)`,\n },\n stopPoint: {\n name: '',\n value: '',\n },\n timeS: {\n name: t('pages.maps.devices_map.routeInfo.time'),\n value: format(new Date(stop.EvtDate), 'HH:mm'),\n },\n timeE: {\n name: '',\n value: '',\n },\n height: {\n name: t('pages.maps.devices_map.routeInfo.height'),\n value: stop.Alt ? `${stop.Alt}m` : '',\n },\n speed: {\n name: t('pages.maps.devices_map.routeInfo.speed'),\n value: stop.Spd ? `${Math.floor(stop.Spd * 3.6)}km/h` : '', // round down\n },\n temp01: {\n name: 'Temp 1',\n value: stop.Temp01?.toFixed(1),\n },\n temp02: {\n name: 'Temp 2',\n value: stop.Temp02?.toFixed(1),\n },\n temp03: {\n name: 'Temp 3',\n value: stop.Temp03?.toFixed(1),\n },\n temp04: {\n name: 'Temp 4',\n value: stop.Temp04?.toFixed(1),\n },\n address: {\n street: '',\n postCode: '',\n city: '',\n },\n }),\n );\n this.pathInfoWindow?.setPosition(latLng);\n this.pathInfoWindow?.setOptions({\n pixelOffset: new google.maps.Size(0, 0),\n });\n this.pathInfoWindow?.open(this.map);\n updateRouteDetails(routeKey);\n });\n }\n\n stopInfoDiagram(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n t: any,\n routeKey: string,\n routeColor: string,\n point: google.maps.Marker,\n stop: ApiDeviceRoutesListItemStop & ApiDeviceRoutesListItemPos,\n updateRouteDetails: (offsetKey: string) => void,\n ): void {\n this.pathInfoWindow = new google.maps.InfoWindow();\n\n const latLng = point.getPosition();\n\n point.addListener('click', () => {\n this.pathInfoWindow?.setContent(\n CONSENT_INFOMODAL.stopContent({\n route: {\n name: `${t('pages.maps.devices_map.routeInfo.route')}`,\n value: '',\n key: `${routeKey}`,\n keyColor: routeColor,\n },\n stopPoint: {\n name: `${t('pages.maps.devices_map.routeInfo.routeStop')}`,\n value: stop.StopOffsetKey,\n },\n timeS: {\n name: t('pages.maps.devices_map.routeInfo.time'),\n value: format(new Date(stop.StopStartDate), 'HH:mm'),\n },\n timeE: {\n name: '',\n value: format(new Date(stop.StopEndDate), 'HH:mm'),\n },\n height: {\n name: t('pages.maps.devices_map.routeInfo.height'),\n value: stop.Alt ? `${stop.Alt}m` : '',\n },\n speed: {\n name: t('pages.maps.devices_map.routeInfo.speed'),\n value: stop.Spd ? `${Math.floor(stop.Spd * 3.6)}km/h` : '', // round down\n },\n address: {\n street: stop.AdrInfo.Street,\n postCode: stop.AdrInfo.PC,\n city: stop.AdrInfo.City,\n },\n }),\n );\n this.pathInfoWindow?.setPosition(latLng);\n this.pathInfoWindow?.setOptions({\n pixelOffset: new google.maps.Size(0, -10),\n });\n this.pathInfoWindow?.open(this.map);\n updateRouteDetails(routeKey);\n });\n }\n\n startEndInfoDiagram(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n t: any,\n routeKey: string,\n routeColor: string,\n point: google.maps.Marker,\n stop: ApiDeviceRoutesListItemPos & { type: string },\n updateRouteDetails: (offsetKey: string) => void,\n ): void {\n this.pathInfoWindow = new google.maps.InfoWindow();\n\n const latLng = point.getPosition();\n\n point.addListener('click', () => {\n this.pathInfoWindow?.setContent(\n CONSENT_INFOMODAL.startEndContent({\n route: {\n name: `${t('pages.maps.devices_map.routeInfo.route')}`,\n value: '',\n key: `${routeKey}`,\n keyColor: routeColor,\n },\n stopPoint: {\n name:\n stop.type === 'start'\n ? `${t('pages.maps.devices_map.routeInfo.routeStart')}`\n : `${t('pages.maps.devices_map.routeInfo.routeEnd')}`,\n value: stop.StopOffsetKey,\n },\n timeS: {\n name: t('pages.maps.devices_map.routeInfo.time'),\n value: format(new Date(stop.EvtDate), 'HH:mm'),\n },\n timeE: {\n name: '',\n value: '',\n },\n height: {\n name: t('pages.maps.devices_map.routeInfo.height'),\n value: stop.Alt ? `${stop.Alt}m` : '',\n },\n address: {\n street: stop.AdrInfo?.Street,\n postCode: stop.AdrInfo?.PC,\n city: stop.AdrInfo?.City,\n },\n temp01: {\n name: 'Temp 1',\n value: stop?.Temp01?.toFixed(1),\n },\n temp02: {\n name: 'Temp 2',\n value: stop?.Temp02?.toFixed(1),\n },\n temp03: {\n name: 'Temp 3',\n value: stop?.Temp03?.toFixed(1),\n },\n temp04: {\n name: 'Temp 4',\n value: stop?.Temp04?.toFixed(1),\n },\n }),\n );\n this.pathInfoWindow?.setPosition(latLng);\n this.pathInfoWindow?.setOptions({\n pixelOffset: new google.maps.Size(0, -10),\n });\n this.pathInfoWindow?.open(this.map);\n updateRouteDetails(routeKey);\n });\n }\n\n pathsClear(): void {\n this.routeAnimationClear();\n\n for (const path of this.paths) {\n path.setMap(null);\n }\n this.paths = [];\n\n for (const pathsMarker of this.pathsMarkers) {\n pathsMarker.setMap(null);\n }\n this.pathsMarkers = [];\n\n this.pathInfoWindow?.close();\n this.pathInfoWindow = null;\n }\n\n changeStoppointsVisibilityBasedZoom(): void {\n this.map.addListener('zoom_changed', () => {\n this.pathsMarkers.filter((marker) => {\n if (marker.get('stopId') !== undefined) {\n if (this.map.getZoom() > ZOOM_LEVEL_WHEN_TO_HIDE_ROUTE_STOP_POINTS) {\n marker.setVisible(true);\n } else {\n marker.setVisible(false);\n }\n }\n if (marker.get('dataStamp') !== undefined) {\n if (this.map.getZoom() > ZOOM_LEVEL_WHEN_TO_HIDE_ROUTE_DATA_POINTS) {\n marker.setVisible(true);\n } else {\n marker.setVisible(false);\n }\n }\n });\n });\n }\n\n pathsRender(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n t: any,\n routes: ApiDeviceRoutes,\n routeActive: string | null,\n show: boolean,\n showRouteDetails: string | boolean,\n showMarkerWithFittingBounds: boolean,\n updateRouteDetails: (offsetKey: string | null) => void,\n skipFitBounds = false,\n ): void {\n this.pathsClear();\n this.markersEventsClear();\n\n if (!show || typeof routes.List === 'undefined' || !routes.List || routes.List.length === 0) {\n return;\n }\n\n for (const item of routes.List) {\n if (routeActive !== null && routeActive !== item.OffsetKey) {\n continue;\n }\n\n this.pathInfoWindow = new google.maps.InfoWindow();\n\n const startIcon = {\n url: MAP_ICONS.startIcon,\n size: new google.maps.Size(16, 16),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(8, 8),\n };\n\n const endIcon = {\n url: MAP_ICONS.endIcon,\n size: new google.maps.Size(16, 16),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(8, 8),\n };\n\n const pathIcon = {\n url: MAP_ICONS.pathIcon,\n size: new google.maps.Size(18, 18),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(9, 9),\n };\n\n const coordinates = [];\n for (const pos of item.Pos) {\n coordinates.push({\n lat: pos.Lat,\n lng: pos.Lng,\n });\n }\n\n const dataStampIcon = {\n url: MAP_ICONS.dataStampIcon(item.Color.split('#')[1] ?? '000'),\n size: new google.maps.Size(10, 10),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(5, 5),\n };\n\n if (routeActive && showRouteDetails) {\n coordinates.forEach((coordinate, index: number) => {\n const marker = new window.google.maps.Marker({\n position: { lat: coordinate.lat, lng: coordinate.lng },\n map: this.map,\n icon: dataStampIcon,\n });\n marker.set('dataStamp', true);\n\n if (index !== 0 || index !== coordinates.length) {\n this.stopOnPathInfoDiagram(\n t,\n item.OffsetKey,\n item.Color,\n item.LenghtTrimmedKm,\n marker,\n item.Pos[index] as ApiDeviceRoutesListItemPos,\n updateRouteDetails,\n );\n this.pathsMarkers.push(marker);\n }\n });\n /* this.changeDataStampVisibilityBasedZoom(13); */\n }\n\n const markerStart = new window.google.maps.Marker({\n position: { lat: item.RouteStart.Lat, lng: item.RouteStart.Lng },\n map: this.map,\n icon: startIcon,\n });\n\n this.pathsMarkers.push(markerStart);\n\n this.startEndInfoDiagram(\n t,\n item.OffsetKey,\n item.Color,\n markerStart,\n {\n ...item.RouteStart,\n type: 'start',\n },\n updateRouteDetails,\n );\n\n if (item.StopCount > 0 && item.StopPos && item.StopPos.length > 0) {\n for (let i = 0; i < item.StopCount; i++) {\n const stop = item.StopPos[i] as ApiDeviceRoutesListItemStop & ApiDeviceRoutesListItemPos;\n if (stop.Lat && stop.Lng) {\n const marker = new window.google.maps.Marker({\n position: { lat: stop.Lat, lng: stop.Lng },\n map: this.map,\n label: {\n text: stop.StopOffsetKey,\n color: '#fff',\n fontSize: '11px',\n className: `path-marker-label`,\n },\n icon: pathIcon,\n });\n marker.set('stopId', stop.Id);\n this.pathsMarkers.push(marker);\n this.stopInfoDiagram(t, item.OffsetKey, item.Color, marker, stop, updateRouteDetails);\n }\n }\n }\n\n const markerEnd = new window.google.maps.Marker({\n position: { lat: item.RouteEnd.Lat, lng: item.RouteEnd.Lng },\n map: this.map,\n icon: endIcon,\n });\n this.pathsMarkers.push(markerEnd);\n\n this.startEndInfoDiagram(\n t,\n item.OffsetKey,\n item.Color,\n markerEnd,\n {\n ...item.RouteEnd,\n type: 'end',\n },\n updateRouteDetails,\n );\n\n const path = new window.google.maps.Polyline({\n path: coordinates,\n geodesic: true,\n strokeColor: item.Color,\n strokeOpacity: 0.6,\n strokeWeight: routeActive && showRouteDetails ? 6 : 3,\n map: this.map,\n });\n\n if ((routeActive && showRouteDetails) || !routeActive) {\n this.pathInfoDiagram(t, item, path, updateRouteDetails);\n }\n\n // show route detail\n this.paths.push(path);\n }\n\n if (!skipFitBounds) {\n this.fitBounds(!showMarkerWithFittingBounds || routeActive !== null);\n }\n\n if (routeActive && showRouteDetails) {\n this.pathsMarkers.filter((marker) => {\n if (marker.get('dataStamp') !== undefined) {\n if (this.map.getZoom() > ZOOM_LEVEL_WHEN_TO_HIDE_ROUTE_DATA_POINTS) {\n marker.setVisible(true);\n } else {\n marker.setVisible(false);\n }\n }\n });\n }\n }\n\n pathStopFocus(id: number): void {\n this.map?.setOptions({ maxZoom: 18 });\n if (id === -1) {\n try {\n // start marker\n const pathsMarker = this.pathsMarkers[0];\n const bounds = new window.google.maps.LatLngBounds();\n bounds.extend(pathsMarker.getPosition() as google.maps.LatLng);\n this.map?.fitBounds(bounds); // auto-zoom\n this.map?.panToBounds(bounds); // auto-center\n } catch {\n console.log(this.pathsMarkers[0]);\n }\n } else if (id === -2) {\n try {\n // end marker\n const pathsMarker = this.pathsMarkers[this.pathsMarkers.length - 1];\n const bounds = new window.google.maps.LatLngBounds();\n bounds.extend(pathsMarker.getPosition() as google.maps.LatLng);\n this.map?.fitBounds(bounds); // auto-zoom\n this.map?.panToBounds(bounds); // auto-center\n } catch {\n console.log(this.pathsMarkers[this.pathsMarkers.length - 1]);\n }\n } else {\n for (const pathsMarker of this.pathsMarkers) {\n try {\n if (pathsMarker.get('stopId') === id) {\n const bounds = new window.google.maps.LatLngBounds();\n bounds.extend(pathsMarker.getPosition() as google.maps.LatLng);\n this.map?.fitBounds(bounds); // auto-zoom\n this.map?.panToBounds(bounds); // auto-center\n }\n } catch {\n console.log(pathsMarker);\n }\n }\n }\n }\n\n showEventWithMarker({ Lat, Lng, Type, Date }: EventMarker): void {\n this.markersEventsClear();\n\n const bounds = new google.maps.LatLngBounds();\n const eventIcon = {\n url: MAP_ICONS.eventIcon,\n size: new google.maps.Size(16, 16),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(8, 8),\n };\n\n const markerStart = new window.google.maps.Marker({\n position: { lat: Lat, lng: Lng },\n map: this.map,\n icon: eventIcon,\n zIndex: 100,\n });\n markerStart.set('markerType', 'event');\n\n this.pathInfoWindow = new google.maps.InfoWindow();\n\n markerStart.addListener('click', () => {\n this.pathInfoWindow?.setContent(`
\n

${Date}

\n

${Type}

\n
`);\n this.pathInfoWindow?.setPosition({ lat: Lat, lng: Lng });\n this.pathInfoWindow?.setOptions({\n pixelOffset: new google.maps.Size(0, -10),\n });\n this.pathInfoWindow?.open(this.map);\n });\n\n this.markers = [...this.markers, markerStart];\n\n /* this.pathsMarkers = [...pathsMarkersTmp]; */\n\n /* this.markers = []; */\n\n bounds.extend({\n lat: Lat,\n lng: Lng,\n });\n\n // need to expand bounds because for one location zoom is too close\n if (bounds.getNorthEast().equals(bounds.getSouthWest())) {\n // create fake points\n const extendPoint1 = new google.maps.LatLng(\n bounds.getNorthEast().lat() + 0.001,\n bounds.getNorthEast().lng() + 0.001,\n );\n const extendPoint2 = new google.maps.LatLng(\n bounds.getNorthEast().lat() - 0.001,\n bounds.getNorthEast().lng() - 0.001,\n );\n\n bounds.extend(extendPoint1);\n bounds.extend(extendPoint2);\n }\n\n this.map?.fitBounds(bounds); // auto-zoom\n this.map?.panToBounds(bounds); // auto-center\n }\n\n showPositionByCoordinates({ Lat, Lng }: ApiCoordinates): void {\n const bounds = new google.maps.LatLngBounds();\n\n bounds.extend({\n lat: Lat,\n lng: Lng,\n });\n\n // need to expand bounds because for one location zoom is too close\n if (bounds.getNorthEast().equals(bounds.getSouthWest())) {\n // create fake points\n const extendPoint1 = new google.maps.LatLng(\n bounds.getNorthEast().lat() + 0.001,\n bounds.getNorthEast().lng() + 0.001,\n );\n const extendPoint2 = new google.maps.LatLng(\n bounds.getNorthEast().lat() - 0.001,\n bounds.getNorthEast().lng() - 0.001,\n );\n\n bounds.extend(extendPoint1);\n bounds.extend(extendPoint2);\n }\n this.map?.setOptions({ maxZoom: 18 });\n this.map?.fitBounds(bounds); // auto-zoom\n this.map?.panToBounds(bounds); // auto-center\n }\n\n layersSetTraffic(active: boolean): void {\n if (!this.layerTraffic) {\n this.layerTraffic = new window.google.maps.TrafficLayer();\n }\n\n if (active) {\n this.layerTraffic.setMap(this.map);\n } else {\n this.layerTraffic.setMap(null);\n }\n }\n\n layersToogleTraffic(): void {\n if (!this.layerTraffic) {\n this.layerTraffic = new window.google.maps.TrafficLayer();\n }\n\n if (this.layerTraffic.get('map')) {\n this.layerTraffic.setMap(null);\n } else {\n this.layerTraffic.setMap(this.map);\n }\n }\n\n layersClear(): void {\n this.routeAnimationClear();\n\n for (const layer of this.layers) {\n layer.setMap(null);\n }\n this.layers = [];\n\n this.layersInfoWindow?.close();\n this.layersInfoWindow = null;\n }\n\n layersRender(\n layers: ApiDeviceLayers,\n layersForFilter: Array,\n layersActive: ILayersActive | undefined,\n ): void {\n this.layersClear();\n\n this.layersInfoWindow = new google.maps.InfoWindow();\n\n for (const layerIndex in layersActive) {\n if (layersActive[layerIndex] !== true) {\n continue;\n }\n\n const layerFromFilter = layersForFilter.find(({ id }) => `layer-${id}` === layerIndex);\n if (layerFromFilter?.type === 'Category') {\n const layerPoints = layers?.List?.filter((i) => i.Category?.Id === layerFromFilter.id);\n if (typeof layerPoints !== 'undefined') {\n for (const layer of layerPoints) {\n if (layer?.GeographyType === 'Polygon') {\n const coordinates = [];\n for (const pos of layer?.ShapeCoordinates ?? []) {\n coordinates.push({\n lat: pos.Lat,\n lng: pos.Lng,\n });\n }\n\n const path = new window.google.maps.Polygon({\n paths: coordinates,\n geodesic: true,\n strokeColor: layer?.Color,\n strokeOpacity: 1.0,\n strokeWeight: 2,\n fillColor: layer?.Color,\n map: this.map,\n });\n\n path.set('layerId', layerIndex);\n path.set(\n 'textcontent',\n CONSENT_INFOMODAL.poiContent({\n name: {\n name: '',\n value: layer.Name || '',\n },\n description: {\n name: '',\n value: layer.Description?.replace(/\\r\\n|\\r|\\n/g, '
') || '',\n },\n }),\n );\n\n path.addListener('click', () => {\n const bounds = new google.maps.LatLngBounds();\n this.layersInfoWindow?.setContent(path.get('textcontent'));\n path.getPath().forEach(function (p) {\n bounds.extend(p);\n });\n\n this.layersInfoWindow?.setPosition(bounds.getCenter());\n this.layersInfoWindow?.open(this.map);\n });\n\n this.layers.push(path);\n } else {\n const coordinates = [];\n for (const pos of layer?.ShapeCoordinates ?? []) {\n coordinates.push({\n lat: pos.Lat,\n lng: pos.Lng,\n });\n }\n const marker = new window.google.maps.Marker({\n map: this.map as google.maps.Map,\n title: layer.Name,\n position: coordinates[0],\n icon: layer.ImageName\n ? `https://portalbeta.tracker.com/api/trk/common/image/icon/32/${layer.ImageName}`\n : null,\n });\n\n marker.set('layerId', layerIndex);\n /* marker.set('textcontent', layer.Description?.replace(/\\r\\n|\\r|\\n/g, '
') || layer.Name); */\n marker.set(\n 'textcontent',\n CONSENT_INFOMODAL.poiContent({\n name: {\n name: '',\n value: layer.Name || '',\n },\n description: {\n name: '',\n value: layer.Description?.replace(/\\r\\n|\\r|\\n/g, '
') || '',\n },\n }),\n );\n marker.addListener('click', () => {\n this.layersInfoWindow?.setContent(marker.get('textcontent'));\n this.layersInfoWindow?.setPosition(marker.getPosition() as google.maps.LatLng);\n this.layersInfoWindow?.setOptions({\n pixelOffset: new google.maps.Size(0, -30),\n });\n this.layersInfoWindow?.open(this.map);\n });\n this.layers.push(marker);\n }\n }\n }\n }\n }\n }\n\n layerFind(layerId: string): void {\n this.routeAnimationClear();\n\n const bounds = new google.maps.LatLngBounds();\n for (const layer of this.layers) {\n if (layerId === layer.get('layerId')) {\n if (layer instanceof window.google.maps.Polygon) {\n layer.getPath().forEach(function (path) {\n bounds.extend(path);\n });\n } else if (layer instanceof window.google.maps.Marker) {\n if (layer.getPosition()) {\n bounds.extend(layer.getPosition() as google.maps.LatLng);\n }\n }\n }\n }\n this.map?.fitBounds(bounds); // auto-zoom\n this.map?.panToBounds(bounds); // auto-center\n }\n\n layersShow(withZoom = true): void {\n this.routeAnimationClear();\n\n const bounds = new google.maps.LatLngBounds();\n for (const layer of this.layers) {\n if (layer instanceof window.google.maps.Polygon) {\n layer.getPath().forEach(function (path) {\n bounds.extend(path);\n });\n } else if (layer instanceof window.google.maps.Marker) {\n if (layer.getPosition()) {\n bounds.extend(layer.getPosition() as google.maps.LatLng);\n }\n }\n }\n if (withZoom) {\n this.map?.fitBounds(bounds); // auto-zoom\n this.map?.panToBounds(bounds); // auto-center\n }\n }\n\n fencesClear(): void {\n this.routeAnimationClear();\n\n for (const fence of this.fences) {\n fence.setMap(null);\n }\n this.fences = [];\n }\n\n fencesRender(fences: Array, fencesActive: IFencesActive): void {\n this.fencesClear();\n\n for (const fenceIndex in fencesActive) {\n if (fencesActive[fenceIndex] !== true) {\n continue;\n }\n\n const fence = fences.find(({ Id }) => `fence-${Id}` === fenceIndex);\n const coordinates = [];\n for (const pos of fence?.ShapeCoordinates ?? []) {\n coordinates.push({\n lat: pos.Lat,\n lng: pos.Lng,\n });\n }\n\n const path = new window.google.maps.Polygon({\n paths: coordinates,\n geodesic: true,\n strokeColor: '#f00',\n strokeOpacity: 1.0,\n strokeWeight: 2,\n fillColor: '#f00',\n map: this.map,\n });\n path.set('fenceId', fenceIndex);\n\n path.set(\n 'textcontent',\n CONSENT_INFOMODAL.poiContent({\n name: {\n name: '',\n value: fence?.Name || '',\n },\n description: {\n name: '',\n value: fence?.Description?.replace(/\\r\\n|\\r|\\n/g, '
') || '',\n },\n }),\n );\n\n path.addListener('click', () => {\n const bounds = new google.maps.LatLngBounds();\n this.layersInfoWindow?.setContent(path.get('textcontent'));\n path.getPath().forEach(function (p) {\n bounds.extend(p);\n });\n\n this.layersInfoWindow?.setPosition(bounds.getCenter());\n this.layersInfoWindow?.open(this.map);\n });\n\n this.fences.push(path);\n }\n }\n\n fenceFind(fenceId: string): void {\n this.routeAnimationClear();\n\n const bounds = new google.maps.LatLngBounds();\n for (const fence of this.fences) {\n if (fenceId === fence.get('fenceId')) {\n if (fence instanceof window.google.maps.Polygon) {\n fence.getPath().forEach(function (path) {\n bounds.extend(path);\n });\n }\n }\n }\n this.map?.fitBounds(bounds); // auto-zoom\n this.map?.panToBounds(bounds); // auto-center\n }\n\n fenceShow(): void {\n this.routeAnimationClear();\n\n const bounds = new google.maps.LatLngBounds();\n for (const fence of this.fences) {\n if (fence instanceof window.google.maps.Polygon) {\n fence.getPath().forEach(function (path) {\n bounds.extend(path);\n });\n }\n }\n this.map?.fitBounds(bounds); // auto-zoom\n this.map?.panToBounds(bounds); // auto-center\n }\n\n routeAnimationStart(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n t: any,\n routeAnimationClearFunction: () => void,\n routes: ApiDeviceRoutes,\n routeActive: string | null,\n ): void {\n this.routeAnimationClearFunction = routeAnimationClearFunction;\n if (this.paths.length !== 1) {\n return;\n }\n\n let routeActiveTmp: ApiDeviceRoutesListItem[] = [];\n\n if (routes.List) {\n routeActiveTmp = routes.List.filter((route: ApiDeviceRoutesListItem) => route.OffsetKey === routeActive);\n }\n\n if (this.routeAnimationPaused === false) {\n this.routeAnimationClear();\n\n const bounds = new window.google.maps.LatLngBounds();\n\n this.paths[0].getPath().forEach((item) => {\n this.routesAnimation.push({\n lat: item.lat(),\n lng: item.lng(),\n });\n bounds.extend(new google.maps.LatLng(item.lat(), item.lng()));\n });\n\n this.map?.fitBounds(bounds); // auto-zoom\n this.map?.panToBounds(bounds); // auto-center\n\n this.routeAnimationProgress = 0;\n this.pathAnimatedInfoWindow = new google.maps.InfoWindow();\n this.pathAnimatedInfoWindow?.setOptions({\n pixelOffset: new google.maps.Size(0, 0),\n });\n this.pathAnimatedInfoWindow?.open(this.map);\n this.markerAnimation = new window.google.maps.Marker({\n map: this.map,\n icon: {\n path: google.maps.SymbolPath.CIRCLE,\n scale: 8,\n strokeColor: routeActiveTmp[0].Color,\n },\n });\n }\n\n this.routeAnimationInterval = setInterval(() => {\n if (this.routeAnimationProgress >= routeActiveTmp[0].Pos.length) {\n if (this.routeAnimationClearFunction) {\n this.routeAnimationClearFunction();\n }\n this.routeAnimationClear();\n }\n this.pathAnimatedInfoWindow?.setPosition({\n lat: routeActiveTmp[0].Pos[this.routeAnimationProgress].Lat,\n lng: routeActiveTmp[0].Pos[this.routeAnimationProgress].Lng,\n });\n this.pathAnimatedInfoWindow?.setContent(\n CONSENT_INFOMODAL.pathContent({\n route: {\n name: `${t('pages.maps.devices_map.routeInfo.route')}`,\n key: `${routeActiveTmp[0].OffsetKey}`,\n keyColor: routeActiveTmp[0].Color,\n value: `(~${routeActiveTmp[0].LenghtTrimmedKm}km)`,\n },\n stopPoint: {\n name: '',\n value: '',\n },\n timeS: {\n name: t('pages.maps.devices_map.routeInfo.time'),\n value: format(new Date(routeActiveTmp[0].Pos[this.routeAnimationProgress].EvtDate), 'HH:mm'),\n },\n timeE: {\n name: '',\n value: '',\n },\n height: {\n name: t('pages.maps.devices_map.routeInfo.height'),\n value: routeActiveTmp[0].Pos[this.routeAnimationProgress].Alt\n ? `${routeActiveTmp[0].Pos[this.routeAnimationProgress].Alt}m`\n : '',\n },\n speed: {\n name: t('pages.maps.devices_map.routeInfo.speed'),\n value: routeActiveTmp[0].Pos[this.routeAnimationProgress].Spd\n ? `${Math.floor(routeActiveTmp[0].Pos[this.routeAnimationProgress].Spd * 3.6)}km/h`\n : '', // round down\n },\n temp01: {\n name: 'Temp 1',\n value: routeActiveTmp[0].Pos[this.routeAnimationProgress].Temp01?.toFixed(1),\n },\n temp02: {\n name: 'Temp 2',\n value: routeActiveTmp[0].Pos[this.routeAnimationProgress].Temp02?.toFixed(1),\n },\n temp03: {\n name: 'Temp 3',\n value: routeActiveTmp[0].Pos[this.routeAnimationProgress].Temp03?.toFixed(1),\n },\n temp04: {\n name: 'Temp 4',\n value: routeActiveTmp[0].Pos[this.routeAnimationProgress].Temp04?.toFixed(1),\n },\n address: {\n street: '',\n postCode: '',\n city: '',\n },\n }),\n );\n\n if (this.markerAnimation) {\n this.markerAnimation.setPosition({\n lat: routeActiveTmp[0].Pos[this.routeAnimationProgress].Lat,\n lng: routeActiveTmp[0].Pos[this.routeAnimationProgress].Lng,\n });\n }\n\n this.routeAnimationProgress = this.routeAnimationProgress + 1;\n }, 350);\n }\n\n routeAnimationPause(): void {\n clearInterval(this.routeAnimationInterval);\n this.routeAnimationPaused = true;\n }\n\n routeAnimationClear(): void {\n clearInterval(this.routeAnimationInterval);\n if (this.paths.length === 1) {\n this.paths[0].set('icons', null);\n }\n this.routeAnimationProgress = 0;\n this.routeAnimationPaused = false;\n this.pathAnimatedInfoWindow?.close();\n this.pathAnimatedInfoWindow = null;\n this.markerAnimation?.setIcon({\n path: google.maps.SymbolPath.CIRCLE,\n scale: 0,\n });\n }\n\n routeAnimationStop(): void {\n this.routeAnimationClear();\n this.fitBounds(false);\n this.pathAnimatedInfoWindow?.close();\n this.pathAnimatedInfoWindow = null;\n }\n\n zoomIn(): void {\n this.map?.setZoom((this.map?.getZoom() || 1) + 1);\n }\n\n zoomOut(): void {\n this.map?.setZoom((this.map?.getZoom() || 1) - 1);\n }\n\n changeMapType(type: string, terrain: boolean, labels: boolean): void {\n if (type === 'roadmap') {\n this.map?.setMapTypeId(terrain === true ? google.maps.MapTypeId.TERRAIN : google.maps.MapTypeId.ROADMAP);\n this.map?.setOptions({ styles: mapStyles });\n } else if (type === 'satellite') {\n this.map?.setMapTypeId(labels === true ? google.maps.MapTypeId.HYBRID : google.maps.MapTypeId.SATELLITE);\n this.map?.setOptions({ styles: [] });\n } else if (type === 'map_id') {\n this.map?.setMapTypeId(terrain === true ? google.maps.MapTypeId.TERRAIN : google.maps.MapTypeId.ROADMAP);\n this.map?.setOptions({ styles: mapStyles });\n }\n }\n\n isMapReady(): boolean {\n return this.mapReady;\n }\n\n showPathAsRoute(coordinates: Array): void {\n const bounds = new window.google.maps.LatLngBounds();\n if (this.routePath) {\n this.routePath.setMap(null);\n }\n this.routePath = new window.google.maps.Polyline({\n path: coordinates,\n strokeColor: '#FF00F0',\n strokeOpacity: 1.0,\n strokeWeight: 2,\n });\n this.routePath.setMap(this.map);\n\n coordinates.forEach(function (item) {\n bounds.extend(item);\n });\n this.map?.fitBounds(bounds, { top: 110, right: 80, left: 60 });\n this.map?.panToBounds(bounds);\n }\n}\n\nexport interface LocationLatLng {\n lat: number;\n lng: number;\n}\n\nexport function computeDistance(locationA: LocationLatLng, locationB: google.maps.LatLng | null): number | null {\n if (\n locationA.lat === null ||\n locationA.lng === null ||\n locationA.lat === undefined ||\n locationA.lng === undefined ||\n locationB === null ||\n locationB.lat === null ||\n locationB.lng === null\n ) {\n return null;\n }\n\n const refLocationA = new google.maps.LatLng(locationA.lat, locationA.lng);\n const refLocationB = locationB;\n\n const distance = google.maps.geometry.spherical.computeDistanceBetween(refLocationA, refLocationB);\n\n return distance;\n}\n\nexport const getCoordinatesAsString = (latLng: google.maps.LatLng) => {\n return {\n lat: latLng.lat(),\n lng: latLng.lng(),\n };\n};\n","interface Blob {\r\n readonly size: number;\r\n readonly type: string;\r\n slice(start?: number, end?: number, contentType?: string): Blob;\r\n}\r\n\r\ntype BufferSource = ArrayBufferView | ArrayBuffer;\r\n\r\ntype BlobPart = BufferSource | Blob | string;\r\n\r\ntype EndingType = 'transparent' | 'native';\r\ninterface BlobPropertyBag {\r\n endings?: EndingType;\r\n type?: string;\r\n}\r\n\r\ndeclare const Blob: {\r\n prototype: Blob;\r\n new (blobParts?: BlobPart[], options?: BlobPropertyBag): Blob;\r\n};\r\n\r\nexport default (blob: Blob) => {\r\n const newBlob = new Blob([blob], { type: 'application/vnd.google-earth.kml+xml' });\r\n const reportName =\r\n 'report_' +\r\n new Date()\r\n .toLocaleString()\r\n .replaceAll(/[^\\dA-Za-z]/g, '-')\r\n .replaceAll('--', '_');\r\n\r\n const link = document.createElement('a');\r\n link.setAttribute('type', 'hidden');\r\n link.download = `${reportName}.kml`;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n link.href = URL.createObjectURL(newBlob as any);\r\n\r\n link.click();\r\n\r\n URL.revokeObjectURL(link.href);\r\n};\r\n","import axios from 'axios';\r\n\r\nimport { ApiCoordinates } from './../api/types/device';\r\nimport { ActionContext } from 'vuex';\r\n\r\nimport api from '@/api';\r\nimport { ApiDeviceList, ApiDeviceListItem, ApiDeviceDates, ApiDeviceRoutes } from '@/api/types/device';\r\nimport saveKmlXmlFile from '@/lib/saveKmlXmlFile';\r\nimport { Sorting, SortingDir } from '@/types/sorting';\r\nimport { computeDistance } from '@/pages/maps/devices-map/map/Map';\r\n\r\nexport const deviceGenerateStatus = (\r\n item: ApiDeviceListItem,\r\n deviceInactiveTime: number,\r\n deviceWithoutContactTime: number,\r\n): string => {\r\n if (\r\n item.Active === true &&\r\n typeof item.LastContact !== 'undefined' &&\r\n item.LastContact !== null &&\r\n item.LastContact\r\n ) {\r\n const refreshData = new Date(); // refreshDataTime\r\n const shiftedInactive = new Date(item.LastContact); // refreshDataTime\r\n shiftedInactive.setMinutes(shiftedInactive.getMinutes() + deviceInactiveTime);\r\n const shiftedWithoutContact = new Date(item.LastContact); // refreshDataTime\r\n shiftedWithoutContact.setMinutes(shiftedWithoutContact.getMinutes() + deviceWithoutContactTime);\r\n\r\n /* const lastContactDate = new Date(item.LastContact); */\r\n\r\n if (shiftedWithoutContact.getTime() <= refreshData.getTime()) {\r\n return 'dead';\r\n } else if (shiftedInactive.getTime() < refreshData.getTime()) {\r\n return 'offline';\r\n // Red dot: LastContact-Property >= refreshDataTime + \"device-without-contact\"\r\n } else if (shiftedInactive.getTime() >= refreshData.getTime()) {\r\n return 'online';\r\n // Orange dot: LastContact-Property > refreshDataTime + \"device-inactivity\"\r\n } else {\r\n return 'dead';\r\n }\r\n }\r\n return 'dead';\r\n};\r\n\r\nexport enum FactorZoom {\r\n LastPosLow = 'LastPosLow',\r\n LastPosMedium = 'LastPosMedium',\r\n LastPosHeight = 'LastPosHeight',\r\n}\r\n\r\nexport enum DataTab {\r\n Devices = 'Devices',\r\n Groupes = 'Groupes',\r\n}\r\n\r\nexport interface DeviceType {\r\n Code: string;\r\n CaptionKey: string;\r\n Caption: string;\r\n}\r\nexport interface DeviceGroups {\r\n Code: string;\r\n Id: string;\r\n CaptionKey: string;\r\n Groups: Array;\r\n active: boolean;\r\n}\r\nexport interface DeviceToUpdate {\r\n Name: string;\r\n Description: string;\r\n MapZoom: FactorZoom;\r\n fontColor: string;\r\n fontBackgroundColor: string;\r\n}\r\n\r\nexport interface FilteredSearchLocation {\r\n name: string | null | undefined;\r\n latLng: google.maps.LatLng | null;\r\n}\r\n\r\ninterface DevicesState {\r\n list: ApiDeviceList;\r\n listRequestPending: boolean;\r\n dates: ApiDeviceDates;\r\n datesRequestPending: boolean;\r\n routesDate: Date;\r\n routes: ApiDeviceRoutes;\r\n routesRequestPending: boolean;\r\n listSorting: string;\r\n listSortingDir: string;\r\n listFilterDate: Date;\r\n listFilters: {\r\n [key: string]: null | string | Array | number | Array;\r\n };\r\n locationFilter: FilteredSearchLocation;\r\n listSearchFilter: string;\r\n listSortingOptions: Array;\r\n cardType: DataTab;\r\n}\r\n\r\nconst device = {\r\n namespaced: true,\r\n state: {\r\n list: {},\r\n listRequestPending: false,\r\n listSorting: Sorting.NAME, // name | time | type\r\n listSortingDir: SortingDir.ASC, // asc | desc\r\n listFilterDate: new Date(new Date().setHours(0, 0, 0, 0)),\r\n listFilters: {\r\n status: null, // null | dead | no | yes\r\n types: [],\r\n groups: [],\r\n },\r\n listSortingOptions: [Sorting.NAME /* , Sorting.TIME, Sorting.TYPE */],\r\n dates: {},\r\n datesRequestPending: false,\r\n routesDate: new Date(new Date().setHours(0, 0, 0, 0)),\r\n routes: {},\r\n routesRequestPending: false,\r\n listSearchFilter: '',\r\n locationFilter: {\r\n name: null,\r\n latLng: null,\r\n },\r\n cardType: DataTab.Devices,\r\n },\r\n getters: {\r\n itemsSortedFiltered(state: DevicesState): Array {\r\n if (typeof state.list.List === 'undefined' || !state.list.List || state.list.List.length === 0) {\r\n return [];\r\n }\r\n\r\n let items = JSON.parse(JSON.stringify(state.list.List));\r\n\r\n if (state.listFilters.status !== null) {\r\n items = items.filter((item: ApiDeviceListItem) => {\r\n const itemStatus = item.uiStatus;\r\n return itemStatus === state.listFilters.status;\r\n });\r\n }\r\n if (state.listFilters.groups && (state.listFilters.groups as number[]).length > 0) {\r\n items = items.filter((item: ApiDeviceListItem) => {\r\n // https://stackoverflow.com/questions/16312528/check-if-an-array-contains-any-element-of-another-array-in-javascript\r\n return (state.listFilters.groups as number[]).some((r) => item.Groups?.includes(r));\r\n });\r\n }\r\n if (state.listFilters.types && (state.listFilters.types as string[]).length > 0) {\r\n items = items.filter((item: ApiDeviceListItem) => {\r\n return (state.listFilters.types as string[]).includes(item.HWT?.Code);\r\n });\r\n }\r\n\r\n if (state.locationFilter.latLng) {\r\n items = items\r\n .map((item: ApiDeviceListItem) => ({\r\n ...item,\r\n distanceToLocation: computeDistance(\r\n {\r\n lat: item.LastPos?.Lat,\r\n lng: item.LastPos?.Lng,\r\n },\r\n state.locationFilter.latLng,\r\n ),\r\n overviewPathToLocationFromApi: null,\r\n }))\r\n .filter((item: ApiDeviceListItem) => item.distanceToLocation !== null);\r\n\r\n items.sort((a: ApiDeviceListItem, b: ApiDeviceListItem) => a.distanceToLocation - b.distanceToLocation);\r\n\r\n items = items.slice(0, 5);\r\n\r\n items.filter((item: ApiDeviceListItem) =>\r\n item.Name?.toLocaleLowerCase().includes(state.listSearchFilter?.toLocaleLowerCase()),\r\n );\r\n }\r\n\r\n items.sort((a: ApiDeviceListItem, b: ApiDeviceListItem) => {\r\n const dirModifier = state.listSortingDir === SortingDir.DESC ? -1 : 1;\r\n\r\n if (state.listSorting === Sorting.TIME) {\r\n let aTime = 0;\r\n let bTime = 0;\r\n if (typeof a.LastPos !== 'undefined' && typeof a.LastPos.EvtDate !== 'undefined') {\r\n aTime = new Date(a.LastPos.EvtDate).getTime();\r\n }\r\n if (typeof b.LastPos !== 'undefined' && typeof b.LastPos.EvtDate !== 'undefined') {\r\n bTime = new Date(b.LastPos.EvtDate).getTime();\r\n }\r\n\r\n return (aTime - bTime) * dirModifier;\r\n } else if (state.listSorting === Sorting.TYPE) {\r\n return (a.HWT.Code > b.HWT.Code ? 1 : b.HWT.Code > a.HWT.Code ? -1 : 0) * dirModifier;\r\n } else if (state.listSorting === Sorting.DISTANCE) {\r\n if (a.distanceToLocationFromApi === null) {\r\n return (\r\n (a.distanceToLocation > b.distanceToLocation\r\n ? 1\r\n : b.distanceToLocation > a.distanceToLocation\r\n ? -1\r\n : 0) * dirModifier\r\n );\r\n } else {\r\n return (\r\n (a.distanceToLocationFromApi > b.distanceToLocationFromApi\r\n ? 1\r\n : b.distanceToLocationFromApi > a.distanceToLocationFromApi\r\n ? -1\r\n : 0) * dirModifier\r\n );\r\n }\r\n } else {\r\n return (a.Name > b.Name ? 1 : b.Name > a.Name ? -1 : 0) * dirModifier;\r\n }\r\n });\r\n\r\n return items.filter((item: ApiDeviceListItem) =>\r\n item?.Name?.toLocaleLowerCase().includes(state.listSearchFilter.toLocaleLowerCase()),\r\n );\r\n },\r\n items(state: DevicesState): Array {\r\n if (typeof state.list.List === 'undefined' || !state.list.List || state.list.List.length === 0) {\r\n return [];\r\n }\r\n\r\n const items = JSON.parse(JSON.stringify(state.list.List));\r\n\r\n return items;\r\n },\r\n types(state: DevicesState): Array {\r\n if (typeof state.list.List === 'undefined' || !state.list.List || state.list.List.length === 0) {\r\n return [];\r\n }\r\n\r\n const types: Array = [];\r\n const codes: Array = [];\r\n for (const item of state.list.List) {\r\n if (typeof item.HWT !== 'undefined' && !!item.HWT && typeof item.HWT.Code !== 'undefined') {\r\n if (!codes.includes(item.HWT.Code)) {\r\n codes.push(item.HWT.Code);\r\n types.push({\r\n Code: item.HWT.Code,\r\n CaptionKey: item.HWT.CaptionKey,\r\n Caption: item.HWT.Caption,\r\n });\r\n }\r\n }\r\n }\r\n\r\n return types;\r\n },\r\n listSearchFilter(state: DevicesState): string {\r\n return state.listSearchFilter;\r\n },\r\n cardType(state: DevicesState): string {\r\n return state.cardType;\r\n },\r\n locationFilter(state: DevicesState): FilteredSearchLocation {\r\n return state.locationFilter;\r\n },\r\n readFilteredGroups(state: DevicesState): null | string | Array | number | Array {\r\n return state.listFilters.groups;\r\n },\r\n readNumberOfDevices(state: DevicesState): number {\r\n return state.list.RowCount;\r\n },\r\n },\r\n mutations: {\r\n startListRequest(state: DevicesState): void {\r\n state.listRequestPending = true;\r\n },\r\n endListRequest(state: DevicesState): void {\r\n state.listRequestPending = false;\r\n },\r\n updateList(state: DevicesState, list: ApiDeviceList): void {\r\n state.list = list;\r\n },\r\n updateIconToSvg(state: DevicesState, svgDetails: { svg: string; deviceId: number }): void {\r\n const deviceList = [...state.list.List];\r\n const updatedDevice = deviceList.filter((device) => device.Id === svgDetails.deviceId)[0];\r\n updatedDevice.svgIcon = svgDetails.svg;\r\n const filtredDeviceList = [...state.list.List].filter((device) => device.Id !== svgDetails.deviceId);\r\n state.list.List = [...filtredDeviceList, updatedDevice];\r\n },\r\n clearList(state: DevicesState): void {\r\n state.list = {\r\n RowCount: 0,\r\n };\r\n },\r\n startDatesRequest(state: DevicesState): void {\r\n state.datesRequestPending = true;\r\n },\r\n endDatesRequest(state: DevicesState): void {\r\n state.datesRequestPending = false;\r\n },\r\n updateDates(state: DevicesState, dates: ApiDeviceDates): void {\r\n state.dates = dates;\r\n },\r\n clearDates(state: DevicesState): void {\r\n state.dates = {};\r\n },\r\n updateRoutesDate(state: DevicesState, routesDate: Date): void {\r\n state.routesDate = routesDate;\r\n },\r\n startRoutesRequest(state: DevicesState): void {\r\n state.routesRequestPending = true;\r\n },\r\n endRoutesRequest(state: DevicesState): void {\r\n state.routesRequestPending = false;\r\n },\r\n updateRoutes(state: DevicesState, routes: ApiDeviceRoutes): void {\r\n state.routes = routes;\r\n },\r\n updateCalculatedDistancesToPoint(\r\n state: DevicesState,\r\n computeDistance: {\r\n deviceId: number;\r\n distance: number;\r\n overview_path: Array;\r\n },\r\n ): void {\r\n if (typeof state.list.List === 'undefined' || !state.list.List || state.list.List.length === 0) {\r\n return;\r\n } else {\r\n const items = JSON.parse(JSON.stringify(state.list.List));\r\n const indexToUpdate = items.findIndex((item) => item.Id === computeDistance.deviceId);\r\n items[indexToUpdate].distanceToLocationFromApi = computeDistance.distance;\r\n items[indexToUpdate].overviewPathToLocationFromApi = computeDistance.overview_path;\r\n state.list.List = items;\r\n }\r\n },\r\n clearRoutes(state: DevicesState): void {\r\n state.routes = {};\r\n },\r\n clearFilters(state: DevicesState): void {\r\n state.listRequestPending = false;\r\n state.listSorting = Sorting.NAME; // name | time | type\r\n state.listSortingDir = SortingDir.ASC; // asc | desc\r\n state.listFilterDate = new Date(new Date().setHours(0, 0, 0, 0));\r\n state.listFilters = {\r\n status: null, // null | dead | no | yes\r\n types: [],\r\n groups: [],\r\n };\r\n state.listSortingOptions = [Sorting.NAME];\r\n state.listSearchFilter = '';\r\n state.locationFilter = {\r\n name: null,\r\n latLng: null,\r\n };\r\n },\r\n updateListSorting(state: DevicesState, sort: string): void {\r\n state.listSorting = sort;\r\n },\r\n updateListSortingDir(state: DevicesState, dir: string): void {\r\n state.listSortingDir = dir;\r\n },\r\n updateListFilterDate(state: DevicesState, date: Date): void {\r\n state.listFilterDate = date;\r\n },\r\n updateListFilters(\r\n state: DevicesState,\r\n { field, value }: { field: string; value: string | number | string[] | number[] },\r\n ): void {\r\n state.listFilters[field] = value;\r\n },\r\n updateLocationFilter(state: DevicesState, location: FilteredSearchLocation): void {\r\n if (location.name === null) {\r\n state.listSorting = Sorting.NAME;\r\n state.listSortingOptions = [Sorting.NAME];\r\n } else {\r\n state.listSortingOptions = [Sorting.NAME, Sorting.DISTANCE];\r\n }\r\n state.locationFilter = location;\r\n },\r\n updateListSearchFilter(state: DevicesState, searchPhrase: string): void {\r\n state.listSearchFilter = searchPhrase;\r\n },\r\n changeTabType(state: DevicesState, type: DataTab): void {\r\n state.cardType = type;\r\n },\r\n },\r\n actions: {\r\n clearList(context: ActionContext): void {\r\n context.commit('clearList');\r\n },\r\n clearFilters(context: ActionContext): void {\r\n context.commit('clearFilters');\r\n },\r\n async list(context: ActionContext, onComplated?: () => void): Promise {\r\n context.commit('startListRequest');\r\n try {\r\n const token = window.localStorage.getItem('authcredentials');\r\n const response = await api.device.list(token || '');\r\n const deviceInactive =\r\n context.rootGetters['auth/userSettingString'](\r\n 'usersetting.customer.devicemap.detailpage.map.deviceinactivetime',\r\n ) || 120;\r\n const deviceWithoutContact =\r\n context.rootGetters['auth/userSettingString'](\r\n 'usersetting.customer.devicemap.detailpage.map.devicewithoutcontacttime',\r\n ) || 180;\r\n const deviceData =\r\n (response.data?.List &&\r\n response.data?.List.map((item) => ({\r\n ...item,\r\n Groups: item.Groups && item.Groups.length === 0 ? [-1] : item.Groups ? item.Groups : [-1], // create special group for devices without groups\r\n temperatures: {\r\n Temp01: item?.SensorTemp01 || null,\r\n Temp02: item?.SensorTemp02 || null,\r\n Temp03: item?.SensorTemp03 || null,\r\n Temp04: item?.SensorTemp04 || null,\r\n },\r\n uiStatus: deviceGenerateStatus(\r\n item,\r\n parseInt(deviceInactive),\r\n parseInt(deviceWithoutContact),\r\n ),\r\n svgIcon: '',\r\n }))) ||\r\n [];\r\n\r\n deviceData.map((device) => {\r\n if (device.IconName && device.IconColor) {\r\n const iconName = device.IconName.includes('png') ? device.IconName.replace(/png/g, 'svg') : device.IconName;\r\n axios(`https://portalbeta.tracker.com/api/trk/common/image/icon/svg/${iconName}`).then(\r\n (r) =>\r\n context.commit('updateIconToSvg', {\r\n svg: r.data,\r\n deviceId: device.Id,\r\n }),\r\n );\r\n }\r\n });\r\n context.commit('updateList', {\r\n ...response.data,\r\n List: [...deviceData],\r\n });\r\n } catch (err) {\r\n // console.log(err);\r\n } finally {\r\n onComplated && onComplated();\r\n context.commit('endListRequest');\r\n }\r\n },\r\n clearDates(context: ActionContext): void {\r\n context.commit('clearDates');\r\n },\r\n async dates(context: ActionContext, deviceId: number): Promise {\r\n context.commit('startDatesRequest');\r\n try {\r\n const token = window.localStorage.getItem('authcredentials');\r\n const response = await api.device.dates(token || '', deviceId);\r\n context.commit('updateDates', response.data);\r\n\r\n if (response.data && response.data.Values && response.data.Values.length > 0) {\r\n let index = response.data.Values.findIndex((item) => {\r\n const date = new Date(item);\r\n if (context.state.listFilterDate.getTime() - date.getTime() < 1000 * 60 * 60) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (index === -1) {\r\n index = response.data.Values.length - 1;\r\n }\r\n context.commit('updateRoutesDate', new Date(response.data.Values[index]));\r\n } else {\r\n context.commit('updateRoutesDate', new Date(new Date().setHours(0, 0, 0, 0)));\r\n }\r\n } catch (err) {\r\n // console.log(err);\r\n } finally {\r\n context.commit('endDatesRequest');\r\n }\r\n },\r\n async updateDatesWithRoutes(\r\n context: ActionContext,\r\n { deviceId, date }: { deviceId: number; date: Date },\r\n ): Promise {\r\n context.commit('updateRoutesDate', date);\r\n await context.dispatch('routes', deviceId);\r\n },\r\n clearRoutes(context: ActionContext): void {\r\n context.commit('clearRoutes');\r\n },\r\n async routes(context: ActionContext, deviceId: number): Promise {\r\n context.commit('startRoutesRequest');\r\n try {\r\n const token = window.localStorage.getItem('authcredentials');\r\n const response = await api.device.routes(token || '', deviceId, context.state.routesDate);\r\n\r\n context.commit('updateRoutes', response.data);\r\n } catch (err) {\r\n // console.log(err);\r\n } finally {\r\n context.commit('endRoutesRequest');\r\n }\r\n },\r\n async updateListFilterDate(context: ActionContext, fromDate: Date): Promise {\r\n context.commit('updateListFilterDate', fromDate);\r\n await context.dispatch('list'); // TODO: list needs to use the date\r\n },\r\n async exportAllDevices(context: ActionContext, { date }: { date: string }): Promise {\r\n try {\r\n const token = window.localStorage.getItem('authcredentials');\r\n await api.device\r\n .exportAll(token || '', date)\r\n .then((res) => res.data)\r\n .then(saveKmlXmlFile);\r\n } catch (err) {\r\n // console.log(err);\r\n }\r\n },\r\n async exportSingleDevice(\r\n context: ActionContext,\r\n { date, deviceId }: { date: string; deviceId: number },\r\n ): Promise {\r\n try {\r\n const token = window.localStorage.getItem('authcredentials');\r\n await api.device\r\n .exportSingle(token || '', date, deviceId)\r\n .then((res) => res.data)\r\n .then(saveKmlXmlFile);\r\n } catch (err) {\r\n // console.log(err);\r\n }\r\n },\r\n async updateDeviceById(\r\n context: ActionContext,\r\n { data, deviceId }: { data: DeviceToUpdate; deviceId: number },\r\n ): Promise {\r\n try {\r\n const token = window.localStorage.getItem('authcredentials');\r\n await api.device.updateSingle(token || '', data, deviceId);\r\n } catch (err) {\r\n // console.log(err);\r\n }\r\n },\r\n async updateDistanceToLocation(\r\n context: ActionContext,\r\n {\r\n id,\r\n latLngDevice,\r\n latLngPoint,\r\n }: { id: number; latLngDevice: ApiCoordinates; latLngPoint: google.maps.LatLng },\r\n ): Promise {\r\n try {\r\n const directionsService = new google.maps.DirectionsService();\r\n directionsService.route(\r\n {\r\n origin: { lat: latLngDevice.Lat, lng: latLngDevice.Lng },\r\n destination: { lat: latLngPoint.lat(), lng: latLngPoint.lng() },\r\n travelMode: google.maps.TravelMode['DRIVING'],\r\n },\r\n (response, status) => {\r\n if (status === 'OK') {\r\n /* console.log({\r\n distance: response.routes[0].legs[0].distance.value,\r\n overview_path: response.routes[0].overview_path,\r\n deviceId: id,\r\n }); */\r\n context.commit('updateCalculatedDistancesToPoint', {\r\n distance: response.routes[0].legs[0].distance.value,\r\n overview_path: response.routes[0].overview_path,\r\n deviceId: id,\r\n });\r\n }\r\n },\r\n );\r\n } catch (err) {\r\n // console.log(err);\r\n }\r\n },\r\n },\r\n};\r\n\r\nexport default device;\r\n","export enum SortingDir {\n ASC = 'asc',\n DESC = 'desc',\n}\n\nexport enum Sorting {\n NAME = 'name',\n CODE = 'code',\n TIME = 'time',\n TYPE = 'type',\n DISTANCE = 'distance',\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + \"0eaa8a81\" + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + \"dc4b5c4d\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"tracker-frontend:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"276\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunktracker_frontend\"] = self[\"webpackChunktracker_frontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(2154); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["login","token","config","headers","Authorization","axios","apiUrl","redeem","account","updateAccount","userData","list","loadCurrentGeofences","dates","deviceId","routes","fromDate","from","toISOString","layers","fences","exportSingle","responseType","exportAll","updateSingle","data","id","date","getGtc","getDtp","confirmTermsAndConditions","deviceReports","deviceCollectionReports","getTable","filters","auth","device","groups","events","terms","report","configureInterceptor","callbackLogout","addActiveRequest","removeActiveRequest","url","error","Promise","reject","response","status","mapSettings","name","modal","eventsTypes","filterSelect","reportExportModal","layout","maps","reports","components","pages","i18n","createI18n","legacy","globalInjection","locale","fallbackLocale","messages","de","fr","it","en","_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_1","key","class","_hoisted_2","_hoisted_3","_createTextVNode","_hoisted_4","_hoisted_5","_hoisted_6","_createElementVNode","_hoisted_7","_hoisted_8","src","_imports_0","_hoisted_9","_hoisted_10","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_view","_resolveComponent","_openBlock","_createElementBlock","_Fragment","_createBlock","$route","path","_createVNode","_Transition","default","_withCtx","showBanner","isNotificationMessage","href","$t","target","_toDisplayString","onClick","args","okBannerClicked","_createCommentVNode","isAllowedSubscriptions","closeNotificationMessage","_","isOs","allowCookies","ref","useCookies","gtag","cookie","useCookie","isCookieAvailable","value","getCookie","optIn","undefined","watch","setCookie","toString","expire","Date","setFullYear","getFullYear","optOut","computed","okClicked","defineComponent","setup","store","useStore","inject","getters","commit","parser","UAParser","getOS","toLowerCase","includes","__exports__","disabled","type","_renderSlot","$slots","props","String","Boolean","_normalizeClass","isOpen","$event","currentText","clear","alt","_renderList","options","option","_withDirectives","prefix","_vModelRadio","for","text","modelValue","Array","empty","emits","emit","optionIndex","findIndex","o","close","refDropdownList","onClickOutside","_vModelCheckbox","length","_component_Vue3Datepicker","lowerLimit","upperLimit","datepickerLanguage","disabledDatesArr","$emit","getDatePickerLanguage","lang","enGB","Vue3Datepicker","disabledDatapicker","disabledDates","useI18n","useScope","registerGlobalComponents","app","component","FilterSelect","FilterSelectMulti","Datepicker","MyButton","namespaced","state","isAdmin","accountRequestPending","userSettingBoolean","settingKey","UserSettings","userSettingsFromServer","valueFromServer","userSettingString","userSettings","userId","Id","mutations","startAccountRequest","endAccountRequest","updateAdminRole","updateAccountSettings","settings","Key","Value","clearAccount","actions","context","credentials","async","resolve","btoa","username","password","authToken","api","window","localStorage","setItem","Token","Error","logout","removeItem","dispatch","root","router","verifyUser","getItem","Rolenames","some","e","LanguageCode","err","updateUserSetting","userSetting","tokenFCM","JSON","stringify","parse","timestamp","getTime","environment","process","allowSubscriptions","locales","code","localesCodes","map","localesDefault","getLocalesUserDefault","storedLocale","userLanguage","navigator","language","split","ui","isMobileMenuOpen","isTermsAndConditionsModalOpen","toolbarState","isSearchLocationVisible","isMapLayersVisible","isDeviceLayersVisible","isDeviceGeofenciesVisible","mobileMenuState","deviceList","geofencies","mapType","searchSettings","isSearchInputVisiable","profileSettings","isUserModalVisiable","languageCode","UserLanguageCode","isDeviceListSubmenuOpen","isLayersSubmenuOpen","isGeofenciesSubmenuOpen","isMapTypeSubmenuOpen","isSearchSettingsSubmenuOpen","isProfileSettingsSubmenuOpen","isSearchInputVisible","isUserModalVisible","isToolbarSearchLocationVisible","isToolbarMapLayersVisible","isToolbarDeviceLayersVisible","isToolbarDeviceGeofenciesVisible","updateLanguage","openMobileMenu","closeMobileMenu","triggerMobileMenu","openTermsAndConditionsModal","closeTermsAndConditionsModal","openNotificationMessage","triggerDeviceListSubmenu","triggerLayersSubmenu","triggerGeofenciesSubmenu","triggerMapTypeSubmenu","triggerSearchSettingsSubmenu","triggerProfileSettingsSubmenu","triggerSearchInputVisibility","openUserModalVisibility","closeUserModalVisibility","triggerToolbarSearchLocationVisibility","showToolbarSearchLocationVisibility","closeToolbarSearchLocationVisibility","triggerToolbarMapLayersVisibility","showToolbarMapLayersVisibility","closeToolbarMapLayersVisibility","triggerToolbarDeviceLayersVisibility","showToolbarDeviceLayersVisibility","closeToolbarDeviceLayersVisibility","triggerToolbarDeviceGeofenciesVisibility","showToolbarDeviceGeofenciesVisibility","closeToolbarDeviceGeofenciesVisibility","clearUiSettings","changeLanguage","clearLanguage","listRequestPending","listSorting","Sorting","listSortingDir","SortingDir","listSortingOptions","listSearchFilter","items","List","sort","a","b","dirModifier","Object","prototype","hasOwnProperty","call","Code","Name","filter","item","toLocaleLowerCase","groupe","Color","startListRequest","endListRequest","updateList","updateSortingOptions","clearList","clearFilters","updateListSorting","updateListSortingDir","dir","updateListSearchFilter","searchPhrase","translate","forEach","elem","isCode","layersForFilter","polygons","l","GeographyType","categories","Category","categoryIndex","c","push","categoriesForFilter","deviceFences","rootState","deviceActive","fencesIn","fencesOut","find","d","GeofIn","f","GeofOut","removeSecondsFromTimeString","timeString","hours","minutes","ReportDetailsList","columns","activeReport","dateFrom","format","dateTo","deviceIds","cardType","DataTab","tableSettings","dataStoredForUser","reportDetailsList","updateDataList","updateReportsList","updateDeviceIds","devices","updateDateFrom","updateDateTo","updateActiveReport","storeTableSettings","updateUserId","changeTabType","clearReportsList","clearActiveReport","clearStoreTableSettings","clearDeviceIds","clearState","ReportDetails","r","ReportResultType","Caption","ReportCode","until","reportList","TableData","index","ID","Route_Date","Route_Duration","Route_Start_Time","Route_End_Time","Fields","dataPersisted","createPersistedState","paths","createStore","plugins","modules","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_NavLink","_component_router_link","onSubmit","handleSubmit","placeholder","_vModelText","to","custom","navigate","isActive","active","Home","Vue","preventDefault","this","$store","$router","replace","Options","route","useRoute","onMounted","urlQuery","query","tokenKey","email","emailRegExp","isValidEmail","match","console","log","xmlns","width","height","viewBox","points","fill","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_component_vLottiePlayer","_component_user_settings_modal","_component_terms_and_conditions_modal","isPending","loop","animationData","require","companyUrl","rel","companyPicture","mobileNavOpen","_withModifiers","openUserModalSettings","userPicture","userName","logoutEvent","serverLocale","toUpperCase","_imports_1","duration","modalLogoutOpen","userEmail","defaultSettings","onClose","gtcAccepted","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_component_my_button","_component_user_property","mobile","isMobile","userPictureUrl","saveChanges","switch","setting","checked","hidden","deviceGroupingNumber","refreshInterval","deviceInactiveTime","deviceWithoutContactTime","mapSettingsOpen","mapSettingsList","currentDefaultMapSettings","changeDefaultMapSettings","languageSettingsOpen","localesList","currentLanguage","toolbar","icon","version","fieldId","_mergeProps","$attrs","onInput","check","required","Number","isChecked","UserProperty","buttonText","userSettingsInitial","reactive","firstName","lastName","contact","validationRules","minValue","maxValue","v$","useVuelidate","onUnmounted","$validate","$error","$errors","handleUnsubscribeAllDevices","isAccepted","gtcData","Title","IsHtml","innerHTML","Text","gtcError","handleGtcCheck","dtpData","dtpError","dtpAccepted","handleDtpCheck","t","refGtcCheckbox","refDtpCheckbox","isTrue","val","scrollToCheckbox","scrollIntoView","behavior","block","responseGtc","responseDtp","generateGravatar","initialAvatarBackground","initialColor","initialSize","processedName","defaultImageUrl","encodeURIComponent","processedEmail","trim","hash","MD5","gravatarUrl","defaultProfileLogo","firebaseConfig","apiKey","authDomain","projectId","storageBucket","messagingSenderId","appId","cloudMessagingPermission","saveTokenCallback","permissionGranted","Notification","requestPermission","then","permission","initializeApp","messaging","getMessaging","getToken","vapidKey","currentToken","catch","UserSettingsModal","TermsAndConditionsModal","vLottiePlayer","VueLottiePlayer","activePendingRequests","useWindowSize","showTraffic","deviceGroupping","parseInt","hideManualRefreshSettings","hideAutoRefreshSettings","hideSearchSettings","hideMapStyleSettings","hideSelectLayersSettings","hideSelectGeofencesSettings","iconMapType","iconMapManualRefresh","iconMapAutoRefresh","iconMapSearch","iconMapLayers","iconMapGeofences","DisplayName","UserName","RequireGTCAccept","link","Customer","BadgeImageUrl","indexOf","substring","storedImage","BadgeImageName","defaultCompanyLogo","watchEffect","Email","generatedLogo","userNameTmp","counter","requestsPollingChecker","useInterval","controls","updateFirebaseToken","isGranded","startTime","foundPendingRequest","el","setTimeout","activePendingRequestsFiltered","request","useRouter","requireAuth","next","result","redirect","fullPath","requireNotAuth","Login","beforeEnter","Redeem","ForgotPassword","Layout","children","Overview","NotFound","createRouter","history","createWebHistory","createApp","App","use","VueCookieNext","VueGtag","params","anonymize_ip","enabled","Toaster","position","maxToasts","provide","globalProperties","$toast","KonamiCode","callback","location","$gtag","mount","document","documentElement","style","setProperty","innerHeight","addEventListener","elementType","stylers","color","visibility","featureType","textColor","textSize","textDecoration","textLineHeight","fontWeight","fontStyle","fontFamily","backgroundPosition","deviceBgColorSelector","staticBgcolor","deviceStatusArr","bgColor","deviceStatus","Priority","colorsPalette","ZOOM_LEVEL_WHEN_TO_HIDE_ROUTE_DATA_POINTS","ZOOM_LEVEL_WHEN_TO_HIDE_ROUTE_STOP_POINTS","MAP_ICONS","markerDefault","markerDefaultActive","activeColor","startIcon","eventIcon","endIcon","dataStampIcon","pathIcon","stopIcon","CONSENT_INFOMODAL","pathContent","keyColor","timeS","speed","temp01","temp02","temp03","temp04","stopContent","stopPoint","timeE","address","street","postCode","city","startEndContent","deviceContent","altitude","lastPosition","lastContact","showDetails","details","captionLabel","caption","codeLabel","poiContent","description","Map","initialize","mapElement","searchBoxElement","filterBoxElement","showPlaces","onMapReady","searchActivate","clearNearDevicesSearch","filterSearchBoxElement","filterSearchGetValue","loadScript","mapId","reloadOnlyMapType","scriptId","mapAttached","getElementById","defaultZoom","getZoom","defaultCenter","getCenter","lat","lng","withZoom","google","init","layersShow","mapApiInitialized","script","createElement","body","appendChild","center","zoom","maxZoom","disableDefaultUI","styles","mapStyles","streetViewControl","streetViewControlOptions","ControlPosition","TOP_LEFT","zoomControl","zoomControlOptions","scaleControl","initSearchBox","initFilterSearchBox","changeStoppointsVisibilityBasedZoom","mapReady","fitBounds","onlyPaths","bounds","LatLngBounds","anyBound","markersSearch","i","extend","getPosition","markersNearbySearch","markers","getPath","LatLng","setOptions","addListener","top","right","left","panToBounds","searchBox","places","SearchBox","searchPlacesChanged","bind","setBounds","getBounds","filterSearch","searchNearbyPlaces","getPlaces","searchClear","place","geometry","size","Size","origin","Point","anchor","scaledSize","marker","Marker","title","getNorthEast","equals","getSouthWest","extendPoint1","extendPoint2","markersNearbyPlacesClear","formatted_address","latLng","routeAnimationClear","setMap","routePath","markersClear","markerCluster","clearMarkers","markersEventsClear","pathsMarker","get","splice","_markerIcon","IconName","svgIcon","labelOrigin","IconColor","ImageName","HWT","Image","fillColor","fillOpacity","strokeWeight","scale","itemStatus","uiStatus","markersRender","handleScrollToDevice","withClustering","withClusterSize","nearLocationPlace","clearNearByLocationPlace","isToday","hasActive","LastPos","colorBackground","ImageTextBGC","DeviceStatus","markerCurrentPosition","Lat","Lng","AdrInfo","Street","PC","City","evtDate","EvtDate","Alt","markerLastRoutePosition","RouteEnd","markerToSetPosition","label","ImageTextFGC","className","set","isDeviceInfoWindowOpened","pathInfoWindow","getContent","search","InfoWindow","setContent","LastContact","setPosition","pixelOffset","open","MarkerClusterer","imagePath","markerClusterStyles","minimumClusterSize","polylineCalculateClosestPoint","polyline","latlng","needle","minDistance","routePoint","dist","spherical","computeDistanceBetween","pathInfoDiagram","updateRouteDetails","h","pos","Pos","routeDistance","LenghtTrimmedKm","offsetKey","OffsetKey","Spd","Math","floor","stopOnPathInfoDiagram","routeKey","routeColor","point","stop","Temp01","toFixed","Temp02","Temp03","Temp04","stopInfoDiagram","StopOffsetKey","StopStartDate","StopEndDate","startEndInfoDiagram","pathsClear","pathsMarkers","setVisible","pathsRender","routeActive","show","showRouteDetails","showMarkerWithFittingBounds","skipFitBounds","coordinates","coordinate","markerStart","RouteStart","StopCount","StopPos","fontSize","markerEnd","Polyline","geodesic","strokeColor","strokeOpacity","pathStopFocus","showEventWithMarker","Type","zIndex","showPositionByCoordinates","layersSetTraffic","layerTraffic","TrafficLayer","layersToogleTraffic","layersClear","layer","layersInfoWindow","layersRender","layersActive","layerIndex","layerFromFilter","layerPoints","ShapeCoordinates","Polygon","Description","p","layerFind","layerId","fencesClear","fence","fencesRender","fencesActive","fenceIndex","fenceFind","fenceId","fenceShow","routeAnimationStart","routeAnimationClearFunction","routeActiveTmp","routeAnimationPaused","routesAnimation","routeAnimationProgress","pathAnimatedInfoWindow","markerAnimation","SymbolPath","CIRCLE","routeAnimationInterval","setInterval","routeAnimationPause","clearInterval","setIcon","routeAnimationStop","zoomIn","setZoom","zoomOut","changeMapType","terrain","labels","setMapTypeId","MapTypeId","TERRAIN","ROADMAP","HYBRID","SATELLITE","isMapReady","showPathAsRoute","computeDistance","locationA","locationB","refLocationA","refLocationB","distance","blob","newBlob","Blob","reportName","toLocaleString","replaceAll","setAttribute","download","URL","createObjectURL","click","revokeObjectURL","deviceGenerateStatus","Active","refreshData","shiftedInactive","setMinutes","getMinutes","shiftedWithoutContact","FactorZoom","listFilterDate","setHours","listFilters","types","datesRequestPending","routesDate","routesRequestPending","locationFilter","Devices","itemsSortedFiltered","Groups","distanceToLocation","overviewPathToLocationFromApi","slice","aTime","bTime","distanceToLocationFromApi","codes","CaptionKey","readFilteredGroups","readNumberOfDevices","RowCount","updateIconToSvg","svgDetails","updatedDevice","svg","filtredDeviceList","startDatesRequest","endDatesRequest","updateDates","clearDates","updateRoutesDate","startRoutesRequest","endRoutesRequest","updateRoutes","updateCalculatedDistancesToPoint","indexToUpdate","overview_path","clearRoutes","updateListFilterDate","updateListFilters","field","updateLocationFilter","onComplated","deviceInactive","rootGetters","deviceWithoutContact","deviceData","temperatures","SensorTemp01","SensorTemp02","SensorTemp03","SensorTemp04","iconName","Values","res","saveKmlXmlFile","latLngDevice","latLngPoint","directionsService","DirectionsService","destination","travelMode","TravelMode","legs","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","m","amdO","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","keys","every","getter","__esModule","definition","defineProperty","enumerable","chunkId","all","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","inProgress","dataWebpackPrefix","done","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","timeout","nc","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","head","Symbol","toStringTag","createStylesheet","fullhref","linkTag","onLinkComplete","errorType","realHref","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","promise","loadingEnded","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}