collab/mermaid/demos/state.htmlblame
View source
6dd74de1<!doctype html>
6dd74de2<html lang="en" xmlns="http://www.w3.org/1999/html">
6dd74de3 <head>
6dd74de4 <meta charset="utf-8" />
6dd74de5 <meta http-equiv="X-UA-Compatible" content="IE=edge" />
6dd74de6 <title>States Mermaid Quick Test Page</title>
6dd74de7 <link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=" />
6dd74de8 <style>
6dd74de9 div.mermaid {
6dd74de10 /* font-family: 'trebuchet ms', verdana, arial; */
6dd74de11 font-family: 'Courier New', Courier, monospace !important;
6dd74de12 }
6dd74de13 </style>
6dd74de14 </head>
6dd74de15
6dd74de16 <body>
6dd74de17 <h1>State diagram demos</h1>
6dd74de18 <h2>Very simple showing change from State1 to State2</h2>
6dd74de19 <pre class="mermaid">
6dd74de20 ---
6dd74de21 title: Very simple diagram
6dd74de22 ---
6dd74de23 stateDiagram
6dd74de24 accTitle: This is the accessible title
6dd74de25 accDescr:This is an accessible description
6dd74de26 State1 --> State2
6dd74de27 </pre>
6dd74de28
6dd74de29 <hr />
6dd74de30
6dd74de31 <h2>This has classDef statements to apply style classes to specific states</h2>
6dd74de32 <h4>Here are the <code>classDef</code> statements:</h4>
6dd74de33 <p>
6dd74de34 <code>
6dd74de35 classDef notMoving fill:white<br />
6dd74de36 classDef movement font-style:italic<br />
6dd74de37 classDef badBadEvent
6dd74de38 fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow<br />
6dd74de39 </code>
6dd74de40 </p>
6dd74de41 <h4>And these are how they are applied:</h4>
6dd74de42 <p>
6dd74de43 <code>
6dd74de44 class Still notMoving<br />
6dd74de45 class Moving, Crash movement<br />
6dd74de46 class Crash badBadEvent<br />
6dd74de47 </code>
6dd74de48 </p>
6dd74de49 <pre class="mermaid">
6dd74de50 ---
6dd74de51 title: Very simple diagram
6dd74de52 ---
6dd74de53 stateDiagram
6dd74de54 direction TB
6dd74de55
6dd74de56 accTitle: This is the accessible title
6dd74de57 accDescr: This is an accessible description
6dd74de58
6dd74de59 classDef notMoving fill:white
6dd74de60 classDef movement font-style:italic
6dd74de61 classDef badBadEvent fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow
6dd74de62
6dd74de63 [*]--> Still
6dd74de64 Still --> [*]
6dd74de65 Still --> Moving
6dd74de66 Moving --> Still
6dd74de67 Moving --> Crash
6dd74de68 Crash --> [*]
6dd74de69
6dd74de70 class Still notMoving
6dd74de71 class Moving, Crash movement
6dd74de72 class Crash badBadEvent
6dd74de73 class end badBadEvent
6dd74de74 </pre>
6dd74de75
6dd74de76 <hr />
6dd74de77
6dd74de78 <h2>Here is a diagram that uses the ::: operator to apply styles to states</h2>
6dd74de79 <h4>Here are the <code>classDef</code> statements:</h4>
6dd74de80 <p>
6dd74de81 <code>
6dd74de82 classDef notMoving fill:white<br />
6dd74de83 classDef movement font-style:italic<br />
6dd74de84 classDef badBadEvent
6dd74de85 fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow<br />
6dd74de86 </code>
6dd74de87 </p>
6dd74de88 <h4>And these are how they are applied:</h4>
6dd74de89 <p>
6dd74de90 <code>
6dd74de91 [*] --> Still:::notMoving<br />
6dd74de92 ...<br />
6dd74de93 Still --> Moving:::movement<br />
6dd74de94 ...<br />
6dd74de95 Moving --> Crash:::movement<br />
6dd74de96 Crash:::badBadEvent --> [*]<br />
6dd74de97 </code>
6dd74de98 </p>
6dd74de99 <p>
6dd74de100 Note that both the starting state and the end state have styles applied:<br />
6dd74de101 The start state has the <i>start</i> classDef style<br />and the end state has the
6dd74de102 <i>stop</i> classDef style applied.
6dd74de103 </p>
6dd74de104 <pre class="mermaid">
6dd74de105 stateDiagram
6dd74de106 direction TB
6dd74de107
6dd74de108 accTitle: This is the accessible title
6dd74de109 accDescr: This is an accessible description
6dd74de110
6dd74de111 classDef notMoving fill:white
6dd74de112 classDef movement font-style:italic
6dd74de113 classDef badBadEvent fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow
6dd74de114
6dd74de115 [*] --> Still:::notMoving
6dd74de116 Still --> [*]
6dd74de117 Still --> Moving:::movement
6dd74de118 Moving --> Still
6dd74de119 Moving --> Crash:::movement
6dd74de120 Crash:::badBadEvent --> [*]
6dd74de121 </pre>
6dd74de122 <hr />
6dd74de123
6dd74de124 <pre class="mermaid">
6dd74de125 stateDiagram-v2
6dd74de126 accTitle: very very simple state
6dd74de127 accDescr: This is a state diagram showing one state
6dd74de128 State1
6dd74de129 </pre>
6dd74de130 <hr />
6dd74de131
6dd74de132 <h2>States with spaces in them</h2>
6dd74de133 <pre class="mermaid">
6dd74de134 stateDiagram
6dd74de135 classDef yourState font-style:italic,font-weight:bold,fill:white
6dd74de136
6dd74de137 yswsii: Your state with spaces in it
6dd74de138 [*] --> yswsii:::yourState
6dd74de139 [*] --> SomeOtherState
6dd74de140 SomeOtherState --> YetAnotherState
6dd74de141 yswsii --> YetAnotherState
6dd74de142 YetAnotherState --> [*]
6dd74de143 </pre>
6dd74de144 <hr />
6dd74de145
6dd74de146 <h2>You can label the relationships</h2>
6dd74de147 <pre class="mermaid">
6dd74de148 stateDiagram-v2
6dd74de149 [*] --> State1
6dd74de150 State1 --> State2 : Transition 1
6dd74de151 State1 --> State3 : Transition 2
6dd74de152 State1 --> State4 : Transition 3
6dd74de153 State1 --> [*]
6dd74de154 </pre>
6dd74de155 <hr />
6dd74de156
6dd74de157 <h2>This shows Composite states</h2>
6dd74de158 <pre class="mermaid">
6dd74de159 stateDiagram-v2
6dd74de160 [*] --> First
6dd74de161 First --> Second
6dd74de162 First --> Third
6dd74de163
6dd74de164 state "the first composite" as First {
6dd74de165 [*] --> 1st
6dd74de166 state innerFirst {
6dd74de167 state "1 in innerFirst" as 1st1st
6dd74de168 1st2nd: 2 in innerFirst
6dd74de169 [*] --> 1st1st
6dd74de170 1st1st --> 1st2nd
6dd74de171 %% 1st2nd --> 1st
6dd74de172 }
6dd74de173 1st --> innerFirst
6dd74de174 innerFirst --> 2nd
6dd74de175 }
6dd74de176 state Second {
6dd74de177 2nd --> [*]
6dd74de178 }
6dd74de179 state Third {
6dd74de180 [*] --> 3rd
6dd74de181 3rd --> [*]
6dd74de182 }
6dd74de183 </pre>
6dd74de184 <hr />
6dd74de185
6dd74de186 <h2>Composite states can link to themselves</h2>
6dd74de187 <pre class="mermaid">
6dd74de188 stateDiagram-v2
6dd74de189 state Active {
6dd74de190 Idle
6dd74de191 }
6dd74de192 Inactive --> Idle: ACT
6dd74de193 Active --> Active: LOG
6dd74de194 </pre>
6dd74de195 <hr />
6dd74de196
6dd74de197 <h2>transition labels can span multiple lines using "br" tags or \n</h2>
6dd74de198 <pre class="mermaid">
6dd74de199 stateDiagram-v2
6dd74de200 [*] --> S1
6dd74de201 S1 --> S2: This long line uses a br tag<br />to create multiple<br />lines.
6dd74de202 S1 --> S3: This transition description uses \na newline character\nto create multiple\nlines.
6dd74de203
6dd74de204 </pre>
6dd74de205 <hr />
6dd74de206
6dd74de207 <h2>You can add Notes</h2>
6dd74de208 <pre class="mermaid">
6dd74de209 stateDiagram-v2
6dd74de210 direction LR
6dd74de211 State1: A state with a note
6dd74de212 note right of State1
6dd74de213 Important information!<br />You can write notes.<br />And\nthey\ncan\nbe\nmulti-\nline.
6dd74de214 end note
6dd74de215 State1 --> State2
6dd74de216 note left of State2 : Notes can be to the left of a state\n(like this one).
6dd74de217 note right of State2 : Notes can be to the right of a state\n(like this one).
6dd74de218 </pre>
6dd74de219 <hr />
6dd74de220
6dd74de221 <script type="module">
6dd74de222 import mermaid from './mermaid.esm.mjs';
6dd74de223 mermaid.initialize({
6dd74de224 theme: 'default',
6dd74de225 // themeCSS: '.node rect { fill: red; }',
6dd74de226 logLevel: 3,
6dd74de227 securityLevel: 'loose',
6dd74de228 flowchart: { curve: 'basis' },
6dd74de229 gantt: { axisFormat: '%m/%d/%Y' },
6dd74de230 sequence: { actorMargin: 50 },
6dd74de231 // sequenceDiagram: { actorMargin: 300 } // deprecated
6dd74de232 });
6dd74de233 </script>
6dd74de234 </body>
6dd74de235</html>