Journal d'un Terrien

Web log de Serge Boisse

On line depuis 1992 !

Publicité
Si cette page vous a plu, Copiez son adresse et partagez-la !
http://sboisse.free.fr/trucs et astuces/Obsidian/Plugins/Mermaid.php
Savez-vous quels sont les articles les plus vendus sur Amazon.fr ?
Mermaid

Voir aussi: Markdown (tuto)

Mermaid

Mermaid permet de créer des diagrammes dans tes notes. Ce n'est pas un _Obsidian Plugins 🔌 mais c'est intégré de base ! C'est hyper cool !


En passant, le plugin Excalidraw peut aussi afficher des graphes, mais à partir de données CSV.


Syntaxe

Commencer le code Mermaid par trois backquotes et mermaid. finir par trois backquotes. J'ai créé un modèle T_code mermaid(lien privé)

Attention Quand on colle des exemples pris sur le web, les espaces sont souvent traduits en   qui n'est pas reconnu par mermaid. Il vaut mieux coller dans notepad++ avant pour vérifier.

Mermaid est sensible à la casse. Donc "Mermaid" ne marchera pas, et "a" et "A" sont des nœuds différents...

Commentaires dans le code

Commencer la ligne par "%%"


Exemples

Graphes (flowchart)

cf https://mermaid-js.github.io/mermaid/#/flowchart
Code : (graph) orientation : TB,BT, LR,RL (T = top, B = bottom, L=left, R=right)

flowchart RL
	A-->B

A

B

A et B sont ici les noms des nœuds. Problème, on ne peut pas mettre d'espaces dans les noms de nœuds. L'astuce, c'est de remplacer par exemple B par B[super ordi] : en fait, ça crée un nouveau noeud mais on s'en tape.

flowchart RL
	A --> B["super ordi "HAL♥""]
	B --calcul--> B

calcul

A

super ordi "HAL♥"

Noter comment j'ai affiché les quotes et le ♥

flowchart LR
	A[normal]
	boiteB(arrondi)
	C([stade])
	D[(database)]
	E{triangle}
	F{{hexagone}}
	G((cercle))
	A-->boiteB---C & D---E
	F<-->G

normal

arrondi

stade

database

triangle

hexagone

cercle

Etc... Dans le code le C & D est une seule entité, il faut imaginer des parenthèses autour (mais ça causerait une erreur !)

et définir a forme des liens : attention, seulement pour flowchart
https://mermaid-js.github.io/mermaid/#/flowchart?id=links-between-nodes

  • --- will render a solid line without arrow
  • --> will render a dotted line without arrow
  • ->> will render a solid line with arrowhead
  • -->> will render a dotted line with arrowhead
  • -x will render a solid line with a cross at the end (async)
  • --x will render a dotted line with a cross at the end (async)

Autre exemple

Code :

graph LR
 A[Christmas] -->|Get money| B(Go shopping)
 B -.-> C{Let me think}
 C ==>|One| D[Laptop]
 C -->|Two| E[iPhone]
 C --->|Three| F[fa:fa-car]

Get money

One

Two

Three

Christmas

Go shopping

Let me think

Laptop

iPhone

J'ai pas compris le fa:fa-car en fait ça semble lié à FontAwesome mais ça ne marche pas...

automate d'états,

cf https://mermaid-js.github.io/mermaid/#/stateDiagram
exemple simple : (ça pourrait être une machine de Turing !)

stateDiagram-v2
 [*] --> Still
 Still --> [*]
 Still --> Moving
 Moving --> Still
 Moving --> Crash
 Crash --> [*]

Still

Moving

Crash

Séquences

sequenceDiagram
	participant Alice
	Alice ->>John: Hello John, how are you?
    Alice->>+John: John, can you hear me?
    John-->>-Alice: Hi Alice, I can hear you!
    John-->>Alice: I feel great!
JohnAliceJohnAliceHello John, how are you?John, can you hear me?Hi Alice, I can hear you!I feel great!

