{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/icons/map-position-dot.svg","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/views/Map.vue?63f0","webpack:///./src/assets/wicons/03n@2x.svg","webpack:///./src/assets/icons/reset_blue.svg","webpack:///./src/assets/icons/position-tracking.svg","webpack:///./src/views/Account.vue?e021","webpack:///./src/assets/icons/zigbee.svg","webpack:///./src/assets/icons/no-signal.svg","webpack:///./src/views/EventLog.vue?0181","webpack:///./src/assets/icons/battery-groupe-no-number-center.svg","webpack:///./src/assets/icons/mute.svg","webpack:///./src/views/SensorLog.vue?9cc7","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/App.vue?33d9","webpack:///./src/assets/icons/sirene-roed.svg","webpack:///./src/assets/icons/info-circle-blk.svg","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/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/store/useContact.ts","webpack:///./src/assets/icons/door-opened.svg","webpack:///./src/assets/wicons/50n@2x.svg","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/views/Weather.vue?d291","webpack:///./src/assets/icons/log.svg","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/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/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/views/Logo.vue?48ca","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?7fd5","webpack:///./src/views/Logout.vue","webpack:///./src/views/Logout.vue?e2b8","webpack:///./src/views/Logout.vue?c9a4","webpack:///./src/views/Home.vue?859b","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?d28d","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?5a0e","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?56cb","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?637d","webpack:///./src/views/Settings.vue","webpack:///./src/views/Settings.vue?b0c6","webpack:///./src/views/Settings.vue?de13","webpack:///./src/views/EventLog.vue?5375","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?9992","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?2a04","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?c093","webpack:///./src/views/AddContact.vue","webpack:///./src/views/AddContact.vue?9a85","webpack:///./src/views/AddContact.vue?1913","webpack:///./src/views/EditContact.vue?cfbd","webpack:///./src/views/EditContact.vue","webpack:///./src/views/EditContact.vue?7da2","webpack:///./src/views/EditContact.vue?922c","webpack:///./src/views/GeoPermission.vue?bf66","webpack:///./src/views/GeoPermission.vue","webpack:///./src/views/GeoPermission.vue?0ba9","webpack:///./src/views/GeoPermission.vue?cae7","webpack:///./src/views/LogbookRecord.vue?ee0a","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?c403","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/AddContact.vue?36be","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/views/EditContact.vue?c74d","webpack:///./src/assets/icons/reset.svg","webpack:///./src/views/mob.vue?2280","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?0acb","webpack:///./src/components/FooterNavigation.vue?975b","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/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/wicons/50d@2x.svg","webpack:///./src/views/UserImageGallery.vue?5fce","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/components/FooterNavigation.vue?bf61","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/assets/icons/timer_blue.svg","webpack:///./src/assets/icons/blad.svg","webpack:///./src/views/LogbookRecord.vue?fc0e","webpack:///./src/assets/icons/mob.svg","webpack:///./src/assets/icons/gas_valve.svg","webpack:///./src/assets/icons/batteri-ladeniveau-forside_hvid70.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","oidc","defaults","headers","common","accessToken","options","super","alarmStatus","armed","syncStatus","syncAlarm","trackingStatus","seconds","lastMiscInfo","lastKnownLocation","lat","lng","user_lat","user_lng","doorClosed","hatchClosed","shorePowerOn","smartPlugOn","digitalIOOn","gasValveOpen","gpsRadius","deviceAdded","deviceTimedOut","inAlarmMode","deviceThatTriggeredAlarm","alreadyLoggedIn","userLocReady","this","setArmed","SetStatus","defineHeaderAxios","SetData","catch","post","app","information","startSync","checkStatus","clearInterval","intervalID","setInterval","status","latitude","longitude","dateRange","state","sensor","syncSensor","SetNewDeviceAdded","SetNewDeviceTimedOut","alarm","useDevice","getName","toUpperCase","device","settings","Alarm","trim","router","replace","location","geometry","coordinates","coords","miscInfo","generateMutationSetters","payload","EnrollInProgress","EnrollStartedAt","Date","setEnrollProgres","setEnrollStartTime","id","statusText","ProfileViewModel","profile","Set","model","put","Get","devices","GetData","startSensorSync","find","item","attachedDeviceId","age","Number","index","findIndex","alarm1","showTopBar","showFooter","success","title","isHomePanelOpen","homePanelOpenIndex","isMyBoatPanelOpen","myBoatPanelOpenIndex","isControlPanelOpen","controlPanelOpenIndex","isSensorsPanelOpen","sensorsPanelOpenIndex","log","use","rootStore","version","mutations","actions","getters","store","Store","enrollState","mobState","add","async","contact","update","remove","delete","getCaptain","deviceId","nameRules","v","emailRules","test","map","webpackContext","req","webpackContextResolve","keys","Log","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","fetchAt","Al","lastEvent","Le","atDevice","Ad","connectionObj","configureMessageHub","mainOidc","accessTokenFactory","getAcessToken","skipNegotiation","transport","WebSockets","connection","withUrl","appUrl","configureLogging","Debug","build","on","toString","start","end","NewDeviceTimedOut","NewDeviceAdded","SetCurrentLocation","SetCurentMiscInfo","handleStatusChange","onAlarm","warn","statusChange","SetSensorAge","senderDevice","SetAlarmOrigin","attachedDeviceTypeId","SetAlarmModeTriggered","statusMap","SetHatchState","SetShorePowerState","SetSmartPlugState","SetDoorState","SetGasValveState","SetDigitalIOState","deviceTypeId","statusFunc","msg","values","split","SetSensorStatus","onclose","startConnection","startedPromise","updateUserSettings","getUserSettings","render","_vm","_h","$createElement","_c","_self","attrs","ref","staticClass","_e","staticRenderFns","isIos","userAgent","navigator","toLowerCase","isInStandaloneMode","standalone","showInstallMessage","_","root","loading","container","GetStatus","component","VContainer","VFlex","VImg","VLayout","VProgressLinear","ClearAlarmData","$router","returnToLogin","VBtn","VMain","VRow","_v","showGrafDialog1","power1","statusLoading","voltageWarning1","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","accuracy","voltage","parseFloat","getItem","AttachedDeviceModel","foundModel","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","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","logout","manageAcc","isValid","initSave","removeOk","showRemove","lockoutOk","showLockout","authorizeOk","showAuthorize","noconfirm","successOk","showSuccess","ContactViewModel","connectedAccount","approve","allowGallery","denyGallery","allowUpload","denyUpload","lockout","getSubscription","VueTelInput","ConfirmDialog","useContact","useConnectedAccount","useSubscription","useUserSettings","subscription","userSettings","profileForm","signOut","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","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","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","SetUserLocation","google","maps","LatLng","path","getPath","setPosition","contentString","getPosition","addListener","close","setContent","getMap","goToGeoPerm","PERMISSION_DENIED","POSITION_UNAVAILABLE","TIMEOUT","pathBoat","startTracking","stopTracking","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","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","APIkey","getCurrentWeather","config","fetch","response","weather","currentWeather","timeConverter","UNIX_timestamp","a","getDay","hour","padStart","min","time","timetoDayConverter","getCardinalDirection","angle","emoji_directions","round","forecast","comingWeather","daily","dt","night","pop","wind_speed","wind_deg","dayWeather","current","feels_like","weatherMainText","main","mainWeather","getWeather","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","useIOSDetection","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","startTime","stopTime","totalDistance","averageSpeed","roundTripRadius","maxSpeed","maxSpeedIndex","carouselModel","infoWindows","file","uploadFile","logFileName","generateRandomFileName","captureLog","logFile","favouriteDate","filenames","image1","image2","image3","image4","image5","filename","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","clear","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","configureRouter","idsrvAuth","routes","Logo","meta","authName","secure","Settings","Account","Logout","GeoPermission","Weather","EventLog","SensorLog","LogbookRecord","UserImageGallery","AddContact","EditContact","accountRoutes","base","beforeEach","to","from","next","setMyBoatPanelIndex","setMyBoatPanelOpen","setSensorsPanelOpen","setSensorsPanelIndex","setControlPanelIndex","setControlPanelOpen","setHomePanelIndex","setHomePanelOpen","differenceInMinutes","useRouter","theme","primary","colors","purple","darken1","secondary","accent","info","warning","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","SetInAlarmMode","isAlarm","refreshing","registration","updateAvailable","detail","waiting","postMessage","serviceWorker","getRegistrations","registrations","unregister","reload","addEventListener","once","AppFooter","topbar","footer","newValue","useServiceUpdate","VSnackbar","VToolbarTitle","dispatchEvent","CustomEvent","formatString","Vue","init","startup","ok","productionTip","filter","vuetify","h","App","$mount","loco","appRootUrl","protocol","host","authObj","configureOidc","configFetch","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.780861f4.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-2d225bd9\":\"df4d689d\",\"chunk-7396fd78\":\"62e024d1\",\"chunk-7492e181\":\"63ab8ea9\",\"components~settings\":\"e683e547\",\"components\":\"5f0d6764\",\"settings\":\"0f4133a0\",\"chunk-1a033a9a\":\"c17d2e7a\",\"chunk-2166b0c6\":\"5dc878cd\",\"chunk-2d0c1b06\":\"cd741818\",\"chunk-2d0d5fce\":\"6255f6f0\",\"chunk-2d2093cc\":\"be353a5b\",\"chunk-3226abeb\":\"2c9f829b\",\"chunk-5b13a9ad\":\"cd626410\",\"chunk-74a24199\":\"e738d9bb\"}[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-7396fd78\":1,\"components~settings\":1,\"components\":1,\"settings\":1,\"chunk-1a033a9a\":1,\"chunk-2166b0c6\":1,\"chunk-3226abeb\":1,\"chunk-5b13a9ad\":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-2d225bd9\":\"31d6cfe0\",\"chunk-7396fd78\":\"95e17fa8\",\"chunk-7492e181\":\"31d6cfe0\",\"components~settings\":\"395c3698\",\"components\":\"5e6e07c5\",\"settings\":\"50b63ad4\",\"chunk-1a033a9a\":\"2c11c7e7\",\"chunk-2166b0c6\":\"31fed435\",\"chunk-2d0c1b06\":\"31d6cfe0\",\"chunk-2d0d5fce\":\"31d6cfe0\",\"chunk-2d2093cc\":\"31d6cfe0\",\"chunk-3226abeb\":\"de7d20ff\",\"chunk-5b13a9ad\":\"310173da\",\"chunk-74a24199\":\"31d6cfe0\"}[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.d313b9c7.svg\";","module.exports = __webpack_public_path__ + \"img/heat-detector.44702c2b.svg\";","import { VuexModule } from \"vuex-class-modules\";\r\nimport Axios from \"axios\";\r\nimport { configureOidc } from \"../services/security.service\";\r\nimport { Log } from \"../../plugins/Logging\";\r\n\r\nexport default class AxiosSecureModule extends VuexModule {\r\n async defineHeaderAxios() {\r\n await configureOidc().then(\r\n (oidc) => {\r\n Axios.defaults.headers.common[\"Authorization\"] =\r\n \"Bearer \" + oidc.accessToken;\r\n },\r\n (err) => {\r\n Log.error(\"\", err);\r\n }\r\n );\r\n }\r\n}\r\n","import { Action, Mutation, Module, RegisterOptions } from \"vuex-class-modules\";\r\nimport Axios, { AxiosResponse } from \"axios\";\r\nimport { get, set, clear } from \"idb-keyval\";\r\nimport {\r\n AlarmStatus,\r\n ILocationFromDatabase,\r\n ILocationFromParticle,\r\n IMiscInfo,\r\n} from \"@/models/AlarmStatus\";\r\nimport AxiosSecureModule from \"./axiosSecureModule\";\r\nimport { app, sensor } from \"@/store\";\r\nimport { Log } from \"@/plugins/Logging\";\r\nimport { configureRouter } from \"@/router\";\r\nimport VueRouter from \"vue-router\";\r\nimport useDevice from \"@/utilities/useDevice\";\r\n\r\n@Module({ generateMutationSetters: true })\r\nexport default class AlarmModule extends AxiosSecureModule {\r\n public alarmStatus: AlarmStatus | null = null;\r\n public armed = false;\r\n public syncStatus = false;\r\n public syncAlarm = false;\r\n public trackingStatus = false;\r\n public seconds = 0;\r\n public lastMiscInfo: IMiscInfo | null = null;\r\n public lastKnownLocation: ILocationFromParticle | null = null;\r\n public lat: number | null = null;\r\n public lng: number | null = null;\r\n public user_lat: number | null = null;\r\n public user_lng: number | null = null;\r\n public doorClosed = false;\r\n public hatchClosed = false;\r\n public shorePowerOn = false;\r\n public smartPlugOn = false;\r\n public digitalIOOn = false;\r\n public gasValveOpen = false;\r\n settings: any;\r\n public gpsRadius = 100;\r\n public deviceAdded = false;\r\n public deviceTimedOut = false;\r\n public inAlarmMode = false;\r\n public deviceThatTriggeredAlarm = 0;\r\n public alreadyLoggedIn = false;\r\n public userLocReady = false;\r\n\r\n constructor(options: RegisterOptions) {\r\n super(options);\r\n get(\"armed\").then((value) => {\r\n if (value) this.setArmed(value);\r\n else this.setArmed(false);\r\n });\r\n get(\"status\").then((value) => {\r\n if (value) this.SetStatus(value);\r\n });\r\n }\r\n @Action\r\n public async ClearAlarmData() {\r\n clear().then(() => {\r\n this.alarmStatus = null;\r\n });\r\n }\r\n\r\n @Action\r\n public async GetData() {\r\n await this.defineHeaderAxios();\r\n Axios.get(\"api/Alarm\")\r\n .then((result: AxiosResponse) => {\r\n this.SetData(result.data);\r\n })\r\n .catch((error) => {\r\n Log.error(\"Get alarm data failed.\", error);\r\n });\r\n }\r\n @Action\r\n public async reset() {\r\n await this.defineHeaderAxios();\r\n Axios.post(\"api/Alarm/reset\").catch((error) => {\r\n Log.error(\"Reset failed.\", error);\r\n app.error = \"Factory reset failed\";\r\n });\r\n }\r\n @Action\r\n public async restart() {\r\n await this.defineHeaderAxios();\r\n Axios.post(\"api/Alarm/restart\").catch((error) => {\r\n Log.error(\"Restart failed.\", error);\r\n app.error = \"Device restart failed\";\r\n });\r\n }\r\n @Action\r\n public async GetStatus() {\r\n await this.defineHeaderAxios();\r\n Axios.get(`api/Alarm/status`)\r\n .then((result: AxiosResponse) => {\r\n Log.information(\"Status called.\");\r\n })\r\n .catch((error) => {\r\n this.syncAlarm = false;\r\n Log.error(\"Status call failed.\", error);\r\n });\r\n }\r\n\r\n @Action\r\n public async Arm() {\r\n this.startSync();\r\n\r\n await this.defineHeaderAxios();\r\n Axios.get(`api/Alarm/Arm`)\r\n .then((result: AxiosResponse) => {\r\n Log.information(\"Arm called.\");\r\n })\r\n .catch((error) => {\r\n this.syncAlarm = false;\r\n Log.error(\"Arm failed.\", error);\r\n app.error = \"Arming failed\";\r\n });\r\n }\r\n startSync() {\r\n this.syncAlarm = true;\r\n const checkStatus = () => {\r\n if (this.syncAlarm) {\r\n if (this.seconds >= 60) {\r\n app.error =\r\n \"Device not reachable within the last minute. Possibly offline.\";\r\n this.syncAlarm = false;\r\n } else {\r\n app;\r\n this.seconds += 1;\r\n }\r\n } else {\r\n clearInterval(intervalID);\r\n this.seconds = 0;\r\n }\r\n };\r\n const intervalID = setInterval(checkStatus, 1000);\r\n }\r\n startTracking() {\r\n this.trackingStatus = true;\r\n Log.information(\"Tracking started.\");\r\n }\r\n\r\n stopTracking() {\r\n this.trackingStatus = false;\r\n Log.information(\"Tracking stopped.\");\r\n }\r\n\r\n @Action\r\n public async Disarm() {\r\n this.startSync();\r\n await this.defineHeaderAxios();\r\n Axios.get(`api/Alarm/Disarm`)\r\n .then((result: AxiosResponse) => {\r\n Log.information(\"Disarm called.\");\r\n })\r\n .catch((error) => {\r\n Log.error(\"Disarm failed.\", error);\r\n app.error = \"Disarming failed\";\r\n this.syncAlarm = false;\r\n });\r\n }\r\n @Action\r\n public async getGeoLocation() {\r\n await this.defineHeaderAxios();\r\n Axios.get(`api/Alarm/geo`)\r\n .then((result: AxiosResponse) => {\r\n Log.information(\"Fetch geolocation from server\");\r\n if (result.status === 200) {\r\n this.lat = result.data.latitude;\r\n this.lng = result.data.longitude;\r\n }\r\n })\r\n .catch((error) => {\r\n Log.error(\"Fetch geolocation failed.\", error);\r\n });\r\n }\r\n\r\n @Action\r\n public async getGeoHistory(dateRange: string) {\r\n await this.defineHeaderAxios();\r\n Axios.get(`api/Alarm/geo/${dateRange}`)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n Log.information(\"Fetch geo history from server\");\r\n }\r\n })\r\n .catch((error) => {\r\n Log.error(\"Fetch geo history failed.\", error);\r\n });\r\n }\r\n @Action\r\n public async getMiscInfo() {\r\n await this.defineHeaderAxios();\r\n Axios.get(`api/Alarm/MiscInfo`)\r\n .then((result: AxiosResponse) => {\r\n Log.information(\"Fetch misc info from server\");\r\n })\r\n .catch((error) => {\r\n Log.error(\"Fetch misc info failed.\", error);\r\n });\r\n }\r\n\r\n @Action\r\n public async SetShorePowerState(state: boolean) {\r\n this.shorePowerOn = state;\r\n sensor.syncSensor = false;\r\n }\r\n @Action\r\n public async SetSmartPlugState(state: boolean) {\r\n this.smartPlugOn = state;\r\n sensor.syncSensor = false;\r\n }\r\n @Action\r\n public async SetDoorState(state: boolean) {\r\n this.doorClosed = state;\r\n }\r\n @Action\r\n public async SetHatchState(state: boolean) {\r\n this.hatchClosed = state;\r\n }\r\n @Action\r\n public async SetDigitalIOState(state: boolean) {\r\n this.digitalIOOn = state;\r\n sensor.syncSensor = false;\r\n }\r\n @Action\r\n public async SetGasValveState(state: boolean) {\r\n this.gasValveOpen = state;\r\n sensor.syncSensor = false;\r\n }\r\n\r\n @Action\r\n public async NewDeviceAdded() {\r\n this.SetNewDeviceAdded(true);\r\n }\r\n @Mutation\r\n public SetNewDeviceAdded(value: boolean) {\r\n this.deviceAdded = value;\r\n }\r\n @Action\r\n public async NewDeviceTimedOut() {\r\n this.SetNewDeviceTimedOut(true);\r\n }\r\n @Mutation\r\n public SetNewDeviceTimedOut(value: boolean) {\r\n this.deviceTimedOut = value;\r\n }\r\n @Mutation\r\n public SetInAlarmMode(value: boolean) {\r\n this.inAlarmMode = value;\r\n }\r\n\r\n @Mutation\r\n public SetAlarmModeTriggered(value: boolean) {\r\n this.inAlarmMode = value;\r\n app.alarm = useDevice()\r\n .getName(this.deviceThatTriggeredAlarm)\r\n .toUpperCase();\r\n }\r\n @Mutation\r\n public SetAlarmOrigin(device: number) {\r\n this.deviceThatTriggeredAlarm = device;\r\n }\r\n @Mutation\r\n SetData(data: any) {\r\n this.settings = data;\r\n }\r\n @Mutation\r\n SetStatus(data: AlarmStatus | null) {\r\n this.syncStatus = false;\r\n if (data) {\r\n this.alarmStatus = data;\r\n if (data !== null && data.Alarm) {\r\n this.armed = data.Alarm.trim() === \"1\";\r\n this.syncAlarm = false;\r\n set(\"armed\", this.armed);\r\n }\r\n this.alarmStatus = data;\r\n if (!this.alreadyLoggedIn) {\r\n this.alreadyLoggedIn = true;\r\n configureRouter().then((router: VueRouter) => {\r\n router.replace({ name: \"Home\" }).catch(() => {\r\n Log.information(\"Logged in successfuly.\");\r\n });\r\n });\r\n }\r\n }\r\n }\r\n @Mutation\r\n setArmed(data: any) {\r\n this.armed = data;\r\n this.syncAlarm = false;\r\n set(\"armed\", this.armed);\r\n if (!this.armed) {\r\n this.inAlarmMode = false;\r\n }\r\n }\r\n @Mutation\r\n SetCurrentLocation(location: ILocationFromParticle) {\r\n this.lastKnownLocation = location;\r\n this.lat = location.location.geometry.coordinates[1];\r\n this.lng = location.location.geometry.coordinates[0];\r\n }\r\n @Mutation\r\n SetUserLocation(location: GeolocationPosition) {\r\n this.user_lat = location.coords.latitude;\r\n this.user_lng = location.coords.longitude;\r\n this.userLocReady = true;\r\n }\r\n @Mutation\r\n SetCurentMiscInfo(miscInfo: IMiscInfo) {\r\n this.lastMiscInfo = miscInfo;\r\n }\r\n}\r\n","import { Action } from \"vuex-class-modules\";\r\nimport AxiosSecureModule from \"./axiosSecureModule\";\r\nimport Axios, { AxiosResponse } from \"axios\";\r\nimport { Log } from \"@/plugins/Logging\";\r\nexport default class MobModule extends AxiosSecureModule {\r\n @Action\r\n public async sendMobMessage(payload: {\r\n lat: string;\r\n lng: string;\r\n phone: string;\r\n }) {\r\n await this.defineHeaderAxios();\r\n Axios.post(\"api/mob/send/\", payload)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n Log.information(\"Mob Sent!!\");\r\n }\r\n })\r\n .catch((error) => {\r\n Log.error(\"\", error);\r\n });\r\n }\r\n}\r\n","import { Action, Mutation, Module } from \"vuex-class-modules\";\r\nimport Axios, { AxiosResponse } from \"axios\";\r\nimport AxiosSecureModule from \"./axiosSecureModule\";\r\nimport { Log } from \"@/plugins/Logging\";\r\n\r\n@Module()\r\nexport default class EnrollModule extends AxiosSecureModule {\r\n EnrollInProgress = false;\r\n EnrollStartedAt: Date = new Date();\r\n @Action\r\n public start() {\r\n this.setEnrollProgres(true);\r\n this.setEnrollStartTime();\r\n }\r\n @Action\r\n public async StartEnroll(id: number) {\r\n this.setEnrollProgres(false);\r\n await this.defineHeaderAxios();\r\n Axios.get(`api/sensor/enroll/${id}`)\r\n .then((result: AxiosResponse) => {\r\n Log.information(result.statusText);\r\n })\r\n .catch((error) => {\r\n Log.error(\"\", error);\r\n });\r\n }\r\n\r\n @Action\r\n public end() {\r\n this.setEnrollProgres(false);\r\n }\r\n @Mutation\r\n public setEnrollProgres(value: boolean) {\r\n this.EnrollInProgress = value;\r\n }\r\n @Mutation\r\n public setEnrollStartTime() {\r\n this.EnrollStartedAt = new Date();\r\n }\r\n}\r\n","export default class ProfileViewModel {\r\n public userId: string;\r\n public deviceId: string;\r\n public shipName: string;\r\n public shipHomeLocation: string;\r\n public geofenceRadius: number;\r\n public isCaptain: boolean;\r\n public isApproved: boolean;\r\n public hasGalleryAccess: boolean;\r\n public hasUploadAccess: boolean;\r\n public isPaid: boolean;\r\n public mBsUsed: number;\r\n public dataLimit: number;\r\n public transactionsUsed: number;\r\n public transactionsLimit: number;\r\n public billingStart: string;\r\n public billingEnd: string;\r\n}\r\n","import { Action, Mutation, Module } from \"vuex-class-modules\";\r\nimport Axios, { AxiosResponse } from \"axios\";\r\nimport ProfileViewModel from \"@/models/ProfileViewModel\";\r\nimport AxiosSecureModule from \"./axiosSecureModule\";\r\nimport { Log } from \"@/plugins/Logging\";\r\n@Module({})\r\nexport default class ProfileModule extends AxiosSecureModule {\r\n public profile: ProfileViewModel = new ProfileViewModel();\r\n\r\n @Action\r\n public async Get() {\r\n await this.defineHeaderAxios();\r\n Axios.get(\"api/Profile\")\r\n .then((result: AxiosResponse) => {\r\n this.Set(result.data);\r\n })\r\n .catch((error) => {\r\n Log.error(\"\", error);\r\n });\r\n }\r\n @Action\r\n public async Update(model: ProfileViewModel) {\r\n await this.defineHeaderAxios();\r\n Axios.put(\"api/Profile\", model)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n this.Get();\r\n }\r\n })\r\n .catch((error) => {\r\n Log.error(\"\", error);\r\n });\r\n }\r\n\r\n @Mutation\r\n Set(data: ProfileViewModel) {\r\n this.profile = data;\r\n }\r\n}\r\n","import { Action, Mutation, Module } from \"vuex-class-modules\";\r\nimport Axios, { AxiosResponse } from \"axios\";\r\nimport AttachedDeviceModel from \"@/models/AttachedDeviceModel\";\r\nimport AxiosSecureModule from \"./axiosSecureModule\";\r\nimport { Log } from \"@/plugins/Logging\";\r\nimport { app } from \"@/store\";\r\n@Module({ generateMutationSetters: true })\r\nexport default class SensorModule extends AxiosSecureModule {\r\n devices: Array = [];\r\n public syncSensor = false;\r\n public seconds = 0;\r\n\r\n @Action\r\n public async GetData() {\r\n await this.defineHeaderAxios();\r\n Axios.get(\"api/sensor\")\r\n .then((result: AxiosResponse) => {\r\n this.SetData(result.data);\r\n })\r\n .catch((error) => {\r\n Log.error(\"\", error);\r\n });\r\n }\r\n @Action\r\n public async GetPowerStatus() {\r\n await this.defineHeaderAxios();\r\n Axios.get(\"api/sensor/powerStatus\")\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n Log.information(\"fetch sensor status\");\r\n }\r\n })\r\n .catch((error) => {\r\n Log.error(\"\", error);\r\n });\r\n }\r\n\r\n startSensorSync() {\r\n this.syncSensor = true;\r\n const checkStatus = () => {\r\n if (this.syncSensor) {\r\n if (this.seconds >= 20) {\r\n app.error = \"Sensor unresponsive !!!!!\";\r\n this.syncSensor = false;\r\n this.GetData();\r\n } else {\r\n app;\r\n this.seconds += 1;\r\n }\r\n } else {\r\n clearInterval(intervalID);\r\n this.seconds = 0;\r\n }\r\n };\r\n const intervalID = setInterval(checkStatus, 1000);\r\n }\r\n\r\n @Action\r\n public async SetDeviceStatus(payload: { id: any; status: boolean }) {\r\n this.startSensorSync();\r\n await this.defineHeaderAxios();\r\n Axios.put(`api/sensor/status/${payload.id}/${payload.status}`)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n Log.information(\"set sensor status\");\r\n }\r\n })\r\n .catch((error) => {\r\n this.syncSensor = false;\r\n Log.error(\"\", error);\r\n });\r\n }\r\n @Action\r\n public async GetCoreHistory() {\r\n await this.defineHeaderAxios();\r\n Axios.get(`/api/sensor/CoreHistory`)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n Log.information(\"get core history\");\r\n }\r\n })\r\n .catch((error) => {\r\n Log.error(\"\", error);\r\n });\r\n }\r\n @Action\r\n public async GetDeviceHistory(id: any) {\r\n await this.defineHeaderAxios();\r\n Axios.get(`/api/sensor/history/${id}`)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n Log.information(\"get sensor history\");\r\n }\r\n })\r\n .catch((error) => {\r\n Log.error(\"\", error);\r\n });\r\n }\r\n\r\n @Action\r\n public async SetSensorAge(payload: {\r\n device: string;\r\n status: string;\r\n age: string;\r\n atPosition: any;\r\n }) {\r\n if (this.devices.length > 0) {\r\n const device = this.devices.find(\r\n (item: AttachedDeviceModel) =>\r\n item.attachedDeviceId === payload.device\r\n );\r\n\r\n if (device) {\r\n device.age = Number(payload.age);\r\n } else {\r\n Log.information(\r\n `Device not found in paired devices, ID=${payload.device}`\r\n );\r\n }\r\n } else {\r\n Log.information(\"No devices paired.\");\r\n }\r\n }\r\n\r\n @Action\r\n public async GetSensorAge(id: any) {\r\n const index = this.devices.findIndex(\r\n (item: AttachedDeviceModel) => item.attachedDeviceId === id\r\n );\r\n if (index > 0) {\r\n return this.devices[index].age;\r\n }\r\n }\r\n\r\n @Mutation\r\n SetData(data: Array) {\r\n this.devices = data;\r\n }\r\n\r\n @Mutation\r\n SetSensorStatus(data: { id: string; value: string }) {\r\n const index = this.devices.findIndex(\r\n (item: AttachedDeviceModel) => item.attachedDeviceId === data.id\r\n );\r\n this.devices[index].alarm1 = data.value === \"1\";\r\n }\r\n}\r\n","import { VuexModule, Module, Mutation } from \"vuex-class-modules\";\r\n\r\n@Module({ generateMutationSetters: true })\r\nexport default class AlarmModule extends VuexModule {\r\n public showTopBar = true;\r\n public showFooter = true;\r\n\r\n public alarm = \"\";\r\n public error = \"\";\r\n public success = \"\";\r\n public title: string | null | undefined = \"\";\r\n\r\n private isHomePanelOpen = false;\r\n private homePanelOpenIndex = -1;\r\n\r\n private isMyBoatPanelOpen = false;\r\n private myBoatPanelOpenIndex = -1;\r\n\r\n private isControlPanelOpen = false;\r\n private controlPanelOpenIndex = -1;\r\n\r\n private isSensorsPanelOpen = false;\r\n private sensorsPanelOpenIndex = -1;\r\n\r\n @Mutation\r\n public setHomePanelOpen(value: boolean) {\r\n console.log(\"setHomePanelOpen: \" + value);\r\n this.isHomePanelOpen = value;\r\n }\r\n @Mutation\r\n public setHomePanelIndex(value: number) {\r\n console.log(\"setHomePanelIndex: \" + value);\r\n this.homePanelOpenIndex = value;\r\n }\r\n @Mutation\r\n public setMyBoatPanelOpen(value: boolean) {\r\n console.log(\"setMyBoatPanelOpen: \" + value);\r\n this.isMyBoatPanelOpen = value;\r\n }\r\n @Mutation\r\n public setMyBoatPanelIndex(value: number) {\r\n console.log(\"setMyBoatPanelIndex: \" + value);\r\n this.myBoatPanelOpenIndex = value;\r\n }\r\n @Mutation\r\n public setControlPanelOpen(value: boolean) {\r\n console.log(\"setControlPanelOpen: \" + value);\r\n this.isControlPanelOpen = value;\r\n }\r\n @Mutation\r\n public setControlPanelIndex(value: number) {\r\n console.log(\"setControlPanelIndex: \" + value);\r\n this.controlPanelOpenIndex = value;\r\n }\r\n @Mutation\r\n public setSensorsPanelOpen(value: boolean) {\r\n console.log(\"setSensorsPanelOpen: \" + value);\r\n this.isSensorsPanelOpen = value;\r\n }\r\n @Mutation\r\n public setSensorsPanelIndex(value: number) {\r\n console.log(\"setSensorsPanelIndex: \" + value);\r\n this.sensorsPanelOpenIndex = value;\r\n }\r\n\r\n public get getHomePanelOpen() {\r\n return this.isHomePanelOpen;\r\n }\r\n public get getHomePanelIndex() {\r\n return this.homePanelOpenIndex;\r\n }\r\n public get getMyBoatPanelOpen() {\r\n return this.isMyBoatPanelOpen;\r\n }\r\n public get getMyBoatPanelIndex() {\r\n return this.myBoatPanelOpenIndex;\r\n }\r\n public get getControlPanelOpen() {\r\n return this.isControlPanelOpen;\r\n }\r\n public get getControlPanelIndex() {\r\n return this.controlPanelOpenIndex;\r\n }\r\n public get getSensorsPanelOpen() {\r\n return this.isSensorsPanelOpen;\r\n }\r\n public get getSensorsPanelIndex() {\r\n return this.sensorsPanelOpenIndex;\r\n }\r\n\r\n}\r\n","import Vue from \"vue\";\r\nimport Vuex, { StoreOptions } from \"vuex\";\r\nimport RootState from \"./RootState\";\r\nimport AlarmModule from \"./modules/alarm.module\";\r\nimport MobModule from \"./modules/mob.module\";\r\nimport EnrollModule from \"./modules/enroll.module\";\r\nimport ProfileModule from \"./modules/profile.module\";\r\nimport SensorModule from \"./modules/sensor.module\";\r\nimport AppModule from \"./modules/app.module\";\r\n\r\nVue.use(Vuex);\r\n\r\nconst rootStore: StoreOptions = {\r\n state: {\r\n version: \"1.0.0\", // a simple property\r\n },\r\n mutations: {},\r\n actions: {},\r\n getters: {},\r\n modules: {},\r\n};\r\n\r\nconst store = new Vuex.Store(rootStore);\r\nexport const alarm = new AlarmModule({ store, name: \"alarm\" });\r\nexport const app = new AppModule({ store, name: \"app\" });\r\nexport const profile = new ProfileModule({ store, name: \"profile\" });\r\nexport const sensor = new SensorModule({ store, name: \"sensor\" });\r\nexport const enrollState = new EnrollModule({ store, name: \"enroll\" });\r\nexport const mobState = new MobModule({ store, name: \"mob\" });\r\nexport default store;\r\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!./Map.vue?vue&type=style&index=0&id=347191bb&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/03n@2x.66927525.svg\";","module.exports = __webpack_public_path__ + \"img/reset_blue.8212de14.svg\";","module.exports = __webpack_public_path__ + \"img/position-tracking.c5ef7591.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=7e6eb59f&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/zigbee.31ad3bd5.svg\";","module.exports = __webpack_public_path__ + \"img/no-signal.54008689.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&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/battery-groupe-no-number-center.5d922826.svg\";","module.exports = __webpack_public_path__ + \"img/mute.af45ba84.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&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/timer-stop-outline.aaed73ab.svg\";","module.exports = __webpack_public_path__ + \"img/bilge.55cbc629.svg\";","module.exports = __webpack_public_path__ + \"img/view-sequential-blk.25cb5e45.svg\";","module.exports = __webpack_public_path__ + \"img/map-marker-start.d02c7104.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=c5520438&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/sirene-roed.eea4ba49.svg\";","module.exports = __webpack_public_path__ + \"img/info-circle-blk.1eb88c07.svg\";","module.exports = __webpack_public_path__ + \"img/checkmark.2b8940e9.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.58965771.svg\";","module.exports = __webpack_public_path__ + \"img/battery-groupe-no-number.fa04641b.svg\";","module.exports = __webpack_public_path__ + \"img/smoke.eb752a5d.svg\";","module.exports = __webpack_public_path__ + \"img/fits-into-all.d5b389e2.svg\";","module.exports = __webpack_public_path__ + \"img/timer.a85a468a.svg\";","module.exports = __webpack_public_path__ + \"img/timer-sync-outline.f5ece66d.svg\";","module.exports = __webpack_public_path__ + \"img/batterry-full.4f1b25f0.svg\";","module.exports = __webpack_public_path__ + \"img/sirene.f68c5aca.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.309fff1f.svg\";","module.exports = __webpack_public_path__ + \"img/app.0a61eff8.svg\";","module.exports = __webpack_public_path__ + \"img/04n@2x.bb2fe964.svg\";","module.exports = __webpack_public_path__ + \"img/turn-on-off.5475d9ff.svg\";","module.exports = __webpack_public_path__ + \"img/weather.8f28ac1a.svg\";","module.exports = __webpack_public_path__ + \"img/door-closed-icon.30362f05.svg\";","import Axios, { AxiosResponse } from \"axios\";\r\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\r\nimport ContactViewModel from \"@/models/ContactViewModel\";\r\nexport default function () {\r\n const add = async (contact: ContactViewModel): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.post(\"/api/contact\", contact)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve();\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n const update = async (contact: ContactViewModel): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.put(`/api/contact/${contact.id}`, contact)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve();\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n const remove = async (id: number): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.delete(`/api/contact/${id}`)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve();\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n const get = async (id: number): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.get(`/api/contact/${id}`)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve(result.data);\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n const getCaptain = async (deviceId: string): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.get(`/api/contact/${deviceId}`)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve(result.data);\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n\r\n const nameRules: ((v: any) => any)[] = [\r\n (v) => !!v || \"Name is required\",\r\n (v) => (v && v.length <= 30) || \"Name must be less than 30 characters\",\r\n ];\r\n const emailRules: ((v: any) => any)[] = [\r\n (v) => !!v || \"E-mail is required\",\r\n (v) => /.+@.+\\..+/.test(v) || \"E-mail must be valid\",\r\n ];\r\n return {\r\n add,\r\n update,\r\n remove,\r\n get,\r\n getCaptain,\r\n nameRules,\r\n emailRules,\r\n };\r\n}\r\n","module.exports = __webpack_public_path__ + \"img/door-opened.e6fbbde0.svg\";","module.exports = __webpack_public_path__ + \"img/50n@2x.2d407627.svg\";","module.exports = __webpack_public_path__ + \"img/door-opened-icon-shadow.719f4e92.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.c6779920.svg\";","module.exports = __webpack_public_path__ + \"img/restart.8457a897.svg\";","module.exports = __webpack_public_path__ + \"img/dots-vertical.8679ca64.svg\";","module.exports = __webpack_public_path__ + \"img/mobFlag.7c051892.svg\";","module.exports = __webpack_public_path__ + \"img/update.c9fb55d7.svg\";","module.exports = __webpack_public_path__ + \"img/batterry-alarm.bed6aa7e.svg\";","module.exports = __webpack_public_path__ + \"img/unresponsive.9c4911d9.svg\";","module.exports = __webpack_public_path__ + \"img/10d@2x.a2ad31f8.svg\";","module.exports = __webpack_public_path__ + \"img/01n@2x.644849c6.svg\";","module.exports = __webpack_public_path__ + \"img/view-carousel-outline-blk.ce785746.svg\";","module.exports = __webpack_public_path__ + \"img/boat-icon.87edfdec.svg\";","module.exports = __webpack_public_path__ + \"img/batteri-ladeniveau-forside.a768b00a.svg\";","module.exports = __webpack_public_path__ + \"img/max-speed.5133372a.svg\";","module.exports = __webpack_public_path__ + \"img/immobilizer.7e0a89e8.svg\";","module.exports = __webpack_public_path__ + \"img/keypad.d52521c6.svg\";","module.exports = __webpack_public_path__ + \"img/09n@2x.f1fe2b22.svg\";","module.exports = __webpack_public_path__ + \"img/info-circle.ed91c836.svg\";","module.exports = __webpack_public_path__ + \"img/battery-alarm.735abe7a.svg\";","module.exports = __webpack_public_path__ + \"img/door-opened-icon.33376377.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.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.cb7fd7a5.svg\";","module.exports = __webpack_public_path__ + \"img/speedometer.16df69ac.svg\";","module.exports = __webpack_public_path__ + \"img/compass.6d9f39f1.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.650295f2.svg\";","module.exports = __webpack_public_path__ + \"img/digital_io.cc698e94.svg\";","module.exports = __webpack_public_path__ + \"img/door-closed.45b0883d.svg\";","module.exports = __webpack_public_path__ + \"img/gas.15b3a93e.svg\";","module.exports = __webpack_public_path__ + \"img/u-lyn-batteri-ladeniveau-forside.8376c49f.svg\";","module.exports = __webpack_public_path__ + \"img/log-in.b384202a.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!./Weather.vue?vue&type=style&index=0&id=8df889c8&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/log.94a7f4b8.svg\";","module.exports = __webpack_public_path__ + \"img/dots-vertical-circle-outline-blk.5a3b7a69.svg\";","module.exports = __webpack_public_path__ + \"img/reliable-b-m-s.e1e97503.svg\";","module.exports = __webpack_public_path__ + \"img/log_blue.0d07991d.svg\";","module.exports = __webpack_public_path__ + \"img/battery-full.5ad5cb8d.svg\";","module.exports = __webpack_public_path__ + \"img/co-carbon-m.9218ca30.svg\";","module.exports = __webpack_public_path__ + \"img/paired.c9e63949.svg\";","module.exports = __webpack_public_path__ + \"img/share-variant-outline-blk.98230fae.svg\";","module.exports = __webpack_public_path__ + \"img/water-bilige-sensor.906cf483.svg\";","module.exports = __webpack_public_path__ + \"img/battery-groupe.9449136c.svg\";","module.exports = __webpack_public_path__ + \"img/smart-plug.562ece3d.svg\";","module.exports = __webpack_public_path__ + \"img/checkmark1.f094bc8d.svg\";","module.exports = __webpack_public_path__ + \"img/lock.bb9430b8.svg\";","export class Log {\r\n public static information(message: string) {\r\n const date = new Date();\r\n const value = `[${date.getFullYear()}-${date.getMonth()}-${date.getDate()}T${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}]`;\r\n\r\n console.log(`${value} ${message}`);\r\n }\r\n public static error(message: string, error: any[]) {\r\n const date = new Date();\r\n const value = `[${date.getFullYear()}-${date.getMonth()}-${date.getDate()}T${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}]`;\r\n\r\n console.error(`${value} Error:${message}`, error);\r\n }\r\n}\r\n","module.exports = __webpack_public_path__ + \"img/loading-power.88b793d3.svg\";","module.exports = __webpack_public_path__ + \"img/mobY.9d881962.svg\";","module.exports = __webpack_public_path__ + \"img/switched-on.a480cf59.svg\";","module.exports = __webpack_public_path__ + \"img/app-engine-kill.3cdd8d47.svg\";","export interface AlarmStatus {\r\n fetchAt?: Date;\r\n Coordinator_Info?: CoordinatorInfo[];\r\n Alarm: string;\r\n lastEvent: string;\r\n atDevice: string;\r\n tempMtrs?: TempMtr[];\r\n pwrMtrs?: PwrMtr[];\r\n VSupplies: VSupply[];\r\n}\r\n\r\nexport interface CoordinatorInfo {\r\n name: string;\r\n a64: string;\r\n channel: string;\r\n panID: string;\r\n children: string;\r\n}\r\n\r\nexport interface VSupply {\r\n V1: string;\r\n V2: string;\r\n V3: string;\r\n}\r\n\r\nexport interface PwrMtr {\r\n a16: string;\r\n pwrDlvd: string;\r\n}\r\n\r\nexport interface TempMtr {\r\n a16: string;\r\n tempC: string;\r\n}\r\n\r\nexport function mapJsonToAlarmStatus(jsonString: string): AlarmStatus {\r\n const json = JSON.parse(jsonString);\r\n // Check if 'Ci' is present and is an array before mapping.\r\n const Coordinator_Info = Array.isArray(json.Ci) ? json.Ci.map((ci: any) => ({\r\n name: ci.name,\r\n a64: ci.a64,\r\n channel: ci.channel,\r\n panID: ci.panID,\r\n children: ci.children\r\n })) : undefined;\r\n\r\n // Check if 'Tm' is present and is an array before mapping.\r\n const tempMtrs = Array.isArray(json.Tm) ? json.Tm.map((tm: any) => ({\r\n a16: tm.A,\r\n tempC: tm.Tc\r\n })) : undefined;\r\n\r\n // Check if 'Pm' is present and is an array before mapping.\r\n const pwrMtrs = Array.isArray(json.Pm) ? json.Pm.map((pm: any) => ({\r\n a16: pm.A,\r\n pwrDlvd: pm.Pd\r\n })) : undefined;\r\n\r\n // Check if 'Vs' is present and is an array before mapping.\r\n const VSupplies = Array.isArray(json.Vs) ? json.Vs.map((vs: any) => ({\r\n V1: vs.V1,\r\n V2: vs.V2,\r\n V3: vs.V3\r\n })) : [];\r\n\r\n return {\r\n fetchAt: new Date(),\r\n Coordinator_Info: Coordinator_Info,\r\n Alarm: json.Al,\r\n lastEvent: json.Le,\r\n atDevice: json.Ad,\r\n tempMtrs: tempMtrs,\r\n pwrMtrs: pwrMtrs,\r\n VSupplies: VSupplies\r\n };\r\n}\r\n\r\n\r\n\r\nexport interface ILocationFromDatabase {\r\n id: number;\r\n coreId: string;\r\n insertedDate: string;\r\n gpsTimestamp: string;\r\n longitude: number;\r\n latitude: number;\r\n valid: number;\r\n}\r\n\r\nexport interface ILocationFromParticle {\r\n location: Location;\r\n}\r\n\r\nexport interface Location {\r\n device_id: string;\r\n geometry: Geometry;\r\n sources: string[];\r\n horizontal_accuracy: number;\r\n product_id: number;\r\n last_heard: string;\r\n gps_lock: boolean;\r\n triggers: string[];\r\n timestamps: string[];\r\n properties: any[];\r\n device_name: string;\r\n groups: any[];\r\n online: boolean;\r\n}\r\n\r\nexport interface Geometry {\r\n type: string;\r\n coordinates: number[];\r\n}\r\n\r\n//export interface IGeoLocation {\r\n// longitude: string;\r\n// latitude: string;\r\n// gpsTimestamp: Date;\r\n//}\r\nexport interface IMiscInfo {\r\n Devices: string;\r\n GpsPositions: string;\r\n GpsLocus: string;\r\n Events: string;\r\n Orders: string;\r\n ResponsesAwaiting: string;\r\n Radius_GPS: string;\r\n RAM_Mem: string;\r\n EEPROM_Mem: string;\r\n Temperature: string;\r\n}\r\nexport interface IStatusChange {\r\n device: string;\r\n status: string;\r\n age: string;\r\n atPosition: AtPosition[];\r\n}\r\nexport interface ISensorAge {\r\n device: string;\r\n status: string;\r\n age: string;\r\n atPosition: AtPosition[];\r\n}\r\n\r\nexport interface AtPosition {\r\n pos: string;\r\n}\r\n","import {\r\n HubConnection,\r\n HubConnectionBuilder,\r\n LogLevel,\r\n HttpTransportType,\r\n IHttpConnectionOptions,\r\n} from \"@aspnet/signalr\";\r\nimport { app, alarm, enrollState, sensor } from \"@/store\";\r\nimport {\r\n AlarmStatus,\r\n ILocationFromParticle,\r\n IMiscInfo,\r\n IStatusChange,\r\n mapJsonToAlarmStatus,\r\n} from \"@/models/AlarmStatus\";\r\nimport { configureOidc } from \"@/store/services/security.service\";\r\nimport { Log } from \"./Logging\";\r\nlet connectionObj = null as HubConnection | null;\r\n\r\nexport async function configureMessageHub() {\r\n if (connectionObj) return Promise.resolve(connectionObj);\r\n const mainOidc = await configureOidc();\r\n const options: IHttpConnectionOptions = {\r\n accessTokenFactory: getAcessToken,\r\n skipNegotiation: true,\r\n transport: HttpTransportType.WebSockets,\r\n };\r\n const connection = new HubConnectionBuilder()\r\n .withUrl(`${mainOidc.appUrl}hubs/message`, options)\r\n .configureLogging(LogLevel.Debug)\r\n .build();\r\n\r\n connection.on(\"SendNotificationToClient\", (value) => {\r\n app.error = value;\r\n });\r\n connection.on(\"SetArmOrDisarmOnClient\", (value) => {\r\n alarm.setArmed(value);\r\n });\r\n connection.on(\"SetStatusOnClient\", (value: string) => {\r\n if (value !== \"\") {\r\n Log.information(\"SetStatusOnClient: \" + value);\r\n const status: AlarmStatus = mapJsonToAlarmStatus(value);\r\n Log.information(status.VSupplies.toString());\r\n //const status: AlarmStatus = JSON.parse(value);\r\n status.fetchAt = new Date();\r\n alarm.SetStatus(status);\r\n }\r\n });\r\n connection.on(\"StartEnroll\", (value: string) => {\r\n if (value !== \"\") {\r\n enrollState.start();\r\n }\r\n });\r\n connection.on(\"EndEnroll\", (value: string) => {\r\n if (value !== \"\") {\r\n enrollState.end();\r\n }\r\n });\r\n connection.on(\"EnrollTimedOut\", (value: string) => {\r\n if (value !== \"\") {\r\n alarm.NewDeviceTimedOut();\r\n }\r\n });\r\n connection.on(\"DeviceAdded\", (value: string) => {\r\n if (value !== \"\") {\r\n alarm.NewDeviceAdded();\r\n enrollState.end();\r\n }\r\n });\r\n connection.on(\"UpdatePosition\", (value: string) => {\r\n if (value !== \"\") {\r\n const location: ILocationFromParticle = JSON.parse(value);\r\n alarm.SetCurrentLocation(location);\r\n }\r\n });\r\n connection.on(\"UpdateMiscInfo\", (value: string) => {\r\n if (value !== \"\") {\r\n const miscInfo: IMiscInfo = JSON.parse(value);\r\n alarm.SetCurentMiscInfo(miscInfo);\r\n }\r\n });\r\n\r\n const handleStatusChange = (value: string, onAlarm = false) => {\r\n\r\n if (value === \"\") {\r\n console.warn(\"Status value is empty, returning early.\");\r\n return;\r\n }\r\n\r\n const statusChange: IStatusChange = JSON.parse(value);\r\n sensor.SetSensorAge(statusChange);\r\n\r\n if (!sensor.devices || sensor.devices.length === 0) {\r\n console.warn(\"Status change no devices found, returning early.\");\r\n return;\r\n }\r\n\r\n const senderDevice = sensor.devices.find(\r\n (i) => i.attachedDeviceId === statusChange.device\r\n );\r\n\r\n if (onAlarm) {\r\n alarm.SetAlarmOrigin(senderDevice.attachedDeviceTypeId);\r\n alarm.SetAlarmModeTriggered(true);\r\n }\r\n\r\n const statusMap = {\r\n \"1\": { \"0020\": alarm.SetHatchState, \"0021\": alarm.SetHatchState },\r\n \"2\": {\r\n \"0000\": alarm.SetShorePowerState,\r\n \"0001\": alarm.SetShorePowerState,\r\n },\r\n \"3\": {\r\n \"0000\": alarm.SetSmartPlugState,\r\n \"0001\": alarm.SetSmartPlugState,\r\n },\r\n \"10\": { \"0020\": alarm.SetDoorState, \"0021\": alarm.SetDoorState },\r\n \"15\": {\r\n \"0000\": alarm.SetGasValveState,\r\n \"0001\": alarm.SetGasValveState,\r\n },\r\n \"16\": {\r\n \"0000\": alarm.SetDigitalIOState,\r\n \"0001\": alarm.SetDigitalIOState,\r\n },\r\n };\r\n\r\n const deviceTypeId = senderDevice.attachedDeviceTypeId.toString();\r\n\r\n if (\r\n statusMap[deviceTypeId] &&\r\n statusMap[deviceTypeId][statusChange.status]\r\n ) {\r\n const statusFunc = statusMap[deviceTypeId][statusChange.status];\r\n statusFunc.call(\r\n alarm,\r\n statusChange.status === \"0001\" || statusChange.status === \"0020\"\r\n );\r\n } else {\r\n console.warn(\r\n `No matching status found for device type ${deviceTypeId} and status ${statusChange.status}`\r\n );\r\n }\r\n };\r\n\r\n connection.on(\"UpdateStatusChange\", handleStatusChange);\r\n\r\n connection.on(\"UpdateStatusChangeOnAlarm\", (value: string) =>\r\n handleStatusChange(value, true)\r\n );\r\n connection.on(\"UpdateAgingDev\", handleStatusChange);\r\n\r\n connection.on(\"ShowMessage\", (msg: string) => {\r\n if (msg !== \"\") {\r\n app.success = msg;\r\n }\r\n });\r\n connection.on(\"ShowError\", (msg: string) => {\r\n if (msg !== \"\") {\r\n app.error = msg;\r\n }\r\n });\r\n connection.on(\"SetPowerStatusOnClient\", (value: string) => {\r\n const values = value.split(\"|\");\r\n sensor.SetSensorStatus({ id: values[0], value: values[1] });\r\n });\r\n\r\n connection.onclose(() => startConnection(connection));\r\n connectionObj = connection;\r\n await startConnection(connectionObj);\r\n return connectionObj;\r\n}\r\nconst getAcessToken = async (): Promise => {\r\n const mainOidc = await configureOidc();\r\n return mainOidc.accessToken;\r\n};\r\nconst startConnection = async (connection: HubConnection) => {\r\n if (connection) {\r\n const startedPromise: Promise = connection\r\n .start()\r\n .catch((err) => {\r\n Log.error(\"Failed to connect with hub\", err);\r\n return new Promise((resolve, reject) =>\r\n setTimeout(\r\n () =>\r\n startConnection(connection)\r\n .then(() => {\r\n //connectionObj = connection;\r\n resolve;\r\n })\r\n .catch(reject),\r\n 5000\r\n )\r\n );\r\n });\r\n return startedPromise;\r\n }\r\n};\r\n","module.exports = __webpack_public_path__ + \"img/02d@2x.1191a395.svg\";","module.exports = __webpack_public_path__ + \"img/batteri-ladeniveau-forside_hvid_1.7cddb781.svg\";","module.exports = __webpack_public_path__ + \"img/gateway.ad713005.svg\";","module.exports = __webpack_public_path__ + \"img/sirene-red.e353d8b0.svg\";","import Axios, { AxiosResponse } from \"axios\";\r\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\r\nimport UserSettingsViewModel from \"@/models/UserSettingsViewModel\";\r\nexport default function () {\r\n const updateUserSettings = async (\r\n model: UserSettingsViewModel\r\n ): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.put(\"api/userSettings\", model)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve();\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n\r\n const getUserSettings = async (): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.get(`/api/userSettings`)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve(result.data);\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n return {\r\n updateUserSettings,\r\n getUserSettings,\r\n };\r\n}\r\n","module.exports = __webpack_public_path__ + \"img/shore-power.12509860.svg\";","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 () {\r\n const isIos = () => {\r\n const userAgent = window.navigator.userAgent.toLowerCase();\r\n return /iphone|ipad|ipod/.test(userAgent);\r\n };\r\n // Detects if device is in standalone mode\r\n const isInStandaloneMode = () =>\r\n \"standalone\" in window.navigator &&\r\n (window.navigator as any).standalone;\r\n\r\n // Checks if should display install popup notification:\r\n const showInstallMessage = isIos() && !isInStandaloneMode();\r\n return {\r\n showInstallMessage,\r\n isIos,\r\n };\r\n}\r\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 watch\n} from \"@vue/composition-api\";\nimport { alarm, app, sensor } from \"@/store\";\n\nimport useIOSDetction 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\n onBeforeMount(() => {\n app.showFooter = false;\n });\n onBeforeUnmount(() => {\n app.showFooter = true;\n });\n onMounted(async () => {\n configureMessageHub().then(async () => {\n await alarm.GetStatus();\n });\n });\n const { showInstallMessage } = useIOSDetction();\n //if (showInstallMessage) {\n // app.error = \"bookmark\";\n //}\n return {\n loading,\n container\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=75966499&\"\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}}),_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}}),_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-2\",attrs:{\"cols\":\"2\"}},[_vm._v(\"Paired\")])],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\";\r\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\r\nimport TemperatureViewModel from \"@/models/TemperatureViewModel\";\r\nexport default function () {\r\n const get = async (): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.get(`/api/temperature`)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve(result.data);\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n return {\r\n get,\r\n };\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { alarm, app, sensor } from \"@/store\";\nimport AttachedDeviceModel from \"@/models/AttachedDeviceModel\";\nimport {\n computed,\n defineComponent,\n onMounted,\n ref\n} from \"@vue/composition-api\";\nimport { ILocationFromParticle } from \"../models/AlarmStatus\";\nimport 'core-js';\nimport useTemperature from \"@/store/useTemperature\";\nimport TemperatureViewModel from \"@/models/TemperatureViewModel\";\n\nexport 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 temperature = ref(\"-.--\");\n const accuracy = computed(() => { return alarm.gpsRadius; });\n\n const armed = computed(() => { return alarm.armed; });\n\n const power1 = computed(() => {\n if (\n alarm.alarmStatus != null &&\n alarm.alarmStatus.VSupplies != null &&\n alarm.alarmStatus.VSupplies[0] != null\n ) {\n const voltage = alarm.alarmStatus.VSupplies[0].V1;\n return voltage === \"NotPresent\" ? -1 : parseFloat(voltage);\n }\n return -1;\n });\n\n const power2 = computed(() => {\n if (\n alarm.alarmStatus != null &&\n alarm.alarmStatus.VSupplies != null &&\n alarm.alarmStatus.VSupplies[0] != null\n ) {\n const voltage = alarm.alarmStatus.VSupplies[0].V2;\n return voltage === \"NotPresent\" ? -1 : parseFloat(voltage);\n }\n return -1;\n });\n\n const voltageWarning1 = computed(() => {\n if (power1.value === -1) {\n return false;\n }\n if (power1.value < 11.8 || (power1.value > 16 && (power1.value > 29.5 || power1.value < 23.6))) {\n return true;\n }\n if (power1.value > 14.8) {\n return true;\n }\n return false;\n });\n\n const voltageWarning2 = computed(() => {\n if (power2.value === -1) {\n return false;\n }\n if (power2.value < 11.8 || (power2.value > 16 && (power2.value > 29.5 || power2.value < 23.6))) {\n return true;\n }\n if (power2.value > 14.8) {\n return true;\n }\n return false;\n });\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\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 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 get().then((model: TemperatureViewModel) => {\n if (model.cabinTemperature != -273) {\n temperature.value = model.cabinTemperature.toFixed(1);\n }\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 panel\n };\n }\n});\n\n@Component({})\nclass 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=3590fac8&\"\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 {\r\n public id: number;\r\n public coreID: string;\r\n public sortOrder: number;\r\n public name: string;\r\n public phoneNumber: string;\r\n public email: string;\r\n public active: boolean;\r\n public modifiedDate: Date;\r\n public insertedDate: Date;\r\n public detectorsEmailActive: boolean;\r\n public shorePowerEmailActive: boolean;\r\n public smartplugEmailActive: boolean;\r\n public mainDoorEmailActive: boolean;\r\n public hatchEmailActive: boolean;\r\n public voltageLowEmailActive: boolean;\r\n public geofenceEmailActive: boolean;\r\n public lowBatterySensorEmailActive: boolean;\r\n public gatewayTamperedEmailActive: boolean;\r\n public gatewayPowerlossEmailActive: boolean;\r\n public gsmConnectionLostEmailActive: boolean;\r\n public detectorsSMSActive: boolean;\r\n public shorePowerSMSActive: boolean;\r\n public smartPlugSMSActive: boolean;\r\n public mainDoorSMSActive: boolean;\r\n public hatchSMSActive: boolean;\r\n public voltageLowSMSActive: boolean;\r\n public geofenceSMSActive: boolean;\r\n public lowBatterySensorSMSActive: boolean;\r\n public gatewayTamperedSMSActive: boolean;\r\n public gatewayPowerlossSMSActive: boolean;\r\n public gsmConnectionLostSMSActive: boolean;\r\n}\r\n","import Axios, { AxiosResponse } from \"axios\";\r\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\r\nimport { ref } from \"@vue/composition-api\";\r\nimport ConnectedAccountViewModel from \"../models/ConnectedAccountViewModel\";\r\nexport default function () {\r\n const connectedAccount = ref>([]);\r\n\r\n const get = async () => {\r\n await defineHeaderAxios();\r\n Axios.get(\"/api/connectedAccount\")\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n connectedAccount.value = result.data;\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n };\r\n const approve = async (id: string): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.put(`/api/connectedAccount/approve/${id}`, id)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve();\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n const allowGallery = async (id: string): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.put(`/api/connectedAccount/allowGallery/${id}`, id)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve();\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n const denyGallery = async (id: string): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.put(`/api/connectedAccount/denyGallery/${id}`, id)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve();\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n const allowUpload = async (id: string): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.put(`/api/connectedAccount/allowUpload/${id}`, id)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve();\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n const denyUpload = async (id: string): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.put(`/api/connectedAccount/denyUpload/${id}`, id)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve();\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n const lockout = async (id: string): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.put(`/api/connectedAccount/lockout/${id}`, id)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve();\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n const remove = async (id: string): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.delete(`/api/connectedAccount/remove/${id}`)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve();\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n get();\r\n return {\r\n connectedAccount,\r\n remove,\r\n get,\r\n approve,\r\n lockout,\r\n allowGallery,\r\n denyGallery,\r\n allowUpload,\r\n denyUpload\r\n };\r\n}\r\n","import Axios, { AxiosResponse } from \"axios\";\r\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\r\nimport SubscriptionViewModel from \"@/models/SubscriptionViewModel\";\r\nexport default function () {\r\n const getSubscription = async (): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.get(`/api/subscription`)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve(result.data);\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n return {\r\n getSubscription,\r\n };\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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\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 });\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 });\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 userSettings.value.timezone = selectedTimezone.value;\n updateUserSettings(userSettings.value).then(() => {\n app.success = \"Captain timezone updated\";\n });\n }\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 contact.value = new ContactViewModel();\n }\n });\n });\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=7e6eb59f&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=7e6eb59f&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 \"7e6eb59f\",\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\";\r\nimport { Loader, LoaderOptions } from \"@googlemaps/js-api-loader\";\r\n\r\nexport default function () {\r\n //const apiKey = \"AIzaSyCy9LGBG3lKJ921_x93_rz9y0UO0IodssM\";\r\n const apiKey = \"AIzaSyApxk3D-krEwWwILQYfCz7loR-wVj8wLZQ\";\r\n const options = ref({\r\n apiKey: apiKey,\r\n libraries: [\"geometry\"],\r\n });\r\n const googleMapApi = new Loader(options.value);\r\n return { googleMapApi };\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n 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&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\";\r\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\r\nimport VIPContactViewModel from \"@/models/VIPContactViewModel\";\r\nimport { ref } from \"@vue/composition-api\";\r\nexport default function () {\r\n const VIPcontacts = ref>([]);\r\n const getVIPContacts = async () => {\r\n await defineHeaderAxios();\r\n Axios.get(\"/api/vipcontact\")\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n VIPcontacts.value = result.data;\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n };\r\n getVIPContacts();\r\n return {\r\n VIPcontacts,\r\n getVIPContacts,\r\n };\r\n}\r\n","export default class VIPContactViewModel {\r\n public id: number;\r\n public userEmail: string;\r\n public name: string;\r\n public phoneNumber: string;\r\n}\r\n","import Axios, { AxiosResponse } from \"axios\";\r\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\r\nimport VIPContactViewModel from \"@/models/VIPContactViewModel\";\r\nexport default function () {\r\n const add = async (contact: VIPContactViewModel): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.post(\"/api/vipcontact\", contact)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve();\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n const update = async (contact: VIPContactViewModel): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.put(`/api/vipcontact/${contact.id}`, contact)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve();\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n const remove = async (id: number): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.delete(`/api/vipcontact/${id}`)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve();\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n const get = async (id: number): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.get(`/api/vipcontact/${id}`)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve(result.data);\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n\r\n const nameRules: ((v: any) => any)[] = [\r\n (v) => !!v || \"Name is required\",\r\n (v) => (v && v.length <= 30) || \"Name must be less than 30 characters\",\r\n ];\r\n const emailRules: ((v: any) => any)[] = [\r\n (v) => !!v || \"E-mail is required\",\r\n (v) => /.+@.+\\..+/.test(v) || \"E-mail must be valid\",\r\n ];\r\n return {\r\n add,\r\n update,\r\n remove,\r\n get,\r\n nameRules,\r\n emailRules,\r\n };\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n 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&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\";\r\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\r\nimport { ref } from \"@vue/composition-api\";\r\nexport default function () {\r\n const logItems = ref([]);\r\n const getLog = async () => {\r\n await defineHeaderAxios();\r\n Axios.get(`/api/sensor/CoreHistory`)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n logItems.value = result.data;\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n };\r\n getLog();\r\n return {\r\n logItems,\r\n };\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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&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)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { AxiosRequestConfig } from \"axios\";\r\nimport { WeatherModel } from \"../../models/WeatherModel\";\r\nimport { app } from \"@/store\";\r\n\r\nexport default function () {\r\n const APIkey = \"e25382087430a63a4347f8021dbaf2c9\"; //Thomas API key\r\n //const APIkey: string = '8eb6318ee69d1bc91d20ac6184929638'; // SeaSafe dedicated API key\r\n const getCurrentWeather = (lat: string, lng: string): Promise => {\r\n const part = \"hourly,daily,minutely\";\r\n const url = `https://api.openweathermap.org/data/2.5/onecall?lat=${lat}&lon=${lng}&units=metric&appid=${APIkey}`;\r\n const config: AxiosRequestConfig = {};\r\n config.headers = { common: { [\"Access-Control-Allow-Origin\"]: \"*\" } };\r\n return new Promise((resolve, reject) => {\r\n fetch(url)\r\n .then(function (response) {\r\n response.json().then((value: any) => {\r\n const weather = value as WeatherModel;\r\n resolve(weather);\r\n });\r\n })\r\n .then(function (data) {\r\n //console.log(data);\r\n })\r\n .catch(function () {\r\n app.error = \"Weather service encountered an error\";\r\n });\r\n });\r\n };\r\n return { getCurrentWeather };\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 { 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 if (gps) {\n getCurrentWeather(gps.location.geometry.coordinates[1].toString(), gps.location.geometry.coordinates[0].toString()).then(\n (result: WeatherModel) => {\n currentWeather.value = result;\n }\n );\n } else {\n getCurrentWeather(\"0\", \"0\").then(\n (result: WeatherModel) => {\n currentWeather.value = result;\n }\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 };\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=8df889c8&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=8df889c8&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 \"8df889c8\",\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 { 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,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\";\r\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\r\nimport { ref } from \"@vue/composition-api\";\r\nexport default function (id: string) {\r\n const logItems = ref([]);\r\n const getLog = async () => {\r\n await defineHeaderAxios();\r\n Axios.get(`/api/sensor/history/${id}`)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n logItems.value = result.data;\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n };\r\n getLog();\r\n return {\r\n logItems,\r\n };\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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&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 { 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 { add, nameRules, emailRules } = useContact();\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=5877179b&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=5877179b&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 \"5877179b\",\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&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\";\r\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\r\nimport FavouriteJourneyViewModel from \"@/models/FavouriteJourneyViewModel\";\r\nexport default function () {\r\n\r\n const saveFavouriteJourney = async (\r\n model: FavouriteJourneyViewModel\r\n ): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.post(\"/api/favouriteJourney\", model)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve();\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n\r\n const updateFavouriteJourney = async (\r\n model: FavouriteJourneyViewModel\r\n ): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.put(`/api/favouriteJourney/${model.id}`, model)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n console.log(\"Success update journey\");\r\n resolve();\r\n } else {\r\n console.log(\"Error update journey\");\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n\r\n const getFavouriteJourney = async (\r\n id: number\r\n ): Promise => {\r\n await defineHeaderAxios();\r\n return new Promise((resolve, reject) => {\r\n Axios.get(`/api/favouriteJourney/${id}`)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve(result.data);\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n\r\n const deleteFavouriteJourney = async (id: number): Promise => {\r\n await defineHeaderAxios();\r\n\r\n return new Promise((resolve, reject) => {\r\n Axios.delete(`/api/favouriteJourney/${id}`)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n resolve();\r\n } else {\r\n reject();\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n reject();\r\n });\r\n });\r\n };\r\n return {\r\n saveFavouriteJourney,\r\n updateFavouriteJourney,\r\n getFavouriteJourney,\r\n deleteFavouriteJourney,\r\n };\r\n}\r\n","export default class FavouriteJourneyViewModel {\r\n public id: number;\r\n public deviceId: string;\r\n public favouriteDate: string;\r\n public nickname: string;\r\n public description: string;\r\n public modifiedDate: string;\r\n public insertedDate: string;\r\n public image1: string;\r\n public image2: string;\r\n public image3: string;\r\n public image4: string;\r\n public image5: string;\r\n}\r\n","import { BlobServiceClient, ContainerClient } from \"@azure/storage-blob\";\r\n\r\nconst connectionString =\r\n \"DefaultEndpointsProtocol=https;AccountName=dssstorageaccountprod01;AccountKey=11Th42H42gyWO7Lwo2TKYz9nn4miBlOl26kZ2+ag1TNo3K6H2KHQTdD38fS+Mga8fWJTdi4QhyNS/F2VyFT/Gg==;EndpointSuffix=core.windows.net\"; // Change this to environment variable\r\n\r\nconst containerName = \"user-image-storage\";\r\n\r\nconst blobSasUrl =\r\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\";\r\n\r\nfunction getBlobServiceClient(): BlobServiceClient {\r\n return new BlobServiceClient(blobSasUrl);\r\n}\r\n\r\nexport async function uploadImageToBlobStorage(\r\n fileName: string,\r\n fileData: Uint8Array\r\n): Promise {\r\n const blobServiceClient = getBlobServiceClient();\r\n const containerClient: ContainerClient =\r\n blobServiceClient.getContainerClient(containerName);\r\n const blockBlobClient = containerClient.getBlockBlobClient(fileName);\r\n\r\n try {\r\n await blockBlobClient.uploadData(fileData);\r\n console.log(\"Image uploaded successfully!\");\r\n } catch (error) {\r\n console.error(\"Error uploading image:\", error);\r\n }\r\n}\r\n\r\nexport async function downloadImageFromBlobStorage(\r\n fileName: string\r\n): Promise {\r\n const blobServiceClient = getBlobServiceClient();\r\n const containerClient: ContainerClient =\r\n blobServiceClient.getContainerClient(containerName);\r\n const blockBlobClient = containerClient.getBlockBlobClient(fileName);\r\n\r\n try {\r\n const downloadBlockBlobResponse = await blockBlobClient.download(0);\r\n if (!downloadBlockBlobResponse.blobBody) {\r\n throw new Error(\"No data in blobBody\");\r\n }\r\n\r\n const blobData = await downloadBlockBlobResponse.blobBody;\r\n const arrayBuffer = await blobData.arrayBuffer();\r\n const fileData = new Uint8Array(arrayBuffer);\r\n\r\n console.log(\"Image downloaded successfully!\");\r\n return fileData;\r\n } catch (error) {\r\n console.error(\"Error downloading image:\", error);\r\n return new Uint8Array();\r\n }\r\n}\r\n\r\nexport async function deleteImageFromBlobStorage(\r\n fileName: string\r\n): Promise {\r\n const blobServiceClient = getBlobServiceClient();\r\n const containerClient: ContainerClient =\r\n blobServiceClient.getContainerClient(containerName);\r\n const blockBlobClient = containerClient.getBlockBlobClient(fileName);\r\n\r\n try {\r\n await blockBlobClient.delete();\r\n console.log(\"Image deleted successfully!\");\r\n } catch (error) {\r\n console.error(\"Error deleting image:\", error);\r\n }\r\n}\r\n\r\nexport async function deleteImagesStartingWith(prefix: string): Promise {\r\n const blobServiceClient = getBlobServiceClient();\r\n const containerClient: ContainerClient =\r\n blobServiceClient.getContainerClient(containerName);\r\n try {\r\n for await (const blob of containerClient.listBlobsFlat({\r\n prefix,\r\n })) {\r\n const blockBlobClient = containerClient.getBlockBlobClient(\r\n blob.name\r\n );\r\n await blockBlobClient.delete();\r\n console.log(`Deleted blob with name: ${blob.name}`);\r\n }\r\n } catch (error) {\r\n console.error(\"Error deleting images:\", error);\r\n }\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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&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&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 = [\r\n {\r\n path: \"/user\",\r\n redirect: \"/user/profile\",\r\n component: () => import(\"@/views/user/main.vue\"),\r\n children: [\r\n {\r\n path: \"profile\",\r\n component: () => import(\"@/views/user/profile.vue\"),\r\n name: \"user_profile\",\r\n },\r\n {\r\n path: \"login\",\r\n component: () => import(\"@/views/user/login.vue\"),\r\n name: \"login\",\r\n },\r\n ],\r\n },\r\n];\r\n\r\nexport default Router;\r\n","import Vue from \"vue\";\r\nimport Router, { RouteConfig } from \"vue-router\";\r\nimport { configureOidc } from \"@/store/services/security.service\";\r\nimport { differenceInMinutes } from \"date-fns\";\r\nimport Logo from \"@/views/Logo.vue\";\r\nimport Logout from \"@/views/Logout.vue\";\r\nimport Home from \"@/views/Home.vue\";\r\nimport Account from \"@/views/Account.vue\";\r\nimport Map from \"@/views/Map.vue\";\r\nimport Mob from \"@/views/mob.vue\";\r\nimport Settings from \"@/views/Settings.vue\";\r\nimport EventLog from \"@/views/EventLog.vue\";\r\nimport Weather from \"@/views/Weather.vue\";\r\nimport SensorLog from \"@/views/SensorLog.vue\";\r\nimport AddContact from \"@/views/AddContact.vue\";\r\nimport EditContact from \"@/views/EditContact.vue\";\r\nimport GeoPermission from \"@/views/GeoPermission.vue\";\r\nimport LogbookRecord from \"@/views/LogbookRecord.vue\";\r\nimport UserImageGallery from \"@/views/UserImageGallery.vue\";\r\nimport accountRoutes from \"./accountRoutes\";\r\nimport { alarm, app } from \"@/store/index\";\r\nimport store from \"@/store\";\r\nimport { config } from \"vue/types/umd\";\r\n\r\nlet routerObj = null as Router | null;\r\n\r\nexport async function configureRouter() {\r\n if (routerObj) return Promise.resolve(routerObj);\r\n\r\n const idsrvAuth = await configureOidc();\r\n Vue.use(Router);\r\n\r\n const routes: Array = [\r\n {\r\n path: \"/\",\r\n name: \"Logo\",\r\n component: Logo,\r\n meta: {\r\n authName: idsrvAuth.authName,\r\n secure: true,\r\n showTopBar: false,\r\n },\r\n },\r\n {\r\n path: \"/home\",\r\n name: \"Home\",\r\n component: Home,\r\n meta: {\r\n authName: idsrvAuth.authName,\r\n secure: true,\r\n showTopBar: true,\r\n },\r\n },\r\n {\r\n path: \"/map\",\r\n name: \"map\",\r\n component: Map,\r\n meta: {\r\n authName: idsrvAuth.authName,\r\n secure: true,\r\n showTopBar: false,\r\n },\r\n },\r\n {\r\n path: \"/settings\",\r\n name: \"settings\",\r\n component: Settings,\r\n meta: {\r\n authName: idsrvAuth.authName,\r\n secure: true,\r\n showTopBar: true,\r\n },\r\n },\r\n {\r\n path: \"/profile\",\r\n name: \"profile\",\r\n component: Account,\r\n meta: {\r\n authName: idsrvAuth.authName,\r\n secure: true,\r\n showTopBar: true,\r\n },\r\n },\r\n {\r\n path: \"/authentication/logout-callback\",\r\n name: \"callback\",\r\n component: Logout,\r\n meta: { secure: false, showTopBar: false },\r\n },\r\n {\r\n path: \"/mob\",\r\n name: \"mob\",\r\n component: Mob,\r\n meta: {\r\n authName: idsrvAuth.authName,\r\n secure: true,\r\n showTopBar: true,\r\n },\r\n },\r\n {\r\n path: \"/geo-permission\",\r\n name: \"geo-permission\",\r\n component: GeoPermission,\r\n meta: {\r\n authName: idsrvAuth.authName,\r\n secure: true,\r\n showTopBar: true,\r\n },\r\n },\r\n {\r\n path: \"/weather\",\r\n name: \"weather\",\r\n component: Weather,\r\n meta: {\r\n authName: idsrvAuth.authName,\r\n secure: true,\r\n showTopBar: true,\r\n },\r\n },\r\n {\r\n path: \"/event-log\",\r\n name: \"event-log\",\r\n component: EventLog,\r\n meta: {\r\n authName: idsrvAuth.authName,\r\n secure: true,\r\n showTopBar: true,\r\n },\r\n },\r\n {\r\n path: \"/history/:id\",\r\n name: \"history\",\r\n component: SensorLog,\r\n meta: {\r\n authName: idsrvAuth.authName,\r\n secure: true,\r\n showTopBar: true,\r\n },\r\n },\r\n {\r\n path: \"/logbook-record/:daterange\",\r\n name: \"LogbookRecord\",\r\n component: LogbookRecord,\r\n meta: {\r\n authName: idsrvAuth.authName,\r\n secure: true,\r\n showTopBar: false,\r\n },\r\n },\r\n {\r\n path: \"/userGallery/:ids\",\r\n name: \"userGallery\",\r\n component: UserImageGallery,\r\n meta: {\r\n authName: idsrvAuth.authName,\r\n secure: true,\r\n showTopBar: false,\r\n },\r\n },\r\n {\r\n path: \"/addContact\",\r\n name: \"addContact\",\r\n component: AddContact,\r\n meta: {\r\n authName: idsrvAuth.authName,\r\n secure: true,\r\n showTopBar: true,\r\n },\r\n },\r\n {\r\n path: \"/editContact\",\r\n name: \"editContact\",\r\n component: EditContact,\r\n meta: {\r\n authName: idsrvAuth.authName,\r\n secure: true,\r\n showTopBar: true,\r\n },\r\n },\r\n ...accountRoutes,\r\n ];\r\n\r\n routerObj = new Router({\r\n mode: \"history\",\r\n base: process.env.BASE_URL,\r\n routes,\r\n });\r\n routerObj.beforeEach((to, from, next) => {\r\n if (to.path.indexOf(\"authentication\") !== -1) {\r\n next();\r\n } else {\r\n if (to.meta.showTopBar !== null) {\r\n app.showTopBar = to.meta.showTopBar;\r\n }\r\n\r\n // if going from settings\r\n if (to.name && from.name && from.name == \"settings\") {\r\n console.log(\"Going from settings\");\r\n\r\n if (to.name == \"LogbookRecord\" || to.name == \"addContact\" || to.name == \"editContact\") {\r\n\r\n console.log(\"Going to LogbookRecord or addContact or editContact\");\r\n\r\n if (to.name == \"LogbookRecord\") {\r\n console.log(\"Going to LogbookRecord\");\r\n app.setMyBoatPanelIndex(1); // Logbook, index myBoat 1\r\n } else {\r\n console.log(\"Going to addContact or editContact\");\r\n app.setMyBoatPanelIndex(2); // Contacts, index myBoat 2\r\n }\r\n app.setMyBoatPanelOpen(true);\r\n } else {\r\n app.setMyBoatPanelIndex(-1);\r\n app.setMyBoatPanelOpen(false);\r\n }\r\n\r\n if (to.name == \"history\") {\r\n console.log(\"Going to history with params id: \" + to.params.id);\r\n\r\n if (to.params.id == \"4\") {\r\n app.setSensorsPanelOpen(true);\r\n app.setSensorsPanelIndex(0); // Smoke detector, index sensors 0\r\n } else if (to.params.id == \"5\") {\r\n app.setSensorsPanelOpen(true);\r\n app.setSensorsPanelIndex(1); // CO detector, index sensors 1\r\n } else if (to.params.id == \"6\") {\r\n app.setSensorsPanelOpen(true);\r\n app.setSensorsPanelIndex(2); // Heat detector, index sensors 2\r\n } else if (to.params.id == \"7\") {\r\n app.setSensorsPanelOpen(true);\r\n app.setSensorsPanelIndex(4); // Gas detector, index sensors 4\r\n } else if (to.params.id == \"8\") {\r\n app.setSensorsPanelOpen(true);\r\n app.setSensorsPanelIndex(3); // Water detector, index sensors 3\r\n } else if (to.params.id == \"17\") {\r\n app.setSensorsPanelOpen(true);\r\n app.setSensorsPanelIndex(5); // Bilge pump, index sensors 5\r\n } else {\r\n app.setSensorsPanelIndex(-1);\r\n app.setSensorsPanelOpen(false);\r\n }\r\n\r\n if (to.params.id == \"15\") {\r\n app.setControlPanelIndex(1); // Gas valve, index control 1\r\n app.setControlPanelOpen(true);\r\n } else if (to.params.id == \"16\") {\r\n app.setControlPanelIndex(0); // Digital IO, index control 0\r\n app.setControlPanelOpen(true);\r\n } else {\r\n app.setControlPanelIndex(-1);\r\n app.setControlPanelOpen(false);\r\n }\r\n } else {\r\n app.setSensorsPanelIndex(-1);\r\n app.setControlPanelIndex(-1);\r\n app.setSensorsPanelOpen(false);\r\n app.setControlPanelOpen(false);\r\n }\r\n }\r\n\r\n // if going from home\r\n if (to.name && from.name && from.name == \"Home\") {\r\n console.log(\"Going from home\");\r\n if (to.name == \"history\") {\r\n console.log(\"Going to history with params id: \" + to.params.id);\r\n\r\n if (to.params.id == \"1\") {\r\n app.setHomePanelIndex(3); // Deck hatch, index home 3\r\n app.setHomePanelOpen(true);\r\n } else if (to.params.id == \"2\") {\r\n app.setHomePanelIndex(0); // Shore power, index home 0\r\n app.setHomePanelOpen(true);\r\n } else if (to.params.id == \"3\") {\r\n app.setHomePanelIndex(1); // Smart plug, index home 1\r\n app.setHomePanelOpen(true);\r\n } else if (to.params.id == \"10\") {\r\n app.setHomePanelIndex(2); // Main door, index home 2\r\n app.setHomePanelOpen(true);\r\n } else {\r\n app.setHomePanelIndex(-1);\r\n app.setHomePanelOpen(false);\r\n }\r\n } else {\r\n app.setHomePanelIndex(-1);\r\n app.setHomePanelOpen(false);\r\n }\r\n }\r\n\r\n if (to.name && to.name !== \"Logo\") {\r\n const value = alarm.alarmStatus;\r\n if (value) {\r\n const minutes = differenceInMinutes(new Date(), value.fetchAt);\r\n if (minutes > 1440) {\r\n next(\"/\");\r\n } else {\r\n next();\r\n }\r\n } else {\r\n next(\"/\");\r\n }\r\n } else {\r\n next();\r\n }\r\n }\r\n\r\n return;\r\n });\r\n\r\n\r\n idsrvAuth.useRouter(routerObj);\r\n\r\n return routerObj;\r\n}\r\n\r\nexport default routerObj;\r\n","module.exports = __webpack_public_path__ + \"img/fleet.18987d77.svg\";","module.exports = __webpack_public_path__ + \"img/13d@2x.34f01c18.svg\";","module.exports = __webpack_public_path__ + \"img/timer-play-outline.513aa247.svg\";","module.exports = __webpack_public_path__ + \"img/11n@2x.c6779920.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=5877179b&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/batteri-ladeniveau-forside_hvid_2.35d6e6fe.svg\";","module.exports = __webpack_public_path__ + \"img/warning-red.19f23b6c.svg\";","module.exports = __webpack_public_path__ + \"img/speedometer-medium.9cca76db.svg\";","module.exports = __webpack_public_path__ + \"img/geo-fence.93516f50.svg\";","module.exports = __webpack_public_path__ + \"img/share-variant-outline.af2eb22c.svg\";","module.exports = __webpack_public_path__ + \"img/unknown-error.df4b33f1.svg\";","module.exports = __webpack_public_path__ + \"img/01d@2x.255a951b.svg\";","module.exports = __webpack_public_path__ + \"img/responsive.4cae6e05.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&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/reset.85d41aad.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!./mob.vue?vue&type=style&index=0&id=2cffb544&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/nmea.8436d5e5.svg\";","module.exports = __webpack_public_path__ + \"img/13n@2x.34f01c18.svg\";","module.exports = __webpack_public_path__ + \"img/catch-thief-bg.4637ebe3.svg\";","// src/plugins/vuetify/theme.js\r\nimport colors from \"vuetify/lib/util/colors\";\r\nimport { VuetifyThemeVariant } from \"vuetify/types/services/theme\";\r\n\r\nconst theme: VuetifyThemeVariant = {\r\n primary: {\r\n base: colors.purple.base,\r\n darken1: colors.purple.darken1,\r\n },\r\n secondary: \"\",\r\n accent: \"\",\r\n info: \"\",\r\n warning: \"\",\r\n success: \"\",\r\n error: \"\",\r\n};\r\nexport default theme;\r\n// {\r\n// primary: {\r\n// base: colors.purple.base,\r\n// darken1: colors.purple.darken2,\r\n// },\r\n// secondary: colors.indigo,\r\n// // All keys will generate theme styles,\r\n// // Here we add a custom `tertiary` color\r\n// tertiary: colors.pink.base,\r\n// }\r\n","import \"@mdi/font/css/materialdesignicons.css\";\r\nimport Vue from \"vue\";\r\nimport light from \"./theme\";\r\nimport Vuetify, {\r\n VAlert,\r\n VApp,\r\n VNavigationDrawer,\r\n VFooter,\r\n VList,\r\n VBtn,\r\n VIcon,\r\n VToolbar,\r\n VDataTable,\r\n VProgressLinear,\r\n VAppBar,\r\n VBottomNavigation,\r\n VMain,\r\n} from \"vuetify/lib\";\r\n\r\n// vue-cli a-la-carte installation\r\nVue.use(Vuetify, {\r\n components: {\r\n VAlert,\r\n VApp,\r\n VNavigationDrawer,\r\n VFooter,\r\n VList,\r\n VBtn,\r\n VIcon,\r\n VToolbar,\r\n VDataTable,\r\n VProgressLinear,\r\n VAppBar,\r\n VBottomNavigation,\r\n VMain,\r\n },\r\n});\r\n\r\nconst opts = {\r\n options: { customProperties: true },\r\n themes: {\r\n light: {\r\n ...light,\r\n // Add VTextField to set the default input text color to white\r\n VTextField: {\r\n input: {\r\n color: \"white\",\r\n },\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport default new Vuetify(opts);\r\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)],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&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\";\r\n\r\nexport default function () {\r\n {\r\n const refreshing = ref(false);\r\n const registration = ref();\r\n const updateExists = ref(false);\r\n\r\n // Store the SW registration so we can send it a message\r\n // We use `updateExists` to control whatever alert, toast, dialog, etc we want to use\r\n // To alert the user there is an update they need to refresh for\r\n // Called when the user accepts the update\r\n const updateAvailable = (event: any) => {\r\n registration.value = event.detail;\r\n updateExists.value = true;\r\n };\r\n\r\n const refreshApp = () => {\r\n updateExists.value = false;\r\n if (registration.value && registration.value.waiting) {\r\n // send message to SW to skip the waiting and activate the new SW\r\n registration.value.waiting.postMessage({\r\n type: \"SKIP_WAITING\",\r\n });\r\n } else {\r\n // unregister the service worker to clear the cache\r\n navigator.serviceWorker\r\n .getRegistrations()\r\n .then((registrations) => {\r\n for (const registration of registrations) {\r\n registration.unregister();\r\n }\r\n // reload the page to activate the new SW\r\n window.location.reload();\r\n });\r\n }\r\n };\r\n // Listen for our custom event from the SW registration\r\n document.addEventListener(\"swUpdated\", updateAvailable, {\r\n once: true,\r\n });\r\n // Prevent multiple refreshes\r\n navigator.serviceWorker.addEventListener(\"controllerchange\", () => {\r\n if (refreshing.value) return;\r\n refreshing.value = true;\r\n // Here the actual reload of the page occurs\r\n window.location.reload();\r\n });\r\n return {\r\n refreshApp,\r\n updateExists,\r\n };\r\n }\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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\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 }\n );\n app.$watch(\n module => module.success,\n newValue => {\n successAlert.value = newValue != \"\";\n }\n );\n\n return {\n title,\n topbar,\n footer,\n error,\n alarm,\n success,\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=c5520438&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=c5520438&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 \"c5520438\",\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 { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VMain } from 'vuetify/lib/components/VMain';\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,VIcon,VImg,VMain,VSnackbar,VSpacer,VToolbarTitle})\n","/* tslint:disable:no-console */\r\n\r\nimport { register } from \"register-service-worker\";\r\n\r\nif (process.env.NODE_ENV === \"production\") {\r\n register(`${process.env.BASE_URL}service-worker.js`, {\r\n ready(registration) {\r\n registration.update();\r\n setInterval(() => {\r\n registration.update();\r\n }, 1000 * 60 * 60); // e.g. hourly checks\r\n console.log(\r\n \"App is being served from cache by a service worker.\\n\" +\r\n \"For more details, visit https://goo.gl/AFskqB\"\r\n );\r\n },\r\n cached() {\r\n console.log(\"Content has been cached for offline use.\");\r\n },\r\n updated(registration) {\r\n document.dispatchEvent(\r\n new CustomEvent(\"swUpdated\", { detail: registration })\r\n );\r\n console.log(\"New content is available; please refresh.\");\r\n },\r\n offline() {\r\n console.log(\r\n \"No internet connection found. App is running in offline mode.\"\r\n );\r\n },\r\n error(error) {\r\n console.error(\"Error during service worker registration:\", error);\r\n },\r\n });\r\n}\r\n","import { format } from \"date-fns\";\r\n\r\nexport default (date: Date, formatString = \"eeee, dd MMMM\") => {\r\n return format(new Date(date), formatString);\r\n};\r\n","import _ from \"lodash\";\r\nimport Vue, { VueConstructor } from \"vue\";\r\n\r\ndeclare module \"vue/types/vue\" {\r\n interface Vue {\r\n $_: typeof _;\r\n }\r\n}\r\n\r\nexport default {\r\n install(Vue: VueConstructor) {\r\n Object.defineProperty(Vue.prototype, \"$_\", {\r\n value: _,\r\n });\r\n },\r\n};\r\n","import \"core-js/stable\";\r\nimport \"regenerator-runtime/runtime\";\r\nimport Vue from \"vue\";\r\nimport VueCompositionApi from \"@vue/composition-api\";\r\nimport vuetify from \"./plugins/vuetify\";\r\nimport App from \"./App.vue\";\r\nimport { configureRouter } from \"./router/\";\r\nimport store from \"@/store/index\";\r\nimport \"./registerServiceWorker\";\r\nimport dateFilter from \"@/filters/date.filter\";\r\nimport { configureOidc } from \"@/store/services/security.service\";\r\nimport { configureMessageHub } from \"@/plugins/messageHub\";\r\nimport { clear } from \"idb-keyval\";\r\nimport LodashPlugin from \"@/plugins/lodash-plugin\";\r\n\r\nconst init = async function () {\r\n const mainOidc = await configureOidc();\r\n const router = await configureRouter();\r\n clear().then(() => {\r\n mainOidc.startup().then((ok) => {\r\n if (mainOidc.isAuthenticated) {\r\n configureMessageHub()\r\n .then(() => {\r\n console.log(\"MessageHub started\");\r\n })\r\n .catch(() => {\r\n console.log(\"MessageHub start error\");\r\n mainOidc.signOut();\r\n });\r\n }\r\n if (ok) {\r\n Vue.config.productionTip = false;\r\n Vue.filter(\"date\", dateFilter);\r\n Vue.use(VueCompositionApi);\r\n Vue.prototype.$oidc = mainOidc;\r\n Vue.use(LodashPlugin);\r\n\r\n new Vue({\r\n vuetify,\r\n router,\r\n store,\r\n render: (h) => h(App),\r\n }).$mount(\"#app\");\r\n }\r\n });\r\n });\r\n};\r\n\r\ninit();\r\n","import Axios, { AxiosResponse } from \"axios\";\r\nimport defineHeaderAxios from \"@/utilities/useAuthToken\";\r\nimport { Ref, ref } from \"@vue/composition-api\";\r\nimport { HistoricGpsPosition } from \"../models/HistoricGpsPosition\";\r\nexport default function (dateRange: string) {\r\n const logbookItems = ref>([]);\r\n const get = async () => {\r\n await defineHeaderAxios();\r\n\r\n Axios.get(`/api/Alarm/geo/${dateRange}`)\r\n .then((result: AxiosResponse) => {\r\n if (result.status === 200) {\r\n logbookItems.value = result.data;\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n };\r\n get();\r\n return {\r\n logbookItems,\r\n };\r\n}\r\n","module.exports = __webpack_public_path__ + \"img/map-marker-stop.aecb818f.svg\";","module.exports = __webpack_public_path__ + \"img/contact.bcd0c2d3.svg\";","module.exports = __webpack_public_path__ + \"img/09d@2x.f1fe2b22.svg\";","/* eslint-disable */\r\nimport Oidc, { User } from 'oidc-client';\r\nimport { alarm, profile } from '@/store';\r\nimport {\r\n createOidcAuth,\r\n LogLevel,\r\n OidcAuth,\r\n SignInType,\r\n} from 'vue-oidc-client/vue2';\r\nimport addSeconds from 'date-fns/addSeconds';\r\nconst loco = window.location;\r\nconst appRootUrl = `${loco.protocol}//${loco.host}${process.env.BASE_URL}`;\r\nimport { configureMessageHub } from '@/plugins/messageHub';\r\nimport { Log } from '@/plugins/Logging';\r\nlet authObj = null as OidcAuth | null;\r\n\r\nexport async function configureOidc() {\r\n if (authObj) return Promise.resolve(authObj);\r\n\r\n const configFetch = await fetch('/_configuration/MarineOneApp');\r\n const config = await configFetch.json();\r\n\r\n authObj = createOidcAuth(\r\n 'main',\r\n SignInType.Window,\r\n appRootUrl,\r\n {\r\n ...config,\r\n // test use\r\n prompt: 'login',\r\n\r\n // max_age: 120,\r\n // automaticSilentRenew: true,\r\n start_checksession: true,\r\n silent_renew: true,\r\n silent_redirect_uri: `${appRootUrl}/silent-refresh.html`,\r\n log_console_warning_active: true,\r\n log_console_debug_active: false,\r\n },\r\n console,\r\n LogLevel.Debug\r\n );\r\n\r\n // handle events\r\n authObj.events.addAccessTokenExpiring(function () {\r\n if (authObj) {\r\n authObj.startSilentRenew();\r\n } else {\r\n window.location.href = appRootUrl;\r\n }\r\n });\r\n authObj.events.addAccessTokenExpired(function () {\r\n alarm.ClearAlarmData();\r\n if (authObj) {\r\n authObj.signOut().then(() => {\r\n window.location.href = appRootUrl;\r\n });\r\n } else {\r\n window.location.href = appRootUrl;\r\n }\r\n });\r\n\r\n authObj.events.addSilentRenewError(function (err: Error) {\r\n alarm.ClearAlarmData();\r\n });\r\n\r\n authObj.events.addUserLoaded(function (user: User) {\r\n if (authObj) {\r\n authObj.startSilentRenew();\r\n }\r\n profile.Get().then(() => {\r\n configureMessageHub().then(() => {\r\n Log.information('Messagehub started');\r\n });\r\n });\r\n });\r\n\r\n authObj.events.addUserUnloaded(function () {\r\n alarm.ClearAlarmData();\r\n window.location.href = appRootUrl;\r\n });\r\n\r\n authObj.events.addUserSignedOut(function () {\r\n window.location.href = appRootUrl;\r\n });\r\n\r\n authObj.events.addUserSessionChanged(function () {\r\n alarm.ClearAlarmData();\r\n });\r\n const getExpirationTime = (expires_At: number): Date => {\r\n var jan1970 = new Date('1970-01-01T00:00:00Z');\r\n return addSeconds(jan1970, expires_At);\r\n };\r\n return authObj;\r\n}\r\n","module.exports = __webpack_public_path__ + \"img/weather_old.f59519ab.svg\";","module.exports = __webpack_public_path__ + \"img/map-marker-distance.dc5328ff.svg\";","module.exports = __webpack_public_path__ + \"img/unlock.1b239036.svg\";","module.exports = __webpack_public_path__ + \"img/dots-vertical-circle-outline.62540d59.svg\";","module.exports = __webpack_public_path__ + \"img/edit.6955c681.svg\";","export default class AttachedDeviceModel {\r\n public coreId: string;\r\n public attachedDeviceId: string;\r\n public attachedDeviceName: string;\r\n public attachedDeviceTypeId: number;\r\n public alarm1: boolean;\r\n public alarm2: boolean;\r\n public tampered: boolean;\r\n public batteryLow: boolean;\r\n public reporting: boolean;\r\n public reportingRestored: boolean;\r\n public failure: boolean;\r\n public acMainsFault: boolean;\r\n public testMode: boolean;\r\n public batteryDefect: boolean;\r\n public age: number;\r\n public deviceTypeDescription: string;\r\n public latestEventName: string;\r\n public modifiedDateTime: Date;\r\n public insertedDateTime: string;\r\n public minutesSinceLastHeartBeat: string;\r\n}\r\n","module.exports = __webpack_public_path__ + \"img/04d@2x.bb2fe964.svg\";","module.exports = __webpack_public_path__ + \"img/50d@2x.2d407627.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&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/map-marker-round-trip.420159df.svg\";","module.exports = __webpack_public_path__ + \"img/03d@2x.66927525.svg\";","module.exports = __webpack_public_path__ + \"img/thermometer.e2813296.png\";","module.exports = __webpack_public_path__ + \"img/escape.719193f5.svg\";","module.exports = __webpack_public_path__ + \"img/mobO.fd5a1731.svg\";","module.exports = __webpack_public_path__ + \"img/profil.97323173.svg\";","module.exports = __webpack_public_path__ + \"img/battery.7b8a365d.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&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/switched-off.65896d22.svg\";","import { configureOidc } from \"@/store/services/security.service\";\r\nimport Axios from \"axios\";\r\nimport { OidcAuth } from \"vue-oidc-client/vue2\";\r\nexport default async function () {\r\n const token = configureOidc().then(\r\n (auth: OidcAuth) => {\r\n Axios.defaults.headers.common[\"Authorization\"] =\r\n \"Bearer \" + auth.accessToken;\r\n },\r\n (err) => {\r\n console.log(err);\r\n }\r\n );\r\n}\r\n","module.exports = __webpack_public_path__ + \"img/10n@2x.a2ad31f8.svg\";","module.exports = __webpack_public_path__ + \"img/map-arrow.e3262bd4.svg\";","module.exports = __webpack_public_path__ + \"img/door-sensor.c2a4929b.svg\";","module.exports = __webpack_public_path__ + \"img/captains_log.2eaa22a8.svg\";","export default function () {\r\n const getName = (type: number): string => {\r\n switch (type) {\r\n case 1:\r\n return \"Deck hatch sensor\";\r\n case 2:\r\n return \"Shore power\";\r\n case 3:\r\n return \"Smart plug\";\r\n case 4:\r\n return \"Smoke detector\";\r\n case 5:\r\n return \"CO detector\";\r\n case 6:\r\n return \"Heat detector\";\r\n case 7:\r\n return \"Gas detector\";\r\n case 8:\r\n return \"Water intrusion detector\";\r\n case 9:\r\n return \"Keypad\";\r\n case 10:\r\n return \"Main door sensor\";\r\n case 11:\r\n return \"Immobilizer\";\r\n case 12:\r\n return \"App engine kill\";\r\n case 13:\r\n return \"Gateway\";\r\n case 15:\r\n return \"Gas valve\";\r\n case 16:\r\n return \"Digital output\";\r\n case 17:\r\n return \"Bilge pump\";\r\n default:\r\n return \"Unknown sensor\";\r\n }\r\n };\r\n\r\n return {\r\n getName,\r\n };\r\n}\r\n","module.exports = __webpack_public_path__ + \"img/timer_blue.29d91fc4.svg\";","module.exports = __webpack_public_path__ + \"img/blad.91abe9ca.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&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/mob.4583e219.svg\";","module.exports = __webpack_public_path__ + \"img/gas_valve.10981051.svg\";","module.exports = __webpack_public_path__ + \"img/batteri-ladeniveau-forside_hvid70.18623350.svg\";"],"sourceRoot":""}