Bug #19368
Cellule Calendar: avoir un affichage des jours glissant
100%
Description
Le planning de crèche présente aujourd'hui la semaine courante et la suivante. Il faudrait que le premier jour apparaissant soit aujourd'hui et les 6 suivants (samedi et dimanche inclus comme c'est le cas actuellement). La semaine suivante affichera de J+7 à J+14.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Josué Kouka il y a plus de 6 ans
- Lié à Development #19452: cellule "calendar": combiner tous les agendas dans la même cellule ajouté
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-cell-display-availability-on-14-day.patch 0001-booking-calendar-cell-display-availability-on-14-day.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-cell-display-availability-on-14-day.patch 0001-booking-calendar-cell-display-availability-on-14-day.patch ajouté
Dans le template, on affiche le calendrier que si l'objet calendar
dans le template contient des jours.
Mis à jour par Frédéric Péters il y a plus de 6 ans
- Lié à Bug #19370: Dégager combo.apps.calendar ajouté
Mis à jour par Frédéric Péters il y a plus de 6 ans
Bien sûr #19370, il faudrait commencer à y noter des éléments qui justifient l'existence de la cellule, les manques côté cellule json ou API chrono.
~~
Ensuite, la description du ticket n'est pour moi pas nette :
Le planning de crèche présente aujourd'hui la semaine courante et la suivante. Il faudrait que le premier jour apparaissant soit aujourd'hui et les 6 suivants (samedi et dimanche inclus comme c'est le cas actuellement). La semaine suivante affichera de J+7 à J+14.
Déjà pour moi la situation actuelle s'est uniquement la semaine courante. Ensuite, une semaine, pour moi, c'est lundi → dimanche. Quand il est question de "la semaine suivante", on parle de quoi ici ? D'un "écran" suivant ? Un écran quand on appuie sur un bouton "suivant" ? Ou la semaine suivante c'est "du 25/10 au 30/10" ?
Les mockups en tout cas ne répondent pas à ces questions. (Et je n'avancerais pas sans que soit nettement validée une proposition complète).
Totalement net par contre, le ticket dit "samedi et dimanche inclus" et le patch dit "exclude saturday and sunday" (en passant : majuscules aux noms de jour en anglais).
~~
Je zappe donc les commentaires sur le patch pour le moment.
Mis à jour par Josué Kouka il y a plus de 6 ans
Mis à jour par Frédéric Péters il y a plus de 6 ans
Le calendrier doit pouvoir afficher toutes les disponibilités que Chrono annonce, la pagination ne doit pas disparaitre.
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-display-availablilities-in-rolling-.patch 0001-booking-calendar-display-availablilities-in-rolling-.patch ajouté
Frédéric Péters a écrit :
Le calendrier doit pouvoir afficher toutes les disponibilités que Chrono annonce, la pagination ne doit pas disparaitre.
Ok, patch avec le jours glissants et paginations.
Sur les balises a
pour la pagination, je n'ai pas mis de href pour éviter de perdre le focus sur la cellule après l'appel Ajax. Je propose de mettre un cursor: pointer
à tous les liens d'une cellule Booking Calendar.
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-display-availablilities-in-rolling-.patch 0001-booking-calendar-display-availablilities-in-rolling-.patch ajouté
J'ai finalement décidé d'intégrer le style et le code js au modèle de la cellule calendar. Chose faite avec ce patch.
Mis à jour par Josué Kouka il y a plus de 6 ans
- Lié à Bug #16968: Cellule Calendar: retour en haut de page après chanegement de semaine ajouté
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-display-availablilities-in-rolling-.patch 0001-booking-calendar-display-availablilities-in-rolling-.patch ajouté
Correction d'un bug qui lors du changement de semaine reprenais l'affichage à la date du jour.
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-display-availablilities-in-rolling-.patch 0001-booking-calendar-display-availablilities-in-rolling-.patch ajouté
Quelques changements apportés sur la nomenclature pour être cohérents. Principalement chunk
à la place de week
.
Mis à jour par Frédéric Péters il y a plus de 6 ans
+def get_chunk_ref(event_datetime): + chunk = 1 + today = now().date() + while chunk < 4: # ignore if beyond a month in the future + future = today + datetime.timedelta(days=chunk * 7) + if today <= event_datetime.date() < future: + return future + chunk += 1
"ignore if beyond a month in the future" ? je ne comprends pas le sens; ça refuse la possibilité de réservations au-delà du mois ? (et si jamais chrono était configuré ainsi, ça tombe sur un retour de None et ça casse tout derrière ?)
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-display-availablilities-in-rolling-.patch 0001-booking-calendar-display-availablilities-in-rolling-.patch ajouté
Frédéric Péters a écrit :
[...]
"ignore if beyond a month in the future" ? je ne comprends pas le sens; ça refuse la possibilité de réservations au-delà du mois ? (et si jamais chrono était configuré ainsi, ça tombe sur un retour de None et ça casse tout derrière ?)
Oui ça refusait la possibilité de réservation au-delà d'un mois.
J'ai supprimé cette logique dans ce nouveau patch. Je me base sur la différence de jours entre le jour max et le jour min reçu en faisant des groupes de 7 jours.
Mis à jour par Frédéric Péters il y a plus de 6 ans
J'ai supprimé cette logique dans ce nouveau patch. Je me base sur la différence de jours entre le jour max et le jour min reçu en faisant des groupes de 7 jours.
J'avais le souvenir que le nombre de jours affichés par la cellule serait configurable, cf "Sur 14 jours paramétrable" dans #19452. C'est quelque chose qu'on ne retrouve pas ici (et c'est ton commentaire sur l'hardcodage de "7 jours" qui m'y fait penser).
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-display-availablilities-in-rolling-.patch 0001-booking-calendar-display-availablilities-in-rolling-.patch ajouté
Frédéric Péters a écrit :
J'ai supprimé cette logique dans ce nouveau patch. Je me base sur la différence de jours entre le jour max et le jour min reçu en faisant des groupes de 7 jours.
J'avais le souvenir que le nombre de jours affichés par la cellule serait configurable, cf "Sur 14 jours paramétrable" dans #19452. C'est quelque chose qu'on ne retrouve pas ici (et c'est ton commentaire sur l'hardcodage de "7 jours" qui m'y fait penser).
Oui, t'as raison. Le paramétrage est ajouté dans ce patch.
Mis à jour par Serghei Mihai il y a plus de 6 ans
chunk_size
a verbose_name='Number of days to display'
.
On ne peut pas donner un nom plus clair à la variable?
Mis à jour par Serghei Mihai il y a plus de 6 ans
var self = $(this);
Par convention on nomme les variables jquery avec $
, ça serait donc $self
.
Et donc autant de ne pas rénommer la variable, plutôt $this
.
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-display-availablilities-in-rolling-.patch 0001-booking-calendar-display-availablilities-in-rolling-.patch ajouté
Serghei Mihai a écrit :
chunk_size
averbose_name='Number of days to display'
.
On ne peut pas donner un nom plus clair à la variable?
Ok, changé en days_displayed
.
var self = $(this);
Corrigé
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-display-availablilities-in-rolling-.patch 0001-booking-calendar-display-availablilities-in-rolling-.patch ajouté
Il manquait la migration.
Mis à jour par Serghei Mihai il y a plus de 6 ans
Em...
if not self.days: return yield
Pas sûr que ça fonctionne.
Mis à jour par Josué Kouka il y a plus de 6 ans
Frédéric Péters a écrit :
Et même si ça fonctionnait.
Ok. Je vais juste renvoyer une liste.
Mis à jour par Frédéric Péters il y a plus de 6 ans
def mocked_now(): return now().replace(month=6, day=12)
Et dans deux mois ?
Mis à jour par Frédéric Péters il y a plus de 6 ans
$elem.closest('div').html(data);
Ça m'effraie, un changement dans le balisage, un <div> ajouté pour aider à une mise en page et bim ce ne serait plus le <div> attendu.
combo/apps/calendar/static/css/calendar.css
combo/apps/calendar/static/js/calendar.js
Je veux bien prendre ça comme la nécessité d'un système de compilations complexe, qui minimiserait le nombre de requêtes HTTP à faire. Mais je ne vois personne pour s'en occuper, du coup ça m'irait vraiment bien qu'on évite. (mais je vais laisser pisser…)
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-display-availablilities-in-rolling-.patch 0001-booking-calendar-display-availablilities-in-rolling-.patch ajouté
Frédéric Péters a écrit :
$elem.closest('div').html(data);
Ça m'effraie, un changement dans le balisage, un <div> ajouté pour aider à une mise en page et bim ce ne serait plus le <div> attendu.
Seul idée pour l'instant a été de poser un classe
def mocked_now(): return now().replace(month=6, day=12)
L'annee a été ajoutée.
combo/apps/calendar/static/css/calendar.css
combo/apps/calendar/static/js/calendar.jsJe veux bien prendre ça comme la nécessité d'un système de compilations complexe, qui minimiserait le nombre de requêtes HTTP à faire. Mais je ne vois personne pour s'en occuper, du coup ça m'irait vraiment bien qu'on évite. (mais je vais laisser pisser…)
Ok
J'ai un peu commencé à voir ce patch avec #19924, le rechargement la cellule marche mais il y'a le retour vers la bonne cellule qu'il faudrait que je voye.
Mis à jour par Frédéric Péters il y a plus de 6 ans
J'ai un peu commencé à voir ce patch avec #19924, le rechargement la cellule marche mais il y'a le retour vers la bonne cellule qu'il faudrait que je voye.
Je ne sais pas ce que tu veux dire par là; si ça n'intervient pas dans la réalisation de ce patch, ne nous écartons pas.
~~
# find the closest superior value divisible by days_displayed days_range = int(self.days_displayed * math.ceil(float(days_diff + 1) / self.days_displayed))
L'intention finale, au-delà du commentaire, il me semble que c'est fournir à la pagination des pages de même taille; s'il y a J et J+1 fournir une seule page qui contiendra de J à J+6; s'il y a des rendez-vous de J à J+10, fournir deux pages, pour aller de J à J+13. Si c'est bien ça, je préférerais que ça soit écrit, plutôt qu'avoir à retrouver la volonté derrière le calcul.
Surtout que cet objet reste curieux, il dépend fortement de son "self.days" (qui est "les jours avec des événements") mais cet attribut se trouve modifié depuis l'extérieur de l'objet (dans get_calendar()).
- response = requests.get('api/agenda/%s/datetimes/' % chrono_slug, remote_service=chrono, without_user=True) + params = {'date_start': now().date().isoformat()} + response = requests.get('api/agenda/%s/datetimes/' % chrono_slug, params=params, + remote_service=chrono, without_user=True)
Pourquoi cette modification ? L'API datetimes ne doit jamais fournir de dates dans le passé.
class CalendarContentAjaxView(SingleObjectMixin, View): http_method_names = ['get'] model = BookingCalendar template_name = 'calendar/booking_calendar_content.html' [...]
Trouver un objet et en faire le rendu à l'aide d'un template, n'est-ce pas exactement DetailView ? Plutôt à mon sens utiliser directement cette classe.
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-display-availablilities-in-rolling-.patch 0001-booking-calendar-display-availablilities-in-rolling-.patch ajouté
Frédéric Péters a écrit :
J'ai un peu commencé à voir ce patch avec #19924, le rechargement la cellule marche mais il y'a le retour vers la bonne cellule qu'il faudrait que je voye.
Je ne sais pas ce que tu veux dire par là; si ça n'intervient pas dans la réalisation de ce patch, ne nous écartons pas.
Ok
~~
[...]
L'intention finale, au-delà du commentaire, il me semble que c'est fournir à la pagination des pages de même taille; s'il y a J et J+1 fournir une seule page qui contiendra de J à J+6; s'il y a des rendez-vous de J à J+10, fournir deux pages, pour aller de J à J+13. Si c'est bien ça, je préférerais que ça soit écrit, plutôt qu'avoir à retrouver la volonté derrière le calcul.
Oui c'etait l'intention, j'ai modifié le commentaire
Surtout que cet objet reste curieux, il dépend fortement de son "self.days" (qui est "les jours avec des événements") mais cet attribut se trouve modifié depuis l'extérieur de l'objet (dans get_calendar()).
[...]
Pourquoi cette modification ? L'API datetimes ne doit jamais fournir de dates dans le passé.
Vrai, retourné à la version orginale
[...]
Trouver un objet et en faire le rendu à l'aide d'un template, n'est-ce pas exactement DetailView ? Plutôt à mon sens utiliser directement cette classe.
Done
J'ai modifié la methode get_days
en get_computed_days
qui me semble plus en accord avec ce que cette fonction fait.
Mis à jour par Frédéric Péters il y a plus de 6 ans
get_paginated_calendar qui modifie et retourne un contexte, ça ne sonne pas terrible.
days_range = int(self.days_displayed * math.ceil(float(days_diff + 1) / self.days_displayed)) if not days_range: days_range = self.days_displayed # minimum
On entre comment dans cette condition ? (réponse : si la date la plus éloignée dans le futur vient avant la date la plus proche, non ?).
La pagination, la vue CalendarContentAjaxView, ne sont absolument pas testées ?
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-display-availablilities-in-rolling-.patch 0001-booking-calendar-display-availablilities-in-rolling-.patch ajouté
Frédéric Péters a écrit :
get_paginated_calendar qui modifie et retourne un contexte, ça ne sonne pas terrible.
Nom changé à add_paginated_calendar_to_context
[...]
On entre comment dans cette condition ? (réponse : si la date la plus éloignée dans le futur vient avant la date la plus proche, non ?).
Bout de code supprimé.
La pagination, la vue CalendarContentAjaxView, ne sont absolument pas testées ?
J'ai rajouté des tests.
Mis à jour par Josué Kouka il y a plus de 6 ans
Josué Kouka a écrit :
J'ai rajouté des tests.
Une erreur dans les tests que je suis en train de corriger
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-display-availablilities-in-rolling-.patch 0001-booking-calendar-display-availablilities-in-rolling-.patch ajouté
Josué Kouka a écrit :
Josué Kouka a écrit :
J'ai rajouté des tests.
Une erreur dans les tests que je suis en train de corriger
Corrigé.
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-display-availablilities-in-rolling-.patch 0001-booking-calendar-display-availablilities-in-rolling-.patch ajouté
Modification du nom de variable next_page_link
en previous_page_link
pour les tests sur la seconde page.
Mis à jour par Frédéric Péters il y a plus de 6 ans
if self.days[0].date > today: base_day = self.days[0].date else: base_day = today
Soit self.days[0].date
est plus tard qu'aujourd'hui, alors on prend cette date, soit pas, et alors on prend aujourd'hui, mais ce cas-là n'est-il pas également le cas où self.days[0].date == today
? (vraiment il serait utile que self.days porte un nom plus explicite, ou que sa déclaration soit accompagnée d'un commentaire, là plutôt que repasser par le code pour comprendre à nouveau à quoi ça correspondait, je me suis juste basé sur mon commentaire précédent ("self.days" (qui est "les jours avec des événements"))). Bref, si c'est bien ça, il me semble que ça pourrait tout le temps être base_day = self.days[0].date
.
Tout à fait en lien avec ça, je remonte à un commentaire précédent, où je citais le ticket : Le planning de crèche présente aujourd'hui la semaine courante et la suivante. Et où je m'interrogeais : « une semaine, pour moi, c'est lundi → dimanche. ».
Ici, si je comprends bien, on fait des tas de sept jours (well, self.days_displayed jours) à partir du jour courant (/ du premier jour où des réservations sont possibles), pas à partir du début de la semaine ("du lundi de la semaine").
Est-ce bien ça qui est attendu ?
la pagination, la vue CalendarContentAjaxView, ne sont absolument pas testées
Me semble qu'il y a juste eu la pagination, pas la vue CalendarContentAjaxView, à avoir gagné des tests.
Mis à jour par Josué Kouka il y a plus de 6 ans
Frédéric Péters a écrit :
[...]
Soit
self.days[0].date
est plus tard qu'aujourd'hui, alors on prend cette date, soit pas, et alors on prend aujourd'hui, mais ce cas-là n'est-il pas également le cas oùself.days[0].date == today
? (vraiment il serait utile que self.days porte un nom plus explicite, ou que sa déclaration soit accompagnée d'un commentaire, là plutôt que repasser par le code pour comprendre à nouveau à quoi ça correspondait, je me suis juste basé sur mon commentaire précédent ("self.days" (qui est "les jours avec des événements"))). Bref, si c'est bien ça, il me semble que ça pourrait tout le temps êtrebase_day = self.days[0].date
.
Ok je prends note.
Tout à fait en lien avec ça, je remonte à un commentaire précédent, où je citais le ticket : Le planning de crèche présente aujourd'hui la semaine courante et la suivante. Et où je m'interrogeais : « une semaine, pour moi, c'est lundi → dimanche. ».
Ici, si je comprends bien, on fait des tas de sept jours (well, self.days_displayed jours) à partir du jour courant (/ du premier jour où des réservations sont possibles), pas à partir du début de la semaine ("du lundi de la semaine").
Est-ce bien ça qui est attendu ?
Oui c'est ce qui est attendu.
la pagination, la vue CalendarContentAjaxView, ne sont absolument pas testées
Me semble qu'il y a juste eu la pagination, pas la vue CalendarContentAjaxView, à avoir gagné des tests.
Dans le test sur la pagination, la vue CalendarContentAjaxView est appelée (ligne 267)
Mis à jour par Frédéric Péters il y a plus de 6 ans
Ok je prends note.
Et ?
Dans le test sur la pagination, la vue CalendarContentAjaxView est appelée (ligne 267)
Ok, raté ça mais c'est alors le rendu de la cellule paginée hors ajax qui manque.
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-display-availablilities-in-rolling-.patch 0001-booking-calendar-display-availablilities-in-rolling-.patch ajouté
Frédéric Péters a écrit :
Ok je prends note.
Et ?
Je voulais dire que le patch était en cours.
Dans le test sur la pagination, la vue CalendarContentAjaxView est appelée (ligne 267)
Ok, raté ça mais c'est alors le rendu de la cellule paginée hors ajax qui manque.
Ce rendu est stocké dans la variable page à la ligne 253.
Mis à jour par Frédéric Péters il y a plus de 6 ans
Ce rendu est stocké dans la variable page à la ligne 253.
À cette ligne, un appel sans pagination : page = client.get('/booking/')
.
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-display-availablilities-in-rolling-.patch 0001-booking-calendar-display-availablilities-in-rolling-.patch ajouté
Frédéric Péters a écrit :
Ce rendu est stocké dans la variable page à la ligne 253.
À cette ligne, un appel sans pagination :
page = client.get('/booking/')
.
Ok, test ajouté.
Mis à jour par Frédéric Péters il y a plus de 6 ans
Mis à jour par Josué Kouka il y a plus de 6 ans
Mis à jour par Frédéric Péters il y a plus de 6 ans
<a class="next calchunk" data-content-url="{% url 'ajax-calendar-content' pk=cell.pk }?chunk_{{cell.pk}}={{ calendar_days.next_page_number }}">{ trans "next" %}</a>
Étant donné la navigation non-ajax possible et désormais testée, ces liens previous/next pourraient gagner un href. Ça permettrait ainsi de dégager ce calendar.css qui me fatigue. Et dans le même temps, étant donné la piqûre de rappel sur l'existence combo.public.js, le code de calendar.js pourrait y être déplacé, et le fichier dégagé.
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-display-availablilities-in-rolling-.patch 0001-booking-calendar-display-availablilities-in-rolling-.patch ajouté
Frédéric Péters a écrit :
<a class="next calchunk" data-content-url="{% url 'ajax-calendar-content' pk=cell.pk }?chunk_{{cell.pk}}={{ calendar_days.next_page_number }}">{ trans "next" %}</a>
Étant donné la navigation non-ajax possible et désormais testée, ces liens previous/next pourraient gagner un href. Ça permettrait ainsi de dégager ce calendar.css qui me fatigue. Et dans le même temps, étant donné la piqûre de rappel sur l'existence combo.public.js, le code de calendar.js pourrait y être déplacé, et le fichier dégagé.
Ok tout est fait dans ce patch.
Mis à jour par Frédéric Péters il y a plus de 6 ans
<a class="next calchunk" href="{% url 'ajax-calendar-content' pk=cell.pk }?chunk_{{cell.pk}}={{ calendar_days.next_page_number }}">{ trans "next" %}</a>
L'URL en href ne doit pas être la vue ajax.
Mis à jour par Josué Kouka il y a plus de 6 ans
Frédéric Péters a écrit :
<a class="next calchunk" href="{% url 'ajax-calendar-content' pk=cell.pk }?chunk_{{cell.pk}}={{ calendar_days.next_page_number }}">{ trans "next" %}</a>
L'URL en href ne doit pas être la vue ajax.
Ok, est ce que l'on doit avoir un truc dans le genre <a class="next calchunk" href="#" data-content-url="{% url 'ajax-calendar-content' pk=cell.pk %}?chunk_{{cell.pk}}={{ calendar_days.next_page_number }}">{% trans "next" %}</a>
?
Mis à jour par Frédéric Péters il y a plus de 6 ans
Un clic du milieu sur le bouton "suivant" doit ouvrir un nouvel onglet avec la même page, mais avec le calendrier positionné une semaine plus loin.
Mis à jour par Frédéric Péters il y a plus de 6 ans
Un clic du milieu sur le bouton
Et quand j'écris "un clic du milieu" c'est pour dire "le comportement natif du navigateur sans javascript", ce n'est pas "il faut attraper un event click et détecter le bouton pressé etc.".
i.e. si l'URL présente est https://combo.fred.local.0d.be/foo/blah/calendrier/ l'URL en href du suivant doit être https://combo.fred.local.0d.be/foo/blah/calendrier/?chunk_1=2, tout simplement.
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-booking-calendar-display-availablilities-in-rolling-.patch 0001-booking-calendar-display-availablilities-in-rolling-.patch ajouté
Frédéric Péters a écrit :
Un clic du milieu sur le bouton
Et quand j'écris "un clic du milieu" c'est pour dire "le comportement natif du navigateur sans javascript", ce n'est pas "il faut attraper un event click et détecter le bouton pressé etc.".
i.e. si l'URL présente est https://combo.fred.local.0d.be/foo/blah/calendrier/ l'URL en href du suivant doit être https://combo.fred.local.0d.be/foo/blah/calendrier/?chunk_1=2, tout simplement.
Ok merci, j'avais compris.
Le patch avec le comportement correspondant.
Mis à jour par Frédéric Péters il y a plus de 6 ans
Bien sûr ça échoue s'il y a navigation simultanée dans plusieurs calendriers mais tant pis. ack.
Mis à jour par Josué Kouka il y a plus de 6 ans
- Statut changé de En cours à Résolu (à déployer)
- % réalisé changé de 0 à 100
commit 2b44768f5cdd4027927523923ea34b2e201e466c Author: Josue Kouka <jkouka@entrouvert.com> Date: Tue Oct 31 17:13:54 2017 +0100 booking calendar: display availablilities in rolling days (#19368)
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Fermé
booking calendar: display availablilities in rolling days (#19368)