Project

General

Profile

Development #72973

Permettre de cacher un champ de manière statique

Added by Valentin Deniaud 3 months ago. Updated 3 months ago.

Status:
Solution proposée
Priority:
Normal
Target version:
-
Start date:
04 January 2023
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:
No

Description

Traditionnellement si on a besoin d'afficher/cacher un champ dynamiquement on gère tout en jquery via les méthodes .hide()/.show(), par exemple https://gitea.entrouvert.org/entrouvert/chrono/src/branch/main/chrono/manager/templates/chrono/manager_agenda_notifications_form.html#L28.

Si le champ doit être masqué par défaut, on compte sur le JS pour venir vite le masquer au chargement de la page.

Est-ce qu'on pourrait ajouter un truc qui permette de marquer le champ comme caché en amont côté Django ?

Cas d'usage, le rafraîchissement automatique de la cellule stat dans combo #72465, la cellule est très régulièrement rafraîchie et l'effet de jquery qui vient à chaque rafraîchissement masquer les champs à masquer est visible et pénible.


Files

History

#1

Updated by Valentin Deniaud 3 months ago

Ça pourrait se faire assez simplement.

#2

Updated by Frédéric Péters 3 months ago

Plutôt un attribut hidden, et ça existe déjà (#61924 puis #63324 qui l'a étendu partout).

#3

Updated by Valentin Deniaud 3 months ago

Dac mais ça nécessitera d'utiliser autre chose que le hide()/show() de jquery.

#4

Updated by Frédéric Péters 3 months ago

Oui, mettre et retirer l'attribut en question. (je n'ai pas le contexte).

#5

Updated by Valentin Deniaud 3 months ago

Tout est dans la description, et ma dernière remarque c'est juste pour souligner qu'on a une pratique d'utiliser ces méthodes et que la deuxième solution ne s'intègre pas à cette pratique contrairement à la première (je ne dis pas que c'est bien ou mal et je n'ai aucune préférence).

#6

Updated by Frédéric Péters 3 months ago

Ok, dans w.c.s. on fait sans classe : {% if widget.is_hidden %}style="display: none"{% endif %}; il me semble que ça fait au debug quelque chose de plus clair (puisque jquery va modifier cet attribut, on ne se trouve donc jamais dans la situation bizarre d'avoir une classe "hidden" mais un attribut style qui dit "display: block").

#7

Updated by Thomas Jund 3 months ago

ajouter/enlever l'attribut `hidden` est maintenant un truc préférable à faire plutôt que d'ajouter des class ou des style `display: none`

#8

Updated by Frédéric Péters 3 months ago

ajouter/enlever l'attribut `hidden` est maintenant un truc préférable à faire plutôt que d'ajouter des class ou des style `display: none`

Oui mais « ça nécessitera d'utiliser autre chose que le hide()/show() de jquery. », c'est ce qui est raconté plus haut.

Perso je suis neutre sur le sujet, mais ennuyé par avoir plusieurs manières de faire; s'il y a volonté d'avancer vers l'utilisation de hidden et plus les hide/show de jquery ça devrait commencer par un ticket pour pousser/gérer une migration en ce sens.

#9

Updated by Valentin Deniaud 3 months ago

Voilà avec un attribut style et un plus explicite « field.display_none », que ça ne soit pas confondu avec le is_hidden de Django qui sert à autre chose.

Also available in: Atom PDF