Pull to refresh comptible on more devices + Navigation render on update
This commit is contained in:
parent
555cc00e4b
commit
110f2bfb02
|
@ -146,7 +146,7 @@ var app = {
|
|||
},
|
||||
|
||||
checkForUpdate: function(resolve, reject) {
|
||||
app.utils.setLoadingMsg("Verification des mises à jour");
|
||||
app.utils.setLoadingMsg("Vérification des mises à jour");
|
||||
|
||||
var manifestReady = false;
|
||||
var assetsReady = false;
|
||||
|
@ -186,6 +186,7 @@ var app = {
|
|||
onGetMtime('manifest', mtime, assetsReady);
|
||||
manifestReady = true;
|
||||
});
|
||||
|
||||
app.utils.getModifiedTime(app.manifest.meta.assetsUrl, function(mtime) {
|
||||
app.assetsMtime = mtime;
|
||||
onGetMtime('assets', mtime, manifestReady);
|
||||
|
@ -194,11 +195,16 @@ var app = {
|
|||
},
|
||||
|
||||
loadLocalManifest: function() {
|
||||
// In case the url is incorrect, we get the backup manifest
|
||||
app.safeManifest = app.manifest;
|
||||
|
||||
var manifest;
|
||||
if(manifest = localStorage.getItem("momo-manifest")){
|
||||
try {
|
||||
app.manifest = JSON.parse(manifest);
|
||||
} catch(e) {}
|
||||
} catch(e) {
|
||||
app.manifest = app.safeManifest;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -207,10 +213,6 @@ var app = {
|
|||
if(DEBUG) console.log('load '+JSON.stringify(app.manifest));
|
||||
app.utils.setLoadingMsg("Mise à jour du manifest - 0%");
|
||||
|
||||
// In case the url is incorrect, we get the backup manifest
|
||||
|
||||
app.safeManifest = app.manifest;
|
||||
|
||||
// Get manifest from localStorage if it exists
|
||||
app.loadLocalManifest();
|
||||
|
||||
|
@ -246,6 +248,7 @@ var app = {
|
|||
} catch(e) {
|
||||
if(DEBUG) console.log('Cannot parse application manifest '+url);
|
||||
app.flash('Le manifest JSON comporte des erreurs', 'danger');
|
||||
app.manifest = app.safeManifest;
|
||||
if(typeof reject === "function")
|
||||
reject();
|
||||
|
||||
|
@ -262,9 +265,9 @@ var app = {
|
|||
|
||||
// Handle AJAX Error
|
||||
request.onerror = function() {
|
||||
app.onAjaxError(url);
|
||||
if(typeof reject === "function")
|
||||
reject();
|
||||
app.onAjaxError(url);
|
||||
};
|
||||
|
||||
// Send AJAX
|
||||
|
@ -280,9 +283,6 @@ var app = {
|
|||
|
||||
// Restore safe manifest
|
||||
app.manifest = app.safeManifest;
|
||||
|
||||
// And start application
|
||||
app.start();
|
||||
},
|
||||
|
||||
// Patch manifest response to set filesystem's relative paths (offline)
|
||||
|
@ -452,7 +452,6 @@ var app = {
|
|||
|
||||
// Dev page refresh : redirect to home
|
||||
window.location.replace('#home');
|
||||
|
||||
// Regiter pages tree
|
||||
app.registerPage(app.manifest, app.defaultPage);
|
||||
|
||||
|
@ -483,9 +482,9 @@ var app = {
|
|||
var id = data.id = data.id ? data.id : (data.title ? app.utils.hyphenate(data.title.stripTags()) : '_' + Math.random().toString(36).substr(2, 9));
|
||||
|
||||
// Make sure id is unique
|
||||
var i = 1;
|
||||
var i = 0;
|
||||
while(app.pages.hasOwnProperty(data.id)){
|
||||
data.id = id+'_'+i.toString();
|
||||
data.id = id+'_'+(i++).toString();
|
||||
}
|
||||
|
||||
// Register page
|
||||
|
@ -1107,19 +1106,33 @@ var app = {
|
|||
},
|
||||
|
||||
getModifiedTime: function(url, callback) {
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('HEAD', url, true); // use HEAD - we only need the headers
|
||||
xhr.onreadystatechange = function() {
|
||||
if (xhr.readyState === 4 && xhr.status === 200) {
|
||||
var mtime = new Date(xhr.getResponseHeader('Last-Modified'));
|
||||
if (mtime.toString() === 'Invalid Date') {
|
||||
callback(); // dont want to return a bad date
|
||||
} else {
|
||||
callback(mtime);
|
||||
}
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('HEAD', url, true); // use HEAD - we only need the headers
|
||||
// AJAX Callback
|
||||
xhr.onload = function() {
|
||||
|
||||
// AJAX success
|
||||
if (xhr.status >= 200 && xhr.status < 400 || xhr.status == 0 /* iOS OhMyBuddha!! */) {
|
||||
var mtime = new Date(xhr.getResponseHeader('Last-Modified'));
|
||||
if (mtime.toString() === 'Invalid Date') {
|
||||
//app.onAjaxError(url);
|
||||
callback(); // dont want to return a bad date
|
||||
} else {
|
||||
callback(mtime);
|
||||
}
|
||||
// AJAX error
|
||||
} else {
|
||||
//app.onAjaxError(url);
|
||||
callback(); // dont want to return a bad date
|
||||
}
|
||||
}
|
||||
}
|
||||
xhr.send();
|
||||
|
||||
// Handle AJAX Error
|
||||
//xhr.onerror = function() {
|
||||
// //app.onAjaxError(url);
|
||||
// callback();
|
||||
//};
|
||||
xhr.send();
|
||||
},
|
||||
|
||||
formatDate: function(date){
|
||||
|
|
|
@ -81,11 +81,11 @@ var WebPullToRefresh = (function () {
|
|||
//options.overlay.addEventListener('touchend', _onTouchEnd);
|
||||
}
|
||||
|
||||
options.h = new Hammer( options.contentEl, { touchAction: 'pan-y' } );
|
||||
options.h = new Hammer( options.contentEl, { touchAction: 'auto' } );
|
||||
|
||||
options.h.get( 'pan' ).set( { direction: Hammer.DIRECTION_ALL } );
|
||||
|
||||
options.h.on( 'panstart', _panStart );
|
||||
options.h.on( 'pandown panstart', _panStart );
|
||||
options.h.on( 'pandown', _panDown );
|
||||
options.h.on( 'panup', _panUp );
|
||||
options.h.on( 'panright', _panRight );
|
||||
|
@ -119,7 +119,7 @@ var WebPullToRefresh = (function () {
|
|||
var scale = 1;
|
||||
var rotation = 0;
|
||||
|
||||
if (true /*browser.usesAndroidInitTouchEventParameterOrder()*/) {
|
||||
if (false /*browser.usesAndroidInitTouchEventParameterOrder()*/) {
|
||||
touchEvent.initTouchEvent(
|
||||
touches, targetTouches, changedTouches,
|
||||
eventType,
|
||||
|
@ -200,7 +200,9 @@ var WebPullToRefresh = (function () {
|
|||
|
||||
if ( pan.startingPositionY === 0 ) {
|
||||
pan.enabled = true;
|
||||
}
|
||||
} else {
|
||||
pan.enabled = false;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -210,7 +212,7 @@ var WebPullToRefresh = (function () {
|
|||
*/
|
||||
var _panDown = function(e) {
|
||||
if ( ! pan.enabled ) {
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
|
||||
e.preventDefault();
|
||||
|
@ -228,7 +230,7 @@ var WebPullToRefresh = (function () {
|
|||
*/
|
||||
var _panUp = function(e) {
|
||||
if ( ! pan.enabled || pan.distance === 0 ) {
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
|
||||
e.preventDefault();
|
||||
|
@ -238,7 +240,6 @@ var WebPullToRefresh = (function () {
|
|||
} else {
|
||||
pan.distance = e.distance / options.resistance;
|
||||
}
|
||||
|
||||
_setContentPan();
|
||||
_setBodyClass();
|
||||
};
|
||||
|
@ -310,7 +311,6 @@ var WebPullToRefresh = (function () {
|
|||
* @param {object} e - Event object
|
||||
*/
|
||||
var _panEnd = function(e) {
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
//options.contentEl.style.transform = options.contentEl.style.webkitTransform = '';
|
||||
|
@ -319,6 +319,11 @@ var WebPullToRefresh = (function () {
|
|||
options.ptrEl.style.top = "";//60px";
|
||||
bodyClass.remove( 'ptr-pulling' );
|
||||
|
||||
pan.distance = 0;
|
||||
pan.distanceRight = 0;
|
||||
pan.distanceLeft = 0;
|
||||
pan.enabled = false;
|
||||
|
||||
if ( document.body.classList.contains( 'ptr-refresh' ) ) {
|
||||
_doLoading();
|
||||
} else if ( document.body.classList.contains( 'ptr-back' ) ) {
|
||||
|
@ -328,11 +333,6 @@ var WebPullToRefresh = (function () {
|
|||
} else {
|
||||
_doReset();
|
||||
}
|
||||
|
||||
pan.distance = 0;
|
||||
pan.distanceRight = 0;
|
||||
pan.distanceLeft = 0;
|
||||
pan.enabled = false;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Reference in New Issue