query.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  1. function myJsonCategory(Qcategory, div, addTagCategory) {
  2. $.mobile.loading('show');
  3. FONTE.dbHandler.executeSql("SELECT * FROM xm24_posts WHERE category = ? ORDER BY date COLLATE NOCASE DESC;", [Qcategory], function (resultSet) {
  4. var items = [];
  5. for (var i = 0; i < resultSet.rows.length; i++) {
  6. var val = JSON.parse(resultSet.rows.item(i).post);
  7. var id = val.id;
  8. var time = val.modified;
  9. var title = val.title.rendered;
  10. var url = val.guid.rendered;
  11. var splitTime = time.split("T");
  12. var cleanTime = splitTime[0];
  13. var tag = '';
  14. var cattag = '';
  15. /* if (addTagCategory) {
  16. $.each(val.tags, function (index, value) {
  17. if (value == 43) {
  18. }
  19. if (value == 36) {
  20. }
  21. });
  22. //key mi dice l'indice'
  23. items.push("<li class='"+ cattag +"'><a href='#singleQpost' data-post='" + id + "'>" + title + "</a><br/><small>" + cleanTime + "</small><span>" + tag + "</span>|</li>");
  24. }
  25. else {*/
  26. items.push("<li><a href='#singleQpost' data-post='" + id + "'>" + title + "</a><br/><small>" + cleanTime + "</small></li>");
  27. }
  28. $("<ul/>", {
  29. "class": "my-new-list"
  30. , html: items.join("")
  31. }).prependTo(div);
  32. });
  33. $.mobile.loading('hide');
  34. };
  35. function myJsonLastPage(div) {
  36. var storage = window.localStorage;
  37. var lastnewsDate = storage.getItem('db_lastnews_date');
  38. var firstTime = storage.getItem('db_lastnews_firsttime');
  39. if (firstTime != 'yes') {
  40. if (lastnewsDate) {
  41. FONTE.dbHandler.executeSql("SELECT * FROM xm24_posts WHERE date > ? ORDER BY date COLLATE NOCASE DESC LIMIT 40;", [lastnewsDate], function (resultSet) {
  42. var items = [];
  43. $(div).empty();
  44. if (resultSet.rows.length > 0) {
  45. for (var i = 0; i < resultSet.rows.length; i++) {
  46. var val = JSON.parse(resultSet.rows.item(i).post);
  47. var id = val.id;
  48. var time = val.modified;
  49. var title = val.title.rendered;
  50. var url = val.guid.rendered;
  51. // console.log(Url);
  52. var splitTime = time.split("T");
  53. var cleanTime = splitTime[0];
  54. //key mi dice l'indice'
  55. items.push("<li><a href='#singleQpost' data-post='" + id + "'>" + title + "</a><br/><small>" + cleanTime + "</small>");
  56. }
  57. $("<ul/>", {
  58. "class": "my-new-list"
  59. , html: items.join("")
  60. }).prependTo(div);
  61. } else {
  62. $(div).empty();
  63. $(div).append('<span>Non ci sono nuovi contenuti.</span>')
  64. }
  65. });
  66. } else {
  67. $(div).empty();
  68. $(div).append('<span>Tutti i contenuti sono nuovi.</span>')
  69. }
  70. } else {
  71. $(div).empty();
  72. $(div).append('<span>Tutti i contenuti sono nuovi.</span>')
  73. }
  74. };
  75. function myJsonCategoryPaginated(Qcategory, div, pageNumber) {
  76. $.mobile.loading('show');
  77. FONTE.dbHandler.executeSql("SELECT * FROM xm24_posts WHERE category = ? ORDER BY date COLLATE NOCASE DESC;", [Qcategory], function (resultSet) {
  78. var items = [];
  79. $(div).empty();
  80. for (var i = 0; i < resultSet.rows.length; i++) {
  81. var val = JSON.parse(resultSet.rows.item(i).post);
  82. var id = val.id;
  83. var time = val.modified;
  84. var title = val.title.rendered;
  85. var url = val.guid.rendered;
  86. var tag = val.tags;
  87. var splitTime = time.split("T");
  88. var cleanTime = splitTime[0];
  89. //key mi dice l'indice'
  90. items.push("<li><a href='#singleQpost' data-post='" + id + "'>" + title + "</a><br/><small>" + cleanTime + "</small></li>");
  91. }
  92. $("<ul/>", {
  93. "class": "my-new-list"
  94. , html: items.join("")
  95. }).prependTo(div);
  96. }, function (error) {
  97. console.log('errore myJsonCategoryPaginated: ' + error);
  98. });
  99. $.mobile.loading('hide');
  100. };
  101. function myJsonPost(Qid, div_title, div_content) {
  102. FONTE.dbHandler.executeSql("SELECT * FROM xm24_posts WHERE id = ?;", [Qid], function (resultSet) {
  103. for (var i = 0; i < resultSet.rows.length; i++) {
  104. var val = JSON.parse(resultSet.rows.item(i).post);
  105. var id = val.id;
  106. var time = val.modified;
  107. var title = val.title.rendered;
  108. var url = val.guid.rendered;
  109. var content = val.content.rendered;
  110. content = findImg(content);
  111. $(div_title).html(title);
  112. //key mi dice l'indice'
  113. $(div_content).html("<p>" + content + "</p>");
  114. }
  115. }, function (error) {
  116. console.log(error);
  117. });
  118. };
  119. function myJsonPage(Qid, div_title, div_content) {
  120. $.mobile.loading('show');
  121. var pageId = parseInt(Qid);
  122. FONTE.dbHandler.executeSql("SELECT * FROM xm24_pages WHERE id = ?;", [pageId], function (resultSet) {
  123. for (var i = 0; i < resultSet.rows.length; i++) {
  124. var data = resultSet.rows.item(i);
  125. var id = data.id;
  126. var time = data.time;
  127. var title = data.title;
  128. var content = data.page;
  129. content = findImg(content);
  130. $(div_title).html(title);
  131. //key mi dice l'indice'
  132. $(div_content).html("<p>" + content + "</p>");
  133. }
  134. });
  135. $.mobile.loading('hide');
  136. };
  137. function myJsonRandomPost(div_title, div_content) {
  138. $.mobile.loading('show');
  139. FONTE.dbHandler.executeSql("SELECT * FROM xm24_posts ORDER BY RANDOM() LIMIT 1;", [], function (resultSet) {
  140. for (var i = 0; i < resultSet.rows.length; i++) {
  141. var val = JSON.parse(resultSet.rows.item(i).post);
  142. var id = val.id;
  143. var time = val.modified;
  144. var title = val.title.rendered;
  145. var url = val.guid.rendered;
  146. var content = val.content.rendered;
  147. content = findImg(content);
  148. $(div_title).html(title);
  149. //key mi dice l'indice'
  150. $(div_content).html("<p>" + content + "</p>");
  151. }
  152. });
  153. $.mobile.loading('hide');
  154. };
  155. function myJsonPostByTagList(idTag, div) {
  156. $.mobile.loading('show');
  157. var tagid = parseInt(idTag);
  158. FONTE.dbHandler.executeSql("SELECT * FROM xm24_tags_to_posts WHERE tagid = ?;", [tagid], function (resultSet) {
  159. var items = [];
  160. var finishCounter = 0;
  161. for (var i = 0; i < resultSet.rows.length; i++) {
  162. var val = resultSet.rows.item(i);
  163. FONTE.dbHandler.executeSql("SELECT * FROM xm24_posts WHERE id = ? ORDER BY title COLLATE NOCASE ASC;", [val.id], function (resultSetPost) {
  164. finishCounter++;
  165. for (var n = 0; n < resultSetPost.rows.length; n++) {
  166. var val = JSON.parse(resultSetPost.rows.item(n).post);
  167. var id = val.id;
  168. var time = val.modified;
  169. var title = val.title.rendered;
  170. var url = val.guid.rendered;
  171. var splitTime = time.split("T");
  172. var cleanTime = splitTime[0];
  173. //key mi dice l'indice'
  174. items.push({
  175. item: "<li><a href='#singleQpost' data-post='" + id + "'>" + title + "</a><br/><small>" + cleanTime + "</li>"
  176. , title: title
  177. });
  178. }
  179. // fallo solo quando items è stato riempito
  180. if (finishCounter >= resultSet.rows.length - 1) {
  181. $(div).empty();
  182. $("<ul/>", {
  183. "class": "my-new-list"
  184. , html: function () {
  185. function compare(a, b) {
  186. if (a.title < b.title) return -1;
  187. if (a.title > b.title) return 1;
  188. return 0;
  189. }
  190. items.sort(compare);
  191. var finalHtml = "";
  192. for (var i = 0; i < items.length; i++) {
  193. finalHtml += items[i].item;
  194. }
  195. return finalHtml;
  196. }()
  197. }).prependTo(div);
  198. }
  199. });
  200. }
  201. }, function (error) {
  202. console.log(error);
  203. });
  204. $.mobile.loading('hide');
  205. };
  206. function initTag(div) {
  207. $.mobile.loading('show');
  208. FONTE.dbHandler.executeSql("SELECT * FROM xm24_tags ORDER BY date COLLATE NOCASE DESC;", [], function (resultSet) {
  209. var items = [];
  210. for (var i = 0; i < resultSet.rows.length; i++) {
  211. var val = JSON.parse(resultSet.rows.item(i).tag);
  212. var name = val.name;
  213. var slug = val.slug;
  214. var id = val.id;
  215. items.push("<li><img src='./image/virgolette_1.png' class='epuntato'/><a href='#posttag' data-post='" + id + "' >" + name + "</a><br/></li>");
  216. }
  217. $(div).empty();
  218. $("<ul/>", {
  219. "class": "my-new-list"
  220. , html: items.join("")
  221. }).prependTo(div);
  222. }, function (error) {
  223. console.log(error);
  224. });
  225. $.mobile.loading('hide');
  226. };
  227. function createDB() {
  228. //crea il databse per i posts se non esiste
  229. FONTE.dbHandler = window.sqlitePlugin.openDatabase({
  230. name: FONTE.dbName
  231. , location: 'default'
  232. }, function () {
  233. FONTE.dbHandler.executeSql('CREATE TABLE IF NOT EXISTS xm24_posts (id INTEGER PRIMARY KEY, title, date, category, post)');
  234. FONTE.dbHandler.executeSql('CREATE TABLE IF NOT EXISTS xm24_tags (id INTEGER PRIMARY KEY, title, tag)');
  235. FONTE.dbHandler.executeSql('CREATE TABLE IF NOT EXISTS xm24_tags_to_posts (id, tagid)');
  236. FONTE.dbHandler.executeSql('CREATE TABLE IF NOT EXISTS xm24_pages (id INTEGER PRIMARY KEY, title, date, page)');
  237. FONTE.dbHandler.executeSql('CREATE TABLE IF NOT EXISTS xm24_events_single (id PRIMARY KEY, title, description, initDate, endDate, url, geo)');
  238. FONTE.dbHandler.executeSql('CREATE TABLE IF NOT EXISTS xm24_tags_to_events (id, tagid)');
  239. FONTE.dbHandler.executeSql('CREATE TABLE IF NOT EXISTS xm24_events_repeat (id PRIMARY KEY, title, description, initDate, endDate, url, geo)');
  240. }, function () {
  241. console.log('error');
  242. console.log(arguments);
  243. });
  244. };
  245. function deleteDB() {
  246. window.sqlitePlugin.deleteDatabase({
  247. name: FONTE.dbName
  248. , location: 'default'
  249. });
  250. var storage = window.localStorage;
  251. storage.setItem('db_update_date', null);
  252. storage.setItem('db_lastnews_date', null);
  253. createDB();
  254. };
  255. function getSinglePageRecur(url, category, pagenum) {
  256. $.ajax({
  257. dataType: "json"
  258. , url: url + "&categories=" + category + "&page=" + pagenum
  259. , success: function (data, textStatus, jqXHR) {
  260. var totalPages = jqXHR.getResponseHeader('X-WP-TotalPages');
  261. if (pagenum == totalPages || totalPages == 0) FONTE.updatedCategoriesCount += 1;
  262. FONTE.neededPostsCount += data.length;
  263. if (FONTE.updatedCategoriesCount >= FONTE.categoriesList.length && FONTE.neededPostsCount == 0) {
  264. toastr.info('Nessun nuovo articolo.');
  265. var date = new Date();
  266. var currentUpdate = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + date.getDate()).slice(-2);
  267. currentUpdate += 'T' + ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2) + ':' + ('0' + date.getSeconds()).slice(-2);
  268. var lastUpdate = window.localStorage.getItem('db_update_date')
  269. window.localStorage.setItem('db_update_date', currentUpdate);
  270. window.localStorage.setItem('db_lastnews_date', lastUpdate);
  271. //feedback
  272. $("#aggiorna").attr("src", "./image/aggiorna.png");
  273. }
  274. $.each(data, function (key, val) {
  275. var id = val.id;
  276. var time = val.modified;
  277. var title = val.title.rendered;
  278. var tags = val.tags;
  279. var blob = JSON.stringify(val);
  280. FONTE.dbHandler.executeSql('INSERT OR REPLACE INTO xm24_posts VALUES (?,?,?,?,?)', [id, title, time, category, blob], function (resultSet) {
  281. FONTE.updatedPostsCount += 1;
  282. console.log('Voci aggiornate: ' + FONTE.updatedPostsCount);
  283. if (FONTE.updatedCategoriesCount >= FONTE.categoriesList.length && FONTE.updatedPostsCount >= FONTE.neededPostsCount) {
  284. window.localStorage.setItem('has_run', 'true');
  285. var date = new Date();
  286. var currentUpdate = date.getFullYear() + '-' + ('0' + (date.getMonth() + 1)).slice(-2) + '-' + ('0' + date.getDate()).slice(-2);
  287. currentUpdate += 'T' + ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2) + ':' + ('0' + date.getSeconds()).slice(-2);
  288. var lastUpdate = window.localStorage.getItem('db_update_date')
  289. window.localStorage.setItem('db_update_date', currentUpdate);
  290. window.localStorage.setItem('db_lastnews_date', lastUpdate);
  291. toastr.info('Aggiornati ' + FONTE.updatedPostsCount + ' articoli.');
  292. //feedback
  293. $("#aggiorna").attr("src", "./image/aggiorna.png");
  294. ultimoAggiornamento();
  295. } //manca il caso in cui sono stati cancellati dei post online, vanno cancellati anche dall'app.
  296. }, function (error) {
  297. FONTE.updatedPostsCount += 1;
  298. if (FONTE.updatedCategoriesCount >= FONTE.categoriesList.length && FONTE.updatedPostsCount >= FONTE.neededPostsCount) {
  299. toastr.info('Aggiornati ' + FONTE.updatedPostsCount + ' articoli.');
  300. //feedback
  301. $("#aggiorna").attr("src", "./image/aggiorna.png");
  302. }
  303. });
  304. $.each(tags, function (key, val) {
  305. aggiornaTagsToPosts(id, val);
  306. });
  307. });
  308. if (pagenum < totalPages) {
  309. pagenum += 1;
  310. getSinglePageRecur(url, category, pagenum)
  311. }
  312. }
  313. , error: JSONErrorHandler
  314. });
  315. };