diff options
author | jsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68> | 2011-10-29 17:47:19 +0000 |
---|---|---|
committer | jsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68> | 2011-10-29 17:47:19 +0000 |
commit | d1146122184e153e1fac944eafe3535274859ca0 (patch) | |
tree | 368b450c8be8f42eeb13a071f6bce9fcc61ec91f | |
parent | 11adbc1719db790bd485f4f511b2740c151e5872 (diff) |
Better network connectivity status reporting and handling of orientation change events.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1194948 13f79535-47bb-0310-9956-ffa450edef68
17 files changed, 328 insertions, 102 deletions
diff --git a/sca-cpp/trunk/modules/edit/htdocs/account/index.html b/sca-cpp/trunk/modules/edit/htdocs/account/index.html index 7fef6c1d13..291f6dea1c 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/account/index.html +++ b/sca-cpp/trunk/modules/edit/htdocs/account/index.html @@ -22,7 +22,7 @@ <table style="width: 100%;"> <tr> <td><h2><span id="h1"></span><span id="userNameHeader"></span></h2></td> -<td style="vertical-align: middle; text-align: right;"><span id="saveStatus" style="font-weight: bold; color: #808080;">Saved</span></td> +<td style="vertical-align: middle; text-align: right;"><span id="status" style="font-weight: bold; color: #808080;"></span></td> </tr> </table> @@ -102,11 +102,16 @@ var savedaccountentryxml = ''; * Get and display the user's account. */ function getaccount(name) { + showStatus('Loading'); + return accounts.get(name, function(doc) { // Stop now if we didn't get an account - if (doc == null) + if (doc == null) { + showStatus('No data'); return false; + } + showStatus(defaultStatus()); accountentry = doc != null? car(elementsToValues(atom.readATOMEntry(mklist(doc)))) : mklist("'entry", mklist("'title", ''), mklist("'id", name)); username = cadr(assoc("'id", cdr(accountentry))); @@ -149,11 +154,16 @@ function getaccount(name) { function save(entryxml) { if (isNil(username)) return false; - $('saveStatus').innerHTML = 'Saving'; + showStatus('Saving'); savedaccountentryxml = entryxml; accounts.put(username, savedaccountentryxml, function(e) { - if (!e) - $('saveStatus').innerHTML = 'Saved'; + if (e) { + showStatus('Local copy'); + return false; + } + + showStatus('Saved'); + return true; }); return true; } @@ -181,7 +191,7 @@ function onaccountchange() { if (savedaccountentryxml == entryxml) return false; - $('saveStatus').innerHTML = 'Modified'; + showStatus('Modified'); return save(entryxml); } diff --git a/sca-cpp/trunk/modules/edit/htdocs/app/index.html b/sca-cpp/trunk/modules/edit/htdocs/app/index.html index 9309c7cebe..773d2adf90 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/app/index.html +++ b/sca-cpp/trunk/modules/edit/htdocs/app/index.html @@ -20,7 +20,7 @@ <html manifest="/cache-manifest.cmf"> <head> <title></title> -<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0"/> +<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"/> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="apple-mobile-web-app-status-bar-style" content="black"/> <link rel="apple-touch-icon" href="/public/touchicon.png"/> @@ -47,16 +47,16 @@ appcache.get = function(uri) { http.send(null); if (http.status == 200) { if (http.getResponseHeader("X-Login") != null) { - if (log) log('http err', u, 'X-Login'); + if (log) log('http error', u, 'X-Login'); return null; } else if (http.responseText == '' || http.getResponseHeader("Content-Type") == null) { - if (log) log('http err', u, 'No-Content'); + if (log) log('http error', u, 'No-Content'); return null; } localStorage.setItem(u, http.responseText); return http.responseText; } - if (log) log('http err', u, http.status, http.statusText); + if (log) log('http error', u, http.status, http.statusText); return null; }; @@ -561,7 +561,7 @@ function getpagedata() { // Get the component app data startcomp.get(location.search, function(doc, e) { if (isNil(doc)) { - log('exception on get(start, ' + location.search + ')', e); + log('error on get(start, ' + location.search + ')', e); return false; } @@ -572,7 +572,7 @@ function getpagedata() { // Get and eval the optional timer, animation and location watch setup scripts timercomp.get('setup', function(doc, e) { if (isNil(doc)) { - log('exception on get(timer, setup)', e); + log('error on get(timer, setup)', e); return false; } @@ -581,7 +581,7 @@ function getpagedata() { }); animationcomp.get('setup', function(doc, e) { if (isNil(doc)) { - log('exception on get(animation, setup)', e); + log('error on get(animation, setup)', e); return false; } @@ -590,7 +590,7 @@ function getpagedata() { }); locationcomp.get('setup', function(doc, e) { if (isNil(doc)) { - log('exception on get(location, setup)', e); + log('error on get(location, setup)', e); return false; } @@ -601,7 +601,7 @@ function getpagedata() { return true; } catch(e) { - log('exception in getpagedata()', e); + log('error in getpagedata()', e); return true; } } @@ -639,7 +639,7 @@ function buttonClickHandler(id) { var uri = compquery(); return sca.component(id).get(uri, function(doc, e) { if (isNil(doc)) { - log('exception on get(button, ' + uri + ')', e); + log('error on get(button, ' + uri + ')', e); return false; } @@ -647,7 +647,7 @@ function buttonClickHandler(id) { updatepage(docdata(doc)); }); } catch(e) { - log('exception in buttonClickHandler()', e); + log('error in buttonClickHandler()', e); return true; } } @@ -660,7 +660,7 @@ function intervalHandler() { var uri = compquery(); return timercomp.get(uri, function(doc, e) { if (isNil(doc)) { - log('exception on get(timer, ' + uri + ')', e); + log('error on get(timer, ' + uri + ')', e); return false; } @@ -668,7 +668,7 @@ function intervalHandler() { updatepage(docdata(doc)); }); } catch(e) { - log('exception in intervalHandler()', e); + log('error in intervalHandler()', e); return true; } } @@ -681,7 +681,7 @@ function setupIntervalHandler(msec) { try { return setInterval(intervalHandler, msec); } catch(e) { - log('exception in setupIntervalHandler()', e); + log('error in setupIntervalHandler()', e); return true; } } @@ -734,7 +734,7 @@ function animationHandler() { var uri = compquery(); return animationcomp.get(uri, function(doc, e) { if (isNil(doc)) { - log('exception on get(animation, ' + uri + ')', e); + log('error on get(animation, ' + uri + ')', e); return false; } @@ -750,7 +750,7 @@ function animationHandler() { return applyAnimation(); } catch(e) { - log('exception in animationHandler()', e); + log('error in animationHandler()', e); return true; } } @@ -764,7 +764,7 @@ function setupAnimationHandler(msec, loop) { try { return setInterval(animationHandler, msec); } catch(e) { - log('exception in setupAnimationHandler()', e); + log('error in setupAnimationHandler()', e); return true; } } @@ -781,7 +781,7 @@ function locationHandler(pos) { var uri = compquery(); return locationcomp.get(uri, function(doc, e) { if (isNil(doc)) { - log('exception on get(location, ' + uri + ')', e); + log('error on get(location, ' + uri + ')', e); return false; } @@ -814,7 +814,7 @@ function setupLocationHandler() { try { locationWatch = navigator.geolocation.watchPosition(locationHandler, locationErrorHandler); } catch(e) { - log('exception in installLocationHandler()', e); + log('error in installLocationHandler()', e); } return true; } @@ -826,9 +826,9 @@ function setupLocationHandler() { // Load the app page pagecomp.get('app.html', function(doc, e) { - log('page get'); + //log('page get'); if (isNil(doc)) { - log('exception getting app page', e); + log('error getting app page', e); return false; } @@ -840,6 +840,18 @@ pagecomp.get('app.html', function(doc, e) { }); /** + * Handle orientation change. + */ +document.body.onorientationchange = function(e) { + //log('onorientationchange'); + + // Scroll to the top and hide the address bar + window.scrollTo(0, 0); + + return true; +}; + +/** * Document load post processing. */ function onload() { diff --git a/sca-cpp/trunk/modules/edit/htdocs/clone/index.html b/sca-cpp/trunk/modules/edit/htdocs/clone/index.html index 38b4edefa8..dd041e591e 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/clone/index.html +++ b/sca-cpp/trunk/modules/edit/htdocs/clone/index.html @@ -22,6 +22,7 @@ <table style="width: 100%;"> <tr> <td><h2><span id="h1"></span><span id="appNameHeader"></span></h2></td> +<td style="vertical-align: middle; text-align: right;"><span id="status" style="font-weight: bold; color: #808080;"></span></td> </tr> </table> @@ -99,11 +100,16 @@ var savedappentryxml = ''; function getapp(name) { if (isNil(name)) return false; + showStatus('Loading'); + return apps.get(name, function(doc) { // Stop now if we didn't get the app - if (doc == null) + if (doc == null) { + showStatus('No data'); return false; + } + showStatus(defaultStatus()); appentry = doc != null? car(elementsToValues(atom.readATOMEntry(mklist(doc)))) : mklist("'entry", mklist("'title", ''), mklist("'id", name)); var title = cadr(assoc("'title", cdr(appentry))); @@ -121,14 +127,18 @@ $('cloneAppForm').onsubmit = function() { var name = $('appName').value; if (name == '') return false; + showStatus('Saving'); // Clone the app var title = $('appTitle').value; var app = mklist(mklist("'entry", mklist("'title", title != ''? title : name), mklist("'id", appname))); var entry = atom.writeATOMEntry(valuesToElements(app)); dashboards.put(name, car(entry), function(e) { - if (e) + if (e) { + showStatus('Local copy'); return false; + } + showStatus(defaultStatus()); // Open it in the page editor ui.navigate('/#view=page&app=' + name, '_view'); diff --git a/sca-cpp/trunk/modules/edit/htdocs/create/index.html b/sca-cpp/trunk/modules/edit/htdocs/create/index.html index 35c7733c38..c74c00950d 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/create/index.html +++ b/sca-cpp/trunk/modules/edit/htdocs/create/index.html @@ -20,7 +20,10 @@ <div id="bodydiv" class="bodydiv"> <table style="width: 100%;"> -<tr><td><h2><span id="h1"></span></h2></td></tr> +<tr> +<td><h2><span id="h1"></span></h2></td> +<td style="vertical-align: middle; text-align: right;"><span id="status" style="font-weight: bold; color: #808080;"></span></td> +</tr> </table> <table style="width: 100%;"> @@ -72,14 +75,18 @@ $('createAppForm').onsubmit = function() { var name = $('appName').value; if (name == '') return false; + showStatus('Saving'); // Clone the '.new' app template var title = $('appTitle').value; var app = mklist(mklist("'entry", mklist("'title", title != ''? title : name), mklist("'id", 'new'))); var entry = atom.writeATOMEntry(valuesToElements(app)); dashboards.put(name, car(entry), function(e) { - if (e) + if (e) { + showStatus('Local copy'); return false; + } + showStatus('Saved'); // Open it in the page editor ui.navigate('/#view=page&app=' + name, '_view'); @@ -95,6 +102,8 @@ $('createAppCancelButton').onclick = function() { history.back(); }; +showStatus(defaultStatus()); + </script> </div> diff --git a/sca-cpp/trunk/modules/edit/htdocs/graph/index.html b/sca-cpp/trunk/modules/edit/htdocs/graph/index.html index 3cc735971c..77fa1d4888 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/graph/index.html +++ b/sca-cpp/trunk/modules/edit/htdocs/graph/index.html @@ -22,7 +22,7 @@ <table style="width: 100%;"> <tr> <td><h2><span id="appNameHeader"></span></h2></td> -<td style="vertical-align: middle; text-align: right; padding-right: 8px;"><span id="saveStatus" style="font-weight: bold; color: #808080;">Saved</span></td> +<td style="vertical-align: middle; text-align: right; padding-right: 8px;"><span id="status" style="font-weight: bold; color: #808080;"></span></td> </tr> </table> @@ -1924,11 +1924,16 @@ function atomcomposite(doc) { function getapp(name, g) { if (isNil(name)) return false; + showStatus('Loading'); + return composites.get(name, function(doc) { // Stop now if we didn't get a composite - if (doc == null) + if (doc == null) { + showStatus('No data'); return false; + } + showStatus(defaultStatus()); composite = atomcomposite(doc); if (isNil(composite)) { @@ -2003,15 +2008,17 @@ function installpalette(name, pos, g, bg, palette, gpalettes) { * Save the current composite. */ function save(savexml) { - $('saveStatus').innerHTML = 'Saving'; + showStatus('Saving'); savedcomposxml = savexml; var entry = '<entry xmlns="http://www.w3.org/2005/Atom">' + '<title type="text">' + appname + '</title><id>' + appname + '</id><content type="application/xml">' + savedcomposxml + '</content></entry>'; composites.put(appname, entry, function(e) { - if (e) + if (e) { + showStatus('Local copy'); return false; - $('saveStatus').innerHTML = 'Saved'; + } + showStatus('Saved'); return false; }); return true; @@ -2024,17 +2031,17 @@ function oncomposchange(prop) { var newxml = car(writeXML(composite, false)); if (savedcomposxml == newxml) return false; - $('saveStatus').innerHTML = 'Modified'; + showStatus('Modified'); // Save property changes right away if (prop) return save(newxml); // Autosave other changes after 1 second - $('saveStatus').innerHTML = 'Modified'; + showStatus('Modified'); setTimeout(function() { if (savedcomposxml == newxml) { - $('saveStatus').innerHTML = 'Saved'; + showStatus('Saved'); return false; } return save(newxml); diff --git a/sca-cpp/trunk/modules/edit/htdocs/home/index.html b/sca-cpp/trunk/modules/edit/htdocs/home/index.html index 686bc67d4a..6fb9b558bf 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/home/index.html +++ b/sca-cpp/trunk/modules/edit/htdocs/home/index.html @@ -20,7 +20,10 @@ <div id="bodydiv" class="bodydiv"> <table style="width: 100%;"> -<tr><td><h2><span id="h1"></span></h2></td></tr> +<tr> +<td><h2><span id="h1"></span></h2></td> +<td style="vertical-align: middle; text-align: right;"><span id="status" style="font-weight: bold; color: #808080;"></span></td> +</tr> </table> <div style="margin-left: auto; margin-right: auto; text-align: center;"> @@ -58,6 +61,8 @@ setInterval(function() { diagram.style.backgroundPosition = '0px ' + ui.pixpos(bgpos); }, 2000); +showStatus(defaultStatus()); + </script> </div> diff --git a/sca-cpp/trunk/modules/edit/htdocs/index.html b/sca-cpp/trunk/modules/edit/htdocs/index.html index 869ae30628..547c11652a 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/index.html +++ b/sca-cpp/trunk/modules/edit/htdocs/index.html @@ -20,7 +20,7 @@ <html manifest="/cache-manifest.cmf"> <head> <title></title> -<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0"/> +<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"/> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="apple-mobile-web-app-status-bar-style" content="black"/> <link rel="apple-touch-icon" href="/public/touchicon.png"/> @@ -47,16 +47,16 @@ appcache.get = function(uri) { http.send(null); if (http.status == 200) { if (http.getResponseHeader("X-Login") != null) { - if (log) log('http err', u, 'X-Login'); + if (log) log('http error', u, 'X-Login'); return null; } else if (http.responseText == '' || http.getResponseHeader("Content-Type") == null) { - if (log) log('http err', u, 'No-Content'); + if (log) log('http error', u, 'No-Content'); return null; } localStorage.setItem(u, http.responseText); return http.responseText; } - if (log) log('http err', u, http.status, http.statusText); + if (log) log('http error', u, http.status, http.statusText); return null; }; @@ -137,39 +137,49 @@ var appresources = [ */ applicationCache.addEventListener('checking', function(e) { //log('appcache checking', e); + showStatus('Checking'); }, false); applicationCache.addEventListener('error', function(e) { //log('appcache error', e); + showStatus(defaultStatus()); }, false); applicationCache.addEventListener('noupdate', function(e) { //log('appcache noupdate', e); + showStatus(defaultStatus()); }, false); applicationCache.addEventListener('downloading', function(e) { //log('appcache downloading', e); + showStatus('Updating'); }, false); applicationCache.addEventListener('progress', function(e) { //log('appcache progress', e); + showStatus('Updating'); }, false); applicationCache.addEventListener('updateready', function(e) { //log('appcache updateready', e); applicationCache.swapCache(); + showStatus(defaultStatus()); //log('appcache swapped', e); }, false); applicationCache.addEventListener('cached', function(e) { //log('appcache cached', e); map(function(res) { + showStatus('Updating'); appcache.get(res[0]); }, appresources); + showStatus(defaultStatus()); }, false); /** * Handle network offline/online events. */ window.addEventListener('offline', function(e) { - //log('going offline'); + //log('going offline'); + showStatus('Offline'); }, false); window.addEventListener('online', function(e) { - //log('going online'); + //log('going online'); + showStatus('Online'); }, false); //log(navigator.onLine? 'online' : 'offline'); @@ -224,10 +234,7 @@ function mkviewdiv(cname) { * Return the last visited location. */ function lastvisited() { - var loc = localStorage.getItem('ui.lastvisited') - if (!isNil(loc)) - return loc; - return '' + location; + return localStorage.getItem('ui.lastvisited') } /** @@ -246,6 +253,24 @@ function showmenu(mdiv, view, appname) { } /** + * Show a status message. + */ +function showStatus(s) { + var sdiv = $('status'); + if (isNil(sdiv)) + return s; + sdiv.innerHTML = s; + return s; +} + +/** + * Return the default status message. + */ +function defaultStatus() { + return navigator.onLine? 'Online' : 'Offline'; +} + +/** * Show a view. */ function showview(url) { @@ -352,21 +377,33 @@ function showview(url) { } /** - * Handle navigations. + * Update the browser window location. */ -window.onnavigate = function(url) { - //log('onnavigate', url); +function updatelocation(url) { + //log('updatelocation', url); - // Add url to the history + // Add url to the history if necessary if (url != ui.pathandparams(location)) { history.pushState(null, null, url); + //log('pushstate', history.length); + + // Update the location hash if necessary var f = ui.fragment(url); if (f != '' && f != location.hash) { location.hash = f; //log('hash', f); } - //log('pushstate', history.length); } + return url; +} + +/** + * Handle navigations. + */ +window.onnavigate = function(url) { + //log('onnavigate', url); + + updatelocation(url); // Show the specified view if (url == viewurl) @@ -378,7 +415,7 @@ window.onnavigate = function(url) { * Handle history. */ window.addEventListener('popstate', function(e) { - //log('popstate', history.length); + //log('onpopstate', history.length); var furl = ui.fragment(location); var url = location.pathname + (furl == ''? '' : '#' + furl); @@ -402,26 +439,50 @@ window.addEventListener('hashchange', function(e) { }, false); /** + * Handle orientation change. + */ +document.body.onorientationchange = function(e) { + //log('onorientationchange'); + + // Scroll to the top and hide the address bar + window.scrollTo(0, 0); + + return true; +}; + +/** * Document load post processing. */ function onload() { //log('onload', history.length); var furl = ui.fragment(location); - url = location.pathname + (furl == ''? '' : '#' + furl); - // Show the current view + // Show the view specified in the given url fragment + if (furl != '') { + var url = location.pathname + '#' + furl; + if (url == viewurl) + return true; + return showview(url); + } + + // Show the last visited view + if (ui.isMobile() && (document.referrer == null || document.referrer == '')) { + //log('show lastvisited'); + var lv = lastvisited(); + var url = isNil(lv)? location.pathname : lv; + updatelocation(url); + if (url == viewurl) + return true; + return showview(url); + } + + // Show the main home view + var url = location.pathname; if (url == viewurl) return true; return showview(url); } -// Show the last visited view -//if (ui.isMobile() && (document.referrer == null || document.referrer == '')) { - //log('show lastvisited'); - //showview(lastvisited()); -//} else - //showview('/'); - </script> <div id="footdiv" class="fsection"> diff --git a/sca-cpp/trunk/modules/edit/htdocs/login/index.html b/sca-cpp/trunk/modules/edit/htdocs/login/index.html index 2968e9ee2e..76709af15e 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/login/index.html +++ b/sca-cpp/trunk/modules/edit/htdocs/login/index.html @@ -20,7 +20,7 @@ <html> <head> <title>Sign in</title> -<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0"/> +<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"/> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="apple-mobile-web-app-status-bar-style" content="black"/> <base href="/login/"/> @@ -75,12 +75,28 @@ function submitSignin() { document.formSignin.submit(); } +/** + * Handle orientation change. + */ +document.body.onorientationchange = function(e) { + //log('onorientationchange'); + + // Scroll to the top and hide the address bar + window.scrollTo(0, 0); + + return true; +}; + +/** + * Document load post processing. + */ function onload() { + //log('onload'); + // Show the page document.body.style.visibility = 'visible'; // Scroll to the top and hide the address bar - window.scrollTo(0, 1); window.scrollTo(0, 0); return true; } diff --git a/sca-cpp/trunk/modules/edit/htdocs/logout/index.html b/sca-cpp/trunk/modules/edit/htdocs/logout/index.html index bce50815a7..f5dd06ee99 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/logout/index.html +++ b/sca-cpp/trunk/modules/edit/htdocs/logout/index.html @@ -20,7 +20,7 @@ <html> <head> <title>Sign out</title> -<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0"/> +<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"/> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="apple-mobile-web-app-status-bar-style" content="black"/> <base href="/logout/"/> @@ -46,12 +46,28 @@ function submitSignout() { return true; } +/** + * Handle orientation change. + */ +document.body.onorientationchange = function(e) { + //log('onorientationchange'); + + // Scroll to the top and hide the address bar + window.scrollTo(0, 0); + + return true; +}; + +/** + * Document load post processing. + */ function onload() { + //log('onload'); + // Show the page document.body.style.visibility = 'visible'; // Scroll to the top and hide the address bar - window.scrollTo(0, 1); window.scrollTo(0, 0); return true; } diff --git a/sca-cpp/trunk/modules/edit/htdocs/notauth/index.html b/sca-cpp/trunk/modules/edit/htdocs/notauth/index.html index 4827238435..4665e9f571 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/notauth/index.html +++ b/sca-cpp/trunk/modules/edit/htdocs/notauth/index.html @@ -20,7 +20,7 @@ <html> <head> <title>Sorry</title> -<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, target-densitydpi=devicedpi"/> +<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"/> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="apple-mobile-web-app-status-bar-style" content="black"/> <base href="/notauth/"/> @@ -46,16 +46,16 @@ appcache.get = function(uri) { http.send(null); if (http.status == 200) { if (http.getResponseHeader("X-Login") != null) { - if (log) log('http err', u, 'X-Login'); + if (log) log('http error', u, 'X-Login'); return null; } else if (http.responseText == '' || http.getResponseHeader("Content-Type") == null) { - if (log) log('http err', u, 'No-Content'); + if (log) log('http error', u, 'No-Content'); return null; } localStorage.setItem(u, http.responseText); return http.responseText; } - if (log) log('http err', u, http.status, http.statusText); + if (log) log('http error', u, http.status, http.statusText); return null; }; @@ -117,9 +117,23 @@ showmenu($('menu')); cdiv.style.top = ui.pixpos(mdiv.offsetTop + mdiv.offsetHeight); /** + * Handle orientation change. + */ +document.body.onorientationchange = function(e) { + //log('onorientationchange'); + + // Scroll to the top and hide the address bar + window.scrollTo(0, 0); + + return true; +}; + +/** * Load post processing. */ function onload() { + //log('onload'); + // Show the page document.body.style.visibility = 'visible'; diff --git a/sca-cpp/trunk/modules/edit/htdocs/notfound/index.html b/sca-cpp/trunk/modules/edit/htdocs/notfound/index.html index 743ae59a84..8601fbfea6 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/notfound/index.html +++ b/sca-cpp/trunk/modules/edit/htdocs/notfound/index.html @@ -20,7 +20,7 @@ <html> <head> <title>Page not found</title> -<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, target-densitydpi=devicedpi"/> +<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"/> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="apple-mobile-web-app-status-bar-style" content="black"/> <base href="/notfound/"/> @@ -46,16 +46,16 @@ appcache.get = function(uri) { http.send(null); if (http.status == 200) { if (http.getResponseHeader("X-Login") != null) { - if (log) log('http err', u, 'X-Login'); + if (log) log('http error', u, 'X-Login'); return null; } else if (http.responseText == '' || http.getResponseHeader("Content-Type") == null) { - if (log) log('http err', u, 'No-Content'); + if (log) log('http error', u, 'No-Content'); return null; } localStorage.setItem(u, http.responseText); return http.responseText; } - if (log) log('http err', u, http.status, http.statusText); + if (log) log('http error', u, http.status, http.statusText); return null; }; @@ -118,9 +118,23 @@ showmenu(mdiv); div.style.top = ui.pixpos(mdiv.offsetTop + mdiv.offsetHeight); /** + * Handle orientation change. + */ +document.body.onorientationchange = function(e) { + //log('onorientationchange'); + + // Scroll to the top and hide the address bar + window.scrollTo(0, 0); + + return true; +}; + +/** * Load post processing. */ function onload() { + //log('onload'); + // Show the page document.body.style.visibility = 'visible'; diff --git a/sca-cpp/trunk/modules/edit/htdocs/notyet/index.html b/sca-cpp/trunk/modules/edit/htdocs/notyet/index.html index fba173f0d2..60c774d8ea 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/notyet/index.html +++ b/sca-cpp/trunk/modules/edit/htdocs/notyet/index.html @@ -20,7 +20,7 @@ <html> <head> <title>Page not found</title> -<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, target-densitydpi=devicedpi"/> +<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"/> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="apple-mobile-web-app-status-bar-style" content="black"/> <base href="/notyet/"/> @@ -46,16 +46,16 @@ appcache.get = function(uri) { http.send(null); if (http.status == 200) { if (http.getResponseHeader("X-Login") != null) { - if (log) log('http err', u, 'X-Login'); + if (log) log('http error', u, 'X-Login'); return null; } else if (http.responseText == '' || http.getResponseHeader("Content-Type") == null) { - if (log) log('http err', u, 'No-Content'); + if (log) log('http error', u, 'No-Content'); return null; } localStorage.setItem(u, http.responseText); return http.responseText; } - if (log) log('http err', u, http.status, http.statusText); + if (log) log('http error', u, http.status, http.statusText); return null; }; @@ -118,9 +118,23 @@ showmenu($('menu')); cdiv.style.top = ui.pixpos(mdiv.offsetTop + mdiv.offsetHeight); /** + * Handle orientation change. + */ +document.body.onorientationchange = function(e) { + //log('onorientationchange'); + + // Scroll to the top and hide the address bar + window.scrollTo(0, 0); + + return true; +}; + +/** * Load post processing. */ function onload() { + //log('onload'); + // Show the page document.body.style.visibility = 'visible'; diff --git a/sca-cpp/trunk/modules/edit/htdocs/oops/index.html b/sca-cpp/trunk/modules/edit/htdocs/oops/index.html index 1e9ea06687..67408d8d62 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/oops/index.html +++ b/sca-cpp/trunk/modules/edit/htdocs/oops/index.html @@ -20,7 +20,7 @@ <html> <head> <title>Oops</title> -<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, target-densitydpi=devicedpi"/> +<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0/> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="apple-mobile-web-app-status-bar-style" content="black"/> <base href="/oops/"/> @@ -46,16 +46,16 @@ appcache.get = function(uri) { http.send(null); if (http.status == 200) { if (http.getResponseHeader("X-Login") != null) { - if (log) log('http err', u, 'X-Login'); + if (log) log('http error', u, 'X-Login'); return null; } else if (http.responseText == '' || http.getResponseHeader("Content-Type") == null) { - if (log) log('http err', u, 'No-Content'); + if (log) log('http error', u, 'No-Content'); return null; } localStorage.setItem(u, http.responseText); return http.responseText; } - if (log) log('http err', u, http.status, http.statusText); + if (log) log('http error', u, http.status, http.statusText); return null; }; @@ -117,9 +117,23 @@ showmenu($('menu')); cdiv.style.top = ui.pixpos(mdiv.offsetTop + mdiv.offsetHeight); /** + * Handle orientation change. + */ +document.body.onorientationchange = function(e) { + //log('onorientationchange'); + + // Scroll to the top and hide the address bar + window.scrollTo(0, 0); + + return true; +}; + +/** * Load post processing. */ function onload() { + //log('onload'); + // Show the page document.body.style.visibility = 'visible'; diff --git a/sca-cpp/trunk/modules/edit/htdocs/page/index.html b/sca-cpp/trunk/modules/edit/htdocs/page/index.html index 1b4c455ff7..7df8a1a1d9 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/page/index.html +++ b/sca-cpp/trunk/modules/edit/htdocs/page/index.html @@ -22,7 +22,7 @@ <table style="width: 100%;"> <tr> <td><h2><span id="appNameHeader"></span></h2></td> -<td style="vertical-align: middle; text-align: right; padding-right: 8px;"><span id="saveStatus" style="font-weight: bold; color: #808080;">Saved</span></td> +<td style="vertical-align: middle; text-align: right; padding-right: 8px;"><span id="status" style="font-weight: bold; color: #808080;"></span></td> </tr> </table> @@ -744,11 +744,16 @@ var widget = null; function getpage(name, ediv) { if (isNil(name)) return false; + showStatus('Loading'); + return pages.get(name, function(doc) { // Stop now if we didn't get a page - if (doc == null) + if (doc == null) { + showStatus('No data'); return false; + } + showStatus(defaultStatus()); // Convert the page to XHTML and place it in a hidden buffer var buffer = $('buffer'); @@ -861,7 +866,7 @@ function pagexhtml(ediv) { * Save the current page. */ function save(newxml) { - $('saveStatus').innerHTML = 'Saving'; + showStatus('Saving'); // Get the current page XHTML content savedpagexhtml = newxml; @@ -872,9 +877,11 @@ function save(newxml) { newxml + '</content></entry>'; pages.put(appname, entry, function(e) { - if (e) + if (e) { + showStatus('Local copy'); return false; - $('saveStatus').innerHTML = 'Saved'; + } + showStatus('Saved'); return false; }); return true; @@ -887,7 +894,7 @@ function onpagechange(prop) { var newxml = pagexhtml(ediv); if (savedpagexhtml == newxml) return false; - $('saveStatus').innerHTML = 'Modified'; + showStatus('Modified'); // Save property changes right away if (prop) @@ -896,7 +903,7 @@ function onpagechange(prop) { // Autosave other changes after 1 second setTimeout(function() { if (savedpagexhtml == newxml) { - $('saveStatus').innerHTML = 'Saved'; + showStatus('Saved'); return false; } return save(newxml); diff --git a/sca-cpp/trunk/modules/edit/htdocs/stats/index.html b/sca-cpp/trunk/modules/edit/htdocs/stats/index.html index 9fa463e822..f049bea8a5 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/stats/index.html +++ b/sca-cpp/trunk/modules/edit/htdocs/stats/index.html @@ -22,7 +22,7 @@ <table style="width: 100%;"> <tr> <td><h2><span id="h1"></span><span id="appNameHeader"></span></h2></td> -<td style="vertical-align: middle; text-align: right;"><span id="saveStatus" style="font-weight: bold; color: #808080;">Saved</span></td> +<td style="vertical-align: middle; text-align: right;"><span id="status" style="font-weight: bold; color: #808080;"></span></td> </tr> </table> @@ -96,11 +96,16 @@ var savedappentryxml = ''; function getapp(name) { if (isNil(name)) return false; + showStatus('Loading'); + return apps.get(name, function(doc) { // Stop now if we didn't get the app - if (doc == null) + if (doc == null) { + showStatus('No data'); return false; + } + showStatus(defaultStatus()); appentry = doc != null? car(elementsToValues(atom.readATOMEntry(mklist(doc)))) : mklist("'entry", mklist("'title", ''), mklist("'id", name)); var title = cadr(assoc("'title", cdr(appentry))); @@ -116,12 +121,15 @@ function getapp(name) { * Save the current app. */ function save(entryxml) { - $('saveStatus').innerHTML = 'Saving'; + showStatus('Saving'); savedappentryxml = entryxml; dashboards.put(appname, savedappentryxml, function(e) { - if (e) + if (e) { + showStatus('Local copy'); return false; - $('saveStatus').innerHTML = 'Saved'; + } + + showStatus('Saved'); return false; }); return true; @@ -136,7 +144,7 @@ function onappchange() { var entryxml = car(atom.writeATOMEntry(valuesToElements(mklist(appentry)))); if (savedappentryxml == entryxml) return false; - $('saveStatus').innerHTML = 'Modified'; + showStatus('Modified'); return save(entryxml); } diff --git a/sca-cpp/trunk/modules/edit/htdocs/store/index.html b/sca-cpp/trunk/modules/edit/htdocs/store/index.html index 1a04b406ac..e82d675f22 100644 --- a/sca-cpp/trunk/modules/edit/htdocs/store/index.html +++ b/sca-cpp/trunk/modules/edit/htdocs/store/index.html @@ -20,7 +20,10 @@ <div id="bodydiv" class="bodydiv"> <table style="width: 100%;"> -<tr><td><h2><span id="h1"></span></h2></td></tr> +<tr> +<td><h2><span id="h1"></span></h2></td> +<td style="vertical-align: middle; text-align: right;"><span id="status" style="font-weight: bold; color: #808080;"></span></td> +</tr> </table> <div id="catmenu"></div> @@ -115,11 +118,16 @@ if (category == 'myapps') { */ function getapps(category) { //log('category', category); + showStatus('Loading'); + function display(doc) { // Stop now if we didn't get the apps - if (doc == null) + if (doc == null) { + showStatus('No data'); return false; + } + showStatus(defaultStatus()); var apps = '<div>'; var feed = car(elementsToValues(atom.readATOMFeed(mklist(doc)))); diff --git a/sca-cpp/trunk/modules/js/htdocs/ui.css b/sca-cpp/trunk/modules/js/htdocs/ui.css index 42d89b8087..364e47774a 100644 --- a/sca-cpp/trunk/modules/js/htdocs/ui.css +++ b/sca-cpp/trunk/modules/js/htdocs/ui.css @@ -180,13 +180,14 @@ overflow: hidden; } .hsection { -width: 100%; height: 50px; +width: 100%; height: 0px; visibility: hidden; border-top: 0px; border-bottom: 0px; border-left: 0px; border-right: 0px; border-style: solid; border-bottom-color: #000000; background-color: #ffffff; padding: 0px; margin-bottom: 0px; margin-left: auto; margin-right: auto; text-align: center; } .fsection{ -width: 100%; height: 50px; border-top: 0px; border-bottom: 0px; border-left: 0px; border-right: 0px; border-style: solid; border-top-color: #a2bae7; +width: 100%; height: 0px; visibility: hidden; +border-top: 0px; border-bottom: 0px; border-left: 0px; border-right: 0px; border-style: solid; border-top-color: #a2bae7; padding: 0px; margin-top: 0px; margin-left: auto; margin-right: auto; text-align: center; } |