Projet

Général

Profil

Development #72973

Permettre de cacher un champ de manière statique

Ajouté par Valentin Deniaud il y a plus d'un an. Mis à jour il y a environ un an.

Statut:
Rejeté
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
04 janvier 2023
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

#1

Mis à jour par Valentin Deniaud il y a plus d'un an

Ça pourrait se faire assez simplement.

#2

Mis à jour par Frédéric Péters il y a plus d'un an

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

#3

Mis à jour par Valentin Deniaud il y a plus d'un an

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

#4

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

#5

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

#6

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

#7

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`

#8

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.

#9

Mis à jour par Valentin Deniaud il y a plus d'un an

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

Mis à jour par Robot Gitea il y a environ un an

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

#11

Mis à jour par Valentin Deniaud il y a environ un an

  • Lié à Development #76044: dataviz, éviter le clignotement au chargement du formulaire ajouté
#12

Mis à jour par Valentin Deniaud il y a environ un an

  • Lié à Development #76044: dataviz, éviter le clignotement au chargement du formulaire supprimé
#13

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.

Formats disponibles : Atom PDF