Planning.html.twig 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. {# Template pour les plannings #}
  2. {% set cols = event.getSpaces()|length +1 %}
  3. {# début du block de grille #}
  4. <div class="block">
  5. {# Nombre de colonnes = nombre d'espaces + colonne d'intro #}
  6. <div class="fixed-grid has-{{ cols }}-cols">
  7. <div class="grid is-gap-0">
  8. {# en-tête avec les noms des espaces #}
  9. <div class="cell planning-cell planning-cell-heading has-background-primary-light">
  10. Espaces
  11. </div>
  12. {% for space in event.getSpaces() %}
  13. <div class="cell planning-cell planning-cell-heading has-background-primary-light">
  14. {{ space.name }}
  15. </div>
  16. {% endfor %}
  17. {# On ajoute les horaires période par période #}
  18. {% for period in event.getPeriods() %}
  19. <div class="cell planning-cell planning-cell-wide is-col-span-{{ cols }}">
  20. Période du {{ period.startOn|date('d/m/Y H:i', app_timezone) }} à {{ period.endOn|date('H:i', app_timezone) }}
  21. </div>
  22. {# On affiche tous les slots de la période, space par space #}
  23. {% for dateRef in this.getDateOrdered(period) %}
  24. <div class="cell planning-cell planning-cell-heading has-background-primary-light">
  25. {{ dateRef|date('H:i', app_timezone) }}
  26. </div>
  27. {% for space in event.getSpaces() %}
  28. {# extraction du slot de cet espace, ce moment et cette période #}
  29. {% set thisSlot = this.getThisSlot(dateRef, space, period) %}
  30. {# si le slot est Indisponible #}
  31. {% if thisSlot.unavailable %}
  32. {% if displayLocked %}
  33. <div class="cell planning-cell planning-cell-locked" data-id="thisSlot.id">
  34. <div class="icon"><twig:ux:icon name="bi:lock-fill" /></div>
  35. </div>
  36. {% else %}
  37. <div class="cell planning-cell planning-cell-hidden">
  38. </div>
  39. {% endif %}
  40. {% endif %}
  41. {# si une partie est sur le slot #}
  42. {# TODO : à compléter quand les parties seront ajoutées #}
  43. {# si le slot est disponible et sans partie #}
  44. {% if not thisSlot.unavailable %}
  45. {% if pathEmptySlot %}
  46. <a href="{{ path(pathEmptySlot, {id: thisSlot.id}) }}">
  47. <div class="cell planning-cell planning-cell-free" data-id="thisSlot.id">
  48. <div class="icon"><twig:ux:icon name="bi:plus-circle" /></div>
  49. </div>
  50. </a>
  51. {% else %}
  52. <div class="cell planning-cell planning-cell-free" data-id="thisSlot.id">
  53. </div>
  54. {% endif %}
  55. {% endif %}
  56. {% endfor %}
  57. {% endfor %}
  58. {% endfor %}
  59. {# fin du block de grille #}
  60. </div>
  61. </div>
  62. </div>