2
0

list-events.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. $(document).ready(function() {
  2. showDate('showDate');
  3. getEvements();
  4. });
  5. // Show QRCode
  6. function printTuile(data){
  7. if(data === null){
  8. return '<div class="card mb-3 text-center fadeIn"><div class="card-header"><i class="bi bi-info-circle" style="font-size:2rem"></i></div><div class="card-body">Aucun évènement n\'est associé à votre profil à ce jour</div></div>';
  9. } else {
  10. var explication = null;
  11. var meta = null;
  12. var classCard = null;
  13. var txtFooter = null;
  14. var classFadeIn = getClassTuile(data["nb"]);
  15. if(data["type_emargement"] == 1){
  16. explication = '<p class="card-text"><div>[ QRCode à présenter à votre arrivée ]</div><br /><div><i class="bi bi-fullscreen" style="font-size:2rem"></i></div></p>';
  17. meta = 'data-toggle="modal" data-target="#QRCodeModal" onclick="showQRCode(this)" data-qrr-qrcode-regexp="^https?:\/\/" data-sel="' + data["url_qrcode"] + '" data-titre="' + data["titre"] + '"';
  18. classCard = "showQRCode";
  19. txtFooter = "Cliquez ici pour afficher votre QRCode";
  20. } else {
  21. explication = '<p class="card-text"><div>[ QRCode à flasher vous même ]</div><br /><div><i class="bi bi-camera-video" style="font-size:2rem"></i></div></p>';
  22. meta = 'data-event="' + data["md5"] + '" data-qrr-target="#QRCodeRead" ';
  23. classCard = "qrcodeReader";
  24. txtFooter = "Cliquez ici pour scanner le QRCode";
  25. }
  26. if(data["present"]){
  27. meta = "";
  28. explication = '<p class="card-text">Votre émargement a bien été pris en compte</p>';
  29. classCardText = "text-success";
  30. classCard = "";
  31. txtFooter = "Emargement réalisé le " + data["present"];
  32. } else {
  33. classCardText = "text-dark";
  34. }
  35. return '<div ' + meta + ' class="card mb-3 text-center ' + classCard + ' ' + classCardText + ' fadeIn ' + classFadeIn + '"><div class="card-header"><small>Du ' + data["startDate"] + ' au ' + data["endDate"] + '</small></div><div class="card-body"><h5 class="card-title">' + data["titre"] + '</h5>' + explication + '</div><div class="card-footer"><small>' + txtFooter + '</small></div></div>';
  36. }
  37. }
  38. function getClassTuile(nb){
  39. switch (nb) {
  40. case 0:
  41. return "first";
  42. break;
  43. case 1:
  44. return "second";
  45. break;
  46. case 2:
  47. return "third";
  48. break;
  49. case 3:
  50. return "fourth";
  51. break;
  52. default:
  53. return "fifth";
  54. break;
  55. }
  56. }
  57. function getEvements(){
  58. var formData = {
  59. jsonData: "list-events"
  60. }
  61. if (checkconnection()) {
  62. $.ajax({
  63. type: "GET",
  64. url: "json.php",
  65. data: formData,
  66. dataType: "json",
  67. encode: true,
  68. }).done(function (json) {
  69. $("#listEvent").html("");
  70. if(json[0] === null){
  71. $("#listEvent").append(printTuile(null));
  72. } else {
  73. $.each(json, function () {
  74. $("#listEvent").append(printTuile(this));
  75. });
  76. $(".qrcodeReader").qrCodeReader();
  77. }
  78. });
  79. } else {
  80. $("#divOffline").empty();
  81. $("#divOffline").append('<div class="alert alert-warning" role="alert">Vous n\'êtes pas connecté à internet</div>');
  82. $("#divOffline").show();
  83. }
  84. }
  85. function showQRCode(element){
  86. var sel = $(element).data("sel");
  87. var titre = $(element).data("titre");
  88. $("#showQRCode").empty();
  89. $("#showQRCode").replaceWith('<div class="modal-body" id="showQRCode"><img src="qrcode.php?q=' + sel + '" width="100%" ></div>');
  90. $("#showTitreEvent").empty();
  91. $("#showTitreEvent").replaceWith('<div class="card-header" id="showTitreEvent">' + titre + '</div>');
  92. }
  93. // Reade QRCode
  94. $(".qrcodeReader").on("click", function () {
  95. var idEvent = $(this).data("event");
  96. $("#form-event").val(idEvent);
  97. });
  98. $("#qrr-close").on("click", function () {
  99. $("#form-event").val("");
  100. });
  101. function checkEmagementSalarie(){
  102. var formData = {
  103. form: $("#emargementControlFrom").val(),
  104. event: $("#form-event").val(),
  105. qRcode: $("#QRCodeRead").val(),
  106. };
  107. if (checkconnection()) {
  108. $.ajax({
  109. type: "POST",
  110. url: "json.php?jsonData=check-control-emargement",
  111. data: formData,
  112. dataType: "json",
  113. encode: true,
  114. }).done(function (data) {
  115. $('#ResultQRCode').remove();
  116. $("#confirmationModal").append(getConfirmModal(data));
  117. $('#ResultQRCode').modal("show");
  118. if (data["result"] == true) {
  119. $('#ResultQRCode').on('hidden.bs.modal', function () {
  120. getEvements();
  121. });
  122. }
  123. }).fail(function () {
  124. retour = Array;
  125. retour["result"] = false;
  126. retour["description"] = "Le QR-Code n'est pas valide";
  127. retour["salarie"] = null;
  128. retour["evenement"] = null;
  129. $('#ResultQRCode').remove();
  130. $("#confirmationModal").append(getConfirmModal(retour));
  131. $('#ResultQRCode').modal("show");
  132. });
  133. $("#QRCodeRead").removeAttr('value');
  134. } else {
  135. $("#divOffline").empty();
  136. $("#divOffline").append('<div class="alert alert-warning" role="alert">Vous n\'êtes pas connecté à internet</div>');
  137. $("#divOffline").show();
  138. }
  139. }
  140. $(document).ready(function () {
  141. // Sélectionnez le nœud à observer
  142. const targetNode = document.getElementById("QRCodeRead");
  143. // Vérifiez si l'élément existe avant de continuer
  144. if (!targetNode) {
  145. console.error("L'élément #QRCodeRead n'existe pas.");
  146. return;
  147. }
  148. // Options pour l'observateur (quelles mutations observer)
  149. const config = { attributes: true, attributeFilter: ['value'] };
  150. // Fonction de rappel à exécuter lorsque des mutations sont observées
  151. const callback = (mutationList, observer) => {
  152. mutationList.forEach(mutation => {
  153. if (mutation.type === "attributes" && mutation.attributeName === "value") {
  154. const value = $("#QRCodeRead").val();
  155. console.log("Modification détectée : ", value);
  156. if (value !== null && value !== '') {
  157. checkEmagementSalarie();
  158. }
  159. }
  160. });
  161. };
  162. // Créez une instance d'observateur liée à la fonction de rappel
  163. const observer = new MutationObserver(callback);
  164. // Commencez à observer le nœud cible pour les mutations configurées
  165. observer.observe(targetNode, config);
  166. console.log("Observation des changements sur #QRCodeRead activée.");
  167. });