* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
-// Get the best-available indexedDB object.
+// Get the best-available objects for indexedDB and requestAnimationFrame.
window.indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;
-var mainDB;
+window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;
+var mainDB;
+var gAppInitDone = false;
var gUIHideCountdown = 0;
var gWaitCounter = 0;
+var gTrackUpdateInterval;
var gAction, gActionLabel;
var gOSMAPIURL = "http://api.openstreetmap.org/";
gAction.removeEventListener(aEvent.type, postInit, false);
console.log("init done, draw map.");
gMapPrefsLoaded = true;
- resizeAndDraw();
+ gAppInitDone = true;
+ //gMap.resizeAndDraw(); <-- HACK: This triggers bug 1001853, work around with a delay.
+ window.setTimeout(gMap.resizeAndDraw, 100);
gActionLabel.textContent = "";
gAction.style.display = "none";
setTracking(document.getElementById("trackCheckbox"));
}
window.onresize = function() {
- resizeAndDraw();
+ gMap.resizeAndDraw();
}
function initDB(aEvent) {
}
}
+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");
}
}