diff --git a/README.md b/README.md index d09567c52..781cee7e1 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,46 @@ # mermaid [](https://travis-ci.org/mermaid-js/mermaid) [](https://www.npmjs.com/package/mermaid) [](https://coveralls.io/github/mermaid-js/mermaid?branch=master) [](https://join.slack.com/t/mermaid-talk/shared_invite/enQtNzc4NDIyNzk4OTAyLWVhYjQxOTI2OTg4YmE1ZmJkY2Y4MTU3ODliYmIwOTY3NDJlYjA0YjIyZTdkMDMyZTUwOGI0NjEzYmEwODcwOTE) [](https://percy.io/Mermaid/mermaid) + -__Generate diagrams, charts, graphs or flows from markdown-like text via javascript.__ -See our [documentation](http://mermaid-js.github.io/mermaid/) and start simplifying yours. Play in our [live editor](https://mermaidjs.github.io/mermaid-live-editor/) or jump straight to the [installation and usage](http://mermaid-js.github.io/mermaid/#/usage). +__mermaid is a Javascript based diagramming and charting tool. It generates diagrams flowcharts and more, using markdown-inspired text for ease and speed.__ + +Check out the list of [Integrations and Usages of Mermaid](https://github.com/mermaid-js/mermaid/blob/develop/docs/integrations.md) + +For more information and help in getting started, please view our [documentation](http://mermaid-js.github.io/mermaid/) and start simplifying yours. Alternatively, you can also play with our [live editor](https://mermaidjs.github.io/mermaid-live-editor/). + + +:trophy: **Mermaid was nominated and won the [JS Open Source Awards (2019)](https://osawards.com/javascript/#nominees) in the category "The most exciting use of technology"!!! Thanks to all involved, people committing pull requests, people answering questions and special thanks to Tyler Long who is helping me maintain the project.** + +## New diagrams in 8.4 + +With version 8.4 class diagrams have got some new features, bug fixes and documentation. Another new feature in 8.4 is the new diagram type, state diagrams. + + + +## Special note regarding version 8.2 + +In version 8.2 a security improvement was introduced. A securityLevel configuration was introduced which sets the level of trust to be used on the parsed diagrams. + +- **true**: (default) tags in text are encoded, click functionality is disabled +- false: tags in text are allowed, click functionality is enabled + +Closed issues: + +⚠️ **Note** : This changes the default behaviour of mermaid so that after upgrade to 8.2, if the securityLevel is not configured, tags in flowcharts are encoded as tags and clicking is prohibited. + +If your application is taking resposibility for the diagram source security you can set the securityLevel accordingly. By doing this clicks and tags are again allowed. + +```javascript +mermaidAPI.initialize({ + securityLevel: 'loose' +}); +``` + +For more information and help in getting started, please view our [documentation](http://mermaid-js.github.io/mermaid/) and start simplifying yours. Play with our [live editor](https://mermaidjs.github.io/mermaid-live-editor/) or jump straight to the [installation and usage](http://mermaid-js.github.io/mermaid/#/usage). -:trophy: _"The most exciting use of technology"_ - [JS Open Source Awards (2019)](https://osawards.com/javascript/#nominees) - +__The following are some examples of the diagrams, charts and graphs that can be made using mermaid and the Markdown-inspired text specific to it. Click here jump into the [text syntax](https://mermaid-js.github.io/mermaid/#/n00b-syntaxReference).__
diff --git a/cypress/integration/rendering/flowchart.spec.js b/cypress/integration/rendering/flowchart.spec.js
index bc6c68f6e..c88129ddc 100644
--- a/cypress/integration/rendering/flowchart.spec.js
+++ b/cypress/integration/rendering/flowchart.spec.js
@@ -524,7 +524,8 @@ describe('Flowchart', () => {
{ flowchart: { htmlLabels: false } }
);
});
-it('25: Handle link click events (link, anchor, mailto, other protocol, script)', () => {
+
+ it('25: Handle link click events (link, anchor, mailto, other protocol, script)', () => {
imgSnapshotTest(
`graph TB
TITLE["Link Click Events (click the nodes below)"] @@ -583,6 +584,39 @@ it('25: Handle link click events (link, anchor, mailto, other protocol, script)' { flowchart: { htmlLabels: false } } ); }); + + it('28: Apply default class to all nodes which do not have another class assigned (htmlLabels enabled)', () => { + imgSnapshotTest( + `graph TD + A[myClass1] --> B[default] & C[default] + B[default] & C[default] --> D[myClass2] + classDef default stroke-width:2px,fill:none,stroke:silver + classDef node color:red + classDef myClass1 color:#0000ff + classDef myClass2 stroke:#0000ff,fill:#ccccff + class A myClass1 + class D myClass2 + `, + { flowchart: { htmlLabels: true } } + ); + }); + + it('29: Apply default class to all nodes which do not have another class assigned (htmlLabels disabled)', () => { + imgSnapshotTest( + `graph TD + A[myClass1] --> B[default] & C[default] + B[default] & C[default] --> D[myClass2] + classDef default stroke-width:2px,fill:none,stroke:silver + classDef node color:red + classDef myClass1 color:#0000ff + classDef myClass2 stroke:#0000ff,fill:#ccccff + class A myClass1 + class D myClass2 + `, + { flowchart: { htmlLabels: false } } + ); + }); + it('30: Possibility to style text color of nodes and subgraphs as well as apply classes to subgraphs', () => { imgSnapshotTest( `graph LR diff --git a/dist/index.html b/dist/index.html index e28890ce7..46af0d709 100644 --- a/dist/index.html +++ b/dist/index.html @@ -384,6 +384,17 @@ graph TB click B "index.html#link-clicked" "link test" click D testClick "click test" +
+ graph TD
+ A[myClass1] --> B[default] & C[default]
+ B[default] & C[default] --> D[myClass2]
+ classDef default stroke-width:2px,fill:none,stroke:silver
+ classDef node color:red
+ classDef myClass1 color:#0000ff
+ classDef myClass2 stroke:#0000ff,fill:#ccccff
+ class A myClass1
+ class D myClass2
+
diff --git a/docs/README.md b/docs/README.md index 59eb159e3..4fb40e62b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,38 +1,9 @@ +# Mermaid + [](https://travis-ci.org/mermaid-js/mermaid) [](https://coveralls.io/github/knsv/mermaid?branch=master) [](https://gitter.im/knsv/mermaid?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -# mermaid - -## New diagrams in 8.4 - -With version 8.4 class diagrams has got some new features, bug fixes and documentation. Another new feature in 8.4 is the new diagram -type, state diagrams. - - - - -## Special note regarding version 8.2 - -In version 8.2 a security improvement was introduced. A securityLevel configuration was introduced which sets the level of trust to be used on the parsed diagrams. - -* **true**: (default) tags in text are encoded, click functionality is disabled -* false: tags in text are allowed, click functionality is enabled - -Closed issues: - -⚠️ **Note** : This changes the default behaviour of mermaid so that after upgrade to 8.2, if the securityLevel is not configured, tags in flowcharts are encoded as tags and clicking is prohibited. - -If your application is taking resposibility for the diagram source security you can set the securityLevel accordingly. By doing this clicks and tags are again allowed. - -```javascript - mermaidAPI.initialize({ - securityLevel: 'loose' - }); -``` - -**🖖 Keep a steady pulse: mermaid needs more Collaborators [#866](https://github.com/knsv/mermaid/issues/866)** -  Generation of diagrams and flowcharts from text in a similar manner as markdown. @@ -41,8 +12,39 @@ Ever wanted to simplify documentation and avoid heavy tools like Visio when expl This is why mermaid was born, a simple markdown-like script language for generating charts from text via javascript. +Check out the list of [Integrations and Usages of Mermaid](./integrations.md) + **Mermaid was nominated and won the JS Open Source Awards (2019) in the category "The most exciting use of technology"!!! Thanks to all involved, people committing pull requests, people answering questions and special thanks to Tyler Long who is helping me maintain the project.** +## New diagrams in 8.4 + +With version 8.4 class diagrams have got some new features, bug fixes and documentation. Another new feature in 8.4 is the new diagram type, state diagrams. + + + +## Special note regarding version 8.2 + +In version 8.2 a security improvement was introduced. A securityLevel configuration was introduced which sets the level of trust to be used on the parsed diagrams. + +- **true**: (default) tags in text are encoded, click functionality is disabled +- false: tags in text are allowed, click functionality is enabled + +Closed issues: + +⚠️ **Note** : This changes the default behaviour of mermaid so that after upgrade to 8.2, if the securityLevel is not configured, tags in flowcharts are encoded as tags and clicking is prohibited. + +If your application is taking resposibility for the diagram source security you can set the securityLevel accordingly. By doing this clicks and tags are again allowed. + +```javascript +mermaidAPI.initialize({ + securityLevel: 'loose' +}); +``` + +**🖖 Keep a steady pulse: mermaid needs more Collaborators [#866](https://github.com/knsv/mermaid/issues/866)** + +## Diagrams + ### Flowchart ``` @@ -52,8 +54,8 @@ graph TD; B-->D; C-->D; ``` - + ### Sequence diagram @@ -70,8 +72,8 @@ sequenceDiagram John->>Bob: How about you? Bob-->>John: Jolly good! ``` - + ### Gantt diagram @@ -87,8 +89,8 @@ Active task :active, des2, 2014-01-09, 3d Future task : des3, after des2, 5d Future task2 : des4, after des3, 5d ``` - + ### Class diagram - :exclamation: experimental @@ -108,8 +110,8 @@ Class01 : int chimp Class01 : int gorilla Class08 <--> C2: Cool label ``` - + ### Git graph - :exclamation: experimental @@ -135,7 +137,6 @@ merge newbranch  - ## Installation ### CDN @@ -154,12 +155,10 @@ Example: https://unpkg.com/mermaid@7.1.0/dist/ yarn add mermaid ``` - ## Documentation https://mermaidjs.github.io - ## Sibling projects - [mermaid CLI](https://github.com/mermaidjs/mermaid.cli) @@ -167,8 +166,7 @@ https://mermaidjs.github.io - [mermaid webpack demo](https://github.com/mermaidjs/mermaid-webpack-demo) - [mermaid Parcel demo](https://github.com/mermaidjs/mermaid-parcel-demo) - -# Request for assistance +## Request for assistance Things are piling up and I have a hard time keeping up. To remedy this it would be great if we could form a core team of developers to cooperate @@ -178,61 +176,62 @@ As part of this team you would get write access to the repository and would represent the project when answering questions and issues. Together we could continue the work with things like: -* adding more types of diagrams like mindmaps, ert diagrams, etc. -* improving existing diagrams + +- Adding more types of diagrams like mindmaps, ert diagrams, etc. +- Improving existing diagrams Don't hesitate to contact me if you want to get involved. +## For contributors -# For contributors +### Setup -## Setup +``` +yarn install +``` - yarn install +### Build +``` +yarn build:watch +``` -## Build +### Lint - yarn build:watch - - -## Lint - - yarn lint +``` +yarn lint +``` We use [eslint](https://eslint.org/). We recommend you installing [editor plugins](https://eslint.org/docs/user-guide/integrations) so you can get real time lint result. +### Test +``` +yarn test +``` +Manual test in browser: open `dist/index.html` -## Test - - yarn test - -Manual test in browser: - - open dist/index.html - - -## Release +### Release For those who have the permission to do so: Update version number in `package.json`. - npm publish +``` +npm publish +``` Command above generates files into the `dist` folder and publishes them to npmjs.org. - -# Credits +## Credits Many thanks to the [d3](http://d3js.org/) and [dagre-d3](https://github.com/cpettitt/dagre-d3) projects for providing the graphical layout and drawing libraries! Thanks also to the [js-sequence-diagram](http://bramp.github.io/js-sequence-diagrams) project for usage of the grammar for the sequence diagrams. Thanks to Jessica Peter for inspiration and starting point for gantt rendering. -*Mermaid was created by Knut Sveidqvist for easier documentation.* +_Mermaid was created by Knut Sveidqvist for easier documentation._ -*[Tyler Long](https://github.com/tylerlong) has became a collaborator since April 2017.* +_[Tyler Long](https://github.com/tylerlong) has became a collaborator since April 2017._ Here is the full list of the projects [contributors](https://github.com/knsv/mermaid/graphs/contributors). diff --git a/docs/development.md b/docs/development.md index af2805afd..1a26f91e8 100644 --- a/docs/development.md +++ b/docs/development.md @@ -3,9 +3,31 @@ ## Updating the documentation -We write documention with GitBook. +Please continue writing documentation at [mermaid-js/mermaid/docs](https://github.com/mermaid-js/mermaid/tree/develop/docs). -Please continue with the [mermaid-gitbook](https://github.com/mermaidjs/mermaid-gitbook) project. +We publish documentation using GitHub Pages. + + +### Questions and/or suggestions ? +After logging in at [GitHub.com](https://www.github.com), open or append to an issue [using the GitHub issue tracker of the mermaid-js repository](https://github.com/mermaid-js/mermaid/issues?q=is%3Aissue+is%3Aopen+label%3A%22Area%3A+Documentation%22). + +### How to contribute a suggestion +Markdown is used to format the text, for more information about Markdown [see the GitHub Markdown help page](https://help.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax). + +If you want to use an editor on your own computer, you may follow these steps: +* Find the Markdown file (.md) to edit in the [mermaid-js/mermaid/docs](https://github.com/mermaid-js/mermaid/tree/develop/docs) directory on the develop branch. +* Create a fork of the develop branch. +* Make changes or add new documentation. +* Commit changes to your fork and push it to GitHub. +* Create a pull request of your fork. + +If you don't have such editor on your computer, you may follow these steps: +* Login at [GitHub.com](https://www.github.com). +* Navigate to [mermaid-js/mermaid/docs](https://github.com/mermaid-js/mermaid/tree/develop/docs). +* To edit a file, click the pencil icon at the top-right of the file contents panel. +* Describe what you changed in the "Propose file change" section, located at the bottom of the page. +* Submit your changes by clicking the button "Propose file change" at the bottom (by automatic creation of a fork and a new branch). +* Create a pull request of your newly forked branch, by clicking the green "Create pull request" button. ## How to add a new diagram type diff --git a/docs/img/liveEditorOptions.png b/docs/img/liveEditorOptions.png new file mode 100644 index 000000000..a1cb24ace Binary files /dev/null and b/docs/img/liveEditorOptions.png differ diff --git a/docs/integrations.md b/docs/integrations.md new file mode 100644 index 000000000..d01f7c35c --- /dev/null +++ b/docs/integrations.md @@ -0,0 +1,139 @@ +# Integrations + +The following is a list of different integrations and plugins where mermaid is being used + +## Productivity + +- [GitLab](https://docs.gitlab.com/ee/user/markdown.html#diagrams-and-flowcharts) (**Native support**) +- [GitHub](https://github.com) + - [Github action: Compile mermaid to image](https://github.com/neenjaw/compile-mermaid-markdown-action) + - [svg-generator](https://github.com/SimonKenyonShepard/mermaidjs-github-svg-generator) +- [GitBook](http://gitbook.com) + - [Mermaid Plugin](https://github.com/JozoVilcek/gitbook-plugin-mermaid) + - [Markdown with Mermaid CLI](https://github.com/miao1007/gitbook-plugin-mermaid-cli) + - [Mermaid plugin for GitBook](https://github.com/wwformat/gitbook-plugin-mermaid-pdf) +- [Atlassian Products](https://www.atlassian.com) + - [Mermaid Plugin for Confluence](https://marketplace.atlassian.com/apps/1214124/mermaid-plugin-for-confluence?hosting=server&tab=overview) + - [CloudScript.io Addon](https://marketplace.atlassian.com/apps/1219878/cloudscript-io-mermaid-addon?hosting=cloud&tab=overview) + - [Auto convert diagrams in Jira](https://github.com/coddingtonbear/jirafs-mermaid) +- [Redmine](https://redmine.org) + - [Mermaid Macro](https://www.redmine.org/plugins/redmine_mermaid_macro) + - [redmine-mermaid](https://github.com/styz/redmine_mermaid) + - [markdown-for-mermaid-plugin](https://github.com/jamieh-mongolian/markdown-for-mermaid-plugin) + +## CRM/ERP/Similar + + - [coreBOS](http://blog.corebos.org/blog/december2019) + +## Blogs + +- [Wordpress](https://wordpress.org) + - [WordPress Markdown Editor](https://wordpress.org/plugins/wp-githuber-md) + - [WP-ReliableMD](https://wordpress.org/plugins/wp-reliablemd/) +- [Hexo](https://hexo.io) + - [hexo-filter-mermid-diagrams](https://github.com/webappdevelp/hexo-filter-mermaid-diagrams) + - [hexo-tag-mermaid](https://github.com/JameChou/hexo-tag-mermaid) + - [hexo-mermaid-diagrams](https://github.com/mslxl/hexo-mermaid-diagrams) + +## CMS + +- [VuePress](https://vuepress.vuejs.org/) + - [Plugin for Mermaid.js](https://github.com/eFrane/vuepress-plugin-mermaidjs) + - [vuepress-plugin-mermaidjs-cli](https://github.com/gwleclerc/vuepress-plugin-mermaidjs-cli) +- [Grav CMS](https://getgrav.org/) + - [Mermaid Diagrams](https://github.com/DanielFlaum/grav-plugin-mermaid-diagrams) + - [Gitlab Markdown Adapter](https://github.com/Goutte/grav-plugin-gitlab-markdown-adapter) + +## Communication + +- [Discourse](https://discourse.org) + - [Mermaid Plugin](https://github.com/pnewell/discourse-mermaid), [And](https://github.com/unfoldingWord-dev/discourse-mermaid) +- [Mattermost](https://mattermost.com/) + - [Mermaid Plugin](https://github.com/SpikeTings/Mermaid) +- [phpBB](https://phpbb.com) + - [phpbb-ext-mermaid](https://github.com/AlfredoRamos/phpbb-ext-mermaid) +- [NodeBB](https://nodebb.org) + - [Mermaid Plugin](https://www.npmjs.com/package/nodebb-plugin-mermaid) + +## Wikis + +- [Media Wiki](https://www.mediawiki.org/wiki/Extension:Mermaid) +- [Semantic Media Wiki](https://semantic-mediawiki.org) + - [Mermaid Plugin](https://github.com/SemanticMediaWiki/Mermaid) +- [FosWiki](https://foswiki.org) + - [Mermaid Plugin](https://foswiki.org/Extensions/MermaidPlugin) +- [DokuWiki](https://dokuwiki.org) + - [Flowcharts](https://www.dokuwiki.org/plugin:flowcharts?s[]=mermaid) +- [TiddlyWiki](https://tiddlywiki.com/) + - [mermaid-tw5-plugin](https://github.com/michaeljmcd/mermaid-tw5-plugin) + +## Editor Plugins + +- [Vs Code](https://code.visualstudio.com/) + - [Markdown Preview Mermaid Support](https://marketplace.visualstudio.com/items?itemName=bierner.markdown-mermaid) + - [Mermaid Preview](https://marketplace.visualstudio.com/items?itemName=vstirbu.vscode-mermaid-preview) + - [Mermaid Markdown Syntax Highlighting](https://marketplace.visualstudio.com/items?itemName=bpruitt-goddard.mermaid-markdown-syntax-highlighting) + - [Mermaid Editor](https://marketplace.visualstudio.com/items?itemName=tomoyukim.vscode-mermaid-editor) + - [Mermaid Export](https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.mermaid-export) + - [Markdown PDF](https://marketplace.visualstudio.com/items?itemName=yzane.markdown-pdf) + - [Preview](https://marketplace.visualstudio.com/items?itemName=searKing.preview-vscode) + - [Preview Sequence Diagrams](https://marketplace.visualstudio.com/items?itemName=arichika.previewseqdiag-vscode) +- [Markdown-It](https://github.com/markdown-it/markdown-it) + - [Textual UML Parser](https://github.com/manastalukdar/markdown-it-textual-uml) + - [Mermaid Plugin](https://github.com/tylingsoft/markdown-it-mermaid) + - [md-it-mermaid](https://github.com/iamcco/md-it-mermaid) + - [markdown-it-mermaid-fence-new](https://github.com/Revomatico/markdown-it-mermaid-fence-new) + - [markdown-it-mermaid-less](https://github.com/searKing/markdown-it-mermaid-less) +- [Atom](https://atom.io) + - [Markdown Preview Enhanced](https://atom.io/packages/markdown-preview-enhanced) + - [Atom Mermaid](https://atom.io/packages/atom-mermaid) + - [Language Mermaid Syntax Highlighter](https://atom.io/packages/language-mermaid) +- [Sublime Text 3](https://sublimetext.com) + - [Mermaid Package](https://packagecontrol.io/packages/Mermaid) +- [Astah](http://astah.net) + - [Export to Mermaid](https://github.com/Avens666/Astah_Jude_UML_export_to_Markdown-mermaid-Plantuml-) +- [Light Table](http://lighttable.com/) + - [Mermaid Plugin](https://github.com/cldwalker/Mermaid) +- [Draw.io](http://draw.io) - [Plugin](https://github.com/nopeslide/drawio_mermaid_plugin) +- [Inkdrop](http://inkdrop.app) - [Plugin](https://github.com/inkdropapp/inkdrop-mermaid) +- [Vim](https://vim.org) + - [Vim Diagram Syntax](https://github.com/zhaozg/vim-diagram) +- [Brackets](http://brackets.io/) + - [Mermaid Preview](https://s3.amazonaws.com/extend.brackets/alanhohn.mermaid-preview/alanhohn.mermaid-preview-1.0.2.zip) +- [Iodide](https://github.com/iodide-project/iodide) + - [iodide-mermaid-plugin](https://github.com/iodide-project/iodide-mermaid-plugin) + +## Document Generation + +- [Sphinx](https://www.sphinx-doc.org/en/master/) + - [sphinxcontrib-mermaid](https://github.com/mgaitan/sphinxcontrib-mermaid) +- [remark.js](https://remark.js.org/) + - [remark-mermaid](https://github.com/temando/remark-mermaid) +- [jSDoc](https://jsdoc.app/) + - [jsdoc-mermaid](https://github.com/Jellyvision/jsdoc-mermaid) +- [MkDocs](https://mkdocs.org) + - [MarkdownMermaid](https://github.com/pugong/mkdocs-mermaid-plugin) +- [Type Doc](https://typedoc.org/) + - [typedoc-plugin-mermaid](https://www.npmjs.com/package/typedoc-plugin-mermaid) + +## Chrome Extensions + +- [Mermaid Diagrams](https://chrome.google.com/webstore/detail/mermaid-diagrams/phfcghedmopjadpojhmmaffjmfiakfil) +- [GitHub + Mermaid](https://chrome.google.com/webstore/detail/github-%2B-mermaid/goiiopgdnkogdbjmncgedmgpoajilohe) +- [Mermaid Markdown](https://chrome.google.com/webstore/detail/mermaid-markdown/mboeoikjijmjcjgpccghbcoegikliijg) +- [Monkeys](https://chrome.google.com/webstore/detail/monkeys-mermaid-for-githu/cplfdpoajbclbgphaphphcldamfkjlgi) +- [Asciidoctor Live Preview](https://chrome.google.com/webstore/detail/asciidoctorjs-live-previe/iaalpfgpbocpdfblpnhhgllgbdbchmia) __works in the new IE as well__ +- [Chrome Diagrammer](https://chrome.google.com/webstore/detail/chrome-diagrammer/bkpbgjmkomfoakfklcjeoegkklgjnnpk) +- [Diagram Tab](https://github.com/khafast/diagramtab) + +## Other + +- [Jekyll](https://jekyllrb.com/) + - [jekyll-mermaid](https://rubygems.org/gems/jekyll-mermaid) + - [jekyll-mermaid-diagrams](https://github.com/fuzhibo/jekyll-mermaid-diagrams) +- [Reveal.js](https://github.com/hakimel/reveal.js) + - [reveal.js-mermaid-plugin](https://github.com/ludwick/reveal.js-mermaid-plugin) +- [Bisheng](https://www.npmjs.com/package/bisheng) + - [bisheng-plugin-mermaid](https://github.com/yct21/bisheng-plugin-mermaid) +- [Reveal CK](https://github.com/jedcn/reveal-ck) + - [reveal-ck-mermaid-plugin](https://github.com/tmtm/reveal-ck-mermaid-plugin) diff --git a/docs/liveEditorOptions.png b/docs/liveEditorOptions.png new file mode 100644 index 000000000..a1cb24ace Binary files /dev/null and b/docs/liveEditorOptions.png differ diff --git a/docs/n00b-gettingStarted.md b/docs/n00b-gettingStarted.md index 96cd576c9..484baefdd 100644 --- a/docs/n00b-gettingStarted.md +++ b/docs/n00b-gettingStarted.md @@ -1,42 +1,46 @@ -# A more basic getting started +# A basic mermaid User-Guide for Beginners -Writing mermaid code is simple. +Creating diagrams and charts, using mermaid code is simple. -But how is the code turned into a diagram in a web page? To do this we need a mermaid renderer. +But how is the code turned into a diagram in a web page? This is done with the use of a mermaid renderer. -Thankfully the mermaid renderer is very accessible, in essence it is a javascript. +Thankfully the mermaid renderer is very accessible, in essence it is a piece of javascript that can be called. -The requirement is on the part of the web browser. Modern web browsers, such as Firefox, Chrome and Safari, can render mermaid. But Internet Explorer cannot. The web browser also needs access to the online mermaid renderer which it downloads from https://cdn.jsdelivr.net/npm/mermaid +Most widely used web browsers, such as Firefox, Chrome and Safari, can render mermaid, Internet Explorer however cannot. The web browser also needs access to the online mermaid renderer which it downloads from https://cdn.jsdelivr.net/npm/mermaid -For an easy introduction, here follows three practical examples using: -1. an online mermaid editor -2. a mermaid plugin -3. a generic web server of your choosing +# For beginners, there are three relatively easy ways you can use mermaid: +1. Using the mermaid [live editor](https://mermaid-js.github.io/mermaid-live-editor/) +2. Using a mermaid plugin, such as that for Confluence or [Atom](https://atom.io/packages/atom-mermaid). +3. Calling mermaid renderer with HTML, deployed in a friendly browser. -Following either of these examples, you can get started with converting your own mermaid code into web diagrams. +# Following either of these examples, you can get started with creating your own diagrams using mermaid code. -## the mermaid live editor +## 1. The mermaid live editor: -The quickest way to get started with mermaid is to visit [The mermaid live editor](https://mermaidjs.github.io/mermaid-live-editor). + A great way to get started with mermaid is to visit [The mermaid live editor](https://mermaidjs.github.io/mermaid-live-editor). -In the `Code` section one can write or edit raw mermaid code, and instantly `Preview` the rendered result. +In the `Code` section one can write or edit raw mermaid code, and instantly `Preview` the rendered result on the panel beside it. -This is a great way to get started. + -It is also the easiest way to develop diagrams, the code of which can be pasted straight into documentation. - +You can also copy the code from the code section and paste it into either a mermaid plugin or in inside an html file, which will be taught in numbers 2 and 3. + +It is also an easier way to develop diagrams. You can also click "Copy Markdown" to copy the markdown code for the diagram, that can then be pasted directly into your documentation. + + The `Mermaid configuration` is for controlling mermaid behaviour. An easy introduction to mermaid configuration is found in the [Advanced usage](n00b-advanced.md) section. A complete configuration reference cataloguing default values is found on the [mermaidAPI](mermaidAPI.md) page. -## mermaid using plugins +## 2. Using mermaid plugins: -Thanks to the growing popularity of mermaid, many plugins already exist which incorporate a mermaid renderer. +Thanks to the growing popularity of mermaid, many plugins already exist which incorporate a mermaid renderer. An extensive list can be found [here](integrations.md). -One example is the [Atlassian Confluence mermaid plugin](https://marketplace.atlassian.com/apps/1214124/mermaid-plugin-for-confluence?hosting=server&tab=overview) +One example in the list is the [Atlassian Confluence mermaid plugin](https://marketplace.atlassian.com/apps/1214124/mermaid-plugin-for-confluence?hosting=server&tab=overview) When the mermaid plugin is installed on a Confluence server, one can insert a mermaid object into any Confluence page. +# Here is a step by step process for using the mermaid-Confluence plugin: --- @@ -64,24 +68,32 @@ When the mermaid plugin is installed on a Confluence server, one can insert a me --- -## mermaid using any web server (or just a browser) +## 3. mermaid using any web server (or just a browser): -This example can be used with any common web server. Apache, IIS, nginx, node express [...], you pick your favourite. +This method can be used with any common web server. Apache, IIS, nginx, node express [...], you pick your favourite. + +We do not need to install anything on the server, apart from a program (like Notepad++) that can generate an html file, which is then deployed by a web browser (such as Firefox, Chrome, Safari, but not Internet Explorer). + +So if you want to really simplify things when testing this out, don't use a web server at all but just create the file locally and drag it into your browser window. It is the browser which does all the work of rendering mermaid! + +# Here are instructions for creating an html file with mermaid code: +# Note that all this is written in the html `` section of the web page. + +When writing the html file, we give the web browser three instructions inside the html code: + +a. A reference for fetching the online mermaid renderer, which is written in Javascript. + +b. The mermaid code for the diagram we want to create. + +c. The `mermaid.initialize()` command to start the rendering process. -We do not need to install anything on the server, apart from a normal file of html to be reached by a web browser (such as Firefox, Chrome, Safari, but not Internet Explorer). So if you want to really simplify things when testing this out, don't use a web server at all but just create the file locally and drag it into your browser window. It is the browser which does all the work of rendering mermaid! -Through the html file, we give the web browser three instructions inside the html code it retrieves: -1. a reference for fetching the online mermaid renderer, the renderer is just a javascript. -2. the mermaid code we want to diagram. -3. the `mermaid.initialize()` command to start the rendering process -All this is done in the html `` section of the web page. This is what needs to go into the html file: - -1. The reference to the mermaid renderer is done in a ` |