{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/icons/map-position-dot.svg","webpack:///./src/views/Map.vue?2ed9","webpack:///./src/assets/icons/heat-detector.svg","webpack:///./src/store/modules/axiosSecureModule.ts","webpack:///./src/store/modules/alarm.module.ts","webpack:///./src/store/modules/mob.module.ts","webpack:///./src/store/modules/enroll.module.ts","webpack:///./src/models/ProfileViewModel.ts","webpack:///./src/store/modules/profile.module.ts","webpack:///./src/store/modules/sensor.module.ts","webpack:///./src/store/modules/app.module.ts","webpack:///./src/store/index.ts","webpack:///./src/assets/wicons/03n@2x.svg","webpack:///./src/assets/icons/reset_blue.svg","webpack:///./src/assets/icons/position-tracking.svg","webpack:///./src/assets/icons/zigbee.svg","webpack:///./src/assets/icons/no-signal.svg","webpack:///./src/assets/icons/battery-groupe-no-number-center.svg","webpack:///./src/assets/icons/mute.svg","webpack:///./src/assets/icons/timer-stop-outline.svg","webpack:///./src/assets/icons/bilge.svg","webpack:///./src/assets/icons/view-sequential-blk.svg","webpack:///./src/assets/icons/map-marker-start.svg","webpack:///./src/assets/icons/sirene-roed.svg","webpack:///./src/assets/icons/info-circle-blk.svg","webpack:///./src/views/EventLog.vue?d1fe","webpack:///./src/assets/icons/checkmark.svg","webpack:///./src/assets/img/android-prompt.png","webpack:///./src/assets/icons/view-sequential.svg","webpack:///./src/assets/icons/door-closed-icon-shadow.svg","webpack:///./src/assets/icons/battery-groupe-no-number.svg","webpack:///./src/assets/icons/smoke.svg","webpack:///./src/assets/icons/fits-into-all.svg","webpack:///./src/assets/icons/timer.svg","webpack:///./src/components/FooterNavigation.vue?8e2d","webpack:///./src/assets/icons/timer-sync-outline.svg","webpack:///./src/assets/icons/batterry-full.svg","webpack:///./src/assets/icons/sirene.svg","webpack:///./src/assets/icons/view-carousel-outline.svg","webpack:///./src/assets/icons/dots-vertical-blk.svg","webpack:///./src/assets/icons/signal.svg","webpack:///./src/assets/icons/app.svg","webpack:///./src/assets/wicons/04n@2x.svg","webpack:///./src/assets/icons/turn-on-off.svg","webpack:///./src/assets/icons/weather.svg","webpack:///./src/assets/icons/door-closed-icon.svg","webpack:///./src/views/EditContact.vue?23c7","webpack:///./src/store/useContact.ts","webpack:///./src/assets/icons/door-opened.svg","webpack:///./src/assets/wicons/50n@2x.svg","webpack:///./src/views/Account.vue?0ad0","webpack:///./src/assets/icons/door-opened-icon-shadow.svg","webpack:///./src/assets/wicons sync ^\\.\\/.*@2x\\.svg$","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/assets/wicons/11d@2x.svg","webpack:///./src/assets/icons/restart.svg","webpack:///./src/assets/icons/dots-vertical.svg","webpack:///./src/assets/icons/mobFlag.svg","webpack:///./src/assets/icons/update.svg","webpack:///./src/assets/icons/batterry-alarm.svg","webpack:///./src/assets/icons/unresponsive.svg","webpack:///./src/assets/wicons/10d@2x.svg","webpack:///./src/assets/wicons/01n@2x.svg","webpack:///./src/assets/icons/view-carousel-outline-blk.svg","webpack:///./src/assets/icons/boat-icon.svg","webpack:///./src/assets/icons/batteri-ladeniveau-forside.svg","webpack:///./src/assets/icons/max-speed.svg","webpack:///./src/assets/icons/immobilizer.svg","webpack:///./src/assets/icons/keypad.svg","webpack:///./src/assets/wicons/09n@2x.svg","webpack:///./src/assets/icons/info-circle.svg","webpack:///./src/assets/icons/battery-alarm.svg","webpack:///./src/assets/icons/door-opened-icon.svg","webpack:///./src/assets/icons sync ^\\.\\/.*\\.svg$","webpack:///./src/assets/icons/set-up.svg","webpack:///./src/assets/icons/speedometer.svg","webpack:///./src/assets/icons/compass.svg","webpack:///./src/assets/icons/arrow-u-left-top.svg","webpack:///./src/assets/img/ios-prompt.png","webpack:///./src/assets/wicons/02n@2x.svg","webpack:///./src/assets/icons/digital_io.svg","webpack:///./src/assets/icons/door-closed.svg","webpack:///./src/assets/icons/gas.svg","webpack:///./src/assets/icons/u-lyn-batteri-ladeniveau-forside.svg","webpack:///./src/assets/icons/log-in.svg","webpack:///./src/assets/icons/log.svg","webpack:///./src/views/LogbookRecord.vue?ce12","webpack:///./src/assets/icons/dots-vertical-circle-outline-blk.svg","webpack:///./src/assets/icons/reliable-b-m-s.svg","webpack:///./src/assets/icons/log_blue.svg","webpack:///./src/assets/icons/battery-full.svg","webpack:///./src/assets/icons/co-carbon-m.svg","webpack:///./src/assets/icons/paired.svg","webpack:///./src/assets/icons/share-variant-outline-blk.svg","webpack:///./src/assets/icons/water-bilige-sensor.svg","webpack:///./src/assets/icons/battery-groupe.svg","webpack:///./src/assets/icons/smart-plug.svg","webpack:///./src/assets/icons/checkmark1.svg","webpack:///./src/assets/icons/lock.svg","webpack:///./src/plugins/Logging.ts","webpack:///./src/assets/icons/loading-power.svg","webpack:///./src/views/UserImageGallery.vue?4018","webpack:///./src/assets/icons/mobY.svg","webpack:///./src/assets/icons/switched-on.svg","webpack:///./src/assets/icons/app-engine-kill.svg","webpack:///./src/models/AlarmStatus.ts","webpack:///./src/plugins/messageHub.ts","webpack:///./src/assets/wicons/02d@2x.svg","webpack:///./src/views/AddContact.vue?e583","webpack:///./src/assets/icons/batteri-ladeniveau-forside_hvid_1.svg","webpack:///./src/assets/icons/gateway.svg","webpack:///./src/assets/icons/sirene-red.svg","webpack:///./src/store/useUserSettings.ts","webpack:///./src/assets/icons/shore-power.svg","webpack:///./src/App.vue?b127","webpack:///./src/views/Logo.vue?dcec","webpack:///./src/utilities/useIOSDetection.ts","webpack:///./src/views/Logo.vue","webpack:///./src/views/Logo.vue?3632","webpack:///./src/views/Logo.vue?4b88","webpack:///./src/views/Logout.vue?e15a","webpack:///./src/views/Logout.vue","webpack:///./src/views/Logout.vue?e2b8","webpack:///./src/views/Logout.vue?c9a4","webpack:///./src/views/Home.vue?c04d","webpack:///./src/store/useTemperature.ts","webpack:///./src/views/Home.vue","webpack:///./src/views/Home.vue?102e","webpack:///./src/views/Home.vue?38f2","webpack:///./src/views/Account.vue?8ac0","webpack:///./src/models/ContactViewModel.ts","webpack:///./src/store/useConnectedAccount.ts","webpack:///./src/store/useSubscription.ts","webpack:///./src/views/Account.vue","webpack:///./src/views/Account.vue?622f","webpack:///./src/views/Account.vue?3bdc","webpack:///./src/views/Map.vue?9a09","webpack:///./src/utilities/useGoogleMaps.ts","webpack:///./src/views/Map.vue","webpack:///./src/views/Map.vue?9165","webpack:///./src/views/Map.vue?b4f5","webpack:///./src/views/mob.vue?20c1","webpack:///./src/store/useVIPContacts.ts","webpack:///./src/models/VIPContactViewModel.ts","webpack:///./src/store/useVIPContact.ts","webpack:///./src/views/mob.vue","webpack:///./src/views/mob.vue?4600","webpack:///./src/views/mob.vue?0498","webpack:///./src/views/Settings.vue?f074","webpack:///./src/views/Settings.vue","webpack:///./src/views/Settings.vue?b0c6","webpack:///./src/views/Settings.vue?de13","webpack:///./src/views/EventLog.vue?8411","webpack:///./src/store/useCoreHistory.ts","webpack:///./src/views/EventLog.vue","webpack:///./src/views/EventLog.vue?e29e","webpack:///./src/views/EventLog.vue?4568","webpack:///./src/views/Weather.vue?5f5d","webpack:///./src/store/services/weather.service.ts","webpack:///./src/views/Weather.vue","webpack:///./src/views/Weather.vue?0db6","webpack:///./src/views/Weather.vue?3d9d","webpack:///./src/views/SensorLog.vue?fc1f","webpack:///./src/store/useSensorHistory.ts","webpack:///./src/views/SensorLog.vue","webpack:///./src/views/SensorLog.vue?9a6b","webpack:///./src/views/SensorLog.vue?8e9b","webpack:///./src/views/AddContact.vue?3e58","webpack:///./src/views/AddContact.vue","webpack:///./src/views/AddContact.vue?9a85","webpack:///./src/views/AddContact.vue?1913","webpack:///./src/views/EditContact.vue?4c3f","webpack:///./src/views/EditContact.vue","webpack:///./src/views/EditContact.vue?7da2","webpack:///./src/views/EditContact.vue?922c","webpack:///./src/views/GeoPermission.vue?70a0","webpack:///./src/views/GeoPermission.vue","webpack:///./src/views/GeoPermission.vue?0ba9","webpack:///./src/views/GeoPermission.vue?cae7","webpack:///./src/views/LogbookRecord.vue?f710","webpack:///./src/store/useFavouriteJourney.ts","webpack:///./src/models/FavouriteJourneyViewModel.ts","webpack:///./src/store/useUserPictureStorage.ts","webpack:///./src/views/LogbookRecord.vue","webpack:///./src/views/LogbookRecord.vue?50ac","webpack:///./src/views/LogbookRecord.vue?9114","webpack:///./src/views/UserImageGallery.vue?0a60","webpack:///./src/views/UserImageGallery.vue","webpack:///./src/views/UserImageGallery.vue?cce8","webpack:///./src/views/UserImageGallery.vue?98a6","webpack:///./src/router/accountRoutes.ts","webpack:///./src/router/index.ts","webpack:///./src/assets/icons/fleet.svg","webpack:///./src/assets/wicons/13d@2x.svg","webpack:///./src/assets/icons/timer-play-outline.svg","webpack:///./src/assets/wicons/11n@2x.svg","webpack:///./src/views/SensorLog.vue?5cc6","webpack:///./src/assets/icons/batteri-ladeniveau-forside_hvid_2.svg","webpack:///./src/assets/icons/warning-red.svg","webpack:///./src/assets/icons/speedometer-medium.svg","webpack:///./src/assets/icons/geo-fence.svg","webpack:///./src/assets/icons/share-variant-outline.svg","webpack:///./src/assets/icons/unknown-error.svg","webpack:///./src/assets/wicons/01d@2x.svg","webpack:///./src/assets/icons/responsive.svg","webpack:///./src/assets/icons/reset.svg","webpack:///./src/assets/icons/nmea.svg","webpack:///./src/assets/wicons/13n@2x.svg","webpack:///./src/assets/icons/catch-thief-bg.svg","webpack:///./src/plugins/theme.ts","webpack:///./src/plugins/vuetify.ts","webpack:///./src/App.vue?5200","webpack:///./src/components/FooterNavigation.vue?d22f","webpack:///./src/components/FooterNavigation.vue","webpack:///./src/components/FooterNavigation.vue?4703","webpack:///./src/components/FooterNavigation.vue?ac54","webpack:///./src/utilities/useServiceUpdate.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?640d","webpack:///./src/App.vue?b1ee","webpack:///./src/registerServiceWorker.ts","webpack:///./src/filters/date.filter.ts","webpack:///./src/plugins/lodash-plugin.ts","webpack:///./src/main.ts","webpack:///./src/store/useLogbook.ts","webpack:///./src/assets/icons/map-marker-stop.svg","webpack:///./src/assets/icons/contact.svg","webpack:///./src/assets/wicons/09d@2x.svg","webpack:///./src/store/services/security.service.ts","webpack:///./src/views/mob.vue?735c","webpack:///./src/assets/icons/weather_old.svg","webpack:///./src/assets/icons/map-marker-distance.svg","webpack:///./src/assets/icons/unlock.svg","webpack:///./src/assets/icons/dots-vertical-circle-outline.svg","webpack:///./src/assets/icons/edit.svg","webpack:///./src/models/AttachedDeviceModel.ts","webpack:///./src/assets/wicons/04d@2x.svg","webpack:///./src/assets/icons/bilge-pump-on-icon.svg","webpack:///./src/assets/wicons/50d@2x.svg","webpack:///./src/assets/icons/map-marker-round-trip.svg","webpack:///./src/assets/wicons/03d@2x.svg","webpack:///./src/assets/img/thermometer.png","webpack:///./src/assets/icons/escape.svg","webpack:///./src/assets/icons/mobO.svg","webpack:///./src/assets/icons/profil.svg","webpack:///./src/assets/icons/battery.svg","webpack:///./src/assets/icons/switched-off.svg","webpack:///./src/utilities/useAuthToken.ts","webpack:///./src/assets/wicons/10n@2x.svg","webpack:///./src/assets/icons/map-arrow.svg","webpack:///./src/assets/icons/door-sensor.svg","webpack:///./src/assets/icons/captains_log.svg","webpack:///./src/utilities/useDevice.ts","webpack:///./src/views/Weather.vue?352b","webpack:///./src/assets/icons/timer_blue.svg","webpack:///./src/assets/icons/blad.svg","webpack:///./src/assets/icons/mob.svg","webpack:///./src/assets/icons/gas_valve.svg","webpack:///./src/assets/icons/batteri-ladeniveau-forside_hvid70.svg","webpack:///./src/assets/icons/bilge-pump-off-icon.svg"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","AxiosSecureModule","VuexModule","configureOidc","oidc","Axios","defaults","headers","common","accessToken","Log","AlarmModule","constructor","options","super","alarmStatus","armed","syncStatus","syncAlarm","trackingStatus","seconds","lastMiscInfo","lastKnownLocation","lat","lng","user_lat","user_lng","doorClosed","hatchClosed","shorePowerOn","smartPlugOn","digitalIOOn","gasValveOpen","currentSensorConnected","pumpIsRunning","gpsRadius","deviceAdded","deviceTimedOut","inAlarmMode","deviceThatTriggeredAlarm","alreadyLoggedIn","userLocReady","this","setArmed","SetStatus","clear","defineHeaderAxios","SetData","catch","post","app","information","startSync","checkStatus","clearInterval","intervalID","setInterval","startTracking","stopTracking","status","latitude","longitude","dateRange","state","sensor","syncSensor","SetNewDeviceAdded","SetNewDeviceTimedOut","SetInAlarmMode","SetAlarmModeTriggered","alarm","useDevice","getName","toUpperCase","SetAlarmOrigin","device","settings","Alarm","trim","set","configureRouter","router","replace","SetCurrentLocation","location","geometry","coordinates","SetUserLocation","coords","SetCurentMiscInfo","miscInfo","__decorate","Action","Mutation","Module","generateMutationSetters","MobModule","payload","EnrollModule","EnrollInProgress","EnrollStartedAt","Date","start","setEnrollProgres","setEnrollStartTime","id","statusText","end","ProfileViewModel","ProfileModule","profile","Set","model","put","Get","SensorModule","devices","startSensorSync","GetData","find","item","attachedDeviceId","age","Number","index","findIndex","SetSensorStatus","alarm1","showTopBar","showFooter","success","isProcessing","processingLabel","countdown","title","isHomePanelOpen","homePanelOpenIndex","isMyBoatPanelOpen","myBoatPanelOpenIndex","isControlPanelOpen","controlPanelOpenIndex","isSensorsPanelOpen","sensorsPanelOpenIndex","setHomePanelOpen","log","setHomePanelIndex","setMyBoatPanelOpen","setMyBoatPanelIndex","setControlPanelOpen","setControlPanelIndex","setSensorsPanelOpen","setSensorsPanelIndex","setIsProcessing","setProcessingLabel","setCountdown","Vue","use","Vuex","rootStore","version","mutations","actions","getters","store","Store","AppModule","enrollState","mobState","captainEmail","toLowerCase","add","async","contact","update","remove","delete","getCaptain","deviceId","nameRules","v","emailRules","test","map","webpackContext","req","webpackContextResolve","keys","date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","mapJsonToAlarmStatus","jsonString","json","JSON","parse","Coordinator_Info","Array","isArray","Ci","ci","a64","channel","panID","children","tempMtrs","Tm","tm","a16","A","tempC","Tc","pwrMtrs","Pm","pm","pwrDlvd","Pd","VSupplies","Vs","vs","V1","V2","V3","I1","fetchAt","Al","lastEvent","Le","atDevice","Ad","connectionObj","configureMessageHub","mainOidc","accessTokenFactory","getAcessToken","skipNegotiation","transport","HttpTransportType","WebSockets","connection","HubConnectionBuilder","withUrl","appUrl","configureLogging","LogLevel","Debug","build","on","i1","parseFloat","SetPumpRunningState","SetCurrentSensorConnected","NewDeviceTimedOut","NewDeviceAdded","handleStatusChange","onAlarm","warn","statusChange","SetSensorAge","senderDevice","attachedDeviceTypeId","statusMap","SetHatchState","SetShorePowerState","SetSmartPlugState","SetDoorState","SetGasValveState","SetDigitalIOState","deviceTypeId","toString","statusFunc","msg","values","split","onclose","startConnection","startedPromise","updateUserSettings","getUserSettings","render","_vm","_h","$createElement","_c","_self","attrs","ref","staticClass","_e","staticRenderFns","useIOSDetection","isIos","navigator","userAgent","isInStandaloneMode","Boolean","standalone","showInstallMessage","defineComponent","setup","_","root","loading","container","computed","statusReceived","waitForStatus","timeoutMs","checkInterval","stopWatch","watch","val","logout","signOut","onBeforeMount","onBeforeUnmount","onMounted","maxRetries","attempt","GetStatus","received","component","VContainer","VFlex","VImg","VLayout","VProgressLinear","ClearAlarmData","$router","returnToLogin","VBtn","VMain","VRow","_v","showGrafDialog1","power1","statusLoading","voltageWarning1","getBatteryType","callback","$$v","expression","showGrafDialog2","power2","voltageWarning2","_s","temperature","panel","shorePowerModel","enroll","smartplugModel","doorsensorModel","hatchsensorModel","goToMob","latLetter","lngLetter","gpsLocationAge","components","Battery","AlarmButton","SensorItem","ShorePowerItem","SmartPlugItem","DoorSensorItem","HatchSensorItem","VoltageGraph","connectSensor","lastGpsTime","lastHeardIntervalId","useTemperature","smallVoltageLimit","lowVoltageLimit12V","highVoltageLimit12V","lowVoltageLimit24V","highVoltageLimit24V","chargingThreshold","accuracy","detectBatteryType","voltage","isVoltageWarning","getVoltage","parsed","getItem","temperatureModel","AttachedDeviceModel","foundModel","doorPaired","hatchPaired","doorResponsive","hatchResponsive","params","destination","generateTimeString","days","hours","minutes","timestring","initTimer","gps","last_heard","lastHeard","utcTime","getTime","getTimezoneOffset","now","distance","Math","floor","getHomePanelOpen","getHomePanelIndex","cabinTemperature","toFixed","getGeoLocation","$watch","Home","Component","VCol","VExpansionPanels","VList","VListItem","VListItemContent","VListItemGroup","VListItemIcon","VListItemSubtitle","VListItemTitle","goBack","valid","$set","isCaptain","class","_b","phoneObject","vueTel","props","scopedSlots","_u","fn","open","staticStyle","timezones","updateTimezone","selectedTimezone","_l","userId","hasGalleryAccess","$event","changeGalleryAccess","hasUploadAccess","changeUploadAccess","isApproved","preventDefault","authorizeAccount","deauthorizeConnectedAccount","deleteConnectedAccount","formattedBillingStart","formattedBillingEnd","dataUsage","mBsUsed","dataLimit","transactionUsage","transactionsUsed","transactionsLimit","formattedSubscriptionStart","formattedSubscriptionEnd","formattedSubscribedSinceDate","formattedRenewalDate","billingInterval","manageSubscription","manageAcc","isValid","initSave","removeOk","showRemove","lockoutOk","showLockout","authorizeOk","showAuthorize","noconfirm","successOk","showSuccess","ContactViewModel","connectedAccount","approve","allowGallery","denyGallery","allowUpload","denyUpload","lockout","getSubscription","addEventListener","reason","VueTelInput","ConfirmDialog","useContact","useConnectedAccount","useSubscription","useUserSettings","subscription","userSettings","profileForm","profilestore","validate","Update","phone","autoFormat","autoDefaultCountry","dropdownOptions","showDialCodeInList","showDialCodeInSelection","showFlags","showSearchBox","width","ignoredCountries","inputOptions","autocomplete","showDialCode","placeholder","required","preferredCountries","validCharactersOnly","history","back","parseInt","formatDateString","billingStart","billingEnd","currentPeriodStart","currentPeriodEnd","capitalizeFirstLetter","subscriptionStartDate","string","charAt","dateString","day","month","toLocaleString","year","daySuffix","includes","timezone","moment","tz","names","methods","VCard","VCardSubtitle","VCardTitle","VCheckbox","VCombobox","VDivider","VExpansionPanel","VExpansionPanelContent","VExpansionPanelHeader","VForm","VIcon","VListItemAction","VListItemActionText","VSwitch","VTextField","showDialog","updateGeoFenceRadius","geofenceRadius","proxy","updateGeoFenceVisible","showGeofence","closeGeofenceDialog","saveGeofence","stopPropagation","showGeofenceDialog","arguments","showSettings","fab2","direction","hover","transition","isLoading","showThief","fab","stop_tracking","showTTs","updateShipPosition","start_tracking","apiKey","libraries","googleMapApi","Loader","useMap","myGoogleMap","shipMarker","userMarker","geoFence","geoFenceDisarmed","shipIcon","userIcon","user","ship","poly","polyBoat","infoWindow","infoWindowBoat","timer","timerBoat","unsavedGeofenceRadius","errorMessage","geoFenceRadius","toggle","setVisible","requestUserPosition","geolocation","getCurrentPosition","position","handlePositionSuccess","handlePositionError","enableHighAccuracy","maximumAge","google","maps","LatLng","path","getPath","setPosition","contentString","getPosition","addListener","close","setContent","getMap","goToGeoPerm","PERMISSION_DENIED","POSITION_UNAVAILABLE","TIMEOUT","pathBoat","setRadius","setZoom","setCenter","getCenter","load","markerPos","userPos","InfoWindow","Marker","url","scaledSize","Size","origin","Point","anchor","Map","center","mapTypeId","zoom","disableDefaultUI","zoomControl","backgroundColor","mapTypeControl","mapTypeControlOptions","style","MapTypeControlStyle","DROPDOWN_MENU","fullscreenControl","icon","shipName","setMap","setIcon","setTitle","Polyline","strokeColor","strokeOpacity","strokeWeight","zIndex","Circle","fillColor","fillOpacity","radius","visible","onUnmounted","created","$once","VBadge","VCardActions","VCardText","VDialog","VSlider","VSpacer","VSpeedDial","VTooltip","showContactDialog","isFetchingPosition","sendMobMessage","VIPcontacts","selectContact","phoneNumber","editVIPContact","deleteVIPContact","closeContactDialog","openAddContactDialog","showAddContactDialog","phoneObject2","vueTel2","closeAddContactDialog","isValid2","showEditContactDialog","closeEditContactDialog","initEditSave","getVIPContacts","VIPContactViewModel","LoadingDialog","useVIPContacts","useVIPContact","contactForm","editContactForm","phoneInputRef","editedContact","VIPcontact","openEditContactDialog","newContact","phoneData","number","MyBoat","SystemStatus","Control","Sensors","latestEventName","indexOf","startsWith","formatModifiedDate","modifiedDate","logItems","getLog","context","useCoreHistory","utc","format","VAvatar","VTimeline","VTimelineItem","currentTime","iconurl","weatherDescriptionText","feelsLike","windDeg","windSpeed","humidity","description","rain","temp","loadingLabel","APIkey","getCurrentWeather","config","fetch","response","weather","useWeather","currentWeather","timeConverter","UNIX_timestamp","a","getDay","hour","padStart","min","time","timetoDayConverter","getCardinalDirection","angle","emoji_directions","round","forecast","comingWeather","daily","dt","require","night","pop","wind_speed","wind_deg","dayWeather","current","feels_like","weatherMainText","main","mainWeather","getWeather","lon","startTime","elapsed","delay","max","VOverlay","VProgressCircular","VSubheader","sensorName","$route","useSensorHistory","sensorId","email","shorePowerActive","smartplugActive","mainDoorActive","hatchActive","geofenceActive","gatewayTamperedActive","gatewayPowerlossActive","detectorsActive","voltageLowActive","lowBatteryActive","shorePowerSMSActive","smartPlugSMSActive","mainDoorSMSActive","hatchSMSActive","geofenceSMSActive","gatewayTamperedSMSActive","gatewayPowerlossSMSActive","detectorsSMSActive","voltageLowSMSActive","lowBatterySMSActive","smartplugSMSActive","isFormValid","detectorsEmailActive","shorePowerEmailActive","smartplugEmailActive","mainDoorEmailActive","hatchEmailActive","voltageLowEmailActive","geofenceEmailActive","lowBatterySensorEmailActive","gatewayTamperedEmailActive","gatewayPowerlossEmailActive","lowBatterySensorSMSActive","gsmConnectionLostEmailActive","gsmConnectionLostSMSActive","initRemove","confirmOk","showConfirm","permissionText","instructionHeader","instructionText","String","isIOS","showError","formattedDate","showLoadingDialog","showExtras","headline","text","imageUrl","shareImageUrl","shareNow","showShareDialog","showCarousel","showHint","getIconPath","label","unit","slot","captureAndShareBase","isFavourite","showEditNicknameDialog","showDeleteDialog","showSaveDialog","goToGallery","nickname","saveJourney","deleteJourney","journey","updateJourney","domProps","subtext","saveFavouriteJourney","updateFavouriteJourney","getFavouriteJourney","deleteFavouriteJourney","FavouriteJourneyViewModel","containerName","blobSasUrl","getBlobServiceClient","BlobServiceClient","uploadImageToBlobStorage","fileName","fileData","blobServiceClient","containerClient","getContainerClient","blockBlobClient","getBlockBlobClient","uploadData","downloadImageFromBlobStorage","downloadBlockBlobResponse","download","blobBody","blobData","arrayBuffer","Uint8Array","deleteImageFromBlobStorage","deleteImagesStartingWith","prefix","blob","listBlobsFlat","ShareDialog","CANVAS_WIDTH","START_HEIGHT","HORIZONTAL_GAP","VERTICAL_GAP","LARGE_VERTICAL_GAP","BORDER_WIDTH","ELEMENT_COLOR","IMAGE_FORMAT","SHARE_FILE_NAME","LOGO_IMAGE_PATH","BACKGROUND_IMAGE_PATH","TITLE","useFavouriteJourney","selectedDate","journeyId","startMarker","endMarker","startIcon","endIcon","roundTripIcon","maxSpeedIcon","historyIcon","onMountedFinished","logbookItemsFetched","totalTime","stopTime","totalDistance","averageSpeed","roundTripRadius","maxSpeed","maxSpeedIndex","carouselModel","infoWindows","file","uploadFile","logFileName","generateRandomFileName","captureLog","logFile","favouriteDate","filenames","image1","image2","image3","image4","image5","filename","domToBlob","querySelector","scale","img","Image","crop","canvas","ctx","getContext","height","drawImage","toBlob","croppedBlob","File","URL","createObjectURL","loadImage","downloadAndPrepareImages","imageList","imageData","Blob","calculateTotalHeight","logImage","totalHeight","logHeight","image","scaledWidth","scaledHeight","includeGallery","logoImg","background","logUrl","logoStartY","scaledLogoHeight","titleMidPoint","dateMidPoint","font","fillStyle","textAlign","titleX","fillText","dateX","currentY","logWidth","fillRect","revokeObjectURL","canShare","files","shareData","share","tripData","menuItems","hintItems","startDate","currentDate","parseISO","toISOString","substring","endDate","startDateValue","endDateValue","selectedDateRange","logbookItems","useLogbook","isMarkerWithinRadius","marker1","marker2","position1","position2","spherical","computeDistanceBetween","calculateSpeedInKnots","point1","time1","point2","time2","timeDiff","abs","speed","findMaxSpeed","polyline","foundMaxSpeed","getLength","getAt","gpsTimestamp","formatTimestamp","timestamp","minute","second","hour12","characters","random","runLoop","forEach","logbookItem","pos","point","content","historyMarker","withinRadius","removeAt","halfwayPoint","interpolate","maxSpeedMarker","heading","computeHeading","headingMarker","SymbolPath","FORWARD_CLOSED_ARROW","rotation","bounds","LatLngBounds","extend","fitBounds","startTimestamp","stopTimestamp","startHour","startMinute","stopHour","stopMinute","startDateString","endDateString","totalTimeInMs","totalTimeInSeconds","computeLength","getArray","averageSpeedKTS","isNaN","CIRCLE","DEFAULT","mapTypeIds","VCarousel","VCarouselItem","VListItemAvatar","VSheet","goToLog","downloading","uploading","images","downloadProgress","showImageDialog","imageRules","selectedFileForUpload","handleFileChange","selectedImageIsPlaceholder","selectedImageIndex","handleImageAction","fileSelected","hasValidImage","every","uploadImage","fetchImagesFromBlob","ids","size","includeLog","logImageData","logBlob","VFileInput","VSkeletonLoader","Router","redirect","routerObj","idsrvAuth","routes","Logo","meta","authName","secure","Settings","Account","Logout","Mob","GeoPermission","Weather","EventLog","SensorLog","LogbookRecord","UserImageGallery","AddContact","EditContact","accountRoutes","base","process","beforeEach","to","from","next","differenceInMinutes","useRouter","theme","primary","colors","purple","darken1","secondary","accent","info","warning","Vuetify","VAlert","VApp","VNavigationDrawer","VFooter","VToolbar","VDataTable","VAppBar","VBottomNavigation","opts","customProperties","themes","light","input","color","$oidc","alarmAlert","dismissAlarmAlert","errorAlert","dismissErrorAlert","successAlert","dismissSuccessAlert","updateExists","refreshApp","goToMap","alarmColor","dismissAlarmMode","isAuthendicated","isAuthenticated","isAlarm","refreshing","registration","updateAvailable","detail","waiting","postMessage","serviceWorker","getRegistrations","registrations","unregister","reload","once","AppFooter","topbar","footer","newValue","useServiceUpdate","VSnackbar","VToolbarTitle","register","ready","cached","updated","dispatchEvent","CustomEvent","offline","formatString","install","init","startup","ok","productionTip","filter","dateFilter","VueCompositionApi","LodashPlugin","vuetify","h","App","$mount","loco","appRootUrl","protocol","host","authObj","configFetch","createOidcAuth","SignInType","Window","prompt","start_checksession","silent_renew","silent_redirect_uri","log_console_warning_active","log_console_debug_active","events","addAccessTokenExpiring","startSilentRenew","addAccessTokenExpired","addSilentRenewError","addUserLoaded","addUserUnloaded","addUserSignedOut","addUserSessionChanged","auth"],"mappings":"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","file":"js/app.276a11c9.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"components~settings\":\"components~settings\",\"components\":\"components\",\"settings\":\"settings\"}[chunkId]||chunkId) + \".\" + {\"chunk-061b9bcc\":\"ab45933d\",\"chunk-2d225bd9\":\"5f6a3f86\",\"chunk-7492e181\":\"c042080d\",\"components~settings\":\"8fceca7c\",\"components\":\"72568f4e\",\"settings\":\"1bfa4f39\",\"chunk-2d0c1b06\":\"599ab1aa\",\"chunk-2d0d5fce\":\"aa8fec53\",\"chunk-2d0e87e6\":\"b21fd2d5\",\"chunk-2d2093cc\":\"baeeddf9\",\"chunk-41cef930\":\"e0431216\",\"chunk-51ee8233\":\"af19fc46\",\"chunk-7185de3a\":\"a9640fc9\",\"chunk-74a24199\":\"8a765541\",\"chunk-80f36726\":\"306c5944\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-061b9bcc\":1,\"components~settings\":1,\"components\":1,\"settings\":1,\"chunk-41cef930\":1,\"chunk-51ee8233\":1,\"chunk-7185de3a\":1,\"chunk-80f36726\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({\"components~settings\":\"components~settings\",\"components\":\"components\",\"settings\":\"settings\"}[chunkId]||chunkId) + \".\" + {\"chunk-061b9bcc\":\"95e17fa8\",\"chunk-2d225bd9\":\"31d6cfe0\",\"chunk-7492e181\":\"31d6cfe0\",\"components~settings\":\"395c3698\",\"components\":\"25ff32a1\",\"settings\":\"f36f7b97\",\"chunk-2d0c1b06\":\"31d6cfe0\",\"chunk-2d0d5fce\":\"31d6cfe0\",\"chunk-2d0e87e6\":\"31d6cfe0\",\"chunk-2d2093cc\":\"31d6cfe0\",\"chunk-41cef930\":\"310173da\",\"chunk-51ee8233\":\"31fed435\",\"chunk-7185de3a\":\"2c11c7e7\",\"chunk-74a24199\":\"31d6cfe0\",\"chunk-80f36726\":\"de7d20ff\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\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\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([1,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"img/map-position-dot.96d2e05b.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Map.vue?vue&type=style&index=0&id=347191bb&prod&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/heat-detector.09f110a4.svg\";","import { VuexModule } from \"vuex-class-modules\";\nimport Axios from \"axios\";\nimport { configureOidc } from \"../services/security.service\";\nimport { Log } from \"../../plugins/Logging\";\n\nexport default class AxiosSecureModule extends VuexModule {\n async defineHeaderAxios() {\n await configureOidc().then(\n (oidc) => {\n Axios.defaults.headers.common[\"Authorization\"] =\n \"Bearer \" + oidc.accessToken;\n },\n (err) => {\n Log.error(\"\", err);\n }\n );\n }\n}\n","import { Action, Mutation, Module, RegisterOptions } from \"vuex-class-modules\";\nimport Axios, { AxiosResponse } from \"axios\";\nimport { get, set, clear } from \"idb-keyval\";\nimport {\n AlarmStatus,\n ILocationFromDatabase,\n ILocationFromParticle,\n IMiscInfo,\n} from \"@/models/AlarmStatus\";\nimport AxiosSecureModule from \"./axiosSecureModule\";\nimport { app, sensor } from \"@/store\";\nimport { Log } from \"@/plugins/Logging\";\nimport { configureRouter } from \"@/router\";\nimport VueRouter from \"vue-router\";\nimport useDevice from \"@/utilities/useDevice\";\n\n@Module({ generateMutationSetters: true })\nexport default class AlarmModule extends AxiosSecureModule {\n public alarmStatus: AlarmStatus | null = null;\n public armed = false;\n public syncStatus = false;\n public syncAlarm = false;\n public trackingStatus = false;\n public seconds = 0;\n public lastMiscInfo: IMiscInfo | null = null;\n public lastKnownLocation: ILocationFromParticle | null = null;\n public lat: number | null = null;\n public lng: number | null = null;\n public user_lat: number | null = null;\n public user_lng: number | null = null;\n public doorClosed = false;\n public hatchClosed = false;\n public shorePowerOn = false;\n public smartPlugOn = false;\n public digitalIOOn = false;\n public gasValveOpen = false;\n public currentSensorConnected = false;\n public pumpIsRunning = false;\n settings: any;\n public gpsRadius = 100;\n public deviceAdded = false;\n public deviceTimedOut = false;\n public inAlarmMode = false;\n public deviceThatTriggeredAlarm = 0;\n public alreadyLoggedIn = false;\n public userLocReady = false;\n\n constructor(options: RegisterOptions) {\n super(options);\n get(\"armed\").then((value) => {\n if (value) this.setArmed(value);\n else this.setArmed(false);\n });\n get(\"status\").then((value) => {\n if (value) this.SetStatus(value);\n });\n }\n @Action\n public async ClearAlarmData() {\n clear().then(() => {\n this.alarmStatus = null;\n });\n }\n\n @Action\n public async GetData() {\n await this.defineHeaderAxios();\n Axios.get(\"api/Alarm\")\n .then((result: AxiosResponse) => {\n this.SetData(result.data);\n })\n .catch((error) => {\n Log.error(\"Get alarm data failed.\", error);\n });\n }\n @Action\n public async reset() {\n await this.defineHeaderAxios();\n Axios.post(\"api/Alarm/reset\").catch((error) => {\n Log.error(\"Reset failed.\", error);\n app.error = \"Factory reset failed\";\n });\n }\n @Action\n public async restart() {\n await this.defineHeaderAxios();\n Axios.post(\"api/Alarm/restart\").catch((error) => {\n Log.error(\"Restart failed.\", error);\n app.error = \"Device restart failed\";\n });\n }\n @Action\n public async GetStatus() {\n await this.defineHeaderAxios();\n Axios.get(`api/Alarm/status`)\n .then((result: AxiosResponse) => {\n Log.information(\"Status called.\");\n })\n .catch((error) => {\n this.syncAlarm = false;\n Log.error(\"Status call failed.\", error);\n });\n }\n\n @Action\n public async Arm() {\n this.startSync();\n\n await this.defineHeaderAxios();\n Axios.get(`api/Alarm/Arm`)\n .then((result: AxiosResponse) => {\n Log.information(\"Arm called.\");\n })\n .catch((error) => {\n this.syncAlarm = false;\n Log.error(\"Arm failed.\", error);\n app.error = \"Arming failed\";\n });\n }\n startSync() {\n this.syncAlarm = true;\n const checkStatus = () => {\n if (this.syncAlarm) {\n if (this.seconds >= 60) {\n app.error =\n \"Device not reachable within the last minute. Possibly offline.\";\n this.syncAlarm = false;\n } else {\n app;\n this.seconds += 1;\n }\n } else {\n clearInterval(intervalID);\n this.seconds = 0;\n }\n };\n const intervalID = setInterval(checkStatus, 1000);\n }\n startTracking() {\n this.trackingStatus = true;\n Log.information(\"Tracking started.\");\n }\n\n stopTracking() {\n this.trackingStatus = false;\n Log.information(\"Tracking stopped.\");\n }\n\n @Action\n public async Disarm() {\n this.startSync();\n await this.defineHeaderAxios();\n Axios.get(`api/Alarm/Disarm`)\n .then((result: AxiosResponse) => {\n Log.information(\"Disarm called.\");\n })\n .catch((error) => {\n Log.error(\"Disarm failed.\", error);\n app.error = \"Disarming failed\";\n this.syncAlarm = false;\n });\n }\n @Action\n public async getGeoLocation() {\n await this.defineHeaderAxios();\n Axios.get(`api/Alarm/geo`)\n .then((result: AxiosResponse) => {\n Log.information(\"Fetch geolocation from server\");\n if (result.status === 200) {\n this.lat = result.data.latitude;\n this.lng = result.data.longitude;\n }\n })\n .catch((error) => {\n Log.error(\"Fetch geolocation failed.\", error);\n });\n }\n\n @Action\n public async getGeoHistory(dateRange: string) {\n await this.defineHeaderAxios();\n Axios.get(`api/Alarm/geo/${dateRange}`)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n Log.information(\"Fetch geo history from server\");\n }\n })\n .catch((error) => {\n Log.error(\"Fetch geo history failed.\", error);\n });\n }\n @Action\n public async getMiscInfo() {\n await this.defineHeaderAxios();\n Axios.get(`api/Alarm/MiscInfo`)\n .then((result: AxiosResponse) => {\n Log.information(\"Fetch misc info from server\");\n })\n .catch((error) => {\n Log.error(\"Fetch misc info failed.\", error);\n });\n }\n\n @Action\n public async SetShorePowerState(state: boolean) {\n this.shorePowerOn = state;\n sensor.syncSensor = false;\n }\n @Action\n public async SetSmartPlugState(state: boolean) {\n this.smartPlugOn = state;\n sensor.syncSensor = false;\n }\n @Action\n public async SetDoorState(state: boolean) {\n this.doorClosed = state;\n }\n @Action\n public async SetHatchState(state: boolean) {\n this.hatchClosed = state;\n }\n @Action\n public async SetDigitalIOState(state: boolean) {\n this.digitalIOOn = state;\n sensor.syncSensor = false;\n }\n @Action\n public async SetGasValveState(state: boolean) {\n this.gasValveOpen = state;\n sensor.syncSensor = false;\n }\n\n @Action\n public async SetCurrentSensorConnected(state: boolean) {\n this.currentSensorConnected = state;\n }\n\n @Action\n public async SetPumpRunningState(state: boolean) {\n this.pumpIsRunning = state;\n }\n\n @Action\n public async NewDeviceAdded() {\n this.SetNewDeviceAdded(true);\n }\n @Mutation\n public SetNewDeviceAdded(value: boolean) {\n this.deviceAdded = value;\n }\n @Action\n public async NewDeviceTimedOut() {\n this.SetNewDeviceTimedOut(true);\n }\n @Mutation\n public SetNewDeviceTimedOut(value: boolean) {\n this.deviceTimedOut = value;\n }\n @Mutation\n public SetInAlarmMode(value: boolean) {\n this.inAlarmMode = value;\n }\n\n @Mutation\n public SetAlarmModeTriggered(value: boolean) {\n this.inAlarmMode = value;\n app.alarm = useDevice()\n .getName(this.deviceThatTriggeredAlarm)\n .toUpperCase();\n }\n @Mutation\n public SetAlarmOrigin(device: number) {\n this.deviceThatTriggeredAlarm = device;\n }\n @Mutation\n SetData(data: any) {\n this.settings = data;\n }\n @Mutation\n SetStatus(data: AlarmStatus | null) {\n this.syncStatus = false;\n if (data) {\n this.alarmStatus = data;\n if (data !== null && data.Alarm) {\n this.armed = data.Alarm.trim() === \"1\";\n this.syncAlarm = false;\n set(\"armed\", this.armed);\n }\n this.alarmStatus = data;\n if (!this.alreadyLoggedIn) {\n this.alreadyLoggedIn = true;\n configureRouter().then((router: VueRouter) => {\n router.replace({ name: \"Home\" }).catch(() => {\n Log.information(\"Logged in successfuly.\");\n });\n });\n }\n }\n }\n @Mutation\n setArmed(data: any) {\n this.armed = data;\n this.syncAlarm = false;\n set(\"armed\", this.armed);\n if (!this.armed) {\n this.inAlarmMode = false;\n }\n }\n @Mutation\n SetCurrentLocation(location: ILocationFromParticle) {\n this.lastKnownLocation = location;\n this.lat = location.location.geometry.coordinates[1];\n this.lng = location.location.geometry.coordinates[0];\n }\n @Mutation\n SetUserLocation(location: GeolocationPosition) {\n this.user_lat = location.coords.latitude;\n this.user_lng = location.coords.longitude;\n this.userLocReady = true;\n }\n @Mutation\n SetCurentMiscInfo(miscInfo: IMiscInfo) {\n this.lastMiscInfo = miscInfo;\n }\n}\n","import { Action } from \"vuex-class-modules\";\nimport AxiosSecureModule from \"./axiosSecureModule\";\nimport Axios, { AxiosResponse } from \"axios\";\nimport { Log } from \"@/plugins/Logging\";\nexport default class MobModule extends AxiosSecureModule {\n @Action\n public async sendMobMessage(payload: {\n lat: string;\n lng: string;\n phone: string;\n }) {\n await this.defineHeaderAxios();\n Axios.post(\"api/mob/send/\", payload)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n Log.information(\"Mob Sent!!\");\n }\n })\n .catch((error) => {\n Log.error(\"\", error);\n });\n }\n}\n","import { Action, Mutation, Module } from \"vuex-class-modules\";\nimport Axios, { AxiosResponse } from \"axios\";\nimport AxiosSecureModule from \"./axiosSecureModule\";\nimport { Log } from \"@/plugins/Logging\";\n\n@Module()\nexport default class EnrollModule extends AxiosSecureModule {\n EnrollInProgress = false;\n EnrollStartedAt: Date = new Date();\n @Action\n public start() {\n this.setEnrollProgres(true);\n this.setEnrollStartTime();\n }\n @Action\n public async StartEnroll(id: number) {\n this.setEnrollProgres(false);\n await this.defineHeaderAxios();\n Axios.get(`api/sensor/enroll/${id}`)\n .then((result: AxiosResponse) => {\n Log.information(result.statusText);\n })\n .catch((error) => {\n Log.error(\"\", error);\n });\n }\n\n @Action\n public end() {\n this.setEnrollProgres(false);\n }\n @Mutation\n public setEnrollProgres(value: boolean) {\n this.EnrollInProgress = value;\n }\n @Mutation\n public setEnrollStartTime() {\n this.EnrollStartedAt = new Date();\n }\n}\n","export default class ProfileViewModel {\n public userId: string;\n public deviceId: string;\n public shipName: string;\n public shipHomeLocation: string;\n public geofenceRadius: number;\n public isCaptain: boolean;\n public isApproved: boolean;\n public hasGalleryAccess: boolean;\n public hasUploadAccess: boolean;\n public isPaid: boolean;\n public mBsUsed: number;\n public dataLimit: number;\n public transactionsUsed: number;\n public transactionsLimit: number;\n public billingStart: string;\n public billingEnd: string;\n}\n","import { Action, Mutation, Module } from \"vuex-class-modules\";\nimport Axios, { AxiosResponse } from \"axios\";\nimport ProfileViewModel from \"@/models/ProfileViewModel\";\nimport AxiosSecureModule from \"./axiosSecureModule\";\nimport { Log } from \"@/plugins/Logging\";\n@Module({})\nexport default class ProfileModule extends AxiosSecureModule {\n public profile: ProfileViewModel = new ProfileViewModel();\n\n @Action\n public async Get() {\n await this.defineHeaderAxios();\n Axios.get(\"api/Profile\")\n .then((result: AxiosResponse) => {\n this.Set(result.data);\n })\n .catch((error) => {\n Log.error(\"\", error);\n });\n }\n @Action\n public async Update(model: ProfileViewModel) {\n await this.defineHeaderAxios();\n Axios.put(\"api/Profile\", model)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n this.Get();\n }\n })\n .catch((error) => {\n Log.error(\"\", error);\n });\n }\n\n @Mutation\n Set(data: ProfileViewModel) {\n this.profile = data;\n }\n}\n","import { Action, Mutation, Module } from \"vuex-class-modules\";\nimport Axios, { AxiosResponse } from \"axios\";\nimport AttachedDeviceModel from \"@/models/AttachedDeviceModel\";\nimport AxiosSecureModule from \"./axiosSecureModule\";\nimport { Log } from \"@/plugins/Logging\";\nimport { app } from \"@/store\";\n@Module({ generateMutationSetters: true })\nexport default class SensorModule extends AxiosSecureModule {\n devices: Array = [];\n public syncSensor = false;\n public seconds = 0;\n\n @Action\n public async GetData() {\n await this.defineHeaderAxios();\n Axios.get(\"api/sensor\")\n .then((result: AxiosResponse) => {\n this.SetData(result.data);\n })\n .catch((error) => {\n Log.error(\"\", error);\n });\n }\n @Action\n public async GetPowerStatus() {\n await this.defineHeaderAxios();\n Axios.get(\"api/sensor/powerStatus\")\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n Log.information(\"fetch sensor status\");\n }\n })\n .catch((error) => {\n Log.error(\"\", error);\n });\n }\n\n startSensorSync() {\n this.syncSensor = true;\n const checkStatus = () => {\n if (this.syncSensor) {\n if (this.seconds >= 20) {\n app.error = \"Sensor unresponsive !!!!!\";\n this.syncSensor = false;\n this.GetData();\n } else {\n app;\n this.seconds += 1;\n }\n } else {\n clearInterval(intervalID);\n this.seconds = 0;\n }\n };\n const intervalID = setInterval(checkStatus, 1000);\n }\n\n @Action\n public async SetDeviceStatus(payload: { id: any; status: boolean }) {\n this.startSensorSync();\n await this.defineHeaderAxios();\n Axios.put(`api/sensor/status/${payload.id}/${payload.status}`)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n Log.information(\"set sensor status\");\n }\n })\n .catch((error) => {\n this.syncSensor = false;\n Log.error(\"\", error);\n });\n }\n @Action\n public async GetCoreHistory() {\n await this.defineHeaderAxios();\n Axios.get(`/api/sensor/CoreHistory`)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n Log.information(\"get core history\");\n }\n })\n .catch((error) => {\n Log.error(\"\", error);\n });\n }\n @Action\n public async GetDeviceHistory(id: any) {\n await this.defineHeaderAxios();\n Axios.get(`/api/sensor/history/${id}`)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n Log.information(\"get sensor history\");\n }\n })\n .catch((error) => {\n Log.error(\"\", error);\n });\n }\n\n @Action\n public async SetSensorAge(payload: {\n device: string;\n status: string;\n age: string;\n atPosition: any;\n }) {\n if (this.devices.length > 0) {\n const device = this.devices.find(\n (item: AttachedDeviceModel) =>\n item.attachedDeviceId === payload.device\n );\n\n if (device) {\n device.age = Number(payload.age);\n } else {\n Log.information(\n `Device not found in paired devices, ID=${payload.device}`\n );\n }\n } else {\n Log.information(\"No devices paired.\");\n }\n }\n\n @Action\n public async GetSensorAge(id: any) {\n const index = this.devices.findIndex(\n (item: AttachedDeviceModel) => item.attachedDeviceId === id\n );\n if (index > 0) {\n return this.devices[index].age;\n }\n }\n\n @Mutation\n SetData(data: Array) {\n this.devices = data;\n }\n\n @Mutation\n SetSensorStatus(data: { id: string; value: string }) {\n const index = this.devices.findIndex(\n (item: AttachedDeviceModel) => item.attachedDeviceId === data.id\n );\n this.devices[index].alarm1 = data.value === \"1\";\n }\n}\n","import { VuexModule, Module, Mutation } from \"vuex-class-modules\";\n\n@Module({ generateMutationSetters: true })\nexport default class AlarmModule extends VuexModule {\n public showTopBar = true;\n public showFooter = true;\n\n public alarm = \"\";\n public error = \"\";\n public success = \"\";\n public isProcessing = false;\n public processingLabel = \"\";\n public countdown = 0;\n public title: string | null | undefined = \"\";\n\n private isHomePanelOpen = false;\n private homePanelOpenIndex = -1;\n\n private isMyBoatPanelOpen = false;\n private myBoatPanelOpenIndex = -1;\n\n private isControlPanelOpen = false;\n private controlPanelOpenIndex = -1;\n\n private isSensorsPanelOpen = false;\n private sensorsPanelOpenIndex = -1;\n\n @Mutation\n public setHomePanelOpen(value: boolean) {\n console.log(\"setHomePanelOpen: \" + value);\n this.isHomePanelOpen = value;\n }\n @Mutation\n public setHomePanelIndex(value: number) {\n console.log(\"setHomePanelIndex: \" + value);\n this.homePanelOpenIndex = value;\n }\n @Mutation\n public setMyBoatPanelOpen(value: boolean) {\n console.log(\"setMyBoatPanelOpen: \" + value);\n this.isMyBoatPanelOpen = value;\n }\n @Mutation\n public setMyBoatPanelIndex(value: number) {\n console.log(\"setMyBoatPanelIndex: \" + value);\n this.myBoatPanelOpenIndex = value;\n }\n @Mutation\n public setControlPanelOpen(value: boolean) {\n console.log(\"setControlPanelOpen: \" + value);\n this.isControlPanelOpen = value;\n }\n @Mutation\n public setControlPanelIndex(value: number) {\n console.log(\"setControlPanelIndex: \" + value);\n this.controlPanelOpenIndex = value;\n }\n @Mutation\n public setSensorsPanelOpen(value: boolean) {\n console.log(\"setSensorsPanelOpen: \" + value);\n this.isSensorsPanelOpen = value;\n }\n @Mutation\n public setSensorsPanelIndex(value: number) {\n console.log(\"setSensorsPanelIndex: \" + value);\n this.sensorsPanelOpenIndex = value;\n }\n @Mutation\n public setIsProcessing(value: boolean) {\n this.isProcessing = value;\n }\n\n @Mutation\n public setProcessingLabel(value: string) {\n this.processingLabel = value;\n }\n\n @Mutation\n public setCountdown(value: number) {\n this.countdown = value;\n }\n\n public get getHomePanelOpen() {\n return this.isHomePanelOpen;\n }\n public get getHomePanelIndex() {\n return this.homePanelOpenIndex;\n }\n public get getMyBoatPanelOpen() {\n return this.isMyBoatPanelOpen;\n }\n public get getMyBoatPanelIndex() {\n return this.myBoatPanelOpenIndex;\n }\n public get getControlPanelOpen() {\n return this.isControlPanelOpen;\n }\n public get getControlPanelIndex() {\n return this.controlPanelOpenIndex;\n }\n public get getSensorsPanelOpen() {\n return this.isSensorsPanelOpen;\n }\n public get getSensorsPanelIndex() {\n return this.sensorsPanelOpenIndex;\n }\n\n}\n","import Vue from \"vue\";\nimport Vuex, { StoreOptions } from \"vuex\";\nimport RootState from \"./RootState\";\nimport AlarmModule from \"./modules/alarm.module\";\nimport MobModule from \"./modules/mob.module\";\nimport EnrollModule from \"./modules/enroll.module\";\nimport ProfileModule from \"./modules/profile.module\";\nimport SensorModule from \"./modules/sensor.module\";\nimport AppModule from \"./modules/app.module\";\n\nVue.use(Vuex);\n\nconst rootStore: StoreOptions = {\n state: {\n version: \"1.0.0\", // a simple property\n },\n mutations: {},\n actions: {},\n getters: {},\n modules: {},\n};\n\nconst store = new Vuex.Store(rootStore);\nexport const alarm = new AlarmModule({ store, name: \"alarm\" });\nexport const app = new AppModule({ store, name: \"app\" });\nexport const profile = new ProfileModule({ store, name: \"profile\" });\nexport const sensor = new SensorModule({ store, name: \"sensor\" });\nexport const enrollState = new EnrollModule({ store, name: \"enroll\" });\nexport const mobState = new MobModule({ store, name: \"mob\" });\nexport default store;\n","module.exports = __webpack_public_path__ + \"img/03n@2x.ad789581.svg\";","module.exports = __webpack_public_path__ + \"img/reset_blue.25bb4fa4.svg\";","module.exports = __webpack_public_path__ + \"img/position-tracking.5e67840d.svg\";","module.exports = __webpack_public_path__ + \"img/zigbee.976d8f6c.svg\";","module.exports = __webpack_public_path__ + \"img/no-signal.c15d4343.svg\";","module.exports = __webpack_public_path__ + \"img/battery-groupe-no-number-center.b17ba31d.svg\";","module.exports = __webpack_public_path__ + \"img/mute.8202565a.svg\";","module.exports = __webpack_public_path__ + \"img/timer-stop-outline.aaed73ab.svg\";","module.exports = __webpack_public_path__ + \"img/bilge.993294b0.svg\";","module.exports = __webpack_public_path__ + \"img/view-sequential-blk.25cb5e45.svg\";","module.exports = __webpack_public_path__ + \"img/map-marker-start.f9cd2f4d.svg\";","module.exports = __webpack_public_path__ + \"img/sirene-roed.dcb85247.svg\";","module.exports = __webpack_public_path__ + \"img/info-circle-blk.9f82686f.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventLog.vue?vue&type=style&index=0&id=d31f7adc&prod&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/checkmark.82b777b1.svg\";","module.exports = __webpack_public_path__ + \"img/android-prompt.6e9b6606.png\";","module.exports = __webpack_public_path__ + \"img/view-sequential.c520d32b.svg\";","module.exports = __webpack_public_path__ + \"img/door-closed-icon-shadow.416d7fd7.svg\";","module.exports = __webpack_public_path__ + \"img/battery-groupe-no-number.c7e74415.svg\";","module.exports = __webpack_public_path__ + \"img/smoke.4f098d6b.svg\";","module.exports = __webpack_public_path__ + \"img/fits-into-all.0a7fdb9c.svg\";","module.exports = __webpack_public_path__ + \"img/timer.39e5adc9.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FooterNavigation.vue?vue&type=style&index=0&id=615dce1e&prod&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/timer-sync-outline.f5ece66d.svg\";","module.exports = __webpack_public_path__ + \"img/batterry-full.d16f9a5a.svg\";","module.exports = __webpack_public_path__ + \"img/sirene.597c1793.svg\";","module.exports = __webpack_public_path__ + \"img/view-carousel-outline.eefb5eea.svg\";","module.exports = __webpack_public_path__ + \"img/dots-vertical-blk.17eeb9c3.svg\";","module.exports = __webpack_public_path__ + \"img/signal.11ee4bd0.svg\";","module.exports = __webpack_public_path__ + \"img/app.0d6c2653.svg\";","module.exports = __webpack_public_path__ + \"img/04n@2x.5aae8f83.svg\";","module.exports = __webpack_public_path__ + \"img/turn-on-off.5defcfa2.svg\";","module.exports = __webpack_public_path__ + \"img/weather.943bc274.svg\";","module.exports = __webpack_public_path__ + \"img/door-closed-icon.6bfb4dc9.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditContact.vue?vue&type=style&index=0&id=36d996e7&prod&scoped=true&lang=scss&\"","import Axios, { AxiosResponse } from \"axios\";\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\nimport ContactViewModel from \"@/models/ContactViewModel\";\n\nexport default function (options?: { captainEmail?: string }) {\n const captainEmail = options && options.captainEmail ? options.captainEmail.toLowerCase() : undefined;\n\n const add = async (contact: ContactViewModel): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.post(\"/api/contact\", contact)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve();\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n\n const update = async (contact: ContactViewModel): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.put(`/api/contact/${contact.id}`, contact)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve();\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n\n const remove = async (id: number): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.delete(`/api/contact/${id}`)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve();\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n\n const get = async (id: number): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.get(`/api/contact/${id}`)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve(result.data);\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n\n const getCaptain = async (deviceId: string): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.get(`/api/contact/${deviceId}`)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve(result.data);\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n\n const nameRules: ((v: any) => any)[] = [\n (v) => !!v || \"Name is required\",\n (v) => (v && v.length <= 30) || \"Name must be less than 30 characters\",\n ];\n\n const emailRules: ((v: any) => any)[] = [\n (v) => !!v || \"E-mail is required\",\n (v) => /.+@.+\\..+/.test(v) || \"E-mail must be valid\",\n (v) =>\n !captainEmail || v.toLowerCase() !== captainEmail ||\n \"This email belongs to the captain and cannot be used\",\n ];\n\n return {\n add,\n update,\n remove,\n get,\n getCaptain,\n nameRules,\n emailRules,\n };\n}\n","module.exports = __webpack_public_path__ + \"img/door-opened.6d71d3c8.svg\";","module.exports = __webpack_public_path__ + \"img/50n@2x.f5dcdd1b.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Account.vue?vue&type=style&index=0&id=2e9fc2c2&prod&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/door-opened-icon-shadow.257cbdd0.svg\";","var map = {\n\t\"./01d@2x.svg\": \"bd3b\",\n\t\"./01n@2x.svg\": \"57b4\",\n\t\"./02d@2x.svg\": \"a0df\",\n\t\"./02n@2x.svg\": \"7c90\",\n\t\"./03d@2x.svg\": \"df02\",\n\t\"./03n@2x.svg\": \"094a2\",\n\t\"./04d@2x.svg\": \"dc44\",\n\t\"./04n@2x.svg\": \"343a\",\n\t\"./09d@2x.svg\": \"d093\",\n\t\"./09n@2x.svg\": \"65b9\",\n\t\"./10d@2x.svg\": \"57a9\",\n\t\"./10n@2x.svg\": \"eefc\",\n\t\"./11d@2x.svg\": \"472f\",\n\t\"./11n@2x.svg\": \"b4235\",\n\t\"./13d@2x.svg\": \"b1c0\",\n\t\"./13n@2x.svg\": \"cbd3\",\n\t\"./50d@2x.svg\": \"ddd7e\",\n\t\"./50n@2x.svg\": \"3e20\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"42d2\";","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","module.exports = __webpack_public_path__ + \"img/11d@2x.7142c78b.svg\";","module.exports = __webpack_public_path__ + \"img/restart.92db7e4a.svg\";","module.exports = __webpack_public_path__ + \"img/dots-vertical.8679ca64.svg\";","module.exports = __webpack_public_path__ + \"img/mobFlag.f33b27fc.svg\";","module.exports = __webpack_public_path__ + \"img/update.3580cf37.svg\";","module.exports = __webpack_public_path__ + \"img/batterry-alarm.923befea.svg\";","module.exports = __webpack_public_path__ + \"img/unresponsive.7d18015e.svg\";","module.exports = __webpack_public_path__ + \"img/10d@2x.c8cdb216.svg\";","module.exports = __webpack_public_path__ + \"img/01n@2x.a3f3f38d.svg\";","module.exports = __webpack_public_path__ + \"img/view-carousel-outline-blk.ce785746.svg\";","module.exports = __webpack_public_path__ + \"img/boat-icon.50308d21.svg\";","module.exports = __webpack_public_path__ + \"img/batteri-ladeniveau-forside.ed6e25a3.svg\";","module.exports = __webpack_public_path__ + \"img/max-speed.268d3f94.svg\";","module.exports = __webpack_public_path__ + \"img/immobilizer.762eac86.svg\";","module.exports = __webpack_public_path__ + \"img/keypad.b3d116c4.svg\";","module.exports = __webpack_public_path__ + \"img/09n@2x.d235ab65.svg\";","module.exports = __webpack_public_path__ + \"img/info-circle.a44fba96.svg\";","module.exports = __webpack_public_path__ + \"img/battery-alarm.b7155689.svg\";","module.exports = __webpack_public_path__ + \"img/door-opened-icon.c71d4fde.svg\";","var map = {\n\t\"./app-engine-kill.svg\": \"9ff6\",\n\t\"./app.svg\": \"33c2\",\n\t\"./arrow-u-left-top.svg\": \"77c5\",\n\t\"./batteri-ladeniveau-forside.svg\": \"5e2b\",\n\t\"./batteri-ladeniveau-forside_hvid70.svg\": \"fdef\",\n\t\"./batteri-ladeniveau-forside_hvid_1.svg\": \"a116\",\n\t\"./batteri-ladeniveau-forside_hvid_2.svg\": \"b6ee\",\n\t\"./batterry-alarm.svg\": \"5229\",\n\t\"./batterry-full.svg\": \"2ae8\",\n\t\"./battery-alarm.svg\": \"69d1\",\n\t\"./battery-full.svg\": \"8bf9\",\n\t\"./battery-groupe-no-number-center.svg\": \"11cb\",\n\t\"./battery-groupe-no-number.svg\": \"207b\",\n\t\"./battery-groupe.svg\": \"93fe\",\n\t\"./battery.svg\": \"e74d\",\n\t\"./bilge-pump-off-icon.svg\": \"ffdb\",\n\t\"./bilge-pump-on-icon.svg\": \"dd23\",\n\t\"./bilge.svg\": \"15b4\",\n\t\"./blad.svg\": \"f92e\",\n\t\"./boat-icon.svg\": \"5c51\",\n\t\"./captains_log.svg\": \"f46d\",\n\t\"./catch-thief-bg.svg\": \"cd27\",\n\t\"./checkmark.svg\": \"1ec3\",\n\t\"./checkmark1.svg\": \"95d5\",\n\t\"./co-carbon-m.svg\": \"8ccc\",\n\t\"./compass.svg\": \"7259\",\n\t\"./contact.svg\": \"d015\",\n\t\"./digital_io.svg\": \"7cf5\",\n\t\"./door-closed-icon-shadow.svg\": \"2046\",\n\t\"./door-closed-icon.svg\": \"3706\",\n\t\"./door-closed.svg\": \"7d22\",\n\t\"./door-opened-icon-shadow.svg\": \"41f1\",\n\t\"./door-opened-icon.svg\": \"69de\",\n\t\"./door-opened.svg\": \"3e1a\",\n\t\"./door-sensor.svg\": \"f081\",\n\t\"./dots-vertical-blk.svg\": \"2f0c\",\n\t\"./dots-vertical-circle-outline-blk.svg\": \"865a\",\n\t\"./dots-vertical-circle-outline.svg\": \"da65\",\n\t\"./dots-vertical.svg\": \"4aba\",\n\t\"./edit.svg\": \"daf0\",\n\t\"./escape.svg\": \"e381\",\n\t\"./fits-into-all.svg\": \"25ca\",\n\t\"./fleet.svg\": \"b0d2\",\n\t\"./gas.svg\": \"7d75\",\n\t\"./gas_valve.svg\": \"fcaa\",\n\t\"./gateway.svg\": \"a939\",\n\t\"./geo-fence.svg\": \"bad5\",\n\t\"./heat-detector.svg\": \"02f1\",\n\t\"./immobilizer.svg\": \"5ef2\",\n\t\"./info-circle-blk.svg\": \"1cdf\",\n\t\"./info-circle.svg\": \"6668\",\n\t\"./keypad.svg\": \"60ff\",\n\t\"./loading-power.svg\": \"97f0\",\n\t\"./lock.svg\": \"9619\",\n\t\"./log-in.svg\": \"815f\",\n\t\"./log.svg\": \"8430\",\n\t\"./log_blue.svg\": \"8a6a\",\n\t\"./map-arrow.svg\": \"ef49\",\n\t\"./map-marker-distance.svg\": \"d8fc\",\n\t\"./map-marker-round-trip.svg\": \"de0a\",\n\t\"./map-marker-start.svg\": \"1938\",\n\t\"./map-marker-stop.svg\": \"ce84\",\n\t\"./map-position-dot.svg\": \"00e9\",\n\t\"./max-speed.svg\": \"5eba\",\n\t\"./mob.svg\": \"fc90\",\n\t\"./mobFlag.svg\": \"4d1a\",\n\t\"./mobO.svg\": \"e4ca\",\n\t\"./mobY.svg\": \"9d49\",\n\t\"./mute.svg\": \"11df\",\n\t\"./nmea.svg\": \"ca2d\",\n\t\"./no-signal.svg\": \"0ff6\",\n\t\"./paired.svg\": \"9048\",\n\t\"./position-tracking.svg\": \"0cda\",\n\t\"./profil.svg\": \"e5ec\",\n\t\"./reliable-b-m-s.svg\": \"878d\",\n\t\"./reset.svg\": \"c680\",\n\t\"./reset_blue.svg\": \"0a9b\",\n\t\"./responsive.svg\": \"be9c\",\n\t\"./restart.svg\": \"48ae\",\n\t\"./set-up.svg\": \"70e0\",\n\t\"./share-variant-outline-blk.svg\": \"9246\",\n\t\"./share-variant-outline.svg\": \"bb63\",\n\t\"./shore-power.svg\": \"acc5\",\n\t\"./signal.svg\": \"312b\",\n\t\"./sirene-red.svg\": \"a94c\",\n\t\"./sirene-roed.svg\": \"1b49\",\n\t\"./sirene.svg\": \"2c52\",\n\t\"./smart-plug.svg\": \"95a5\",\n\t\"./smoke.svg\": \"2348\",\n\t\"./speedometer-medium.svg\": \"b8ec\",\n\t\"./speedometer.svg\": \"71c6\",\n\t\"./switched-off.svg\": \"e7cf\",\n\t\"./switched-on.svg\": \"9fd6\",\n\t\"./timer-play-outline.svg\": \"b217\",\n\t\"./timer-stop-outline.svg\": \"12ec\",\n\t\"./timer-sync-outline.svg\": \"2ae2\",\n\t\"./timer.svg\": \"291e\",\n\t\"./timer_blue.svg\": \"f799\",\n\t\"./turn-on-off.svg\": \"348d\",\n\t\"./u-lyn-batteri-ladeniveau-forside.svg\": \"7e8a\",\n\t\"./unknown-error.svg\": \"bc22\",\n\t\"./unlock.svg\": \"d901\",\n\t\"./unresponsive.svg\": \"5487\",\n\t\"./update.svg\": \"5095\",\n\t\"./view-carousel-outline-blk.svg\": \"5868\",\n\t\"./view-carousel-outline.svg\": \"2eeb\",\n\t\"./view-sequential-blk.svg\": \"18c5\",\n\t\"./view-sequential.svg\": \"203f\",\n\t\"./warning-red.svg\": \"b792\",\n\t\"./water-bilige-sensor.svg\": \"926e\",\n\t\"./weather.svg\": \"352d\",\n\t\"./weather_old.svg\": \"d73a\",\n\t\"./zigbee.svg\": \"0e1a\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"6f32\";","module.exports = __webpack_public_path__ + \"img/set-up.88a95698.svg\";","module.exports = __webpack_public_path__ + \"img/speedometer.16df69ac.svg\";","module.exports = __webpack_public_path__ + \"img/compass.deec0e1b.svg\";","module.exports = __webpack_public_path__ + \"img/arrow-u-left-top.cf556e3a.svg\";","module.exports = __webpack_public_path__ + \"img/ios-prompt.308b7732.png\";","module.exports = __webpack_public_path__ + \"img/02n@2x.7e65840b.svg\";","module.exports = __webpack_public_path__ + \"img/digital_io.28274f4d.svg\";","module.exports = __webpack_public_path__ + \"img/door-closed.4ea99131.svg\";","module.exports = __webpack_public_path__ + \"img/gas.f4f24df7.svg\";","module.exports = __webpack_public_path__ + \"img/u-lyn-batteri-ladeniveau-forside.d3f9089c.svg\";","module.exports = __webpack_public_path__ + \"img/log-in.2a7cf5e5.svg\";","module.exports = __webpack_public_path__ + \"img/log.6d43b6c7.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogbookRecord.vue?vue&type=style&index=0&id=e946676a&prod&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/dots-vertical-circle-outline-blk.5a3b7a69.svg\";","module.exports = __webpack_public_path__ + \"img/reliable-b-m-s.9df89d14.svg\";","module.exports = __webpack_public_path__ + \"img/log_blue.7b06915c.svg\";","module.exports = __webpack_public_path__ + \"img/battery-full.986c816c.svg\";","module.exports = __webpack_public_path__ + \"img/co-carbon-m.442adc98.svg\";","module.exports = __webpack_public_path__ + \"img/paired.10d9493d.svg\";","module.exports = __webpack_public_path__ + \"img/share-variant-outline-blk.98230fae.svg\";","module.exports = __webpack_public_path__ + \"img/water-bilige-sensor.5bd3b307.svg\";","module.exports = __webpack_public_path__ + \"img/battery-groupe.fd78656e.svg\";","module.exports = __webpack_public_path__ + \"img/smart-plug.ac3a1db9.svg\";","module.exports = __webpack_public_path__ + \"img/checkmark1.0cb25723.svg\";","module.exports = __webpack_public_path__ + \"img/lock.871042f7.svg\";","export class Log {\n public static information(message: string) {\n const date = new Date();\n const value = `[${date.getFullYear()}-${date.getMonth()}-${date.getDate()}T${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}]`;\n\n console.log(`${value} ${message}`);\n }\n public static error(message: string, error: any[]) {\n const date = new Date();\n const value = `[${date.getFullYear()}-${date.getMonth()}-${date.getDate()}T${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}]`;\n\n console.error(`${value} Error:${message}`, error);\n }\n}\n","module.exports = __webpack_public_path__ + \"img/loading-power.13e7fd61.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserImageGallery.vue?vue&type=style&index=0&id=3ecba179&prod&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/mobY.9d881962.svg\";","module.exports = __webpack_public_path__ + \"img/switched-on.f2834a2f.svg\";","module.exports = __webpack_public_path__ + \"img/app-engine-kill.6afb9dec.svg\";","export interface AlarmStatus {\n fetchAt?: Date;\n Coordinator_Info?: CoordinatorInfo[];\n Alarm: string;\n lastEvent: string;\n atDevice: string;\n tempMtrs?: TempMtr[];\n pwrMtrs?: PwrMtr[];\n VSupplies: VSupply[];\n}\n\nexport interface CoordinatorInfo {\n name: string;\n a64: string;\n channel: string;\n panID: string;\n children: string;\n}\n\nexport interface VSupply {\n V1: string;\n V2: string;\n V3: string;\n I1: string;\n}\n\nexport interface PwrMtr {\n a16: string;\n pwrDlvd: string;\n}\n\nexport interface TempMtr {\n a16: string;\n tempC: string;\n}\n\nexport function mapJsonToAlarmStatus(jsonString: string): AlarmStatus {\n const json = JSON.parse(jsonString);\n // Check if 'Ci' is present and is an array before mapping.\n const Coordinator_Info = Array.isArray(json.Ci) ? json.Ci.map((ci: any) => ({\n name: ci.name,\n a64: ci.a64,\n channel: ci.channel,\n panID: ci.panID,\n children: ci.children\n })) : undefined;\n\n // Check if 'Tm' is present and is an array before mapping.\n const tempMtrs = Array.isArray(json.Tm) ? json.Tm.map((tm: any) => ({\n a16: tm.A,\n tempC: tm.Tc\n })) : undefined;\n\n // Check if 'Pm' is present and is an array before mapping.\n const pwrMtrs = Array.isArray(json.Pm) ? json.Pm.map((pm: any) => ({\n a16: pm.A,\n pwrDlvd: pm.Pd\n })) : undefined;\n\n // Check if 'Vs' is present and is an array before mapping.\n const VSupplies = Array.isArray(json.Vs) ? json.Vs.map((vs: any) => ({\n V1: vs.V1,\n V2: vs.V2,\n V3: vs.V3,\n I1: vs.I1,\n })) : [];\n\n return {\n fetchAt: new Date(),\n Coordinator_Info: Coordinator_Info,\n Alarm: json.Al,\n lastEvent: json.Le,\n atDevice: json.Ad,\n tempMtrs: tempMtrs,\n pwrMtrs: pwrMtrs,\n VSupplies: VSupplies\n };\n}\n\nexport interface ILocationFromDatabase {\n id: number;\n coreId: string;\n insertedDate: string;\n gpsTimestamp: string;\n longitude: number;\n latitude: number;\n valid: number;\n}\n\nexport interface ILocationFromParticle {\n location: Location;\n}\n\nexport interface Location {\n device_id: string;\n geometry: Geometry;\n sources: string[];\n horizontal_accuracy: number;\n product_id: number;\n last_heard: string;\n gps_lock: boolean;\n triggers: string[];\n timestamps: string[];\n properties: any[];\n device_name: string;\n groups: any[];\n online: boolean;\n}\n\nexport interface Geometry {\n type: string;\n coordinates: number[];\n}\n\n//export interface IGeoLocation {\n// longitude: string;\n// latitude: string;\n// gpsTimestamp: Date;\n//}\nexport interface IMiscInfo {\n Devices: string;\n GpsPositions: string;\n GpsLocus: string;\n Events: string;\n Orders: string;\n ResponsesAwaiting: string;\n Radius_GPS: string;\n RAM_Mem: string;\n EEPROM_Mem: string;\n Temperature: string;\n}\nexport interface IStatusChange {\n device: string;\n status: string;\n age: string;\n atPosition: AtPosition[];\n}\nexport interface ISensorAge {\n device: string;\n status: string;\n age: string;\n atPosition: AtPosition[];\n}\n\nexport interface AtPosition {\n pos: string;\n}\n","import {\n HubConnection,\n HubConnectionBuilder,\n LogLevel,\n HttpTransportType,\n IHttpConnectionOptions,\n} from \"@aspnet/signalr\";\nimport { app, alarm, enrollState, sensor } from \"@/store\";\nimport {\n AlarmStatus,\n ILocationFromParticle,\n IMiscInfo,\n IStatusChange,\n mapJsonToAlarmStatus,\n} from \"@/models/AlarmStatus\";\nimport { configureOidc } from \"@/store/services/security.service\";\nimport { Log } from \"./Logging\";\nlet connectionObj = null as HubConnection | null;\n\nexport async function configureMessageHub() {\n if (connectionObj) return Promise.resolve(connectionObj);\n const mainOidc = await configureOidc();\n const options: IHttpConnectionOptions = {\n accessTokenFactory: getAcessToken,\n skipNegotiation: true,\n transport: HttpTransportType.WebSockets,\n };\n const connection = new HubConnectionBuilder()\n .withUrl(`${mainOidc.appUrl}hubs/message`, options)\n .configureLogging(LogLevel.Debug)\n .build();\n\n connection.on(\"SendNotificationToClient\", (value) => {\n app.error = value;\n });\n connection.on(\"SetArmOrDisarmOnClient\", (value) => {\n alarm.setArmed(value);\n });\n\n connection.on(\"SetStatusOnClient\", (value: string) => {\n if (value !== \"\") {\n const status: AlarmStatus = mapJsonToAlarmStatus(value);\n const i1 = parseFloat(\n status.VSupplies && status.VSupplies[0] && status.VSupplies[0].I1\n ? status.VSupplies[0].I1\n : \"-999\"\n );\n\n alarm.SetPumpRunningState(i1 >= 0.1);\n alarm.SetCurrentSensorConnected(i1 > -50); // can even use i1 !== -200 to mirror backend\n\n status.fetchAt = new Date();\n alarm.SetStatus(status);\n }\n });\n\n connection.on(\"StartEnroll\", (value: string) => {\n if (value !== \"\") {\n enrollState.start();\n }\n });\n connection.on(\"EndEnroll\", (value: string) => {\n if (value !== \"\") {\n enrollState.end();\n }\n });\n connection.on(\"EnrollTimedOut\", (value: string) => {\n if (value !== \"\") {\n alarm.NewDeviceTimedOut();\n }\n });\n connection.on(\"DeviceAdded\", (value: string) => {\n if (value !== \"\") {\n alarm.NewDeviceAdded();\n enrollState.end();\n }\n });\n connection.on(\"UpdatePosition\", (value: string) => {\n if (value !== \"\") {\n const location: ILocationFromParticle = JSON.parse(value);\n alarm.SetCurrentLocation(location);\n }\n });\n connection.on(\"UpdateMiscInfo\", (value: string) => {\n if (value !== \"\") {\n const miscInfo: IMiscInfo = JSON.parse(value);\n alarm.SetCurentMiscInfo(miscInfo);\n }\n });\n\n const handleStatusChange = (value: string, onAlarm = false) => {\n\n if (value === \"\") {\n console.warn(\"Status value is empty, returning early.\");\n return;\n }\n\n const statusChange: IStatusChange = JSON.parse(value);\n sensor.SetSensorAge(statusChange);\n\n if (!sensor.devices || sensor.devices.length === 0) {\n console.warn(\"Status change no devices found, returning early.\");\n return;\n }\n\n const senderDevice = sensor.devices.find(\n (i) => i.attachedDeviceId === statusChange.device\n );\n\n if (onAlarm) {\n alarm.SetAlarmOrigin(senderDevice.attachedDeviceTypeId);\n alarm.SetAlarmModeTriggered(true);\n }\n\n const statusMap = {\n \"1\": { \"0020\": alarm.SetHatchState, \"0021\": alarm.SetHatchState },\n \"2\": {\n \"0000\": alarm.SetShorePowerState,\n \"0001\": alarm.SetShorePowerState,\n },\n \"3\": {\n \"0000\": alarm.SetSmartPlugState,\n \"0001\": alarm.SetSmartPlugState,\n },\n \"10\": { \"0020\": alarm.SetDoorState, \"0021\": alarm.SetDoorState },\n \"15\": {\n \"0000\": alarm.SetGasValveState,\n \"0001\": alarm.SetGasValveState,\n },\n \"16\": {\n \"0000\": alarm.SetDigitalIOState,\n \"0001\": alarm.SetDigitalIOState,\n },\n };\n\n const deviceTypeId = senderDevice.attachedDeviceTypeId.toString();\n\n if (\n statusMap[deviceTypeId] &&\n statusMap[deviceTypeId][statusChange.status]\n ) {\n const statusFunc = statusMap[deviceTypeId][statusChange.status];\n statusFunc.call(\n alarm,\n statusChange.status === \"0001\" || statusChange.status === \"0020\"\n );\n } else {\n console.warn(\n `No matching status found for device type ${deviceTypeId} and status ${statusChange.status}`\n );\n }\n };\n\n connection.on(\"UpdateStatusChange\", handleStatusChange);\n\n connection.on(\"UpdateStatusChangeOnAlarm\", (value: string) =>\n handleStatusChange(value, true)\n );\n connection.on(\"UpdateAgingDev\", handleStatusChange);\n\n connection.on(\"ShowMessage\", (msg: string) => {\n if (msg !== \"\") {\n app.success = msg;\n }\n });\n connection.on(\"ShowError\", (msg: string) => {\n if (msg !== \"\") {\n app.error = msg;\n }\n });\n connection.on(\"SetPowerStatusOnClient\", (value: string) => {\n const values = value.split(\"|\");\n sensor.SetSensorStatus({ id: values[0], value: values[1] });\n });\n\n connection.onclose(() => startConnection(connection));\n connectionObj = connection;\n await startConnection(connectionObj);\n return connectionObj;\n}\nconst getAcessToken = async (): Promise => {\n const mainOidc = await configureOidc();\n return mainOidc.accessToken;\n};\nconst startConnection = async (connection: HubConnection) => {\n if (connection) {\n const startedPromise: Promise = connection\n .start()\n .catch((err) => {\n Log.error(\"Failed to connect with hub\", err);\n return new Promise((resolve, reject) =>\n setTimeout(\n () =>\n startConnection(connection)\n .then(() => {\n //connectionObj = connection;\n resolve;\n })\n .catch(reject),\n 5000\n )\n );\n });\n return startedPromise;\n }\n};\n","module.exports = __webpack_public_path__ + \"img/02d@2x.80a5d865.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddContact.vue?vue&type=style&index=0&id=63574c8b&prod&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/batteri-ladeniveau-forside_hvid_1.62d47012.svg\";","module.exports = __webpack_public_path__ + \"img/gateway.de126bdc.svg\";","module.exports = __webpack_public_path__ + \"img/sirene-red.a96c536f.svg\";","import Axios, { AxiosResponse } from \"axios\";\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\nimport UserSettingsViewModel from \"@/models/UserSettingsViewModel\";\nexport default function () {\n const updateUserSettings = async (\n model: UserSettingsViewModel\n ): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.put(\"api/userSettings\", model)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve();\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n\n const getUserSettings = async (): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.get(`/api/userSettings`)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve(result.data);\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n return {\n updateUserSettings,\n getUserSettings,\n };\n}\n","module.exports = __webpack_public_path__ + \"img/shore-power.3b2cc662.svg\";","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=5f19867f&prod&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fill-height\":\"\"}},[_c('v-layout',[_c('v-flex',{ref:\"container\",attrs:{\"xs12\":\"\",\"align-self-center\":\"\"}},[_c('transition',{attrs:{\"type\":\"animation\",\"name\":\"slide-y-transition\"}},[_c('v-img',{attrs:{\"src\":\"/img/logo.png\",\"justify-center\":\"\"}})],1),(_vm.loading)?_c('div',{staticClass:\"mx-4\"},[_c('v-progress-linear',{attrs:{\"indeterminate\":\"\",\"color\":\"#00aa87\"}})],1):_vm._e()],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function useIOSDetection() {\n const isIos = (): boolean => {\n if (typeof window === \"undefined\" || typeof navigator === \"undefined\") return false;\n const userAgent = window.navigator.userAgent.toLowerCase();\n return /iphone|ipad|ipod/.test(userAgent);\n };\n\n const isInStandaloneMode = (): boolean =>\n \"standalone\" in window.navigator &&\n Boolean((window.navigator as any).standalone);\n\n const showInstallMessage = isIos() && !isInStandaloneMode();\n\n return {\n showInstallMessage,\n isIos,\n };\n}","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {\n defineComponent,\n onBeforeMount,\n onBeforeUnmount,\n onMounted,\n ref,\n computed,\n watch\n} from \"@vue/composition-api\";\nimport { alarm, app, sensor } from \"@/store\";\nimport { configureOidc } from \"@/store/services/security.service\";\nimport { OidcAuth } from \"vue-oidc-client/vue2\";\nimport useIOSDetection from \"@/utilities/useIOSDetection\";\nimport { configureMessageHub } from \"../plugins/messageHub\";\n\nexport default defineComponent({\n setup(_, { root }) {\n sensor.GetData();\n\n const loading = ref(true);\n const container = ref();\n const error = computed(() => app.error);\n const statusReceived = ref(false);\n\n const delay = (ms: number) => new Promise(res => setTimeout(res, ms));\n\n const waitForStatus = async (timeoutMs = 15000): Promise => {\n return await new Promise((resolve) => {\n const checkInterval = setInterval(() => {\n if (statusReceived.value) {\n clearInterval(checkInterval);\n resolve(true);\n }\n }, 300);\n\n setTimeout(() => {\n clearInterval(checkInterval);\n resolve(false);\n }, timeoutMs);\n });\n };\n\n const stopWatch = watch(() => alarm.alarmStatus, (val) => {\n if (val) {\n statusReceived.value = true;\n stopWatch(); // Stop watching after first valid status\n }\n });\n\n const logout = () => {\n configureOidc().then((oidc: OidcAuth) => {\n oidc.signOut().then(() => {\n window.location.href = \"/Identity/Account/Logout\";\n }).catch(err => console.error('OIDC configuration or sign-out failed:', err));\n });\n };\n\n onBeforeMount(() => {\n app.showFooter = false;\n });\n onBeforeUnmount(() => {\n app.showFooter = true;\n });\n\n onMounted(async () => {\n const maxRetries = 3;\n let attempt = 0;\n let success = false;\n\n try {\n await configureMessageHub();\n console.log(\"Message hub configured\");\n\n while (attempt < maxRetries && !success) {\n statusReceived.value = false;\n\n try {\n console.log(`Attempt ${attempt + 1} of ${maxRetries}`);\n await alarm.GetStatus();\n\n const received = await waitForStatus(15000);\n\n if (received) {\n success = true;\n break;\n } else {\n console.warn(\"No status received within 30 seconds.\");\n }\n } catch (e) {\n console.warn(`Status call threw error:`, e);\n }\n\n attempt++;\n if (attempt < maxRetries) {\n console.warn(\"Retrying...\");\n }\n }\n } catch (e) {\n console.error(\"Message hub setup failed:\", e);\n app.error = \"Unable to initialize system.\";\n }\n\n loading.value = false;\n\n if (!success) {\n app.error = \"Gateway is not responding. Logging out...\";\n setTimeout(() => logout(), 4000);\n setTimeout(() => { app.error = \"\"; }, 8000);\n }\n });\n\n const { showInstallMessage } = useIOSDetection();\n\n return {\n loading,\n container,\n error\n };\n }\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logo.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Logo.vue?vue&type=template&id=27c39bf4&\"\nimport script from \"./Logo.vue?vue&type=script&lang=ts&\"\nexport * from \"./Logo.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VFlex } from 'vuetify/lib/components/VGrid';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VLayout } from 'vuetify/lib/components/VGrid';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\ninstallComponents(component, {VContainer,VFlex,VImg,VLayout,VProgressLinear})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-main',{staticClass:\"waves\"})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent } from \"@vue/composition-api\";\nimport { alarm } from \"@/store\";\nexport default defineComponent({\n name: \"Logout\",\n setup(_, { root }) {\n alarm.ClearAlarmData();\n root.$router.replace({ name: \"Home\" }).catch(() => { });\n const returnToLogin = () => {\n window.location.href = 'https://dsspoc.azurewebsites.net/';\n };\n return {\n returnToLogin\n };\n }\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logout.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logout.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Logout.vue?vue&type=template&id=1a5a7dd1&\"\nimport script from \"./Logout.vue?vue&type=script&lang=ts&\"\nexport * from \"./Logout.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VMain } from 'vuetify/lib/components/VMain';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VContainer,VMain,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"text-center pt-3\",attrs:{\"cols\":\"12\"}},[_c('h3',{staticClass:\"text--white80\"}),_c('v-row',{staticClass:\"pt-3 pb-5\",attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\" px-8\",attrs:{\"cols\":\"6\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\"header text--withe70\",attrs:{\"cols\":\"12\"}},[_vm._v(\" Consumption \")]),_c('v-col',{attrs:{\"cols\":\"12\"},on:{\"click\":function (){ _vm.showGrafDialog1 = true; }}},[_c('Battery',{attrs:{\"voltage\":_vm.power1,\"loading\":_vm.statusLoading,\"warning\":_vm.voltageWarning1,\"batteryType\":_vm.getBatteryType(_vm.power1)}}),_c('VoltageGraph',{attrs:{\"id\":'Battery1',\"subtitle\":'Main battery'},model:{value:(_vm.showGrafDialog1),callback:function ($$v) {_vm.showGrafDialog1=$$v},expression:\"showGrafDialog1\"}})],1)],1)],1),_c('v-col',{staticClass:\"text-center px-8\",attrs:{\"cols\":\"6\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\"header text--withe70\",attrs:{\"cols\":\"12\"}},[_vm._v(\" Starter \")]),_c('v-col',{attrs:{\"cols\":\"12\"},on:{\"click\":function (){_vm.showGrafDialog2 = true;}}},[_c('Battery',{attrs:{\"voltage\":_vm.power2,\"loading\":_vm.statusLoading,\"warning\":_vm.voltageWarning2,\"batteryType\":_vm.getBatteryType(_vm.power2)}}),_c('VoltageGraph',{attrs:{\"id\":'Battery2',\"subtitle\":'Starter battery'},model:{value:(_vm.showGrafDialog2),callback:function ($$v) {_vm.showGrafDialog2=$$v},expression:\"showGrafDialog2\"}})],1)],1)],1)],1)],1),_c('v-col',{staticClass:\"py-5\",attrs:{\"cols\":\"12\",\"align-self\":\"stretch\"}},[_c('AlarmButton',{attrs:{\"armed\":_vm.armed}})],1),_c('v-row',{staticClass:\"pt-5\",attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"align-self\":\"end\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c('span',{staticClass:\"text--white80\"},[_vm._v(_vm._s(_vm.temperature)+\"° C\")])]),_c('v-row',{attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c('span',{staticClass:\"text--withe70 caption pb-3\"},[_vm._v(\"Cabin\")])])],1)],1)],1),_c('v-row',{attrs:{\"no-gutters\":\"\",\"justify\":\"end\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"align-self\":\"end\"}},[_c('v-row',{staticClass:\"headerRow\",attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"text--withe70 caption text-right pr-3\",attrs:{\"cols\":\"10\"}},[_vm._v(\"Status\")]),_c('v-col',{staticClass:\"text--withe70 caption text-right pr-1\",attrs:{\"cols\":\"2\"}},[_vm._v(\"Responsive\")])],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"align-self\":\"end\",\"id\":\"homeStatusList\"}},[_c('v-expansion-panels',{model:{value:(_vm.panel),callback:function ($$v) {_vm.panel=$$v},expression:\"panel\"}},[_c('ShorePowerItem',{attrs:{\"value\":_vm.shorePowerModel},on:{\"enroll\":_vm.enroll}},[_vm._v(\"Shore Power\")]),_c('SmartPlugItem',{attrs:{\"value\":_vm.smartplugModel},on:{\"enroll\":_vm.enroll}},[_vm._v(\"Smart Plug\")]),_c('DoorSensorItem',{attrs:{\"value\":_vm.doorsensorModel},on:{\"enroll\":_vm.enroll}},[_vm._v(\"Main Door Sensor\")]),_c('HatchSensorItem',{attrs:{\"value\":_vm.hatchsensorModel},on:{\"enroll\":_vm.enroll}},[_vm._v(\"Deck Hatch Sensor\")])],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"align-self\":\"end\"}},[_c('v-list',{attrs:{\"id\":\"homeList\"}},[_c('v-list-item-group',{attrs:{\"color\":\"primary\"}},[_c('v-list-item',{staticClass:\"mob\",on:{\"click\":_vm.goToMob}},[_c('v-list-item-content',[_c('v-list-item-icon',[_c('v-img',{staticClass:\"sensor-icon\",attrs:{\"max-width\":\"52px\",\"src\":require(\"@/assets/icons/mobY.svg\")}})],1),_c('v-list-item-title',[_vm._v(\"Mob - MAN OVER BOARD, PHONE LOCATION\")]),_c('v-list-item-subtitle',[_vm._v(\" (Or Just share your location with a friend) \")])],1)],1)],1)],1)],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"white70--text caption text-left\",attrs:{\"cols\":\"7\"}},[_vm._v(\" Latitude: \"+_vm._s(_vm.latitude)+\"°\"+_vm._s(_vm.latLetter)+\" | Longitude: \"+_vm._s(_vm.longitude)+\"°\"+_vm._s(_vm.lngLetter)+\" \")]),_c('v-col',{staticClass:\"white70--text caption text-right\",attrs:{\"cols\":\"5\"}},[_vm._v(\" Last heard: \"),(_vm.gpsLocationAge && _vm.gpsLocationAge !== '')?_c('span',[_vm._v(\" \"+_vm._s(_vm.gpsLocationAge)+\" \")]):_vm._e()])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Axios, { AxiosResponse } from \"axios\";\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\nimport TemperatureViewModel from \"@/models/TemperatureViewModel\";\nexport default function () {\n const get = async (): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.get(`/api/temperature`)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve(result.data);\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n return {\n get,\n };\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n import { Component, Vue } from \"vue-property-decorator\";\n import { alarm, app, sensor } from \"@/store\";\n import AttachedDeviceModel from \"@/models/AttachedDeviceModel\";\n import {\n computed,\n defineComponent,\n onMounted,\n ref\n } from \"@vue/composition-api\";\n import { ILocationFromParticle } from \"../models/AlarmStatus\";\n import 'core-js';\n import useTemperature from \"@/store/useTemperature\";\n import TemperatureViewModel from \"@/models/TemperatureViewModel\";\nimport { VPagination } from \"vuetify/lib/components\";\n\n export default defineComponent({\n name: \"Home\",\n components: {\n Battery: () =>\n import(/* webpackChunkName: \"components\" */ \"./components/BatteryView.vue\"),\n AlarmButton: () =>\n import(\n /* webpackChunkName: \"components\" */ \"./components/ArmDisarmButton.vue\"\n ),\n SensorItem: () =>\n import(\n /* webpackChunkName: \"components\" */ \"./components/Sensors/DefaultSensorListItem.vue\"\n ),\n ShorePowerItem: () =>\n import(\n /* webpackChunkName: \"components\" */ \"./components/Sensors/ShorePowerListItem.vue\"\n ),\n SmartPlugItem: () =>\n import(\n /* webpackChunkName: \"components\" */ \"./components/Sensors/SmartPlugListItem.vue\"\n ),\n DoorSensorItem: () =>\n import(\n /* webpackChunkName: \"components\" */ \"./components/Sensors/DoorSensorListItem.vue\"\n ),\n HatchSensorItem: () =>\n import(\n /* webpackChunkName: \"components\" */ \"./components/Sensors/HatchSensorListItem.vue\"\n ),\n VoltageGraph: () =>\n import(\n /* webpackChunkName: \"components\" */ \"./components/Dialogs/VoltageDialog.vue\"\n )\n },\n setup(_, { root }) {\n const showGrafDialog1 = ref(false);\n const showGrafDialog2 = ref(false);\n const connectSensor = ref();\n const gpsLocationAge = ref(\"\");\n let lastGpsTime: Date | null = null;\n let lastHeardIntervalId: any | null = null;\n const { get } = useTemperature();\n const smallVoltageLimit = 0.5;\n const lowVoltageLimit12V = 11.8;\n const highVoltageLimit12V = 14.8;\n const lowVoltageLimit24V = 23.6;\n const highVoltageLimit24V = 29.5;\n const chargingThreshold = 16; // Anything above this might be 24V battery\n\n const accuracy = computed(() => { return alarm.gpsRadius; });\n\n const armed = computed(() => { return alarm.armed; });\n\n function detectBatteryType(voltage: number): \"12V\" | \"24V\" {\n return voltage < chargingThreshold ? \"12V\" : \"24V\";\n }\n\n function getBatteryType(voltage: number): string {\n if (voltage === -1) return \"Unknown\";\n return detectBatteryType(voltage);\n }\n\n function isVoltageWarning(voltage: number): boolean {\n if (voltage === -1) return false;\n const type = detectBatteryType(voltage);\n\n return type === \"12V\"\n ? voltage < lowVoltageLimit12V || voltage > highVoltageLimit12V\n : voltage < lowVoltageLimit24V || voltage > highVoltageLimit24V;\n }\n\n function getVoltage(value: string | undefined): number {\n if (value === \"NotPresent\") return -1;\n const parsed = parseFloat(value !== undefined && value !== null ? value : \"-1\");\n return parsed < smallVoltageLimit ? -1 : parsed;\n }\n\n const power1 = computed(() => {\n return alarm.alarmStatus &&\n alarm.alarmStatus.VSupplies &&\n alarm.alarmStatus.VSupplies[0] &&\n getVoltage(alarm.alarmStatus.VSupplies[0].V1);\n });\n\n const power2 = computed(() => {\n return alarm.alarmStatus &&\n alarm.alarmStatus.VSupplies &&\n alarm.alarmStatus.VSupplies[0] &&\n getVoltage(alarm.alarmStatus.VSupplies[0].V2);\n });\n\n const voltageWarning1 = computed(() => isVoltageWarning(power1.value));\n const voltageWarning2 = computed(() => isVoltageWarning(power2.value));\n\n const hatchsensorModel = computed(() => {\n return getItem(1);\n });\n const shorePowerModel = computed(() => {\n return getItem(2);\n });\n const smartplugModel = computed(() => {\n return getItem(3);\n });\n const doorsensorModel = computed(() => {\n return getItem(10);\n });\n const temperatureModel = ref(null);\n get().then((model: TemperatureViewModel) => {\n temperatureModel.value = model;\n });\n\n const getItem = (type: number): AttachedDeviceModel => {\n let model: AttachedDeviceModel = new AttachedDeviceModel();\n if (Array.isArray(sensor.devices) && sensor.devices.length > 0) {\n const foundModel = sensor.devices.find((value: AttachedDeviceModel) => {\n return value.attachedDeviceTypeId === type;\n });\n if (foundModel != null) {\n return foundModel;\n }\n }\n model.attachedDeviceTypeId = type;\n return model;\n };\n\n const doorPaired = computed(() => {\n const model = doorsensorModel.value;\n return model.attachedDeviceId != null && model.attachedDeviceId !== \"\";\n });\n\n const hatchPaired = computed(() => {\n const model = hatchsensorModel.value;\n return model.attachedDeviceId != null && model.attachedDeviceId !== \"\";\n });\n\n const doorResponsive = computed(() => {\n return doorPaired.value && doorsensorModel.value.age <= 1;\n });\n\n const hatchResponsive = computed(() => {\n return hatchPaired.value && hatchsensorModel.value.age <= 1;\n });\n\n\n const latitude = computed(() => {\n return alarm.lat ? alarm.lat.toString() : \"-.--\";\n });\n\n const longitude = computed(() => {\n return alarm.lng ? alarm.lng.toString() : \"-.--\";\n });\n\n const latLetter = computed(() => parseFloat(latitude.value) >= 0 ? \"N\" : \"S\");\n\n const lngLetter = computed(() => parseFloat(longitude.value) >= 0 ? \"E\" : \"W\");\n\n //const temperature = computed(() => {\n // const tempInHex = alarm.alarmStatus.tempMtrs[0] ? alarm.alarmStatus.tempMtrs[0].tempC : \"\";\n // return tempInHex ? \"--.-\" : (parseInt(tempInHex, 16) / 100).toFixed(1);\n //});\n\n const statusLoading = computed(() => { return alarm.syncStatus; });\n\n const enroll = (model: AttachedDeviceModel) => { connectSensor.value = model; };\n\n const goToMob = () => {\n if (alarm.userLocReady) {\n root.$router.push({ name: \"mob\" });\n } else {\n root.$router.push({ name: \"geo-permission\", params: { destination: \"mob\" } });\n }\n };\n\n const generateTimeString = (days, hours, minutes, seconds) => {\n let timestring = \"\";\n\n if (days > 0) {\n timestring += `${days}d `;\n }\n\n if (hours > 0 || timestring !== \"\") {\n timestring += `${hours}h `;\n }\n\n if (minutes > 0 || timestring !== \"\") {\n timestring += `${minutes}m `;\n }\n\n timestring += `${seconds}s`;\n\n return timestring.trim();\n };\n\n const initTimer = (gps: ILocationFromParticle | null): void => {\n if (gps && gps.location && gps.location.last_heard) {\n const lastHeard = new Date(Date.parse(gps.location.last_heard));\n const utcTime = new Date(lastHeard.getTime() - lastHeard.getTimezoneOffset() * 60 * 1000);\n\n // Clear any existing interval timer if lastGpsTime has changed\n if (lastGpsTime && lastGpsTime !== lastHeard) {\n clearInterval(lastHeardIntervalId);\n lastHeardIntervalId = null;\n }\n\n // Update the count down every 1 second\n if (!lastHeardIntervalId) {\n lastHeardIntervalId = setInterval(() => {\n // Get today's date and time\n const now = new Date();\n\n // Find the distance between now and the count down date\n const distance = now.getTime() - utcTime.getTime();\n\n // Time calculations for days, hours, minutes and seconds\n const days = Math.floor(distance / (1000 * 60 * 60 * 24));\n const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));\n const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));\n const seconds = Math.floor((distance % (1000 * 60)) / 1000);\n\n const timestring = generateTimeString(days, hours, minutes, seconds);\n\n gpsLocationAge.value = timestring;\n }, 1000);\n }\n\n // Update lastGpsTime\n lastGpsTime = lastHeard;\n } else {\n gpsLocationAge.value = \"---\";\n clearInterval(lastHeardIntervalId);\n lastHeardIntervalId = null;\n lastGpsTime = null;\n }\n };\n\n const panel = computed(() => {\n if (app.getHomePanelOpen) {\n console.log(\"app.getHomePanelIndex\", app.getHomePanelIndex);\n return app.getHomePanelIndex;\n } else {\n console.log(\"app.getHomePanelIndex\", -1);\n return -1;\n }\n });\n\n const temperature = computed(() => {\n const model = temperatureModel.value;\n if (\n model &&\n model.cabinTemperature !== -273 &&\n (doorResponsive.value || hatchResponsive.value)\n ) {\n return model.cabinTemperature.toFixed(1);\n }\n return \"-.--\";\n });\n\n onMounted(() => {\n alarm.getGeoLocation();\n alarm.SetDoorState(!doorsensorModel.value.alarm1);\n alarm.SetHatchState(!hatchsensorModel.value.alarm1);\n alarm.SetShorePowerState(shorePowerModel.value.alarm1);\n alarm.SetSmartPlugState(smartplugModel.value.alarm1);\n alarm.$watch(module => module.lastKnownLocation, initTimer);\n });\n\n return {\n armed,\n power1,\n power2,\n shorePowerModel,\n smartplugModel,\n doorsensorModel,\n hatchsensorModel,\n latitude,\n longitude,\n statusLoading,\n showGrafDialog1,\n showGrafDialog2,\n connectSensor,\n gpsLocationAge,\n enroll,\n temperature,\n accuracy,\n latLetter,\n lngLetter,\n voltageWarning1,\n voltageWarning2,\n goToMob,\n getBatteryType,\n panel\n };\n }\n });\n\n @Component({})\n class Home extends Vue {\n public showGrafDialog1: boolean = false;\n public showGrafDialog2: boolean = false;\n public connectSensor: AttachedDeviceModel | null = null;\n }\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=babbe03e&\"\nimport script from \"./Home.vue?vue&type=script&lang=ts&\"\nexport * from \"./Home.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VExpansionPanels } from 'vuetify/lib/components/VExpansionPanel';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCol,VContainer,VExpansionPanels,VImg,VList,VListItem,VListItemContent,VListItemGroup,VListItemIcon,VListItemSubtitle,VListItemTitle,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.profile && _vm.contact)?_c('v-card',[_c('v-card-title',{staticClass:\"text--white80 pa-0 pt-8\"},[_c('v-btn',{staticClass:\"text--white80 px-6\",attrs:{\"icon\":\"\"},on:{\"click\":_vm.goBack}},[_c('v-icon',{staticClass:\"text--white80\",attrs:{\"large\":\"\",\"left\":\"\"}},[_vm._v(\"mdi-arrow-u-left-top\")])],1),_c('span',{staticClass:\"title font-weight-light\"},[_vm._v(\"Account information\")])],1),_c('v-form',{ref:\"profileForm\",staticClass:\"col-12 backgroundWhite35 px-4 pt-4 pb-0\",attrs:{\"lazy-validation\":\"\"},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{staticClass:\"text-input-white\",attrs:{\"color\":\"white\",\"readonly\":\"\",\"label\":\"User identifier\"},model:{value:(_vm.profile.userId),callback:function ($$v) {_vm.$set(_vm.profile, \"userId\", $$v)},expression:\"profile.userId\"}}),_c('v-text-field',{staticClass:\"text-input-white\",attrs:{\"counter\":30,\"readonly\":!_vm.profile.isCaptain,\"rules\":_vm.nameRules,\"label\":\"Captain's name\",\"color\":\"white\",\"required\":\"\"},model:{value:(_vm.contact.name),callback:function ($$v) {_vm.$set(_vm.contact, \"name\", $$v)},expression:\"contact.name\"}}),_c('v-text-field',{staticClass:\"text-input-white\",attrs:{\"counter\":30,\"readonly\":!_vm.profile.isCaptain,\"label\":\"Boat name\",\"color\":\"white\",\"required\":\"\"},model:{value:(_vm.profile.shipName),callback:function ($$v) {_vm.$set(_vm.profile, \"shipName\", $$v)},expression:\"profile.shipName\"}}),_c('v-text-field',{staticClass:\"text-input-white\",attrs:{\"label\":\"Home location\",\"readonly\":!_vm.profile.isCaptain,\"color\":\"white\",\"required\":\"\"},model:{value:(_vm.profile.shipHomeLocation),callback:function ($$v) {_vm.$set(_vm.profile, \"shipHomeLocation\", $$v)},expression:\"profile.shipHomeLocation\"}}),_c('v-text-field',{staticClass:\"text-input-white\",attrs:{\"readonly\":\"\",\"color\":\"white\",\"label\":\"Device identifier\"},model:{value:(_vm.profile.deviceId),callback:function ($$v) {_vm.$set(_vm.profile, \"deviceId\", $$v)},expression:\"profile.deviceId\"}}),_c('v-container',{class:{'disabled-container': !_vm.profile.isCaptain},attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"d-flex flex-column\"},[_c('div',[_c('div',{staticClass:\"text-matching-input-label\"},[_vm._v(\" Captain's phone number \")]),_c('vue-tel-input',_vm._b({attrs:{\"disabled\":!_vm.profile.isCaptain},on:{\"validate\":_vm.phoneObject},model:{value:(_vm.contact.phoneNumber),callback:function ($$v) {_vm.$set(_vm.contact, \"phoneNumber\", $$v)},expression:\"contact.phoneNumber\"}},'vue-tel-input',_vm.vueTel.props,false)),_c('v-divider')],1)])])],1)],1),(_vm.profile.isCaptain)?_c('v-row',{staticClass:\"justify-center\"},[_c('span',{staticClass:\"white--text font-weight-bold pa-4\"},[_vm._v(\"Captain Tools\")]),_c('v-expansion-panels',[_c('v-expansion-panel',[_c('v-expansion-panel-header',{attrs:{\"expand-icon\":\"mdi-email\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar open = ref.open;\nreturn [_vm._v(\" E-mail Notifications \"),(open)?_c('span',{key:\"0\",staticClass:\"ml-auto header-helper-text pr-2 text-right\"},[_vm._v(\"(click to close)\")]):_c('span',{key:\"1\",staticClass:\"ml-auto header-helper-text pr-2 text-right\"},[_vm._v(\"(click to expand)\")])]}}],null,false,1589295354)}),_c('v-expansion-panel-content',[_c('v-row',{staticClass:\"align-start\",attrs:{\"justify\":\"space-between\"}},[_c('v-flex',{attrs:{\"xs6\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"caption\",staticStyle:{\"font-style\":\"italic\"}},[_vm._v(\"The following notifications will be sent in 'Armed' state.\")]),_c('v-checkbox',{staticClass:\"py-0 my-0 pt-4\",attrs:{\"label\":\"Shore Power\",\"prepend-icon\":\"mdi-meter-electric\"},model:{value:(_vm.contact.shorePowerEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"shorePowerEmailActive\", $$v)},expression:\"contact.shorePowerEmailActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Smart Plug\",\"prepend-icon\":\"mdi-power-plug\"},model:{value:(_vm.contact.smartplugEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"smartplugEmailActive\", $$v)},expression:\"contact.smartplugEmailActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Main Door\",\"prepend-icon\":\"mdi-door\"},model:{value:(_vm.contact.mainDoorEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"mainDoorEmailActive\", $$v)},expression:\"contact.mainDoorEmailActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Hatch Door\",\"prepend-icon\":\"mdi-door\"},model:{value:(_vm.contact.hatchEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"hatchEmailActive\", $$v)},expression:\"contact.hatchEmailActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Geofence\",\"prepend-icon\":\"mdi-map-marker-radius\"},model:{value:(_vm.contact.geofenceEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"geofenceEmailActive\", $$v)},expression:\"contact.geofenceEmailActive\"}})],1)],1),_c('v-divider',{staticStyle:{\"margin-top\":\"15px\",\"margin-bottom\":\"30px\"},attrs:{\"vertical\":\"\",\"inset\":\"\"}}),_c('v-flex',{attrs:{\"xs6\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"caption\",staticStyle:{\"font-style\":\"italic\"}},[_vm._v(\"The following notifications will be sent in any state.\")]),_c('v-checkbox',{staticClass:\"py-0 my-0 pt-4\",attrs:{\"label\":\"GTW Power Loss\",\"prepend-icon\":\"mdi-power-plug-off\"},model:{value:(_vm.contact.gatewayTamperedEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"gatewayTamperedEmailActive\", $$v)},expression:\"contact.gatewayTamperedEmailActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"GTW Tampered\",\"prepend-icon\":\"mdi-domino-mask\"},model:{value:(_vm.contact.gatewayPowerlossEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"gatewayPowerlossEmailActive\", $$v)},expression:\"contact.gatewayPowerlossEmailActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Detectors\",\"prepend-icon\":\"mdi-security\"},model:{value:(_vm.contact.detectorsEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"detectorsEmailActive\", $$v)},expression:\"contact.detectorsEmailActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Low Voltage\",\"prepend-icon\":\"mdi-sail-boat\"},model:{value:(_vm.contact.voltageLowEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"voltageLowEmailActive\", $$v)},expression:\"contact.voltageLowEmailActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Low Battery\",\"prepend-icon\":\"mdi-access-point\"},model:{value:(_vm.contact.lowBatterySensorEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"lowBatterySensorEmailActive\", $$v)},expression:\"contact.lowBatterySensorEmailActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"GSM Connection Lost\",\"prepend-icon\":\"mdi-signal-off\"},model:{value:(_vm.contact.gsmConnectionLostEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"gsmConnectionLostEmailActive\", $$v)},expression:\"contact.gsmConnectionLostEmailActive\"}})],1)],1)],1)],1)],1),_c('v-expansion-panel',[_c('v-expansion-panel-header',{attrs:{\"expand-icon\":\"mdi-message-text\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar open = ref.open;\nreturn [_vm._v(\" SMS Notifications \"),(open)?_c('span',{key:\"0\",staticClass:\"ml-auto header-helper-text pr-2 text-right\"},[_vm._v(\"(click to close)\")]):_c('span',{key:\"1\",staticClass:\"ml-auto header-helper-text pr-2 text-right\"},[_vm._v(\"(click to expand)\")])]}}],null,false,2028519478)}),_c('v-expansion-panel-content',[_c('v-row',{staticClass:\"align-start\",attrs:{\"justify\":\"space-between\"}},[_c('v-flex',{attrs:{\"xs6\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"caption\",staticStyle:{\"font-style\":\"italic\"}},[_vm._v(\"The following notifications will be sent in 'Armed' state.\")]),_c('v-checkbox',{staticClass:\"py-0 my-0 pt-4\",attrs:{\"label\":\"Shore Power\",\"prepend-icon\":\"mdi-meter-electric\"},model:{value:(_vm.contact.shorePowerSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"shorePowerSMSActive\", $$v)},expression:\"contact.shorePowerSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Smart Plug\",\"prepend-icon\":\"mdi-power-plug\"},model:{value:(_vm.contact.smartPlugSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"smartPlugSMSActive\", $$v)},expression:\"contact.smartPlugSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Main Door\",\"prepend-icon\":\"mdi-door\"},model:{value:(_vm.contact.mainDoorSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"mainDoorSMSActive\", $$v)},expression:\"contact.mainDoorSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Hatch Door\",\"prepend-icon\":\"mdi-calendar-minus\"},model:{value:(_vm.contact.hatchSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"hatchSMSActive\", $$v)},expression:\"contact.hatchSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Geofence\",\"prepend-icon\":\"mdi-map-marker-radius\"},model:{value:(_vm.contact.geofenceSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"geofenceSMSActive\", $$v)},expression:\"contact.geofenceSMSActive\"}})],1)],1),_c('v-divider',{staticStyle:{\"margin-top\":\"15px\",\"margin-bottom\":\"30px\"},attrs:{\"vertical\":\"\",\"inset\":\"\"}}),_c('v-flex',{attrs:{\"xs6\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"caption\",staticStyle:{\"font-style\":\"italic\"}},[_vm._v(\"The following notifications will be sent in any state.\")]),_c('v-checkbox',{staticClass:\"py-0 my-0 pt-4\",attrs:{\"label\":\"GTW Power Loss\",\"prepend-icon\":\"mdi-power-plug-off\"},model:{value:(_vm.contact.gatewayTamperedSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"gatewayTamperedSMSActive\", $$v)},expression:\"contact.gatewayTamperedSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"GTW Tampered\",\"prepend-icon\":\"mdi-domino-mask\"},model:{value:(_vm.contact.gatewayPowerlossSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"gatewayPowerlossSMSActive\", $$v)},expression:\"contact.gatewayPowerlossSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Detectors\",\"prepend-icon\":\"mdi-security\"},model:{value:(_vm.contact.detectorsSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"detectorsSMSActive\", $$v)},expression:\"contact.detectorsSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Low Voltage\",\"prepend-icon\":\"mdi-sail-boat\"},model:{value:(_vm.contact.voltageLowSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"voltageLowSMSActive\", $$v)},expression:\"contact.voltageLowSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Low Battery\",\"prepend-icon\":\"mdi-access-point\"},model:{value:(_vm.contact.lowBatterySensorSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"lowBatterySensorSMSActive\", $$v)},expression:\"contact.lowBatterySensorSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"GSM Connection Lost\",\"prepend-icon\":\"mdi-signal-off\"},model:{value:(_vm.contact.gsmConnectionLostSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"gsmConnectionLostSMSActive\", $$v)},expression:\"contact.gsmConnectionLostSMSActive\"}})],1)],1)],1)],1)],1),_c('v-expansion-panel',[_c('v-expansion-panel-header',{attrs:{\"expand-icon\":\"mdi-tune\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar open = ref.open;\nreturn [_vm._v(\" Interface customization \"),(open)?_c('span',{key:\"0\",staticClass:\"ml-auto header-helper-text pr-2 text-right\"},[_vm._v(\"(click to close)\")]):_c('span',{key:\"1\",staticClass:\"ml-auto header-helper-text pr-2 text-right\"},[_vm._v(\"(click to expand)\")])]}}],null,false,3675339325)}),_c('v-expansion-panel-content',[_c('v-combobox',{attrs:{\"items\":_vm.timezones,\"label\":\"Timezone\",\"outlined\":\"\"},on:{\"change\":_vm.updateTimezone},model:{value:(_vm.selectedTimezone),callback:function ($$v) {_vm.selectedTimezone=$$v},expression:\"selectedTimezone\"}})],1)],1),_c('v-expansion-panel',[_c('v-expansion-panel-header',{attrs:{\"expand-icon\":\"mdi-account-group\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar open = ref.open;\nreturn [_vm._v(\" Connected Accounts \"),(open)?_c('span',{key:\"0\",staticClass:\"ml-auto header-helper-text pr-2 text-right\"},[_vm._v(\"(click to close)\")]):_c('span',{key:\"1\",staticClass:\"ml-auto header-helper-text pr-2 text-right\"},[_vm._v(\"(click to expand)\")])]}}],null,false,2963261192)}),_c('v-expansion-panel-content',[_c('v-card',{staticClass:\"mx-auto pb-0\",attrs:{\"tile\":\"\"}},[_c('v-list',{attrs:{\"two-line\":\"\"}},[_c('div',{staticClass:\"d-flex\",staticStyle:{\"justify-content\":\"space-between\"}},[_c('div',{staticClass:\"text-left black--text font-weight-regular header-text-size pl-4\",staticStyle:{\"width\":\"auto\"}},[_vm._v(\" User Account \")]),_c('div',{staticClass:\"text-center black--text font-weight-regular header-text-size px-4\",staticStyle:{\"width\":\"210px\",\"text-align\":\"right\"}},[_vm._v(\" Options \")])]),_vm._l((_vm.connectedAccount),function(item,index){return [_c('v-list-item',{key:index},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.userId))]),(item.isApproved)?_c('v-list-item-subtitle',{staticClass:\"green--text\"},[_c('v-icon',{staticClass:\"green--text\",attrs:{\"small\":\"\"}},[_vm._v(\"mdi-shield-check \")]),_vm._v(\" User has access! \")],1):_c('v-list-item-subtitle',{staticClass:\"red--text\"},[_c('v-icon',{staticClass:\"red--text\",attrs:{\"small\":\"\"}},[_vm._v(\"mdi-lock\")]),_vm._v(\" User is locked out! \")],1)],1),_c('v-list-item-action',{staticClass:\"ml-2 mr-3\"},[_c('v-list-item-action-text',[_vm._v(\"Gallery\")]),_c('v-switch',{attrs:{\"color\":item.hasGalleryAccess ? 'success' : 'error'},on:{\"change\":function($event){return _vm.changeGalleryAccess(item)}},model:{value:(item.hasGalleryAccess),callback:function ($$v) {_vm.$set(item, \"hasGalleryAccess\", $$v)},expression:\"item.hasGalleryAccess\"}})],1),_c('v-list-item-action',{staticClass:\"ml-2 mr-3\"},[_c('v-list-item-action-text',[_vm._v(\"Upload\")]),_c('v-switch',{attrs:{\"color\":item.hasUploadAccess ? 'success' : 'error'},on:{\"change\":function($event){return _vm.changeUploadAccess(item)}},model:{value:(item.hasUploadAccess),callback:function ($$v) {_vm.$set(item, \"hasUploadAccess\", $$v)},expression:\"item.hasUploadAccess\"}})],1),(!item.isApproved)?_c('v-list-item-action',{staticClass:\"mx-2\"},[_c('v-list-item-action-text',{staticClass:\"pr-1\"},[_vm._v(\"Allow\")]),_c('v-icon',{attrs:{\"color\":\"success\",\"icon\":\"\",\"large\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.authorizeAccount(item)}}},[_vm._v(\" mdi-shield-check \")])],1):_vm._e(),(item.isApproved)?_c('v-list-item-action',{staticClass:\"mx-2\"},[_c('v-list-item-action-text',{staticClass:\"pr-1\"},[_vm._v(\"Lock\")]),_c('v-icon',{attrs:{\"color\":\"error\",\"icon\":\"\",\"large\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.deauthorizeConnectedAccount(item)}}},[_vm._v(\" mdi-lock \")])],1):_vm._e(),_c('v-list-item-action',{staticClass:\"mx-2\"},[_c('v-list-item-action-text',[_vm._v(\"Delete\")]),_c('v-icon',{attrs:{\"color\":\"error\",\"icon\":\"\",\"large\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.deleteConnectedAccount(item)}}},[_vm._v(\" mdi-delete \")])],1)],1)]})],2)],1)],1)],1),_c('v-expansion-panel',[_c('v-expansion-panel-header',{attrs:{\"expand-icon\":\"mdi-database\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar open = ref.open;\nreturn [_vm._v(\" Consumption \"),(open)?_c('span',{key:\"0\",staticClass:\"ml-auto header-helper-text pr-2 text-right\"},[_vm._v(\"(click to close)\")]):_c('span',{key:\"1\",staticClass:\"ml-auto header-helper-text pr-2 text-right\"},[_vm._v(\"(click to expand)\")])]}}],null,false,768117888)}),_c('v-expansion-panel-content',[_c('v-card',{staticClass:\"mx-auto pb-0\",attrs:{\"tile\":\"\"}},[_c('v-card-subtitle',{staticClass:\"pb-0\"},[_c('v-row',[_c('v-col',{staticClass:\"pb-0 pt-1\",attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"text-left black--text font-weight-regular header-text-size\"},[_vm._v(\"Consumption period: \"+_vm._s(_vm.formattedBillingStart)+\" - \"+_vm._s(_vm.formattedBillingEnd))])])],1)],1),_c('v-list-item',{attrs:{\"two-line\":\"\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" Data \")]),_c('v-list-item-subtitle',[_c('v-progress-linear',{attrs:{\"value\":_vm.dataUsage,\"color\":_vm.dataUsage > 80 ? 'error' : 'blue-grey',\"height\":\"25\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar value = ref.value;\nreturn [_c('strong',[_vm._v(_vm._s(_vm.profile.mBsUsed)+\" MB / \"+_vm._s(_vm.profile.dataLimit)+\" MB (\"+_vm._s(value)+\"%)\")])]}}],null,false,2213457131)})],1)],1)],1),_c('v-list-item',{attrs:{\"two-line\":\"\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" Transactions \")]),_c('v-list-item-subtitle',[_c('v-progress-linear',{attrs:{\"value\":_vm.transactionUsage,\"color\":_vm.transactionUsage > 80 ? 'error' : 'blue-grey',\"height\":\"25\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar value = ref.value;\nreturn [_c('strong',[_vm._v(_vm._s(_vm.profile.transactionsUsed)+\" / \"+_vm._s(_vm.profile.transactionsLimit)+\" (\"+_vm._s(value)+\"%)\")])]}}],null,false,3520376551)})],1)],1)],1)],1)],1)],1),_c('v-expansion-panel',[_c('v-expansion-panel-header',{attrs:{\"expand-icon\":\"mdi-currency-eur\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar open = ref.open;\nreturn [_vm._v(\" Subscription \"),(open)?_c('span',{key:\"0\",staticClass:\"ml-auto header-helper-text pr-2 text-right\"},[_vm._v(\"(click to close)\")]):_c('span',{key:\"1\",staticClass:\"ml-auto header-helper-text pr-2 text-right\"},[_vm._v(\"(click to expand)\")])]}}],null,false,2143486406)}),_c('v-expansion-panel-content',[_c('v-card',{staticClass:\"mx-auto pb-0\",attrs:{\"tile\":\"\"}},[_c('v-card-subtitle',{staticClass:\"pb-0\"},[_c('v-row',[_c('v-col',{staticClass:\"pb-0 pt-1\",attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"text-left black--text font-weight-regular header-text-size\"},[_vm._v(\"Subscription period: \"+_vm._s(_vm.formattedSubscriptionStart)+\" - \"+_vm._s(_vm.formattedSubscriptionEnd))])])],1)],1),_c('v-list-item',{attrs:{\"two-line\":\"\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" You are subscribed since \")]),_c('v-list-item-subtitle',[_vm._v(\" \"+_vm._s(_vm.formattedSubscribedSinceDate)+\" \")])],1)],1),_c('v-list-item',{attrs:{\"two-line\":\"\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" Your plan will renew on \")]),_c('v-list-item-subtitle',[_vm._v(\" \"+_vm._s(_vm.formattedRenewalDate)+\" \")])],1)],1),_c('v-list-item',{attrs:{\"two-line\":\"\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" Subscription interval \")]),_c('v-list-item-subtitle',[_vm._v(\" \"+_vm._s(_vm.billingInterval)+\" \")])],1)],1),_c('v-list-item',[_c('v-list-item-content',[_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.manageSubscription}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" mdi-cog-sync-outline \")]),_vm._v(\" SUBSCRIPTION MANAGEMENT \")],1)],1)],1)],1)],1)],1)],1)],1):_vm._e(),_c('v-row',[_c('v-col',{staticClass:\"text-left pr-0\",attrs:{\"cols\":\"4\"}},[_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":_vm.logout}},[_vm._v(\" LOGOUT \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-logout \")])],1)],1),_c('v-col',{staticClass:\"text-center px-0\",attrs:{\"col\":\"4\"}},[_c('v-btn',{on:{\"click\":_vm.manageAcc}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" mdi-account-cog-outline \")]),_vm._v(\" MANAGE \")],1)],1),_c('v-col',{staticClass:\"text-right pl-0\",attrs:{\"cols\":\"4\"}},[_c('v-btn',{staticClass:\"px-7\",attrs:{\"disabled\":!_vm.valid || !_vm.isValid,\"color\":\"success\"},on:{\"click\":_vm.initSave}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" mdi-check \")]),_vm._v(\" SAVE \")],1)],1)],1)],1),_c('ConfirmDialog',{attrs:{\"title\":\"Delete connected account\",\"message\":\"Do you want to delete the connected account ?\"},on:{\"OnOk\":_vm.removeOk},model:{value:(_vm.showRemove),callback:function ($$v) {_vm.showRemove=$$v},expression:\"showRemove\"}}),_c('ConfirmDialog',{attrs:{\"title\":\"Lock out connected account\",\"message\":\"Do you want to lock out the connected account ?\"},on:{\"OnOk\":_vm.lockoutOk},model:{value:(_vm.showLockout),callback:function ($$v) {_vm.showLockout=$$v},expression:\"showLockout\"}}),_c('ConfirmDialog',{attrs:{\"title\":\"Authorize connected account\",\"message\":\"Do you want to authorize the connected account ?\"},on:{\"OnOk\":_vm.authorizeOk},model:{value:(_vm.showAuthorize),callback:function ($$v) {_vm.showAuthorize=$$v},expression:\"showAuthorize\"}}),_c('ConfirmDialog',{attrs:{\"options\":{ noconfirm: true },\"title\":\"Success\",\"message\":\"Changes saved successfully.\"},on:{\"OnOk\":_vm.successOk},model:{value:(_vm.showSuccess),callback:function ($$v) {_vm.showSuccess=$$v},expression:\"showSuccess\"}}),_c('v-row',{attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c('v-col',{staticClass:\"text--white80 text-right info-location pr-4\",attrs:{\"cols\":\"12\"}},[_vm._v(\" App version: 0.1.3 alpha \")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default class ContactViewModel {\n public id: number;\n public coreID: string;\n public sortOrder: number;\n public name: string;\n public phoneNumber: string;\n public email: string;\n public active: boolean;\n public modifiedDate: Date;\n public insertedDate: Date;\n public detectorsEmailActive: boolean;\n public shorePowerEmailActive: boolean;\n public smartplugEmailActive: boolean;\n public mainDoorEmailActive: boolean;\n public hatchEmailActive: boolean;\n public voltageLowEmailActive: boolean;\n public geofenceEmailActive: boolean;\n public lowBatterySensorEmailActive: boolean;\n public gatewayTamperedEmailActive: boolean;\n public gatewayPowerlossEmailActive: boolean;\n public gsmConnectionLostEmailActive: boolean;\n public detectorsSMSActive: boolean;\n public shorePowerSMSActive: boolean;\n public smartPlugSMSActive: boolean;\n public mainDoorSMSActive: boolean;\n public hatchSMSActive: boolean;\n public voltageLowSMSActive: boolean;\n public geofenceSMSActive: boolean;\n public lowBatterySensorSMSActive: boolean;\n public gatewayTamperedSMSActive: boolean;\n public gatewayPowerlossSMSActive: boolean;\n public gsmConnectionLostSMSActive: boolean;\n}\n","import Axios, { AxiosResponse } from \"axios\";\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\nimport { ref } from \"@vue/composition-api\";\nimport ConnectedAccountViewModel from \"../models/ConnectedAccountViewModel\";\nexport default function () {\n const connectedAccount = ref>([]);\n\n const get = async () => {\n await defineHeaderAxios();\n Axios.get(\"/api/connectedAccount\")\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n connectedAccount.value = result.data;\n }\n })\n .catch((error) => {\n console.log(error);\n });\n };\n const approve = async (id: string): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.put(`/api/connectedAccount/approve/${id}`, id)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve();\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n const allowGallery = async (id: string): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.put(`/api/connectedAccount/allowGallery/${id}`, id)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve();\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n const denyGallery = async (id: string): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.put(`/api/connectedAccount/denyGallery/${id}`, id)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve();\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n const allowUpload = async (id: string): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.put(`/api/connectedAccount/allowUpload/${id}`, id)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve();\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n const denyUpload = async (id: string): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.put(`/api/connectedAccount/denyUpload/${id}`, id)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve();\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n const lockout = async (id: string): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.put(`/api/connectedAccount/lockout/${id}`, id)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve();\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n const remove = async (id: string): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.delete(`/api/connectedAccount/remove/${id}`)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve();\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n get();\n return {\n connectedAccount,\n remove,\n get,\n approve,\n lockout,\n allowGallery,\n denyGallery,\n allowUpload,\n denyUpload\n };\n}\n","import Axios, { AxiosResponse } from \"axios\";\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\nimport SubscriptionViewModel from \"@/models/SubscriptionViewModel\";\nexport default function () {\n const getSubscription = async (): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.get(`/api/subscription`)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve(result.data);\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n return {\n getSubscription,\n };\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { profile as profilestore } from \"@/store/index\";\nimport { app } from \"@/store/index\";\nimport { configureOidc } from \"@/store/services/security.service\";\nimport { OidcAuth } from \"vue-oidc-client/vue2\";\nimport { VueTelInput } from \"vue-tel-input\";\nimport ContactViewModel from \"@/models/ContactViewModel\";\nimport useContact from \"@/store/useContact\";\nimport useConnectedAccount from \"@/store/useConnectedAccount\";\nimport moment from 'moment-timezone';\nimport {\n computed,\n defineComponent,\n onMounted,\n ref\n} from \"@vue/composition-api\";\nimport ProfileViewModel from \"@/models/ProfileViewModel\";\nimport ConnectedAccountViewModel from \"../models/ConnectedAccountViewModel\";\nimport SubscriptionViewModel from \"../models/SubscriptionViewModel\";\nimport useSubscription from \"../store/useSubscription\";\nimport useUserSettings from \"@/store/useUserSettings\";\nimport UserSettingsViewModel from \"@/models/UserSettingsViewModel\";\n\nwindow.addEventListener('unhandledrejection', event => {\n console.error('Unhandled promise rejection:', event.reason);\n});\n\nexport default defineComponent({\n name: \"Profile\",\n components: {\n VueTelInput,\n ConfirmDialog: () =>\n import(/* webpackChunkName: \"settings\" */ \"./components/Dialogs/ConfirmDialog.vue\")\n },\n setup() {\n const { update, getCaptain, nameRules, emailRules } = useContact();\n const { connectedAccount, get, remove, approve, lockout, allowGallery, denyGallery, allowUpload, denyUpload } = useConnectedAccount();\n const { getSubscription } = useSubscription();\n const { getUserSettings, updateUserSettings } = useUserSettings();\n const contact = ref();\n const subscription = ref();\n const userSettings = ref();\n const valid = ref(true);\n const showSuccess = ref(false);\n const showRemove = ref(false);\n const showLockout = ref(false);\n const showAuthorize = ref(false);\n const profileForm = ref();\n const userId = ref(\"\");\n const selectedTimezone = ref(\"\");\n const timezones = ref([]);\n\n const profile = computed(() => {\n return profilestore.profile;\n });\n\n const logout = () => {\n configureOidc().then((oidc: OidcAuth) => {\n oidc.signOut().then(() => {\n window.location.href = \"/Identity/Account/Logout\";\n //window.location.href = \"/Identity/Account/Logout?returnUrl=%2FHome\";\n }).catch(err => console.error('OIDC configuration or sign-out failed:', err));\n });\n };\n\n const initSave = () => {\n if (profileForm.value) {\n valid.value = profileForm.value.validate();\n if (valid.value && profile.value) {\n profilestore.Update(profile.value);\n update(contact.value).then(() => {\n showSuccess.value = true;\n }).catch(err => console.error('Error updating contact:', err));\n }\n }\n };\n\n const vueTel = {\n phone: \"\",\n props: {\n autoFormat: true,\n autoDefaultCountry: true,\n dropdownOptions: {\n showDialCodeInList: true,\n showDialCodeInSelection: false,\n showFlags: true,\n showSearchBox: true,\n width: '300px',\n },\n ignoredCountries: [\"KP\", \"RU\"],\n inputOptions: {\n autocomplete: 'on',\n showDialCode: true,\n placeholder: 'Enter phone number',\n required: true,\n },\n mode: \"international\",\n preferredCountries: [\"DK\", \"NO\", \"SE\"],\n validCharactersOnly: true,\n }\n };\n\n const goBack = () => {\n window.history.back();\n };\n\n const successOk = () => {\n showSuccess.value = false;\n };\n\n const manageAcc = () => {\n window.location.href = \"/Identity/Account/Manage\";\n };\n\n const manageSubscription = () => {\n window.open(\"https://billing.stripe.com/p/login/test_cN2aFac1ngye556dQQ\", \"_blank\");\n };\n\n const deleteConnectedAccount = (connectedAccount: ConnectedAccountViewModel) => {\n userId.value = connectedAccount.userId;\n showRemove.value = true;\n };\n\n const changeGalleryAccess = (connectedAccount: ConnectedAccountViewModel) => {\n userId.value = connectedAccount.userId;\n\n if (connectedAccount.hasGalleryAccess) {\n allowGallery(userId.value).then(() => {\n get();\n app.success = \"Galerry access allowed. Changes may take up to 90s to take effect.\";\n })\n } else {\n denyGallery(userId.value).then(() => {\n get();\n app.success = \"Galerry access denied. Changes may take up to 90s to take effect.\";\n })\n }\n };\n\n const changeUploadAccess = (connectedAccount: ConnectedAccountViewModel) => {\n userId.value = connectedAccount.userId;\n\n if (connectedAccount.hasUploadAccess) {\n allowUpload(userId.value).then(() => {\n get();\n app.success = \"Upload access allowed. Changes may take up to 90s to take effect.\";\n })\n } else {\n denyUpload(userId.value).then(() => {\n get();\n app.success = \"Upload access denied. Changes may take up to 90s to take effect.\";\n })\n }\n };\n\n const authorizeAccount = (connectedAccount: ConnectedAccountViewModel) => {\n userId.value = connectedAccount.userId;\n showAuthorize.value = true;\n };\n\n const deauthorizeConnectedAccount = (connectedAccount: ConnectedAccountViewModel) => {\n userId.value = connectedAccount.userId;\n showLockout.value = true;\n };\n\n const lockoutOk = () => {\n lockout(userId.value).then(() => {\n get();\n showRemove.value = false;\n app.success = \"Account locked out. Changes may take up to 90s to take effect.\";\n });\n };\n\n const removeOk = () => {\n remove(userId.value).then(() => {\n get();\n showRemove.value = false;\n app.success = \"Account removed. Changes may take up to 90s to take effect.\";\n });\n };\n\n const authorizeOk = () => {\n approve(userId.value).then(() => {\n get();\n showAuthorize.value = false;\n app.success = \"Account authorized. Changes may take up to 90s to take effect.\";\n })\n };\n\n const dataUsage = computed(() => {\n if (profile.value) {\n return parseInt(((profile.value.mBsUsed / profile.value.dataLimit) * 100).toFixed(0));\n }\n return 0;\n });\n\n const transactionUsage = computed(() => {\n if (profile.value) {\n return parseInt(((profile.value.transactionsUsed / profile.value.transactionsLimit) * 100).toFixed(0));\n }\n return 0;\n });\n\n const formattedBillingStart = computed(() => {\n return profile.value ? formatDateString(profile.value.billingStart) : 'N/A';\n });\n\n const formattedBillingEnd = computed(() => {\n return profile.value ? formatDateString(profile.value.billingEnd) : 'N/A';\n });\n\n const formattedSubscriptionStart = computed(() => {\n return subscription.value ? formatDateString(subscription.value.currentPeriodStart) : \"N/A\";\n });\n\n const formattedSubscriptionEnd = computed(() => {\n return subscription.value ? formatDateString(subscription.value.currentPeriodEnd) : 'N/A';\n });\n\n const billingInterval = computed(() => {\n return subscription.value ? capitalizeFirstLetter(subscription.value.billingInterval + \"ly\") : 'N/A';\n });\n\n const formattedRenewalDate = computed(() => {\n return subscription.value ? formatDateString(subscription.value.currentPeriodEnd) : 'N/A';\n });\n\n const formattedSubscribedSinceDate = computed(() => {\n return subscription.value ? formatDateString(subscription.value.subscriptionStartDate) : 'N/A';\n });\n\n function capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();\n }\n\n function formatDateString(dateString: string): string {\n const date = new Date(dateString);\n const day = date.getDate();\n const month = date.toLocaleString('en-US', { month: 'long' });\n const year = date.getFullYear();\n\n let daySuffix = 'th';\n if (day === 1 || day === 21 || day === 31) {\n daySuffix = 'st';\n } else if (day === 2 || day === 22) {\n daySuffix = 'nd';\n } else if (day === 3 || day === 23) {\n daySuffix = 'rd';\n }\n\n return `${day}${daySuffix} of ${month}, ${year}`;\n }\n\n const updateTimezone = () => {\n if (!timezones.value.includes(selectedTimezone.value)) {\n console.warn('Selected timezone is invalid:', selectedTimezone.value);\n return;\n }\n updateUserSettings(userSettings.value)\n .then(() => {\n app.success = \"Captain timezone updated\";\n })\n .catch(err => console.error('Error updating timezone:', err));\n };\n\n getUserSettings().then((value: UserSettingsViewModel) => {\n userSettings.value = value;\n selectedTimezone.value = userSettings.value.timezone;\n });\n\n getSubscription().then((model: SubscriptionViewModel) => {\n subscription.value = model;\n });\n\n onMounted(() => {\n profilestore.Get().then(() => {\n getCaptain(\"elCapitano\").then((model: ContactViewModel) => {\n if (model != null) {\n contact.value = model;\n } else {\n console.warn('Captain model is null');\n contact.value = new ContactViewModel();\n }\n }).catch(err => console.error('Error fetching captain:', err));\n }).catch(err => console.error('Error fetching profile:', err));\n timezones.value = moment.tz.names();\n });\n\n return {\n profile,\n profileForm,\n logout,\n manageAcc,\n successOk,\n initSave,\n showSuccess,\n showRemove,\n showLockout,\n showAuthorize,\n deleteConnectedAccount,\n lockoutOk,\n removeOk,\n deauthorizeConnectedAccount,\n vueTel,\n contact,\n nameRules,\n emailRules,\n goBack,\n authorizeAccount,\n authorizeOk,\n connectedAccount,\n dataUsage,\n transactionUsage,\n valid,\n formattedBillingStart,\n formattedBillingEnd,\n formattedSubscriptionStart,\n formattedSubscriptionEnd,\n formattedRenewalDate,\n formattedSubscribedSinceDate,\n billingInterval,\n manageSubscription,\n timezones,\n selectedTimezone,\n updateTimezone,\n changeGalleryAccess,\n changeUploadAccess,\n };\n },\n data: () => ({\n isValid: false,\n }),\n methods: {\n phoneObject: function (object) {\n if (object.valid === true) {\n this.isValid = true;\n } else {\n this.isValid = false;\n }\n },\n }\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Account.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Account.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Account.vue?vue&type=template&id=2e9fc2c2&scoped=true&\"\nimport script from \"./Account.vue?vue&type=script&lang=ts&\"\nexport * from \"./Account.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Account.vue?vue&type=style&index=0&id=2e9fc2c2&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2e9fc2c2\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardSubtitle } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VCombobox } from 'vuetify/lib/components/VCombobox';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VExpansionPanel } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelContent } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelHeader } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanels } from 'vuetify/lib/components/VExpansionPanel';\nimport { VFlex } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAction } from 'vuetify/lib/components/VList';\nimport { VListItemActionText } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardSubtitle,VCardTitle,VCheckbox,VCol,VCombobox,VContainer,VDivider,VExpansionPanel,VExpansionPanelContent,VExpansionPanelHeader,VExpansionPanels,VFlex,VForm,VIcon,VList,VListItem,VListItemAction,VListItemActionText,VListItemContent,VListItemSubtitle,VListItemTitle,VProgressLinear,VRow,VSwitch,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"height\":\"100%\",\"margin\":\"auto\"}},[_c('div',{staticClass:\"logo-on-top\"},[_c('v-img',{attrs:{\"contain\":\"\",\"position\":\"top center\",\"max-height\":\"56px\",\"max-width\":\"200px\",\"src\":\"/img/logo.png\"}})],1),_c('div',{ref:\"map\",staticClass:\"map-style\"}),_c('v-dialog',{staticStyle:{\"top\":\"-200px\"},attrs:{\"persistent\":\"\",\"width\":\"400\"},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('v-card',{staticStyle:{\"background-color\":\"#FFFFFF99\"}},[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\"Geofence Settings\")])]),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"d-flex flex-column\"},[_c('div',[_c('div',{staticClass:\"text-caption\"},[_vm._v(\" Geofence radius \")]),_c('v-slider',{attrs:{\"prepend-icon\":\"mdi-map-marker-radius\",\"step\":5,\"min\":\"25\",\"max\":\"250\",\"thumb-label\":\"\"},on:{\"change\":_vm.updateGeoFenceRadius},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('div',{staticClass:\"slider-label\"},[_vm._v(_vm._s(_vm.profile.geofenceRadius)+\" meters\")])]},proxy:true}]),model:{value:(_vm.profile.geofenceRadius),callback:function ($$v) {_vm.$set(_vm.profile, \"geofenceRadius\", $$v)},expression:\"profile.geofenceRadius\"}})],1)])])],1),_c('v-checkbox',{attrs:{\"disabled\":_vm.armed,\"label\":\"Show geofence when disarmed\"},on:{\"change\":_vm.updateGeoFenceVisible},model:{value:(_vm.showGeofence),callback:function ($$v) {_vm.showGeofence=$$v},expression:\"showGeofence\"}})],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{on:{\"click\":_vm.closeGeofenceDialog}},[_vm._v(\"Cancel\")]),_c('v-btn',{attrs:{\"color\":\"success\"},on:{\"click\":_vm.saveGeofence}},[_vm._v(\"Save\")])],1)],1)],1),_c('v-speed-dial',{attrs:{\"bottom\":\"\",\"left\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c('v-tooltip',{attrs:{\"right\":\"\",\"color\":\"blue darken-1\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(data){return [_c('v-btn',_vm._b({attrs:{\"color\":\"blue darken-1\",\"fab\":\"\",\"large\":\"\",\"dark\":\"\",\"bottom\":\"\",\"left\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.showGeofenceDialog.apply(null, arguments)}}},'v-btn',data.attrs,false),[_c('v-icon',[_vm._v(\"mdi-map-marker-radius\")])],1)]}}]),model:{value:(_vm.showSettings),callback:function ($$v) {_vm.showSettings=$$v},expression:\"showSettings\"}},[_c('span',[_vm._v(\"GEOFENCE\")])])]},proxy:true}]),model:{value:(_vm.fab2),callback:function ($$v) {_vm.fab2=$$v},expression:\"fab2\"}}),_c('v-speed-dial',{attrs:{\"bottom\":\"\",\"right\":\"\",\"direction\":_vm.direction,\"open-on-hover\":_vm.hover,\"transition\":_vm.transition},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c('v-badge',{attrs:{\"bordered\":\"\",\"value\":_vm.isLoading,\"color\":\"indigo\",\"icon\":\"mdi-map-marker-path\",\"overlap\":\"\"}},[_c('v-tooltip',{attrs:{\"left\":\"\",\"color\":\"indigo darken-4\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(data){return [_c('v-btn',_vm._b({attrs:{\"color\":\"indigo darken-4\",\"dark\":\"\",\"large\":\"\",\"fab\":\"\"},on:{\"click\":function($event){_vm.showThief = !_vm.showThief}},model:{value:(_vm.fab),callback:function ($$v) {_vm.fab=$$v},expression:\"fab\"}},'v-btn',data.attrs,false),[(_vm.fab)?_c('v-icon',[_vm._v(\" mdi-close \")]):_c('v-icon',[_vm._v(\" mdi-car-emergency \")])],1)]}}]),model:{value:(_vm.showThief),callback:function ($$v) {_vm.showThief=$$v},expression:\"showThief\"}},[_c('span',[_vm._v(\"CATCH THE THIEF !\")])])],1)]},proxy:true}]),model:{value:(_vm.fab),callback:function ($$v) {_vm.fab=$$v},expression:\"fab\"}},[_c('v-tooltip',{attrs:{\"left\":\"\",\"color\":\"red\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(data){return [_c('v-btn',_vm._b({attrs:{\"fab\":\"\",\"dark\":\"\",\"color\":\"red\",\"disabled\":!_vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.stop_tracking.apply(null, arguments)}}},'v-btn',data.attrs,false),[_c('v-icon',[_vm._v(\"mdi-stop\")])],1)]}}]),model:{value:(_vm.showTTs),callback:function ($$v) {_vm.showTTs=$$v},expression:\"showTTs\"}},[_c('span',[_vm._v(\"STOP TRACKING\")])]),_c('v-tooltip',{attrs:{\"left\":\"\",\"color\":\"indigo\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(data){return [_c('v-btn',_vm._b({attrs:{\"fab\":\"\",\"dark\":\"\",\"color\":\"indigo\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.updateShipPosition.apply(null, arguments)}}},'v-btn',data.attrs,false),[_c('v-icon',[_vm._v(\"mdi-map-search\")])],1)]}}]),model:{value:(_vm.showTTs),callback:function ($$v) {_vm.showTTs=$$v},expression:\"showTTs\"}},[_c('span',[_vm._v(\"LATEST BOAT POSITION\")])]),_c('v-tooltip',{attrs:{\"left\":\"\",\"color\":\"green\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(data){return [_c('v-btn',_vm._b({attrs:{\"fab\":\"\",\"dark\":\"\",\"loading\":_vm.isLoading,\"disabled\":_vm.isLoading,\"color\":\"green\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.start_tracking.apply(null, arguments)}}},'v-btn',data.attrs,false),[_c('v-icon',[_vm._v(\"mdi-map-marker-path\")])],1)]}}]),model:{value:(_vm.showTTs),callback:function ($$v) {_vm.showTTs=$$v},expression:\"showTTs\"}},[_c('span',[_vm._v(\"START TRACKING\")])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { computed, ref } from \"@vue/composition-api\";\nimport { Loader, LoaderOptions } from \"@googlemaps/js-api-loader\";\n\nexport default function () {\n //const apiKey = \"AIzaSyCy9LGBG3lKJ921_x93_rz9y0UO0IodssM\";\n const apiKey = \"AIzaSyApxk3D-krEwWwILQYfCz7loR-wVj8wLZQ\";\n const options = ref({\n apiKey: apiKey,\n libraries: [\"geometry\"],\n });\n const googleMapApi = new Loader(options.value);\n return { googleMapApi };\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n import {\n defineComponent,\n onMounted,\n onUnmounted,\n onBeforeUnmount,\n ref,\n watch,\n computed\n } from \"@vue/composition-api\";\n import useMap from \"@/utilities/useGoogleMaps\";\n import { alarm, app } from \"@/store\";\n import { profile as profilestore } from \"@/store/index\";\n import ProfileViewModel from \"@/models/ProfileViewModel\";\n\n export default defineComponent({\n name: \"MapView\",\n setup(_, { root }) {\n const map = ref();\n const { googleMapApi } = useMap();\n const location = ref();\n let myGoogleMap: google.maps.Map;\n let shipMarker: google.maps.Marker;\n let userMarker: google.maps.Marker;\n let geoFence: google.maps.Circle;\n let geoFenceDisarmed: google.maps.Circle;\n let shipIcon: google.maps.Icon;\n let userIcon: google.maps.Icon;\n let user: google.maps.LatLng;\n let ship: google.maps.LatLng;\n let poly: google.maps.Polyline;\n let polyBoat: google.maps.Polyline;\n let infoWindow: google.maps.InfoWindow;\n let infoWindowBoat: google.maps.InfoWindow;\n let timer: any;\n let timerBoat: any;\n let showDialog = ref(false);\n let showGeofence = ref(true);\n let unsavedGeofenceRadius: number;\n const errorMessage = ref(\"\");\n\n const profile = computed(() => {\n return profilestore.profile;\n });\n\n const geoFenceRadius = computed(() => {\n return profile.value.geofenceRadius;\n });\n\n const lat = computed(() => { return alarm.lat ? alarm.lat : 0; });\n\n const lng = computed(() => { return alarm.lng ? alarm.lng : 0; });\n\n const user_lat = computed(() => { return alarm.user_lat ? alarm.user_lat : 0; });\n\n const user_lng = computed(() => { return alarm.user_lng ? alarm.user_lng : 0; });\n\n const latLetter = computed(() => lat.value >= 0 ? \"N\" : \"S\");\n\n const lngLetter = computed(() => lat.value >= 0 ? \"E\" : \"W\");\n\n const toggle = (armed: boolean) => {\n if (armed) {\n geoFence.setVisible(armed);\n geoFenceDisarmed.setVisible(false);\n showGeofence.value = !armed;\n } else {\n geoFence.setVisible(armed);\n }\n };\n\n const requestUserPosition = () => {\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(\n (position: GeolocationPosition) => {\n handlePositionSuccess(position);\n },\n (error: GeolocationPositionError) => {\n handlePositionError(error);\n },\n { enableHighAccuracy: true, timeout: 4500, maximumAge: 0 }\n );\n } else {\n errorMessage.value = \"Geolocation is not supported by this browser.\";\n app.error = errorMessage.value;\n }\n };\n\n const handlePositionSuccess = (position: GeolocationPosition) => {\n\n alarm.SetUserLocation(position);\n\n location.value = position;\n\n user = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);\n\n const path = poly.getPath();\n\n userMarker.setPosition(user);\n userMarker.setVisible(true);\n\n path.push(user);\n const contentString =\n `\n

User position

\n\n

Lat: ${userMarker.getPosition().lat().toFixed(6)}  |  Lon: ${userMarker.getPosition().lng().toFixed(6)}

\n `;\n \n userMarker.addListener(\"click\", () => {\n infoWindow.close();\n infoWindow.setContent(contentString);\n infoWindow.open(userMarker.getMap(), userMarker);\n });\n };\n\n const goToGeoPerm = () => {\n root.$router.push({ name: \"geo-permission\", params: { destination: \"map\" } });\n };\n\n const handlePositionError = (error: GeolocationPositionError) => {\n if (error.code === error.PERMISSION_DENIED) {\n errorMessage.value = \"User denied the request for geolocation.\";\n } else if (error.code === error.POSITION_UNAVAILABLE) {\n errorMessage.value = \"Location information is unavailable.\";\n } else if (error.code === error.TIMEOUT) {\n errorMessage.value = \"The request to get user location timed out.\";\n } else {\n errorMessage.value = \"An unknown error occurred.\";\n }\n app.error = errorMessage.value;\n goToGeoPerm();\n };\n\n const updateShipPosition = () => {\n \n const pathBoat = polyBoat.getPath();\n\n if (lat.value != 0 && lng.value != 0)\n {\n ship = new google.maps.LatLng(lat.value, lng.value);\n\n shipMarker.setPosition(ship);\n\n pathBoat.push(ship);\n\n const contentString =\n `\n

Boat position

\n\n

Lat: ${shipMarker.getPosition().lat().toFixed(6)}  |  Lon: ${shipMarker.getPosition().lng().toFixed(6)}

\n `;\n\n shipMarker.addListener(\"click\", () => {\n infoWindowBoat.close();\n infoWindowBoat.setContent(contentString);\n infoWindowBoat.open(shipMarker.getMap(), shipMarker);\n });\n\n if (!alarm.trackingStatus) {\n updateGeoFenceRadius();\n }\n }\n }\n\n const start_tracking = () => {\n if (!alarm.trackingStatus) {\n alarm.startTracking();\n userMarker.setVisible(true);\n poly.setVisible(true);\n timer = setInterval(() => { requestUserPosition(); }, 10000);\n timerBoat = setInterval(() => { alarm.getGeoLocation(); }, 10000);\n }\n }\n\n const stop_tracking = () => {\n if (alarm.trackingStatus) {\n alarm.stopTracking();\n clearInterval(timer);\n clearInterval(timerBoat);\n userMarker.setVisible(false);\n poly.setVisible(false);\n \n }\n }\n\n const saveGeofence = () => {\n // code to save geofence settings\n profilestore.Update(profile.value);\n geoFence.setRadius(profile.value.geofenceRadius);\n geoFenceDisarmed.setRadius(profile.value.geofenceRadius);\n unsavedGeofenceRadius = profile.value.geofenceRadius;\n updateGeoFenceRadius();\n showDialog.value = false;\n }\n\n const showGeofenceDialog = () => {\n profile.value.geofenceRadius = unsavedGeofenceRadius;\n updateGeoFenceRadius();\n showDialog.value = true;\n }\n\n const closeGeofenceDialog = () => {\n profile.value.geofenceRadius = unsavedGeofenceRadius;\n updateGeoFenceRadius();\n showDialog.value = false;\n }\n\n /*\n Zoom level 16 = 175 - 250\n Zoom level 17 = 90 - 175\n Zoom level 18 = 45 - 90\n Zoom level 19 = 25 - 45\n */ \n const updateGeoFenceRadius = () => {\n if (profile.value.geofenceRadius >= 175 && profile.value.geofenceRadius <= 250) {\n myGoogleMap.setZoom(16);\n } else if (profile.value.geofenceRadius >= 90 && profile.value.geofenceRadius < 175) {\n myGoogleMap.setZoom(17);\n } else if (profile.value.geofenceRadius >= 45 && profile.value.geofenceRadius < 90) {\n myGoogleMap.setZoom(18);\n } else if (profile.value.geofenceRadius >= 25 && profile.value.geofenceRadius < 45) {\n myGoogleMap.setZoom(19);\n }\n\n if (geoFence) {\n geoFence.setRadius(profile.value.geofenceRadius);\n myGoogleMap.setCenter(geoFence.getCenter());\n }\n\n if (geoFenceDisarmed) {\n geoFenceDisarmed.setRadius(profile.value.geofenceRadius);\n myGoogleMap.setCenter(geoFenceDisarmed.getCenter());\n }\n }\n\n const updateGeoFenceVisible = () => {\n if (geoFenceDisarmed) {\n geoFenceDisarmed.setVisible(showGeofence.value);\n }\n \n }\n\n const armed = computed(() => {\n return alarm.armed;\n });\n\n const isLoading = computed(() => {\n return alarm.trackingStatus;\n });\n\n //const removeGoogleFontsForMaps = () => {\n // console.log(\"Removing Google Fonts styles injected by Google Maps\");\n // // Find and remove Google Fonts styles injected by Google Maps\n // const googleFontsLinks = document.querySelectorAll('link[rel=\"stylesheet\"][href*=\"fonts.googleapis.com\"]');\n\n // googleFontsLinks.forEach(link => {\n // // iterate and console log the links found\n \n // console.log(\"Checking link:\");\n // console.log(link.href);\n\n // // Check if the link does not contain the fonts you want to keep\n // if (!link.href.includes('https://fonts.googleapis.com/css2?family=Open+Sans&display=swap')) {\n \n // console.log(\"Removing link:\");\n // console.log(link.href);\n // // Remove the link from the DOM\n // link.remove();\n // }\n // });\n //};\n //// Add a delay before executing the function to ensure stylesheets are loaded\n //const delayBeforeRemovingFonts = () => {\n // setTimeout(() => {\n // removeGoogleFontsForMaps();\n // }, 1000); // Adjust the delay as needed\n //};\n\n onMounted(async () => {\n profilestore.Get();\n googleMapApi.load().then(() => {\n console.log(\"Google Maps API loaded\");\n const markerPos = new google.maps.LatLng(lat.value, lng.value);\n const userPos = new google.maps.LatLng(user_lat.value, user_lng.value);\n infoWindow = new google.maps.InfoWindow();\n infoWindowBoat = new google.maps.InfoWindow();\n userMarker = new google.maps.Marker();\n \n shipIcon = {\n url: 'https://dsspoc.azurewebsites.net/img/icons/map-marker-device.svg',\n scaledSize: new google.maps.Size(80, 80),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(40, 80)\n };\n\n userIcon = {\n url: 'https://dsspoc.azurewebsites.net/img/icons/map-marker-user.svg',\n scaledSize: new google.maps.Size(80, 80),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(40, 80)\n };\n\n myGoogleMap = new google.maps.Map(map.value, {\n center: markerPos,\n mapTypeId: \"satellite\",\n zoom: 16,\n disableDefaultUI: true,\n zoomControl: false,\n backgroundColor: \"#000000\",\n mapTypeControl: true,\n mapTypeControlOptions: {\n style: google.maps.MapTypeControlStyle.DROPDOWN_MENU\n },\n fullscreenControl: true\n });\n\n shipMarker = new google.maps.Marker({\n position: markerPos,\n map: myGoogleMap,\n icon: shipIcon,\n title: profile.value.shipName\n });\n\n userMarker.setPosition(userPos);\n userMarker.setMap(myGoogleMap);\n userMarker.setIcon(userIcon);\n userMarker.setTitle(\"You are here.\");\n userMarker.setVisible(false);\n\n poly = new google.maps.Polyline({\n strokeColor: \"#FF0000\",\n strokeOpacity: 1.0,\n strokeWeight: 2,\n zIndex: 10,\n });\n poly.setMap(myGoogleMap);\n\n polyBoat = new google.maps.Polyline({\n strokeColor: \"#FF0000\",\n strokeOpacity: 1.0,\n strokeWeight: 2,\n zIndex: 10,\n });\n polyBoat.setMap(myGoogleMap);\n\n geoFence = new google.maps.Circle({\n strokeColor: \"#FF0000\",\n strokeOpacity: 0.8,\n strokeWeight: 2,\n fillColor: \"#FF0000\",\n fillOpacity: 0.35,\n map: myGoogleMap,\n center: markerPos,\n radius: geoFenceRadius.value,\n zIndex: 10,\n visible: false\n });\n geoFenceDisarmed = new google.maps.Circle({\n strokeColor: \"#00FF00\",\n strokeOpacity: 0.8,\n strokeWeight: 2,\n fillColor: \"#00FF00\",\n fillOpacity: 0.35,\n map: myGoogleMap,\n center: markerPos,\n radius: geoFenceRadius.value,\n zIndex: 10,\n visible: showGeofence.value,\n });\n toggle(alarm.armed);\n updateShipPosition();\n unsavedGeofenceRadius = profile.value.geofenceRadius;\n updateGeoFenceRadius(); \n //delayBeforeRemovingFonts();\n });\n });\n\n onBeforeUnmount(() => {\n stop_tracking();\n })\n\n onUnmounted(() => {\n stop_tracking();\n });\n\n\n\n alarm.$watch(module => module.armed, toggle);\n alarm.$watch(module => module.lastKnownLocation, updateShipPosition);\n return {\n armed,\n map,\n geoFence,\n geoFenceDisarmed,\n latLetter,\n lngLetter,\n start_tracking,\n stop_tracking,\n isLoading,\n showGeofenceDialog,\n closeGeofenceDialog,\n profile,\n showDialog,\n saveGeofence,\n updateGeoFenceRadius,\n showGeofence,\n updateGeoFenceVisible,\n updateShipPosition,\n };\n },\n created: function () {\n this.$once(\"hook:beforeDestroy\", () => {\n alarm.stopTracking();\n });\n },\n data: () => ({\n fab: false,\n fab2: false,\n hover: false,\n transition: 'fade-transition',\n direction: 'top',\n showTTs: true,\n showThief: true,\n showSettings: true,\n }),\n });\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Map.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Map.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Map.vue?vue&type=template&id=347191bb&scoped=true&\"\nimport script from \"./Map.vue?vue&type=script&lang=ts&\"\nexport * from \"./Map.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Map.vue?vue&type=style&index=0&id=347191bb&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"347191bb\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBadge } from 'vuetify/lib/components/VBadge';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSlider } from 'vuetify/lib/components/VSlider';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSpeedDial } from 'vuetify/lib/components/VSpeedDial';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBadge,VBtn,VCard,VCardActions,VCardText,VCardTitle,VCheckbox,VCol,VDialog,VIcon,VImg,VRow,VSlider,VSpacer,VSpeedDial,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c('v-row',{staticClass:\"fill-height pt-1\",attrs:{\"no-gutters\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\"}},[_c('h3',{staticClass:\"text--white80 py-2\"},[_vm._v(\"MAN OVER BOARD\")])])],1),_c('v-row',{staticClass:\"py-2\",attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"pl-2 pr-2\",attrs:{\"cols\":\"6\"}},[_c('vue-tel-input',_vm._b({ref:\"phoneInputRef\",on:{\"validate\":_vm.phoneObject},model:{value:(_vm.vueTel.phone),callback:function ($$v) {_vm.$set(_vm.vueTel, \"phone\", $$v)},expression:\"vueTel.phone\"}},'vue-tel-input',_vm.vueTel.props,false))],1),_c('v-col',{staticClass:\"px-0\",attrs:{\"cols\":\"2\"}},[_c('v-btn',{attrs:{\"color\":\"white\"},on:{\"click\":_vm.showContactDialog}},[_vm._v(\"VIP\")])],1),_c('v-col',{staticClass:\"pl-0 pr-2\",attrs:{\"cols\":\"4\"}},[_c('v-btn',{attrs:{\"color\":\"white\",\"disabled\":!_vm.isValid && !_vm.isFetchingPosition,\"loading\":_vm.isFetchingPosition},on:{\"click\":_vm.sendMobMessage}},[_vm._v(\"Send Message\")])],1)],1),_c('v-row',{staticClass:\"pt-1\",attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c('span',{staticClass:\"white70--text caption\"},[_vm._v(\"Latitude: \"+_vm._s(_vm.latitude)+\"°\"+_vm._s(_vm.latLetter)+\" | Longitude: \"+_vm._s(_vm.longitude)+\"°\"+_vm._s(_vm.lngLetter))])]),_c('v-col',{staticClass:\"fill-height\",attrs:{\"cols\":\"12\"}},[_c('div',{ref:\"map\",staticClass:\"map\",staticStyle:{\"height\":\"100%\",\"overflow\":\"visible\"}})])],1),_c('LoadingDialog',{attrs:{\"message\":\"OBTAINING POSITION ...\"},model:{value:(_vm.isFetchingPosition),callback:function ($$v) {_vm.isFetchingPosition=$$v},expression:\"isFetchingPosition\"}}),_c('v-dialog',{staticStyle:{\"top\":\"-200px\"},attrs:{\"persistent\":\"\",\"width\":\"95%\"},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('v-card',{staticStyle:{\"background-color\":\"#FFFFFF\"}},[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\"Select a VIP contact\")])]),_c('v-card-text',{staticClass:\"py-0\"},[_c('v-card',{staticClass:\"mx-auto pb-0\",attrs:{\"tile\":\"\"}},[(_vm.VIPcontacts.length > 0)?_c('v-list',{attrs:{\"two-line\":\"\"}},[_c('div',{staticClass:\"d-flex\",staticStyle:{\"justify-content\":\"space-between\"}},[_c('div',{staticClass:\"text-left black--text font-weight-regular header-text-size pl-4\",staticStyle:{\"width\":\"auto\"}},[_vm._v(\" VIP Contact \")]),_c('div',{staticClass:\"text-center black--text font-weight-regular header-text-size px-4\",staticStyle:{\"width\":\"130px\",\"text-align\":\"right\"}},[_vm._v(\" Options \")])]),_vm._l((_vm.VIPcontacts),function(item,i){return [_c('v-list-item',{key:i,on:{\"click\":function($event){return _vm.selectContact(item)}}},[_c('v-list-item-content',[_c('v-list-item-title',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(item.name))]),_c('v-list-item-subtitle',{},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-phone\")]),_vm._v(\" \"+_vm._s(item.phoneNumber)+\" \")],1)],1),_c('v-list-item-action',{staticClass:\"mx-2\"},[_c('v-list-item-action-text',{staticClass:\"pr-1\"},[_vm._v(\"Edit\")]),_c('v-icon',{attrs:{\"color\":\"orange\",\"icon\":\"\",\"large\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.editVIPContact(item)}}},[_vm._v(\" mdi-pencil \")])],1),_c('v-list-item-action',{staticClass:\"mx-2\"},[_c('v-list-item-action-text',[_vm._v(\"Delete\")]),_c('v-icon',{attrs:{\"color\":\"error\",\"icon\":\"\",\"large\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.deleteVIPContact(item)}}},[_vm._v(\" mdi-delete \")])],1)],1)]})],2):_vm._e()],1)],1),_c('v-card-actions',{staticClass:\"px-6 py-4\"},[_c('v-row',[_c('v-col',{staticClass:\"text-left\",attrs:{\"cols\":\"6\"}},[_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":_vm.closeContactDialog}},[_vm._v(\" RETURN \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-arrow-u-left-top \")])],1)],1),_c('v-col',{staticClass:\"text-right\",attrs:{\"cols\":\"6\"}},[(_vm.VIPcontacts.length < 10)?_c('v-btn',{staticClass:\"px-7\",attrs:{\"color\":\"success\"},on:{\"click\":_vm.openAddContactDialog}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" mdi-account-plus \")]),_vm._v(\" ADD NEW VIP \")],1):_vm._e()],1)],1)],1)],1)],1),_c('v-dialog',{staticStyle:{\"top\":\"-200px\"},attrs:{\"persistent\":\"\",\"width\":\"400\",\"height\":\"600\"},model:{value:(_vm.showAddContactDialog),callback:function ($$v) {_vm.showAddContactDialog=$$v},expression:\"showAddContactDialog\"}},[_c('v-card',{staticStyle:{\"background-color\":\"#FFFFFF\"}},[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\"Add a new VIP contact\")])]),_c('v-card-text',[_c('v-form',{ref:\"contactForm\"},[_c('v-text-field',{attrs:{\"counter\":30,\"label\":\"Name\",\"rules\":_vm.nameRules,\"required\":\"\"},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"d-flex flex-column black-tel-input\"},[_c('div',[_c('div',{staticClass:\"text-matching-input-label\"},[_vm._v(\" Phone number \")]),_c('vue-tel-input',_vm._b({on:{\"validate\":_vm.phoneObject2},model:{value:(_vm.vueTel2.phone),callback:function ($$v) {_vm.$set(_vm.vueTel2, \"phone\", $$v)},expression:\"vueTel2.phone\"}},'vue-tel-input',_vm.vueTel2.props,false))],1)])])],1)],1)],1)],1),_c('v-card-actions',[_c('v-row',[_c('v-col',{staticClass:\"text-left pr-0\",attrs:{\"cols\":\"6\"}},[_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":_vm.closeAddContactDialog}},[_vm._v(\" RETURN \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-arrow-u-left-top \")])],1)],1),_c('v-col',{staticClass:\"text-right pl-0\",attrs:{\"cols\":\"6\"}},[_c('v-btn',{staticClass:\"px-7\",attrs:{\"color\":\"success\",\"disabled\":!_vm.isValid2},on:{\"click\":_vm.initSave}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" mdi-check \")]),_vm._v(\" SAVE \")],1)],1)],1)],1)],1)],1),_c('v-dialog',{staticStyle:{\"top\":\"-200px\"},attrs:{\"persistent\":\"\",\"width\":\"400\",\"height\":\"600\"},model:{value:(_vm.showEditContactDialog),callback:function ($$v) {_vm.showEditContactDialog=$$v},expression:\"showEditContactDialog\"}},[_c('v-card',{staticStyle:{\"background-color\":\"#FFFFFF\"}},[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\"Edit a VIP contact\")])]),_c('v-card-text',[_c('v-form',{ref:\"editContactForm\"},[_c('v-text-field',{attrs:{\"counter\":30,\"label\":\"Name\",\"rules\":_vm.nameRules,\"required\":\"\"},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"d-flex flex-column black-tel-input\"},[_c('div',[_c('div',{staticClass:\"text-matching-input-label\"},[_vm._v(\" Phone number \")]),_c('vue-tel-input',_vm._b({on:{\"validate\":_vm.phoneObject2},model:{value:(_vm.vueTel2.phone),callback:function ($$v) {_vm.$set(_vm.vueTel2, \"phone\", $$v)},expression:\"vueTel2.phone\"}},'vue-tel-input',_vm.vueTel2.props,false))],1)])])],1)],1)],1)],1),_c('v-card-actions',[_c('v-row',[_c('v-col',{staticClass:\"text-left pr-0\",attrs:{\"cols\":\"6\"}},[_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":_vm.closeEditContactDialog}},[_vm._v(\" RETURN \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-arrow-u-left-top \")])],1)],1),_c('v-col',{staticClass:\"text-right pl-0\",attrs:{\"cols\":\"6\"}},[_c('v-btn',{staticClass:\"px-7\",attrs:{\"color\":\"success\",\"disabled\":!_vm.isValid2},on:{\"click\":_vm.initEditSave}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" mdi-check \")]),_vm._v(\" SAVE \")],1)],1)],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Axios, { AxiosResponse } from \"axios\";\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\nimport VIPContactViewModel from \"@/models/VIPContactViewModel\";\nimport { ref } from \"@vue/composition-api\";\nexport default function () {\n const VIPcontacts = ref>([]);\n const getVIPContacts = async () => {\n await defineHeaderAxios();\n Axios.get(\"/api/vipcontact\")\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n VIPcontacts.value = result.data;\n }\n })\n .catch((error) => {\n console.log(error);\n });\n };\n getVIPContacts();\n return {\n VIPcontacts,\n getVIPContacts,\n };\n}\n","export default class VIPContactViewModel {\n public id: number;\n public userEmail: string;\n public name: string;\n public phoneNumber: string;\n}\n","import Axios, { AxiosResponse } from \"axios\";\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\nimport VIPContactViewModel from \"@/models/VIPContactViewModel\";\nexport default function () {\n const add = async (contact: VIPContactViewModel): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.post(\"/api/vipcontact\", contact)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve();\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n const update = async (contact: VIPContactViewModel): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.put(`/api/vipcontact/${contact.id}`, contact)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve();\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n const remove = async (id: number): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.delete(`/api/vipcontact/${id}`)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve();\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n const get = async (id: number): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.get(`/api/vipcontact/${id}`)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve(result.data);\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n\n const nameRules: ((v: any) => any)[] = [\n (v) => !!v || \"Name is required\",\n (v) => (v && v.length <= 30) || \"Name must be less than 30 characters\",\n ];\n const emailRules: ((v: any) => any)[] = [\n (v) => !!v || \"E-mail is required\",\n (v) => /.+@.+\\..+/.test(v) || \"E-mail must be valid\",\n ];\n return {\n add,\n update,\n remove,\n get,\n nameRules,\n emailRules,\n };\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n import {\n defineComponent,\n ref,\n computed,\n onMounted,\n } from \"@vue/composition-api\";\n import useMap from \"@/utilities/useGoogleMaps\";\n import { mobState, app, alarm } from \"@/store/index\";\n import useVIPContacts from \"@/store/useVIPContacts\";\n import VIPContactViewModel from \"@/models/VIPContactViewModel\";\n import { VueTelInput } from \"vue-tel-input\";\n import useVIPContact from \"../store/useVIPContact\";\n \n export default defineComponent({\n components: { \n VueTelInput,\n LoadingDialog: () =>\n import(/* webpackChunkName: \"settings\" */ \"./components/Dialogs/LoadingDialog.vue\"),\n },\n setup(_, { root }) {\n const { VIPcontacts, getVIPContacts } = useVIPContacts();\n const { add, remove, update, get, nameRules } = useVIPContact();\n const contactForm = ref();\n const editContactForm = ref();\n const map = ref();\n const { googleMapApi } = useMap();\n const location = ref();\n let myGoogleMap: google.maps.Map;\n let poly: google.maps.Polyline;\n let userMarker: google.maps.Marker;\n let infoWindow: google.maps.InfoWindow;\n let user: google.maps.LatLng;\n const phoneInputRef = ref();\n const phone = ref('');\n const showDialog = ref(false);\n const showAddContactDialog = ref(false);\n const showEditContactDialog = ref(false);\n const name = ref(\"\");\n let editedContact: VIPContactViewModel;\n const errorMessage = ref(\"\");\n const isFetchingPosition = ref(true);\n\n const user_lat = computed(() => { return alarm.user_lat ? alarm.user_lat : 0; });\n\n const user_lng = computed(() => { return alarm.user_lng ? alarm.user_lng : 0; });\n\n const latitude = computed(() => {\n return user_lat.value != 0 ? user_lat.value.toFixed(6) : \"-.--\";\n });\n\n const longitude = computed(() => {\n return user_lng.value != 0 ? user_lng.value.toFixed(6) : \"-.--\";\n });\n\n const latLetter = computed(() => user_lat.value >= 0 ? \"N\" : \"S\");\n\n const lngLetter = computed(() => user_lng.value >= 0 ? \"E\" : \"W\");\n\n const selectContact = (VIPcontact: VIPContactViewModel) => {\n vueTel.value.phone = VIPcontact.phoneNumber;\n closeContactDialog();\n };\n\n const showContactDialog = () => { showDialog.value = true; };\n\n const closeContactDialog = () => { showDialog.value = false; };\n\n const openAddContactDialog = () => { showAddContactDialog.value = true; };\n\n const closeAddContactDialog = () => { showAddContactDialog.value = false; };\n\n const openEditContactDialog = () => { showEditContactDialog.value = true; };\n\n const closeEditContactDialog = () => { showEditContactDialog.value = false; };\n\n const editVIPContact = (VIPcontact: VIPContactViewModel) => {\n name.value = VIPcontact.name;\n vueTel2.value.phone = VIPcontact.phoneNumber;\n editedContact = VIPcontact;\n openEditContactDialog();\n };\n\n const initEditSave = () => {\n if (editContactForm.value) {\n editedContact.name = name.value;\n editedContact.phoneNumber = vueTel2.value.phone;\n update(editedContact).then(() => {\n getVIPContacts();\n name.value = \"\";\n vueTel2.value.phone = '';\n closeEditContactDialog();\n });\n }\n }\n\n const initSave = () => {\n if (contactForm.value) {\n const newContact = new VIPContactViewModel();\n newContact.name = name.value;\n newContact.phoneNumber = vueTel2.value.phone;\n add(newContact).then(() => {\n getVIPContacts();\n name.value = \"\";\n vueTel2.value.phone = '';\n closeAddContactDialog();\n });\n };\n };\n\n const deleteVIPContact = (VIPcontact: VIPContactViewModel) => {\n remove(VIPcontact.id).then(() => {\n getVIPContacts();\n });\n };\n\n const requestUserPosition = () => {\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(\n (position: GeolocationPosition) => {\n handlePositionSuccess(position);\n },\n (error: GeolocationPositionError) => {\n handlePositionError(error);\n },\n { enableHighAccuracy: true, maximumAge: 0 }\n );\n } else {\n errorMessage.value = \"Geolocation is not supported by this browser.\";\n app.error = errorMessage.value;\n }\n };\n\n const handlePositionSuccess = (position: GeolocationPosition) => {\n\n alarm.SetUserLocation(position);\n\n location.value = position;\n\n user = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);\n\n const path = poly.getPath();\n\n userMarker.setPosition(user);\n userMarker.setVisible(true);\n\n path.push(user);\n\n const contentString =\n `\n

User position

\n\n

Lat: ${userMarker.getPosition().lat().toFixed(6)}  |  Lon: ${userMarker.getPosition().lng().toFixed(6)}

\n `;\n\n userMarker.addListener(\"click\", () => {\n infoWindow.close();\n infoWindow.setContent(contentString);\n infoWindow.open(userMarker.getMap(), userMarker);\n });\n isFetchingPosition.value = false;\n //removeGoogleFontsForMaps();\n\n myGoogleMap.setCenter(user);\n };\n\n const goToGeoPerm = () => {\n root.$router.push({ name: \"geo-permission\", params: { destination: \"map\" } });\n };\n\n const handlePositionError = (error: GeolocationPositionError) => {\n if (error.code === error.PERMISSION_DENIED) {\n errorMessage.value = \"User denied the request for geolocation.\";\n } else if (error.code === error.POSITION_UNAVAILABLE) {\n errorMessage.value = \"Location information is unavailable.\";\n } else if (error.code === error.TIMEOUT) {\n errorMessage.value = \"The request to get user location timed out.\";\n } else {\n errorMessage.value = \"An unknown error occurred.\";\n }\n app.error = errorMessage.value;\n goToGeoPerm();\n };\n\n const sendMobMessage = () => {\n if (latitude.value && longitude.value) {\n const phoneData = phoneInputRef.value;\n const number = phoneData.phoneObject ? phoneData.phoneObject.number : phone.value;\n mobState\n .sendMobMessage({\n lat: latitude.value,\n lng: longitude.value,\n phone: number\n })\n .then(() => {\n app.success = 'MOB message sent successfully.';\n });\n }\n };\n\n const vueTel = ref({\n phone: '',\n props: {\n autoFormat: true,\n autoDefaultCountry: true,\n dropdownOptions: {\n showDialCodeInList: true,\n showDialCodeInSelection: false,\n showFlags: true,\n showSearchBox: true,\n width: '300px',\n },\n ignoredCountries: ['KP', 'RU'],\n inputOptions: {\n autocomplete: 'on',\n showDialCode: true,\n placeholder: 'Enter phone number',\n required: true,\n },\n mode: 'international',\n preferredCountries: ['DK', 'NO', 'SE'],\n validCharactersOnly: true,\n },\n });\n\n const vueTel2 = ref({\n phone: '',\n props: {\n autoFormat: true,\n autoDefaultCountry: true,\n dropdownOptions: {\n showDialCodeInList: true,\n showDialCodeInSelection: false,\n showFlags: true,\n showSearchBox: true,\n width: '300px',\n },\n ignoredCountries: ['KP', 'RU'],\n inputOptions: {\n autocomplete: 'on',\n showDialCode: true,\n placeholder: 'Enter phone number',\n required: true,\n },\n mode: 'international',\n preferredCountries: ['DK', 'NO', 'SE'],\n validCharactersOnly: true,\n },\n });\n\n //const removeGoogleFontsForMaps = () => {\n // console.log(\"Removing Google Fonts for Google Maps\");\n // // Find and remove Google Fonts styles injected by Google Maps\n // const googleFontsLinks = document.querySelectorAll('link[rel=\"stylesheet\"][href*=\"fonts.googleapis.com\"]');\n\n // googleFontsLinks.forEach(link => {\n // // iterate and console log the links found\n\n // console.log(\"Checking link:\");\n // console.log(link.href);\n\n // // Check if the link does not contain the fonts you want to keep\n // if (!link.href.includes('https://fonts.googleapis.com/css2?family=Open+Sans&display=swap')) {\n\n // console.log(\"Removing link:\");\n // console.log(link.href);\n // // Remove the link from the DOM\n // link.remove();\n // }\n // });\n //};\n \n onMounted(async () => {\n googleMapApi.load().then(() => {\n console.log(\"Google Maps API loaded\");\n const userPos = new google.maps.LatLng(user_lat.value, user_lng.value);\n infoWindow = new google.maps.InfoWindow();\n userMarker = new google.maps.Marker();\n\n const userIcon = {\n url: 'https://dsspoc.azurewebsites.net/img/icons/map-marker-user.svg',\n scaledSize: new google.maps.Size(80, 80),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(40, 80)\n };\n\n myGoogleMap = new google.maps.Map(map.value, {\n center: userPos,\n mapTypeId: \"satellite\",\n zoom: 16,\n disableDefaultUI: true,\n backgroundColor: \"#000000\",\n zoomControl: false,\n mapTypeControl: true,\n mapTypeControlOptions: {\n style: google.maps.MapTypeControlStyle.DROPDOWN_MENU\n },\n fullscreenControl: true\n });\n\n userMarker.setPosition(userPos);\n userMarker.setMap(myGoogleMap);\n userMarker.setIcon(userIcon);\n userMarker.setTitle(\"You are here.\");\n userMarker.setVisible(true);\n\n poly = new google.maps.Polyline({\n strokeColor: \"#FF0000\",\n strokeOpacity: 1.0,\n strokeWeight: 2,\n zIndex: 10,\n });\n poly.setMap(myGoogleMap);\n\n myGoogleMap.setCenter(userMarker.getPosition() as google.maps.LatLng);\n });\n });\n\n return {\n phone,\n sendMobMessage,\n phoneInputRef,\n map,\n latitude,\n longitude,\n latLetter,\n lngLetter,\n showContactDialog,\n showDialog,\n closeContactDialog,\n VIPcontacts,\n selectContact,\n vueTel,\n vueTel2,\n openAddContactDialog,\n closeAddContactDialog,\n initSave,\n name,\n showAddContactDialog,\n contactForm,\n deleteVIPContact,\n showEditContactDialog,\n closeEditContactDialog,\n openEditContactDialog,\n editVIPContact,\n editContactForm,\n initEditSave,\n requestUserPosition,\n isFetchingPosition,\n };\n },\n created: function () {\n const timer = setInterval(() => { this.requestUserPosition(); }, 5000);\n\n this.$once(\"hook:beforeDestroy\", () => {\n clearInterval(timer);\n });\n },\n data: () => ({\n isValid: false,\n isValid2: false,\n }),\n methods: {\n phoneObject: function (object) {\n if (object.valid === true) {\n this.isValid = true;\n } else {\n this.isValid = false;\n }\n },\n phoneObject2: function (object) {\n if (object.valid === true) {\n this.isValid2 = true;\n } else {\n this.isValid2 = false;\n }\n },\n }\n });\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mob.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mob.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./mob.vue?vue&type=template&id=2cffb544&scoped=true&\"\nimport script from \"./mob.vue?vue&type=script&lang=ts&\"\nexport * from \"./mob.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./mob.vue?vue&type=style&index=0&id=2cffb544&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2cffb544\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAction } from 'vuetify/lib/components/VList';\nimport { VListItemActionText } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VContainer,VDialog,VForm,VIcon,VList,VListItem,VListItemAction,VListItemActionText,VListItemContent,VListItemSubtitle,VListItemTitle,VRow,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-row',{staticClass:\"pt-3\",attrs:{\"id\":\"settings\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('MyBoat')],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('SystemStatus')],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('Control')],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('Sensors')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n//import { alarm, sensor } from \"@/store\";\nimport { defineComponent, onMounted } from \"@vue/composition-api\";\n\nexport default defineComponent({\n name: \"Settings\",\n components: {\n MyBoat: () =>\n import(/* webpackChunkName: \"components\" */ \"./components/MyBoat.vue\"),\n SystemStatus: () =>\n import(/* webpackChunkName: \"components\" */ \"./components/SystemStatus.vue\"),\n Control: () =>\n import(/* webpackChunkName: \"components\" */ \"./components/Control.vue\"),\n Sensors: () =>\n import(/* webpackChunkName: \"components\" */ \"./components/SensorList.vue\")\n },\n setup() {\n onMounted(() => {\n //sensor.GetData();\n });\n }\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=1b8be221&\"\nimport script from \"./Settings.vue?vue&type=script&lang=ts&\"\nexport * from \"./Settings.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCol,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticStyle:{\"max-width\":\"95%\"}},[_c('v-row',{attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c('h3',{staticClass:\"text--white80 pt-6\"},[_vm._v(\"EVENT LOG\")])]),_c('v-timeline',{attrs:{\"dense\":\"\",\"clipped\":\"\"}},_vm._l((_vm.logItems),function(item){return _c('v-timeline-item',{key:item.id,attrs:{\"color\":\"white\",\"large\":\"\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('v-avatar',[(item.latestEventName=='Disarmed')?_c('img',{attrs:{\"src\":require(\"@/assets/icons/lock.svg\")}}):(item.latestEventName=='Armed')?_c('img',{attrs:{\"src\":require(\"@/assets/icons/unlock.svg\")}}):(item.latestEventName.indexOf('shore') !== -1)?_c('img',{attrs:{\"src\":require(\"@/assets/icons/warning-red.svg\")}}):(item.latestEventName.indexOf('smart') !== -1)?_c('img',{attrs:{\"src\":require(\"@/assets/icons/warning-red.svg\")}}):(item.latestEventName.startsWith('Alarm'))?_c('img',{attrs:{\"src\":require(\"@/assets/icons/sirene-red.svg\")}}):(item.latestEventName=='Unknown event')?_c('img',{attrs:{\"src\":require(\"@/assets/icons/unknown-error.svg\")}}):_c('img',{attrs:{\"src\":require(\"@/assets/icons/unknown-error.svg\")}})])]},proxy:true}],null,true)},[_c('v-row',{attrs:{\"justify\":\"space-between\",\"align\":\"center\",\"pt-2\":\"\"}},[(item.latestEventName.indexOf('shore') !== -1)?_c('v-col',{staticClass:\"white--text\",attrs:{\"cols\":\"5\"}},[_vm._v(\"Shore Power disabled\")]):(item.latestEventName.indexOf('smart') !== -1)?_c('v-col',{staticClass:\"white--text\",attrs:{\"cols\":\"5\"}},[_vm._v(\"Smart Plug disabled\")]):_c('v-col',{staticClass:\"white--text\",attrs:{\"cols\":\"5\"}},[_vm._v(_vm._s(item.latestEventName))]),_c('v-col',{staticClass:\"text-right white--text pr-6\",attrs:{\"cols\":\"7\"}},[_vm._v(_vm._s(_vm.formatModifiedDate(item.modifiedDate)))])],1)],1)}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Axios, { AxiosResponse } from \"axios\";\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\nimport { ref } from \"@vue/composition-api\";\nexport default function () {\n const logItems = ref([]);\n const getLog = async () => {\n await defineHeaderAxios();\n Axios.get(`/api/sensor/CoreHistory`)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n logItems.value = result.data;\n }\n })\n .catch((error) => {\n console.log(error);\n });\n };\n getLog();\n return {\n logItems,\n };\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, ref } from \"@vue/composition-api\";\nimport useCoreHistory from \"@/store/useCoreHistory\";\nimport moment from 'moment-timezone';\nimport useUserSettings from \"@/store/useUserSettings\";\nimport UserSettingsViewModel from \"@/models/UserSettingsViewModel\";\n\nexport default defineComponent({\n setup(_, context) {\n const { getUserSettings } = useUserSettings();\n const userSettings = ref();\n getUserSettings().then((value: UserSettingsViewModel) => {\n userSettings.value = value;\n });\n\n const { logItems } = useCoreHistory();\n\n const formatModifiedDate = (modifiedDate) => {\n return moment.utc(modifiedDate).tz(userSettings.value.timezone).format(\"MMM DD, YYYY HH:mm:ss\");\n };\n\n return {\n logItems,\n formatModifiedDate\n };\n }\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventLog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventLog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EventLog.vue?vue&type=template&id=d31f7adc&scoped=true&\"\nimport script from \"./EventLog.vue?vue&type=script&lang=ts&\"\nexport * from \"./EventLog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./EventLog.vue?vue&type=style&index=0&id=d31f7adc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d31f7adc\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTimeline } from 'vuetify/lib/components/VTimeline';\nimport { VTimelineItem } from 'vuetify/lib/components/VTimeline';\ninstallComponents(component, {VAvatar,VCol,VContainer,VRow,VTimeline,VTimelineItem})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"mx-auto\",attrs:{\"tile\":\"\",\"max-width\":\"95%\",\"elevation\":\"0\"}},[_c('v-list-item',{staticClass:\"px-2\",attrs:{\"two-line\":\"\"}},[_c('v-list-item-content',[_c('v-list-item-title',{staticClass:\"text-h5 white--text pt-10\"},[_vm._v(\" Your weather report, captain \")]),_c('v-list-item-subtitle',{staticClass:\"white--text\"},[_vm._v(\"Last update on \"+_vm._s(_vm.currentTime))])],1)],1),_c('v-card-text',{staticClass:\"px-2 pt-0\"},[_c('v-row',{staticClass:\"mt-0\"},[_c('v-col',{staticClass:\"white--text font-weight-bold px-3 pt-0\",attrs:{\"cols\":\"12\"}},[_vm._v(\"Current weather\")])],1),_c('v-row',{staticClass:\"mt-0\",attrs:{\"justify\":\"space-between\",\"align\":\"center\"}},[_c('v-spacer'),_c('v-col',{staticClass:\"d-flex justify-center py-0\",attrs:{\"cols\":\"5\"}},[_c('v-img',{staticClass:\"tempImage\",attrs:{\"contain\":\"\",\"max-width\":\"100px\",\"max-height\":\"60px\",\"src\":require(\"@/assets/img/thermometer.png\")}})],1),_c('v-spacer'),_c('v-col',{staticClass:\"d-flex justify-center py-0\",attrs:{\"cols\":\"5\"}},[_c('v-img',{staticClass:\"weatherImage\",attrs:{\"max-width\":\"100px\",\"max-height\":\"100px\",\"src\":_vm.iconurl}})],1),_c('v-spacer')],1),_c('v-row',{staticClass:\"pt-1 mt-0\",attrs:{\"justify\":\"space-between\",\"align\":\"center\"}},[_c('v-spacer'),_c('v-col',{staticClass:\"d-flex justify-center pt-0\",attrs:{\"cols\":\"5\"}},[_c('span',{staticClass:\"text-h6 white--text\"},[_vm._v(_vm._s(_vm.temperature))])]),_c('v-spacer'),_c('v-col',{staticClass:\"d-flex justify-center pt-0\",attrs:{\"cols\":\"5\"}},[_c('span',{staticClass:\"text-h6 white--text\"},[_vm._v(_vm._s(_vm.weatherDescriptionText))])]),_c('v-spacer')],1),_c('v-row',{staticClass:\"mt-0 pt-3\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c('v-col',{staticClass:\"white--text text-center feels-like\",attrs:{\"cols\":\"12\"}},[_vm._v(\" Heat index, feels like \"+_vm._s(_vm.feelsLike)+\" \")])],1),_c('v-row',{staticClass:\"mt-0 pt-3\",attrs:{\"justify\":\"space-between\",\"align\":\"center\"}},[_c('v-spacer'),_c('v-col',{staticClass:\"d-flex justify-center\",attrs:{\"cols\":\"5\"}},[_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\"mdi-windsock\")]),_c('span',{staticClass:\"white--text ml-2\"},[_vm._v(_vm._s(_vm.windDeg)+\" \"+_vm._s(_vm.windSpeed)+\" \")])],1),_c('v-spacer'),_c('v-col',{staticClass:\"d-flex justify-center\",attrs:{\"cols\":\"5\"}},[_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\"mdi-water-percent\")]),_c('span',{staticClass:\"white--text ml-2\"},[_vm._v(_vm._s(_vm.humidity))])],1),_c('v-spacer')],1),_c('v-row',[_c('v-col',{staticClass:\"pb-0\",attrs:{\"cols\":\"12\"}},[_c('v-divider',{staticClass:\"mt-1\",staticStyle:{\"border-color\":\"white\",\"margin-left\":\"30%\",\"margin-right\":\"30%\"}})],1)],1),_c('v-list',{staticClass:\"transparent mt-0 pt-6\"},[_c('v-subheader',{staticClass:\"px-0\"},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"5\"}},[_c('v-row',[_c('v-col',{staticClass:\"white--text font-weight-bold px-0\",attrs:{\"cols\":\"12\"}},[_vm._v(\"Day of the week\")])],1)],1),_c('v-col',{attrs:{\"cols\":\"7\"}},[_c('v-row',[_c('v-col',{staticClass:\"white--text font-weight-bold text-right pl-1 pr-0\",attrs:{\"cols\":\"2\"}},[_vm._v(\"Rain\")]),_c('v-col',{staticClass:\"white--text font-weight-bold text-right pl-2 pr-3\",attrs:{\"cols\":\"6\"}},[_vm._v(\"Wind\")]),_c('v-col',{staticClass:\"white--text font-weight-bold text-right px-0\",attrs:{\"cols\":\"4\"}},[_vm._v(\"Day / Night\")])],1)],1)],1)],1),_vm._l((_vm.forecast),function(item){return _c('v-list-item',{key:item.day,staticClass:\"px-0\"},[_c('v-row',{staticClass:\"fill-height\",attrs:{\"align\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"5\"}},[_c('v-row',{staticClass:\"align-center\"},[_c('v-col',{staticClass:\"white--text caption px-0\",attrs:{\"cols\":\"5\"}},[_vm._v(_vm._s(item.day))]),_c('v-col',{staticClass:\"px-0\",attrs:{\"cols\":\"2\"}},[_c('v-img',{attrs:{\"max-height\":\"40px\",\"max-width\":\"30px\",\"width\":\"30px\",\"height\":\"40px\",\"src\":item.icon}})],1),_c('v-col',{staticClass:\"white--text text-center caption px-0\",attrs:{\"cols\":\"5\"}},[_vm._v(_vm._s(item.description))])],1)],1),_c('v-col',{attrs:{\"cols\":\"7\"}},[_c('v-row',{staticClass:\"align-center\"},[_c('v-col',{staticClass:\"text-right white--text caption pl-1 pr-0\",attrs:{\"cols\":\"2\"}},[_vm._v(\" \"+_vm._s(item.rain)+\" \")]),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-row',{staticClass:\"pl-2 pr-3\"},[_c('v-col',{staticClass:\"text-right white--text caption pl-0 pr-0\",attrs:{\"cols\":\"5\"}},[_vm._v(\" \"+_vm._s(item.windDeg)+\" \")]),_c('v-col',{staticClass:\"text-right white--text caption pl-0 pr-0\",attrs:{\"cols\":\"7\"}},[_vm._v(\" \"+_vm._s(item.windSpeed)+\" \")])],1)],1),_c('v-col',{staticClass:\"text-right white--text caption px-0\",attrs:{\"cols\":\"4\"}},[_vm._v(\" \"+_vm._s(item.temp)+\" \")])],1)],1)],1)],1)})],2),_c('v-row',{attrs:{\"justify\":\"space-between\",\"align\":\"center\"}},[_c('v-spacer'),_c('v-col',{staticClass:\"d-flex justify-center align-center\",attrs:{\"cols\":\"2\"}},[_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\"mdi-information\")])],1),_c('v-spacer'),_c('v-col',{staticClass:\"white--text text-center info-location\",attrs:{\"cols\":\"8\"}},[_vm._v(\" Weather forecast according to current boat position \")]),_c('v-spacer'),_c('v-col',{staticClass:\"d-flex justify-center align-center\",attrs:{\"cols\":\"2\"}},[_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\"mdi-information\")])],1),_c('v-spacer')],1)],1),_c('v-overlay',{attrs:{\"value\":_vm.isLoading,\"opacity\":\"0.9\",\"z-index\":\"1000\"}},[_c('v-row',{staticClass:\"fill-height\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\"text-center white--text\",attrs:{\"cols\":\"12\"}},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"size\":\"50\",\"color\":\"white\"}}),_c('div',{staticClass:\"mt-4 font-weight-bold\"},[_vm._v(_vm._s(_vm.loadingLabel))])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { AxiosRequestConfig } from \"axios\";\nimport { WeatherModel } from \"../../models/WeatherModel\";\nimport { app } from \"@/store\";\n\nexport default function () {\n const APIkey = \"a55470f7c5cf12f565c0151bc638d071\";\n //const APIkey: string = '8eb6318ee69d1bc91d20ac6184929638'; // SeaSafe dedicated API key\n const getCurrentWeather = (lat: string, lng: string): Promise => {\n const part = \"hourly,daily,minutely\";\n const url = `https://api.openweathermap.org/data/3.0/onecall?lat=${lat}&lon=${lng}&units=metric&appid=${APIkey}`;\n const config: AxiosRequestConfig = {};\n config.headers = { common: { [\"Access-Control-Allow-Origin\"]: \"*\" } };\n return new Promise((resolve, reject) => {\n fetch(url)\n .then(function (response) {\n response.json().then((value: any) => {\n const weather = value as WeatherModel;\n resolve(weather);\n });\n })\n .then(function (data) {\n //console.log(data);\n })\n .catch(function () {\n app.error = \"Weather service encountered an error\";\n });\n });\n };\n return { getCurrentWeather };\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {\n computed,\n defineComponent,\n onMounted,\n ref,\n watch\n} from \"@vue/composition-api\";\nimport useWeather from \"@/store/services/weather.service\";\nimport { alarm } from \"@/store\";\nimport { ILocationFromParticle } from \"@/models/AlarmStatus\";\nimport { WeatherModel } from \"@/models/WeatherModel\";\nexport default defineComponent({\n setup() {\n const isLoading = ref(false);\n const loadingLabel = ref(\"Fetching weather data...\");\n const { getCurrentWeather } = useWeather();\n const currentWeather = ref(null);\n\n function timeConverter(UNIX_timestamp) {\n var a = new Date(UNIX_timestamp * 1000);\n var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n var day = days[a.getDay()];\n var hour = a.getHours().toString().padStart(2, \"0\");\n var min = a.getMinutes().toString().padStart(2, \"0\");\n var time = day + ', ' + hour + ':' + min;\n return time;\n }\n\n function timetoDayConverter(UNIX_timestamp) {\n var a = new Date(UNIX_timestamp * 1000);\n var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n return days[a.getDay()];\n }\n\n function getCardinalDirection(angle) {\n // Added the VS15 using the Unicode escape sequence to not use Emoji\n const directions = [\n 'N \\u2B06\\uFE0E',\n 'NE \\u2197\\uFE0E',\n 'E \\u27A1\\uFE0E',\n 'SE \\u2198\\uFE0E',\n 'S \\u2B07\\uFE0E',\n 'SW \\u2199\\uFE0E',\n 'W \\u2B05\\uFE0E',\n 'NW \\u2196\\uFE0E'\n ];\n // Added the VS15 using the Unicode escape sequence to use Emoji\n const emoji_directions = [\n 'N \\u2B06\\uFE0F',\n 'NE \\u2197\\uFE0F',\n 'E \\u27A1\\uFE0F',\n 'SE \\u2198\\uFE0F',\n 'S \\u2B07\\uFE0F',\n 'SW \\u2199\\uFE0F',\n 'W \\u2B05\\uFE0F',\n 'NW \\u2196\\uFE0F'\n ];\n return emoji_directions[Math.round(angle / 45) % 8];\n }\n\n const forecast = computed(() => {\n let comingWeather = [];\n if (currentWeather.value) {\n for (var i = 0; i < 7; i++) {\n let day = timetoDayConverter(currentWeather.value.daily[i].dt);\n let icon = require(`@/assets/wicons/${currentWeather.value.daily[i].weather[0].icon}@2x.svg`);\n let temp = Math.round(currentWeather.value.daily[i].temp.day).toString().trim() + \"°C / \" + Math.round(currentWeather.value.daily[i].temp.night).toString().trim() + \"°C\";\n let rain = (currentWeather.value.daily[i].pop * 100).toFixed(0) + \"%\";\n let description = currentWeather.value.daily[i].weather[0].description.charAt(0).toUpperCase() + currentWeather.value.daily[i].weather[0].description.slice(1);\n let windSpeed = currentWeather.value.daily[i].wind_speed.toString().trim() + \"m/s\";\n let windDeg = getCardinalDirection(currentWeather.value.daily[i].wind_deg);\n let dayWeather = { day, icon, temp, rain, windSpeed, windDeg, description };\n comingWeather.push(dayWeather);\n }\n }\n return comingWeather;\n });\n\n const currentTime = computed(() => {\n return currentWeather.value ? timeConverter(currentWeather.value.current.dt) : \"\";\n });\n\n const temperature = computed(() => {\n return currentWeather.value ? Math.round(currentWeather.value.current.temp).toString().trim() + \"°C\" : \"\";\n });\n const feelsLike = computed(() => {\n return currentWeather.value ? Math.round(currentWeather.value.current.feels_like).toString().trim() + \"°C\" : \"\";\n });\n const humidity = computed(() => {\n return currentWeather.value ? currentWeather.value.current.humidity.toString().trim() + \"%\" : \"\";\n });\n const windSpeed = computed(() => {\n return currentWeather.value ? currentWeather.value.current.wind_speed.toString().trim() + \"m/s\" : \"\";\n });\n const windDeg = computed(() => {\n return currentWeather.value ? getCardinalDirection(currentWeather.value.current.wind_deg) : \"\";\n });\n\n const weatherMainText = computed(() => {\n return currentWeather.value ? currentWeather.value.current.weather[0].main.toString().trim() : \"\";\n });\n\n const weatherDescriptionText = computed(() => {\n if (currentWeather.value) {\n const mainWeather = currentWeather.value.current.weather[0].description.toString().trim();\n return mainWeather.charAt(0).toUpperCase() + mainWeather.slice(1);\n } else {\n return \"\";\n }\n });\n\n const iconurl = computed(() => {\n if (currentWeather.value) {\n return require(`@/assets/wicons/${currentWeather.value.current.weather[0].icon}@2x.svg`);\n } else {\n return \"\";\n }\n });\n const location = computed(() => {\n return alarm.lastKnownLocation ? alarm.lastKnownLocation : null;\n });\n const getWeather = (gps: ILocationFromParticle | null) => {\n isLoading.value = true;\n const lat = gps ? gps.location.geometry.coordinates[1].toString() : \"0\";\n const lon = gps ? gps.location.geometry.coordinates[0].toString() : \"0\";\n\n const startTime = Date.now();\n\n getCurrentWeather(lat, lon).then((result: WeatherModel) => {\n const elapsed = Date.now() - startTime;\n const delay = Math.max(0, 500 - elapsed);\n\n setTimeout(() => {\n currentWeather.value = result;\n isLoading.value = false;\n }, delay);\n });\n };\n\n watch(() => location.value, getWeather);\n onMounted(() => {\n getWeather(location.value);\n });\n return {\n forecast,\n currentTime,\n temperature,\n feelsLike,\n humidity,\n windSpeed,\n windDeg,\n weatherMainText,\n weatherDescriptionText,\n iconurl,\n loadingLabel,\n isLoading\n };\n }\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Weather.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Weather.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Weather.vue?vue&type=template&id=0210890c&scoped=true&\"\nimport script from \"./Weather.vue?vue&type=script&lang=ts&\"\nexport * from \"./Weather.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Weather.vue?vue&type=style&index=0&id=0210890c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0210890c\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VOverlay } from 'vuetify/lib/components/VOverlay';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\ninstallComponents(component, {VCard,VCardText,VCol,VDivider,VIcon,VImg,VList,VListItem,VListItemContent,VListItemSubtitle,VListItemTitle,VOverlay,VProgressCircular,VRow,VSpacer,VSubheader})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticStyle:{\"max-width\":\"95%\"}},[_c('v-row',{staticClass:\"pt-6\"},[_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"2\"}},[_c('v-btn',{staticClass:\"text--white80 px-6 pb-1\",attrs:{\"icon\":\"\"},on:{\"click\":_vm.goBack}},[_c('v-icon',{staticClass:\"text--white80\",attrs:{\"large\":\"\",\"left\":\"\"}},[_vm._v(\"mdi-arrow-u-left-top\")])],1)],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"8\"}},[_c('h3',{staticClass:\"text--white80 text-center\"},[_vm._v(_vm._s(_vm.sensorName)+\" LOG\")])])],1),_c('v-timeline',{staticClass:\"pt-5\",attrs:{\"dense\":\"\",\"clipped\":\"\"}},_vm._l((_vm.logItems),function(item){return _c('v-timeline-item',{key:item.id,attrs:{\"color\":\"white\",\"large\":\"\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('v-avatar',[(item.latestEventName === 'Door opened')?_c('img',{attrs:{\"src\":require(\"@/assets/icons/door-opened.svg\")}}):(item.latestEventName === 'Door closed')?_c('img',{attrs:{\"src\":require(\"@/assets/icons/door-closed.svg\")}}):(item.latestEventName === 'Device paired successfully')?_c('img',{attrs:{\"src\":require(\"@/assets/icons/paired.svg\")}}):(item.latestEventName === 'Device ON')?_c('img',{attrs:{\"src\":require(\"@/assets/icons/switched-on.svg\")}}):(item.latestEventName === 'Device OFF')?_c('img',{attrs:{\"src\":require(\"@/assets/icons/switched-off.svg\")}}):(item.latestEventName.startsWith('Alarm'))?_c('img',{attrs:{\"src\":require(\"@/assets/icons/sirene-red.svg\")}}):(item.latestEventName === 'Disconnected')?_c('img',{attrs:{\"src\":require(\"@/assets/icons/warning-red.svg\")}}):(item.latestEventName === 'Unresponsive')?_c('img',{attrs:{\"src\":require(\"@/assets/icons/unresponsive.svg\")}}):(item.latestEventName === 'Responsive')?_c('img',{attrs:{\"src\":require(\"@/assets/icons/responsive.svg\")}}):(item.latestEventName === 'Unknown event')?_c('img',{attrs:{\"src\":require(\"@/assets/icons/unknown-error.svg\")}}):_c('img',{attrs:{\"src\":require(\"@/assets/icons/unknown-error.svg\")}})])]},proxy:true}],null,true)},[_c('v-row',{attrs:{\"justify\":\"space-between\",\"align\":\"center\",\"pt-2\":\"\"}},[_c('v-col',{staticClass:\"white--text\",attrs:{\"cols\":\"5\"}},[_vm._v(_vm._s(item.latestEventName))]),_c('v-col',{staticClass:\"text-right white--text pr-6\",attrs:{\"cols\":\"7\"}},[_vm._v(_vm._s(_vm.formatModifiedDate(item.modifiedDate)))])],1)],1)}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Axios, { AxiosResponse } from \"axios\";\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\nimport { ref } from \"@vue/composition-api\";\nexport default function (id: string) {\n const logItems = ref([]);\n const getLog = async () => {\n await defineHeaderAxios();\n Axios.get(`/api/sensor/history/${id}`)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n logItems.value = result.data;\n }\n })\n .catch((error) => {\n console.log(error);\n });\n };\n getLog();\n return {\n logItems,\n };\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {\n ref,\n defineComponent\n} from \"@vue/composition-api\";\nimport useSensorHistory from \"@/store/useSensorHistory\";\nimport useDevice from \"@/utilities/useDevice\";\nimport moment from 'moment-timezone';\nimport useUserSettings from \"@/store/useUserSettings\";\nimport UserSettingsViewModel from \"@/models/UserSettingsViewModel\";\n\nexport default defineComponent({\n setup(_, context) {\n const id = context.root.$route.params.id;\n const { getUserSettings } = useUserSettings();\n const userSettings = ref();\n getUserSettings().then((value: UserSettingsViewModel) => {\n userSettings.value = value;\n });\n const { logItems } = useSensorHistory(id);\n const formatModifiedDate = (modifiedDate) => {\n return moment.utc(modifiedDate).tz(userSettings.value.timezone).format(\"MMM DD, YYYY HH:mm:ss\");\n };\n const sensorId = parseInt(id);\n const sensorName = useDevice().getName(sensorId).toUpperCase();\n\n const goBack = () => {\n window.history.back();\n };\n\n return {\n logItems,\n sensorName,\n formatModifiedDate,\n goBack\n };\n }\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SensorLog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SensorLog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SensorLog.vue?vue&type=template&id=420d9d2e&scoped=true&\"\nimport script from \"./SensorLog.vue?vue&type=script&lang=ts&\"\nexport * from \"./SensorLog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SensorLog.vue?vue&type=style&index=0&id=420d9d2e&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"420d9d2e\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTimeline } from 'vuetify/lib/components/VTimeline';\nimport { VTimelineItem } from 'vuetify/lib/components/VTimeline';\ninstallComponents(component, {VAvatar,VBtn,VCol,VContainer,VIcon,VRow,VTimeline,VTimelineItem})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-card-title',{staticClass:\"text--white80 pa-0 pt-8\"},[_c('v-btn',{staticClass:\"text--white80 px-6\",attrs:{\"icon\":\"\"},on:{\"click\":_vm.successOk}},[_c('v-icon',{staticClass:\"text--white80\",attrs:{\"large\":\"\",\"left\":\"\"}},[_vm._v(\"mdi-arrow-u-left-top\")])],1),_c('span',{staticClass:\"title font-weight-light\"},[_vm._v(\"Add a new sailor friend\")])],1),_c('v-form',{ref:\"contactForm\",staticClass:\"backgroundWhite35 pa-4\",attrs:{\"lazy-validation\":\"\"},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{staticClass:\"text-input-white\",attrs:{\"counter\":30,\"rules\":_vm.nameRules,\"label\":\"Name\",\"color\":\"white\",\"required\":\"\"},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('v-text-field',{staticClass:\"text-input-white\",attrs:{\"rules\":_vm.emailRules,\"label\":\"E-mail\",\"color\":\"white\",\"required\":\"\"},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}}),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"d-flex flex-column\"},[_c('div',[_c('div',{staticClass:\"text-matching-input-label\"},[_vm._v(\" Phone number \")]),_c('vue-tel-input',_vm._b({on:{\"validate\":_vm.phoneObject},model:{value:(_vm.vueTel.phone),callback:function ($$v) {_vm.$set(_vm.vueTel, \"phone\", $$v)},expression:\"vueTel.phone\"}},'vue-tel-input',_vm.vueTel.props,false))],1)])])],1)],1),_c('v-row',{staticClass:\"justify-center\"},[_c('span',{staticClass:\"white--text font-weight-bold pa-4\"},[_vm._v(\"Notification Options\")]),_c('v-expansion-panels',[_c('v-expansion-panel',[_c('v-expansion-panel-header',{attrs:{\"expand-icon\":\"mdi-email\"}},[_vm._v(\" E-mail Notifications \")]),_c('v-expansion-panel-content',[_c('v-row',{staticClass:\"align-start\",attrs:{\"justify\":\"space-between\"}},[_c('v-flex',{attrs:{\"xs6\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"caption\",staticStyle:{\"font-style\":\"italic\"}},[_vm._v(\"The following notifications will be sent in 'Armed' state.\")]),_c('v-checkbox',{staticClass:\"py-0 my-0 pt-4\",attrs:{\"label\":\"Shore Power\",\"prepend-icon\":\"mdi-meter-electric\"},model:{value:(_vm.shorePowerActive),callback:function ($$v) {_vm.shorePowerActive=$$v},expression:\"shorePowerActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Smart Plug\",\"prepend-icon\":\"mdi-power-plug\"},model:{value:(_vm.smartplugActive),callback:function ($$v) {_vm.smartplugActive=$$v},expression:\"smartplugActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Main Door\",\"prepend-icon\":\"mdi-door\"},model:{value:(_vm.mainDoorActive),callback:function ($$v) {_vm.mainDoorActive=$$v},expression:\"mainDoorActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Hatch Door\",\"prepend-icon\":\"mdi-door\"},model:{value:(_vm.hatchActive),callback:function ($$v) {_vm.hatchActive=$$v},expression:\"hatchActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Geofence\",\"prepend-icon\":\"mdi-map-marker-radius\"},model:{value:(_vm.geofenceActive),callback:function ($$v) {_vm.geofenceActive=$$v},expression:\"geofenceActive\"}})],1)],1),_c('v-divider',{staticStyle:{\"margin-top\":\"15px\",\"margin-bottom\":\"30px\"},attrs:{\"vertical\":\"\",\"inset\":\"\"}}),_c('v-flex',{attrs:{\"xs6\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"caption\",staticStyle:{\"font-style\":\"italic\"}},[_vm._v(\"The following notifications will be sent in any state.\")]),_c('v-checkbox',{staticClass:\"py-0 my-0 pt-4\",attrs:{\"label\":\"GTW Power Loss\",\"prepend-icon\":\"mdi-power-plug-off\"},model:{value:(_vm.gatewayTamperedActive),callback:function ($$v) {_vm.gatewayTamperedActive=$$v},expression:\"gatewayTamperedActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"GTW Tampered\",\"prepend-icon\":\"mdi-domino-mask\"},model:{value:(_vm.gatewayPowerlossActive),callback:function ($$v) {_vm.gatewayPowerlossActive=$$v},expression:\"gatewayPowerlossActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Detectors\",\"prepend-icon\":\"mdi-security\"},model:{value:(_vm.detectorsActive),callback:function ($$v) {_vm.detectorsActive=$$v},expression:\"detectorsActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Low Voltage\",\"prepend-icon\":\"mdi-sail-boat\"},model:{value:(_vm.voltageLowActive),callback:function ($$v) {_vm.voltageLowActive=$$v},expression:\"voltageLowActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Low Battery\",\"prepend-icon\":\"mdi-access-point\"},model:{value:(_vm.lowBatteryActive),callback:function ($$v) {_vm.lowBatteryActive=$$v},expression:\"lowBatteryActive\"}})],1)],1)],1)],1)],1),_c('v-expansion-panel',[_c('v-expansion-panel-header',{attrs:{\"expand-icon\":\"mdi-message-text\"}},[_vm._v(\" SMS Notifications \")]),_c('v-expansion-panel-content',[_c('v-row',{staticClass:\"align-start\",attrs:{\"justify\":\"space-between\"}},[_c('v-flex',{attrs:{\"xs6\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"caption\",staticStyle:{\"font-style\":\"italic\"}},[_vm._v(\"The following notifications will be sent in 'Armed' state.\")]),_c('v-checkbox',{staticClass:\"py-0 my-0 pt-4\",attrs:{\"label\":\"Shore Power\",\"prepend-icon\":\"mdi-meter-electric\"},model:{value:(_vm.shorePowerSMSActive),callback:function ($$v) {_vm.shorePowerSMSActive=$$v},expression:\"shorePowerSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Smart Plug\",\"prepend-icon\":\"mdi-power-plug\"},model:{value:(_vm.smartPlugSMSActive),callback:function ($$v) {_vm.smartPlugSMSActive=$$v},expression:\"smartPlugSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Main Door\",\"prepend-icon\":\"mdi-door\"},model:{value:(_vm.mainDoorSMSActive),callback:function ($$v) {_vm.mainDoorSMSActive=$$v},expression:\"mainDoorSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Hatch Door\",\"prepend-icon\":\"mdi-calendar-minus\"},model:{value:(_vm.hatchSMSActive),callback:function ($$v) {_vm.hatchSMSActive=$$v},expression:\"hatchSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Geofence\",\"prepend-icon\":\"mdi-map-marker-radius\"},model:{value:(_vm.geofenceSMSActive),callback:function ($$v) {_vm.geofenceSMSActive=$$v},expression:\"geofenceSMSActive\"}})],1)],1),_c('v-divider',{staticStyle:{\"margin-top\":\"15px\",\"margin-bottom\":\"30px\"},attrs:{\"vertical\":\"\",\"inset\":\"\"}}),_c('v-flex',{attrs:{\"xs6\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"caption\",staticStyle:{\"font-style\":\"italic\"}},[_vm._v(\"The following notifications will be sent in any state.\")]),_c('v-checkbox',{staticClass:\"py-0 my-0 pt-4\",attrs:{\"label\":\"GTW Power Loss\",\"prepend-icon\":\"mdi-power-plug-off\"},model:{value:(_vm.gatewayTamperedSMSActive),callback:function ($$v) {_vm.gatewayTamperedSMSActive=$$v},expression:\"gatewayTamperedSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"GTW Tampered\",\"prepend-icon\":\"mdi-domino-mask\"},model:{value:(_vm.gatewayPowerlossSMSActive),callback:function ($$v) {_vm.gatewayPowerlossSMSActive=$$v},expression:\"gatewayPowerlossSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Detectors\",\"prepend-icon\":\"mdi-security\"},model:{value:(_vm.detectorsSMSActive),callback:function ($$v) {_vm.detectorsSMSActive=$$v},expression:\"detectorsSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Low Voltage\",\"prepend-icon\":\"mdi-sail-boat\"},model:{value:(_vm.voltageLowSMSActive),callback:function ($$v) {_vm.voltageLowSMSActive=$$v},expression:\"voltageLowSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Low Battery\",\"prepend-icon\":\"mdi-access-point\"},model:{value:(_vm.lowBatterySMSActive),callback:function ($$v) {_vm.lowBatterySMSActive=$$v},expression:\"lowBatterySMSActive\"}})],1)],1)],1)],1)],1)],1)],1),_c('v-row',[_c('v-col',{staticClass:\"text-right\"},[_c('v-btn',{attrs:{\"disabled\":!_vm.valid || !_vm.isValid,\"color\":\"success\"},on:{\"click\":_vm.initSave}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" mdi-check \")]),_vm._v(\" SAVE \")],1)],1)],1)],1),_c('ConfirmDialog',{attrs:{\"options\":{ noconfirm: true },\"title\":\"Success\",\"message\":\"Sailor friend addded successfully.\"},on:{\"OnOk\":_vm.successOk},model:{value:(_vm.showSuccess),callback:function ($$v) {_vm.showSuccess=$$v},expression:\"showSuccess\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { computed, defineComponent, ref } from \"@vue/composition-api\";\nimport useContact from \"@/store/useContact\";\nimport ContactViewModel from \"@/models/ContactViewModel\";\nimport { VueTelInput } from \"vue-tel-input\";\nimport { profile as profilestore } from \"@/store\";\n\nexport default defineComponent({\n components: {\n VueTelInput,\n ConfirmDialog: () =>\n import(/* webpackChunkName: \"settings\" */ \"./components/Dialogs/ConfirmDialog.vue\")\n },\n setup(_, context) {\n const captainEmail = computed(() => {\n const email = profilestore.profile && profilestore.profile.userId;\n return email ? email.toLowerCase() : \"\";\n });\n const { add, nameRules, emailRules } = useContact({ captainEmail: captainEmail.value });\n\n const contactForm = ref();\n const valid = ref(true);\n const showSuccess = ref(false);\n const name = ref(\"\");\n const email = ref(\"\");\n const vueTel = {\n phone: \"\",\n props: {\n autoFormat: true,\n autoDefaultCountry: true,\n dropdownOptions: {\n showDialCodeInList: true,\n showDialCodeInSelection: false,\n showFlags: true,\n showSearchBox: true,\n width: '300px',\n },\n ignoredCountries: [\"KP\", \"RU\"],\n inputOptions: {\n autocomplete: 'on',\n showDialCode: true,\n placeholder: 'Enterphone number',\n required: true,\n },\n mode: \"international\",\n preferredCountries: [\"DK\", \"NO\", \"SE\"],\n validCharactersOnly: true,\n }\n };\n const detectorsActive = ref(false);\n const shorePowerActive = ref(false);\n const smartplugActive = ref(false);\n const mainDoorActive = ref(false);\n const hatchActive = ref(false);\n const voltageLowActive = ref(false);\n const geofenceActive = ref(false);\n const lowBatteryActive = ref(false);\n const gatewayTamperedActive = ref(false);\n const gatewayPowerlossActive = ref(false);\n const detectorsSMSActive = ref(false);\n const shorePowerSMSActive = ref(false);\n const smartplugSMSActive = ref(false);\n const mainDoorSMSActive = ref(false);\n const hatchSMSActive = ref(false);\n const voltageLowSMSActive = ref(false);\n const geofenceSMSActive = ref(false);\n const lowBatterySMSActive = ref(false);\n const gatewayTamperedSMSActive = ref(false);\n const gatewayPowerlossSMSActive = ref(false);\n const isValid = ref(false);\n\n const phoneObject = function (object) {\n if (object.valid === true) {\n isValid.value = true;\n } else {\n isValid.value = false;\n }\n };\n\n const initSave = () => {\n if (contactForm.value) {\n const isFormValid = contactForm.value.validate();\n if (isFormValid && isValid.value) {\n const newContact = new ContactViewModel();\n newContact.name = name.value;\n newContact.email = email.value;\n newContact.phoneNumber = vueTel.phone;\n newContact.detectorsEmailActive = detectorsActive.value;\n newContact.shorePowerEmailActive = shorePowerActive.value;\n newContact.smartplugEmailActive = smartplugActive.value;\n newContact.mainDoorEmailActive = mainDoorActive.value;\n newContact.hatchEmailActive = hatchActive.value;\n newContact.voltageLowEmailActive = voltageLowActive.value;\n newContact.geofenceEmailActive = geofenceActive.value;\n newContact.lowBatterySensorEmailActive = lowBatteryActive.value;\n newContact.gatewayTamperedEmailActive = gatewayTamperedActive.value;\n newContact.gatewayPowerlossEmailActive = gatewayPowerlossActive.value;\n newContact.detectorsSMSActive = detectorsSMSActive.value;\n newContact.shorePowerSMSActive = shorePowerSMSActive.value;\n newContact.smartPlugSMSActive = smartplugSMSActive.value;\n newContact.mainDoorSMSActive = mainDoorSMSActive.value;\n newContact.hatchSMSActive = hatchSMSActive.value;\n newContact.voltageLowSMSActive = voltageLowSMSActive.value;\n newContact.geofenceSMSActive = geofenceSMSActive.value;\n newContact.lowBatterySensorSMSActive = lowBatterySMSActive.value;\n newContact.gatewayTamperedSMSActive = gatewayTamperedSMSActive.value;\n newContact.gatewayPowerlossSMSActive = gatewayPowerlossSMSActive.value;\n newContact.gsmConnectionLostEmailActive = false; // never allow contacts to have this active\n newContact.gsmConnectionLostSMSActive = false; // never allow contacts to have this active\n add(newContact).then(() => {\n showSuccess.value = true;\n });\n } else {\n valid.value = isFormValid;\n }\n }\n };\n\n const successOk = () => {\n window.history.back();\n };\n\n return {\n contactForm,\n valid,\n name,\n email,\n vueTel,\n phoneObject,\n isValid,\n detectorsActive,\n shorePowerActive,\n smartplugActive,\n mainDoorActive,\n hatchActive,\n voltageLowActive,\n geofenceActive,\n lowBatteryActive,\n gatewayTamperedActive,\n gatewayPowerlossActive,\n detectorsSMSActive,\n shorePowerSMSActive,\n smartplugSMSActive,\n mainDoorSMSActive,\n hatchSMSActive,\n voltageLowSMSActive,\n geofenceSMSActive,\n lowBatterySMSActive,\n gatewayTamperedSMSActive,\n gatewayPowerlossSMSActive,\n nameRules,\n emailRules,\n showSuccess,\n successOk,\n initSave\n };\n },\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddContact.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddContact.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AddContact.vue?vue&type=template&id=63574c8b&scoped=true&\"\nimport script from \"./AddContact.vue?vue&type=script&lang=ts&\"\nexport * from \"./AddContact.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AddContact.vue?vue&type=style&index=0&id=63574c8b&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"63574c8b\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VExpansionPanel } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelContent } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelHeader } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanels } from 'vuetify/lib/components/VExpansionPanel';\nimport { VFlex } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardTitle,VCheckbox,VCol,VContainer,VDivider,VExpansionPanel,VExpansionPanelContent,VExpansionPanelHeader,VExpansionPanels,VFlex,VForm,VIcon,VRow,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.contact)?_c('v-card',[_c('v-card-title',{staticClass:\"text--white80 pa-0 pt-8\"},[_c('v-btn',{staticClass:\"text--white80 px-6\",attrs:{\"icon\":\"\"},on:{\"click\":_vm.goBack}},[_c('v-icon',{staticClass:\"text--white80\",attrs:{\"large\":\"\",\"left\":\"\"}},[_vm._v(\"mdi-arrow-u-left-top\")])],1),_c('span',{staticClass:\"title font-weight-light\"},[_vm._v(\"Edit a sailor friend\")])],1),_c('v-form',{ref:\"contactForm\",staticClass:\"backgroundWhite35 pa-4\",attrs:{\"lazy-validation\":\"\"},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{staticClass:\"text-input-white\",attrs:{\"counter\":30,\"rules\":_vm.nameRules,\"label\":\"Name\",\"color\":\"white\",\"required\":\"\"},model:{value:(_vm.contact.name),callback:function ($$v) {_vm.$set(_vm.contact, \"name\", $$v)},expression:\"contact.name\"}}),_c('v-text-field',{staticClass:\"text-input-white\",attrs:{\"rules\":_vm.emailRules,\"label\":\"E-mail\",\"color\":\"white\",\"required\":\"\"},model:{value:(_vm.contact.email),callback:function ($$v) {_vm.$set(_vm.contact, \"email\", $$v)},expression:\"contact.email\"}}),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"d-flex flex-column\"},[_c('div',[_c('div',{staticClass:\"text-matching-input-label\"},[_vm._v(\" Phone number \")]),_c('vue-tel-input',_vm._b({on:{\"validate\":_vm.phoneObject},model:{value:(_vm.contact.phoneNumber),callback:function ($$v) {_vm.$set(_vm.contact, \"phoneNumber\", $$v)},expression:\"contact.phoneNumber\"}},'vue-tel-input',_vm.vueTel.props,false))],1)])])],1)],1),_c('v-row',{staticClass:\"justify-center\"},[_c('span',{staticClass:\"white--text font-weight-bold pa-4\"},[_vm._v(\"Notification Options\")]),_c('v-expansion-panels',[_c('v-expansion-panel',[_c('v-expansion-panel-header',{attrs:{\"expand-icon\":\"mdi-email\"}},[_vm._v(\" E-mail Notifications \")]),_c('v-expansion-panel-content',[_c('v-row',{staticClass:\"align-start\",attrs:{\"justify\":\"space-between\"}},[_c('v-flex',{attrs:{\"xs6\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"caption\",staticStyle:{\"font-style\":\"italic\"}},[_vm._v(\"The following notifications will be sent in 'Armed' state.\")]),_c('v-checkbox',{staticClass:\"py-0 my-0 pt-4\",attrs:{\"label\":\"Shore Power\",\"prepend-icon\":\"mdi-meter-electric\"},model:{value:(_vm.contact.shorePowerEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"shorePowerEmailActive\", $$v)},expression:\"contact.shorePowerEmailActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Smart Plug\",\"prepend-icon\":\"mdi-power-plug\"},model:{value:(_vm.contact.smartplugEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"smartplugEmailActive\", $$v)},expression:\"contact.smartplugEmailActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Main Door\",\"prepend-icon\":\"mdi-door\"},model:{value:(_vm.contact.mainDoorEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"mainDoorEmailActive\", $$v)},expression:\"contact.mainDoorEmailActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Hatch Door\",\"prepend-icon\":\"mdi-door\"},model:{value:(_vm.contact.hatchEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"hatchEmailActive\", $$v)},expression:\"contact.hatchEmailActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Geofence\",\"prepend-icon\":\"mdi-map-marker-radius\"},model:{value:(_vm.contact.geofenceEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"geofenceEmailActive\", $$v)},expression:\"contact.geofenceEmailActive\"}})],1)],1),_c('v-divider',{staticStyle:{\"margin-top\":\"15px\",\"margin-bottom\":\"30px\"},attrs:{\"vertical\":\"\",\"inset\":\"\"}}),_c('v-flex',{attrs:{\"xs6\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"caption\",staticStyle:{\"font-style\":\"italic\"}},[_vm._v(\"The following notifications will be sent in any state.\")]),_c('v-checkbox',{staticClass:\"py-0 my-0 pt-4\",attrs:{\"label\":\"GTW Power Loss\",\"prepend-icon\":\"mdi-power-plug-off\"},model:{value:(_vm.contact.gatewayTamperedEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"gatewayTamperedEmailActive\", $$v)},expression:\"contact.gatewayTamperedEmailActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"GTW Tampered\",\"prepend-icon\":\"mdi-domino-mask\"},model:{value:(_vm.contact.gatewayPowerlossEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"gatewayPowerlossEmailActive\", $$v)},expression:\"contact.gatewayPowerlossEmailActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Detectors\",\"prepend-icon\":\"mdi-security\"},model:{value:(_vm.contact.detectorsEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"detectorsEmailActive\", $$v)},expression:\"contact.detectorsEmailActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Low Voltage\",\"prepend-icon\":\"mdi-sail-boat\"},model:{value:(_vm.contact.voltageLowEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"voltageLowEmailActive\", $$v)},expression:\"contact.voltageLowEmailActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Low Battery\",\"prepend-icon\":\"mdi-access-point\"},model:{value:(_vm.contact.lowBatterySensorEmailActive),callback:function ($$v) {_vm.$set(_vm.contact, \"lowBatterySensorEmailActive\", $$v)},expression:\"contact.lowBatterySensorEmailActive\"}})],1)],1)],1)],1)],1),_c('v-expansion-panel',[_c('v-expansion-panel-header',{attrs:{\"expand-icon\":\"mdi-message-text\"}},[_vm._v(\" SMS Notifications \")]),_c('v-expansion-panel-content',[_c('v-row',{staticClass:\"align-start\",attrs:{\"justify\":\"space-between\"}},[_c('v-flex',{attrs:{\"xs6\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"caption\",staticStyle:{\"font-style\":\"italic\"}},[_vm._v(\"The following notifications will be sent in 'Armed' state.\")]),_c('v-checkbox',{staticClass:\"py-0 my-0 pt-4\",attrs:{\"label\":\"Shore Power\",\"prepend-icon\":\"mdi-meter-electric\"},model:{value:(_vm.contact.shorePowerSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"shorePowerSMSActive\", $$v)},expression:\"contact.shorePowerSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Smart Plug\",\"prepend-icon\":\"mdi-power-plug\"},model:{value:(_vm.contact.smartPlugSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"smartPlugSMSActive\", $$v)},expression:\"contact.smartPlugSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Main Door\",\"prepend-icon\":\"mdi-door\"},model:{value:(_vm.contact.mainDoorSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"mainDoorSMSActive\", $$v)},expression:\"contact.mainDoorSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Hatch Door\",\"prepend-icon\":\"mdi-calendar-minus\"},model:{value:(_vm.contact.hatchSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"hatchSMSActive\", $$v)},expression:\"contact.hatchSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Geofence\",\"prepend-icon\":\"mdi-map-marker-radius\"},model:{value:(_vm.contact.geofenceSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"geofenceSMSActive\", $$v)},expression:\"contact.geofenceSMSActive\"}})],1)],1),_c('v-divider',{staticStyle:{\"margin-top\":\"15px\",\"margin-bottom\":\"30px\"},attrs:{\"vertical\":\"\",\"inset\":\"\"}}),_c('v-flex',{attrs:{\"xs6\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"caption\",staticStyle:{\"font-style\":\"italic\"}},[_vm._v(\"The following notifications will be sent in any state.\")]),_c('v-checkbox',{staticClass:\"py-0 my-0 pt-4\",attrs:{\"label\":\"GTW Power Loss\",\"prepend-icon\":\"mdi-power-plug-off\"},model:{value:(_vm.contact.gatewayTamperedSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"gatewayTamperedSMSActive\", $$v)},expression:\"contact.gatewayTamperedSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"GTW Tampered\",\"prepend-icon\":\"mdi-domino-mask\"},model:{value:(_vm.contact.gatewayPowerlossSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"gatewayPowerlossSMSActive\", $$v)},expression:\"contact.gatewayPowerlossSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Detectors\",\"prepend-icon\":\"mdi-security\"},model:{value:(_vm.contact.detectorsSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"detectorsSMSActive\", $$v)},expression:\"contact.detectorsSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Low Voltage\",\"prepend-icon\":\"mdi-sail-boat\"},model:{value:(_vm.contact.voltageLowSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"voltageLowSMSActive\", $$v)},expression:\"contact.voltageLowSMSActive\"}}),_c('v-checkbox',{staticClass:\"py-0 my-0\",attrs:{\"label\":\"Low Battery\",\"prepend-icon\":\"mdi-access-point\"},model:{value:(_vm.contact.lowBatterySensorSMSActive),callback:function ($$v) {_vm.$set(_vm.contact, \"lowBatterySensorSMSActive\", $$v)},expression:\"contact.lowBatterySensorSMSActive\"}})],1)],1)],1)],1)],1)],1)],1),_c('v-row',[_c('v-col',{staticClass:\"text-left\"},[_c('v-btn',{attrs:{\"disabled\":!_vm.valid,\"color\":\"error\"},on:{\"click\":_vm.initRemove}},[_vm._v(\" DELETE \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-delete \")])],1)],1),_c('v-col',{staticClass:\"text-right\"},[_c('v-btn',{attrs:{\"disabled\":!_vm.valid || !_vm.isValid,\"color\":\"success\"},on:{\"click\":_vm.initSave}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" mdi-check \")]),_vm._v(\" SAVE \")],1)],1)],1)],1),_c('ConfirmDialog',{attrs:{\"title\":\"Confirm\",\"message\":\"Do you want to remove the contact ?\"},on:{\"OnOk\":_vm.confirmOk},model:{value:(_vm.showConfirm),callback:function ($$v) {_vm.showConfirm=$$v},expression:\"showConfirm\"}}),_c('ConfirmDialog',{attrs:{\"options\":{ noconfirm: true },\"title\":\"Success\",\"message\":\"Changes saved successfully.\"},on:{\"OnOk\":_vm.successOk},model:{value:(_vm.showSuccess),callback:function ($$v) {_vm.showSuccess=$$v},expression:\"showSuccess\"}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, ref } from \"@vue/composition-api\";\nimport useContact from \"@/store/useContact\";\nimport ContactViewModel from \"@/models/ContactViewModel\";\nimport { VueTelInput } from \"vue-tel-input\";\n\nexport default defineComponent({\n components: {\n VueTelInput,\n ConfirmDialog: () =>\n import(/* webpackChunkName: \"settings\" */ \"./components/Dialogs/ConfirmDialog.vue\")\n },\n setup(_, context) {\n const { update, get, remove, nameRules, emailRules } = useContact();\n const contactForm = ref();\n const contact = ref();\n const id = parseInt(context.root.$route.params.id);\n const valid = ref(true);\n const showConfirm = ref(false);\n const showSuccess = ref(false);\n\n const goBack = () => {\n window.history.back();\n };\n\n const successOk = () => {\n };\n\n const initSave = () => {\n if (contactForm.value) {\n valid.value = contactForm.value.validate();\n if (valid.value && contact.value) {\n update(contact.value).then(() => {\n showSuccess.value = true;\n });\n }\n }\n };\n\n const vueTel = {\n phone: \"\",\n props: {\n autoFormat: true,\n autoDefaultCountry: true,\n dropdownOptions: {\n showDialCodeInList: true,\n showDialCodeInSelection: false,\n showFlags: true,\n showSearchBox: true,\n width: '300px',\n },\n ignoredCountries: [\"KP\", \"RU\"],\n inputOptions: {\n autocomplete: 'on',\n showDialCode: true,\n placeholder: 'Enter phone number',\n required: true,\n },\n mode: \"international\",\n preferredCountries: [\"DK\", \"NO\", \"SE\"],\n validCharactersOnly: true,\n }\n };\n\n const initRemove = () => {\n showConfirm.value = true;\n };\n\n const confirmOk = () => {\n remove(id).then(() => {\n window.history.back();\n });\n };\n\n get(id).then((model: ContactViewModel) => {\n contact.value = model;\n });\n\n \n\n return {\n contactForm,\n valid,\n contact,\n nameRules,\n emailRules,\n initRemove,\n initSave,\n confirmOk,\n successOk,\n showConfirm,\n showSuccess,\n goBack,\n vueTel,\n };\n },\n data: () => ({\n isValid: false,\n }),\n methods: {\n phoneObject: function (object) {\n console.log(object);\n if (object.valid === true) {\n this.isValid = true;\n } else {\n this.isValid = false;\n }\n },\n }\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditContact.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditContact.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EditContact.vue?vue&type=template&id=36d996e7&scoped=true&\"\nimport script from \"./EditContact.vue?vue&type=script&lang=ts&\"\nexport * from \"./EditContact.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./EditContact.vue?vue&type=style&index=0&id=36d996e7&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"36d996e7\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VExpansionPanel } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelContent } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelHeader } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanels } from 'vuetify/lib/components/VExpansionPanel';\nimport { VFlex } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardTitle,VCheckbox,VCol,VContainer,VDivider,VExpansionPanel,VExpansionPanelContent,VExpansionPanelHeader,VExpansionPanels,VFlex,VForm,VIcon,VRow,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"py-2\",attrs:{\"elevation\":\"0\",\"tile\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c('v-icon',{attrs:{\"x-large\":\"\",\"color\":\"#ffffff\"}},[_vm._v(\"mdi-satellite-variant\")]),_c('v-col',{staticClass:\"text-center text-lg-h4 text--white80 py-2 pt-6\",attrs:{\"cols\":\"12\"}},[_vm._v(\" LOCATION PERMISSION \")]),_c('v-col',{staticClass:\"text-center text--white80\",attrs:{\"cols\":\"12\"}},[_vm._v(\" \"+_vm._s(_vm.permissionText)+\" \")]),_c('v-col',{staticClass:\"text-center pt-6\",attrs:{\"cols\":\"12\"}},[_c('v-btn',{attrs:{\"color\":\"success\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.requestUserPosition.apply(null, arguments)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-check\")]),_vm._v(\"REQUEST USER POSITION \")],1)],1)],1),(_vm.showError)?_c('v-row',{attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\"text-center pt-2 text--red text-lg-h6\",attrs:{\"cols\":\"12\"}},[_vm._v(\" ERROR GETTING GEOLOCATION \")])],1):_vm._e(),(_vm.showError)?_c('v-row',{attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\"text-center text--red\",attrs:{\"cols\":\"12\"}},[_vm._v(\" \"+_vm._s(_vm.errorMessage)+\" \")])],1):_vm._e(),_c('v-row',{attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\"text-center pt-2 text--white80 text-lg-h6\",attrs:{\"cols\":\"12\"}},[_vm._v(\" \"+_vm._s(_vm.instructionHeader)+\" \")])],1),_c('v-row',{attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\"text-center\",attrs:{\"cols\":\"8\"}},[(_vm.isIOS)?_c('v-img',{attrs:{\"src\":require(\"@/assets/img/ios-prompt.png\"),\"contain\":\"\"}}):_c('v-img',{attrs:{\"src\":require(\"@/assets/img/android-prompt.png\"),\"contain\":\"\"}})],1)],1),_c('v-row',{attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\"text-center text--white80\",attrs:{\"cols\":\"12\"}},[_vm._v(\" \"+_vm._s(_vm.instructionText)+\" \")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {\n defineComponent,\n ref,\n computed\n} from \"@vue/composition-api\";\nimport { alarm, app } from \"@/store\";\nimport useIOSDetection from \"@/utilities/useIOSDetection\";\n\nexport default defineComponent({\n name: \"GeoPermission\",\n props: {\n destination: { type: String, required: true },\n },\n setup(_, { root }) {\n\n const isIOS = useIOSDetection().isIos();\n\n const destination = root.$route.params.destination;\n\n const errorMessage = ref(\"\");\n\n const showError = computed(() => {\n return errorMessage.value != \"\";\n });\n\n const permissionText = computed(() => {\n return \"We need your permission to access your location. Please click on the button bellow and when prompted, select \\\"Allow while using the app\\\"\";\n });\n\n const instructionHeader = computed(() => {\n if (isIOS) {\n return \"iOS Instructions (Safari)\";\n } else {\n return \"Android Instructions\";\n }\n });\n\n const instructionText = computed(() => {\n if (isIOS) {\n return \"When prompted, click \\\"Allow\\\"\";\n } else {\n return \"When prompted, select \\\"Precise\\\" and then \\\"While using the app\\\"\";\n }\n });\n\n const requestUserPosition = () => {\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(\n (position: GeolocationPosition) => {\n handlePositionSuccess(position);\n },\n (error: GeolocationPositionError) => {\n handlePositionError(error);\n },\n { enableHighAccuracy: true, timeout: 20000, maximumAge: 0 }\n );\n } else {\n errorMessage.value = \"Geolocation is not supported by this browser.\";\n app.error = errorMessage.value;\n }\n };\n\n const handlePositionSuccess = (position: GeolocationPosition) => {\n alarm.SetUserLocation(position);\n if (destination == \"mob\" && alarm.userLocReady) {\n root.$router.push({ name: \"mob\" });\n } else if (destination == \"map\" && alarm.userLocReady) {\n root.$router.push({ name: \"map\" });\n } else {\n root.$router.push({ name: \"home\" });\n }\n };\n\n const handlePositionError = (error: GeolocationPositionError) => {\n if (error.code === error.PERMISSION_DENIED) {\n errorMessage.value = \"User denied the request for geolocation.\";\n } else if (error.code === error.POSITION_UNAVAILABLE) {\n errorMessage.value = \"Location information is unavailable.\";\n } else if (error.code === error.TIMEOUT) {\n errorMessage.value = \"The request to get user location timed out.\";\n } else {\n errorMessage.value = \"An unknown error occurred.\";\n }\n app.error = errorMessage.value;\n };\n\n return {\n requestUserPosition,\n errorMessage,\n instructionHeader,\n instructionText,\n permissionText,\n showError,\n isIOS,\n };\n },\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GeoPermission.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GeoPermission.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GeoPermission.vue?vue&type=template&id=fd9c244e&scoped=true&\"\nimport script from \"./GeoPermission.vue?vue&type=script&lang=ts&\"\nexport * from \"./GeoPermission.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fd9c244e\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCol,VIcon,VImg,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"id\":\"logContainer\",\"fill-height\":\"\",\"fluid\":\"\"}},[_c('v-row',{staticClass:\"fill-height\",attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"fill-height\",attrs:{\"cols\":\"12\"}},[_c('v-row',{staticStyle:{\"height\":\"60px\"},attrs:{\"no-gutters\":\"\"}},[_c('v-sheet',{staticClass:\"blackSheetStyle\",attrs:{\"color\":\"black\",\"tile\":\"\",\"height\":\"60px\",\"width\":\"100%\"}},[_c('v-row',{staticStyle:{\"height\":\"60px\"},attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"px-2\",attrs:{\"cols\":\"auto\",\"align-self\":\"center\"}},[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.goBack}},[_c('v-img',{attrs:{\"src\":require(\"@/assets/icons/arrow-u-left-top.svg\"),\"max-width\":\"36px\"}})],1)],1),_c('v-spacer'),_c('v-col',{staticClass:\"px-2\",attrs:{\"cols\":\"auto\",\"align-self\":\"center\"}},[_c('span',{staticClass:\"title-style\"},[_vm._v(\"Captain's Log - \"+_vm._s(_vm.formattedDate))])]),_c('v-spacer'),_c('v-col',{staticClass:\"px-2\",attrs:{\"cols\":\"auto\",\"align-self\":\"center\"}},[_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":_vm.showLoadingDialog},on:{\"click\":function($event){_vm.showExtras = !_vm.showExtras}}},[_c('v-img',{attrs:{\"src\":require(\"@/assets/icons/dots-vertical.svg\"),\"max-width\":\"36px\"}})],1)],1)],1)],1)],1),_c('div',{ref:\"map\",staticClass:\"map\",staticStyle:{\"height\":\"100%\",\"overflow\":\"visible\"}}),_c('ShareDialog',{attrs:{\"model\":{ headline: 'Ready to share', text: '', imageUrl: _vm.shareImageUrl}},on:{\"OnShare\":_vm.shareNow,\"OnCancel\":function($event){_vm.showShareDialog = false}},model:{value:(_vm.showShareDialog),callback:function ($$v) {_vm.showShareDialog=$$v},expression:\"showShareDialog\"}}),_c('div',{staticClass:\"logoOnTop\"},[_c('v-img',{attrs:{\"contain\":\"\",\"position\":\"top center\",\"max-height\":\"56px\",\"max-width\":\"200px\",\"src\":\"/img/logo.png\"}})],1)],1)],1),_c('div',{staticClass:\"compassOnTop\"},[_c('v-img',{attrs:{\"contain\":\"\",\"max-height\":\"60px\",\"max-width\":\"60px\",\"width\":\"60px\",\"height\":\"60px\",\"src\":require(\"@/assets/icons/compass.svg\")}})],1),_c('div',{staticClass:\"switchOnTop\",on:{\"click\":function($event){_vm.showCarousel = !_vm.showCarousel}}},[(_vm.showCarousel)?_c('v-img',{attrs:{\"src\":require(\"@/assets/icons/view-sequential.svg\"),\"max-width\":\"45px\",\"max-height\":\"45px\",\"width\":\"45px\",\"height\":\"45px\"}}):_c('v-img',{attrs:{\"src\":require(\"@/assets/icons/view-carousel-outline.svg\"),\"max-width\":\"45px\",\"max-height\":\"45px\",\"width\":\"45px\",\"height\":\"45px\"}})],1),_c('div',{staticClass:\"hintOnTop\",on:{\"click\":function($event){_vm.showHint = !_vm.showHint}}},[_c('v-img',{attrs:{\"contain\":\"\",\"max-height\":\"35px\",\"max-width\":\"35px\",\"width\":\"35px\",\"height\":\"35px\",\"src\":require(\"@/assets/icons/info-circle.svg\")}})],1),(_vm.showCarousel)?_c('v-carousel',{staticClass:\"dataCarousel\",attrs:{\"continuous\":\"\",\"cycle\":\"\",\"dark\":\"\",\"interval\":\"3000\",\"hide-delimiters\":\"\",\"hide-delimiter-background\":\"\",\"height\":\"56px\",\"show-arrows\":false},model:{value:(_vm.model),callback:function ($$v) {_vm.model=$$v},expression:\"model\"}},_vm._l((_vm.tripData),function(data,i){return _c('v-carousel-item',{key:i},[_c('v-sheet',{attrs:{\"color\":\"transparent\",\"tile\":\"\",\"height\":\"100%\"},on:{\"click\":function($event){_vm.showCarousel = !_vm.showCarousel}}},[_c('div',{staticClass:\"d-flex align-center justify-center py-1\"},[_c('v-img',{staticClass:\"mr-2\",attrs:{\"src\":_vm.getIconPath(data.icon),\"max-width\":\"18px\",\"width\":\"18px\",\"max-height\":\"18px\",\"height\":\"18px\"}}),_c('span',{staticClass:\"screenshot-style\"},[_vm._v(_vm._s(data.label)+\": \"+_vm._s(data.value)+\" \"+_vm._s(data.unit))])],1)])],1)}),1):_c('v-sheet',{staticClass:\"dataSheetAutoHeight ml-0\",attrs:{\"color\":\"transparent\",\"tile\":\"\"},on:{\"click\":function($event){_vm.showCarousel = !_vm.showCarousel}}},_vm._l((_vm.tripData),function(data,i){return _c('div',{key:i,staticClass:\"py-1 pl-2\",attrs:{\"align\":\"left\"}},[_c('div',{staticClass:\"d-flex align-center\"},[_c('v-img',{staticClass:\"mr-2\",attrs:{\"src\":_vm.getIconPath(data.icon),\"max-width\":\"18px\",\"width\":\"18px\",\"max-height\":\"18px\",\"height\":\"18px\"}}),_c('span',{staticClass:\"screenshot-style\"},[_vm._v(_vm._s(data.label)+\": \"+_vm._s(data.value)+\" \"+_vm._s(data.unit))])],1)])}),0),_c('v-dialog',{staticStyle:{\"top\":\"-200px\"},attrs:{\"scrollable\":\"\",\"height\":\"600\"},model:{value:(_vm.showExtras),callback:function ($$v) {_vm.showExtras=$$v},expression:\"showExtras\"}},[_c('v-card',{staticStyle:{\"background-color\":\"#FFFFFF\"},attrs:{\"loading\":_vm.showLoadingDialog}},[_c('template',{slot:\"progress\"},[_c('v-progress-linear',{attrs:{\"color\":\"#00aa87\",\"height\":\"8\",\"indeterminate\":\"\"}})],1),_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\"Extra options\")])]),_c('v-divider'),_c('v-card-text',{staticClass:\"pb-0 px-6\"},[_c('v-list',{attrs:{\"disabled\":_vm.showLoadingDialog}},[_c('v-list-item',{on:{\"click\":function($event){return _vm.captureAndShareBase(false)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-share-variant-outline\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Share captain's log\")])],1)],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.captureAndShareBase(true)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-share-variant-outline\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Share log with journey memories\")])],1)],1),(_vm.isFavourite && _vm.isCaptain)?_c('v-list-item',{on:{\"click\":function($event){_vm.showEditNicknameDialog = true}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-pencil-outline\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Edit favourite journey\")])],1)],1):_vm._e(),(_vm.isFavourite && _vm.isCaptain)?_c('v-list-item',{on:{\"click\":function($event){_vm.showDeleteDialog = true}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-delete\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Delete favourite journey\")])],1)],1):_vm._e(),(!_vm.isFavourite && _vm.isCaptain)?_c('v-list-item',{on:{\"click\":function($event){_vm.showSaveDialog = true}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-content-save-outline\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Save to favourites\")])],1)],1):_vm._e(),(_vm.isFavourite && (_vm.hasGalleryAccess || _vm.isCaptain))?_c('v-list-item',{on:{\"click\":function($event){$event.stopPropagation();return _vm.goToGallery.apply(null, arguments)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-panorama-variant-outline\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Journey memories\")])],1)],1):_vm._e()],1)],1),_c('v-divider'),_c('v-card-actions',[_c('v-row',[_c('v-col',{staticClass:\"text-center px-0 py-4\",attrs:{\"cols\":\"12\"}},[_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":function($event){_vm.showExtras = !_vm.showExtras}}},[_vm._v(\" RETURN \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-arrow-u-left-top \")])],1)],1)],1)],1)],2)],1),_c('v-dialog',{staticStyle:{\"top\":\"-200px\"},attrs:{\"width\":\"85%\",\"persistent\":\"\",\"scrollable\":\"\",\"height\":\"500\"},model:{value:(_vm.showSaveDialog),callback:function ($$v) {_vm.showSaveDialog=$$v},expression:\"showSaveDialog\"}},[_c('v-card',{staticStyle:{\"background-color\":\"#FFFFFF\"}},[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\"Save journey as favourite\")])]),_c('v-divider'),_c('v-card-text',[_c('v-text-field',{attrs:{\"label\":\"Journey nickname\",\"required\":\"\",\"counter\":30},model:{value:(_vm.nickname),callback:function ($$v) {_vm.nickname=$$v},expression:\"nickname\"}}),_c('v-text-field',{attrs:{\"label\":\"Journey description\",\"counter\":40},model:{value:(_vm.description),callback:function ($$v) {_vm.description=$$v},expression:\"description\"}})],1),_c('v-divider'),_c('v-card-actions',[_c('v-row',[_c('v-col',{staticClass:\"text-left pl-6 py-4\",attrs:{\"cols\":\"6\"}},[_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":function($event){_vm.showSaveDialog = !_vm.showSaveDialog}}},[_vm._v(\" RETURN \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-arrow-u-left-top \")])],1)],1),_c('v-col',{staticClass:\"text-right pr-6 py-4\",attrs:{\"cols\":\"6\"}},[_c('v-btn',{attrs:{\"color\":\"success\"},on:{\"click\":_vm.saveJourney}},[_vm._v(\" SAVE \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-check \")])],1)],1)],1)],1)],1)],1),_c('v-dialog',{staticStyle:{\"top\":\"-200px\"},attrs:{\"width\":\"85%\",\"persistent\":\"\",\"scrollable\":\"\",\"height\":\"500\"},model:{value:(_vm.showDeleteDialog),callback:function ($$v) {_vm.showDeleteDialog=$$v},expression:\"showDeleteDialog\"}},[_c('v-card',{staticStyle:{\"background-color\":\"#FFFFFF\"}},[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\"Remove journey from favourites\")])]),_c('v-divider'),_c('v-card-text',{staticClass:\"px-6 py-4 text-center\"},[_vm._v(\" Are you sure you want to remove this journey from your favourites? This action will also remove all the photos from the gallery! \")]),_c('v-divider'),_c('v-card-actions',[_c('v-row',[_c('v-col',{staticClass:\"text-left pl-6 py-4\",attrs:{\"cols\":\"6\"}},[_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":function($event){_vm.showDeleteDialog = !_vm.showDeleteDialog}}},[_vm._v(\" RETURN \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-arrow-u-left-top \")])],1)],1),_c('v-col',{staticClass:\"text-right pr-6 py-4\",attrs:{\"cols\":\"6\"}},[_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":_vm.deleteJourney}},[_vm._v(\" REMOVE \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-delete \")])],1)],1)],1)],1)],1)],1),_c('v-dialog',{staticStyle:{\"top\":\"-200px\"},attrs:{\"width\":\"85%\",\"persistent\":\"\",\"scrollable\":\"\",\"height\":\"500\"},model:{value:(_vm.showEditNicknameDialog),callback:function ($$v) {_vm.showEditNicknameDialog=$$v},expression:\"showEditNicknameDialog\"}},[_c('v-card',{staticStyle:{\"background-color\":\"#FFFFFF\"}},[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\"Edit journey\")])]),_c('v-divider'),_c('v-card-text',[_c('v-text-field',{attrs:{\"label\":\"Journey nickname\",\"required\":\"\",\"counter\":30},model:{value:(_vm.journey.nickname),callback:function ($$v) {_vm.$set(_vm.journey, \"nickname\", $$v)},expression:\"journey.nickname\"}}),_c('v-text-field',{attrs:{\"label\":\"Journey description\",\"counter\":40},model:{value:(_vm.journey.description),callback:function ($$v) {_vm.$set(_vm.journey, \"description\", $$v)},expression:\"journey.description\"}})],1),_c('v-divider'),_c('v-card-actions',[_c('v-row',[_c('v-col',{staticClass:\"text-left pl-6 py-4\",attrs:{\"cols\":\"6\"}},[_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":function($event){_vm.showEditNicknameDialog = !_vm.showEditNicknameDialog}}},[_vm._v(\" RETURN \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-arrow-u-left-top \")])],1)],1),_c('v-col',{staticClass:\"text-right pr-6 py-4\",attrs:{\"cols\":\"6\"}},[_c('v-btn',{attrs:{\"color\":\"success\"},on:{\"click\":_vm.updateJourney}},[_vm._v(\" SAVE \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-check \")])],1)],1)],1)],1)],1)],1),_c('v-dialog',{staticStyle:{\"top\":\"-200px\"},attrs:{\"width\":\"95%\",\"max-width\":\"400px\",\"scrollable\":\"\",\"height\":\"600px\"},model:{value:(_vm.showHint),callback:function ($$v) {_vm.showHint=$$v},expression:\"showHint\"}},[_c('v-card',{staticStyle:{\"background-color\":\"#FFFFFF\"}},[_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\"Captain's Log Hints\")])]),_c('v-divider'),_c('v-card-text',{staticStyle:{\"height\":\"400px\"}},[_c('v-list',_vm._l((_vm.hintItems),function(item,i){return _c('v-list-item',{key:i},[_c('v-list-item-avatar',[_c('v-img',{staticStyle:{\"height\":\"40px\"},attrs:{\"contain\":\"\",\"src\":_vm.getIconPath(item.icon)}})],1),_c('v-list-item-content',[_c('v-list-item-title',{domProps:{\"textContent\":_vm._s(item.text)}}),(item.subtext)?_c('v-list-item-subtitle',{domProps:{\"textContent\":_vm._s(item.subtext)}}):_vm._e()],1)],1)}),1)],1),_c('v-divider'),_c('v-card-actions',[_c('v-row',[_c('v-col',{staticClass:\"text-center px-0 py-4\",attrs:{\"cols\":\"12\"}},[_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":function($event){_vm.showHint = !_vm.showHint}}},[_vm._v(\" RETURN \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-arrow-u-left-top \")])],1)],1)],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Axios, { AxiosResponse } from \"axios\";\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\nimport FavouriteJourneyViewModel from \"@/models/FavouriteJourneyViewModel\";\nexport default function () {\n\n const saveFavouriteJourney = async (\n model: FavouriteJourneyViewModel\n ): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.post(\"/api/favouriteJourney\", model)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve();\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n\n const updateFavouriteJourney = async (\n model: FavouriteJourneyViewModel\n ): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.put(`/api/favouriteJourney/${model.id}`, model)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n console.log(\"Success update journey\");\n resolve();\n } else {\n console.log(\"Error update journey\");\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n\n const getFavouriteJourney = async (\n id: number\n ): Promise => {\n await defineHeaderAxios();\n return new Promise((resolve, reject) => {\n Axios.get(`/api/favouriteJourney/${id}`)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve(result.data);\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n\n const deleteFavouriteJourney = async (id: number): Promise => {\n await defineHeaderAxios();\n\n return new Promise((resolve, reject) => {\n Axios.delete(`/api/favouriteJourney/${id}`)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n resolve();\n } else {\n reject();\n }\n })\n .catch((error) => {\n console.log(error);\n reject();\n });\n });\n };\n return {\n saveFavouriteJourney,\n updateFavouriteJourney,\n getFavouriteJourney,\n deleteFavouriteJourney,\n };\n}\n","export default class FavouriteJourneyViewModel {\n public id: number;\n public deviceId: string;\n public favouriteDate: string;\n public nickname: string;\n public description: string;\n public modifiedDate: string;\n public insertedDate: string;\n public image1: string;\n public image2: string;\n public image3: string;\n public image4: string;\n public image5: string;\n}\n","import { BlobServiceClient, ContainerClient } from \"@azure/storage-blob\";\n\nconst connectionString =\n \"DefaultEndpointsProtocol=https;AccountName=dssstorageaccountprod01;AccountKey=11Th42H42gyWO7Lwo2TKYz9nn4miBlOl26kZ2+ag1TNo3K6H2KHQTdD38fS+Mga8fWJTdi4QhyNS/F2VyFT/Gg==;EndpointSuffix=core.windows.net\"; // Change this to environment variable\n\nconst containerName = \"user-image-storage\";\n\nconst blobSasUrl =\n \"https://dssstorageaccountprod01.blob.core.windows.net/?sv=2022-11-02&ss=b&srt=sco&sp=rwdlacyx&se=2023-12-31T22:59:59Z&st=2023-07-31T09:54:32Z&spr=https&sig=VgKSMjTiqKeOJ2xJe3GAZDF%2FWAkyJOa2Ue%2F7UAh3mjM%3D\";\n\nfunction getBlobServiceClient(): BlobServiceClient {\n return new BlobServiceClient(blobSasUrl);\n}\n\nexport async function uploadImageToBlobStorage(\n fileName: string,\n fileData: Uint8Array\n): Promise {\n const blobServiceClient = getBlobServiceClient();\n const containerClient: ContainerClient =\n blobServiceClient.getContainerClient(containerName);\n const blockBlobClient = containerClient.getBlockBlobClient(fileName);\n\n try {\n await blockBlobClient.uploadData(fileData);\n console.log(\"Image uploaded successfully!\");\n } catch (error) {\n console.error(\"Error uploading image:\", error);\n }\n}\n\nexport async function downloadImageFromBlobStorage(\n fileName: string\n): Promise {\n const blobServiceClient = getBlobServiceClient();\n const containerClient: ContainerClient =\n blobServiceClient.getContainerClient(containerName);\n const blockBlobClient = containerClient.getBlockBlobClient(fileName);\n\n try {\n const downloadBlockBlobResponse = await blockBlobClient.download(0);\n if (!downloadBlockBlobResponse.blobBody) {\n throw new Error(\"No data in blobBody\");\n }\n\n const blobData = await downloadBlockBlobResponse.blobBody;\n const arrayBuffer = await blobData.arrayBuffer();\n const fileData = new Uint8Array(arrayBuffer);\n\n console.log(\"Image downloaded successfully!\");\n return fileData;\n } catch (error) {\n console.error(\"Error downloading image:\", error);\n return new Uint8Array();\n }\n}\n\nexport async function deleteImageFromBlobStorage(\n fileName: string\n): Promise {\n const blobServiceClient = getBlobServiceClient();\n const containerClient: ContainerClient =\n blobServiceClient.getContainerClient(containerName);\n const blockBlobClient = containerClient.getBlockBlobClient(fileName);\n\n try {\n await blockBlobClient.delete();\n console.log(\"Image deleted successfully!\");\n } catch (error) {\n console.error(\"Error deleting image:\", error);\n }\n}\n\nexport async function deleteImagesStartingWith(prefix: string): Promise {\n const blobServiceClient = getBlobServiceClient();\n const containerClient: ContainerClient =\n blobServiceClient.getContainerClient(containerName);\n try {\n for await (const blob of containerClient.listBlobsFlat({\n prefix,\n })) {\n const blockBlobClient = containerClient.getBlockBlobClient(\n blob.name\n );\n await blockBlobClient.delete();\n console.log(`Deleted blob with name: ${blob.name}`);\n }\n } catch (error) {\n console.error(\"Error deleting images:\", error);\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n import {\n defineComponent,\n ref,\n computed,\n onMounted,\n watch,\n } from \"@vue/composition-api\";\n import { profile as profilestore } from \"@/store/index\";\n import { alarm, app } from \"@/store\";\n import parseISO from \"date-fns/esm/fp/parseISO/index\";\n import useLogbook from \"@/store/useLogbook\";\n import useMap from \"@/utilities/useGoogleMaps\";\n import { domToPng, domToBlob } from 'modern-screenshot'\n import useFavouriteJourney from \"@/store/useFavouriteJourney\";\n import FavouriteJourneyViewModel from \"../models/FavouriteJourneyViewModel\";\n import ProfileViewModel from \"@/models/ProfileViewModel\";\n import { deleteImageFromBlobStorage, downloadImageFromBlobStorage, uploadImageToBlobStorage, deleteImagesStartingWith } from \"../store/useUserPictureStorage\";\nimport { ca } from \"date-fns/locale\";\n\n export default defineComponent({\n name: \"LogbookRecord\",\n components: {\n ConfirmDialog: () =>\n import(/* webpackChunkName: \"settings\" */ \"./components/Dialogs/ConfirmDialog.vue\"),\n ShareDialog: () =>\n import(/* webpackChunkName: \"settings\" */ \"./components/Dialogs/ShareDialog.vue\"),\n LoadingDialog: () =>\n import(/* webpackChunkName: \"settings\" */ \"./components/Dialogs/LoadingDialog.vue\"),\n },\n\n setup(props, { root }) {\n // Constants\n const CANVAS_WIDTH = 1535;\n const START_HEIGHT = 320;\n const HORIZONTAL_GAP = 100;\n const VERTICAL_GAP = 50;\n const LARGE_VERTICAL_GAP = VERTICAL_GAP * 2;\n const BORDER_WIDTH = 5;\n const ELEMENT_COLOR = 'white';\n const IMAGE_FORMAT = 'image/jpeg';\n const SHARE_FILE_NAME = 'MarineOne.jpg';\n const LOGO_IMAGE_PATH = '/img/logo.png';\n const BACKGROUND_IMAGE_PATH = 'img/background_long.jpg';\n const TITLE = \"Captain's Log\";\n\n const profile = computed(() => {\n return profilestore.profile;\n });\n\n const { getFavouriteJourney, updateFavouriteJourney, saveFavouriteJourney, deleteFavouriteJourney } = useFavouriteJourney();\n\n const hasGalleryAccess = computed(() => {\n return profile.value ? profile.value.hasGalleryAccess : false;\n });\n\n const isCaptain = computed(() => {\n return profile.value ? profile.value.isCaptain : false;\n });\n\n // Get the selected date from the route parameters.\n const selectedDate = root.$route.params.date;\n\n const journeyId = root.$route.params.journeyId;\n\n // Get the logbook item from the route parameters.\n const isFavourite = computed(() => {\n return root.$route.params.isFavourite;\n });\n\n const journey = ref(new FavouriteJourneyViewModel());\n\n const { googleMapApi } = useMap();\n const map = ref();\n let myGoogleMap: google.maps.Map;\n let poly: google.maps.Polyline;\n let shipMarker: google.maps.Marker;\n let startMarker: google.maps.Marker;\n let endMarker: google.maps.Marker;\n let ship: google.maps.LatLng;\n let startIcon: google.maps.Icon;\n let endIcon: google.maps.Icon;\n let roundTripIcon: google.maps.Icon;\n let maxSpeedIcon: google.maps.Icon;\n let historyIcon: google.maps.Symbol;\n let onMountedFinished = false;\n let logbookItemsFetched = false;\n const showCarousel = ref(false);\n const totalTime = ref(\"\");\n const startTime = ref(\"\");\n const stopTime = ref(\"\");\n const totalDistance = ref(\"\");\n const averageSpeed = ref(\"\");\n const roundTripRadius = 10; // 10 meters radius determining if the trip is a round trip or not.\n const maxSpeed = ref(\"\");\n let maxSpeedIndex = 0;\n let carouselModel = ref(0);\n const showLoadingDialog = ref(false);\n const showEditNicknameDialog = ref(false);\n const showSaveDialog = ref(false);\n const showDeleteDialog = ref(false);\n const showShareDialog = ref(false);\n const infoWindows = [];\n const showHint = ref(false);\n const showExtras = ref(false);\n const nickname = ref(\"\");\n const description = ref(\"\");\n let file: File;\n const uploadFile = ref(null);\n let logFileName: string;\n const shareImageUrl = ref(\"\");\n\n const goToGallery = async () => {\n logFileName = generateRandomFileName();\n // Wait for captureLog to complete\n try {\n await captureLog();\n\n if (uploadFile && uploadFile.value) {\n await deleteImagesStartingWith(\"temp_\" + profile.value.userId);\n await uploadImageToBlobStorage(logFileName, new Uint8Array(await uploadFile.value.arrayBuffer()));\n } else {\n console.error(\"uploadFile or uploadFile.value is null\");\n }\n } catch (error) {\n console.error(\"An error occurred:\", error);\n }\n showLoadingDialog.value = false;\n root.$router.push({ name: \"userGallery\", params: { id: journeyId, deviceId: profile.value.deviceId, logFile: logFileName } });\n };\n\n const saveJourney = () => {\n\n let model = new FavouriteJourneyViewModel();\n model.favouriteDate = selectedDate;\n model.nickname = nickname.value;\n model.description = description.value;\n journey.value = model;\n saveFavouriteJourney(model);\n showExtras.value = false;\n showSaveDialog.value = false;\n app.success = \"Journey saved successfully\";\n };\n\n const updateJourney = () => {\n updateFavouriteJourney(journey.value);\n showExtras.value = false;\n showEditNicknameDialog.value = false;\n };\n\n const deleteJourney = async () => {\n\n const filenames = [journey.value.image1, journey.value.image2, journey.value.image3, journey.value.image4, journey.value.image5]\n\n for (let filename of filenames) {\n if (filename) {\n console.log(\"LogbookRecord: deleteJourney: deleting filename: \" + filename);\n await deleteImageFromBlobStorage(filename);\n }\n }\n deleteFavouriteJourney(parseInt(journeyId));\n showExtras.value = false;\n showDeleteDialog.value = false;\n app.success = \"Journey removed from favourites successfully\";\n root.$router.push({ name: \"settings\" });\n };\n\n const captureLog = (): Promise => {\n return new Promise((resolve, reject) => {\n // user intent is clear, start conversion process\n showLoadingDialog.value = true;\n\n domToBlob(document.querySelector('#logContainer'), { type: 'image/jpeg', scale: 5 })\n .then(blob => {\n // Create an Image object from the blob\n const img = new Image();\n const crop = 570; // 300 pixels to crop from top bar and 270 pixels to crop from the map to hide logo and map/satellite options\n img.onload = () => {\n // Create a canvas to draw the cropped image\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n canvas.width = img.width;\n canvas.height = img.height - crop;\n\n // Draw the image starting after the crop\n ctx.drawImage(img, 0, - crop);\n\n // Convert the canvas back to a blob\n canvas.toBlob(croppedBlob => {\n uploadFile.value = new File([croppedBlob], logFileName, { type: 'image/jpeg' });\n resolve(); // Signal that the uploadFile.value is set\n }, 'image/jpeg');\n };\n\n img.src = URL.createObjectURL(blob);\n })\n .catch(error => {\n reject(error); // handle the error\n });\n });\n };\n\n // Helper function to load an image\n const loadImage = (src: string): Promise => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n img.src = src;\n });\n };\n\n // Helper function to download and prepare images\n const downloadAndPrepareImages = async (filenames) => {\n const imageList = [];\n for (let filename of filenames) {\n if (filename) {\n const imageData = await downloadImageFromBlobStorage(filename);\n const blob = new Blob([imageData], { type: IMAGE_FORMAT });\n const url = URL.createObjectURL(blob);\n const img = await loadImage(url);\n imageList.push(img);\n }\n }\n return imageList;\n };\n\n // Helper function to calculate the total height of the canvas\n const calculateTotalHeight = (logImage: HTMLImageElement, imageList?: HTMLImageElement[]): number => {\n let totalHeight = 0;\n\n // Add the starting height\n totalHeight += START_HEIGHT;\n\n // Calculate logImage height\n const logHeight = (CANVAS_WIDTH - 2 * (HORIZONTAL_GAP + BORDER_WIDTH)) * logImage.height / logImage.width;\n totalHeight += logHeight + 2 * BORDER_WIDTH + VERTICAL_GAP;\n\n if (imageList) {\n // Calculate height for each image in the list if included\n for (let image of imageList) {\n const scaledWidth = CANVAS_WIDTH - 2 * (HORIZONTAL_GAP + BORDER_WIDTH);\n const scaledHeight = scaledWidth * image.height / image.width;\n totalHeight += scaledHeight + 2 * BORDER_WIDTH + VERTICAL_GAP;\n }\n }\n\n // Add a LARGE_VERTICAL_GAP after last image and subtract overflow (calculated manually)\n totalHeight += LARGE_VERTICAL_GAP - 32;\n\n return totalHeight;\n };\n\n const captureAndShareBase = async (includeGallery = false) => {\n try {\n showLoadingDialog.value = true;\n\n await captureLog();\n \n const logoImg: HTMLImageElement = await loadImage(LOGO_IMAGE_PATH);\n const background: HTMLImageElement = await loadImage(BACKGROUND_IMAGE_PATH);\n const logImage: HTMLImageElement = new Image();\n\n if (uploadFile && uploadFile.value) {\n const logUrl = URL.createObjectURL(uploadFile.value);\n logImage.src = logUrl;\n await new Promise(resolve => logImage.onload = resolve);\n\n // Load the gallery images if required\n let imageList: HTMLImageElement[] = [];\n\n if (includeGallery) {\n // Fetch journey images\n const filenames = [\n journey.value.image1,\n journey.value.image2,\n journey.value.image3,\n journey.value.image4,\n journey.value.image5\n ];\n\n if (filenames.length > 0) {\n imageList = await downloadAndPrepareImages(filenames);\n }\n }\n\n // Create canvas and its context\n const canvas = document.createElement('canvas');\n canvas.width = CANVAS_WIDTH;\n canvas.height = calculateTotalHeight(logImage, imageList);\n const ctx = canvas.getContext('2d');\n\n // Draw the background\n ctx.drawImage(background, 0, 0, CANVAS_WIDTH, canvas.height);\n\n // Draw the logo\n ctx.drawImage(logoImg, HORIZONTAL_GAP, VERTICAL_GAP, logoImg.width / 2, logoImg.height / 2);\n\n // The position where the logo starts vertically (top-most point)\n const logoStartY = VERTICAL_GAP;\n\n // The height of the logo after scaling\n const scaledLogoHeight = (logoImg.width / 2) * logoImg.height / logoImg.width;\n\n // Calculate mid-points for title and date relative to the logo's vertical position\n const titleMidPoint = logoStartY + (scaledLogoHeight / 2); // Half of the upper half\n const dateMidPoint = logoStartY + scaledLogoHeight - 32; // Half of the lower half\n\n // Draw the title\n ctx.font = \"78px Arial\"; // change to Open sans\n ctx.fillStyle = ELEMENT_COLOR;\n ctx.textAlign = \"center\";\n const titleX = (canvas.width / 2) + (canvas.width / 5);\n ctx.fillText(TITLE, titleX, titleMidPoint);\n\n // Draw the date\n const date = formattedDate.value;\n ctx.font = \"55px Arial\";\n ctx.fillStyle = ELEMENT_COLOR;\n const dateX = (canvas.width / 2) + (canvas.width / 5);\n ctx.fillText(date, dateX, dateMidPoint);\n\n // Starting Y position for journey images\n let currentY = logoStartY + scaledLogoHeight + VERTICAL_GAP;\n\n\n // Draw log\n const logHeight = (canvas.width - 2 * (HORIZONTAL_GAP + BORDER_WIDTH)) * logImage.height / logImage.width;\n const logWidth = canvas.width - 2 * (HORIZONTAL_GAP + BORDER_WIDTH);\n\n // Create the white border\n ctx.fillStyle = ELEMENT_COLOR;\n ctx.fillRect(\n HORIZONTAL_GAP - BORDER_WIDTH,\n currentY - BORDER_WIDTH,\n logWidth + 2 * BORDER_WIDTH,\n logHeight + 2 * BORDER_WIDTH\n );\n\n // Draw the log image inside the white border\n ctx.drawImage(logImage, HORIZONTAL_GAP, currentY, logWidth, logHeight);\n\n // Adjust currentY for subsequent images\n currentY += logHeight + 2 * BORDER_WIDTH + VERTICAL_GAP;\n\n // Optionally draw the gallery images\n if (includeGallery && imageList.length > 0) {\n\n for (let image of imageList) {\n const scaledWidth = canvas.width - 2 * HORIZONTAL_GAP;\n const scaledHeight = scaledWidth * image.height / image.width;\n\n // Draw the white border/background\n ctx.fillStyle = ELEMENT_COLOR;\n ctx.fillRect(HORIZONTAL_GAP - BORDER_WIDTH, currentY - BORDER_WIDTH, scaledWidth + 2 * BORDER_WIDTH, scaledHeight + 2 * BORDER_WIDTH);\n\n // Draw the image on top of the white background\n ctx.drawImage(image, HORIZONTAL_GAP, currentY, scaledWidth, scaledHeight);\n\n // Move to the position for the next image\n currentY += scaledHeight + 2 * BORDER_WIDTH + VERTICAL_GAP;\n }\n\n }\n // Handle the final image\n canvas.toBlob(croppedBlob => {\n file = new File([croppedBlob], SHARE_FILE_NAME, { type: IMAGE_FORMAT });\n showLoadingDialog.value = false;\n shareImageUrl.value = URL.createObjectURL(file);\n showShareDialog.value = true;\n URL.revokeObjectURL(logUrl);\n }, IMAGE_FORMAT);\n\n // Hide loading dialog\n showLoadingDialog.value = false;\n\n } else {\n app.error = \"Image creation failed\";\n showLoadingDialog.value = false;\n }\n\n } catch (err) {\n showLoadingDialog.value = false;\n app.error = \"An error occurred while generating the image: \" + err;\n console.error(\"An error occurred:\", err);\n }\n };\n\n const shareNow = () => {\n // only display the loading dialog if sharing is possible\n if ((navigator as any).canShare && (navigator as any).canShare({ files: [file] })) {\n\n const shareData: any = {\n files: [file],\n title: 'MarineOne Logbook',\n text: 'MarineOne logbook entry from ' + formattedDate.value,\n };\n\n (navigator as any).share(shareData)\n .then(() => {\n console.log('Sharing successful.');\n })\n .catch((error: any) => {\n app.error = error;\n });\n } else {\n app.error = `Your device doesn't support sharing files.`;\n }\n }\n\n const getIconPath = (icon) => {\n return require(`@/assets/icons/${icon}.svg`);\n };\n\n const tripData = ref([\n { label: 'Start Time', value: '00:00', unit: '', icon: 'timer-play-outline' },\n { label: 'Stop Time', value: '00:00', unit: '', icon: 'timer-stop-outline' },\n { label: 'Trip Time', value: '0s', unit: '', icon: 'timer-sync-outline' },\n { label: 'Trip Distance', value: '0.00', unit: 'NM', icon: 'map-marker-distance' },\n { label: 'Average Speed', value: '0.00', unit: 'kts', icon: 'speedometer-medium' },\n { label: 'Max Speed', value: '0.00', unit: 'kts', icon: 'speedometer' }\n ]);\n\n const menuItems = ref([\n { icon: 'mdi-share-variant-outline', text: 'Share Trip', value: 'share' },\n { icon: 'mdi-check', text: 'Show All Trip Info', value: 'show-all' },\n ]);\n\n const hintItems = ref([\n { icon: 'view-carousel-outline-blk', text: 'Cycle trip info', subtext: '' },\n { icon: 'view-sequential-blk', text: 'View all trip info' },\n { icon: 'share-variant-outline-blk', text: 'Share trip as a screenshot' },\n { icon: 'compass', text: 'North indicator' },\n { icon: 'map-position-dot', text: 'Position dot', subtext: 'Click: Info bubble with time and GPS' },\n { icon: 'map-arrow', text: 'Boat heading indicator', subtext: 'Click: Info bubble with heading' },\n { icon: 'map-marker-round-trip', text: 'Round trip indicator', subtext: 'Click: Info bubble with time and GPS' },\n { icon: 'map-marker-start', text: 'Start trip location', subtext: 'Click: Info bubble with time and GPS' },\n { icon: 'map-marker-stop', text: 'Finish trip location', subtext: 'Click: Info bubble with time and GPS' },\n { icon: 'max-speed', text: 'Section with maximum speed', subtext: 'Click: Info bubble with max speed' },\n { icon: 'info-circle-blk', text: 'Click map anywhere to close bubbles' },\n ]);\n\n // Create a return function to go back to the settings page.\n const goBack = () => {\n root.$router.push({ name: \"settings\" });\n };\n\n // Create a latitude and longitude object from the alarm's latitude and longitude values.\n const lat = computed(() => { return alarm.lat ? alarm.lat : 0; });\n const lng = computed(() => { return alarm.lng ? alarm.lng : 0; });\n\n const formattedDate = computed(() => {\n const date = new Date(selectedDate);\n const day = date.getDate();\n const month = date.toLocaleString('en-US', { month: 'long' });\n const year = date.getFullYear();\n\n let daySuffix = 'th';\n if (day === 1 || day === 21 || day === 31) {\n daySuffix = 'st';\n } else if (day === 2 || day === 22) {\n daySuffix = 'nd';\n } else if (day === 3 || day === 23) {\n daySuffix = 'rd';\n }\n\n return `${day}${daySuffix} of ${month}, ${year}`;\n });\n\n // Create a start date and end date for the selected date.\n const startDate = computed(() => {\n const currentDate = parseISO(selectedDate);\n return new Date(currentDate.getTime() - currentDate.getTimezoneOffset() * 60000\n ).toISOString().substring(0, 10);\n });\n\n const endDate = computed(() => {\n const startDateValue = new Date(startDate.value);\n const endDateValue = new Date(startDateValue.getTime() + 1 * 24 * 60 * 60 * 1000);\n return endDateValue.toISOString().substring(0, 10);\n });\n\n // Create a date range for the selected date.\n const selectedDateRange = computed(() => {\n return startDate.value + \",\" + endDate.value;\n });\n\n // Get the logbook items for the selected date range.\n const { logbookItems } = useLogbook(selectedDateRange.value);\n\n // Function to determine if marker2 is within the given radius of marker1\n function isMarkerWithinRadius(marker1: google.maps.Marker, marker2: google.maps.Marker, radius: number): boolean {\n const position1 = marker1.getPosition();\n const position2 = marker2.getPosition();\n const distance = google.maps.geometry.spherical.computeDistanceBetween(position1, position2);\n return distance <= radius;\n }\n\n // Function to calculate the speed between two points given their latitude, longitude, and timestamps\n function calculateSpeedInKnots(point1: google.maps.LatLng, time1: number, point2: google.maps.LatLng, time2: number): number {\n\n const distance = google.maps.geometry.spherical.computeDistanceBetween(point1, point2) / 1852; // Convert to nautical miles\n\n // Calculate the time difference in seconds\n const timeDiff = Math.abs(time2 - time1) / 1000;\n\n // Calculate the speed in knots\n let speed = distance / (timeDiff / 3600); // Convert to knots\n\n return speed;\n }\n\n // Function to find the maximum speed among sections of the polyline\n function findMaxSpeed(polyline: google.maps.Polyline): number {\n const path = polyline.getPath();\n\n let foundMaxSpeed = 0;\n\n for (let i = 1; i < path.getLength(); i++) {\n\n const point1 = path.getAt(i - 1);\n const point2 = path.getAt(i);\n\n const time1 = parseISO(logbookItems.value[i - 1].gpsTimestamp).getTime();\n const time2 = parseISO(logbookItems.value[i].gpsTimestamp).getTime();\n\n const speed = calculateSpeedInKnots(point1, time1, point2, time2)\n\n if (speed > foundMaxSpeed) {\n foundMaxSpeed = speed;\n maxSpeedIndex = i;\n }\n }\n return foundMaxSpeed;\n }\n\n function formatTimestamp(timestamp) {\n const date = new Date(timestamp);\n const options: Intl.DateTimeFormatOptions = {\n month: \"short\",\n day: \"2-digit\",\n year: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n hour12: false\n };\n return date.toLocaleString(\"en-US\", options) + \" (UTC)\";\n }\n\n function generateRandomFileName(length = 32): string {\n const userId = profile.value.userId;\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let result = '';\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * characters.length));\n }\n return \"temp_\" + userId + \"_\" + result + '.jpeg';\n }\n\n // Loop through the logbook items and create a polyline, markers and calculate the total distance, total time and average speed.\n const runLoop = () => {\n // Run the loop only if the map is loaded and the logbook items are fetched.\n if (logbookItems.value.length > 0) {\n\n myGoogleMap.addListener(\"click\", () => {\n infoWindows.forEach(infoWindow => {\n infoWindow.close();\n });\n });\n\n // Create a new empty polyline.\n poly.getPath().clear();\n\n logbookItems.value.forEach((logbookItem, index) => {\n\n const pos = new google.maps.LatLng(logbookItem.latitude, logbookItem.longitude);\n // Add a new point to the Polyline based on the logbook item's latitude and longitude.\n\n // Create an object representing the point with custom properties\n const point = {\n position: pos,\n gpsTimestamp: logbookItem.gpsTimestamp, // Custom property: GPS timestamp\n accuracy: logbookItem.accuracy // Custom property: Accuracy\n };\n\n poly.getPath().push(point.position);\n\n if (index === 0) {\n // Set the start marker's position to the first point in the Polyline.\n startMarker.setPosition(pos);\n startMarker.addListener(\"click\", () => {\n // Create a new info window.\n const infoWindow = new google.maps.InfoWindow({\n content: `\n

${formatTimestamp(logbookItem.gpsTimestamp)}

\n\n

Lat: ${logbookItem.latitude}  |  Lon: ${logbookItem.longitude}

\n `\n });\n\n // Open the info window.\n infoWindow.open(myGoogleMap, startMarker);\n infoWindows.push(infoWindow);\n });\n startMarker.setVisible(true);\n } else if (index === logbookItems.value.length - 1) {\n // Set the end marker's position to the last point in the Polyline.\n endMarker.setPosition(pos);\n endMarker.addListener(\"click\", () => {\n // Create a new info window.\n const infoWindow = new google.maps.InfoWindow({\n content: `\n

${formatTimestamp(logbookItem.gpsTimestamp)}

\n\n

Lat: ${logbookItem.latitude}  |  Lon: ${logbookItem.longitude}

\n `\n });\n // Open the info window.\n infoWindow.open(myGoogleMap, endMarker);\n infoWindows.push(infoWindow);\n });\n endMarker.setVisible(true);\n } else {\n // Create a new marker for each point in the Polyline.\n const historyMarker = new google.maps.Marker({\n position: pos,\n icon: historyIcon,\n map: myGoogleMap,\n visible: true,\n zIndex: 3,\n });\n historyMarker.addListener(\"click\", () => {\n // Create a new info window.\n const infoWindow = new google.maps.InfoWindow({\n content: `\n

${formatTimestamp(logbookItem.gpsTimestamp)}

\n\n

Lat: ${logbookItem.latitude}  |  Lon: ${logbookItem.longitude}

\n `\n });\n // Open the info window.\n infoWindow.open(myGoogleMap, historyMarker);\n infoWindows.push(infoWindow);\n });\n }\n });\n\n // Calculate whether the end marker is within the radius of the start marker\n const withinRadius = isMarkerWithinRadius(startMarker, endMarker, roundTripRadius);\n\n // If the end marker is within the radius of the start marker, then it is a round trip\n if (withinRadius) {\n // Handle case where it is a round trip, as start and end markers are in a given radius from each other\n endMarker.setVisible(false);\n endMarker.setPosition(startMarker.getPosition());\n startMarker.setIcon(roundTripIcon);\n poly.getPath().removeAt(poly.getPath().getLength() - 1);\n poly.getPath().push(startMarker.getPosition());\n } else {\n // Handle case where it is not a round trip, as start and end markers are not in a given radius from each other\n endMarker.setVisible(true);\n startMarker.setIcon(startIcon);\n }\n\n maxSpeed.value = findMaxSpeed(poly).toFixed(2);\n\n // Get the halfway point coordinates\n const halfwayPoint = google.maps.geometry.spherical.interpolate(\n poly.getPath().getAt(maxSpeedIndex),\n poly.getPath().getAt(maxSpeedIndex + 1),\n 0.5\n );\n\n // Create a new marker for the halfway point.\n const maxSpeedMarker = new google.maps.Marker({\n position: halfwayPoint,\n icon: maxSpeedIcon,\n map: myGoogleMap,\n visible: true,\n zIndex: 5,\n });\n\n maxSpeedMarker.addListener(\"click\", () => {\n // Create a new info window.\n const infoWindow = new google.maps.InfoWindow({\n content: `\n

Max speed

\n\n

${maxSpeed.value} kts

\n `\n });\n // Open the info window.\n infoWindow.open(myGoogleMap, maxSpeedMarker);\n infoWindows.push(infoWindow);\n });\n\n // Create a heading marker on each segment of the polyline\n poly.getPath().forEach((point, index) => {\n if (index < poly.getPath().getLength() - 1) {\n\n // Get the halfway point coordinates between two points in the Polyline\n const halfwayPoint = google.maps.geometry.spherical.interpolate(\n poly.getPath().getAt(index + 1),\n point,\n 0.2\n );\n\n // Calculate heading between two points and set the heading marker's rotation\n const heading = google.maps.geometry.spherical.computeHeading(\n poly.getPath().getAt(index + 1),\n point\n );\n\n // Create a new marker for the halfway point.\n const headingMarker = new google.maps.Marker({\n position: halfwayPoint,\n map: myGoogleMap,\n icon: {\n path: google.maps.SymbolPath.FORWARD_CLOSED_ARROW,\n scale: 5,\n strokeColor: \"#182551\",\n strokeWeight: 2,\n fillColor: \"#48A6AD\",\n fillOpacity: 1,\n rotation: heading,\n },\n visible: true,\n zIndex: 4,\n });\n\n headingMarker.addListener(\"click\", () => {\n // Create a new info window.\n const infoWindow = new google.maps.InfoWindow({\n content: `\n

Heading

\n\n

${heading.toFixed(0)}°

\n `,\n });\n // Open the info window.\n infoWindow.open(myGoogleMap, headingMarker);\n infoWindows.push(infoWindow);\n });\n }\n console.log(\"Removing Google Fonts from runLoop()\");\n // removeGoogleFontsForMaps();\n });\n\n\n\n // Create a new bounds object.\n var bounds = new google.maps.LatLngBounds();\n // Extend the bounds object with the polyline's path.\n poly.getPath().forEach(function (e) { //can't do polyline.getPath()[i] because it's a MVCArray\n bounds.extend(e);\n })\n // Fit the map to the bounds.\n myGoogleMap.fitBounds(bounds);\n\n let startTimestamp = logbookItems.value[logbookItems.value.length - 1].gpsTimestamp;\n let stopTimestamp = logbookItems.value[0].gpsTimestamp;\n\n const startDate = new Date(startTimestamp);\n const endDate = new Date(stopTimestamp);\n\n const startHour = startDate.getHours();\n const startMinute = startDate.getMinutes();\n\n const stopHour = endDate.getHours();\n const stopMinute = endDate.getMinutes();\n\n const startDateString = `${startHour}:${startMinute}`;\n const endDateString = `${stopHour}:${stopMinute}`;\n\n startTime.value = startDateString;\n stopTime.value = endDateString;\n\n\n // Calculate the total time of the trip in milliseconds and convert it to days, hours, minutes and seconds.\n const totalTimeInMs = parseISO(stopTimestamp).getTime() - parseISO(startTimestamp).getTime();\n\n // Time calculations for days, hours, minutes and seconds\n const totalTimeInSeconds = Math.floor(totalTimeInMs / 1000);\n const days = Math.floor(totalTimeInMs / (1000 * 60 * 60 * 24));\n const hours = Math.floor((totalTimeInMs % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));\n const minutes = Math.floor((totalTimeInMs % (1000 * 60 * 60)) / (1000 * 60));\n const seconds = Math.floor((totalTimeInMs % (1000 * 60)) / 1000);\n\n // Output the result in an element with id=\"demo\"\n let timestring = \"\";\n timestring = days > 0 ? `${timestring}${days}d ` : \"\";\n timestring = hours > 0 ? `${timestring}${hours}h ` : \"\";\n timestring = minutes > 0 ? `${timestring}${minutes}m ` : \"\";\n timestring = seconds > 0 ? `${timestring}${seconds}s` : \"0s\";\n\n // Display the result\n totalTime.value = timestring.trim();\n\n // Calculate distance of the polyline\n let distance = google.maps.geometry.spherical.computeLength(poly.getPath().getArray()) / 1852; // Convert to nautical miles\n\n // Display the result\n if (distance) {\n totalDistance.value = distance.toFixed(2);\n } else {\n totalDistance.value = \"0.00\";\n }\n\n // Calculate average speed and display the result\n let averageSpeedKTS = distance / (totalTimeInSeconds / 3600); // Convert to knots\n\n // Display the result\n averageSpeed.value = averageSpeedKTS.toFixed(2);\n\n tripData.value = [\n { label: 'Start Time', value: startTime.value, unit: '', icon: 'timer-play-outline' },\n { label: 'Stop Time', value: stopTime.value, unit: '', icon: 'timer-stop-outline' },\n { label: 'Trip Time', value: totalTime.value, unit: '', icon: 'timer-sync-outline' },\n { label: 'Trip Distance', value: totalDistance.value, unit: 'NM', icon: 'map-marker-distance' },\n { label: 'Average Speed', value: averageSpeed.value, unit: 'kts', icon: 'speedometer-medium' },\n { label: 'Max Speed', value: maxSpeed.value, unit: 'kts', icon: 'speedometer' }\n ];\n }\n }\n\n //const removeGoogleFontsForMaps = () => {\n // // Find and remove Google Fonts styles injected by Google Maps\n // const googleFontsLinks = document.querySelectorAll('link[rel=\"stylesheet\"][href*=\"fonts.googleapis.com\"]');\n\n // googleFontsLinks.forEach(link => {\n // // iterate and console log the links found\n\n // console.log(\"Checking link:\");\n // console.log(link.href);\n\n // // Check if the link does not contain the fonts you want to keep\n // if (!link.href.includes('https://fonts.googleapis.com/css2?family=Open+Sans&display=swap')) {\n\n // console.log(\"Removing link:\");\n // console.log(link.href);\n // // Remove the link from the DOM\n // link.remove();\n // }\n // });\n //};\n //// Add a delay before executing the function to ensure stylesheets are loaded\n //const delayBeforeRemovingFonts = () => {\n // setTimeout(() => {\n // removeGoogleFontsForMaps();\n // }, 1000); // Adjust the delay as needed\n //};\n\n onMounted(async () => {\n\n if (!isNaN(parseInt(journeyId))) {\n journey.value = await getFavouriteJourney(parseInt(journeyId));\n }\n\n await profilestore.Get();\n // Load the Google Maps API and create the map, polyline and ship marker.\n googleMapApi.load().then(() => {\n // Create a latitude and longitude object from the alarm's latitude and longitude values.\n ship = new google.maps.LatLng(lat.value, lng.value);\n\n // Create an icon for the markers.\n const shipIcon = {\n url: 'https://dsspoc.azurewebsites.net/img/icons/map-marker-device.svg',\n scaledSize: new google.maps.Size(80, 80),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(40, 80)\n };\n\n startIcon = {\n url: 'https://dsspoc.azurewebsites.net/img/icons/map-marker-start.svg',\n scaledSize: new google.maps.Size(80, 80),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(40, 80)\n };\n\n endIcon = {\n url: 'https://dsspoc.azurewebsites.net/img/icons/map-marker-stop.svg',\n scaledSize: new google.maps.Size(80, 80),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(40, 80)\n };\n\n roundTripIcon = {\n url: 'https://dsspoc.azurewebsites.net/img/icons/map-marker-round-trip.svg',\n scaledSize: new google.maps.Size(80, 80),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(40, 80)\n };\n\n maxSpeedIcon = {\n url: 'https://dsspoc.azurewebsites.net/img/icons/max-speed.svg',\n scaledSize: new google.maps.Size(40, 40),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(20, 20)\n };\n\n historyIcon = {\n path: google.maps.SymbolPath.CIRCLE,\n scale: 3,\n fillColor: \"#a6a6a6\",\n fillOpacity: 1,\n strokeColor: \"#a6a6a6\",\n strokeOpacity: 1,\n };\n\n // Create the map.\n myGoogleMap = new google.maps.Map(map.value, {\n center: ship,\n mapTypeId: \"satellite\",\n zoom: 16,\n disableDefaultUI: true,\n zoomControl: false,\n backgroundColor: \"#000000\",\n mapTypeControl: true,\n mapTypeControlOptions: {\n style: google.maps.MapTypeControlStyle.DEFAULT,\n mapTypeIds: [\"roadmap\", \"satellite\"],\n },\n fullscreenControl: false\n });\n\n // Create the ship marker.\n shipMarker = new google.maps.Marker({\n position: ship,\n map: myGoogleMap,\n icon: shipIcon,\n visible: false,\n });\n\n // Create the start marker.\n startMarker = new google.maps.Marker({\n position: ship,\n map: myGoogleMap,\n icon: startIcon,\n visible: false,\n zIndex: 6,\n });\n\n // Create the end marker.\n endMarker = new google.maps.Marker({\n position: ship,\n map: myGoogleMap,\n icon: endIcon,\n visible: false,\n zIndex: 6,\n });\n\n // Create the polyline.\n poly = new google.maps.Polyline({\n //strokeColor: \"#a6a6a6\",\n strokeColor: \"#48A6AD\",\n strokeOpacity: 1.0,\n strokeWeight: 4,\n zIndex: 2,\n });\n\n poly.setMap(myGoogleMap); // Add the polyline to the map\n\n //removeGoogleFontsForMaps();\n\n onMountedFinished = true; // Set onMountedFinished to true when the map is loaded\n\n if (logbookItemsFetched) {\n runLoop(); // Execute runLoop() if both conditions are met\n console.log(\"Removing Google Fonts from onMounted()\");\n //delayBeforeRemovingFonts();\n }\n\n });\n });\n\n // Watch for changes in the logbookItems array, and execute runLoop() when the array is populated, and the map is loaded.\n watch(logbookItems, () => {\n if (!logbookItemsFetched) {\n logbookItemsFetched = true;\n if (onMountedFinished) {\n runLoop(); // Execute runLoop() if both conditions are met\n console.log(\"Removing Google Fonts from watch()\");\n //delayBeforeRemovingFonts();\n }\n }\n });\n\n return {\n formattedDate,\n map,\n goBack,\n tripData,\n carouselModel,\n showCarousel,\n menuItems,\n captureAndShareBase,\n getIconPath,\n showLoadingDialog,\n showShareDialog,\n shareNow,\n showHint,\n hintItems,\n showExtras,\n isFavourite,\n journeyId,\n showEditNicknameDialog,\n journey,\n updateJourney,\n saveJourney,\n hasGalleryAccess,\n isCaptain,\n showSaveDialog,\n goToGallery,\n nickname,\n description,\n deleteJourney,\n showDeleteDialog,\n captureLog,\n shareImageUrl,\n };\n },\n });\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogbookRecord.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogbookRecord.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LogbookRecord.vue?vue&type=template&id=e946676a&scoped=true&\"\nimport script from \"./LogbookRecord.vue?vue&type=script&lang=ts&\"\nexport * from \"./LogbookRecord.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LogbookRecord.vue?vue&type=style&index=0&id=e946676a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e946676a\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCarousel } from 'vuetify/lib/components/VCarousel';\nimport { VCarouselItem } from 'vuetify/lib/components/VCarousel';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAvatar } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSheet } from 'vuetify/lib/components/VSheet';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCarousel,VCarouselItem,VCol,VContainer,VDialog,VDivider,VIcon,VImg,VList,VListItem,VListItemAvatar,VListItemContent,VListItemIcon,VListItemSubtitle,VListItemTitle,VProgressLinear,VRow,VSheet,VSpacer,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-row',{staticStyle:{\"height\":\"60px\"},attrs:{\"no-gutters\":\"\"}},[_c('v-sheet',{staticClass:\"blackSheetStyle\",attrs:{\"color\":\"black\",\"tile\":\"\",\"height\":\"60px\",\"width\":\"100%\"}},[_c('v-row',{staticStyle:{\"height\":\"60px\"},attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"px-2\",attrs:{\"cols\":\"auto\",\"align-self\":\"center\"}},[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.goToLog}},[_c('v-img',{attrs:{\"src\":require(\"@/assets/icons/arrow-u-left-top.svg\"),\"max-width\":\"36px\"}})],1)],1),_c('v-spacer'),_c('v-col',{staticClass:\"px-2\",attrs:{\"cols\":\"auto\",\"align-self\":\"center\"}},[_c('span',{staticClass:\"title-style\"},[_vm._v(\"Journey Memories\")])]),_c('v-spacer'),_c('v-col',{staticClass:\"px-2\",attrs:{\"cols\":\"auto\",\"align-self\":\"center\"}},[(_vm.hasValidImage)?_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":_vm.downloading || _vm.uploading},on:{\"click\":function($event){_vm.showExtras = !_vm.showExtras}}},[_c('v-img',{attrs:{\"src\":require(\"@/assets/icons/dots-vertical.svg\"),\"max-width\":\"36px\"}})],1):_vm._e()],1)],1)],1)],1)],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c('v-img',{staticClass:\"logoOnTop\",attrs:{\"contain\":\"\",\"position\":\"top center\",\"max-height\":\"56px\",\"max-width\":\"200px\",\"src\":\"/img/logo.png\"}})],1),_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\"}},[_c('v-row',{staticClass:\"pa-2\",attrs:{\"id\":\"galleryContainer\"}},[_c('v-col',{staticClass:\"pr-2 pb-2\",attrs:{\"cols\":\"6\"}},[(_vm.downloading)?_c('v-skeleton-loader',{staticClass:\"image-frame\",attrs:{\"height\":\"150px\",\"type\":\"image\"}}):_c('v-img',{staticClass:\"image-frame\",attrs:{\"height\":\"150px\",\"cover\":\"\",\"src\":_vm.images[0].url},on:{\"click\":function($event){return _vm.showDialog(0)}}},[(!_vm.images[0].url)?[_c('v-row',{staticClass:\"fill-height ma-0\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('span',{staticClass:\"text--white80\"},[_vm._v(\"Click here to upload\")])])]:_vm._e()],2)],1),_c('v-col',{staticClass:\"pl-0 pb-0\",attrs:{\"cols\":\"6\"}},[(_vm.downloading)?_c('v-skeleton-loader',{staticClass:\"image-frame\",attrs:{\"height\":\"150px\",\"type\":\"image\"}}):_c('v-img',{staticClass:\"image-frame\",attrs:{\"height\":\"150px\",\"cover\":\"\",\"src\":_vm.images[1].url},on:{\"click\":function($event){return _vm.showDialog(1)}}},[(!_vm.images[1].url)?[_c('v-row',{staticClass:\"fill-height ma-0\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('span',{staticClass:\"text--white80\"},[_vm._v(\"Click here to upload\")])])]:_vm._e()],2)],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[(_vm.downloading)?_c('v-skeleton-loader',{staticClass:\"image-frame\",attrs:{\"height\":\"200px\",\"type\":\"image\"}}):_c('v-img',{staticClass:\"image-frame\",attrs:{\"height\":\"200px\",\"cover\":\"\",\"src\":_vm.images[2].url},on:{\"click\":function($event){return _vm.showDialog(2)}}},[(!_vm.images[2].url)?[_c('v-row',{staticClass:\"fill-height ma-0\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('span',{staticClass:\"text--white80\"},[_vm._v(\"Click here to upload\")])])]:_vm._e()],2)],1),_c('v-col',{staticClass:\"pr-2 pb-0 pt-2\",attrs:{\"cols\":\"6\",\"height\":\"\"}},[(_vm.downloading)?_c('v-skeleton-loader',{staticClass:\"image-frame\",attrs:{\"height\":\"200px\",\"type\":\"image\"}}):_c('v-img',{staticClass:\"image-frame\",attrs:{\"height\":\"250px\",\"cover\":\"\",\"src\":_vm.images[3].url},on:{\"click\":function($event){return _vm.showDialog(3)}}},[(!_vm.images[3].url)?[_c('v-row',{staticClass:\"fill-height ma-0\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('span',{staticClass:\"text--white80\"},[_vm._v(\"Click here to upload\")])])]:_vm._e()],2)],1),_c('v-col',{staticClass:\"pl-0 pb-0 pt-2\",attrs:{\"cols\":\"6\"}},[(_vm.downloading)?_c('v-skeleton-loader',{staticClass:\"image-frame\",attrs:{\"height\":\"200px\",\"type\":\"image\"}}):_c('v-img',{staticClass:\"image-frame\",attrs:{\"height\":\"250px\",\"cover\":\"\",\"src\":_vm.images[4].url},on:{\"click\":function($event){return _vm.showDialog(4)}}},[(!_vm.images[4].url)?[_c('v-row',{staticClass:\"fill-height ma-0\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('span',{staticClass:\"text--white80\"},[_vm._v(\"Click here to upload\")])])]:_vm._e()],2)],1),_c('v-col',{staticClass:\"py-4\",attrs:{\"cols\":\"12\"}},[_c('v-row',{staticClass:\"fill-height\",attrs:{\"align-content\":\"center\",\"justify\":\"center\"}},[(_vm.uploading)?_c('v-col',{staticClass:\"text-center text--white80 pb-1 pt-4\",attrs:{\"cols\":\"10\"}},[_vm._v(\" Uploading... \")]):_vm._e(),(_vm.downloading)?_c('v-col',{staticClass:\"text-center text--white80 pb-1 pt-4\",attrs:{\"cols\":\"10\"}},[_vm._v(\" Downloading... \")]):_vm._e(),(_vm.uploading)?_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"10\"}},[_c('v-progress-linear',{attrs:{\"color\":\"white\",\"rounded\":\"\",\"height\":\"16\",\"indeterminate\":true}})],1):_vm._e(),(_vm.downloading)?_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"10\"}},[_c('v-progress-linear',{attrs:{\"color\":\"white\",\"rounded\":\"\",\"height\":\"16\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar value = ref.value;\nreturn [_c('strong',[_vm._v(_vm._s(_vm.downloadProgress)+\"%\")])]}}],null,false,1373518745),model:{value:(_vm.downloadProgress),callback:function ($$v) {_vm.downloadProgress=$$v},expression:\"downloadProgress\"}})],1):_vm._e()],1)],1),_c('v-dialog',{staticStyle:{\"top\":\"-200px\"},attrs:{\"scrollable\":\"\",\"height\":\"600\"},model:{value:(_vm.showExtras),callback:function ($$v) {_vm.showExtras=$$v},expression:\"showExtras\"}},[_c('v-card',{staticStyle:{\"background-color\":\"#FFFFFF\"},attrs:{\"loading\":_vm.showLoadingDialog}},[_c('template',{slot:\"progress\"},[_c('v-progress-linear',{attrs:{\"color\":\"#00aa87\",\"height\":\"8\",\"indeterminate\":\"\"}})],1),_c('v-card-title',[_c('span',{staticClass:\"headline\"},[_vm._v(\"Extra options\")])]),_c('v-divider'),_c('v-card-text',{staticClass:\"pb-0 px-6\"},[_c('v-list',[_c('v-list-item',{attrs:{\"disabled\":_vm.showLoadingDialog},on:{\"click\":function($event){return _vm.captureAndShareBase(false)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-share-variant-outline\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Share journey memories\")])],1)],1),_c('v-list-item',{attrs:{\"disabled\":_vm.showLoadingDialog},on:{\"click\":function($event){return _vm.captureAndShareBase(true)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-share-variant-outline\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Share log and journey memories\")])],1)],1)],1)],1),_c('v-divider'),_c('v-card-actions',[_c('v-row',[_c('v-col',{staticClass:\"text-center px-0 py-4\",attrs:{\"cols\":\"12\"}},[_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":function($event){_vm.showExtras = !_vm.showExtras}}},[_vm._v(\" RETURN \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-arrow-u-left-top \")])],1)],1)],1)],1)],2)],1),_c('v-dialog',{attrs:{\"value\":_vm.showImageDialog,\"persistent\":\"\"}},[_c('v-card',{staticStyle:{\"background-color\":\"#FFFFFF\"}},[(_vm.selectedImageIsPlaceholder)?_c('v-card-title',[_vm._v(\"Upload a new picture\")]):_c('v-card-title',[_vm._v(\"View journey memory\")]),(_vm.selectedImageIsPlaceholder)?_c('v-card-text',{staticClass:\"py-2\"},[_c('v-file-input',{attrs:{\"label\":\"Select a picture to upload\",\"outlined\":\"\",\"show-size\":\"\",\"truncate-length\":\"20\",\"prepend-icon\":\"mdi-camera\",\"accept\":\"image/png, image/jpeg\",\"rules\":_vm.imageRules,\"value\":_vm.selectedFileForUpload},on:{\"change\":_vm.handleFileChange}})],1):_vm._e(),(!_vm.selectedImageIsPlaceholder && _vm.images)?_c('v-img',{staticClass:\"image-frame-blk mx-6\",attrs:{\"src\":_vm.images[_vm.selectedImageIndex].url}}):_vm._e(),_c('v-card-actions',[_c('v-row',{staticClass:\"py-2\"},[_c('v-col',{staticClass:\"text-left pl-6 py-4\",attrs:{\"cols\":\"6\"}},[_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":function($event){_vm.showImageDialog = !_vm.showImageDialog}}},[_vm._v(\" RETURN \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-arrow-u-left-top \")])],1)],1),_c('v-col',{staticClass:\"text-right pr-6 py-4\",attrs:{\"cols\":\"6\"}},[(!_vm.selectedImageIsPlaceholder && _vm.hasUploadAccess)?_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":_vm.handleImageAction}},[_vm._v(\" DELETE \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-delete \")])],1):_vm._e(),(_vm.selectedImageIsPlaceholder)?_c('v-btn',{attrs:{\"color\":\"success\"},on:{\"click\":_vm.handleImageAction}},[_vm._v(\" UPLOAD \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-cloud-upload-outline \")])],1):_vm._e()],1)],1)],1)],1)],1),_c('ShareDialog',{attrs:{\"model\":{ headline: 'Ready to share', text: '', imageUrl: _vm.shareImageUrl}},on:{\"OnShare\":_vm.shareNow,\"OnCancel\":function($event){_vm.showShareDialog = false}},model:{value:(_vm.showShareDialog),callback:function ($$v) {_vm.showShareDialog=$$v},expression:\"showShareDialog\"}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { app } from \"@/store\";\nimport { profile as profilestore } from \"@/store/index\";\nimport ProfileViewModel from \"@/models/ProfileViewModel\";\nimport { uploadImageToBlobStorage, downloadImageFromBlobStorage, deleteImageFromBlobStorage } from \"@/store/useUserPictureStorage\";\nimport { defineComponent, ref, onMounted, computed } from \"@vue/composition-api\";\nimport useFavouriteJourney from \"@/store/useFavouriteJourney\";\nimport FavouriteJourneyViewModel from \"../models/FavouriteJourneyViewModel\";\nimport { domToBlob } from 'modern-screenshot'\n\nexport default defineComponent({\n name: \"UserImageGallery\",\n components: {\n ConfirmDialog: () =>\n import(/* webpackChunkName: \"settings\" */ \"./components/Dialogs/ConfirmDialog.vue\"),\n ShareDialog: () =>\n import(/* webpackChunkName: \"settings\" */ \"./components/Dialogs/ShareDialog.vue\"),\n LoadingDialog: () =>\n import(/* webpackChunkName: \"settings\" */ \"./components/Dialogs/LoadingDialog.vue\"),\n },\n setup(_, { root }) {\n\n // Constants\n const CANVAS_WIDTH = 1535;\n const START_HEIGHT = 320;\n const HORIZONTAL_GAP = 100;\n const VERTICAL_GAP = 50;\n const LARGE_VERTICAL_GAP = VERTICAL_GAP * 2;\n const BORDER_WIDTH = 5;\n const ELEMENT_COLOR = 'white';\n const IMAGE_FORMAT = 'image/jpeg';\n const SHARE_FILE_NAME = 'MarineOne.jpg';\n const LOGO_IMAGE_PATH = '/img/logo.png';\n const BACKGROUND_IMAGE_PATH = 'img/background_long.jpg';\n const TITLE = \"Journey Memories\";\n\n const { getFavouriteJourney, updateFavouriteJourney } = useFavouriteJourney();\n const id = root.$route.params.id;\n const deviceId = root.$route.params.deviceId;\n const logFileName = root.$route.params.logFile;\n const showImageDialog = ref(false);\n const showExtras = ref(false);\n const selectedImageIndex = ref(0);\n const selectedImageIsPlaceholder = ref(false);\n const images = ref([]);\n const fileSelected = ref(false);\n const uploading = ref(false);\n const downloading = ref(false);\n const uploadFile = ref(null);\n const showLoadingDialog = ref(false);\n const showShareDialog = ref(false);\n let file: File;\n const selectedFileForUpload = ref([]);\n const downloadProgress = ref(0);\n const journey = ref(new FavouriteJourneyViewModel());\n const shareImageUrl = ref(\"\");\n\n const profile = computed(() => {\n return profilestore.profile;\n });\n\n const hasUploadAccess = computed(() => {\n return profile.value ? profile.value.hasUploadAccess : false;\n });\n\n images.value = [\n { url: '' },\n { url: '' },\n { url: '' },\n { url: '' },\n { url: '' }\n ];\n\n const hasValidImage = computed(() => {\n return !images.value.every(img => img.url === '');\n });\n\n const goToLog = () => {\n root.$router.push({ name: \"LogbookRecord\", params: { date: journey.value.favouriteDate, isFavourite: \"true\", journeyId: id } });\n };\n\n const showDialog = (index: number) => {\n selectedImageIndex.value = index;\n selectedImageIsPlaceholder.value = images.value[index].url === '';\n if (!selectedImageIsPlaceholder.value) {\n showImageDialog.value = true;\n } else if (selectedImageIsPlaceholder.value && hasUploadAccess.value) { \n showImageDialog.value = true;\n } else {\n app.error = \"You do not have the permission to modify the gallery. Contact the captain in order to get permission.\";\n }\n };\n\n const handleImageAction = async () => {\n showImageDialog.value = false;\n if (selectedImageIsPlaceholder.value && journey.value) {\n uploading.value = true;\n switch (selectedImageIndex.value) {\n case 0:\n journey.value.image1 = generateRandomFileName();\n await uploadImage(journey.value.image1);\n await updateFavouriteJourney(journey.value);\n break;\n case 1:\n journey.value.image2 = generateRandomFileName();\n await uploadImage(journey.value.image2);\n await updateFavouriteJourney(journey.value);\n break;\n case 2:\n journey.value.image3 = generateRandomFileName();\n await uploadImage(journey.value.image3);\n await updateFavouriteJourney(journey.value);\n break;\n case 3:\n journey.value.image4 = generateRandomFileName();\n await uploadImage(journey.value.image4);\n await updateFavouriteJourney(journey.value);\n break;\n case 4:\n journey.value.image5 = generateRandomFileName();\n await uploadImage(journey.value.image5);\n await updateFavouriteJourney(journey.value);\n break;\n default:\n break;\n }\n uploading.value = false;\n } else {\n switch (selectedImageIndex.value) {\n case 0:\n await deleteImageFromBlobStorage(journey.value.image1);\n journey.value.image1 = \"\";\n await updateFavouriteJourney(journey.value);\n break;\n case 1:\n await deleteImageFromBlobStorage(journey.value.image2);\n journey.value.image2 = \"\";\n await updateFavouriteJourney(journey.value);\n break;\n case 2:\n await deleteImageFromBlobStorage(journey.value.image3);\n journey.value.image3 = \"\";\n await updateFavouriteJourney(journey.value);\n break;\n case 3:\n await deleteImageFromBlobStorage(journey.value.image4);\n journey.value.image4 = \"\";\n await updateFavouriteJourney(journey.value);\n break;\n case 4:\n await deleteImageFromBlobStorage(journey.value.image5);\n journey.value.image5 = \"\";\n await updateFavouriteJourney(journey.value);\n break;\n default:\n break;\n }\n // Code to handle deleting the image for the selected index\n images.value[selectedImageIndex.value].url = '';\n }\n };\n\n const fetchImagesFromBlob = async () => {\n downloading.value = true;\n const ids = [journey.value.image1, journey.value.image2, journey.value.image3, journey.value.image4, journey.value.image5]\n const filenames = ids;\n\n downloadProgress.value = 0;\n\n let imageList = [];\n\n for (let filename of filenames) {\n if (filename) {\n const imageData = await downloadImageFromBlobStorage(filename);\n const blob = new Blob([imageData], { type: IMAGE_FORMAT });\n const url = URL.createObjectURL(blob);\n imageList.push({ url: url });\n } else {\n // Using the empty image path when the filename is null\n imageList.push({ url: '' });\n }\n downloadProgress.value += 20;\n }\n\n images.value = imageList;\n downloadProgress.value = 100;\n downloading.value = false;\n return imageList;\n };\n\n const handleFileChange = (file: File | undefined) => {\n if (file) {\n uploadFile.value = file;\n fileSelected.value = true;\n } else {\n uploadFile.value = null;\n fileSelected.value = false;\n }\n };\n\n const uploadImage = async (fileName: string) => {\n\n await uploadImageToBlobStorage(fileName, new Uint8Array(await uploadFile.value.arrayBuffer()));\n\n // Download the image from blob storage and display it\n const imageData = await downloadImageFromBlobStorage(fileName);\n const blob = new Blob([imageData], { type: IMAGE_FORMAT });\n const url = URL.createObjectURL(blob);\n\n images.value[selectedImageIndex.value].url = url;\n\n uploadFile.value = null; // Clear the selected file\n fileSelected.value = false; // Mark that no file is selected\n selectedFileForUpload.value = []; // Clear the upload file input field\n };\n\n const imageRules = ref([\n (value: File) => !value || (value.size < 5 * 1024 * 1024 && ['image/jpeg', 'image/png'].includes(value.type)) || 'Image size should be less than 5 MB and in JPG or PNG format!',\n ]);\n\n // Helper function to load an image\n const loadImage = (src: string): Promise => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n img.src = src;\n });\n };\n\n\n // Helper function to download and prepare images\n const downloadAndPrepareImages = async (filenames) => {\n const imageList = [];\n for (let filename of filenames) {\n if (filename) {\n const imageData = await downloadImageFromBlobStorage(filename);\n const blob = new Blob([imageData], { type: IMAGE_FORMAT });\n const url = URL.createObjectURL(blob);\n const img = await loadImage(url);\n imageList.push(img);\n }\n }\n return imageList;\n };\n\n // Helper function to calculate the total height of the canvas\n const calculateTotalHeight = (imageList: HTMLImageElement[], logImage?: HTMLImageElement): number => {\n let totalHeight = 0;\n\n // Add the starting height\n totalHeight += START_HEIGHT;\n\n // Calculate logImage height if included\n if (logImage) {\n const logHeight = (CANVAS_WIDTH - 2 * (HORIZONTAL_GAP + BORDER_WIDTH)) * logImage.height / logImage.width;\n totalHeight += logHeight + 2 * BORDER_WIDTH + VERTICAL_GAP;\n }\n\n // Calculate height for each image in the list\n for (let image of imageList) {\n const scaledWidth = CANVAS_WIDTH - 2 * (HORIZONTAL_GAP + BORDER_WIDTH);\n const scaledHeight = scaledWidth * image.height / image.width;\n totalHeight += scaledHeight + 2 * BORDER_WIDTH + VERTICAL_GAP;\n }\n\n // Add a LARGE_VERTICAL_GAP after last image and subtract overflow (calculated manually)\n totalHeight += LARGE_VERTICAL_GAP - 32;\n\n return totalHeight;\n };\n\n const captureAndShareBase = async (includeLog = false) => {\n try {\n showLoadingDialog.value = true;\n\n // Fetch journey images\n const filenames = [\n journey.value.image1,\n journey.value.image2,\n journey.value.image3,\n journey.value.image4,\n journey.value.image5\n ];\n\n const imageList = await downloadAndPrepareImages(filenames);\n\n const logoImg: HTMLImageElement = await loadImage(LOGO_IMAGE_PATH);\n const background: HTMLImageElement = await loadImage(BACKGROUND_IMAGE_PATH);\n\n // Load the logImage if required\n let logImage: HTMLImageElement | undefined;\n if (includeLog) {\n const logImageData = await downloadImageFromBlobStorage(logFileName);\n const logBlob = new Blob([logImageData], { type: IMAGE_FORMAT });\n const logUrl = URL.createObjectURL(logBlob);\n logImage = await loadImage(logUrl);\n }\n\n // Create canvas and its context\n const canvas = document.createElement('canvas');\n canvas.width = CANVAS_WIDTH;\n canvas.height = calculateTotalHeight(imageList, logImage);\n const ctx = canvas.getContext('2d');\n\n // Draw the background\n ctx.drawImage(background, 0, 0, CANVAS_WIDTH, canvas.height);\n\n // Draw the logo\n ctx.drawImage(logoImg, HORIZONTAL_GAP, VERTICAL_GAP, logoImg.width / 2, logoImg.height / 2);\n\n // The position where the logo starts vertically (top-most point)\n const logoStartY = VERTICAL_GAP;\n\n // The height of the logo after scaling\n const scaledLogoHeight = (logoImg.width / 2) * logoImg.height / logoImg.width;\n\n // The position where the logo ends vertically (bottom-most point)\n const logoEndY = logoStartY + scaledLogoHeight;\n\n // Calculate mid-points for title and date relative to the logo's vertical position\n const titleMidPoint = logoStartY + (scaledLogoHeight / 2); // Half of the upper half\n const dateMidPoint = logoStartY + scaledLogoHeight - 32; // Half of the lower half\n\n // Draw the title\n ctx.font = \"78px Arial\";\n ctx.fillStyle = ELEMENT_COLOR;\n ctx.textAlign = \"center\";\n const titleX = (canvas.width / 2) + (canvas.width / 5);\n ctx.fillText(TITLE, titleX, titleMidPoint);\n\n // Draw the date\n const date = formattedDate.value;\n ctx.font = \"55px Arial\";\n ctx.fillStyle = ELEMENT_COLOR;\n const dateX = (canvas.width / 2) + (canvas.width / 5);\n ctx.fillText(date, dateX, dateMidPoint);\n\n // Starting Y position for journey images\n let currentY = logoStartY + scaledLogoHeight + VERTICAL_GAP;\n\n // Optionally draw the log image\n if (includeLog && logImage) {\n const logHeight = (canvas.width - 2 * (HORIZONTAL_GAP + BORDER_WIDTH)) * logImage.height / logImage.width;\n const logWidth = canvas.width - 2 * (HORIZONTAL_GAP + BORDER_WIDTH);\n\n // Create the white border\n ctx.fillStyle = ELEMENT_COLOR;\n ctx.fillRect(\n HORIZONTAL_GAP - BORDER_WIDTH,\n currentY - BORDER_WIDTH,\n logWidth + 2 * BORDER_WIDTH,\n logHeight + 2 * BORDER_WIDTH\n );\n\n // Draw the log image inside the white border\n ctx.drawImage(logImage, HORIZONTAL_GAP, currentY, logWidth, logHeight);\n\n // Adjust currentY for subsequent images\n currentY += logHeight + 2 * BORDER_WIDTH + VERTICAL_GAP;\n }\n\n for (let image of imageList) {\n const scaledWidth = canvas.width - 2 * HORIZONTAL_GAP;\n const scaledHeight = scaledWidth * image.height / image.width;\n\n // Draw the white border/background\n ctx.fillStyle = ELEMENT_COLOR;\n ctx.fillRect(HORIZONTAL_GAP - BORDER_WIDTH, currentY - BORDER_WIDTH, scaledWidth + 2 * BORDER_WIDTH, scaledHeight + 2 * BORDER_WIDTH);\n\n // Draw the image on top of the white background\n ctx.drawImage(image, HORIZONTAL_GAP, currentY, scaledWidth, scaledHeight);\n\n // Move to the position for the next image\n currentY += scaledHeight + 2 * BORDER_WIDTH + VERTICAL_GAP;\n }\n\n // Handle the final image\n canvas.toBlob(croppedBlob => {\n file = new File([croppedBlob], SHARE_FILE_NAME, { type: IMAGE_FORMAT });\n showLoadingDialog.value = false;\n shareImageUrl.value = URL.createObjectURL(file);\n showShareDialog.value = true;\n }, IMAGE_FORMAT);\n\n // Hide loading dialog\n showLoadingDialog.value = false;\n\n } catch (err) {\n showLoadingDialog.value = false;\n app.error = \"An error occurred while generating the image: \" + err;\n console.error(\"An error occurred:\", err);\n }\n };\n\n const shareNow = () => {\n // only display the loading dialog if sharing is possible\n if ((navigator as any).canShare && (navigator as any).canShare({ files: [file] })) {\n\n const shareData: any = {\n files: [file],\n title: 'MarineOne Journey Memories',\n text: 'MarineOne journey memories from ' + formattedDate.value,\n };\n\n (navigator as any).share(shareData)\n .then(() => {\n console.log('Sharing successful.');\n })\n .catch((error: any) => {\n app.error = error;\n });\n } else {\n app.error = `Your device doesn't support sharing files.`;\n }\n }\n\n const formattedDate = computed(() => {\n const date = new Date(journey.value.favouriteDate);\n const day = date.getDate();\n const month = date.toLocaleString('en-US', { month: 'long' });\n const year = date.getFullYear();\n\n let daySuffix = 'th';\n if (day === 1 || day === 21 || day === 31) {\n daySuffix = 'st';\n } else if (day === 2 || day === 22) {\n daySuffix = 'nd';\n } else if (day === 3 || day === 23) {\n daySuffix = 'rd';\n }\n\n return journey.value ? `${day}${daySuffix} of ${month}, ${year}` : \"\";\n });\n\n const compressImage = async (file) => {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = event => {\n const img = new Image();\n const result = event.target.result as string;\n img.src = result;\n img.onload = () => {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0);\n canvas.toBlob((blob) => {\n resolve(new File([blob], file.name, { type: 'image/webp' }));\n }, 'image/webp', 1);\n };\n };\n });\n };\n\n function generateRandomFileName(length = 32): string {\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let result = '';\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * characters.length));\n }\n return deviceId + \"_\" + result + '.jpeg';\n }\n\n onMounted(async () => {\n journey.value = await getFavouriteJourney(parseInt(id));\n fetchImagesFromBlob();\n });\n\n return {\n images,\n handleFileChange,\n uploadImage,\n uploading,\n fileSelected,\n downloading,\n showImageDialog,\n showDialog,\n selectedImageIsPlaceholder,\n handleImageAction,\n uploadFile,\n selectedImageIndex,\n imageRules,\n goToLog,\n downloadProgress,\n showExtras,\n showShareDialog,\n showLoadingDialog,\n captureAndShareBase,\n shareNow,\n selectedFileForUpload,\n shareImageUrl,\n hasValidImage,\n hasUploadAccess,\n };\n },\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserImageGallery.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserImageGallery.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UserImageGallery.vue?vue&type=template&id=3ecba179&scoped=true&\"\nimport script from \"./UserImageGallery.vue?vue&type=script&lang=ts&\"\nexport * from \"./UserImageGallery.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./UserImageGallery.vue?vue&type=style&index=0&id=3ecba179&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3ecba179\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VFileInput } from 'vuetify/lib/components/VFileInput';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSheet } from 'vuetify/lib/components/VSheet';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VDialog,VDivider,VFileInput,VIcon,VImg,VList,VListItem,VListItemContent,VListItemIcon,VListItemTitle,VProgressLinear,VRow,VSheet,VSkeletonLoader,VSpacer})\n","const Router = [\n {\n path: \"/user\",\n redirect: \"/user/profile\",\n component: () => import(\"@/views/user/main.vue\"),\n children: [\n {\n path: \"profile\",\n component: () => import(\"@/views/user/profile.vue\"),\n name: \"user_profile\",\n },\n {\n path: \"login\",\n component: () => import(\"@/views/user/login.vue\"),\n name: \"login\",\n },\n ],\n },\n];\n\nexport default Router;\n","import Vue from \"vue\";\nimport Router, { RouteConfig } from \"vue-router\";\nimport { configureOidc } from \"@/store/services/security.service\";\nimport { differenceInMinutes } from \"date-fns\";\nimport Logo from \"@/views/Logo.vue\";\nimport Logout from \"@/views/Logout.vue\";\nimport Home from \"@/views/Home.vue\";\nimport Account from \"@/views/Account.vue\";\nimport Map from \"@/views/Map.vue\";\nimport Mob from \"@/views/mob.vue\";\nimport Settings from \"@/views/Settings.vue\";\nimport EventLog from \"@/views/EventLog.vue\";\nimport Weather from \"@/views/Weather.vue\";\nimport SensorLog from \"@/views/SensorLog.vue\";\nimport AddContact from \"@/views/AddContact.vue\";\nimport EditContact from \"@/views/EditContact.vue\";\nimport GeoPermission from \"@/views/GeoPermission.vue\";\nimport LogbookRecord from \"@/views/LogbookRecord.vue\";\nimport UserImageGallery from \"@/views/UserImageGallery.vue\";\nimport accountRoutes from \"./accountRoutes\";\nimport { alarm, app } from \"@/store/index\";\nimport store from \"@/store\";\nimport { config } from \"vue/types/umd\";\n\nlet routerObj = null as Router | null;\n\nexport async function configureRouter() {\n if (routerObj) return Promise.resolve(routerObj);\n\n const idsrvAuth = await configureOidc();\n Vue.use(Router);\n\n const routes: Array = [\n {\n path: \"/\",\n name: \"Logo\",\n component: Logo,\n meta: {\n authName: idsrvAuth.authName,\n secure: true,\n showTopBar: false,\n },\n },\n {\n path: \"/home\",\n name: \"Home\",\n component: Home,\n meta: {\n authName: idsrvAuth.authName,\n secure: true,\n showTopBar: true,\n },\n },\n {\n path: \"/map\",\n name: \"map\",\n component: Map,\n meta: {\n authName: idsrvAuth.authName,\n secure: true,\n showTopBar: false,\n },\n },\n {\n path: \"/settings\",\n name: \"settings\",\n component: Settings,\n meta: {\n authName: idsrvAuth.authName,\n secure: true,\n showTopBar: true,\n },\n },\n {\n path: \"/profile\",\n name: \"profile\",\n component: Account,\n meta: {\n authName: idsrvAuth.authName,\n secure: true,\n showTopBar: true,\n },\n },\n {\n path: \"/authentication/logout-callback\",\n name: \"callback\",\n component: Logout,\n meta: { secure: false, showTopBar: false },\n },\n {\n path: \"/mob\",\n name: \"mob\",\n component: Mob,\n meta: {\n authName: idsrvAuth.authName,\n secure: true,\n showTopBar: true,\n },\n },\n {\n path: \"/geo-permission\",\n name: \"geo-permission\",\n component: GeoPermission,\n meta: {\n authName: idsrvAuth.authName,\n secure: true,\n showTopBar: true,\n },\n },\n {\n path: \"/weather\",\n name: \"weather\",\n component: Weather,\n meta: {\n authName: idsrvAuth.authName,\n secure: true,\n showTopBar: true,\n },\n },\n {\n path: \"/event-log\",\n name: \"event-log\",\n component: EventLog,\n meta: {\n authName: idsrvAuth.authName,\n secure: true,\n showTopBar: true,\n },\n },\n {\n path: \"/history/:id\",\n name: \"history\",\n component: SensorLog,\n meta: {\n authName: idsrvAuth.authName,\n secure: true,\n showTopBar: true,\n },\n },\n {\n path: \"/logbook-record/:daterange\",\n name: \"LogbookRecord\",\n component: LogbookRecord,\n meta: {\n authName: idsrvAuth.authName,\n secure: true,\n showTopBar: false,\n },\n },\n {\n path: \"/userGallery/:ids\",\n name: \"userGallery\",\n component: UserImageGallery,\n meta: {\n authName: idsrvAuth.authName,\n secure: true,\n showTopBar: false,\n },\n },\n {\n path: \"/addContact\",\n name: \"addContact\",\n component: AddContact,\n meta: {\n authName: idsrvAuth.authName,\n secure: true,\n showTopBar: true,\n },\n },\n {\n path: \"/editContact\",\n name: \"editContact\",\n component: EditContact,\n meta: {\n authName: idsrvAuth.authName,\n secure: true,\n showTopBar: true,\n },\n },\n ...accountRoutes,\n ];\n\n routerObj = new Router({\n mode: \"history\",\n base: process.env.BASE_URL,\n routes,\n });\n routerObj.beforeEach((to, from, next) => {\n if (to.path.indexOf(\"authentication\") !== -1) {\n next();\n } else {\n if (to.meta.showTopBar !== null) {\n app.showTopBar = to.meta.showTopBar;\n }\n\n // if going from settings\n if (to.name && from.name && from.name == \"settings\") {\n console.log(\"Going from settings\");\n\n if (to.name == \"LogbookRecord\" || to.name == \"addContact\" || to.name == \"editContact\") {\n\n console.log(\"Going to LogbookRecord or addContact or editContact\");\n\n if (to.name == \"LogbookRecord\") {\n console.log(\"Going to LogbookRecord\");\n app.setMyBoatPanelIndex(1); // Logbook, index myBoat 1\n } else {\n console.log(\"Going to addContact or editContact\");\n app.setMyBoatPanelIndex(2); // Contacts, index myBoat 2\n }\n app.setMyBoatPanelOpen(true);\n } else {\n app.setMyBoatPanelIndex(-1);\n app.setMyBoatPanelOpen(false);\n }\n\n if (to.name == \"history\") {\n console.log(\"Going to history with params id: \" + to.params.id);\n\n if (to.params.id == \"4\") {\n app.setSensorsPanelOpen(true);\n app.setSensorsPanelIndex(0); // Smoke detector, index sensors 0\n } else if (to.params.id == \"5\") {\n app.setSensorsPanelOpen(true);\n app.setSensorsPanelIndex(1); // CO detector, index sensors 1\n } else if (to.params.id == \"6\") {\n app.setSensorsPanelOpen(true);\n app.setSensorsPanelIndex(2); // Heat detector, index sensors 2\n } else if (to.params.id == \"7\") {\n app.setSensorsPanelOpen(true);\n app.setSensorsPanelIndex(4); // Gas detector, index sensors 4\n } else if (to.params.id == \"8\") {\n app.setSensorsPanelOpen(true);\n app.setSensorsPanelIndex(3); // Water detector, index sensors 3\n } else if (to.params.id == \"17\") {\n app.setSensorsPanelOpen(true);\n app.setSensorsPanelIndex(5); // Bilge pump, index sensors 5\n } else {\n app.setSensorsPanelIndex(-1);\n app.setSensorsPanelOpen(false);\n }\n\n if (to.params.id == \"15\") {\n app.setControlPanelIndex(1); // Gas valve, index control 1\n app.setControlPanelOpen(true);\n } else if (to.params.id == \"16\") {\n app.setControlPanelIndex(0); // Digital IO, index control 0\n app.setControlPanelOpen(true);\n } else {\n app.setControlPanelIndex(-1);\n app.setControlPanelOpen(false);\n }\n } else {\n app.setSensorsPanelIndex(-1);\n app.setControlPanelIndex(-1);\n app.setSensorsPanelOpen(false);\n app.setControlPanelOpen(false);\n }\n }\n\n // if going from home\n if (to.name && from.name && from.name == \"Home\") {\n console.log(\"Going from home\");\n if (to.name == \"history\") {\n console.log(\"Going to history with params id: \" + to.params.id);\n\n if (to.params.id == \"1\") {\n app.setHomePanelIndex(3); // Deck hatch, index home 3\n app.setHomePanelOpen(true);\n } else if (to.params.id == \"2\") {\n app.setHomePanelIndex(0); // Shore power, index home 0\n app.setHomePanelOpen(true);\n } else if (to.params.id == \"3\") {\n app.setHomePanelIndex(1); // Smart plug, index home 1\n app.setHomePanelOpen(true);\n } else if (to.params.id == \"10\") {\n app.setHomePanelIndex(2); // Main door, index home 2\n app.setHomePanelOpen(true);\n } else {\n app.setHomePanelIndex(-1);\n app.setHomePanelOpen(false);\n }\n } else {\n app.setHomePanelIndex(-1);\n app.setHomePanelOpen(false);\n }\n }\n\n if (to.name && to.name !== \"Logo\") {\n const value = alarm.alarmStatus;\n if (value) {\n const minutes = differenceInMinutes(new Date(), value.fetchAt);\n if (minutes > 1440) {\n next(\"/\");\n } else {\n next();\n }\n } else {\n next(\"/\");\n }\n } else {\n next();\n }\n }\n\n return;\n });\n\n\n idsrvAuth.useRouter(routerObj);\n\n return routerObj;\n}\n\nexport default routerObj;\n","module.exports = __webpack_public_path__ + \"img/fleet.7b439562.svg\";","module.exports = __webpack_public_path__ + \"img/13d@2x.67d63a14.svg\";","module.exports = __webpack_public_path__ + \"img/timer-play-outline.513aa247.svg\";","module.exports = __webpack_public_path__ + \"img/11n@2x.7142c78b.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SensorLog.vue?vue&type=style&index=0&id=420d9d2e&prod&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/batteri-ladeniveau-forside_hvid_2.267a2393.svg\";","module.exports = __webpack_public_path__ + \"img/warning-red.c0f4c689.svg\";","module.exports = __webpack_public_path__ + \"img/speedometer-medium.9cca76db.svg\";","module.exports = __webpack_public_path__ + \"img/geo-fence.fc4ad178.svg\";","module.exports = __webpack_public_path__ + \"img/share-variant-outline.af2eb22c.svg\";","module.exports = __webpack_public_path__ + \"img/unknown-error.f111ef83.svg\";","module.exports = __webpack_public_path__ + \"img/01d@2x.7f93fbdb.svg\";","module.exports = __webpack_public_path__ + \"img/responsive.d8cd8086.svg\";","module.exports = __webpack_public_path__ + \"img/reset.678605f6.svg\";","module.exports = __webpack_public_path__ + \"img/nmea.8fc48a15.svg\";","module.exports = __webpack_public_path__ + \"img/13n@2x.67d63a14.svg\";","module.exports = __webpack_public_path__ + \"img/catch-thief-bg.be89b09a.svg\";","// src/plugins/vuetify/theme.js\nimport colors from \"vuetify/lib/util/colors\";\nimport { VuetifyThemeVariant } from \"vuetify/types/services/theme\";\n\nconst theme: VuetifyThemeVariant = {\n primary: {\n base: colors.purple.base,\n darken1: colors.purple.darken1,\n },\n secondary: \"\",\n accent: \"\",\n info: \"\",\n warning: \"\",\n success: \"\",\n error: \"\",\n};\nexport default theme;\n// {\n// primary: {\n// base: colors.purple.base,\n// darken1: colors.purple.darken2,\n// },\n// secondary: colors.indigo,\n// // All keys will generate theme styles,\n// // Here we add a custom `tertiary` color\n// tertiary: colors.pink.base,\n// }\n","import \"@mdi/font/css/materialdesignicons.css\";\nimport Vue from \"vue\";\nimport light from \"./theme\";\nimport Vuetify, {\n VAlert,\n VApp,\n VNavigationDrawer,\n VFooter,\n VList,\n VBtn,\n VIcon,\n VToolbar,\n VDataTable,\n VProgressLinear,\n VAppBar,\n VBottomNavigation,\n VMain,\n} from \"vuetify/lib\";\n\n// vue-cli a-la-carte installation\nVue.use(Vuetify, {\n components: {\n VAlert,\n VApp,\n VNavigationDrawer,\n VFooter,\n VList,\n VBtn,\n VIcon,\n VToolbar,\n VDataTable,\n VProgressLinear,\n VAppBar,\n VBottomNavigation,\n VMain,\n },\n});\n\nconst opts = {\n options: { customProperties: true },\n themes: {\n light: {\n ...light,\n // Add VTextField to set the default input text color to white\n VTextField: {\n input: {\n color: \"white\",\n },\n },\n },\n },\n};\n\nexport default new Vuetify(opts);\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-app',{staticClass:\"app globalFont\"},[(_vm.topbar)?_c('v-app-bar',{staticClass:\"app_title\",attrs:{\"app\":\"\",\"fixed\":\"\",\"outlined\":\"\"}},[_c('v-toolbar-title',{staticClass:\"float-left\"},[_c('router-link',{attrs:{\"to\":'/home/'}},[_c('v-img',{attrs:{\"contain\":\"\",\"position\":\"left center\",\"max-height\":\"56px\",\"src\":\"/img/logo.png\"}})],1),_vm._v(_vm._s(_vm.title)+\" \")],1),_c('v-spacer'),(_vm.$oidc.isAuthenticated)?_c('v-btn',{attrs:{\"icon\":\"\",\"to\":\"/profile\"}},[_c('v-icon',{attrs:{\"color\":\"#ffffff\"}},[_vm._v(\"mdi-account-circle-outline\")])],1):_vm._e()],1):_vm._e(),_c('v-main',[_c('router-view')],1),(_vm.footer)?_c('app-footer'):_vm._e(),_c('v-alert',{staticClass:\"alert-on-top\",attrs:{\"value\":_vm.alarmAlert,\"color\":\"red\",\"dismissible\":\"\",\"icon\":\"mdi-alarm-light-outline\",\"prominent\":\"\",\"transition\":\"scale-transition\",\"type\":\"error\",\"shaped\":\"\"},scopedSlots:_vm._u([{key:\"close\",fn:function(ref){\nvar remove = ref.remove;\nreturn [_c('button',{staticClass:\"v-alert__dismissible v-btn v-btn--icon v-btn--round theme--dark custom-alert-close\",attrs:{\"type\":\"button\",\"aria-label\":\"Close\"},on:{\"click\":_vm.dismissAlarmAlert}},[_c('span',{staticClass:\"v-btn__content\"},[_c('i',{staticClass:\"v-icon notranslate mdi mdi-close-circle theme--dark custom-alert-close-icon\",attrs:{\"aria-hidden\":\"true\"}})])])]}}])},[_c('div',{staticClass:\"text-center font-weight-bold\"},[_vm._v(\"ALARM TRIGGERED\")]),_c('div',{staticClass:\"text-center font-weight-bold\"},[_vm._v(_vm._s(_vm.alarm))])]),_c('v-alert',{staticClass:\"alert-on-top\",attrs:{\"value\":_vm.errorAlert,\"color\":\"orange\",\"dismissible\":\"\",\"icon\":\"mdi-shield-alert-outline\",\"prominent\":\"\",\"transition\":\"scale-transition\",\"type\":\"error\",\"shaped\":\"\"},scopedSlots:_vm._u([{key:\"close\",fn:function(ref){\nvar remove = ref.remove;\nreturn [_c('button',{staticClass:\"v-alert__dismissible v-btn v-btn--icon v-btn--round theme--dark custom-alert-close\",attrs:{\"type\":\"button\",\"aria-label\":\"Close\"},on:{\"click\":_vm.dismissErrorAlert}},[_c('span',{staticClass:\"v-btn__content\"},[_c('i',{staticClass:\"v-icon notranslate mdi mdi-close-circle theme--dark custom-alert-close-icon\",attrs:{\"aria-hidden\":\"true\"}})])])]}}])},[_c('div',{staticClass:\"text-center font-weight-bold\"},[_vm._v(\"WARNING\")]),_c('div',{staticClass:\"text-center font-weight-bold\"},[_vm._v(_vm._s(_vm.error))])]),_c('v-alert',{staticClass:\"alert-on-top\",attrs:{\"value\":_vm.successAlert,\"color\":\"green\",\"dismissible\":\"\",\"icon\":\"mdi-shield-check-outline\",\"prominent\":\"\",\"transition\":\"scale-transition\",\"type\":\"success\",\"shaped\":\"\"},scopedSlots:_vm._u([{key:\"close\",fn:function(ref){\nvar remove = ref.remove;\nreturn [_c('button',{staticClass:\"v-alert__dismissible v-btn v-btn--icon v-btn--round theme--dark custom-alert-close\",attrs:{\"type\":\"button\",\"aria-label\":\"Close\"},on:{\"click\":_vm.dismissSuccessAlert}},[_c('span',{staticClass:\"v-btn__content\"},[_c('i',{staticClass:\"v-icon notranslate mdi mdi-close-circle theme--dark custom-alert-close-icon\",attrs:{\"aria-hidden\":\"true\"}})])])]}}])},[_c('div',{staticClass:\"text-center font-weight-bold\"},[_vm._v(\"SUCCESS\")]),_c('div',{staticClass:\"text-center font-weight-bold\"},[_vm._v(_vm._s(_vm.success))])]),_c('v-snackbar',{attrs:{\"value\":_vm.updateExists,\"timeout\":-1,\"color\":\"primary\"}},[_vm._v(\" An update is available \"),_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":_vm.refreshApp}},[_vm._v(\" Update \")])],1),_c('v-overlay',{attrs:{\"value\":_vm.isProcessing,\"opacity\":\"0.9\",\"z-index\":\"1000\"}},[_c('v-row',{staticClass:\"fill-height\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\"text-center white--text\",attrs:{\"cols\":\"12\"}},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"size\":\"50\",\"color\":\"white\"}}),_c('div',{staticClass:\"mt-4 font-weight-bold\"},[_vm._v(_vm._s(_vm.processingLabel))]),_c('div',{staticClass:\"text-caption\"},[_vm._v(\"Refreshing in \"+_vm._s(_vm.countdown)+\" seconds\")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isAuthendicated)?_c('v-bottom-navigation',{staticClass:\"app-bottom-bar\",attrs:{\"app\":\"\",\"fixed\":\"\"}},[_c('v-btn',{attrs:{\"to\":\"/home\"}},[_c('span',{staticClass:\"white--text\"},[_vm._v(\"Home\")]),_c('v-icon',{attrs:{\"small\":\"\",\"color\":\"#ffffff\"}},[_vm._v(\"mdi-home\")])],1),_c('v-spacer'),_c('v-btn',{on:{\"click\":_vm.goToMap}},[_c('span',{staticClass:\"white--text\"},[_vm._v(\"Geofence\")]),_c('v-icon',{attrs:{\"small\":\"\",\"color\":\"#ffffff\"}},[_vm._v(\"mdi-map-marker-radius\")])],1),_c('v-spacer'),_c('v-btn',{attrs:{\"to\":\"/settings\"}},[_c('span',{staticClass:\"white--text\"},[_vm._v(\"Settings\")]),_c('v-icon',{attrs:{\"small\":\"\",\"color\":\"#ffffff\"}},[_vm._v(\"mdi-cog\")])],1),_c('v-spacer'),_c('v-btn',{attrs:{\"to\":\"/event-log\"}},[_c('span',{staticClass:\"white--text\"},[_vm._v(\"Event log\")]),_c('v-icon',{attrs:{\"small\":\"\",\"color\":_vm.alarmColor},on:{\"click\":_vm.dismissAlarmMode}},[_vm._v(\"mdi-alert-circle\")])],1),_c('v-spacer'),_c('v-btn',{attrs:{\"to\":\"/weather\"}},[_c('span',{staticClass:\"white--text\"},[_vm._v(\"Weather\")]),_c('v-icon',{attrs:{\"small\":\"\",\"color\":\"#ffffff\"}},[_vm._v(\"mdi-white-balance-sunny\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, computed } from \"@vue/composition-api\";\nimport Vue from \"vue\";\nimport { alarm } from \"@/store\";\nimport { OidcAuth } from \"vue-oidc-client/vue2\";\n\nexport default defineComponent({\n setup(_, { root }) {\n const isAuthendicated = computed(() =>\n Vue.prototype.$oidc\n ? (Vue.prototype.$oidc as OidcAuth).isAuthenticated\n : false\n );\n\n const goToMap = () => {\n if (root.$route.path !== \"/map\" && root.$route.path !== \"/geo-permission\") {\n if (alarm.userLocReady) {\n root.$router.push({ name: \"map\" });\n } else {\n root.$router.push({ name: \"geo-permission\", params: { destination: \"map\" } });\n }\n }\n };\n\n const dismissAlarmMode = () => {\n alarm.SetInAlarmMode(false);\n };\n\n const isAlarm = computed(() => {\n return alarm.inAlarmMode;\n });\n\n const alarmColor = computed(() => {\n if (isAlarm.value) {\n return \"#FF0000\"\n } else {\n return \"#FFFFFF\"\n }\n });\n\n return {\n isAuthendicated,\n goToMap,\n alarmColor,\n dismissAlarmMode\n };\n }\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FooterNavigation.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FooterNavigation.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FooterNavigation.vue?vue&type=template&id=615dce1e&scoped=true&\"\nimport script from \"./FooterNavigation.vue?vue&type=script&lang=ts&\"\nexport * from \"./FooterNavigation.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FooterNavigation.vue?vue&type=style&index=0&id=615dce1e&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"615dce1e\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBottomNavigation } from 'vuetify/lib/components/VBottomNavigation';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBottomNavigation,VBtn,VIcon,VSpacer})\n","import { ref } from \"@vue/composition-api\";\n\nexport default function () {\n {\n const refreshing = ref(false);\n const registration = ref();\n const updateExists = ref(false);\n\n // Store the SW registration so we can send it a message\n // We use `updateExists` to control whatever alert, toast, dialog, etc we want to use\n // To alert the user there is an update they need to refresh for\n // Called when the user accepts the update\n const updateAvailable = (event: any) => {\n registration.value = event.detail;\n updateExists.value = true;\n };\n\n const refreshApp = () => {\n updateExists.value = false;\n if (registration.value && registration.value.waiting) {\n // send message to SW to skip the waiting and activate the new SW\n registration.value.waiting.postMessage({\n type: \"SKIP_WAITING\",\n });\n } else {\n // unregister the service worker to clear the cache\n navigator.serviceWorker\n .getRegistrations()\n .then((registrations) => {\n for (const registration of registrations) {\n registration.unregister();\n }\n // reload the page to activate the new SW\n window.location.reload();\n });\n }\n };\n // Listen for our custom event from the SW registration\n document.addEventListener(\"swUpdated\", updateAvailable, {\n once: true,\n });\n // Prevent multiple refreshes\n navigator.serviceWorker.addEventListener(\"controllerchange\", () => {\n if (refreshing.value) return;\n refreshing.value = true;\n // Here the actual reload of the page occurs\n window.location.reload();\n });\n return {\n refreshApp,\n updateExists,\n };\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport AppFooter from \"@/components/FooterNavigation.vue\";\nimport \"./style/app.scss\";\nimport { app } from \"@/store\";\nimport { computed, defineComponent, ref } from \"@vue/composition-api\";\nimport useServiceUpdate from \"@/utilities/useServiceUpdate\";\n\nexport default defineComponent({\n components: { AppFooter },\n setup() {\n const errorAlert = ref(false);\n const successAlert = ref(false);\n const alarmAlert = ref(false);\n const isProcessing = computed(() => app.isProcessing);\n const processingLabel = computed(() => app.processingLabel);\n const countdown = computed(() => app.countdown);\n\n const dismissAlarmAlert = () => {\n app.alarm = \"\";\n };\n\n const dismissErrorAlert = () => {\n app.error = \"\";\n };\n\n const dismissSuccessAlert = () => {\n app.success = \"\";\n };\n\n const title = computed(() => {\n return app.title ? app.title : \"\";\n });\n const topbar = computed(() => {\n return app.showTopBar;\n });\n const footer = computed(() => {\n return app.showFooter;\n });\n const error = computed(() => {\n return app.error ? app.error : \"\";\n });\n\n const alarm = computed(() => {\n return app.alarm ? app.alarm : \"\";\n });\n\n const success = computed(() => {\n return app.success ? app.success : \"\";\n });\n app.$watch(\n module => module.alarm,\n newValue => {\n alarmAlert.value = newValue != \"\";\n }\n );\n app.$watch(\n module => module.error,\n newValue => {\n errorAlert.value = newValue != \"\";\n if (newValue) {\n setTimeout(() => {\n dismissErrorAlert();\n }, 10000);\n }\n }\n );\n\n app.$watch(\n module => module.success,\n newValue => {\n successAlert.value = newValue != \"\";\n if (newValue) {\n setTimeout(() => {\n dismissSuccessAlert();\n }, 10000);\n }\n }\n );\n\n return {\n title,\n topbar,\n footer,\n error,\n alarm,\n success,\n isProcessing,\n processingLabel,\n countdown,\n alarmAlert,\n errorAlert,\n successAlert,\n dismissAlarmAlert,\n dismissErrorAlert,\n dismissSuccessAlert,\n ...useServiceUpdate()\n };\n }\n});\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--13-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--13-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=5f19867f&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=5f19867f&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5f19867f\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VMain } from 'vuetify/lib/components/VMain';\nimport { VOverlay } from 'vuetify/lib/components/VOverlay';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSnackbar } from 'vuetify/lib/components/VSnackbar';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VAlert,VApp,VAppBar,VBtn,VCol,VIcon,VImg,VMain,VOverlay,VProgressCircular,VRow,VSnackbar,VSpacer,VToolbarTitle})\n","/* tslint:disable:no-console */\n\nimport { register } from \"register-service-worker\";\n\nif (process.env.NODE_ENV === \"production\") {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready(registration) {\n registration.update();\n setInterval(() => {\n registration.update();\n }, 1000 * 60 * 60); // e.g. hourly checks\n console.log(\n \"App is being served from cache by a service worker.\\n\" +\n \"For more details, visit https://goo.gl/AFskqB\"\n );\n },\n cached() {\n console.log(\"Content has been cached for offline use.\");\n },\n updated(registration) {\n document.dispatchEvent(\n new CustomEvent(\"swUpdated\", { detail: registration })\n );\n console.log(\"New content is available; please refresh.\");\n },\n offline() {\n console.log(\n \"No internet connection found. App is running in offline mode.\"\n );\n },\n error(error) {\n console.error(\"Error during service worker registration:\", error);\n },\n });\n}\n","import { format } from \"date-fns\";\n\nexport default (date: Date, formatString = \"eeee, dd MMMM\") => {\n return format(new Date(date), formatString);\n};\n","import _ from \"lodash\";\nimport Vue, { VueConstructor } from \"vue\";\n\ndeclare module \"vue/types/vue\" {\n interface Vue {\n $_: typeof _;\n }\n}\n\nexport default {\n install(Vue: VueConstructor) {\n Object.defineProperty(Vue.prototype, \"$_\", {\n value: _,\n });\n },\n};\n","import \"core-js/stable\";\nimport \"regenerator-runtime/runtime\";\nimport Vue from \"vue\";\nimport VueCompositionApi from \"@vue/composition-api\";\nimport vuetify from \"./plugins/vuetify\";\nimport App from \"./App.vue\";\nimport { configureRouter } from \"./router/\";\nimport store from \"@/store/index\";\nimport \"./registerServiceWorker\";\nimport dateFilter from \"@/filters/date.filter\";\nimport { configureOidc } from \"@/store/services/security.service\";\nimport { configureMessageHub } from \"@/plugins/messageHub\";\nimport { clear } from \"idb-keyval\";\nimport LodashPlugin from \"@/plugins/lodash-plugin\";\n\nconst init = async function () {\n const mainOidc = await configureOidc();\n const router = await configureRouter();\n clear().then(() => {\n mainOidc.startup().then((ok) => {\n if (mainOidc.isAuthenticated) {\n configureMessageHub()\n .then(() => {\n console.log(\"MessageHub started\");\n })\n .catch(() => {\n console.log(\"MessageHub start error\");\n mainOidc.signOut();\n });\n }\n if (ok) {\n Vue.config.productionTip = false;\n Vue.filter(\"date\", dateFilter);\n Vue.use(VueCompositionApi);\n Vue.prototype.$oidc = mainOidc;\n Vue.use(LodashPlugin);\n\n new Vue({\n vuetify,\n router,\n store,\n render: (h) => h(App),\n }).$mount(\"#app\");\n }\n });\n });\n};\n\ninit();\n","import Axios, { AxiosResponse } from \"axios\";\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\nimport { Ref, ref } from \"@vue/composition-api\";\nimport { HistoricGpsPosition } from \"../models/HistoricGpsPosition\";\nexport default function (dateRange: string) {\n const logbookItems = ref>([]);\n const get = async () => {\n await defineHeaderAxios();\n\n Axios.get(`/api/Alarm/geo/${dateRange}`)\n .then((result: AxiosResponse) => {\n if (result.status === 200) {\n logbookItems.value = result.data;\n }\n })\n .catch((error) => {\n console.log(error);\n });\n };\n get();\n return {\n logbookItems,\n };\n}\n","module.exports = __webpack_public_path__ + \"img/map-marker-stop.e245d4eb.svg\";","module.exports = __webpack_public_path__ + \"img/contact.d4b87437.svg\";","module.exports = __webpack_public_path__ + \"img/09d@2x.d235ab65.svg\";","/* eslint-disable */\nimport Oidc, { User } from 'oidc-client';\nimport { alarm, profile } from '@/store';\nimport {\n createOidcAuth,\n LogLevel,\n OidcAuth,\n SignInType,\n} from 'vue-oidc-client/vue2';\nimport addSeconds from 'date-fns/addSeconds';\nconst loco = window.location;\nconst appRootUrl = `${loco.protocol}//${loco.host}${process.env.BASE_URL}`;\nimport { configureMessageHub } from '@/plugins/messageHub';\nimport { Log } from '@/plugins/Logging';\nlet authObj = null as OidcAuth | null;\n\nexport async function configureOidc() {\n if (authObj) return Promise.resolve(authObj);\n\n const configFetch = await fetch('/_configuration/MarineOneApp');\n const config = await configFetch.json();\n\n authObj = createOidcAuth(\n 'main',\n SignInType.Window,\n appRootUrl,\n {\n ...config,\n // test use\n prompt: 'login',\n\n // max_age: 120,\n // automaticSilentRenew: true,\n start_checksession: true,\n silent_renew: true,\n silent_redirect_uri: `${appRootUrl}/silent-refresh.html`,\n log_console_warning_active: true,\n log_console_debug_active: false,\n },\n console,\n LogLevel.Debug\n );\n\n // handle events\n authObj.events.addAccessTokenExpiring(function () {\n if (authObj) {\n authObj.startSilentRenew();\n } else {\n window.location.href = appRootUrl;\n }\n });\n authObj.events.addAccessTokenExpired(function () {\n alarm.ClearAlarmData();\n if (authObj) {\n authObj.signOut().then(() => {\n window.location.href = appRootUrl;\n });\n } else {\n window.location.href = appRootUrl;\n }\n });\n\n authObj.events.addSilentRenewError(function (err: Error) {\n alarm.ClearAlarmData();\n });\n\n authObj.events.addUserLoaded(function (user: User) {\n if (authObj) {\n authObj.startSilentRenew();\n }\n profile.Get().then(() => {\n configureMessageHub().then(() => {\n Log.information('Messagehub started');\n });\n });\n });\n\n authObj.events.addUserUnloaded(function () {\n alarm.ClearAlarmData();\n window.location.href = appRootUrl;\n });\n\n authObj.events.addUserSignedOut(function () {\n window.location.href = appRootUrl;\n });\n\n authObj.events.addUserSessionChanged(function () {\n alarm.ClearAlarmData();\n });\n const getExpirationTime = (expires_At: number): Date => {\n var jan1970 = new Date('1970-01-01T00:00:00Z');\n return addSeconds(jan1970, expires_At);\n };\n return authObj;\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mob.vue?vue&type=style&index=0&id=2cffb544&prod&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/weather_old.be5bf8f4.svg\";","module.exports = __webpack_public_path__ + \"img/map-marker-distance.dc5328ff.svg\";","module.exports = __webpack_public_path__ + \"img/unlock.bb817d95.svg\";","module.exports = __webpack_public_path__ + \"img/dots-vertical-circle-outline.a322dd7e.svg\";","module.exports = __webpack_public_path__ + \"img/edit.13150108.svg\";","export default class AttachedDeviceModel {\n public coreId: string;\n public attachedDeviceId: string;\n public attachedDeviceName: string;\n public attachedDeviceTypeId: number;\n public alarm1: boolean;\n public alarm2: boolean;\n public tampered: boolean;\n public batteryLow: boolean;\n public reporting: boolean;\n public reportingRestored: boolean;\n public failure: boolean;\n public acMainsFault: boolean;\n public testMode: boolean;\n public batteryDefect: boolean;\n public age: number;\n public deviceTypeDescription: string;\n public latestEventName: string;\n public modifiedDateTime: Date;\n public insertedDateTime: string;\n public minutesSinceLastHeartBeat: string;\n}\n","module.exports = __webpack_public_path__ + \"img/04d@2x.5aae8f83.svg\";","module.exports = __webpack_public_path__ + \"img/bilge-pump-on-icon.43fba666.svg\";","module.exports = __webpack_public_path__ + \"img/50d@2x.f5dcdd1b.svg\";","module.exports = __webpack_public_path__ + \"img/map-marker-round-trip.e187f318.svg\";","module.exports = __webpack_public_path__ + \"img/03d@2x.ad789581.svg\";","module.exports = __webpack_public_path__ + \"img/thermometer.e2813296.png\";","module.exports = __webpack_public_path__ + \"img/escape.4e980280.svg\";","module.exports = __webpack_public_path__ + \"img/mobO.fd5a1731.svg\";","module.exports = __webpack_public_path__ + \"img/profil.087714d6.svg\";","module.exports = __webpack_public_path__ + \"img/battery.22b40001.svg\";","module.exports = __webpack_public_path__ + \"img/switched-off.fec9ff81.svg\";","import { configureOidc } from \"@/store/services/security.service\";\nimport Axios from \"axios\";\nimport { OidcAuth } from \"vue-oidc-client/vue2\";\nexport default async function () {\n const token = configureOidc().then(\n (auth: OidcAuth) => {\n Axios.defaults.headers.common[\"Authorization\"] =\n \"Bearer \" + auth.accessToken;\n },\n (err) => {\n console.log(err);\n }\n );\n}\n","module.exports = __webpack_public_path__ + \"img/10n@2x.c8cdb216.svg\";","module.exports = __webpack_public_path__ + \"img/map-arrow.c5ca6d65.svg\";","module.exports = __webpack_public_path__ + \"img/door-sensor.710c0188.svg\";","module.exports = __webpack_public_path__ + \"img/captains_log.46fbc85b.svg\";","export default function () {\n const getName = (type: number): string => {\n switch (type) {\n case 1:\n return \"Deck hatch sensor\";\n case 2:\n return \"Shore power\";\n case 3:\n return \"Smart plug\";\n case 4:\n return \"Smoke detector\";\n case 5:\n return \"CO detector\";\n case 6:\n return \"Heat detector\";\n case 7:\n return \"Gas detector\";\n case 8:\n return \"Water intrusion detector\";\n case 9:\n return \"Keypad\";\n case 10:\n return \"Main door sensor\";\n case 11:\n return \"Immobilizer\";\n case 12:\n return \"App engine kill\";\n case 13:\n return \"Gateway\";\n case 15:\n return \"Gas valve\";\n case 16:\n return \"Digital output\";\n case 17:\n return \"Bilge pump\";\n default:\n return \"Unknown sensor\";\n }\n };\n\n return {\n getName,\n };\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Weather.vue?vue&type=style&index=0&id=0210890c&prod&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/timer_blue.ebd498ff.svg\";","module.exports = __webpack_public_path__ + \"img/blad.8a761e0c.svg\";","module.exports = __webpack_public_path__ + \"img/mob.78152360.svg\";","module.exports = __webpack_public_path__ + \"img/gas_valve.f2bb924e.svg\";","module.exports = __webpack_public_path__ + \"img/batteri-ladeniveau-forside_hvid70.7c6a1ee5.svg\";","module.exports = __webpack_public_path__ + \"img/bilge-pump-off-icon.ba3a9959.svg\";"],"sourceRoot":""}