prepare for OAuth support but don't enable it as actually GPS trace creation doesn...
[lantea.git] / js / ui.js
index 0e0650f1e44b095848a6b2ac2d2369dff4c1ecf6..8dc3f78407b926d7494fe90a744c6d7a3ead45be 100644 (file)
--- a/js/ui.js
+++ b/js/ui.js
@@ -10,8 +10,15 @@ var mainDB;
 var gAppInitDone = false;
 var gUIHideCountdown = 0;
 var gWaitCounter = 0;
+var gTrackUpdateInterval;
 var gAction, gActionLabel;
-var gOSMAPIURL = "http://api.openstreetmap.org/";
+var gOSMAPIURL = "https://api.openstreetmap.org/";
+var gOSMOAuthData = {
+    oauth_consumer_key: "6jjWwlbhGqyYeCdlFE1lTGG6IRGOv1yKpFxkcq2z",
+    oauth_secret: "A21gUeDM6mdoQgbA9uF7zJ13sbUQrNG7QQ4oSrKA",
+    url: "https://www.openstreetmap.org",
+    landing: "auth-done.html",
+}
 
 window.onload = function() {
   gAction = document.getElementById("action");
@@ -155,25 +162,37 @@ function maybeHideUI() {
   }
 }
 
+function updateTrackInfo() {
+  document.getElementById("trackLengthNum").textContent = calcTrackLength().toFixed(1);
+  var duration = calcTrackDuration();
+  var durationM = Math.round(duration/60);
+  var durationH = Math.floor(durationM/60); durationM = durationM - durationH * 60;
+  document.getElementById("trackDurationH").style.display = durationH ? "inline" : "none";
+  document.getElementById("trackDurationHNum").textContent = durationH;
+  document.getElementById("trackDurationMNum").textContent = durationM;
+}
+
 function toggleTrackArea() {
   var fs = document.getElementById("trackArea");
-  if (fs.style.display != "block") {
-    fs.style.display = "block";
+  if (fs.classList.contains("hidden")) {
+    fs.classList.remove("hidden");
     showUI();
+    gTrackUpdateInterval = setInterval(updateTrackInfo, 1000);
   }
   else {
-    fs.style.display = "none";
+    clearInterval(gTrackUpdateInterval);
+    fs.classList.add("hidden");
   }
 }
 
 function toggleSettings() {
   var fs = document.getElementById("settingsArea");
-  if (fs.style.display != "block") {
-    fs.style.display = "block";
+  if (fs.classList.contains("hidden")) {
+    fs.classList.remove("hidden");
     showUI();
   }
   else {
-    fs.style.display = "none";
+    fs.classList.add("hidden");
   }
 }
 
@@ -349,6 +368,51 @@ function uploadTrack() {
   //formData.append("tags", "");
   formData.append("visibility",
                   document.getElementById("uploadVisibility").value);
+
+/* GPS trace upload API still only supports HTTP Basic Auth. This below would be OAuth code to try.
+  // Init OSM Auth, see https://github.com/osmlab/osm-auth
+  var auth = osmAuth({
+    oauth_consumer_key: gOSMOAuthData.oauth_consumer_key,
+    oauth_secret: gOSMOAuthData.oauth_secret,
+    url: gOSMOAuthData.url,
+    landing: gOSMOAuthData.landing,
+    auto: true // show a login form if the user is not authenticated and
+               // you try to do a call
+  });
+
+  // Do an authenticate request first, so that we actuall do the login.
+  if (!auth.authenticated) {
+    auth.authenticate(function(err, xhrresponse) {
+      if (err) {
+        reportUploadStatus(false);
+      }
+      else {
+        reportUploadStatus(true);
+      }
+    });
+  }
+  if (!auth.authenticated) {
+    reportUploadStatus(false);
+    return;
+  }
+  // Only now do the actual upload.
+  auth.xhr({
+      method: "POST",
+      path: "/api/0.6/gpx/create",
+      content: formData,
+      options: {"header": {"Content-Type": "multipart/form-data"}},
+    },
+    function(err, xhrresponse) {
+      if (err) {
+        reportUploadStatus(false);
+      }
+      else {
+        reportUploadStatus(true);
+      }
+    }
+  );
+*/
+
   // Do an empty POST request first, so that we don't send everything,
   // then ask for credentials, and then send again.
   var hXHR = new XMLHttpRequest();