templates/agenda/agenda.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block title %}Agenda!{% endblock %}
  3. {% block body %}
  4.     {# Affiche le JSON de data #}
  5.     {# {{dump(data)}} #}
  6.     <h1>Calendrier des séances {{ categoryTitle }}</h1>
  7.     <div class="calendaraccueil">
  8.         <img class="imgsite" src="{{ asset('uploads/images/' ~ image['image']) }}" alt="{{ categoryTitle }} Baie de Somme">
  9.         <div class="milieu">
  10.             <p class="milieu">Prix par personne/ 60€</p>
  11.             <p class="milieu">48€ pour les moins de 25 ans</p>
  12.             <p class="milieu">À partir de 11 ans et 1,40 m</p>
  13.         </div>
  14.     </div>
  15.     <p class="milieu">Cliquez sur la séance où vous souhaitez réserver.</p>
  16.     <div id="calendrier" style="display:none;"> </div>
  17.     <style>
  18.         #calendrier {
  19.             min-height: 135em;
  20.         }
  21.         .fc-event-main {
  22.             text-align: left;
  23.         }
  24.     </style>
  25. {% endblock %}
  26. {% block javascripts %}
  27.     {{ parent() }}
  28.     <script>
  29.         document.addEventListener("DOMContentLoaded", function() {
  30.             let calendarElt = document.getElementById('calendrier');
  31.             let calendar;
  32.             let eventsData = {{ data.events|json_encode|raw }};
  33.             let visibleStatus = {{ visible ? 'true' : 'false' }};
  34.             console.log('Initial visibility status:', visibleStatus);
  35.             console.log('Initial events data:', eventsData);
  36.             if (visibleStatus) {
  37.                 calendarElt.style.display = 'block';
  38.                 let mediaQuery = window.matchMedia("(max-width: 1000px)");
  39.                 function updateCalendarDuration() {
  40.                     if (calendar && mediaQuery.matches) {
  41.                         console.log('Switching to 3-day view');
  42.                         calendar.changeView('timeGridThreeDay');
  43.                     } else if (calendar) {
  44.                         console.log('Switching to weekly view');
  45.                         calendar.changeView('timeGridWeek');
  46.                     }
  47.                 }
  48.                 window.onload = () => {
  49.                     // Filter events based on visibility
  50.                     let filteredEvents = eventsData.filter(event => {
  51.                         console.log('Event visibility:', event.visible, 'Title:', event.title);
  52.                         return event.visible;
  53.                     });
  54.                     console.log('Filtered events:', filteredEvents);
  55.                     calendar = new FullCalendar.Calendar(calendarElt, {
  56.                         slotMinTime: '06:00',
  57.                         events: filteredEvents,
  58.                         eventContent: function (arg) {
  59.                             let stockg = arg.event.extendedProps.stock;
  60.                             let visible = arg.event.extendedProps.visible;
  61.                             console.log('Event visibility:', visible);
  62.                             if (stockg === null || stockg === undefined || isNaN(stockg)) {
  63.                                 stockg = 0;
  64.                             }
  65.                             let stock = parseInt(stockg, 10);
  66.                             let stockHtml = '<div class="event-stock">Il reste : ' + stock + ' places</div>';
  67.                             let titleStyle = 'font-weight: bold; text-align:left; font-size: 20px;';
  68.                             return {
  69.                                 html: '<div style="' + titleStyle + '">' + arg.event.title + '</div>' + stockHtml
  70.                             };
  71.                         },
  72.                         initialView: 'timeGridWeek',
  73.                         views: {
  74.                             timeGridWeek: {
  75.                                 type: 'timeGrid',
  76.                                 duration: { days: 7 }
  77.                             },
  78.                             timeGridThreeDay: {
  79.                                 type: 'timeGrid',
  80.                                 duration: { days: 3 }
  81.                             },
  82.                             timeGridOneDay: {
  83.                                 type: 'timeGrid',
  84.                                 duration: { days: 1 }
  85.                             },
  86.                         },
  87.                         locale: 'fr',
  88.                         timeZone: 'Europe/Paris',
  89.                         headerToolbar: {
  90.                             start: 'prev,next today',
  91.                             center: 'title',
  92.                             end: 'dayGridMonth,timeGridWeek,timeGridThreeDay,timeGridOneDay'
  93.                         },
  94.                         buttonText: {
  95.                             today: 'Aujourd\'hui',
  96.                             timeGridOneDay: '1 jour',
  97.                             timeGridThreeDay: '3 jours',
  98.                             timeGridWeek: '7 jours',
  99.                             month: 'Mois',
  100.                         },
  101.                     });
  102.                     calendar.on('eventClick', (e) => {
  103.                         let encodedId = encodeURIComponent(e.event.id);
  104.                         let url = "https://127.0.0.1:8000/activitieshow/" + encodedId;
  105.                         window.location.href = url;
  106.                     });
  107.                     calendar.render();
  108.                     updateCalendarDuration();
  109.                 };
  110.                 mediaQuery.addEventListener('change', () => {
  111.                     updateCalendarDuration();
  112.                 });
  113.             } else {
  114.                 console.error('Calendar element not visible!');
  115.             }
  116.         });
  117.     </script>
  118. {% endblock %}