mermaidのグラフの矢印を直角直線にしたい
issueはある
描画の依存関係
おそらくd3
packages配下にあるとか教えてほしいよな…
パーサーとランタイムは別っぽい
フローチャートはこの辺?
エントリーポイントはどこなんだろ?どこかでparser呼んでrenderer読んでるイメージ。
何かrendererが2つある
- packages/mermaid/src/diagrams/flowchart/flowRenderer.js
- packages/mermaid/src/diagrams/flowchart/flowRenderer-v2.js
たぶんv2が使われてる
もとに戻ってエントリーポイントを探すか。
このrender付近っぽい。
どうやらmermaidAPIというのがファサードっぽい。
parseもあった
エントリーポイント探しという意味ではinitialize()っぽいな。
<body>
<script type="module">
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
mermaid.initialize({ startOnLoad: true });
</script>
</body>
addDiagramsでそれぞれの図を追加している。
あとはやっぱりfreezeされてるmermaidAPIのparseとrenderを見れば良いのだろう。
やっぱり描画はrenderの中で行われていてrendererのdrawが呼ばれてるんだな。
flowchartだとこの辺か。
ワークアラウンド
flowchartだけは対応できるみたい。
It looks using
d3
module to draw graph. So I tried wheter otherd3
curves may work, and found otherd3
curve names are available without any Mermaid.js lib modification.Curves
step
,stepBefore
andstepAfter
are close, but no cigar. It would need more work :(
パーサー
- packages配下
- 各種diagrams配下
にある。たぶんパッケージ配下のものがコアライブラリ。
elkって何?
eclipse layout kernelっぽい
directivesで色々いじる
そういう時にはレンダラーをdagreベースのものからelkベースのもの(elkjs)に変更してやると解決することがあります(ただしVersion9.4以上)。
%%{
init:
"flowchart": {
"defaultRenderer": "elk",
"curve": "basis"
}
}%%
利用できそうなconfigは
試してみる string | "dagre-d3" | "dagre-wrapper" | "elk"
%%{init: { 'logLevel': 'debug', 'theme': 'dark', 'flowchart': {'curve': 'liner'} } }%%
flowchart LR
x --> y
x --> z
%%{init: { 'logLevel': 'debug', 'theme': 'dark', 'flowchart': {'defaultRenderer': 'elk', 'curve': 'liner' }} }%%
flowchart LR
x --> y
x --> z
elk関連のissue
たくさんの設定が存在しそう
冒頭のissueのflowchartをelkなどで描画してみる。
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[Car]
default
curve=liner
elk
elk with curve=liner