eventsCRUD.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. var EVENTS = EVENTS || {};
  2. EVENTS.dateFormat = {
  3. store : {
  4. date: "YYYY-MM-DD",
  5. hour: "HH:mm"
  6. },
  7. display : {
  8. date: "DD-MM-YYYY",
  9. hour: "HH:mm"
  10. }
  11. }
  12. EVENTS.storeDateFormat = EVENTS.dateFormat.store.date + " " + EVENTS.dateFormat.store.hour;
  13. EVENTS.displayDateFormat = EVENTS.dateFormat.display.date + " " + EVENTS.dateFormat.display.hour;
  14. EVENTS.render = function() {
  15. var ret = checkConnection('ERR_EVENT');
  16. if (ret) {
  17. EVENTS.query(ai1ec.cats.single);
  18. } else {
  19. EVENTS.loadFromDb('#mostralista', ai1ec.cats.single);
  20. }
  21. }
  22. EVENTS.formatDate = function(date, format) {
  23. var mdate = moment(date);
  24. return mdate.isValid() ? mdate.format(format) : "";
  25. }
  26. EVENTS.query = function (type) {
  27. type = type || ai1ec.cats.single;
  28. var table = type == ai1ec.cats.repeat ? 'xm24_events_repeat' : 'xm24_events_single';
  29. $.mobile.loading('show');
  30. ai1ec.remote.getLastEvents(type, function(events) {
  31. var n_evs = events.length,
  32. n_evs_ins = 0,
  33. n_evs_err = 0;
  34. if(n_evs > 0) {
  35. FONTE.dbHandler.executeSql('DELETE FROM ' + table , [], function() {
  36. for (var i = 0; i < events.length; i++) {
  37. var event = events[i];
  38. var evId = ai1ec.event.getId(event);
  39. var evTitle = ai1ec.event.getTitle(event);
  40. var evDesc = ai1ec.event.getDescription(event);
  41. var evUrl = ai1ec.event.getUrl(event);
  42. var evGeo = ai1ec.event.getGeo(event);
  43. var evInitDate = EVENTS.formatDate(ai1ec.event.getInitDate(event), EVENTS.storeDateFormat);
  44. var evEndDate = EVENTS.formatDate(ai1ec.event.getEndDate(event), EVENTS.storeDateFormat);
  45. FONTE.dbHandler.executeSql('INSERT INTO ' + table + ' VALUES (?,?,?,?,?,?,?)', [evId, evTitle, evDesc, evInitDate, evEndDate, evUrl, evGeo],
  46. //onSuccess
  47. function (resultSet) {
  48. n_evs_ins++;
  49. console.log('resultSet.insertId: ' + resultSet.insertId);
  50. console.log('resultSet.rowsAffected: ' + resultSet.rowsAffected);
  51. if(n_evs_ins + n_evs_err == n_evs - 1) {
  52. if(n_evs_ins > 0) {
  53. EVENTS.loadFromDb('#mostralista', type);
  54. }
  55. }
  56. },
  57. //onError
  58. function (error) {
  59. n_evs_err++;
  60. if(n_evs_ins + n_evs_err == n_evs - 1) {
  61. if(n_evs_ins > 0) {
  62. EVENTS.loadFromDb('#mostralista', type);
  63. } else {
  64. toastr.info("Non ci sono nuovi eventi.");
  65. $.mobile.loading('hide');
  66. }
  67. }
  68. console.error("EVENTS.query() : ", error);
  69. });
  70. }
  71. }, function(error){
  72. console.error("EVENTS.query() : ", error + " type: " + type);
  73. toastr.error("Err: errore nel TRUNCATE della tabella degli eventi");
  74. });
  75. } else {
  76. toastr.info("Non ci sono nuovi eventi.");
  77. }
  78. });
  79. };
  80. EVENTS.loadFromDb = function (containerId, type) {
  81. var table = type == ai1ec.cats.repeat ? 'xm24_events_repeat' : 'xm24_events_single';
  82. FONTE.dbHandler.executeSql("SELECT * FROM " + table + " ORDER BY initDate COLLATE NOCASE ASC;", [], function (resultSet) {
  83. var items = [];
  84. for (var i = 0; i < resultSet.rows.length; i++) {
  85. var item = resultSet.rows.item(i);
  86. var evInitDate = EVENTS.formatDate(item.initDate, EVENTS.displayDateFormat);
  87. var evEndDate = EVENTS.formatDate(item.endDate, EVENTS.displayDateFormat);
  88. var evFrom = "Da: " + evInitDate;
  89. var evTo = "";
  90. if(evEndDate != "") {
  91. evTo = "<br/>" + " A: " + evEndDate;
  92. }
  93. var li = "<li>" +
  94. //"<img src='./image/virgolette_1.png' class='epuntato'/>" +
  95. "<a href='#event' data-post='" + item.id + "' >"
  96. + item.title +
  97. "</a>" +
  98. "<br/>" +
  99. evFrom +
  100. evTo
  101. "</li>";
  102. items.push(li);
  103. }
  104. $(containerId).empty();
  105. $("<ul/>", {
  106. "class": "my-new-list"
  107. , html: items.join("")
  108. }).prependTo(containerId);
  109. $.mobile.loading('hide');
  110. }, function (error) {
  111. $.mobile.loading('hide');
  112. toastr.error("Err: nel caricamento dei dati dal db");
  113. console.log(error);
  114. });
  115. };