This site was generated as explained below:
Notes:
ethnicity
finds ethnicities
on the Paul pageThe root of the diagram is mapped to Family with the type
property set to Family
This documentation was generated from family.md markdown file with the diagram embedded using drawio
fenced block with representations/drawio/diagram
expansion token.
Diagram semantic elements are mapped to the root semantic element (Family
) using the following feature-map
:
container:
self:
members:
argument-type: Person
comparator: label
The above mapping means that use the semantic element of this diagram element (root) and add semantic elements of its descendants to the members
reference ordering by label
. argument-type
specifies that only instances of Person
shall be added to the members
reference. This is not really necessary to specify argument-type
in this case because the members reference type is Person
.
page-element
set to true
specifies that the root semantic element shall also be the page’s semantic elements. Because this is the top-level page (not linked from diagram elements), it also becomes the document’s semantic element and as such the contents element of the diagram’s Ecore resource.
Page name “Sample Family” is used to set the name of the family semantic element.
Diagram elements are mapped either to Man or Woman. They have semantic-id
property to demonstrate its usage. Another way to provide meaningful semantic ID’s and URL’s is to edit diagram element ID’s.
Connections establish family relationships using feature-map
property:
source: father
specifies that father
feature of the connection source semantic element shall be set to the connection target semantic element.source: mother
specifies that mother
feature of the connection source semantic element shall be set to the connection target semantic element.source: parents
specifies that the connection target semantic element shall be added to the parents
reference of the source semantic element.target: children
specifies that the connection source semantic element shall be added to the children
reference of the target semantic element.This site was generated with 82 lines of Java code in a JUnit test.
Border of Isa
is set during the generation with the following code:
@Override
protected void filterRepresentationElement(
Element representationElement,
EObject semanticElement,
Map<EObject, EObject> registry,
ProgressMonitor progressMonitor) {
// Demo of representation filtering - adding a black border to Isa
if (representationElement instanceof org.nasdanika.drawio.ModelElement) {
org.nasdanika.drawio.ModelElement rme = (org.nasdanika.drawio.ModelElement) representationElement;
if ("isa".equals(rme.getProperty("semantic-id"))) {
rme.getStyle().put("imageBorder", "default");
}
}
}
Border of Fiona
is also set during generation by FamilyRepresentationElementFilter
class which is loaded using the Capability framework. This approach allows to decouple representation filtering logic from the generation logic.
Representation filtering may be used to inject information which is not available during diagram creation or dynamic, but is available during generation.
This section demonstrates advanced capabilities of Markdown documentation.
You can embed PNG and JPEG using fenced blocks.
```png-resource
isa.png
```
Resource location is resolved relative to the base-uri
.
```jpeg-resource
my.jpeg
```
```png
Base 64 encoded png
```
```jpeg
Base 64 encoded jpeg
```
You can also embed PlantUML, Draw.io, and Mermaid diagrams using fenced blocks. Draw.io diagrams can be edited in a desktop editor or Online editor.
```drawio-resource
aws.drawio
```
Resource location is resolved in the same way as for image files as explained above.
PlantUML diagrams can be defined inline or loaded from resources.
```uml-resource
sequence.plantuml
```
The following language specifications (dialects) are supported:
uml
- for the following diagram types:
wireframe
- for Wireframe diagramsgantt
- for Gantt diagramsmindmap
- for Mind Mapswbs
- for Work Breakdown StructuresSequence
Fenced block:
```uml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
```
Diagram:
Component
Component diagram with links to component pages.
Fenced block:
```uml
package Core {
component Common [[https://github.com/Nasdanika/core/tree/master/common]]
}
package HTML {
component HTML as html [[https://github.com/Nasdanika/html/tree/master/html]]
[html] ..> [Common]
}
```
Diagram:
Wireframe
Fenced block:
```wireframe
{
Just plain text
[This is my button]
() Unchecked radio
(X) Checked radio
[] Unchecked box
[X] Checked box
"Enter text here "
^This is a droplist^
}
```
Diagram:
Gantt
Fenced block:
```gantt
[Prototype design] lasts 15 days and links to [[https://docs.nasdanika.org/index.html]]
[Test prototype] lasts 10 days
-- All example --
[Task 1 (1 day)] lasts 1 day
[T2 (5 days)] lasts 5 days
[T3 (1 week)] lasts 1 week
[T4 (1 week and 4 days)] lasts 1 week and 4 days
[T5 (2 weeks)] lasts 2 weeks
```
Diagram:
Mind Map
Fenced block:
```mindmap
* Debian
** [[https://ubuntu.com/ Ubuntu]]
*** Linux Mint
*** Kubuntu
*** Lubuntu
*** KDE Neon
** LMDE
** SolydXK
** SteamOS
** Raspbian with a very long name
*** <s>Raspmbc</s> => OSMC
*** <s>Raspyfi</s> => Volumio
```
Diagram:
WBS
WBS elements can have links. This type of diagram can also be used to display organization structure.
```wbs
* [[https://docs.nasdanika.org/index.html Business Process Modelling WBS]]
** Launch the project
*** Complete Stakeholder Research
*** Initial Implementation Plan
** Design phase
*** Model of AsIs Processes Completed
**** Model of AsIs Processes Completed1
**** Model of AsIs Processes Completed2
*** Measure AsIs performance metrics
*** Identify Quick Wins
** Complete innovate phase
```
Fenced block:
Diagram:
You can define Mermaid diagrams in mermaid
fenced blocks:
flowchart LR
Alice --> Bob & Chuck --> Deb
results in this diagram:
It is also possible to load a diagram definition from a resource resolved relative to the model resource:
```mermaid-resource
sequence.mermaid
```
[TOC]
to the document as explained in the documentation. This extension will create a table of contents from markdown headers.~~strikethrough~~
-> H~2~O
-> H202^5^ = 32
-> 25 = 32