Sujet sur Discussion Gestion:Tâches/Liste/69

Merci d’avoir programmé ça ! Je viens de passer en revue le code et j’ai trouvé les bogues suivants :

  • Ligne 240 : nodes.tonodes[to].
  • Ligne 242 : Condition inversée, doit être and au lieu de or.
  • Ligne 267 : La variable i n’est pas accessible hors de la boucle.

En l’état, l’utilisation d’une valeur de 1 pour la propriété level causait l’insertion de deux nœuds invisibles, une valeur de 2 en causait trois, etc. Je pense que ce n’était pas voulu, alors j’ai réduit ça pour que 1 insère zéro nœuds, 2 insère un nœud, etc. Voici un petit exemple d’utilisation de la propriété :

Code

{{Flowchart
| $orientation = to right
| N0 -> N1 = 1
| N1.level = 1
| N1 -> N2 = 2
| N2.level = 2
| N2 -> N3 = 3
| N3.level = 3
| N0 -> P1
| P1 -> P2
| P2 -> P3
| P3 -> P4
| P4 -> P5
| P5 -> P6
}}

Rendu

Concernant le nommage de la propriété level, j’ai quelques réserves. On pourrait croire qu’avec elle, on contrôle le niveau absolu du nœud, alors qu’en fait on contrôle la longueur minimale de tous les liens qui amènent à ce nœud (liens entrants). Peut-être qu’un nom comme distance (comme « distance aux nœuds parents ») serait plus clair ?

Il nous faut également faire le choix entre une propriété level/distance au niveaux des nœuds contre une propriété length au niveau des liens qui permettrait de régler leur longueur individuellement. Avec la première propriété, il n’est pas possible dans certains cas de contrôler la longueur d’une arête individuelle. À l’inverse, avec la seconde, le code peut être plus verbeux si on veut en effet contrôler la longueur de tous les liens entrants. Je serais personnellement pour la seconde car elle offre plus de flexibilité.

PS. Entre temps, le patch a été accepté et fusionné dans Mermaid ! On peut donc espérer voir arriver une solution plus directe pour implémenter les propriétés en question à l’avenir.