X-Git-Url: https://git-public.kairo.at/?p=tricorder.git;a=blobdiff_plain;f=js%2Ftricorder.js;h=3bf19c6357e10ee28a4f1dd4787cb8f32ea0dad5;hp=2dc920767f39b9bb17974ff22fb99ed40ad6a91a;hb=e6b9b946c4d4b2686a4c8b909a832b9427c6997f;hpb=14a5754752cd2b02a9f87f27ae54772a3797126c;ds=sidebyside diff --git a/js/tricorder.js b/js/tricorder.js index 2dc9207..3bf19c6 100644 --- a/js/tricorder.js +++ b/js/tricorder.js @@ -74,8 +74,11 @@ function switchModule(modname) { navs[i].classList.remove("active"); } - document.getElementById("nav" + modname).classList.add("active"); + var navItem = document.getElementById("nav" + modname); + navItem.classList.add("active"); document.getElementById("sect" + modname).classList.add("active"); + document.getElementById("mainHeader").textContent = + (modname == "Other") ? "Web Tricorder" : navItem.textContent; window["gMod" + modname].activate(); } @@ -88,28 +91,43 @@ var gModPos = { document.getElementById("posavail").style.display = "block"; this.watchID = navigator.geolocation.watchPosition( function(position) { - document.getElementById("posLat").textContent = position.coords.latitude; - document.getElementById("posLong").textContent = position.coords.longitude; - document.getElementById("posAlt").textContent = position.coords.altitude; - document.getElementById("posAcc").textContent = position.coords.accuracy; - document.getElementById("posAltAcc").textContent = position.coords.altitudeAccuracy; - document.getElementById("posHead").textContent = position.coords.heading || "---"; - document.getElementById("posSpd").textContent = position.coords.speed || "---"; + document.getElementById("posLat").textContent = + position.coords.latitude + "°"; + document.getElementById("posLong").textContent = + position.coords.longitude + "°"; + document.getElementById("posAlt").textContent = + position.coords.altitude.toFixed(0) + " m"; + document.getElementById("posAcc").textContent = + position.coords.accuracy.toFixed(0) + " m"; + document.getElementById("posAltAcc").textContent = + position.coords.altitudeAccuracy.toFixed(0) + " m"; + document.getElementById("posHead").textContent = + position.coords.heading ? position.coords.heading.toFixed(0) + "°" : "---"; + document.getElementById("posSpd").textContent = + position.coords.speed ? position.coords.speed.toFixed(1) + " m/s" : "---"; var locTime = new Date(position.timestamp); document.getElementById("posTime").textContent = locTime.toISOString(); }, function(error) { // See https://developer.mozilla.org/en/Using_geolocation#Handling_errors - document.getElementById("posLat").textContent = error.message; - document.getElementById("posLong").textContent = "..."; - document.getElementById("posAlt").textContent = "..."; - document.getElementById("posAcc").textContent = "..."; - document.getElementById("posAltAcc").textContent = "..."; - document.getElementById("posHead").textContent = "..."; - document.getElementById("posSpd").textContent = "..."; - document.getElementById("posTime").textContent = "..."; + if (error.message) { + document.getElementById("posLat").textContent = error.message; + document.getElementById("posLong").textContent = "..."; + document.getElementById("posAlt").textContent = "..."; + document.getElementById("posAcc").textContent = "..."; + document.getElementById("posAltAcc").textContent = "..."; + document.getElementById("posHead").textContent = "..."; + document.getElementById("posSpd").textContent = "..."; + document.getElementById("posTime").textContent = "..."; + setTimeout(function() { gModPos.deactivate(); }, 5000); + } + else { + document.getElementById("posunavail").style.display = "block"; + document.getElementById("posavail").style.display = "none"; + } + gSounds.scan.pause(); }, - {enableHighAccuracy: true} + {enableHighAccuracy: true, maximumAge: 10000, timeout: 60000} ); } else { @@ -143,6 +161,12 @@ var gModGrav = { document.getElementById("gravavail").style.display = "block"; window.addEventListener("deviceorientation", this.orientEvent, true); window.addEventListener("devicemotion", this.motionEvent, true); + setTimeout(function() { + if ((document.getElementById("gravAlpha").textContent == "...") && + (document.getElementById("gravX").textContent == "...")) { + gModGrav.deactivate(); + } + }, 3000); }, deactivate: function() { gSounds.scan.pause(); @@ -150,6 +174,15 @@ var gModGrav = { window.removeEventListener("devicemotion", this.motionEvent, true); document.getElementById("gravunavail").style.display = "block"; document.getElementById("gravavail").style.display = "none"; + //document.getElementById("gravAbs").textContent = "..."; + document.getElementById("gravAlpha").textContent = "..."; + document.getElementById("gravBeta").textContent = "..."; + document.getElementById("gravGamma").textContent = "..."; + document.getElementById("gravTotal").textContent = "..."; + document.getElementById("gravX").textContent = "..."; + document.getElementById("gravY").textContent = "..."; + document.getElementById("gravZ").textContent = "..."; + //document.getElementById("gravRot").textContent = "..."; }, orientEvent: function(orientData) { //document.getElementById("gravAbs").textContent = orientData.absolute; @@ -158,6 +191,11 @@ var gModGrav = { document.getElementById("gravGamma").textContent = orientData.gamma.toFixed(1) + "°"; }, motionEvent: function(event) { + var gravTotal = + Math.sqrt(Math.pow(event.accelerationIncludingGravity.x, 2) + + Math.pow(event.accelerationIncludingGravity.y, 2) + + Math.pow(event.accelerationIncludingGravity.z, 2)); + document.getElementById("gravTotal").textContent = gravTotal.toFixed(2) + " m/s²"; document.getElementById("gravX").textContent = event.accelerationIncludingGravity.x.toFixed(2) + " m/s²"; document.getElementById("gravY").textContent = event.accelerationIncludingGravity.y.toFixed(2) + " m/s²"; document.getElementById("gravZ").textContent = event.accelerationIncludingGravity.z.toFixed(2) + " m/s²"; @@ -165,7 +203,7 @@ var gModGrav = { }, } -var gModAcou = { +var gModOther = { activate: function() { //gSounds.scan.play(); },