Development #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.
Fichiers
Historique
Mis à jour par Valentin Deniaud il y a plus d'un an
- Fichier 0001-templates-add-class-to-hide-form-widget-72973.patch 0001-templates-add-class-to-hide-form-widget-72973.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Ça pourrait se faire assez simplement.
Mis à jour par Frédéric Péters il y a plus d'un an
Mis à jour par Valentin Deniaud il y a plus d'un an
- Fichier 0001-templates-add-class-to-hide-form-widget-72973.patch 0001-templates-add-class-to-hide-form-widget-72973.patch ajouté
Dac mais ça nécessitera d'utiliser autre chose que le hide()/show() de jquery.
Mis à jour par Frédéric Péters il y a plus d'un an
Oui, mettre et retirer l'attribut en question. (je n'ai pas le contexte).
Mis à jour par Valentin Deniaud il y a plus d'un an
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).
Mis à jour par Frédéric Péters il y a plus d'un an
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").
Mis à jour par Thomas Jund (congés, retour le 29/04) il y a plus d'un an
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`
Mis à jour par Frédéric Péters il y a plus d'un an
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.
Mis à jour par Valentin Deniaud il y a plus d'un an
- Fichier 0001-templates-allow-hiding-form-widget-on-page-load-7297.patch 0001-templates-allow-hiding-form-widget-on-page-load-7297.patch ajouté
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.
Mis à jour par Robot Gitea il y a environ un an
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
Mis à jour par Valentin Deniaud il y a environ un an
- Lié à Development #76044: dataviz, éviter le clignotement au chargement du formulaire ajouté
Mis à jour par Valentin Deniaud il y a environ un an
- Lié à Development #76044: dataviz, éviter le clignotement au chargement du formulaire supprimé
Mis à jour par Valentin Deniaud il y a environ un an
- Statut changé de Solution proposée à Rejeté
J'ai trouvé une meilleure idée côté combo qui ne fait plus intervenir gadjo, j'envoie ce ticket controversé aux oubliettes.