switch main header when navigating through modules
[tricorder.git] / js / tricorder.js
index 2dc920767f39b9bb17974ff22fb99ed40ad6a91a..093f5171a79851e73569993fd587ad7b85ff8d81 100644 (file)
@@ -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,26 +91,39 @@ 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 = "...";
+          }
+          else {
+            document.getElementById("posunavail").style.display = "block";
+            document.getElementById("posavail").style.display = "none";
+          }
         },
         {enableHighAccuracy: true}
       );
@@ -143,6 +159,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 +172,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 +189,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 +201,7 @@ var gModGrav = {
   },
 }
 
-var gModAcou = {
+var gModOther = {
   activate: function() {
     //gSounds.scan.play();
   },