123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- 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
- });
- }
|