From d4305d9bb21748edf80f219c3940aacaa2640c53 Mon Sep 17 00:00:00 2001 From: Cell <1024@lruihao.cn> Date: Wed, 20 Aug 2025 11:01:20 +0800 Subject: [PATCH] :white_check_mark: Test: add Mermaid diagram test cases and fix configuration missing --- assets/js/lib/mermaid.js | 8 +- layouts/_partials/init/index.html | 2 +- test/content/posts/mermaid-diagrams-test.md | 562 ++++++++++++++++++++ test/hugo.toml | 3 + 4 files changed, 570 insertions(+), 5 deletions(-) create mode 100644 test/content/posts/mermaid-diagrams-test.md diff --git a/assets/js/lib/mermaid.js b/assets/js/lib/mermaid.js index e716fc0c..21d9fc97 100644 --- a/assets/js/lib/mermaid.js +++ b/assets/js/lib/mermaid.js @@ -1,4 +1,4 @@ -{{- $mermaid := .Param "mermaid" -}} +{{- $mermaid := .Site.Params.mermaid -}} {{- $mermaidCDN := $mermaid.cdn | default "https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs" -}} import mermaid from "{{ $mermaidCDN }}" @@ -54,10 +54,10 @@ async function loadMermaid({ theme, darkMode, selector }) { startOnLoad: false, darkMode: isDarkMode, theme: currentTheme, - securityLevel: mermaidConfig.securityLevel, + securityLevel: mermaidConfig.securitylevel, look: mermaidConfig.look, - fontFamily: mermaidConfig.fontFamily, - altFontFamily: mermaidConfig.fontFamily + fontFamily: mermaidConfig.fontfamily, + altFontFamily: mermaidConfig.fontfamily }) // skip data-processed elements in Mermaid run function, so this won't re-render await mermaid.run({ diff --git a/layouts/_partials/init/index.html b/layouts/_partials/init/index.html index b807568c..bff7ddb8 100644 --- a/layouts/_partials/init/index.html +++ b/layouts/_partials/init/index.html @@ -1,4 +1,4 @@ -{{- hugo.Store.Set "version" "v0.4.0-alpha-20250819093712-cc2ef7bf" -}} +{{- hugo.Store.Set "version" "v0.4.0-alpha-20250820030120-93acf8ea" -}} {{- .Store.Set "this" dict -}} {{- partial "init/detection-env.html" . -}} diff --git a/test/content/posts/mermaid-diagrams-test.md b/test/content/posts/mermaid-diagrams-test.md new file mode 100644 index 00000000..83c0b9f6 --- /dev/null +++ b/test/content/posts/mermaid-diagrams-test.md @@ -0,0 +1,562 @@ +--- +title: Mermaid Diagrams Test +date: 2025-08-20T10:00:00+08:00 +collections: + - Tests +categories: + - Markdown + - Shortcodes +tags: + - Mermaid + - Diagrams +--- + + + +The FixIt theme supports two ways to use Mermaid: code block syntax and shortcode syntax. + +## Flowchart + +### Code Block Syntax + +```mermaid +flowchart TD + A[Start] --> B{Is it?} + B -->|Yes| C[OK] + C --> D[Rethink] + D --> B + B ---->|No| E[End] +``` + +### Shortcode Syntax + +{{< mermaid >}} +flowchart LR + A[Hard edge] -->|Link text| B(Round edge) + B --> C{Decision} + C -->|One| D[Result one] + C -->|Two| E[Result two] +{{< /mermaid >}} + +## Sequence Diagram + +```mermaid +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
prevail! + John-->>Alice: Great! + John->>Bob: How about you? + Bob-->>John: Jolly good! +``` + +## Gantt Chart + +{{< mermaid >}} +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 + Task in sec :2014-01-12 , 12d + another task : 24d +{{< /mermaid >}} + +## Class Diagram + +```mermaid +classDiagram + Animal <|-- Duck + Animal <|-- Fish + Animal <|-- Zebra + Animal : +int age + Animal : +String gender + Animal: +isMammal() + Animal: +mate() + class Duck{ + +String beakColor + +swim() + +quack() + } + class Fish{ + -int sizeInFeet + -canEat() + } + class Zebra{ + +bool is_wild + +run() + } +``` + +## State Diagram + +```mermaid +stateDiagram-v2 + [_] --> Still + Still --> [_] + + Still --> Moving + Moving --> Still + Moving --> Crash + Crash --> [*] +``` + +## Entity Relationship Diagram + +```mermaid +erDiagram + CUSTOMER ||--o{ ORDER : places + ORDER ||--|{ LINE-ITEM : contains + CUSTOMER }|..|{ DELIVERY-ADDRESS : uses + + CUSTOMER { + string name + string custNumber + string sector + } + ORDER { + int orderNumber + string deliveryAddress + } + LINE-ITEM { + string productCode + int quantity + float pricePerUnit + } +``` + +## User Journey + +{{< mermaid >}} +journey + title My working day + section Go to work + Make tea: 5: Me + Go upstairs: 3: Me + Do work: 1: Me, Cat + section Go home + Go downstairs: 5: Me + Sit down: 5: Me +{{< /mermaid >}} + +## Git Graph + +```mermaid +gitGraph + commit + branch hotfix + checkout hotfix + commit + branch develop + checkout develop + commit id:"ash" tag:"abc" + branch featureB + checkout featureB + commit type:HIGHLIGHT + checkout main + checkout hotfix + commit type:NORMAL + checkout develop + commit type:REVERSE + checkout featureB + commit + checkout main + merge hotfix + checkout featureB + commit + checkout develop + branch featureA + commit + checkout develop + merge hotfix + checkout featureA + commit + checkout featureB + commit + checkout develop + merge featureA + branch release + checkout release + commit + checkout main + commit + checkout release + merge main + checkout develop + merge release +``` + +## Pie Chart + +{{< mermaid >}} +pie title What Voldemort doesn't have? + "FRIENDS" : 2 + "FAMILY" : 3 + "NOSE" : 45 +{{< /mermaid >}} + +## Quadrant Chart + +```mermaid +quadrantChart + title Reach and influence + x-axis Low Reach --> High Reach + y-axis Low Influence --> High Influence + quadrant-1 We should expand + quadrant-2 Need to promote + quadrant-3 Re-evaluate + quadrant-4 May be improved + Campaign A: [0.3, 0.6] + Campaign B: [0.45, 0.23] + Campaign C: [0.57, 0.69] + Campaign D: [0.78, 0.34] + Campaign E: [0.40, 0.34] +``` + +## Timeline + +```mermaid +timeline + title History of Social Media Platform + + 2002 : LinkedIn + 2003 : MySpace + : Skype + 2004 : Facebook + : Gmail + 2005 : Youtube + 2006 : Twitter + 2007 : FourSquare + 2008 : Github + 2010 : Instagram + 2011 : Snapchat + 2012 : Discord +``` + +## Mindmap + +```mermaid +mindmap + root((mindmap)) + Origins + Long history + ::icon(fa fa-book) + Popularisation + British popular psychology author Tony Buzan + Research + On effectiveness
and features + On Automatic creation + Uses + Creative techniques + Strategic planning + Argument mapping + Tools + Pen and paper + Mermaid +``` + +## XY Chart + +{{< mermaid >}} +xychart-beta + title "Sales Revenue" + x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] + y-axis "Revenue (in $)" 4000 --> 11000 + bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] + line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000] +{{< /mermaid >}} + +## Requirement Diagram + +```mermaid +requirementDiagram + + requirement test_req { + id: 1 + text: the test text. + risk: high + verifymethod: test + } + + element test_entity { + type: simulation + } + + test_entity - satisfies -> test_req +``` + +## C4 Architecture + +```mermaid +C4Context + title System Context diagram for Internet Banking System + Enterprise_Boundary(b0, "BankBoundary0") { + Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.") + Person(customerB, "Banking Customer B") + Person_Ext(customerC, "Banking Customer C", "desc") + + Person(customerD, "Banking Customer D", "A customer of the bank,
with personal bank accounts.") + + System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.") + + Enterprise_Boundary(b1, "BankBoundary") { + + SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") + + System_Boundary(b2, "BankBoundary2") { + System(SystemA, "Banking System A") + System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts. next line.") + } + + System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.") + SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.") + + Boundary(b3, "BankBoundary3", "boundary") { + SystemQueue(SystemF, "Banking System F Queue", "A system of the bank.") + SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.") + } + } + } + + BiRel(customerA, SystemAA, "Uses") + BiRel(SystemAA, SystemE, "Uses") + Rel(SystemAA, SystemC, "Sends e-mails", "SMTP") + Rel(SystemC, customerA, "Sends e-mails to") + + UpdateElementStyle(customerA, $fontColor="red", $bgColor="grey", $borderColor="red") + UpdateRelStyle(customerA, SystemAA, $textColor="blue", $lineColor="blue", $offsetX="5") + UpdateRelStyle(SystemAA, SystemE, $textColor="blue", $lineColor="blue", $offsetY="-10") + UpdateRelStyle(SystemAA, SystemC, $textColor="blue", $lineColor="blue", $offsetY="-40", $offsetX="-50") + UpdateRelStyle(SystemC, customerA, $textColor="red", $lineColor="red", $offsetX="-50", $offsetY="20") + + UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1") +``` + +## ZenUML + +{{< mermaid >}} +zenuml + title Demo + Alice->John: Hello John, how are you? + John->Alice: Great! + Alice->John: See you later! +{{< /mermaid >}} + +## Sankey Diagram + +```mermaid +--- +config: + sankey: + showValues: false +--- +sankey-beta + +Agricultural 'waste',Bio-conversion,124.729 +Bio-conversion,Liquid,0.597 +Bio-conversion,Losses,26.862 +Bio-conversion,Solid,280.322 +Bio-conversion,Gas,81.144 +Biofuel imports,Liquid,35 +Biomass imports,Solid,35 +Coal imports,Coal,11.606 +Coal reserves,Coal,63.965 +Coal,Solid,75.571 +District heating,Industry,10.639 +District heating,Heating and cooling - commercial,22.505 +District heating,Heating and cooling - homes,46.184 +Electricity grid,Over generation / exports,104.453 +Electricity grid,Heating and cooling - homes,113.726 +Electricity grid,H2 conversion,27.14 +Electricity grid,Industry,342.165 +Electricity grid,Road transport,37.797 +Electricity grid,Agriculture,4.412 +Electricity grid,Heating and cooling - commercial,40.858 +Electricity grid,Losses,56.691 +Electricity grid,Rail transport,7.863 +Electricity grid,Lighting & appliances - commercial,90.008 +Electricity grid,Lighting & appliances - homes,93.494 +Gas imports,Ngas,40.719 +Gas reserves,Ngas,82.233 +Gas,Heating and cooling - commercial,0.129 +Gas,Losses,1.401 +Gas,Thermal generation,151.891 +Gas,Agriculture,2.096 +Gas,Industry,48.58 +Geothermal,Electricity grid,7.013 +H2 conversion,H2,20.897 +H2 conversion,Losses,6.242 +H2,Road transport,20.897 +Hydro,Electricity grid,6.995 +Liquid,Industry,121.066 +Liquid,International shipping,128.69 +Liquid,Road transport,135.835 +Liquid,Domestic aviation,14.458 +Liquid,International aviation,206.267 +Liquid,Agriculture,3.64 +Liquid,National navigation,33.218 +Liquid,Rail transport,4.413 +Marine algae,Bio-conversion,4.375 +Ngas,Gas,122.952 +Nuclear,Thermal generation,839.978 +Oil imports,Oil,504.287 +Oil reserves,Oil,107.703 +Oil,Liquid,611.99 +Other waste,Solid,56.587 +Other waste,Bio-conversion,77.81 +Pumped heat,Heating and cooling - homes,193.026 +Pumped heat,Heating and cooling - commercial,70.672 +Solar PV,Electricity grid,59.901 +Solar Thermal,Heating and cooling - homes,19.263 +Solar,Solar Thermal,19.263 +Solar,Solar PV,59.901 +Solid,Agriculture,0.882 +Solid,Thermal generation,400.12 +Solid,Industry,46.477 +Thermal generation,Electricity grid,525.531 +Thermal generation,Losses,787.129 +Thermal generation,District heating,79.329 +Tidal,Electricity grid,9.452 +UK land based bioenergy,Bio-conversion,182.01 +Wave,Electricity grid,19.013 +Wind,Electricity grid,289.366 +``` + +## Block Diagram + +{{< mermaid >}} +block-beta +columns 1 + db(("DB")) + blockArrowId6<["   "]>(down) + block:ID + A + B["A wide one in the middle"] + C + end + space + D + ID --> D + C --> D + style B fill:#969,stroke:#333,stroke-width:4px +{{< /mermaid >}} + +## Packet Diagram + +```mermaid +packet-beta +title Sample packet +0-15: "Source Port" +16-31: "Destination Port" +32-63: "Sequence Number" +64-95: "Acknowledgment Number" +96-99: "Data Offset" +100-105: "Reserved" +106: "URG" +107: "ACK" +108: "PSH" +109: "RST" +110: "SYN" +111: "FIN" +112-127: "Window" +128-143: "Checksum" +144-159: "Urgent Pointer" +160-191: "Options and Padding" +192-223: "Data (variable length)" +``` + +## Kanban + +```mermaid +kanban + Todo + [Create a git repository] + [Write some code] + [Commit the code] + + In Progress + [Push to main] + + Done + [Merge PR] +``` + +## Architecture Diagram + +```mermaid +architecture-beta + group api(cloud)[API] + + service db(database)[Database] in api + service disk1(disk)[Storage] in api + service disk2(disk)[Storage] in api + service server(server)[Server] in api + + db:L -- R:server + disk1:T -- B:server + disk2:T -- B:db +``` + +## Radar Chart + +```mermaid +--- +title: "Grades" +--- +radar-beta + axis m["Math"], s["Science"], e["English"] + axis h["History"], g["Geography"], a["Art"] + curve a["Alice"]{85, 90, 80, 70, 75, 90} + curve b["Bob"]{70, 75, 85, 80, 90, 85} + + max 100 + min 0 +``` + +## Treemap + +```mermaid +--- +config: + treemap: + valueFormat: '$0,0' +--- +treemap-beta +"Budget" + "Operations" + "Salaries": 700000 + "Equipment": 200000 + "Supplies": 100000 + "Marketing" + "Advertising": 400000 + "Events": 100000 +``` + +--- + +The above test cases cover the main Mermaid diagram types, including: + +**Core Diagrams:** + +- Flowcharts, Sequence Diagrams, Gantt Charts +- Class Diagrams, State Diagrams, Entity Relationship Diagrams +- User Journey, Git Graph, Pie Charts + +**Advanced Diagrams:** + +- Quadrant Charts, Timeline, Mindmaps +- XY Charts, Requirement Diagrams, C4 Architecture +- ZenUML, Sankey, Block Diagrams + +**Experimental Diagrams (🔥):** + +- Packet, Kanban, Architecture +- Radar Charts, Treemap + +Each diagram type provides examples using both code block and shortcode syntax. diff --git a/test/hugo.toml b/test/hugo.toml index 861b250c..ae52c5f4 100644 --- a/test/hugo.toml +++ b/test/hugo.toml @@ -44,3 +44,6 @@ baseURL = "https://demo.fixit.lruihao.cn/test/" email = "" link = "https://lruihao.cn" avatar = "https://lruihao.cn/images/avatar.jpg" + + [params.mermaid] + zenuml = "https://cdn.jsdelivr.net/npm/@mermaid-js/mermaid-zenuml/dist/mermaid-zenuml.esm.min.mjs"