Projet

Général

Profil

Bug #19368

Cellule Calendar: avoir un affichage des jours glissant

Ajouté par Josué Kouka il y a plus de 6 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Josué Kouka
Version cible:
-
Début:
11 octobre 2017
Echéance:
% réalisé:

100%

Temps estimé:
Patch proposed:
Oui
Planning:

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

0001-booking-calendar-cell-display-availability-on-14-day.patch (8,64 ko) 0001-booking-calendar-cell-display-availability-on-14-day.patch Josué Kouka, 17 octobre 2017 16:20
0001-booking-calendar-cell-display-availability-on-14-day.patch (8,68 ko) 0001-booking-calendar-cell-display-availability-on-14-day.patch Josué Kouka, 17 octobre 2017 17:48
0001-booking-calendar-cell-display-availability-on-a-give.patch (11,5 ko) 0001-booking-calendar-cell-display-availability-on-a-give.patch Josué Kouka, 30 octobre 2017 14:06
0001-booking-calendar-display-availablilities-in-rolling-.patch (14 ko) 0001-booking-calendar-display-availablilities-in-rolling-.patch Josué Kouka, 31 octobre 2017 17:35
0001-booking-calendar-display-availablilities-in-rolling-.patch (14,4 ko) 0001-booking-calendar-display-availablilities-in-rolling-.patch Josué Kouka, 02 novembre 2017 11:37
0001-booking-calendar-display-availablilities-in-rolling-.patch (15,1 ko) 0001-booking-calendar-display-availablilities-in-rolling-.patch Josué Kouka, 02 novembre 2017 15:56
0001-booking-calendar-display-availablilities-in-rolling-.patch (17,8 ko) 0001-booking-calendar-display-availablilities-in-rolling-.patch Josué Kouka, 02 novembre 2017 17:59
0001-booking-calendar-display-availablilities-in-rolling-.patch (17,9 ko) 0001-booking-calendar-display-availablilities-in-rolling-.patch Josué Kouka, 03 novembre 2017 11:27
0001-booking-calendar-display-availablilities-in-rolling-.patch (20,2 ko) 0001-booking-calendar-display-availablilities-in-rolling-.patch Josué Kouka, 03 novembre 2017 14:45
0001-booking-calendar-display-availablilities-in-rolling-.patch (19,3 ko) 0001-booking-calendar-display-availablilities-in-rolling-.patch Josué Kouka, 06 novembre 2017 15:35
0001-booking-calendar-display-availablilities-in-rolling-.patch (20,2 ko) 0001-booking-calendar-display-availablilities-in-rolling-.patch Josué Kouka, 06 novembre 2017 15:55
0001-booking-calendar-display-availablilities-in-rolling-.patch (20,3 ko) 0001-booking-calendar-display-availablilities-in-rolling-.patch Josué Kouka, 06 novembre 2017 21:01
0001-booking-calendar-display-availablilities-in-rolling-.patch (19,7 ko) 0001-booking-calendar-display-availablilities-in-rolling-.patch Josué Kouka, 07 novembre 2017 11:13
0001-booking-calendar-display-availablilities-in-rolling-.patch (21,2 ko) 0001-booking-calendar-display-availablilities-in-rolling-.patch Josué Kouka, 07 novembre 2017 14:42
0001-booking-calendar-display-availablilities-in-rolling-.patch (21,2 ko) 0001-booking-calendar-display-availablilities-in-rolling-.patch Josué Kouka, 07 novembre 2017 15:07
0001-booking-calendar-display-availablilities-in-rolling-.patch (21,3 ko) 0001-booking-calendar-display-availablilities-in-rolling-.patch Josué Kouka, 07 novembre 2017 15:09
0001-booking-calendar-display-availablilities-in-rolling-.patch (21,2 ko) 0001-booking-calendar-display-availablilities-in-rolling-.patch Josué Kouka, 07 novembre 2017 17:03
0001-booking-calendar-display-availablilities-in-rolling-.patch (20,9 ko) 0001-booking-calendar-display-availablilities-in-rolling-.patch Josué Kouka, 07 novembre 2017 17:42
0001-booking-calendar-display-availablilities-in-rolling-.patch (21,5 ko) 0001-booking-calendar-display-availablilities-in-rolling-.patch Josué Kouka, 07 novembre 2017 18:12
0001-booking-calendar-display-availablilities-in-rolling-.patch (20,5 ko) 0001-booking-calendar-display-availablilities-in-rolling-.patch Josué Kouka, 08 novembre 2017 03:07
0001-booking-calendar-display-availablilities-in-rolling-.patch (20,8 ko) 0001-booking-calendar-display-availablilities-in-rolling-.patch Josué Kouka, 08 novembre 2017 12:05

