12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import { Controller } from "@hotwired/stimulus"
- export default class extends Controller {
- connect() {
- // Écoute tous les clics sur .open-modal -> détournement vers #lastStep + MAJ des options du formulaire
- document.querySelectorAll('.participant-box').forEach(element => {
- element.addEventListener('click', this.handleClick.bind(this))
- })
- }
- handleClick(event) {
- event.preventDefault()
- const participantId = event.currentTarget.dataset.id
- const box = event.currentTarget;
- const icon = box.querySelector('.icon');
- if (!participantId) return
- // Etape 1
- fetch(`/checkin/participant/${participantId}`, {
- method: 'POST',
- headers: {
- 'Accept': 'application/json'
- }
- })
- .then(response => {
- if (!response.ok) {
- throw new Error(`Erreur API: ${response.status}`);
- }
- return response.json();
- })
- .then(data => {
-
- // Etape 2
- console.log('ID du particpant cliqué :', participantId);
- console.log('ÉTAT DU SLOT :', data.status);
- if (data.status === "CHECKED") {
- box.classList.add('has-background-primary');
- box.classList.remove('has-background-danger');
- icon.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-check2-circle" viewBox="0 0 16 16">'+
- '<path d="M2.5 8a5.5 5.5 0 0 1 8.25-4.764.5.5 0 0 0 .5-.866A6.5 6.5 0 1 0 14.5 8a.5.5 0 0 0-1 0 5.5 5.5 0 1 1-11 0"/>'+
- '<path d="M15.354 3.354a.5.5 0 0 0-.708-.708L8 9.293 5.354 6.646a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0z"/>'+
- '</svg>';
- } else if (data.status === "UNCHECKED") {
- box.classList.remove('has-background-primary');
- box.classList.add('has-background-danger');
- icon.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-circle" viewBox="0 0 16 16">'+
- '<path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>'+
- '</svg>';
- } else {
- console.warn("Statut de réponse sans action :", data.status);
- }
- })
- .catch(error => {
- console.error('Erreur lors de la récupération des slots :', error);
- });
-
- }
- disconnect() {
- this.element.querySelectorAll('.planning-cell-free').forEach(element => {
- element.removeEventListener('click', this.handleClick)
- })
- }
- }
|