Development #62965
revoir le style de paramétrage des cellules
0%
Description
On accumule des paramètres, il se trouvent tous au même niveau, essentiels ou pas; on aurait à revoir ça pour permettre une catégorisation des paramètres, que les cellules restent d'un premier abord simples à paramétrer, sans avoir à se priver d'options plus rares mais utiles dans certains contextes.
Proposition avec :
- onglets latéraux pour le paramétrage, (la liste et le contenu de ceux-ci varient selon le type de cellule)
- ce qui se trouve en partie aujour'hui dans des popups (derrière les liens "visibilité" et "options") se trouvent en onglets
- le lien "fermer" est retiré, il y a l'encoche en haut à droite de la cellule, et le clic sur tout le titre, ça suffit
- les actions dupliquer/supprimer n'apparaissent pas, posées dans un menu derrière le bouton trois points (kebab)
- ça se discute, mais perso j'ai trouvé que ça allégeait utilement la cellule
- il y a aussi à réfléchir à l'alignement, le bouton pourrait être déplacé sur la gauche, dans l'alignement des champs (c'est je pense mieux mais ça éloigne de la situation actuelle)
- idée également testée sans résultat probant : mettre ça sous forme d'icône dans le titre (soit le style détonnait soit c'était pas clair)
- le bouton "enregistrer / kebab" resterait quelque soit l'onglet
- et enregistrerait tout, pas juste l'onglet en cours. (?)
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Stéphane Laget il y a environ 2 ans
cele me parait très clair.
J'aime bien l'idée du bouton enregistrer qui enregistre tout, et pas seulement l'onglet en cours.
Mis à jour par Pierre Cros il y a environ 2 ans
Comme steph + une interrogation ergonomique/design concernant le fait qu'on gagnerait peut-être à matérialiser un peu plus les onglets comme étant des onglets (genre prendre modèle sur Chromium plutôt que sur FX - je préfère la façon de faire de FX mais on est pas dans un navigateur ici).
Mis à jour par Frédéric Péters il y a environ 2 ans
- Tracker changé de Autre à Development
- Assigné à mis à Frédéric Péters
Mis à jour par Frédéric Péters il y a environ 2 ans
- Lié à Development #63293: système d'onglets verticaux ajouté
Mis à jour par Frédéric Péters il y a environ 2 ans
- Fichier map-tabs-small.png map-tabs-small.png ajouté
- Fichier 0001-manager-use-sidetabs-to-navigate-between-cell-option.patch 0001-manager-use-sidetabs-to-navigate-between-cell-option.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Dans les grandes lignes, on a sur la classe de la cellule une méthode get_manager_tabs qui retourne une liste de dictionnaires,
+ tabs.append( + { + 'slug': 'visibility', + 'name': _('Visibility'), + 'template': self.manager_visibility_template, + 'form': CellVisibilityForm, + } + )
Et l'affichage c'est passer sur ces onglets et faire le rendu du template mentionné; on peut se passer du template et dans ce cas ça fait le rendu du formulaire .as_p.
Pour le submit, même affaire, on passe sur les différents onglets et form.is_valid() et form.save(); on joue dans une transaction qu'on abandonne s'il y a une erreur dans un des formulaires.
La vue PageEditCellView désormais s'occupe juste de ça en mode json et fait une réponse avec le nouveau contenu des onglets mais contient aussi une clé "errorlist" pour un affichage des erreurs full js (parce qu'en présence d'un ckeditor on ne recharge pas l'html de la cellule, on doit afficher les erreurs différemment — en pratique on n'avait jamais de ckeditor dans un formulaire qui pouvait faire d'erreurs donc on ignorait jusqu'à présent la possibilité, ce qui s'est passé ici c'est que j'étais parti sur la gestion des erreurs en js avant de tomber sur des cellules avec des formulaires dont les champs devaient varier après le submit).
Comme on est là sur une réponse json on peut directement y intégrer l'info "additional label" pour ajuster le titre, vs avant où on avait un appel ajax supplémentaire pour faire ça. Pareil pour inclure dans la barre de titre l'info sur la visibilité ou les classes css, on obtient l'info dans le json de retour. (vs avant où il y avait "vrai" submit/redirect et pas besoin de dynamisme là).
Parce que les onglets ont des hauteurs différentes ça devient vraiment impossible de calculer le max-height utilisé pour l'animation d'ouverture d'une cellule, comme en plus c'était déjà buggué dans certaines situations où le bouton "enregistrer" se trouvait caché et obligeait à recharger la page, je vire totalement ce truc d'animation (et tous les appels à Je compute_max_height).
Je modifie combo/apps/maps/models.py pour déplacer le paramétrage niveaux de zoom dans un onglet séparé, c'est surtout pour la démonstration et valider qu'on pouvait sur une cellule facilement créer des onglets différents.
Pour les tests j'introduis tests/utils.py avec une fonction manager_submit_cell, qui fait le submit du formulaire + actualise le contenu de la page comme le ferait le js, j'utilise ça ensuite presque partout et ça permet de ne pas trop modifier les tests, en gros ça fait des changements qui sont juste de cet ordre :
resp.form[field_prefix + 'service'] = '' - resp = resp.form.submit().follow() + manager_submit_cell(resp.form) assert resp.form[field_prefix + 'service'].value == ''
Il y a
- assert len(ctx.captured_queries) == 33 + assert len(ctx.captured_queries) == 41
parce qu'il y a désormais des requêtes sur auth_groups pour avoir les groupes pour l'onglet visibilité.
Pour se lamenter on a :
class CellBase(models.Model, metaclass=CellMeta): + # noqa pylint: disable=too-many-public-methods
mais j'ai préféré cet ajout plutôt que tricher et de toute façon tomber dessus à la prochaine méthode.
Par rapport à la question que j'avais, sur l'emplacement des supprimer/dupliquer, j'ai résolu ça en alignant à gauche le bouton "enregistrer" principal, et en mettant ces liens/boutons sous forme d'icônes tout à droite.
Finalement, en évolution il y aurait dans l'onglet "apparence" à pouvoir inclure directement la sélection des ressources, plutôt que passer par une popup, mais j'ai laissé ça pour un autre ticket.
Mis à jour par Frédéric Péters il y a environ 2 ans
Pour les tests j'introduis tests/utils.py avec une fonction manager_submit_cell, qui fait le submit du formulaire + actualise le contenu de la page comme le ferait le js, j'utilise ça ensuite presque partout et ça permet de ne pas trop modifier les tests, en gros ça fait des changements qui sont juste de cet ordre :
À ce sujet le temps de finaliser et j'ai poussé rebasé et ça échoue sur un nouveau test dataviz, que je n'avais donc pas encore modifié. Cela pour dire qu'une relecture un peu rapide ça sera plus sympa qu'avoir à rebaser ajuster les tests.
Mis à jour par Lauréline Guérin il y a environ 2 ans
- Statut changé de Solution proposée à Solution validée
ok
Mis à jour par Frédéric Péters il y a environ 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 57dec72cb7733c782302b72b1f3c9356fd37fab1 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Wed Mar 23 22:01:25 2022 +0100 manager: use sidetabs to navigate between cell options (#62965)
Mis à jour par Transition automatique il y a environ 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
Mis à jour par Thomas Jund (congés, retour le 29/04) il y a environ 2 ans
- Lié à Bug #63567: manager: à la sauvegarde d'une cellule fiche, le schéma de personnalisation est effacé. ajouté
manager: use sidetabs to navigate between cell options (#62965)