Demandes liées

Lié à Combo - Development #19452: cellule "calendar": combiner tous les agendas dans la même celluleRejeté16 octobre 2017

Actions
Lié à Combo - Bug #19370: Dégager combo.apps.calendarRejeté11 octobre 2017

Actions
Lié à Combo - Bug #16968: Cellule Calendar: retour en haut de page après chanegement de semaineFermé19 juin 2017

Actions

Révisions associées

Révision 2b44768f (diff)
Ajouté par Josué Kouka il y a plus de 6 ans

booking calendar: display availablilities in rolling days (#19368)

Historique

#2

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é
#3

Mis à jour par Josué Kouka il y a plus de 6 ans

#4

Mis à jour par Josué Kouka il y a plus de 6 ans

Dans le template, on affiche le calendrier que si l'objet calendar dans le template contient des jours.

#5

Mis à jour par Frédéric Péters il y a plus de 6 ans

  • Lié à Bug #19370: Dégager combo.apps.calendar ajouté
#6

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.

#8

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.

#9

Mis à jour par Josué Kouka il y a plus de 6 ans

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.

#10

Mis à jour par Josué Kouka il y a plus de 6 ans

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.

#11

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é
#12

Mis à jour par Josué Kouka il y a plus de 6 ans

Correction d'un bug qui lors du changement de semaine reprenais l'affichage à la date du jour.

#13

Mis à jour par Josué Kouka il y a plus de 6 ans

Quelques changements apportés sur la nomenclature pour être cohérents. Principalement chunk à la place de week.

#14

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 ?)

#15

Mis à jour par Josué Kouka il y a plus de 6 ans

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.

#16

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).

#17

Mis à jour par Josué Kouka il y a plus de 6 ans

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.

#18

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?

#19

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.

#20

Mis à jour par Josué Kouka il y a plus de 6 ans

Serghei Mihai a écrit :

chunk_size a verbose_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é

#22

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.

#23

Mis à jour par Frédéric Péters il y a plus de 6 ans

Et même si ça fonctionnait.

#24

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.

#25

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 ?

#26

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…)

#27

Mis à jour par Josué Kouka il y a plus de 6 ans

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.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…)

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.

#28

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.

#29

Mis à jour par Josué Kouka il y a plus de 6 ans

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.

#30

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 ?

#31

Mis à jour par Josué Kouka il y a plus de 6 ans

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.

#32

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

#33

Mis à jour par Josué Kouka il y a plus de 6 ans

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é.

#34

Mis à jour par Josué Kouka il y a plus de 6 ans

Modification du nom de variable next_page_link en previous_page_link pour les tests sur la seconde page.

#35

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.

#36

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 être base_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)

#37

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.

#38

Mis à jour par Josué Kouka il y a plus de 6 ans

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.

#39

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/').

#40

Mis à jour par Josué Kouka il y a plus de 6 ans

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é.

#41

Mis à jour par Frédéric Péters il y a plus de 6 ans

(je note #19949 et #19950 en passant)

En navigant via ajax, les cases perdent leur fonctionnement js et il devient possible de cocher n'importe comment.

#42

Mis à jour par Josué Kouka il y a plus de 6 ans

Frédéric Péters a écrit :

(je note #19949 et #19950 en passant)

Ok je ferai les patchs necessaires.

En navigant via ajax, les cases perdent leur fonctionnement js et il devient possible de cocher n'importe comment.

Corrigé dans ce patch

#43

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é.

#44

Mis à jour par Josué Kouka il y a plus de 6 ans

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.

#45

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.

#46

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> ?

#47

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.

#48

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.

#49

Mis à jour par Josué Kouka il y a plus de 6 ans

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.

#50

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.

#51

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)

#52

Mis à jour par Frédéric Péters il y a plus de 5 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF