dataviz: adapt chart's height to content (#62282) #54
Loading…
Reference in New Issue
No description provided.
Delete Branch "wip/62282-dataviz-allow-charts-auto-height"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Proposition donc d'ajouter une option "Automatic" pour la hauteur qui ajustera la hauteur du SVG produit s'il y a des libellés sur l'axe Y des graphes.
Je ne modifie pas la valeur par défaut pour la hauteur car elle semble plus logique dans la plupart des cas.
Pas fan de "automatique" qui peut apparaitre vague, plutôt, si on parle bien de ça "Adaptée selon la légende" ?
(sur les captures on voit que le nombre du haut de l'axe (100 ou 2) est tronqué, je ne sais pas si ça vient de ce patch).
Ça fait un graphe plutôt ratatiné si il n'y a pas beaucoup de légendes, donc éventuellement garder une hauteur minimale (en prenant le réglage de hauteur « Moyenne » ou « Petite »).
Aussi comme le notait Thomas dans le ticket lié il y a un endroit où on fait
chart.legend_at_bottom = True
, ce qui à mon avis devrait désactiver le calcul automatique et revenir à la hauteur « par défaut ».Comme la légende n'est pas toujours affichée, typiquement quand il n'y a pas de regroupement défini j'ai préféré ne pas la mentionner.
En effet, je vais creuser ça.
dataviz: allow chart's auto height (#62282)to WIP: dataviz: allow chart's auto height (#62282)Je reste peu enthousiaste sur le "automatique"; combiné au commentaire de Valentin on pourrait peut-être convenir que le paramétrage actuel suffit mais que le comportement devrait être d'étendre pour pouvoir contenir la légende, quand nécessaire. (parce que vraiment il y a peu de sens à choisir "petit et affiche un quart de légende").
Ok, je vais juste ajuster la hauteur pour afficher la légende en entier quand nécessaire.
f00c1e6f6d
tobf3a749c24
bf3a749c24
to7ffc8985b6
7ffc8985b6
to1a36949bbc
WIP: dataviz: allow chart's auto height (#62282)to dataviz: adapt chart's height to content (#62282)@ -351,6 +352,8 @@ class ChartNgCell(CellBase):
if self.statistic.service_slug == 'bijoe':
x_labels, y_labels, data = self.parse_response(response, chart)
chart.x_labels = x_labels
height = max(int(self.height), auto_height_scale * len(y_labels))
À mon avis ici et plus bas il faut utiliser le
height
passé à la méthode et pas leself.height
(pour ne pas casser la fonctionnalité « hauteur passée explicitement » dont on s'aperçoit qu'elle n'est pas testée).height
peut êtreNone
(on le voit dans les tests) et c'est pour ça que j'ai préféré utiliserself.height
qui de toute façon est pris en compte dans la vue:Ouep c'est une situation qui semble n'exister que dans les tests, c'est assez nul mais bon, autre combat !
@ -555,6 +561,7 @@ class ChartNgCell(CellBase):
if self.chart_type != 'pie':
if width and width < 500:
chart.config.height = int(self.height)
À quoi sert cette ligne ?
A garder la hauteur définie de la cellule lorsque
Ah oui désolé j'aurais pu m'en apercevoir... Ça serait bien d'avoir un test si tu te sens.
Et c'est aussi un endroit où on perd la valeur du paramètre
height
passé dans la requête, il ne faudrait pas.Cool je vois le nouveau test, par contre la remarque sur conserver le paramètre
height
me paraît toujours importante (tu peux voir dans le/manage/
que ça semi-casse le rendu du graphe).1a36949bbc
tobf687b5923
@ -359,6 +362,9 @@ class ChartNgCell(CellBase):
else:
data = response['data']
if len(data['series']) > 1:
Depuis les nouvelles versions du patch cette condition semble superflue.
bf687b5923
to15d8ed2402
15d8ed2402
to33e9435f6a
dataviz: adapt chart's height to content (#62282)to WIP: dataviz: adapt chart's height to content (#62282)33e9435f6a
to979474121b
979474121b
to4e70f77d6d
WIP: dataviz: adapt chart's height to content (#62282)to dataviz: adapt chart's height to content (#62282)J'ai un peu reorganisé le code car j'avais du mal à m'y trouver.
Pas fan de 0002, pour moi ça ne simplifie pas la lecture du code :)
Sur le fond le bug que je pointais n'est pas corrigé.
Aussi un pprint ajouté dans un commit puis retiré (je le pointe ici car je ne peux pas commenter la ligne sur gitea, vu qu'elle n'apparaît pas dans le diff unifié...)
@ -597,7 +606,6 @@ class ChartNgCell(CellBase):
return new_data
def sort_values(self, chart, data):
Changement superflu.
@ -535,0 +534,4 @@
# use a single colour for dots
chart.config.style.colors = ('#1f77b4',) * max(len(chart.x_labels), 1)
def configure_horizontal_bar_chart(self, chart, *args):
Il faut garder la condition
width < 500
, le fait que ça passe sans traduit juste un manque de test.Bien vu.
J'ai remis la condition
width < 500
et rajouté un test.@ -537,3 +555,2 @@
chart.config.width = width
if height:
chart.config.height = height
if not height:
J'aime bien ce changement, par soucis de cohérence ça serait cool d'avoir la même chose pour width genre juste en remplaçant le bloc
if width:
du dessus parwidth = width or int(self.width)
(en plus de la modif à DatavizGraphView). Idéalement ce changement irait dans un commit séparé, mais pas très important.Fait un commit séparé pour
height
. En revancheself.width
n'existe pas.Ah oui, désolé pour l'embrouille
@ -564,3 +583,4 @@
if self.chart_type != 'pie':
if width and width < 500:
height = self.height
C'est sur cette ligne que portait mon unique réserve sur le patch précédent, je ne sais pas pourquoi elle est encore là ?
En plus avant c'était
chart.config.height = int(self.height)
, maintenant lechart.config
a disparu donc la ligne ne fait plus rien.Encore une fois le bug c'est qu'en rendu BO ça va produire un graphe trop haut. Il faut que cette ligne restaure la valeur originale de height avant correction (self.height ou la valeur transmise en paramètre, selon les cas). Ça serait bien aussi d'ajouter un test là dessus.
Je me plantais à chaque fois ici, fatigue.
4e70f77d6d
tod3e98b1a42
d3e98b1a42
to7490f2c1cb
@ -542,0 +562,4 @@
chart.legend_at_bottom = True
else:
# adapt chart's height to legend length
height = max(height, auto_height_scale * len(chart.raw_series))
Mais le graphe de type pie peut également voir sa légende déborder en hauteur, non ? (peut-être que je me plante)
Si c'est le cas il doit bénéficier de la correction du patch, et donc ce serait plutôt se placer sous ce bloc et faire
En effet, il restait ce cas.
Je l'ai pris en compte et rajouté un test.
Pas repris ta suggestion d'implémentation car
chart.legend_at_bottom
lève unAttributeError
.7490f2c1cb
todfc4092d29
Go, penser juste à ajouter la référence du ticket dans les titres de tous les commits (pinaillage à ce propos, plutôt « move » que « rename » dans le premier).
dfc4092d29
tof356a5bd24
f356a5bd24
to5f63dbbd3d
Remarques prises en compte.