Développement #72973
Permettre de cacher un champ de manière statique
0%
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
Updated by Valentin Deniaud almost 2 years ago
- File 0001-templates-add-class-to-hide-form-widget-72973.patch 0001-templates-add-class-to-hide-form-widget-72973.patch added
- Status changed from Nouveau to Solution proposée
- Patch proposed changed from No to Yes
Ça pourrait se faire assez simplement.
Updated by Frédéric Péters almost 2 years ago
Updated by Valentin Deniaud almost 2 years ago
- File 0001-templates-add-class-to-hide-form-widget-72973.patch 0001-templates-add-class-to-hide-form-widget-72973.patch added
Dac mais ça nécessitera d'utiliser autre chose que le hide()/show() de jquery.
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).
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).
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").
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`
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.
Updated by Valentin Deniaud almost 2 years ago
- File 0001-templates-allow-hiding-form-widget-on-page-load-7297.patch 0001-templates-allow-hiding-form-widget-on-page-load-7297.patch added
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.
Updated by Robot Gitea over 1 year ago
Valentin Deniaud (vdeniaud) a ouvert une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/gadjo/pulls/13
- Titre : templates: allow hiding form widget on page load (#72973)
- Modifications : https://git.entrouvert.org/entrouvert/gadjo/pulls/13/files
Updated by Valentin Deniaud over 1 year ago
- Related to Développement #76044: dataviz, éviter le clignotement au chargement du formulaire added
Updated by Valentin Deniaud over 1 year ago
- Related to deleted (Développement #76044: dataviz, éviter le clignotement au chargement du formulaire)
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.