@diagrammo/dgmo 0.8.21 → 0.8.23
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/AGENTS.md +2 -1
- package/README.md +1 -0
- package/dist/cli.cjs +145 -93
- package/dist/editor.cjs +20 -3
- package/dist/editor.cjs.map +1 -1
- package/dist/editor.js +20 -3
- package/dist/editor.js.map +1 -1
- package/dist/highlight.cjs +15 -2
- package/dist/highlight.cjs.map +1 -1
- package/dist/highlight.js +15 -2
- package/dist/highlight.js.map +1 -1
- package/dist/index.cjs +20843 -14937
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +426 -17
- package/dist/index.d.ts +426 -17
- package/dist/index.js +20795 -14912
- package/dist/index.js.map +1 -1
- package/dist/internal.cjs +380 -0
- package/dist/internal.cjs.map +1 -0
- package/dist/internal.d.cts +179 -0
- package/dist/internal.d.ts +179 -0
- package/dist/internal.js +337 -0
- package/dist/internal.js.map +1 -0
- package/docs/guide/chart-cycle.md +156 -0
- package/docs/guide/chart-journey-map.md +179 -0
- package/docs/guide/chart-pyramid.md +111 -0
- package/docs/guide/chart-sitemap.md +18 -1
- package/docs/guide/chart-tech-radar.md +219 -0
- package/docs/guide/registry.json +6 -0
- package/docs/language-reference.md +177 -6
- package/gallery/fixtures/boxes-and-lines.dgmo +10 -3
- package/gallery/fixtures/c4-full.dgmo +2 -2
- package/gallery/fixtures/cycle/ooda-loop.dgmo +25 -0
- package/gallery/fixtures/cycle/pdca-circle-nodes.dgmo +12 -0
- package/gallery/fixtures/cycle/pdca-minimal.dgmo +6 -0
- package/gallery/fixtures/cycle/sprint-cycle-span.dgmo +17 -0
- package/gallery/fixtures/gantt-full.dgmo +2 -2
- package/gallery/fixtures/gantt.dgmo +2 -2
- package/gallery/fixtures/infra-full.dgmo +2 -2
- package/gallery/fixtures/infra.dgmo +1 -1
- package/gallery/fixtures/pyramid/dikw.dgmo +17 -0
- package/gallery/fixtures/pyramid/inverted-funnel.dgmo +16 -0
- package/gallery/fixtures/pyramid/minimal.dgmo +5 -0
- package/gallery/fixtures/sequence-tags-protocols.dgmo +2 -2
- package/gallery/fixtures/sequence-tags.dgmo +2 -2
- package/gallery/fixtures/tech-radar-dense.dgmo +77 -0
- package/gallery/fixtures/tech-radar.dgmo +36 -0
- package/gallery/fixtures/timeline.dgmo +1 -1
- package/package.json +11 -1
- package/src/boxes-and-lines/layout.ts +309 -33
- package/src/boxes-and-lines/parser.ts +86 -10
- package/src/boxes-and-lines/renderer.ts +250 -91
- package/src/boxes-and-lines/types.ts +1 -1
- package/src/c4/layout.ts +8 -8
- package/src/c4/parser.ts +35 -2
- package/src/c4/renderer.ts +19 -3
- package/src/c4/types.ts +1 -0
- package/src/chart.ts +14 -7
- package/src/cli.ts +5 -35
- package/src/completion.ts +233 -41
- package/src/cycle/layout.ts +723 -0
- package/src/cycle/parser.ts +352 -0
- package/src/cycle/renderer.ts +566 -0
- package/src/cycle/types.ts +98 -0
- package/src/d3.ts +107 -8
- package/src/dgmo-router.ts +82 -3
- package/src/echarts.ts +8 -5
- package/src/editor/dgmo.grammar +5 -1
- package/src/editor/dgmo.grammar.js +1 -1
- package/src/editor/keywords.ts +17 -0
- package/src/gantt/parser.ts +2 -8
- package/src/graph/flowchart-parser.ts +15 -21
- package/src/graph/state-parser.ts +5 -10
- package/src/index.ts +63 -2
- package/src/infra/layout.ts +218 -74
- package/src/infra/parser.ts +32 -8
- package/src/infra/renderer.ts +14 -8
- package/src/infra/types.ts +10 -3
- package/src/internal.ts +16 -0
- package/src/journey-map/layout.ts +386 -0
- package/src/journey-map/parser.ts +540 -0
- package/src/journey-map/renderer.ts +1521 -0
- package/src/journey-map/types.ts +47 -0
- package/src/kanban/parser.ts +3 -10
- package/src/kanban/renderer.ts +31 -15
- package/src/mindmap/parser.ts +12 -18
- package/src/mindmap/renderer.ts +14 -13
- package/src/mindmap/text-wrap.ts +22 -12
- package/src/mindmap/types.ts +2 -2
- package/src/org/collapse.ts +81 -0
- package/src/org/parser.ts +2 -6
- package/src/org/renderer.ts +212 -4
- package/src/pyramid/parser.ts +172 -0
- package/src/pyramid/renderer.ts +684 -0
- package/src/pyramid/types.ts +28 -0
- package/src/render.ts +2 -8
- package/src/sequence/parser.ts +62 -20
- package/src/sequence/renderer.ts +146 -40
- package/src/sharing.ts +1 -0
- package/src/sitemap/layout.ts +21 -6
- package/src/sitemap/parser.ts +26 -17
- package/src/sitemap/renderer.ts +34 -0
- package/src/sitemap/types.ts +1 -0
- package/src/tech-radar/index.ts +14 -0
- package/src/tech-radar/interactive.ts +1112 -0
- package/src/tech-radar/layout.ts +190 -0
- package/src/tech-radar/parser.ts +385 -0
- package/src/tech-radar/renderer.ts +1159 -0
- package/src/tech-radar/shared.ts +187 -0
- package/src/tech-radar/types.ts +81 -0
- package/src/utils/description-helpers.ts +33 -0
- package/src/utils/legend-layout.ts +3 -1
- package/src/utils/parsing.ts +47 -7
- package/src/utils/tag-groups.ts +46 -60
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# Cycle Diagram
|
|
2
|
+
|
|
3
|
+
```dgmo
|
|
4
|
+
cycle OODA Loop
|
|
5
|
+
|
|
6
|
+
Observe | color: blue
|
|
7
|
+
Gather raw information from the environment
|
|
8
|
+
Monitor unfolding circumstances
|
|
9
|
+
-Unfold circumstances-> | color: blue
|
|
10
|
+
|
|
11
|
+
Orient | color: green
|
|
12
|
+
Analyze and synthesize observations
|
|
13
|
+
Form a mental model of the situation
|
|
14
|
+
-Form hypothesis-> | color: green
|
|
15
|
+
|
|
16
|
+
Decide | color: orange
|
|
17
|
+
Select a course of action
|
|
18
|
+
-Commit to action-> | color: orange
|
|
19
|
+
|
|
20
|
+
Act | color: red
|
|
21
|
+
Execute the chosen course of action
|
|
22
|
+
Generate results that feed back
|
|
23
|
+
-Generate feedback-> | color: red
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Overview
|
|
27
|
+
|
|
28
|
+
Cycle diagrams show a circular process flow where nodes are arranged on a circle and directed edges connect each to the next, with the last wrapping back to the first. They are ideal for OODA loops, PDCA cycles, product lifecycles, continuous improvement processes, and any workflow that repeats.
|
|
29
|
+
|
|
30
|
+
## Syntax
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
cycle Title
|
|
34
|
+
|
|
35
|
+
NodeLabel
|
|
36
|
+
NodeLabel | color: blue, span: 2
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
The first line declares the chart type and title. Each top-level line declares a node. Nodes are positioned around a circle in declaration order.
|
|
40
|
+
|
|
41
|
+
## Nodes
|
|
42
|
+
|
|
43
|
+
Every non-indented, non-directive line is a node:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
cycle Seasons
|
|
47
|
+
|
|
48
|
+
Spring | color: green
|
|
49
|
+
Summer | color: yellow
|
|
50
|
+
Autumn | color: orange
|
|
51
|
+
Winter | color: blue
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Node Pipe Metadata
|
|
55
|
+
|
|
56
|
+
| Key | Type | Default | Description |
|
|
57
|
+
|-----|------|---------|-------------|
|
|
58
|
+
| `color` | palette name | auto | Node fill color |
|
|
59
|
+
| `span` | positive number | `1` | Relative arc distance to next node |
|
|
60
|
+
| `description` | string | — | One-liner shown below the label |
|
|
61
|
+
|
|
62
|
+
### Descriptions
|
|
63
|
+
|
|
64
|
+
Indented lines under a node add description text. Markdown inline formatting is supported (`**bold**`, `*italic*`, `` `code` ``, `[links](url)`). Bullet points with `- item` render as `• item`.
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
Observe | color: blue
|
|
68
|
+
Gather raw information from the environment
|
|
69
|
+
Monitor unfolding circumstances
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
If both `| description: text` and indented lines exist, they concatenate (pipe first, then indented).
|
|
73
|
+
|
|
74
|
+
## Edges
|
|
75
|
+
|
|
76
|
+
Edges are **implicit** — every node connects to the next, with the last wrapping to the first. The `->` syntax annotates edges with labels, descriptions, and styling:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
Observe | color: blue
|
|
80
|
+
-Unfold circumstances-> | color: blue
|
|
81
|
+
Synthesize raw data into context
|
|
82
|
+
|
|
83
|
+
Orient | color: green
|
|
84
|
+
-> | width: 4
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Edge lines are indented under their source node. A label goes between `-` and `->`. Pipe metadata supports `color` and `width`.
|
|
88
|
+
|
|
89
|
+
### Edge Descriptions
|
|
90
|
+
|
|
91
|
+
Indented lines under an edge line add description text:
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
Observe
|
|
95
|
+
-Analyze->
|
|
96
|
+
Break down observations into components
|
|
97
|
+
Identify **key patterns**
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Span
|
|
101
|
+
|
|
102
|
+
The `span` metadata controls relative arc distance between nodes. A node with `span: 2` gets twice the arc space to the next node:
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
cycle Weighted Process
|
|
106
|
+
|
|
107
|
+
Important Step | span: 2
|
|
108
|
+
Quick Step
|
|
109
|
+
Another Step | span: 1.5
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Directives
|
|
113
|
+
|
|
114
|
+
| Directive | Effect |
|
|
115
|
+
|-----------|--------|
|
|
116
|
+
| `direction-counterclockwise` | Reverse cycle direction (default: clockwise) |
|
|
117
|
+
| `hide-descriptions` | Hide description text on all nodes and edges |
|
|
118
|
+
| `circle-nodes` | Render nodes as circles instead of rounded rectangles |
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
cycle Simple Loop
|
|
122
|
+
|
|
123
|
+
direction-counterclockwise
|
|
124
|
+
|
|
125
|
+
Plan
|
|
126
|
+
Do
|
|
127
|
+
Check
|
|
128
|
+
Act
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Complete Example
|
|
132
|
+
|
|
133
|
+
```dgmo
|
|
134
|
+
cycle PDCA Continuous Improvement
|
|
135
|
+
|
|
136
|
+
Plan | color: blue, span: 1.5
|
|
137
|
+
Define objectives and processes
|
|
138
|
+
Establish expected outcomes
|
|
139
|
+
-Start implementation->
|
|
140
|
+
|
|
141
|
+
Do | color: green
|
|
142
|
+
Execute the plan on a small scale
|
|
143
|
+
Collect data for analysis
|
|
144
|
+
-Gather results->
|
|
145
|
+
|
|
146
|
+
Check | color: orange
|
|
147
|
+
Compare results against expectations
|
|
148
|
+
Identify deviations and root causes
|
|
149
|
+
-Propose changes-> | color: orange
|
|
150
|
+
|
|
151
|
+
Act | color: red
|
|
152
|
+
Standardize successful changes
|
|
153
|
+
Address remaining gaps
|
|
154
|
+
-Feed back into planning-> | color: red
|
|
155
|
+
Begin the next improvement cycle
|
|
156
|
+
```
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# Journey Map
|
|
2
|
+
|
|
3
|
+
```dgmo
|
|
4
|
+
journey-map Coffee Shop Visit
|
|
5
|
+
|
|
6
|
+
[Order]
|
|
7
|
+
Walk in | 4
|
|
8
|
+
Wait in line | 2
|
|
9
|
+
Order drink | 4
|
|
10
|
+
|
|
11
|
+
[Wait]
|
|
12
|
+
Find a seat | 3
|
|
13
|
+
Wait for drink | 2
|
|
14
|
+
|
|
15
|
+
[Enjoy]
|
|
16
|
+
Get drink | 5
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
Journey maps visualize a user's experience across a process or service, plotting emotional highs and lows as a continuous curve. Each step has a score (1–5, high is good) that drives the emotion landscape. Phases group related steps, annotations capture pain points, opportunities, and thoughts, and tags add cross-cutting dimensions like channel or touchpoint.
|
|
22
|
+
|
|
23
|
+
Journey maps are ideal for UX research, customer experience mapping, service design, and identifying friction points.
|
|
24
|
+
|
|
25
|
+
## Syntax
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
journey-map Title
|
|
29
|
+
|
|
30
|
+
persona Name
|
|
31
|
+
|
|
32
|
+
[Phase Name]
|
|
33
|
+
Step Name | score
|
|
34
|
+
Step Name | score Emotion
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The first line must be `journey-map` followed by a title. Phases use bracket syntax at indent 0. Steps are indented within phases.
|
|
38
|
+
|
|
39
|
+
## Persona
|
|
40
|
+
|
|
41
|
+
Declares the journey's protagonist:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
persona Tech-Savvy Shopper
|
|
45
|
+
28yo developer, price-sensitive, does extensive research
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Name is everything after `persona `. Indented lines add description text. Only one persona per diagram.
|
|
49
|
+
|
|
50
|
+
## Phases
|
|
51
|
+
|
|
52
|
+
Phases group steps into logical stages:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
[Research]
|
|
56
|
+
Compare specs | 4
|
|
57
|
+
Watch reviews | 5
|
|
58
|
+
|
|
59
|
+
[Purchase]
|
|
60
|
+
Add to cart | 3
|
|
61
|
+
Complete payment | 3
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Phases are optional — steps can appear at root level for a flat continuous flow.
|
|
65
|
+
|
|
66
|
+
## Steps
|
|
67
|
+
|
|
68
|
+
Steps appear indented within phases (or at indent 0 in flat mode).
|
|
69
|
+
|
|
70
|
+
### Score Syntax
|
|
71
|
+
|
|
72
|
+
The score goes in the pipe, separating step name from data:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
Step Name | 4 // bare score
|
|
76
|
+
Step Name | 4 Delighted // score + emotion label
|
|
77
|
+
Step Name | 4, ch: Web // score + tag metadata
|
|
78
|
+
Step Name | 4 Delighted, ch: Web // score + label + metadata
|
|
79
|
+
Step Name | score: 4, ch: Web // explicit score key
|
|
80
|
+
Step Name // no pipe = scoreless step
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
- **Score scale**: 1–5 integer (high = good)
|
|
84
|
+
- **Emotion label**: optional single word after the score (e.g., `Frustrated`, `Delighted`, `Neutral`)
|
|
85
|
+
- **Scoreless steps**: render as cards but produce no emotion curve point
|
|
86
|
+
|
|
87
|
+
## Annotations
|
|
88
|
+
|
|
89
|
+
Deeper-indented lines under a step add context:
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
Forced account creation | 1 Frustrated
|
|
93
|
+
pain: Wants guest checkout
|
|
94
|
+
opportunity: Add guest checkout option
|
|
95
|
+
thought: Why do I need an account?
|
|
96
|
+
description: User abandoned cart twice
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
| Prefix | Rendering |
|
|
100
|
+
|--------|-----------|
|
|
101
|
+
| `pain:` | Pain point (red accent) |
|
|
102
|
+
| `opportunity:` | Improvement opportunity (green accent) |
|
|
103
|
+
| `thought:` | User thought (italic) |
|
|
104
|
+
| `description:` | General context text |
|
|
105
|
+
|
|
106
|
+
Multiple annotations per step are allowed.
|
|
107
|
+
|
|
108
|
+
## Tag Groups
|
|
109
|
+
|
|
110
|
+
Tags add color-coded dimensions like channel or touchpoint:
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
tag Channel ch
|
|
114
|
+
Web(blue)
|
|
115
|
+
Mobile(purple)
|
|
116
|
+
In-Person(green)
|
|
117
|
+
|
|
118
|
+
[Research]
|
|
119
|
+
Compare specs | 4, ch: Web
|
|
120
|
+
Ask friends | 4, ch: In-Person
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Reference tag values in step pipes via the alias.
|
|
124
|
+
|
|
125
|
+
## Flat Mode
|
|
126
|
+
|
|
127
|
+
Steps at root level (no `[Phase]` brackets) render as a continuous horizontal strip:
|
|
128
|
+
|
|
129
|
+
```dgmo
|
|
130
|
+
journey-map Quick Feedback
|
|
131
|
+
|
|
132
|
+
Opened app | 4
|
|
133
|
+
Searched for feature | 3
|
|
134
|
+
Hit error | 1 Frustrated
|
|
135
|
+
pain: No helpful error message
|
|
136
|
+
Contacted support | 2
|
|
137
|
+
Got resolution | 5 Relieved
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Directives
|
|
141
|
+
|
|
142
|
+
| Directive | Effect |
|
|
143
|
+
|-----------|--------|
|
|
144
|
+
| `no-legend` | Hide the score legend |
|
|
145
|
+
| `active-tag GroupName` | Set the active tag group for coloring |
|
|
146
|
+
|
|
147
|
+
## Complete Example
|
|
148
|
+
|
|
149
|
+
```dgmo
|
|
150
|
+
journey-map Buying a Laptop
|
|
151
|
+
|
|
152
|
+
persona Tech-Savvy Shopper
|
|
153
|
+
28yo developer, price-sensitive, does extensive research
|
|
154
|
+
|
|
155
|
+
tag Channel ch
|
|
156
|
+
Web(blue)
|
|
157
|
+
Mobile(purple)
|
|
158
|
+
Email(teal)
|
|
159
|
+
In-Person(green)
|
|
160
|
+
|
|
161
|
+
[Research]
|
|
162
|
+
Compare specs | 4, ch: Web
|
|
163
|
+
description: Checked 12 laptops across 4 review sites
|
|
164
|
+
Watch reviews | 5 Engaged, ch: Mobile
|
|
165
|
+
Ask friends | 4, ch: In-Person
|
|
166
|
+
|
|
167
|
+
[Purchase]
|
|
168
|
+
Add to cart | 3, ch: Web
|
|
169
|
+
Forced account creation | 1 Frustrated, ch: Web
|
|
170
|
+
pain: Wants guest checkout
|
|
171
|
+
pain: Password requirements too strict
|
|
172
|
+
Complete payment | 3, ch: Web
|
|
173
|
+
|
|
174
|
+
[Delivery]
|
|
175
|
+
Track package | 4, ch: Mobile
|
|
176
|
+
Unboxing | 5 Delighted, ch: In-Person
|
|
177
|
+
opportunity: Include setup guide
|
|
178
|
+
thought: Excited to try it out
|
|
179
|
+
```
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# Pyramid Diagram
|
|
2
|
+
|
|
3
|
+
```dgmo
|
|
4
|
+
pyramid Maslow's Hierarchy of Needs
|
|
5
|
+
|
|
6
|
+
Self-Actualization | color: purple
|
|
7
|
+
Morality, creativity, acceptance of facts.
|
|
8
|
+
|
|
9
|
+
Esteem | color: blue
|
|
10
|
+
Respect, recognition, confidence.
|
|
11
|
+
|
|
12
|
+
Love & Belonging | color: green
|
|
13
|
+
Friendship, intimacy, family.
|
|
14
|
+
|
|
15
|
+
Safety | color: yellow
|
|
16
|
+
Security, employment, health.
|
|
17
|
+
|
|
18
|
+
Physiological | color: orange
|
|
19
|
+
Food, water, warmth, rest.
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Overview
|
|
23
|
+
|
|
24
|
+
Pyramid diagrams show a hierarchy of stacked layers. Each layer gets a colored band with a label and an optional description. Source order reads apex-first — the first layer in the file is the narrowest (visual top), the last is the widest (visual bottom). Use `inverted` to flip into a funnel orientation.
|
|
25
|
+
|
|
26
|
+
## Syntax
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
pyramid Title
|
|
30
|
+
|
|
31
|
+
LayerLabel
|
|
32
|
+
LayerLabel | color: blue
|
|
33
|
+
LayerLabel | color: green
|
|
34
|
+
Indented description
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The first line declares the chart type and an optional title. Each non-indented, non-directive line declares one layer. At least two layers are required.
|
|
38
|
+
|
|
39
|
+
## Layers
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
pyramid Roles
|
|
43
|
+
|
|
44
|
+
Executives | color: purple
|
|
45
|
+
Managers | color: blue
|
|
46
|
+
Individual Contributors | color: green
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Layer Pipe Metadata
|
|
50
|
+
|
|
51
|
+
| Key | Type | Default | Description |
|
|
52
|
+
|-----|------|---------|-------------|
|
|
53
|
+
| `color` | palette name | auto-assigned | Layer color |
|
|
54
|
+
| `description` | string | — | One-liner shown beside the layer |
|
|
55
|
+
|
|
56
|
+
### Descriptions
|
|
57
|
+
|
|
58
|
+
Indented lines under a layer add description text. Markdown inline formatting is supported (`**bold**`, `*italic*`, `` `code` ``, `[links](url)`). Bullet points with `- item` render as `• item`.
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
Wisdom | color: purple
|
|
62
|
+
Ethical judgment, acting with insight.
|
|
63
|
+
- Knowing *why* something matters
|
|
64
|
+
- Acting with long-term perspective
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
If both `| description: text` and indented lines exist, they concatenate (pipe first, then indented).
|
|
68
|
+
|
|
69
|
+
## Directives
|
|
70
|
+
|
|
71
|
+
| Directive | Effect |
|
|
72
|
+
|-----------|--------|
|
|
73
|
+
| `inverted` | Flip apex to the bottom (funnel orientation). Source order is preserved — the first layer is always the visual top. |
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
pyramid Acquisition Funnel
|
|
77
|
+
|
|
78
|
+
inverted
|
|
79
|
+
|
|
80
|
+
Visitors | color: blue
|
|
81
|
+
Signups | color: cyan
|
|
82
|
+
Activated | color: green
|
|
83
|
+
Paid | color: orange
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Overflow Handling
|
|
87
|
+
|
|
88
|
+
When descriptions don't fit a layer's band, the renderer automatically:
|
|
89
|
+
|
|
90
|
+
- **Wraps** text at the column edge so nothing leaves the canvas
|
|
91
|
+
- **Truncates** with "…" when content exceeds the available lines
|
|
92
|
+
- **Alternates** descriptions left ↔ right when a single column can't hold them
|
|
93
|
+
- **Reveals** the full description when a layer is highlighted (in-app), hiding siblings so it has room
|
|
94
|
+
|
|
95
|
+
## Complete Example
|
|
96
|
+
|
|
97
|
+
```dgmo
|
|
98
|
+
pyramid The DIKW Pyramid
|
|
99
|
+
|
|
100
|
+
Wisdom | color: purple
|
|
101
|
+
Ethical judgment, acting with insight — knowing *why*.
|
|
102
|
+
|
|
103
|
+
Knowledge | color: blue
|
|
104
|
+
Synthesized information — knowing *how*.
|
|
105
|
+
|
|
106
|
+
Information | color: green
|
|
107
|
+
Processed data with context — knowing *what*.
|
|
108
|
+
|
|
109
|
+
Data | color: yellow
|
|
110
|
+
Raw facts and measurements — unprocessed signals.
|
|
111
|
+
```
|
|
@@ -7,7 +7,7 @@ tag Auth
|
|
|
7
7
|
Public(green)
|
|
8
8
|
Crew Only(blue)
|
|
9
9
|
|
|
10
|
-
Home | Auth: Public
|
|
10
|
+
Home | Auth: Public, description: Landing page with interactive demos
|
|
11
11
|
-shop-> Shop
|
|
12
12
|
-voyages-> Upcoming Voyages
|
|
13
13
|
-join crew-> Sign Up
|
|
@@ -39,6 +39,7 @@ Home | Auth: Public
|
|
|
39
39
|
Sign Up | Auth: Public
|
|
40
40
|
-welcome aboard-> Dashboard
|
|
41
41
|
Dashboard | Auth: Crew Only
|
|
42
|
+
description Full overview of crew activity and orders
|
|
42
43
|
-> My Orders
|
|
43
44
|
My Orders | Auth: Crew Only
|
|
44
45
|
-reorder-> Shop
|
|
@@ -140,6 +141,22 @@ Home | status: Live | owner: Marketing
|
|
|
140
141
|
Products | status: Draft | owner: Product Team
|
|
141
142
|
```
|
|
142
143
|
|
|
144
|
+
## Descriptions
|
|
145
|
+
|
|
146
|
+
Add a description to any page using the `description` keyword (indented) or pipe metadata:
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
// Pipe metadata form
|
|
150
|
+
Pricing | description: Compare plans and features
|
|
151
|
+
|
|
152
|
+
// Indented keyword form (colon optional)
|
|
153
|
+
Dashboard
|
|
154
|
+
description Full overview of crew activity and orders
|
|
155
|
+
My Orders
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Descriptions render as secondary text on the page card. The indented form must come before child pages. Multiple `description` lines accumulate into a multi-line description.
|
|
159
|
+
|
|
143
160
|
## Node Colors
|
|
144
161
|
|
|
145
162
|
Add a color name in parentheses after a page or group name:
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
# Technology Radar
|
|
2
|
+
|
|
3
|
+
```dgmo
|
|
4
|
+
tech-radar Pirate Operations Radar — Q2 1718
|
|
5
|
+
|
|
6
|
+
rings
|
|
7
|
+
Full Sail
|
|
8
|
+
Trial Run
|
|
9
|
+
Spyglass
|
|
10
|
+
Davy Jones
|
|
11
|
+
|
|
12
|
+
Tactics | quadrant: top-right
|
|
13
|
+
Ambush at Dawn | ring: Full Sail, trend: stable
|
|
14
|
+
Our most reliable boarding tactic. **90% success rate** when
|
|
15
|
+
approaching from the east with the sun behind us.
|
|
16
|
+
- Crew morale peaks at dawn — grog hasn't worn off yet
|
|
17
|
+
- Reduced cannon fire needed: *3 volleys* vs 8 at midday
|
|
18
|
+
Boarding Parties | ring: Full Sail, trend: stable
|
|
19
|
+
Decoy Flags | ring: Trial Run, trend: up
|
|
20
|
+
Flying false colours until within cannon range. Early results
|
|
21
|
+
are promising — merchant ships drop anchor **40% more often**.
|
|
22
|
+
Smoke Screens | ring: Trial Run, trend: new
|
|
23
|
+
Kraken Diplomacy | ring: Spyglass, trend: new
|
|
24
|
+
Exploring alliances with *sea monsters*. Negotiations ongoing.
|
|
25
|
+
|
|
26
|
+
Vessels | quadrant: top-left
|
|
27
|
+
Brigantine | ring: Full Sail, trend: stable
|
|
28
|
+
Our workhorse. Fast, manoeuvrable, carries **18 cannons**.
|
|
29
|
+
- Crew capacity: 100 pirates
|
|
30
|
+
- Top speed: *11 knots* in fair wind
|
|
31
|
+
Sloop | ring: Full Sail, trend: up
|
|
32
|
+
War Galleon | ring: Trial Run, trend: up
|
|
33
|
+
Captured from the Spanish fleet. Massive firepower but
|
|
34
|
+
**slow to turn** — best for convoy raids, not chases.
|
|
35
|
+
Longboat | ring: Davy Jones, trend: down
|
|
36
|
+
|
|
37
|
+
Plunder Targets | quadrant: bottom-left
|
|
38
|
+
Merchant Convoys | ring: Full Sail, trend: stable
|
|
39
|
+
Core revenue stream — **78% of total plunder**. East India
|
|
40
|
+
Company ships running the spice route remain most lucrative.
|
|
41
|
+
Port Raids | ring: Trial Run, trend: up
|
|
42
|
+
Rival Pirates | ring: Trial Run, trend: new
|
|
43
|
+
Royal Treasury Ships | ring: Spyglass, trend: new
|
|
44
|
+
High risk, astronomical reward. Requires:
|
|
45
|
+
- Inside information from *corrupt harbourmasters*
|
|
46
|
+
- At least **3 allied ships** for the blockade
|
|
47
|
+
- A really good escape plan
|
|
48
|
+
Whaling Ships | ring: Spyglass, trend: stable
|
|
49
|
+
Fishing Villages | ring: Davy Jones, trend: down
|
|
50
|
+
Terrible ROI and **bad for reputation**. The parrot union
|
|
51
|
+
filed a formal complaint.
|
|
52
|
+
|
|
53
|
+
Crew Welfare | quadrant: bottom-right
|
|
54
|
+
Grog Rations | ring: Full Sail, trend: stable
|
|
55
|
+
Non-negotiable. Cutting grog rations caused the *Great Mutiny of 1716*.
|
|
56
|
+
Sea Shanty Program | ring: Trial Run, trend: new
|
|
57
|
+
Hired a shanty master. Crew productivity up **25%** during
|
|
58
|
+
long voyages. Signature tune: *"Yo Ho Ho and a Bottle of Rum"*.
|
|
59
|
+
Dental Plan | ring: Spyglass, trend: up
|
|
60
|
+
Exploring options. Most crew down to **4 teeth** on average.
|
|
61
|
+
Parley with a Port Royal dentist scheduled for Q3.
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Overview
|
|
65
|
+
|
|
66
|
+
Technology radars visualize how an organization adopts and evaluates technologies, practices, or strategies. Inspired by the [ThoughtWorks Technology Radar](https://www.thoughtworks.com/radar), each radar arranges items ("blips") into concentric rings indicating adoption stage, grouped by quadrant categories.
|
|
67
|
+
|
|
68
|
+
Click any quadrant label to drill down into a detail view with expanded blip descriptions. Click the "Blip Legend" toggle to show or hide the numbered reference listing below the radar.
|
|
69
|
+
|
|
70
|
+
## Syntax
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
tech-radar Title
|
|
74
|
+
|
|
75
|
+
rings
|
|
76
|
+
Ring1
|
|
77
|
+
Ring2
|
|
78
|
+
|
|
79
|
+
Quadrant Name | quadrant: position
|
|
80
|
+
Blip Name | ring: RingName, trend: value
|
|
81
|
+
Description text (markdown supported)
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Settings
|
|
85
|
+
|
|
86
|
+
| Key | Description | Default |
|
|
87
|
+
| --- | ----------- | ------- |
|
|
88
|
+
| `chart` | Must be `tech-radar` | — |
|
|
89
|
+
| `title` | Radar title | None |
|
|
90
|
+
|
|
91
|
+
## Rings
|
|
92
|
+
|
|
93
|
+
Rings represent adoption stages, ordered from innermost (highest commitment) to outermost (lowest). Declare them in a `rings` block:
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
rings
|
|
97
|
+
Adopt
|
|
98
|
+
Trial
|
|
99
|
+
Assess
|
|
100
|
+
Hold
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
You can use any ring names — the classic Adopt/Trial/Assess/Hold is common but not required.
|
|
104
|
+
|
|
105
|
+
### Ring Aliases
|
|
106
|
+
|
|
107
|
+
Rings support aliases for shorter blip references:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
rings
|
|
111
|
+
Adopt alias a
|
|
112
|
+
Trial alias t
|
|
113
|
+
Assess alias x
|
|
114
|
+
Hold alias h
|
|
115
|
+
|
|
116
|
+
Quadrant | quadrant: top-right
|
|
117
|
+
Item Name | ring: a, trend: up
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Quadrants
|
|
121
|
+
|
|
122
|
+
Exactly 4 quadrants are required. Each needs a unique position:
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
Techniques | quadrant: top-right
|
|
126
|
+
Tools | quadrant: top-left
|
|
127
|
+
Platforms | quadrant: bottom-left
|
|
128
|
+
Languages | quadrant: bottom-right
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Positions:** `top-left`, `top-right`, `bottom-left`, `bottom-right`
|
|
132
|
+
|
|
133
|
+
### Custom Colors
|
|
134
|
+
|
|
135
|
+
Override the default quadrant color with `color`:
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
Tools | quadrant: top-left, color: purple
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Default colors: top-left=blue, top-right=green, bottom-left=red, bottom-right=orange.
|
|
142
|
+
|
|
143
|
+
## Blips
|
|
144
|
+
|
|
145
|
+
Blips are items placed on the radar. Each is indented under its quadrant and requires a `ring` reference:
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
Kubernetes | ring: Adopt
|
|
149
|
+
Micro Frontends | ring: Trial, trend: up
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Ring matching is case-insensitive — `ring: adopt` and `ring: Adopt` both work.
|
|
153
|
+
|
|
154
|
+
## Trends
|
|
155
|
+
|
|
156
|
+
The optional `trend` metadata controls the visual indicator on each blip:
|
|
157
|
+
|
|
158
|
+
| Trend | Indicator | Meaning |
|
|
159
|
+
| ----- | --------- | ------- |
|
|
160
|
+
| `new` | Double circle | Newly added to the radar |
|
|
161
|
+
| `up` | Inward crescent | Moving toward center (higher adoption) |
|
|
162
|
+
| `down` | Outward crescent | Moving away from center (declining) |
|
|
163
|
+
| `stable` | Plain circle | No change since last assessment |
|
|
164
|
+
|
|
165
|
+
Omitting `trend` renders a plain circle (same as `stable`).
|
|
166
|
+
|
|
167
|
+
## Descriptions
|
|
168
|
+
|
|
169
|
+
Further-indented lines below a blip become its description. Descriptions support inline markdown:
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
Rust | ring: Assess, trend: new
|
|
173
|
+
Evaluating for **performance-critical** services.
|
|
174
|
+
Key benefits: *zero-cost abstractions* and `no GC pauses`.
|
|
175
|
+
- 12x throughput improvement in image pipeline
|
|
176
|
+
- See [evaluation doc](https://wiki.example.com/rust)
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Descriptions appear in the quadrant detail view and on hover/click in the main radar view.
|
|
180
|
+
|
|
181
|
+
## Complete Example
|
|
182
|
+
|
|
183
|
+
```dgmo
|
|
184
|
+
tech-radar Fleet Readiness Radar
|
|
185
|
+
|
|
186
|
+
rings
|
|
187
|
+
Battle Ready
|
|
188
|
+
Sea Trials
|
|
189
|
+
Scouting
|
|
190
|
+
Scuttle
|
|
191
|
+
|
|
192
|
+
Navigation | quadrant: top-right
|
|
193
|
+
Star Charts | ring: Battle Ready, trend: stable
|
|
194
|
+
Compass Calibration | ring: Sea Trials, trend: up
|
|
195
|
+
New lodestone from Madagascar shows **30% better accuracy**.
|
|
196
|
+
Sextant | ring: Battle Ready, trend: stable
|
|
197
|
+
Treasure Maps | ring: Scouting, trend: new
|
|
198
|
+
Celestial Tables | ring: Scouting, trend: new
|
|
199
|
+
|
|
200
|
+
Armaments | quadrant: top-left
|
|
201
|
+
Cannon Broadside | ring: Battle Ready, trend: stable
|
|
202
|
+
Greek Fire | ring: Sea Trials, trend: new
|
|
203
|
+
Chain Shot | ring: Sea Trials, trend: up
|
|
204
|
+
Catapult | ring: Scuttle, trend: down
|
|
205
|
+
|
|
206
|
+
Provisions | quadrant: bottom-left
|
|
207
|
+
Salted Pork | ring: Battle Ready, trend: stable
|
|
208
|
+
Citrus Rations | ring: Sea Trials, trend: up
|
|
209
|
+
Reduced scurvy cases by **80%** in trial crews.
|
|
210
|
+
Rum Distillation | ring: Scouting, trend: new
|
|
211
|
+
Hardtack | ring: Scuttle, trend: down
|
|
212
|
+
Barnacle Soup | ring: Scuttle, trend: down
|
|
213
|
+
|
|
214
|
+
Morale | quadrant: bottom-right
|
|
215
|
+
Shore Leave | ring: Battle Ready, trend: stable
|
|
216
|
+
Sea Shanties | ring: Battle Ready, trend: up
|
|
217
|
+
Parrot Companions | ring: Scouting, trend: new
|
|
218
|
+
Plank Walking | ring: Scuttle, trend: down
|
|
219
|
+
```
|