switch to the DOM3 standard wheel event
[lantea.git] / js / ui.js
index 9c97cd600891127443be8b07c66d8b686113cd42..2ff241f7a231aaf27b8b010dd3870a1ab620d77e 100644 (file)
--- a/js/ui.js
+++ b/js/ui.js
@@ -3,12 +3,17 @@
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 // Get the best-available indexedDB object.
-var iDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;
+window.indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;
 var mainDB;
 
 var gUIHideCountdown = 0;
+var gWaitCounter = 0;
+var gAction, gActionLabel;
 
 window.onload = function() {
+  gAction = document.getElementById("action");
+  gActionLabel = document.getElementById("actionlabel");
+
   var mSel = document.getElementById("mapSelector");
   for (var mapStyle in gMapStyles) {
     var opt = document.createElement("option");
@@ -39,7 +44,26 @@ window.onload = function() {
 
   initDB();
   initMap();
-  resizeAndDraw();
+
+  var loopCnt = 0;
+  var waitForInitAndDraw = function() {
+    if ((gWaitCounter <= 0) || (loopCnt > 100)) {
+      if (gWaitCounter <= 0)
+        gWaitCounter = 0;
+      else
+        console.log("Loading failed (waiting for init).");
+
+      gMapPrefsLoaded = true;
+      resizeAndDraw();
+      gActionLabel.textContent = "";
+      gAction.style.display = "none";
+      setTracking(document.getElementById("trackCheckbox"));
+    }
+    else
+      setTimeout(waitForInitAndDraw, 100);
+    loopCnt++;
+  };
+  waitForInitAndDraw();
 }
 
 window.onresize = function() {
@@ -48,24 +72,33 @@ window.onresize = function() {
 
 function initDB() {
   // Open DB.
-  var request = iDB.open("MainDB", 1);
+  var request = window.indexedDB.open("MainDB", 2);
   request.onerror = function(event) {
     // Errors can be handled here. Error codes explain in:
     // https://developer.mozilla.org/en/IndexedDB/IDBDatabaseException#Constants
-    //document.getElementById("debug").textContent =
-    //  "error opening mainDB: " + event.target.errorCode;
+    if (gDebug)
+      console.log("error opening mainDB: " + event.target.errorCode);
   };
   request.onsuccess = function(event) {
-    //document.getElementById("debug").textContent = "mainDB opened.";
     mainDB = request.result;
   };
   request.onupgradeneeded = function(event) {
     mainDB = request.result;
-    //document.getElementById("debug").textContent = "mainDB upgraded.";
-    // Create a "prefs" objectStore.
-    var prefsStore = mainDB.createObjectStore("prefs");
-    // Create a "track" objectStore.
-    var trackStore = mainDB.createObjectStore("track", {autoIncrement: true});
+    var ver = mainDB.version || 0; // version is empty string for a new DB
+    if (gDebug)
+      console.log("mainDB has version " + ver + ", upgrade needed.");
+    if (!mainDB.objectStoreNames.contains("prefs")) {
+      // Create a "prefs" objectStore.
+      var prefsStore = mainDB.createObjectStore("prefs");
+    }
+    if (!mainDB.objectStoreNames.contains("track")) {
+      // Create a "track" objectStore.
+      var trackStore = mainDB.createObjectStore("track", {autoIncrement: true});
+    }
+    if (!mainDB.objectStoreNames.contains("tilecache")) {
+      // Create a "tilecache" objectStore.
+      var tilecacheStore = mainDB.createObjectStore("tilecache");
+    }
     mainDB.onversionchange = function(event) {
       mainDB.close();
       mainDB = undefined;