var gUIHideCountdown = 0;
var gWaitCounter = 0;
var gAction, gActionLabel;
-var gOSMAPIURL = "http://api06.dev.openstreetmap.org/"; // "http://api.openstreetmap.org/";
+var gOSMAPIURL = "http://api.openstreetmap.org/";
window.onload = function() {
gAction = document.getElementById("action");
document.getElementById("saveTrackButton").classList.add("debugHide");
}
+ // Without OAuth, the login data is useless
+ //document.getElementById("uploadSettingsArea").classList.remove("debugHide");
+ // As login data is useless for now, always enable upload button
+ document.getElementById("uploadTrackButton").disabled = false;
+
+ if (gDebug) {
+ // Note that GPX upload returns an error 500 on the dev API right now.
+ gOSMAPIURL = "http://api06.dev.openstreetmap.org/";
+ }
+
initDB();
initMap();
gActionLabel.textContent = "";
gAction.style.display = "none";
setTracking(document.getElementById("trackCheckbox"));
- gPrefs.get("osm_user", function(aValue) {
+ gPrefs.get(gDebug ? "osm_dev_user" : "osm_user", function(aValue) {
if (aValue) {
document.getElementById("uploadUser").value = aValue;
document.getElementById("uploadTrackButton").disabled = false;
}
});
- gPrefs.get("osm_pwd", function(aValue) {
+ gPrefs.get(gDebug ? "osm_dev_pwd" : "osm_pwd", function(aValue) {
var upwd = document.getElementById("uploadPwd");
if (aValue)
document.getElementById("uploadPwd").value = aValue;
}
}
+function showUploadDialog() {
+ var dia = document.getElementById("dialogArea");
+ var areas = dia.children;
+ for (var i = 0; i <= areas.length - 1; i++) {
+ areas[i].style.display = "none";
+ }
+ document.getElementById("uploadDialog").style.display = "block";
+ document.getElementById("uploadTrackButton").disabled = true;
+ dia.classList.remove("hidden");
+}
+
+function cancelDialog() {
+ document.getElementById("dialogArea").classList.add("hidden");
+ document.getElementById("uploadTrackButton").disabled = false;
+}
+
var uiEvHandler = {
handleEvent: function(aEvent) {
var touchEvent = aEvent.type.indexOf('touch') != -1;
function setUploadField(aField) {
switch (aField.id) {
case "uploadUser":
- gPrefs.set("osm_user", aField.value);
+ gPrefs.set(gDebug ? "osm_dev_user" : "osm_user", aField.value);
document.getElementById("uploadTrackButton").disabled = !aField.value.length;
break;
case "uploadPwd":
- gPrefs.set("osm_pwd", aField.value);
+ gPrefs.set(gDebug ? "osm_dev_pwd" : "osm_pwd", aField.value);
break;
}
}
}
function uploadTrack() {
+ var dia = document.getElementById("dialogArea");
+ var areas = dia.children;
+ for (var i = 0; i <= areas.length - 1; i++) {
+ areas[i].style.display = "none";
+ }
+ document.getElementById("uploadStatus").style.display = "block";
+
// See http://wiki.openstreetmap.org/wiki/Api06#Uploading_traces
- var trackBlob = new Blob([convertTrack("gpx")], { "type" : "application/gpx+xml" });
+ var trackBlob = new Blob([convertTrack("gpx")],
+ { "type" : "application/gpx+xml" });
var formData = new FormData();
formData.append("file", trackBlob);
- formData.append("description", "Track recorded via Lantea Maps");
+ var desc = document.getElementById("uploadDesc").value;
+ formData.append("description",
+ desc.length ? desc : "Track recorded via Lantea Maps");
//formData.append("tags", "");
- formData.append("visibility", "private");
+ formData.append("visibility",
+ document.getElementById("uploadVisibility").value);
var XHR = new XMLHttpRequest();
XHR.onreadystatechange = function() {
- if (XHR.readyState == 4) {/*
- gLog.appendChild(document.createElement("li"))
- .appendChild(document.createTextNode(aURL + " - " + XHR.status +
- " " + XHR.statusText));*/
- }
if (XHR.readyState == 4 && XHR.status == 200) {
// so far so good
reportUploadStatus(true);
reportUploadStatus(false);
}
};
- XHR.open("POST", gOSMAPIURL + "api/0.6/gpx/create", true,
- document.getElementById("uploadUser").value,
- document.getElementById("uploadPwd").value);
+ XHR.open("POST", gOSMAPIURL + "api/0.6/gpx/create", true);
+ // Cross-Origin XHR doesn't allow username/password (HTTP Auth).
+ // So, we'll ask the user for entering credentials with rather ugly UI.
+ XHR.withCredentials = true;
try {
XHR.send(formData);
}
}
function reportUploadStatus(aSuccess, aMessage) {
- alert(aMessage ? aMessage : (aSuccess ? "success" : "failure"));
+ document.getElementById("uploadStatusCloseButton").disabled = false;
+ document.getElementById("uploadInProgress").style.display = "none";
+ if (aSuccess) {
+ document.getElementById("uploadSuccess").style.display = "block";
+ }
+ else if (aMessage) {
+ document.getElementById("uploadErrorMsg").textContent = aMessage;
+ document.getElementById("uploadError").style.display = "block";
+ }
+ else {
+ document.getElementById("uploadFailed").style.display = "block";
+ }
}
var gPrefs = {