(bizarrement les flèches n'apparaissent pas toujours si on a deux panneaux ouverts sur la même note)
Les "+" et "-" servent à activer /désactiver les participants ou acteurs

Autre exemple :

sequenceDiagram
    participant Alice
    participant Bob
    Alice->>John: Hello John, how are you?
    loop Healthcheck
        John->>John: Fight against hypochondria
    end
    Note right of John: Rational thoughts <br/>prevail!
    John-->>Alice: Great!
    John->>Bob: How about you?
    Bob-->>John: Jolly good!
JohnBobAliceJohnBobAliceloop[Healthcheck]Rational thoughts prevail!Hello John, how are you?Fight against hypochondriaGreat!How about you?Jolly good!

Pie chart

Code :

pie
	title utilisateurs
	"mobile": 50
	"desktop": 40
	"tablets": 10
50%40%10%utilisateursmobiledesktoptablets

Diagramme entités-relations

Code :

erDiagram  
 CUSTOMER }|..|{ DELIVERY-ADDRESS : has  
 CUSTOMER ||--o{ ORDER : places  
 CUSTOMER ||--o{ INVOICE : "liable for"  
 DELIVERY-ADDRESS ||--o{ ORDER : receives  
 INVOICE ||--|{ ORDER : covers  
 ORDER ||--|{ ORDER-ITEM : includes  
 PRODUCT-CATEGORY ||--|{ PRODUCT : contains  
 PRODUCT ||--o{ ORDER-ITEM : "ordered in"
CUSTOMERDELIVERY-ADDRESSORDERINVOICEORDER-ITEMPRODUCT-CATEGORYPRODUCThasplacesliable forreceivescoversincludescontainsordered in

Gantt

gantt
title A Gantt Diagram
dateFormat YYYY-MM-DD
section Section
	 A task: a1, 2014-01-01, 30d
	 Another task: after a1, 20d
section Another
	Seconde tâche: 2014-01-12, 12d
	another task: 24d
2014-01-052014-01-122014-01-192014-01-262014-02-022014-02-092014-02-16A taskSeconde tâcheanother taskAnother taskSectionAnotherA Gantt Diagram

Attention, ne jamais mettre d'espace avant "," ou ":"

Sous-graphes

Code Mermaid :

flowchart TB 

subgraph ide1[one]
	a1-->a2 
end
c1-->a2 
style

one

a1

a2

c1

Styles

Code mermaid :

graph LR
 %% styles (a voir:utiliser les classes)
	style A fill:#88f
	style A color:#fff;
	style B fill:#cfc
%% le graphe
	A-->B

A

B

User journey, mais aussi (pourquoi pas) scores d'accomplissement des tâches...

Code :

journey
    title My working day
    section Go to work
      Make tea: 5: Me
      Go upstairs: 3: Me
      Do work: 0: Me, Cat
    section Go home
      Go downstairs: 5: Me
      Sit down: 5: Me
CatMe
Go to work
Go to work
Me
Make tea
Make tea
Me
Go upstairs
Go upstairs
MeCat
Do work
Do work
Go home
Go home
Me
Go downstairs
Go downstairs
Me
Sit down
Sit down
My working day

Liens et callbacks

En cliquant sur "mon Site" on ouvre la page web.

graph LR
	A[mon site]==>B-->C
	click A "http://sboisse.free.fr/index.php" "mon site";
Error parsing Mermaid diagram!

URL.canParse is not a function

Code qui permet de mettre des liens obsidian dans un graphe mermaid : Tout le truc est dans la classe !

graph LR
A[mermaid] --> B 
class A internal-link;

B

Dimensionner les graphiques Mermaid

Dans _Obsidian Plugins 🔌
il faut ajouter le snippet CSS suivant dans le répertoire .obsidian/snippets :

/* positionne la largeur mini et maxi des graphiques mermaid et permet de zoomer*/
.mermaid {
  overflow: scroll;

  >svg {
    transition: max-width 0.5s;
	min-width: 250px;
    max-width: 720px;
    height: auto;
  }

  &:hover>svg {
    max-width: 250%;
  }
}

Ainsi les graphes pourront tous être vus, même les très grands !

Code Mermaid :

A

B

C

D

E

F

G

H

Mermaid vs PlantUML

Un site avec plein d'exemples : PlantUML vs Mermaid (page web)

un plugin qui aide à construire des graphiques mermaid :

Publicité
Commentaires

Commentaires (0) :

Page :



Ajouter un commentaire (pas besoin de s'enregistrer)

Pseudo :
Message :


image de protection
En cliquant sur le bouton "Envoyer" vous acceptez les conditions suivantes : Ne pas poster de message injurieux, obscène ou contraire à la loi, ni de liens vers de tels sites. Respecter la "netiquette", ne pas usurper le pseudo d'une autre personne, respecter les posts faits par les autres. L'auteur du site se réserve le droit de supprimer un ou plusieurs posts à tout moment. Merci !
Ah oui : le bbcode et le html genre <br>, <a href=...>, <b>b etc. ne fonctionnent pas dans les commentaires. C'est voulu.
< Retour en haut de la page