# Showcases of diagrams

             %%{init: {'theme': 'forest'}}%%
            graph TD
              A[Christmas] -->|Get money| B(Go shopping)
              B --> C{Let me think}
              B --> G[/Another/]
              C ==>|One| D[Laptop]
              C -->|Two| E[iPhone]
              C -->|Three| F[fa:fa-car Car]
              subgraph section
                C
                D
                E
                F
                G
              end

            flowchart TD
              A[Christmas] -->|Get money| B(Go shopping)
              B --> C{Let me think}
              B --> G[Another]
              C ==>|One| D[Laptop]
              C x--x|Two| E[iPhone]
              C o--o|Three| F[fa:fa-car Car]
              subgraph section
                C
                D
                E
                F
                G
              end

            sequenceDiagram
              autonumber
              par Action 1
                Alice->>John: Hello John, how are you?
              and Action 2
                Alice->>Bob: Hello Bob, how are you?
              end
              Alice->>+John: Hello John, how are you?
              Alice->>+John: John, can you hear me?
              John-->>-Alice: Hi Alice, I can hear you!
              Note right of John: John is perceptive
              John-->>-Alice: I feel great!
                  loop Every minute
                    John-->Alice: Great!
                end

    %%{init: {'theme':'forest'}}%%

    classDiagram
    	Animal "1" <|-- Duck
    	Animal <|-- Fish
    	Animal <--o 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()
    	}

    gantt
           dateFormat                :YYYY-MM-DD
           title                     Adding GANTT diagram functionality to mermaid
           excludes                  :excludes the named dates/days from being included in a charted task..
           section A section
           Completed task            :done,    des1, 2014-01-06,2014-01-08
           Active task               :active,  des2, 2014-01-09, 3d
           Future task               :         des3, after des2, 5d
           Future task2              :         des4, after des3, 5d

           section Critical tasks
           Completed task in the critical line :crit, done, 2014-01-06,24h
           Implement parser and jison          :crit, done, after des1, 2d
           Create tests for parser             :crit, active, 3d
           Future task in critical line        :crit, 5d
           Create tests for renderer           :2d
           Add to mermaid                      :1d

           section Documentation
           Describe gantt syntax               :active, a1, after des1, 3d
           Add gantt diagram to demo page      :after a1  , 20h
           Add another diagram to demo page    :doc1, after a1  , 48h

           section Last section
           Describe gantt syntax               :after doc1, 3d
           Add gantt diagram to demo page      :20h
           Add another diagram to demo page    :48h

          stateDiagram
            [*] --> Active

            state Active {
                [*] --> NumLockOff
                NumLockOff --> NumLockOn : EvNumLockPressed
                NumLockOn --> NumLockOff : EvNumLockPressed
                --
                [*] --> CapsLockOff
                CapsLockOff --> CapsLockOn : EvCapsLockPressed
                CapsLockOn --> CapsLockOff : EvCapsLockPressed
                --
                [*] --> ScrollLockOff
                ScrollLockOff --> ScrollLockOn : EvCapsLockPressed
                ScrollLockOn --> ScrollLockOff : EvCapsLockPressed
            }
            state SomethingElse {
              A --> B
              B --> A
            }

            Active --> SomethingElse
            note right of SomethingElse : This is the note to the right.
            SomethingElse --> [*]

          stateDiagram-v2
            [*] --> Active

            state Active {
                [*] --> NumLockOff
                NumLockOff --> NumLockOn : EvNumLockPressed
                NumLockOn --> NumLockOff : EvNumLockPressed
                --
                [*] --> CapsLockOff
                CapsLockOff --> CapsLockOn : EvCapsLockPressed
                CapsLockOn --> CapsLockOff : EvCapsLockPressed
                --
                [*] --> ScrollLockOff
                ScrollLockOff --> ScrollLockOn : EvCapsLockPressed
                ScrollLockOn --> ScrollLockOff : EvCapsLockPressed
            }
            state SomethingElse {
              A --> B
              B --> A
            }

            Active --> SomethingElse2
            note right of SomethingElse2 : This is the note to the right.

          erDiagram
            CUSTOMER }|..|{ DELIVERY-ADDRESS : has
            CUSTOMER ||--o{ ORDER : places
            CUSTOMER ||--o{ INVOICE : "liable for"
            DELIVERY-ADDRESS ||--o{ ORDER : receives
            INVOICE ||--|{ ORDER : covers
            ORDER ||--|{ ORDER-ITEM : includes
            PRODUCT-CATEGORY ||--|{ PRODUCT : contains
            PRODUCT ||--o{ ORDER-ITEM : "ordered in"

          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

    requirementDiagram

        requirement test_req {
        id: 1
        text: the test text.
        risk: high
        verifymethod: test
        }

        functionalRequirement test_req2 {
        id: 1.1
        text: the second test text.
        risk: low
        verifymethod: inspection
        }

        performanceRequirement test_req3 {
        id: 1.2
        text: the third test text.
        risk: medium
        verifymethod: demonstration
        }

        element test_entity {
        type: simulation
        }

        element test_entity2 {
        type: word doc
        docRef: reqs/test_entity
        }

        test_entity - satisfies -> test_req2
        test_req - traces -> test_req2
        test_req - contains -> test_req3
        test_req <- copies - test_entity2

          gitGraph:
          commit
          branch hotfix
          checkout hotfix
          commit
          branch develop
          checkout develop
          commit id:"An id" tag:"A tag"
          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