254 lines
11 KiB
JavaScript
254 lines
11 KiB
JavaScript
var REST_PARAMS = REST_PARAMS || {};
|
|
REST_PARAMS.api = "wp-json/wp/v2";
|
|
REST_PARAMS.posts = REST_PARAMS.api + "/posts?";
|
|
REST_PARAMS.pages = REST_PARAMS.api + "/pages?";
|
|
REST_PARAMS.max_page = 10;
|
|
REST_PARAMS.per_page = 'per_page=' + REST_PARAMS.max_page;
|
|
|
|
function aggiornaPages() {
|
|
var jsonurl = weburl + REST_PARAMS.pages;
|
|
$.ajax({
|
|
dataType: "json",
|
|
url: jsonurl,
|
|
success: function (data) {
|
|
$.each(data, function (key, val) {
|
|
var id = val.id;
|
|
var time = val.modified;
|
|
var title = val.title.rendered;
|
|
var content = val.content.rendered;
|
|
FONTE.dbHandler.executeSql('INSERT INTO xm24_pages VALUES (?,?,?,?)', [id, title, time, content], function (resultSet) {
|
|
console.log('resultSet.insertId: ' + resultSet.insertId);
|
|
console.log('resultSet.rowsAffected: ' + resultSet.rowsAffected);
|
|
}, function (error) {
|
|
console.log('INSERT error: ' + error.message);
|
|
});
|
|
});
|
|
},
|
|
error: JSONErrorHandler
|
|
});
|
|
}
|
|
|
|
function aggiornaSingleCategory(category) {
|
|
//resetta la variabile d'errore per le chiamate ajax asincrone
|
|
FONTE.ajaxError = false;
|
|
|
|
var jsonurl = weburl + REST_PARAMS.posts + REST_PARAMS.per_page;
|
|
|
|
var storage = window.localStorage;
|
|
var lastUpdate = storage.getItem('db_update_date');
|
|
|
|
if (lastUpdate) jsonurl += "&filter[date_query][column]=post_modified_gmt&filter[date_query][after]=" + lastUpdate;
|
|
getSinglePageRecur(jsonurl, category, 1);
|
|
}
|
|
|
|
function resetAndUpdate() {
|
|
var storage = window.localStorage;
|
|
//resetto la data e droppo le tabelle
|
|
storage.setItem('db_update_date', null);
|
|
FONTE.dbHandler.executeSql('DROP TABLE IF EXISTS xm24_posts;');
|
|
FONTE.dbHandler.executeSql('CREATE TABLE IF NOT EXISTS xm24_posts (id INTEGER PRIMARY KEY, title, date, category, post)');
|
|
postsUpdate();
|
|
}
|
|
|
|
function update() {
|
|
FONTE.dbHandler.executeSql('SELECT COUNT(*) AS numPosts FROM xm24_posts', [], function (resultSet) {
|
|
var numPosts = resultSet.rows.item(0).numPosts;
|
|
if (numPosts < 300) { //questo numero e' scelto in maniera arbitraria, ricordati Cri.
|
|
resetAndUpdate();
|
|
} else {
|
|
postsUpdate();
|
|
}
|
|
});
|
|
}
|
|
|
|
function postsUpdate(categories) {
|
|
$(FONTE.contentListClass).empty();
|
|
|
|
var storage = window.localStorage;
|
|
var type = getObjKey(FONTE.categories, categories);
|
|
var jsonurl = weburl + REST_PARAMS.posts + REST_PARAMS.per_page + "&categories=" + categories.join(',');
|
|
|
|
FONTE.updatedCategoriesCount = 0;
|
|
FONTE.updatedPostsCount = 0;
|
|
FONTE.neededPostsCount = 0;
|
|
|
|
FONTE.ajaxError = false;
|
|
|
|
var lastUpdate = storage.getItem('db_update_' + type + '_date');
|
|
if (lastUpdate)
|
|
jsonurl += "&after=" + lastUpdate;
|
|
//jsonurl += "&filter[date_query][column]=post_modified_gmt&filter[date_query][after]=" + lastUpdate;
|
|
|
|
var firstTime = storage.getItem('db_last_' + type + '_firsttime');
|
|
if (firstTime === null) storage.setItem('db_last_' + type + '_firsttime', 'yes');
|
|
if (firstTime == 'yes') storage.setItem('db_last_' + type + '_firsttime', 'no');
|
|
|
|
getLastSinglePageRecur(jsonurl, 1, categories);
|
|
}
|
|
|
|
var updateLocalStorageDate = function(type){
|
|
var date = new Date();
|
|
|
|
var currentUpdate = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + date.getDate()).slice(-2);
|
|
currentUpdate += 'T' + ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2) + ':' + ('0' + date.getSeconds()).slice(-2);
|
|
|
|
var lastUpdate = window.localStorage.getItem('db_update_' + type + '_date');
|
|
|
|
window.localStorage.setItem('db_update_' + type + '_date', currentUpdate);
|
|
window.localStorage.setItem('db_last_' + type + '_date', lastUpdate);
|
|
};
|
|
|
|
var getPrevNews = function(div, categories, page) {
|
|
var storage = window.localStorage;
|
|
var type = getObjKey(FONTE.categories, categories);
|
|
var jsonurl = weburl + REST_PARAMS.posts + REST_PARAMS.per_page + "&categories=" + FONTE.categories[type].join(',');
|
|
|
|
FONTE.updatedCategoriesCount = 0;
|
|
FONTE.updatedPostsCount = 0;
|
|
FONTE.neededPostsCount = 0;
|
|
|
|
var oldest_date = window.localStorage.getItem('db_oldest_' + type + '_date');
|
|
if (oldest_date)
|
|
jsonurl += "&before=" + oldest_date;
|
|
|
|
getPrevSinglePageRecur(jsonurl, 1, FONTE.categories[type]);
|
|
};
|
|
|
|
function loadMore(type) {
|
|
var categories = FONTE.categories[type];
|
|
|
|
renderPrevNews(FONTE.contentListClass, categories, FONTE.page_loaded[type], function(){
|
|
getPrevNews(FONTE.contentListClass, categories, FONTE.page_loaded[type]);
|
|
});
|
|
}
|
|
|
|
function getPrevSinglePageRecur(url, pagenum, categories) {
|
|
$.mobile.loading('show');
|
|
var type = getObjKey(FONTE.categories, categories);
|
|
|
|
console.log('url:'+url);
|
|
$.ajax({
|
|
dataType: "json",
|
|
url: url + "&page=" + pagenum,
|
|
success: function (data, textStatus, jqXHR) {
|
|
var totalPages = jqXHR.getResponseHeader('X-WP-TotalPages');
|
|
|
|
FONTE.neededPostsCount += data.length;
|
|
if (FONTE.neededPostsCount === 0) {
|
|
$.mobile.loading('hide');
|
|
toastr.info('Non ci sono altri alticoli da visualizzare in questa sezione');
|
|
updateLocalStorageDate(type);
|
|
}
|
|
|
|
var n_error = 0;
|
|
var oldest_date = window.localStorage.getItem('db_oldest_' + type + '_date');
|
|
$.each(data, function (key, val) {
|
|
var id = val.id;
|
|
var time = val.date;
|
|
var title = val.title.rendered;
|
|
var tags = val.tags;
|
|
var postCategories = val.categories;
|
|
var blob = JSON.stringify(val);
|
|
|
|
FONTE.dbHandler.executeSql('INSERT OR REPLACE INTO xm24_posts VALUES (?,?,?,?)', [id, title, time, blob], function (resultSet) {
|
|
FONTE.updatedPostsCount++;
|
|
oldest_date = time;
|
|
if (n_error + FONTE.updatedPostsCount >= FONTE.neededPostsCount) {
|
|
updateLocalStorageDate(type);
|
|
window.localStorage.setItem('db_oldest_' + type + '_date', oldest_date);
|
|
toastr.info('Caricati altri ' + FONTE.updatedPostsCount + ' articoli.');
|
|
loadMore(type);
|
|
} //manca il caso in cui sono stati cancellati dei post online, vanno cancellati anche dall'app.
|
|
}, function (error) {
|
|
n_error++;
|
|
if (n_error + FONTE.updatedPostsCount >= FONTE.neededPostsCount && FONTE.updatedPostsCount > 0 ) {
|
|
updateLocalStorageDate(type);
|
|
window.localStorage.setItem('db_oldest_' + type + '_date', oldest_date);
|
|
toastr.info('Caricati altri ' + FONTE.updatedPostsCount + ' articoli.');
|
|
loadMore(type);
|
|
}
|
|
});
|
|
|
|
$.each(postCategories, function (key, val) {
|
|
insertOrUpdateCatToPost(id, val);
|
|
});
|
|
});
|
|
},
|
|
error: JSONErrorHandler
|
|
});
|
|
}
|
|
|
|
function getLastSinglePageRecur(url, pagenum, categories) {
|
|
// resetto la paginazione di #info e #ilove
|
|
FONTE.page_loaded.info = 0;
|
|
FONTE.page_loaded.ilove = 0;
|
|
|
|
var type = getObjKey(FONTE.categories, categories);
|
|
|
|
console.log('url:'+url);
|
|
$.ajax({
|
|
dataType: "json",
|
|
url: url + "&page=" + pagenum,
|
|
success: function (data, textStatus, jqXHR) {
|
|
var totalPages = jqXHR.getResponseHeader('X-WP-TotalPages');
|
|
|
|
FONTE.neededPostsCount += data.length;
|
|
if (FONTE.neededPostsCount === 0) {
|
|
toastr.info('Nessun nuovo articolo.');
|
|
updateLocalStorageDate(type);
|
|
if(FONTE.page_loaded[type] === 0) {
|
|
renderLastNews(FONTE.contentListClass, categories);
|
|
}
|
|
}
|
|
|
|
var n_error = 0;
|
|
var oldest_date = window.localStorage.getItem('db_oldest_' + type + '_date');
|
|
var older_date = null;
|
|
$.each(data, function (key, val) {
|
|
var id = val.id;
|
|
var time = val.date;
|
|
var title = val.title.rendered;
|
|
var tags = val.tags;
|
|
var postCategories = val.categories;
|
|
var blob = JSON.stringify(val);
|
|
|
|
FONTE.dbHandler.executeSql('INSERT OR REPLACE INTO xm24_posts VALUES (?,?,?,?)', [id, title, time, blob], function (resultSet) {
|
|
FONTE.updatedPostsCount++;
|
|
console.log('Voci aggiornate: ' + FONTE.updatedPostsCount);
|
|
older_date = time;
|
|
if (n_error + FONTE.updatedPostsCount >= FONTE.neededPostsCount) {
|
|
updateLocalStorageDate(type);
|
|
if(! oldest_date)
|
|
window.localStorage.setItem('db_oldest_' + type + '_date', older_date);
|
|
|
|
toastr.info('Ci sono ' + FONTE.updatedPostsCount + ' nuovi articoli.');
|
|
renderLastNews(FONTE.contentListClass, categories);
|
|
} //manca il caso in cui sono stati cancellati dei post online, vanno cancellati anche dall'app.
|
|
}, function (error) {
|
|
n_error++;
|
|
if (n_error + FONTE.updatedPostsCount >= FONTE.neededPostsCount && FONTE.updatedPostsCount > 0 ) {
|
|
updateLocalStorageDate(type);
|
|
if(! oldest_date)
|
|
window.localStorage.setItem('db_oldest_' + type + '_date', older_date);
|
|
|
|
toastr.info('Aggiornati ' + FONTE.updatedPostsCount + ' nuovi articoli.');
|
|
renderLastNews(FONTE.contentListClass, categories);
|
|
}
|
|
});
|
|
|
|
// $.each(tags, function (key, val) {
|
|
// aggiornaTagsToPosts(id, val);
|
|
// });
|
|
|
|
$.each(postCategories, function (key, val) {
|
|
insertOrUpdateCatToPost(id, val);
|
|
});
|
|
});
|
|
|
|
// if (data.length === 0) {
|
|
// renderLastNews(FONTE.contentListClass, categories);
|
|
// }
|
|
},
|
|
error: JSONErrorHandler
|
|
});
|
|
}
|