@cardenelabs/dragon 0.30.0 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +314 -12
- package/dist/index.cjs +6966 -1438
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2150 -118
- package/dist/index.d.ts +2150 -118
- package/dist/index.js +6950 -1440
- package/dist/index.js.map +1 -1
- package/package.json +12 -13
- package/src/compile/actor-ids.ts +6 -15
- package/src/compile/actor-option-notice.ts +379 -0
- package/src/compile/actors.ts +32 -3
- package/src/compile/c4.ts +0 -3
- package/src/compile/chain.ts +43 -4
- package/src/compile/chart-fields.ts +16 -1
- package/src/compile/direction.ts +50 -11
- package/src/compile/edge-option-notice.ts +112 -0
- package/src/compile/flowchart.ts +344 -0
- package/src/compile/funnel.ts +14 -2
- package/src/compile/gantt.ts +141 -36
- package/src/compile/generic.ts +473 -61
- package/src/compile/journey.ts +14 -5
- package/src/compile/kinds.ts +5 -13
- package/src/compile/lanes.ts +95 -13
- package/src/compile/metro.ts +271 -0
- package/src/compile/mind.ts +55 -5
- package/src/compile/notice.ts +51 -4
- package/src/compile/order.ts +62 -0
- package/src/compile/parts.ts +107 -33
- package/src/compile/placement-apply.ts +27 -11
- package/src/compile/quadrant.ts +171 -16
- package/src/compile/record.ts +75 -0
- package/src/compile/row-marks.ts +128 -0
- package/src/compile/sequence.ts +105 -26
- package/src/compile/slug.ts +9 -1
- package/src/compile/stages.ts +247 -0
- package/src/compile/subtitle.ts +15 -2
- package/src/compile/swimlane-marks.ts +87 -0
- package/src/compile/swimlane.ts +13 -14
- package/src/compile/timeline.ts +213 -0
- package/src/compile/topology.ts +3 -9
- package/src/compile/tree.ts +13 -4
- package/src/compile/value-chart.ts +179 -25
- package/src/compile.ts +1550 -370
- package/src/focus.ts +2 -2
- package/src/index.ts +34 -2
- package/src/json-parser.ts +1407 -48
- package/src/keywords.ts +251 -17
- package/src/notation-lint.ts +41 -64
- package/src/schemas/diagram.json +643 -20
- package/src/types.ts +336 -35
- package/src/v05/parser.ts +2451 -271
- package/src/compile/class.ts +0 -100
- package/src/compile/er.ts +0 -44
- package/src/compile/solidity.ts +0 -39
- package/src/compile/state.ts +0 -71
package/README.md
CHANGED
|
@@ -53,7 +53,7 @@ flow:
|
|
|
53
53
|
| 欄 | 何を書くか |
|
|
54
54
|
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
55
55
|
| `title` | 図の題 |
|
|
56
|
-
| `type` | 図種 (`sequence` / `flow` / `
|
|
56
|
+
| `type` | 図種 (`sequence` / `flow` / `flowchart` / `swimlane` / `record` / `topology` / `gantt` / `mind` / `tree` / `c4` / `chart` / その他)。 古い綴りは組に読み替える = `solidity` は `sequence` と `order: 種類`、数を描く 9 つ (`pie` 等) は `chart` と同じ綴りの `shape` |
|
|
57
57
|
| `actors` | 箱 |
|
|
58
58
|
| `flow` | 矢印 |
|
|
59
59
|
| `states` | 状態の初期値 |
|
|
@@ -64,19 +64,138 @@ flow:
|
|
|
64
64
|
| `groups` | 縦列を束ねる枠 |
|
|
65
65
|
| `eyebrow` | 図全体を 1 箱にする図種で、その箱の上に出す小見出し |
|
|
66
66
|
| `axes` | 2 軸で仕分ける図の軸の名前 |
|
|
67
|
+
| `regions` | 2 軸で仕分ける図の区画に出す名前 |
|
|
67
68
|
| `readouts` | 値を見せる部品 (割合の輪 / 数え上げ / 目盛り) |
|
|
68
69
|
| `inputs` | 読む人が動かすつまみ (すべり / 選び / 入り切り など。 書ける種類は、知らない種類を書いた時の知らせが `使える種類 = ...` の形で全て並べる。 選択肢を `{ value, label }` の組で、入り切りを `onLabel` / `offLabel` で書くと、値は綴りのまま名前で描く) |
|
|
69
70
|
| `formulas` | つまみの値から決まる値 (式。 `values` は段が動かす状態を読み、こちらはつまみを読む。 `{ expression, label }` の組で書くと操作部に名札を出す) |
|
|
70
71
|
| `events` | 押下などの出来事で動く仕掛け (相手は名前で指す) |
|
|
71
72
|
| `scrolls` | 巻き上げに応じて進む値 (画面を巻き上げた量から 0 から 1 を作る) |
|
|
72
|
-
| `bands` | 動いている間の帯 (順序図。 `- DB: 1..2`
|
|
73
|
+
| `bands` | 動いている間の帯 (順序図。 `- DB: 1..2` の形で言づての番号の区間を書く。 0 から数える) |
|
|
73
74
|
| `reveal` | 矢印をいつ出すか (`phase` = 段が名指しする矢印はその段まで描かない (既定) / `all` = 最初から全部描く) |
|
|
74
75
|
| `relations` | 触れた箱の関係を光らせるか (`off` = 何もしない (既定) / `hover` = 触れた箱と繋がる線と相手の箱だけが光る) |
|
|
75
76
|
| `direction` | 図の並ぶ向き (`縦` / `横`、英語なら `vertical` / `horizontal`)。 効くのは `flow` と `swimlane` だけ |
|
|
76
|
-
| `
|
|
77
|
+
| `order` | 箱を並べ替える軸 (`種類`、英語なら `kind`)。 効くのは `sequence` だけで、書くと `kind:` の順 (人 → 契約 → 保管 → 出来事) に箱が並ぶ |
|
|
78
|
+
| `shape` | 図種ごとの形。`chart` は `pie` / `bar` / `line` / `gauge` / `radial` / `stat` / `waffle` / `stacked` / `slope` (書かなければ `bar`)、`swimlane` は `stages` / `metro` / `timeline` |
|
|
79
|
+
| `form` | `shape: pie` の見せ方 (`ring` / `arcs` / `table`、和名は `輪` / `積層の弧` / `銘板`)。 `見せ方:` とも書ける |
|
|
80
|
+
| `ticks` | `type: gantt` の目盛りを左から順に並べる (`目盛り:` とも書ける)。 書かなければ工程の始まりから作る |
|
|
81
|
+
| `ganttToday` | `type: gantt` の今日の位置と札 (`{ index, label }`) |
|
|
82
|
+
| `ganttTickLabels` | `type: gantt` の各目盛りに出す名前の並び |
|
|
83
|
+
| `ganttBarEnd` | `position` で帯を `end` の位置までにする |
|
|
84
|
+
| `ganttBarThickness` | `thin` で帯を見本の比の細さにする |
|
|
85
|
+
| `chartSeriesSkipMuted` | `true` で `tone: muted` の項目を系列色の番号から外す |
|
|
86
|
+
| `chartLineSeries` | 折れ線の複数系列 (`points` / `label` / `tone` / `dash` / `marker` / `valueIndexes`)。`marker: dot` は塗った点、`hollow` は中抜きの点、`none` は点を描かない |
|
|
87
|
+
| `chartPieCenterLabel` | 円の中心で合計の下に置く字 |
|
|
88
|
+
| `chartPieTableColumns` | 円の表の列 (`share-value` / `value`) |
|
|
89
|
+
| `chartPieRingWidth` | 円の輪の太さ (`thick` / `thin`) |
|
|
90
|
+
| `chartSlopePeriods` | 傾き図の左右の時点名 2 つ |
|
|
91
|
+
| `chartSlopeEmphasisIds` | 傾き図で主役にする項目の id |
|
|
92
|
+
| `chartSlopeUnit` | 傾き図の値に付ける単位 |
|
|
93
|
+
| `chartStackedPeriods` | 内訳の帯の期間と系列ごとの値 (`{ label, values }`) |
|
|
94
|
+
| `chartStackedRateId` | 内訳の帯の右に割合を出す項目の id |
|
|
95
|
+
| `chartStackedLegendPosition` | 内訳の帯の凡例の位置 (`top` / `bottom`) |
|
|
96
|
+
| `chartGaugeValue` | 半円の固定尺 (`{ max, current, target?, previous?, previousLabel? }`)。`current`・`target`・`previous` は `{名前}` で段の状態を読める。`max` は数だけ |
|
|
97
|
+
| `chartWaffleLegendPosition` | 升目の一覧の位置 (`left` / `right`) |
|
|
98
|
+
| `funnelForm` | 漏斗の形 (`trapezoid` / `proportional-bars`) |
|
|
99
|
+
| `funnelRate` | 漏斗の率。`drop` は前段から減った割合、`conversion` は前段から残った割合、`none` は率を描かない |
|
|
100
|
+
| `quadrantPointLabelSide` | 四象限の座標点の名前を置く側 (`auto` / `right`) |
|
|
101
|
+
| `treeNodeForm` | 木の箱の見せ方 (`accent` / `frame`) |
|
|
102
|
+
| `treeSize` | 木の深さごとの札幅、札高、題・副題の字、同段・段間の隙間 (`{ nodeWidths?, nodeHeight?, titleFontSize?, subtitleFontSize?, siblingGap?, levelGap? }`) |
|
|
103
|
+
| `treeEdgeTone` | 木の枝色の付け方 (`accent` / `depth`) |
|
|
104
|
+
| `treeEdgeHead` | 木の枝先の形 (`none` / `triangle`) |
|
|
105
|
+
| `mindForm` | 放射の箱の見せ方 (`filled` / `outline`) |
|
|
106
|
+
| `mindSize` | 放射の中心・枝・葉の位置・札・字、中心から枝・枝から葉・各行の間隔とずらし (`{ contentOffset?: { x, y }, root?, branch?, leaf?, rootBranchGap?, branchLeafGap?, branchRowGap?, branchRowOffset?, leafRowGap?, leafRowOffset? }`) |
|
|
107
|
+
| `journeyForm` | ジャーニーの段の見せ方 (`bands` / `rules`) |
|
|
108
|
+
| `journeyLineForm` | ジャーニーの点を結ぶ線 (`curve` / `straight`) |
|
|
109
|
+
| `journeyLabels` | ジャーニーの 5 段の名前 (`{ delighted, happy, neutral, frustrated, angry }`) |
|
|
110
|
+
| `journeySize` | ジャーニーの描画面と点列の左右余白 (`{ plotPadding?: { left?, right? }, pointPadding?: { left?, right? } }`) |
|
|
111
|
+
| `sequenceActorForm` | `box` で順序図の参加者を枠で囲む |
|
|
112
|
+
| `sequenceLabelForm` | `kind` で順序図の段に種類印と種類名を添える |
|
|
113
|
+
| `sequenceReturnHead` | `solid` で返す言づてにも塗った三角の矢じりを使う |
|
|
114
|
+
| `sequenceKindLabels` | 順序図の種類名 (`{ call?, return?, fire? }`) を言い換える |
|
|
115
|
+
| `sequenceRowGap` | 順序図の言づての段の間 (正の数、既定 64) |
|
|
116
|
+
| `sequenceGutter` | 順序図の左の札の列の幅。最初の糸は「この幅 + 列幅 / 2」に来る |
|
|
117
|
+
| `sequenceBandWidth` | 順序図の動いている間の帯の幅 |
|
|
118
|
+
| `sequenceSelfLoop` | 順序図の自分へ戻る線 (`{ form?: "orthogonal", width?, drop? }`) |
|
|
119
|
+
| `figureCard` | 図表の見出し帯と足 (`{ label, note? }`) |
|
|
120
|
+
| `figureSize` | 図全体を 1 箱にする図種の札の幅と高さ (`{ width, height }`) |
|
|
121
|
+
| `terminalDecoration` | 端末意匠用の窓操作・字送り・行番号 (`{ windowControls?, cursor?, rowOrdinal? }`) |
|
|
122
|
+
| `cornerForm` | `theme-variants` で矩形札の一様角と手描き角を意匠から選ぶ |
|
|
123
|
+
| `figureKindLabel` | 階層図・放射図の種類札 (`{ text, x?, y?, fontSize?, fontWeight?, letterSpacing? }`) |
|
|
124
|
+
| `figureInset` | 図表札の飾りの凹み面 (`{ top?, right?, bottom?, left?, radius? }`) |
|
|
125
|
+
| `chartBarSize` | 棒の目盛り・値・名前・余白・棒幅 |
|
|
126
|
+
| `chartBarShape` | 棒を分割するか上だけ丸めた一体の形にするか (`split` / `top-rounded`) |
|
|
127
|
+
| `chartLineSize` | 折れ線の値札間隔・目盛り・時点・点・描画面と点列の余白・時点名の基線 |
|
|
128
|
+
| `chartPieSize` | 円の一覧幅・字・行間・余白・外半径・中心 x |
|
|
129
|
+
| `chartWaffleSize` | 升目図の左端と升目の送り (`{ gridLeft?, cellPitch? }`) |
|
|
130
|
+
| `chartSlopeLabelTemplate` | 傾き図の左右の札 (`{ left?, right? }`、`{name}` / `{value}` / `{unit}`) |
|
|
131
|
+
| `chartSlopeSize` | 傾き図の点・時点・札・軸・描画面と点列の上下余白 |
|
|
132
|
+
| `chartStackedLayout` | 内訳の帯の凡例列・間隔・帯・字・凡例の縦ずらし |
|
|
133
|
+
| `chartGaugeSize` | 半円の帯・外半径・上位置・値の字 |
|
|
134
|
+
| `ganttSize` | 工程名の列・時間軸の右余白・目盛り・帯・節目・依存線の寸法 |
|
|
135
|
+
| `quadrantLabelPosition` | `outside-corners` で四象限の区画名を角の外へ置く |
|
|
136
|
+
| `quadrantSize` | 四象限の面・点・字・札間の寸法 |
|
|
137
|
+
| `theme` | 図の意匠 (`kinari` = 生成りに茶 / `celadon` = 青磁に墨 / `blueprint` = 図面 / `letterpress` = 活版 / `catalog` = 図録 / `terminal` = 端末 / `sketch` = 手描き / `neon` = 電飾 / `relief` = 浮彫、日本語なら `生成り` / `青磁` / `図面` / `活版` / `図録` / `端末` / `手描き` / `電飾` / `浮彫`)。 `palette:` も別名として読み、両方書くと `theme:` が勝って知らせが出る |
|
|
138
|
+
| `legend` | 図の下へ置く凡例。 `凡例:` とも書ける。 印付きは `{ mark, text, tone?, lineStyle? }`、注記は `{ text, align?, lead? }`。和名なら `{ 印, 説明 }`。 印の種類は下の節を参照 |
|
|
139
|
+
| `legendFontSize` | 凡例の字の大きさ |
|
|
140
|
+
| `legendOffset` | 図全体の凡例の位置をずらす (`{ x?, y? }`) |
|
|
141
|
+
| `edgeEndGap` | 線の両端と発着する箱の縁との隙間 (0 以上) |
|
|
142
|
+
| `stageHeader` | `shape: stages` で全意匠に共通して使う見出し寸法 (`leftPad` / `topPad` / `numberSize` / `gap` / `nameSize` / `bottomPad`) |
|
|
143
|
+
| `stageLayout` | `shape: stages` の列幅・列間・戻る線の迂回寸法 (`columnWidths` / `columnGap` / `backDetourTopGap` / `backDetourSideGap` / `backDetourTargetInset`) |
|
|
77
144
|
|
|
78
145
|
<!-- notation:top-level:end -->
|
|
79
146
|
|
|
147
|
+
### 円の見せ方、四象限の座標、ガントの細かな位置
|
|
148
|
+
|
|
149
|
+
円は `form: table` (`見せ方: 銘板`) で名前と値の表、`arcs` で積層した弧、`ring` で輪になる。
|
|
150
|
+
書かなければ従来どおり輪で、円以外に書いた欄と読めない値は知らせて無視する。
|
|
151
|
+
|
|
152
|
+
四象限の箱には `at: [0.2, 0.8]` (`点の位置`) の形で x、y の順に座標を書ける。左下が
|
|
153
|
+
`[0, 0]`、右上が `[1, 1]` で、数の代わりに `"{状態名}"` も書ける。0..1 の範囲外は知らせ、
|
|
154
|
+
CDL の描画時に最寄りの端へ寄せる。区画の語と併記した時は座標を採り、象限が食い違えば知らせる。
|
|
155
|
+
|
|
156
|
+
ガントは `ticks: [6月, 7月, 8月, 9月, 10月]` で尺と目盛り順を固定する。始まりと終わりは
|
|
157
|
+
`"6月+0.55"` のように月内の割合 (0..1) を足せる。始まりの割合を省けば月初、`end` の割合を
|
|
158
|
+
省けば月末である。CDL は 1 目盛り未満の帯を描けないため、変換後の終わりが始まりより前になる
|
|
159
|
+
指定は知らせて 1 目盛りの幅へ倒す。工程が指さない目盛りの字は、CDL に独立した目盛り名の欄が
|
|
160
|
+
無いため空になる。
|
|
161
|
+
|
|
162
|
+
### 図の下に凡例を書く
|
|
163
|
+
|
|
164
|
+
`legend:` の下へ、印と説明を中括弧で 1 項目ずつ書く。全ての図種で、図の下に指定順の横一列で描かれる。`legend:` を書かない図の配置と出力は変わらない。
|
|
165
|
+
|
|
166
|
+
```yaml
|
|
167
|
+
legend:
|
|
168
|
+
- { mark: diamond, text: "分かれ道" }
|
|
169
|
+
- { mark: filled-circle, text: "始まり" }
|
|
170
|
+
- { mark: line-diamond-hollow, text: "参照", tone: accent, lineStyle: dotted }
|
|
171
|
+
- { text: "注: 点線は参照", align: end, lead: "注:" }
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
最上位の語、項目名、印はいずれも和名で書ける。英語と和名を同じ項目に併記した時は英語を使う。
|
|
175
|
+
|
|
176
|
+
```yaml
|
|
177
|
+
凡例:
|
|
178
|
+
- { 印: 菱形, 説明: "分かれ道" }
|
|
179
|
+
- { 印: 塗った丸, 説明: "始まり" }
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
| `mark` | `印` |
|
|
183
|
+
| --- | --- |
|
|
184
|
+
| `diamond` | 菱形 |
|
|
185
|
+
| `filled-circle` | 塗った丸 |
|
|
186
|
+
| `double-circle` | 二重丸 |
|
|
187
|
+
| `dotted-line` | 点線 |
|
|
188
|
+
| `solid-line` | 実線 |
|
|
189
|
+
| `curved-line` | 曲線 |
|
|
190
|
+
| `rounded-label` | 角丸の札 |
|
|
191
|
+
| `numbered-circle` | 番号の丸 |
|
|
192
|
+
| `station` | 駅 |
|
|
193
|
+
| `arrow` | 矢印 |
|
|
194
|
+
| `line-triangle-hollow` | 白抜き三角の線端 |
|
|
195
|
+
| `line-diamond-hollow` | 白抜き菱の線端 |
|
|
196
|
+
| `line-diamond-solid` | 塗った菱の線端 |
|
|
197
|
+
| `rounded-box` | 角丸の箱 |
|
|
198
|
+
|
|
80
199
|
### 箱に書ける欄
|
|
81
200
|
|
|
82
201
|
`- 名前: { 欄: 値, ... }` の形で書く。
|
|
@@ -87,21 +206,43 @@ flow:
|
|
|
87
206
|
| --------------- | ------------------------------------------------------------------------------ |
|
|
88
207
|
| `kind` | 見た目の種別 (`card` / `storage` / `service` / `person` 等、`種類` とも書ける)。 種別に無い名前は部品の名前として部品の一覧 (`partsCatalog`) から引き、一覧にも無ければ種別を書かなかった箱になる。 部品を持つ一覧を渡した時は、書いた行に知らせ (`onNotice`) が出て綴りの近い名前を案内する |
|
|
89
208
|
| `subtitle` | 題の下の補足 (`補足` とも書ける) |
|
|
209
|
+
| `kindForm` | `icon` で kind の意味を保ったまま共通枠の部品箱にする |
|
|
210
|
+
| `icon` | 共通枠へ描く線画 (`person` / `box` / `database` / `lightning` / `cloud` / `terminal`) |
|
|
211
|
+
| `emptyRowsNote` | 行を持たない `storage` に行の代わりに描く注記 |
|
|
212
|
+
| `titleAlign` | `center` で `storage` の題と小見出しを中央へ揃える |
|
|
213
|
+
| `rowRules` | `true` で `storage` の見出し下と行の間に罫線を描く |
|
|
214
|
+
| `rowDividerForm` | `full` で `storage` の見出し下の線を箱の左右端まで引く |
|
|
215
|
+
| `rowWell` | 行のまとまりを収める透明な面 (`{ top?, right?, bottom?, left?, radius? }`。空 object は 2 / 16 / 4 / 16 / 15) |
|
|
216
|
+
| `rowMarkForm` | `tone` で行頭の印を形でなく色の段で分ける |
|
|
217
|
+
| `rowLayout` | `storage` の箱上端からの題の基準線・1 行目の基準線・行間 (`{ titleBaseline?, rowTop?, rowPitch? }`) |
|
|
218
|
+
| `rowStripe` | `false` で `storage` の行の縞を描かない |
|
|
219
|
+
| `nestIn` | 親の `storage` の名前。書いた表を親の内側へ入れる |
|
|
220
|
+
| `figureCard` | `storage` または `kindForm: icon` の足 (`{ label, note? }`) |
|
|
221
|
+
| `stationNamePosition` | 路線図の駅名を下へ置く (`bottom`) |
|
|
222
|
+
| `subtitlePlacement` | 時間軸の担当を札の右へ置く (`right`) |
|
|
223
|
+
| `titleFontSize` | 流れ図の `function` の札の題の大きさ |
|
|
224
|
+
| `markGap` | 流れ図の始まり・終わりの印と次の箱との間 |
|
|
90
225
|
| `eyebrow` | 題の上の小見出し |
|
|
91
226
|
| `value` | 箱に出す値 (`値` とも書ける) |
|
|
92
227
|
| `previous` | 前の時点の値 (`前の値` とも書ける)。 `type: stacked` が 2 本目の帯として描く |
|
|
93
228
|
| `rows` | 箱の中に並べる行 (`行` とも書ける) |
|
|
94
|
-
| `marks` | 行頭の印 (`印`
|
|
229
|
+
| `marks` | 行頭の印 (`印` とも書ける。`rows` と同じ並び)。文字列のほか `{ mark, tone? }` で `primary` / `muted` の色の段を書ける |
|
|
230
|
+
| `stage` | `shape: stages` の泳法図で箱を入れる段階 (`段階` とも書ける) |
|
|
95
231
|
| `lane` | どの縦列に置くか |
|
|
96
232
|
| `stack` | 縦列の中の何段目に置くか |
|
|
97
233
|
| `initial` | 状態遷移図で始まりの状態か |
|
|
98
234
|
| `final` | 状態遷移図で終わりの状態か |
|
|
99
235
|
| `tone` | 色 |
|
|
100
236
|
| `color` | 色 (`tone` と同じ意味。 両方書いた時は `tone` を採る) |
|
|
101
|
-
| `touchpoint` |
|
|
102
|
-
| `opportunity` |
|
|
237
|
+
| `touchpoint` | ユーザージャーニーで、利用者が触れる場所 |
|
|
238
|
+
| `opportunity` | ユーザージャーニーで、改善の余地 |
|
|
239
|
+
| `opportunityPosition` | ユーザージャーニーで、改善の余地を置く場所 (`below-chart` / `below-point`) |
|
|
103
240
|
| `owner` | 工程の並びで、担当 |
|
|
104
241
|
| `end` | 工程の並びで、終わりの位置。 始まりより前の時期は始まりと同じに倒し、知らせ (`onNotice`) が出る |
|
|
242
|
+
| `startLabel` | 工程の始まりに出す札。節目の位置名とは別に書ける |
|
|
243
|
+
| `milestone` | `true` なら工程を帯ではなく節目の菱形で描く |
|
|
244
|
+
| `emphasis` | `primary` なら工程の帯または `storage` の枠を主役として描く |
|
|
245
|
+
| `at` | 四象限の点の座標 `[x, y]` (`点の位置` とも書ける)。 左下が 0,0、右上が 1,1 |
|
|
105
246
|
| `posX` | 置く場所の横位置 |
|
|
106
247
|
| `posY` | 置く場所の縦位置 |
|
|
107
248
|
| `posW` | 箱の幅 |
|
|
@@ -128,24 +269,33 @@ flow:
|
|
|
128
269
|
|
|
129
270
|
| 欄 | 何を書くか |
|
|
130
271
|
| ---------------- | ------------------------------------------------------------------- |
|
|
131
|
-
| `sub` |
|
|
132
|
-
| `tailSub` |
|
|
272
|
+
| `sub` | 説明の下の補足。`relation` と一緒に書いた record では行き先の端の多重度 |
|
|
273
|
+
| `tailSub` | 出どころ側の端に添える字 (`1` 等)。`relation` と一緒なら UML 関係の多重度 |
|
|
133
274
|
| `guard` | 状態遷移の条件 |
|
|
134
275
|
| `cardinality` | ER 図の関係の多重度 (`1:1` / `1:N` / `N:1` / `N:M` / `0..1` / `1..*`)。 両端の形が語から決まり (`tailHead` / `head` を書けばそちらが勝つ)、語は説明の下の行に出る。 6 語以外の語と、ER 図以外に書いた多重度は端の形にならず、知らせ (`onNotice`) が出る |
|
|
135
276
|
| `widthBind` | 線の太さを値に追随させる (状態やつまみの名前を `{名前}` の形で書く) |
|
|
136
277
|
| `strokeBind` | 線の色を値に追随させる (`widthBind` と同じ読み方) |
|
|
137
278
|
| `dashOffsetBind` | 破線の位置を値に追随させる (流れているように見せる) |
|
|
138
279
|
| `side` | 矢印がどの辺から出るか (`top` / `right` / `bottom` / `left`) |
|
|
139
|
-
| `
|
|
140
|
-
| `
|
|
280
|
+
| `fromSide` | 矢印が出どころのどの辺から出るか (`top` / `right` / `bottom` / `left`) |
|
|
281
|
+
| `toSide` | 矢印が行き先のどの辺へ入るか (`top` / `right` / `bottom` / `left`) |
|
|
282
|
+
| `head` | 矢印の先の形 (`triangle` 継承・実装 / `diamond` 集約・コンポジション / `open` 関連・依存 / `dot` 点 / `crow` 多 / `one` `zero-one` `many` `zero-many` ER の端 / `none` 描かない) |
|
|
283
|
+
| `tailHead` | 出どころ側の端の形 (`dot` で点。ER は端ごとに違う個数を示すので両端に要る) |
|
|
141
284
|
| `headFill` | 端の印の塗り (`solid` 塗る / `hollow` 白抜き) |
|
|
142
285
|
| `tailHeadFill` | 出どころ側の印の塗り |
|
|
143
|
-
| `relation` |
|
|
286
|
+
| `relation` | record に書く UML 関係の種類 (`extends` 継承 / `implements` 実装 / `aggregates` 集約 / `composes` コンポジション / `associates` 関連 / `uses` 依存)。 書くと線と端の形と塗りと付く側がまとめて決まる |
|
|
144
287
|
| `kind` | 順序図の言づての種類 (`call` 呼ぶ / `return` 返す / `fire` 投げる) |
|
|
145
288
|
| `role` | 辺の役目 (`main` 主となる道)。 書いた辺だけ「いま」 の色で引く。 主となる 1 本 (または 1 続き) にだけ書く |
|
|
146
289
|
| `labelPlate` | 説明文の下地を敷くか (`false` で外す)。 丸い下地は箱と同じ形なので、罫の細い図では名前が小さな箱に見える |
|
|
147
290
|
| `labelOffsetX` | 説明文の位置を横にずらす |
|
|
148
291
|
| `labelOffsetY` | 説明文の位置を縦にずらす |
|
|
292
|
+
| `posX1` | 線の出どころ側を固定する world x 座標 |
|
|
293
|
+
| `posY1` | 線の出どころ側を固定する world y 座標 |
|
|
294
|
+
| `posX2` | 線の行き先側を固定する world x 座標 |
|
|
295
|
+
| `posY2` | 線の行き先側を固定する world y 座標 |
|
|
296
|
+
| `waypoints` | 4 つの固定端点と一緒に書く直角折れ線の途中点 (`[{ x, y }, ...]`) |
|
|
297
|
+
| `labelCollision` | `auto` で自動回避、`author` で作者が書いた札位置を保つ |
|
|
298
|
+
| `labelSize` | 説明文の札の幅・高さ・字 (`{ width?, height?, fontSize? }`) |
|
|
149
299
|
| `overlay` | `true` で説明文を線の上に重ねる (分岐図の条件ラベル用) |
|
|
150
300
|
| `fromPartNode` | 出どころが部品 (kind に部品の名前を書いた箱) の時、矢印を繋ぐ部品の中の要素の id。 要素を 1 つだけ持つ部品は書かなくてもその要素に繋がり、2 つ以上持つ部品は書かないと矢印を外して知らせる |
|
|
151
301
|
| `toPartNode` | 行き先が部品の時、矢印を繋ぐ部品の中の要素の id (`fromPartNode` と同じ読み方) |
|
|
@@ -154,8 +304,155 @@ flow:
|
|
|
154
304
|
|
|
155
305
|
## 記法の癖
|
|
156
306
|
|
|
307
|
+
### 分かれ道の図の形
|
|
308
|
+
|
|
309
|
+
`type: flowchart` は、既定の横向きでは普通の手順を小見出しの無い札、`decision` を菱形、
|
|
310
|
+
題を書かない `mark-start` / `mark-end` を塗った丸 / 二重丸で描く。印に `title:` を書いた時は、
|
|
311
|
+
開始・終了の小見出しを持つ札のままにする。`loop` も「繰り返し」の小見出しを持つ札のままにする。
|
|
312
|
+
`database` など、そのほかに種類を明記した箱は、横向きでも書いた種類の見た目を保つ。
|
|
313
|
+
`direction: 縦` では、担当と種類を札の小見出しへまとめる従来の描き方を保つ。
|
|
314
|
+
|
|
157
315
|
### 箱の `lane:` が効く図種は限られる
|
|
158
316
|
|
|
317
|
+
`type: swimlane` と `shape: stages` を組み合わせると、`stage:` (`段階:`) ごとに同じ上端と
|
|
318
|
+
高さの列を左から並べ、列の見出しに「段階 N」と段階の名前を出す。箱は列の中へ書いた順に積む札
|
|
319
|
+
(`card`) になり、書いた `kind` は効かない (知らせが 1 件出る)。この形では `lane:` は縦列ではなく
|
|
320
|
+
担当を表し、札の右に小さな字で出る。`lanes:` に同じ id の `label` があれば、その名前を使う。
|
|
321
|
+
|
|
322
|
+
列の中の札は真下の線で結び、右の列へ進む線は列の間を曲線で渡る。札は左の列から入る線が
|
|
323
|
+
真横に通る段から積み始める。左の列や同じ列の上の札へ戻る線は、列の見出しより上を回る。
|
|
324
|
+
|
|
325
|
+
```yaml
|
|
326
|
+
type: swimlane
|
|
327
|
+
shape: stages
|
|
328
|
+
|
|
329
|
+
actors:
|
|
330
|
+
- 受付: { stage: 申請, lane: front }
|
|
331
|
+
- 確認: { 段階: 審査, lane: review }
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
`shape: metro` は担当 (`lane`) ごとに横の線路を 1 本作り、箱を駅として左から並べる。
|
|
335
|
+
`lanes:` の `label` は担当の名札の名前、`subtitle` はその下の補足になり、名札から線路の右端まで
|
|
336
|
+
一点鎖線の案内線を引く。
|
|
337
|
+
担当が替わる線は、横線と 45 度の斜線をつないだ乗り換え線になる。
|
|
338
|
+
|
|
339
|
+
```yaml
|
|
340
|
+
type: swimlane
|
|
341
|
+
shape: metro
|
|
342
|
+
|
|
343
|
+
lanes:
|
|
344
|
+
shipper: { label: 荷主, subtitle: 頼む人 }
|
|
345
|
+
courier: { label: 配送便, subtitle: 運ぶ }
|
|
346
|
+
|
|
347
|
+
actors:
|
|
348
|
+
- 始まり: { kind: mark-start, lane: shipper }
|
|
349
|
+
- 集荷を頼む: { lane: shipper }
|
|
350
|
+
- 在宅?: { kind: decision, lane: courier }
|
|
351
|
+
- 受け取る: { lane: shipper }
|
|
352
|
+
- 持ち戻る: { lane: courier }
|
|
353
|
+
- 終わり: { kind: mark-end, lane: shipper }
|
|
354
|
+
|
|
355
|
+
flow:
|
|
356
|
+
- 始まり -> 集荷を頼む
|
|
357
|
+
- 集荷を頼む -> 在宅?
|
|
358
|
+
- 在宅? -> 受け取る: "はい"
|
|
359
|
+
- 在宅? -> 持ち戻る: "いいえ"
|
|
360
|
+
- 持ち戻る -> 集荷を頼む: "翌日もう一度" (dashed)
|
|
361
|
+
- 受け取る -> 終わり
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
担当を書かない箱は、その箱の名前を線路名に使い、図全体で 1 件知らせる。
|
|
365
|
+
分かれ道から出る 1 本目は「はい」の色、2 本目以降は「いいえ」の色になり、後ろへ続く線と駅も
|
|
366
|
+
同じ色を引き継ぐ。
|
|
367
|
+
同じ担当へ向かう 2 本目以降の枝の駅は分かれ道の真下へ下ろし、横の線路上の駅としては数えない。
|
|
368
|
+
本線と「はい」「いいえ」の実線には矢じりを付けない。
|
|
369
|
+
前の駅へ戻る `(dashed)` の線は点線になり、戻り先の駅の下へ入る矢印を付ける。
|
|
370
|
+
|
|
371
|
+
`animation` がある路線図でも全ての線を描く。
|
|
372
|
+
初めて `focus` される段がまだ来ていない線には `data-cdl-pending="true"` が付き、画面側でまだの区間を
|
|
373
|
+
薄く見せられる。
|
|
374
|
+
|
|
375
|
+
`shape: timeline` は普通の段へ 1 から番号を振り、丸い番号を実線の縦軸上へ置く。
|
|
376
|
+
札は `card` で固定し、札を持つ段の上から順に軸の左右へ交互に並べる。
|
|
377
|
+
`lane` の名前は札の右端へ担当として添え、札から同じ段の番号へ点線の補助線を引く。
|
|
378
|
+
|
|
379
|
+
```yaml
|
|
380
|
+
type: swimlane
|
|
381
|
+
shape: timeline
|
|
382
|
+
|
|
383
|
+
lanes:
|
|
384
|
+
front: { label: 窓口 }
|
|
385
|
+
review: { label: 審査係 }
|
|
386
|
+
|
|
387
|
+
actors:
|
|
388
|
+
- 受付: { lane: front }
|
|
389
|
+
- 審査: { lane: review }
|
|
390
|
+
- 修正: { lane: front }
|
|
391
|
+
|
|
392
|
+
flow:
|
|
393
|
+
- 受付 -> 審査
|
|
394
|
+
- 審査 -> 修正
|
|
395
|
+
- 修正 -> 審査
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
`decision` からだけ入る普通の段のうち、`decision` の直後に書かれていない段は分かれ道の脇へ置く。
|
|
399
|
+
脇の札は番号と補助線を持たず、分かれ道と同じ高さで担当を名前の下へ中央揃えで置く。
|
|
400
|
+
脇の札は、軸から札の内側までを見本の 220 以上とする。
|
|
401
|
+
戻る線を持つ脇の札は、軸から札の内側まで 220 空ける。
|
|
402
|
+
普通の段の間は見本どおり 125 とする。
|
|
403
|
+
次の段へ進む線は番号か軸上の印どうしを結び、終わりへ入る線を除いて矢頭を付けない。
|
|
404
|
+
線に書いた色と種類は軸上でも保ち、分かれ道から色付きの線で入る番号はその線と同じ色を持つ。
|
|
405
|
+
字のある線には `overlay: true` を渡し、描く側が線上に置ける札は線へ重ねる。
|
|
406
|
+
固定 7 意匠では線の札を success / error の線色で塗り、高さ 40・字 21 の太字にする。角は通常 9、端末 4、浮彫 20 とする。
|
|
407
|
+
電飾の分かれ道は面 `#09070f`、水色 `#00e5ff` の 3 の縁と同色の光で描く。
|
|
408
|
+
軸と「はい」と戻る線は 6、「いいえ」は 5、補助線は 2、番号の縁は 4、終わりの外輪は 3.5 とする。
|
|
409
|
+
前の段へ戻る線は札どうしを `back-detour` で結び、それ以外の分かれ道は札か軸上の印を結ぶ。
|
|
410
|
+
戻る線は太さ 6、丸い線端、`0 9.6` の細かな点の並びで描く。
|
|
411
|
+
2 段以上前へ戻る線は、道筋が途中の札や番号と交わる時だけ、それらを避けた一番近い外側の列を回る。
|
|
412
|
+
交わらない線の道筋は変えず、外側を回る線の札は横の区間の中点に置く。
|
|
413
|
+
|
|
414
|
+
戻る線には `fromSide` / `toSide` を書ける。時間軸は右から右、段の箱は右から上へ結ぶ。
|
|
415
|
+
`leaderTo` の無い脇の札は `subtitlePlacement: right` で担当を右へ置ける。
|
|
416
|
+
|
|
417
|
+
### 段の箱・路線図・時間軸に分かれ道と始まりと終わりを書く
|
|
418
|
+
|
|
419
|
+
泳法図の3形では、箱の `kind` に `decision` / `mark-start` / `mark-end` を書ける。
|
|
420
|
+
同じ印でも、形に応じて次のように描く。
|
|
421
|
+
|
|
422
|
+
| 形 | `decision` | `mark-start` | `mark-end` |
|
|
423
|
+
|---|---|---|---|
|
|
424
|
+
| `shape: stages` | 札の右へ「分かれ道」を添える | 描かない | 描かない |
|
|
425
|
+
| `shape: metro` | 線路上の分かれ道 | 線路の始まり | 線路の終わり |
|
|
426
|
+
| `shape: timeline` | 軸上の分かれ道 | 描かない | 軸上の終わり |
|
|
427
|
+
|
|
428
|
+
描かない印の前後に線がある時は、前の段と後ろの段を直接結ぶ。
|
|
429
|
+
始まりから出る線だけ、または終わりへ入る線だけのように片側しかない線は図から外す。
|
|
430
|
+
|
|
431
|
+
```yaml
|
|
432
|
+
title: 荷物を届ける
|
|
433
|
+
type: swimlane
|
|
434
|
+
shape: timeline
|
|
435
|
+
|
|
436
|
+
actors:
|
|
437
|
+
- 始まり: { kind: mark-start, lane: 荷主 }
|
|
438
|
+
- 配達に出る: { lane: 配送便 }
|
|
439
|
+
- 在宅?: { kind: decision, lane: 配送便 }
|
|
440
|
+
- 受け取る: { lane: 荷主 }
|
|
441
|
+
- 持ち戻る: { lane: 配送便 }
|
|
442
|
+
- 終わり: { kind: mark-end, lane: 荷主 }
|
|
443
|
+
|
|
444
|
+
flow:
|
|
445
|
+
- 始まり -> 配達に出る
|
|
446
|
+
- 配達に出る -> 在宅?
|
|
447
|
+
- 在宅? -> 受け取る: "はい" (success)
|
|
448
|
+
- 在宅? -> 持ち戻る: "いいえ" (error)
|
|
449
|
+
- 持ち戻る -> 配達に出る: "翌日もう一度" (error, dashed)
|
|
450
|
+
- 受け取る -> 終わり
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
分かれ道から進む線には「はい」「いいえ」のような答えを書く。
|
|
454
|
+
前の段へ戻る線は、説明の後ろへ `(dashed)` を添えると破線になる。
|
|
455
|
+
|
|
159
456
|
縦列を並べるために使う図種 (`flow` / `topology` / `swimlane`) では効く。 縦列が骨格その
|
|
160
457
|
ものになる図種 (`sequence` は縦列がそのまま時間軸の線) では効かず、知らせが出る。
|
|
161
458
|
|
|
@@ -176,6 +473,7 @@ actors:
|
|
|
176
473
|
|
|
177
474
|
`lanes:` の id は組み立て側が作る形に合わせて、字 / 数 / 下線 / hyphen を受ける
|
|
178
475
|
(`lane-idle` のような自動で作られた縦列の幅も書き直せる)。
|
|
476
|
+
`label` は縦列の名前、`subtitle` はその補足で、通常の `topology` / `flow` の縦列見出しにも使える。
|
|
179
477
|
|
|
180
478
|
`groups:` は並べた縦列のうち何本かを 1 つの枠で囲む。 枠は縦列の位置が決まった後に、束ねた縦列と
|
|
181
479
|
中の箱を全て含む位置と大きさで描かれ、縦列と箱の位置は組を書かない図と変わらない。
|
|
@@ -260,7 +558,7 @@ animation:
|
|
|
260
558
|
|
|
261
559
|
### 順序図の段は `focus:` で強調する言づてを選ぶ
|
|
262
560
|
|
|
263
|
-
`sequence`
|
|
561
|
+
`sequence` の図は 1 枚の板に言づてを行で並べる。 段ごとに 1 通を強調し、それより前は
|
|
264
562
|
描き済みとして残し、後ろは隠す。 どの言づてを強調するかは段の `focus:` から決まる。
|
|
265
563
|
|
|
266
564
|
| `focus:` に書いたもの | 合う言づて |
|
|
@@ -314,6 +612,10 @@ animation:
|
|
|
314
612
|
|
|
315
613
|
- `parseTextDsl(src: string): ParseResult` ... v0.4 parser、 `textDslToDiagram` に移行推奨
|
|
316
614
|
|
|
615
|
+
組み立てた図は、色味の有無にかかわらず `textMetrics: "widest"` を持つ。比例字と等幅字の
|
|
616
|
+
広い方で箱・札を測るため、色味を替えても骨組みは変わらない。従来の比例字だけの配置に比べ、
|
|
617
|
+
字に合わせて幅が決まる箱や札は少し広がることがある。記法から測り方を指定する欄は持たない。
|
|
618
|
+
|
|
317
619
|
## LLM 向け JSON DSL
|
|
318
620
|
|
|
319
621
|
LLM (Anthropic Claude / OpenAI GPT) が structured output で確実に diagram を生成できるよう、 YAML DSL と 1:1 対応する JSON 記法を提供する。
|