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

Pour reprendre ce que tu as dit @Antoine Mercier-Linteau dans le fil sur mxGraph:

Je propose donc d'y aller avec une librairie déclarative comme Mermaid (ou autre). Cette librairie serait appelée par un module (en Lua) qui s'occuperait de traduire le wikicode en la syntaxe comprise par la librairie. Cette petite couche d'abstraction supplémentaire nous permettra d'éventuellement changer de librairie si le besoin se fait sentir. La courbe d'apprentissage sera un peu plus abrupte pour les éditeurs, mais il pourront voir à même l'Éditeur Visuel le résultat de leurs manipulations.

Les paramètres passés au modèle pourraient avoir l'air de ceci:

{{Diagramme
          |Boîte 1<!-- Supporte du HTML arbitraire. -->
          |1_lien_1= Oui <!-- Supporte du HTML arbitraire. -->
          |1_lien_3=
          |groupe_1=1,2
          |2=Boîte 2
          |2_lien_3=
          |3=Boîte 3
          |raw=Passe la syntaxe directement à la librairie
          }}

Les éditeurs iraient donc construire les diagrammes en spécifiant des paramètres à un modèle à même l'éditeur visuel.

En syntaxe Mermaid:

 graph TD
  subgraph 1
  A[Boîte 1] -->|Oui|B(Boîte 2)
  end
  A --> |Non|C
  B --> C(Boîte 3)

Pour ce qui concerne spécifiquement Mermaid, il semblerait que ce soit une bibliothèque qui fonctionne uniquement côté client, ce qui imposerait de servir aux lecteurs les diagrammes sous forme de syntaxe Mermaid brute avec un script JS qui s’occupe de faire la transformation en SVG côté client. On avait déjà discuté d’un cas similaire précédemment et on était arrivés à la conclusion que ce n’était pas optimal que du JS soit nécessaire pour seulement voir les diagrammes.

Il y a bien mermaid-cli qui permet de convertir côté serveur la syntaxe Mermaid en SVG/PNG/PDF, mais (il faut bien se tenir) elle fonctionne en lançant sur le serveur une instance de Chromium, en chargeant la bibliothèque Mermaid dans ce navigateur et en exportant le résultat. Ça me semble loin d’être optimal, et je n’ai rien trouvé d’autre pour convertir du Mermaid côté serveur. Bien sûr, ce serait possible de développer notre propre solution pour faire cette conversion, ce qui serait sans nul doute utile à la communauté, mais ça va prendre pas mal de temps.

Sinon, il nous reste GraphViz, mais je me demande dans quelle mesure GraphViz « laisse passer » le HTML qu’on mettrait dans les nœuds/en étiquette des flèches, c’est quelque chose qu’il faut tester.