Projet

Général

Profil

Development #62965

revoir le style de paramétrage des cellules

Ajouté par Frédéric Péters il y a environ 2 ans. Mis à jour il y a environ 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
20 mars 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

cell-parametres.png (25,8 ko) cell-parametres.png Frédéric Péters, 20 mars 2022 16:18
map-tabs-small.png (16,6 ko) map-tabs-small.png Frédéric Péters, 29 mars 2022 11:59
0001-manager-use-sidetabs-to-navigate-between-cell-option.patch (63,1 ko) 0001-manager-use-sidetabs-to-navigate-between-cell-option.patch Frédéric Péters, 29 mars 2022 12:01

Demandes liées

Lié à Gadjo - Development #63293: système d'onglets verticauxFermé29 mars 2022

Actions
Lié à Combo - Bug #63567: manager: à la sauvegarde d'une cellule fiche, le schéma de personnalisation est effacé.Fermé05 avril 2022

Actions

Révisions associées

Révision 57dec72c (diff)
Ajouté par Frédéric Péters il y a environ 2 ans

manager: use sidetabs to navigate between cell options (#62965)

Historique

#1

Mis à jour par Frédéric Péters il y a environ 2 ans

  • Description mis à jour (diff)
#2

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.

#3

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

#4

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
#5

Mis à jour par Frédéric Péters il y a environ 2 ans

#6

Mis à jour par Frédéric Péters il y a environ 2 ans

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.

#7

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.

#8

Mis à jour par Lauréline Guérin il y a environ 2 ans

  • Statut changé de Solution proposée à Solution validée

ok

#9

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)
#10

Mis à jour par Transition automatique il y a environ 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#11

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é
#12

Mis à jour par Transition automatique il y a presque 2 ans

Automatic expiration

Formats disponibles : Atom PDF