From 476fb290659c608bb168c18ba5c4fcf46b2dcecf Mon Sep 17 00:00:00 2001
From: Iziram <matthias.hartmann@iziram.fr>
Date: Sat, 22 Jun 2024 17:30:59 +0200
Subject: [PATCH] =?UTF-8?q?create=5Fapi=5Fmap=20:=20bug=20fix=20query=20av?=
 =?UTF-8?q?ec=201=20element=20+=20l=C3=A9g=C3=A8res=20optimisations?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 tools/create_api_map.py | 21 ++++++++-------------
 1 file changed, 8 insertions(+), 13 deletions(-)

diff --git a/tools/create_api_map.py b/tools/create_api_map.py
index 953f384a..543a9069 100644
--- a/tools/create_api_map.py
+++ b/tools/create_api_map.py
@@ -172,7 +172,7 @@ class Token:
             sub_group = ET.Element("g")
 
             # On décale l'élément de la query vers la droite par rapport à l'élément parent
-            translate_x = x_offset + x_step
+            translate_x = x_offset + _get_group_width(group) + x_step // 2
 
             # création élément (param)
             param_el = _create_svg_element(key, COLORS.BLUE)
@@ -192,7 +192,7 @@ class Token:
             # création élément (=)
             equal_el = _create_svg_element("=", COLORS.GREY)
             # On met à jour le décalage en fonction de l'élément précédent
-            translate_x = x_offset + x_step + _get_element_width(param_el)
+            translate_x += _get_element_width(param_el)
             equal_el.set(
                 "transform",
                 f"translate({translate_x}, {query_y_offset})",
@@ -202,11 +202,7 @@ class Token:
             # création élément (value)
             value_el = _create_svg_element(value, COLORS.GREEN)
             # On met à jour le décalage en fonction des éléments précédents
-            translate_x = (
-                x_offset
-                + x_step
-                + sum(_get_element_width(el) for el in [param_el, equal_el])
-            )
+            translate_x += _get_element_width(equal_el)
             value_el.set(
                 "transform",
                 f"translate({translate_x}, {query_y_offset})",
@@ -214,16 +210,13 @@ class Token:
             sub_group.append(value_el)
             # Si il y a qu'un seul élément dans la query, on ne met pas de `&`
             if len(self.query) == 1:
+                query_sub_element.append(sub_group)
                 continue
 
             # création élément (&)
             ampersand_group = _create_svg_element("&", "rgb(224,224,224)")
             # On met à jour le décalage en fonction des éléments précédents
-            translate_x = (
-                x_offset
-                + x_step
-                + sum(_get_element_width(el) for el in [param_el, equal_el, value_el])
-            )
+            translate_x += _get_element_width(value_el)
             ampersand_group.set(
                 "transform",
                 f"translate({translate_x}, {query_y_offset})",
@@ -466,6 +459,9 @@ def gen_api_map(app, endpoint_start="api"):
         # On positionne le token courant sur le token racine
         current_token = api_map
 
+        # Récupération de la fonction associée à la route
+        func = app.view_functions[rule.endpoint]
+
         # Pour chaque segment de la route
         for i, segment in enumerate(segments):
             # On cherche si le segment est déjà un enfant du token courant
@@ -473,7 +469,6 @@ def gen_api_map(app, endpoint_start="api"):
 
             # Si ce n'est pas le cas on crée un nouveau token et on l'ajoute comme enfant
             if child is None:
-                func = app.view_functions[rule.endpoint]
                 # Si c'est le dernier segment, on marque le token comme une leaf
                 # On utilise force_leaf car il est possible que le token ne soit que
                 # momentanément une leaf
-- 
GitLab