tracman-server/static/js/.map.min.js

1 line
7.6 KiB
JavaScript

"use strict";let map,marker,elevator,newLoc;const mapElem=document.getElementById("map"),socket=io("//"+window.location.hostname),IDLE_TIMEOUT=300;let _idleSecondsCounter=0;function resetIdleSecondsCounter(){_idleSecondsCounter=0}function metersToFeet(e){return"standard"===mapuser.settings.units?(3.28084*e).toFixed():e.toFixed()}function toggleMaps(e){0===e.lat&&0===e.lon?($("#map").hide(),$("#view").hide(),$("#notset").show()):($("#map").show(),$("#view").show(),$("#notset").hide())}function initMap(){if("1"!==disp){if(map=new google.maps.Map(mapElem,{center:{lat:mapuser.last.lat,lng:mapuser.last.lon},panControl:!1,scrollwheel:!0,scaleControl:!!mapuser.settings.showScale,draggable:!1,zoom:mapuser.settings.defaultZoom,streetViewControl:!1,zoomControlOptions:{position:google.maps.ControlPosition.LEFT_TOP},mapTypeId:"road"===mapuser.settings.defaultMap?google.maps.MapTypeId.ROADMAP:google.maps.MapTypeId.HYBRID}),marker=new google.maps.Marker({position:{lat:mapuser.last.lat,lng:mapuser.last.lon},title:mapuser.name,icon:mapuser.settings.marker?"/static/img/marker/"+mapuser.settings.marker+".png":"/static/img/marker/red.png",map:map,draggable:!1}),map.addListener("zoom_changed",function(){map.setCenter(marker.getPosition())}),"0"!==noHeader&&"demo"!==mapuser._id){const e=document.createElement("div");e.id="map-logo",e.innerHTML='<a href="https://www.tracman.org/"><img src="https://www.tracman.org/static/img/style/logo-28.png" alt="[]"><span class=\'text\'>Tracman</span></a>',map.controls[google.maps.ControlPosition.BOTTOM_LEFT].push(e)}const t=document.createElement("div");if(t.id="timestamp",mapuser.last.time&&(t.innerHTML="location updated "+new Date(mapuser.last.time).toLocaleString()),map.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(t),mapuser.settings.showSpeed){const e=document.createElement("div"),t=document.createElement("div"),o=document.createElement("div"),n=document.createElement("div");t.id="spd-label",t.innerHTML="SPEED",o.id="spd",o.innerHTML="standard"===mapuser.settings.units?(2.23694*parseFloat(mapuser.last.spd)).toFixed():mapuser.last.spd.toFixed(),n.id="spd-unit",n.innerHTML="standard"===mapuser.settings.units?"m.p.h.":"k.p.h.",e.id="spd-sign",e.appendChild(t),e.appendChild(o),e.appendChild(n),map.controls[google.maps.ControlPosition.TOP_RIGHT].push(e)}if(mapuser.settings.showAlt){elevator=new google.maps.ElevationService;const t=document.createElement("div"),o=document.createElement("div"),n=document.createElement("div"),a=document.createElement("div");o.id="alt-label",n.id="alt",a.id="alt-unit",t.id="alt-sign",n.innerHTML="",o.innerHTML="ALTITUDE",e(mapuser.last).then(function(e){n.innerHTML=metersToFeet(e)}).catch(function(e){console.error("Could not load altitude from last known location: ",e)}),a.innerHTML="standard"===mapuser.settings.units?"feet":"meters",t.appendChild(o),t.appendChild(n),t.appendChild(a),map.controls[google.maps.ControlPosition.TOP_RIGHT].push(t)}}function e(e){return new Promise(function(t,o){"number"==typeof e.alt?(console.log("Altitude was provided in loc as ",e.alt,"m"),t(e.alt)):(console.log("No altitude was provided in loc"),function(e){return new Promise(function(t,o){return(elevator=elevator||new google.maps.ElevationService).getElevationForLocations({locations:[{lat:e.lat,lng:e.lon}]},function(e,n,a){n===google.maps.ElevationStatus.OK&&e[0]?(console.log("Altitude was retrieved from Google Elevations API as",e[0].elevation,"m"),t(e[0].elevation)):o(Error(a))})})}(e).then(function(e){t(e)}).catch(function(e){o(e)}))})}function t(e){return e.spd="standard"===mapuser.settings.units?2.23694*parseFloat(e.spd):parseFloat(e.spd),e.dir=parseFloat(e.dir),e.lat=parseFloat(e.lat),e.lon=parseFloat(e.lon),e.tim=new Date(e.tim).toLocaleString(),e}function o(e){!function e(t,o,n){if(null==newLoc||t.tim===newLoc.tim){if(!a)var a=new google.maps.StreetViewService;a.getPanorama({location:{lat:t.lat,lng:t.lon},radius:o},function(a,s){switch(s){case google.maps.StreetViewStatus.OK:n(a);break;case google.maps.StreetViewStatus.ZERO_RESULTS:e(t,2*o,n);break;default:console.error(new Error("Street view not available: "+s).message)}})}}(e,2,function(t){var o,n,a;$("#viewImg").attr("src","https://maps.googleapis.com/maps/api/streetview?size="+((a=$("#view")).width()<640&&a.height()<640?a.width().toFixed()+"x"+a.height().toFixed():a.width()>a.height()?"640x"+(640*a.height()/a.width()).toFixed():(640*a.width()/a.height()).toFixed()+"x640")+"&location="+t.location.latLng.lat()+","+t.location.latLng.lng()+"&fov=90&heading="+(e.spd>2?e.dir:String((o=e,n=t.location,90-Math.atan2(o.lat-n.latLng.lat(),o.lon-n.latLng.lng())*(180/Math.PI)%360)))+"&key="+mapKey)})}"0"!==disp&&mapuser.settings.showStreetview&&o(t(mapuser.last)),socket.on("get",function(n){console.log("Got location:",n.lat+", "+n.lon),newLoc=t(n),"1"!==disp&&($("#timestamp").text("location updated "+newLoc.tim),google.maps.event.trigger(map,"resize"),map.setCenter({lat:newLoc.lat,lng:newLoc.lon}),marker.setPosition({lat:newLoc.lat,lng:newLoc.lon}),mapuser.settings.showSpeed&&$("#spd").text(newLoc.spd.toFixed()),mapuser.settings.showAlt&&e(n).then(function(e){$("#alt").text(metersToFeet(e))}).catch(function(e){$("#alt").text("????"),console.error(e.stack)})),"0"!==disp&&mapuser.settings.showStreetview&&o(newLoc)})}document.onclick=resetIdleSecondsCounter,document.onmousemove=resetIdleSecondsCounter,document.onkeypress=resetIdleSecondsCounter,window.setInterval(function(){++_idleSecondsCounter>=300?socket.connected&&(console.log("Disconnecting because idle for more than",300,"seconds."),$("#inactive-mask").show(),$("#inactive-message").show(),socket.disconnect()):socket.connected||(console.log("Reconnecting the user because they are no longer idle."),$("#inactive-mask").hide(),$("#inactive-message").hide(),socket.connect())},1e3),socket.on("connect",function(){console.log("Connected!"),socket.emit("can-get",mapuser._id),mapuser._id===userid&&socket.emit("can-set",userid)}).on("disconnect",function(){console.log("Disconnected!")}).on("error",function(e){console.error(e.stack)}),$(function(){let e,t;toggleMaps(mapuser.last),$("#set-loc").click(function(){!userid===mapuser._id?alert("You are not logged in! "):navigator.geolocation?navigator.geolocation.getCurrentPosition(function(e){let t={ts:Date.now(),tok:token,usr:userid,alt:e.coords.altitude,lat:e.coords.latitude,lon:e.coords.longitude,spd:e.coords.speed||0};socket.emit("set",t),toggleMaps(t),console.log("Set location:",t.lat+", "+t.lon)},function(e){alert("Unable to set location."),console.error(e.stack)},{enableHighAccuracy:!0}):alert("Geolocation not enabled. ")}),$("#track-loc").click(function(){!userid===mapuser._id?alert("You are not logged in! "):e?($("#track-loc").html('<i class="fa fa-crosshairs"></i>Track').prop("title","Click here to track your location. "),navigator.geolocation.clearWatch(e),e=void 0):navigator.geolocation?($("#track-loc").html('<i class="fa fa-crosshairs fa-spin"></i>Stop').prop("title","Click here to stop tracking your location. "),e=navigator.geolocation.watchPosition(function(e){t={ts:Date.now(),tok:token,usr:userid,lat:e.coords.latitude,lon:e.coords.longitude,alt:e.coords.altitude,spd:e.coords.speed||0},socket.emit("set",t),toggleMaps(t),console.log("Set location:",t.lat+", "+t.lon)},function(e){alert("Unable to track location."),console.error(e.stack)},{enableHighAccuracy:!0})):alert("Unable to track location. ")}),$("#clear-loc").click(function(){!userid===mapuser._id?alert("You are not logged in! "):(e&&($("#track-loc").html('<i class="fa fa-crosshairs"></i>Track'),navigator.geolocation.clearWatch(e),e=void 0),t={ts:Date.now(),tok:token,usr:userid,lat:0,lon:0,spd:0},socket.emit("set",t),toggleMaps(t),console.log("Cleared location"))})});