.. -*- mode: rst -*- .. -*- coding: utf-8 -*- =========================== Prise de note avec graphviz =========================== :date: 2020-12-06 :tags: graphviz, javascript :summary: |summary| .. default-role:: literal .. |summary| replace:: J'utilise Graphviz depuis un moment — même pour des notes — car la représentation en graphe permet de synthétiser facilement des notions complexes. Mais c'est compliqué et long à saisir, du coup, j'ai choisi de me faire un petit outil pour me faciliter la vie… J'utilise Graphviz depuis un moment — même pour des notes — car la représentation en graphe permet de synthétiser facilement des notions complexes : - relation de dépendances - séquence de processus - … Mais il me manquait une manière de pouvoir les créer de manière rapide, c'est-à-dire avec une syntaxe adaptée à la prise de note, et pouvoir éditer le résultat en temps réel. Or créer une syntaxe est quelque chose que je sais faire, et voir le résultat en temps réel est possible grâce à `viz.js`_ qui a recompilé Graphviz en javascript à l'aide d'Emscripten_, et permet donc de le faire tourner dans le navigateur. .. _viz.js: http://viz-js.com/ .. _emscripten: https://fr.wikipedia.org/wiki/Emscripten Il ne reste donc plus qu'à assembler tout ça, pour faire tourner un petit éditeur de graphe. J'ai choisi de ne représenter que des tables, et d'utiliser l'indentation pour marquer la relation au parent : (si vous souhaitez en profiter en pleine page, c'est `ici que ça se passe`_) .. _ici que ça se passe: {filename}/pages/graph-editor/graph-editor.rst#graph-editor La démo ------- .. raw:: html
.. admonition:: Exécution du script :class: hint :name: note Les librairies étant relativement lourdes (+2Mo), elles ne sont pas chargées automatiquement avec la page. Je vous laisse cliquer sur le bouton pour les charger et lancer la mise à jour. .. raw:: html
Vous pouvez édite le texte ci-dessus pour mettre à jour le graphe de la partie droite directement. Les nœuds sont représentés à l'aide des `HTML Like label`_ de graphviz, il est donc possible d'utiliser de la couleur, ou des balises de mises en formes qui seront reprises dans le graphe final. Tout ce qui est saisi est transformé dans le navigateur, et aucune donnée ne transite sur le réseau. .. _HTML Like label: https://www.graphviz.org/doc/info/shapes.html#html Avec les boutons d'export, cela me suffit pour produire un petit schéma rapidement, ou ensuite le retravailler le fichier dot correspondant si j'ai besoin d'aller plus loin… Le code ------- Il est écrit en OCaml et compilé en javascript (c'est pour ça qu'il s'exécute dans la page). Vous pouvez télécharger une version hors ligne à exécuter en local ci-dessous : .. figure:: {static}/images/package-x-generic.png :alt: get the file :align: center :target: {static}/resources/viz.js/graphviz.zip Télécharger la commande `make html` permet de régénérer les sources.