X-Git-Url: https://git-public.kairo.at/?p=lantea.git;a=blobdiff_plain;f=js%2Fui.js;h=8dc3f78407b926d7494fe90a744c6d7a3ead45be;hp=5e4869c5d2862128f7a1cbd12bd4985d69e5333e;hb=da6dad241e7e804939401cc0089b4cc1c1d11859;hpb=7a076538678eb75b90e066df5e2d51346067927d diff --git a/js/ui.js b/js/ui.js index 5e4869c..8dc3f78 100644 --- 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"); @@ -144,11 +151,6 @@ function showUI() { function maybeHideUI() { gUIHideCountdown--; - if (document.getElementById("trackArea").style.display == "block") { - // If track area is visible, update track data. - document.getElementById("trackLength").textContent = calcTrackLength().toFixed(1); - document.getElementById("trackDuration").textContent = Math.round(calcTrackDuration()/60); - } if (gUIHideCountdown <= 0) { var areas = document.getElementsByClassName('overlayArea'); for (var i = 0; i <= areas.length - 1; i++) { @@ -160,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"); } } @@ -354,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();