From d1146122184e153e1fac944eafe3535274859ca0 Mon Sep 17 00:00:00 2001 From: jsdelfino Date: Sat, 29 Oct 2011 17:47:19 +0000 Subject: 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 --- .../trunk/modules/edit/htdocs/account/index.html | 22 ++-- sca-cpp/trunk/modules/edit/htdocs/app/index.html | 54 ++++++---- sca-cpp/trunk/modules/edit/htdocs/clone/index.html | 14 ++- .../trunk/modules/edit/htdocs/create/index.html | 13 ++- sca-cpp/trunk/modules/edit/htdocs/graph/index.html | 23 +++-- sca-cpp/trunk/modules/edit/htdocs/home/index.html | 7 +- sca-cpp/trunk/modules/edit/htdocs/index.html | 111 ++++++++++++++++----- sca-cpp/trunk/modules/edit/htdocs/login/index.html | 20 +++- .../trunk/modules/edit/htdocs/logout/index.html | 20 +++- .../trunk/modules/edit/htdocs/notauth/index.html | 22 +++- .../trunk/modules/edit/htdocs/notfound/index.html | 22 +++- .../trunk/modules/edit/htdocs/notyet/index.html | 22 +++- sca-cpp/trunk/modules/edit/htdocs/oops/index.html | 22 +++- sca-cpp/trunk/modules/edit/htdocs/page/index.html | 21 ++-- sca-cpp/trunk/modules/edit/htdocs/stats/index.html | 20 ++-- sca-cpp/trunk/modules/edit/htdocs/store/index.html | 12 ++- sca-cpp/trunk/modules/js/htdocs/ui.css | 5 +- 17 files changed, 328 insertions(+), 102 deletions(-) (limited to 'sca-cpp') 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 @@ - +

Saved
@@ -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 @@ - + @@ -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; } @@ -839,6 +839,18 @@ pagecomp.get('app.html', function(doc, e) { getpagedata(); }); +/** + * 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. */ 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 @@ +

@@ -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 @@
- + + + +

@@ -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()); + 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 @@
- +

Saved
@@ -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 = '' + '' + appname + '' + appname + '' + savedcomposxml + ''; 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 @@
- + + + +

@@ -58,6 +61,8 @@ setInterval(function() { diagram.style.backgroundPosition = '0px ' + ui.pixpos(bgpos); }, 2000); +showStatus(defaultStatus()); +
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 @@ - + @@ -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') } /** @@ -245,6 +252,24 @@ function showmenu(mdiv, view, appname) { mklist(ui.menu('Account', '/#view=account', '_view', view == 'account'), ui.menu('Sign out', '/logout/', '_self', false))); } +/** + * 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. */ @@ -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); @@ -401,27 +438,51 @@ 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('/'); -
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 @@ Sign in - + @@ -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 @@ Sign out - + @@ -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 @@ Sorry - + @@ -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; }; @@ -116,10 +116,24 @@ function showmenu(mdiv) { 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 @@ Page not found - + @@ -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,10 +117,24 @@ function showmenu(mdiv) { 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 @@ Page not found - + @@ -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,10 +117,24 @@ function showmenu(mdiv) { 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 @@ 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; }; @@ -116,10 +116,24 @@ function showmenu(mdiv) { 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 @@ - +

Saved
@@ -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 + ''; 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 @@ - +

Saved
@@ -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 @@
- + + + +

@@ -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 = '
'; 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; } -- cgit v1.2.3