Project

General

Profile

Développement #72973

Permettre de cacher un champ de manière statique

Added by Valentin Deniaud almost 2 years ago. Updated over 1 year ago.

Status:
Rejeté
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 almost 2 years ago

Ça pourrait se faire assez simplement.

#2

Updated by Frédéric Péters almost 2 years ago

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

#3

Updated by Valentin Deniaud almost 2 years ago

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

#4

Updated by Frédéric Péters almost 2 years ago

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

#5

Updated by Valentin Deniaud almost 2 years 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 almost 2 years 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 almost 2 years 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 almost 2 years 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 almost 2 years 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.

#10

Updated by Robot Gitea over 1 year ago

Valentin Deniaud (vdeniaud) a ouvert une pull request sur Gitea concernant cette demande :

#11

Updated by Valentin Deniaud over 1 year ago

#12

Updated by Valentin Deniaud over 1 year ago

  • Related to deleted (Développement #76044: dataviz, éviter le clignotement au chargement du formulaire)
#13

Updated by Valentin Deniaud over 1 year ago

  • Status changed from Solution proposée to Rejeté

J'ai trouvé une meilleure idée côté combo qui ne fait plus intervenir gadjo, j'envoie ce ticket controversé aux oubliettes.

Also available in: Atom PDF