X-Git-Url: https://git-public.kairo.at/?p=lantea.git;a=blobdiff_plain;f=js%2Fui.js;h=bc3303d8474674363375f89e8f02060c1c823a0e;hp=7fb08b15f66ccdb0fed2fd1fc7836bb4a994b36b;hb=915d4271fbab6e608b5982286629c653a840ca93;hpb=b91b74a7197c240afe06841cf1b9dc492f1d2351 diff --git a/js/ui.js b/js/ui.js index 7fb08b1..bc3303d 100644 --- a/js/ui.js +++ b/js/ui.js @@ -3,10 +3,11 @@ * 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; window.onload = function() { var mSel = document.getElementById("mapSelector"); @@ -31,7 +32,7 @@ window.onload = function() { areas[i].addEventListener("touchleave", uiEvHandler, false); } - if (/Mozilla\/5.0 \(Mobile;/.test(navigator.useragent)) { + if (navigator.platform.length == "") { // For Firefox OS, don't display the "save" button. // Do this by setting the debugHide class for testing in debug mode. document.getElementById("saveTrackButton").classList.add("debugHide"); @@ -39,7 +40,24 @@ 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(); + setTracking(document.getElementById("trackCheckbox")); + } + else + setTimeout(waitForInitAndDraw, 100); + loopCnt++; + }; + waitForInitAndDraw(); } window.onresize = function() { @@ -48,24 +66,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;