#281 elements and relationships can be empty; additional $sprite is part of relationship links

pull/285/head
KIRCHSTH 3 years ago
parent 4f41949003
commit 4edd172116

@ -929,6 +929,28 @@ $elementSkin
!return $breakText($text, $usedNewLine, $widthStr)
!endfunction
' Element base layout
' ##################################
!function $getElementBase($label, $techn, $descr, $sprite)
!$element = ""
!if ($sprite != "")
!$element = $element + $getSprite($sprite) + '\n'
!endif
!if ($label != "")
!$element = $element + '== ' + $breakLabel($label)
!else
!$element = $element + '<size:0>.</size>'
!endif
!if ($techn != "")
!$element = $element + '\n//<size:' + $TECHN_FONT_SIZE + '>[' + $breakTechn($techn, '-1') + ']</size>//'
!endif
!if ($descr != "")
!$element = $element + '\n\n' + $descr
!endif
!return $element
!endfunction
' Element properties
' ##################################
@ -1241,15 +1263,26 @@ UpdateBoundaryStyle("", $bgColor=$BOUNDARY_BG_COLOR, $fontColor=$BOUNDARY_COLOR,
!$rel = $rel + ' ' + $toStereos($tags)
!endif
!$rel = $rel + ' : '
!if ($link != "")
!$rel = $rel + '**[[' + $link + ' '
!endif
!if ($sprite != "")
!$rel = $rel + $getSprite($sprite) + ' '
!$rel = $rel + $getSprite($sprite)
!if ($label != "")
!$rel = $rel + ' '
!endif
!endif
!if ($link != "")
!$usedNewLine = ']]**\n**[[' + $link + ' '
!$rel = $rel + '**[[' + $link + ' ' + $breakText($label, $usedNewLine) + ']]**'
' if sprite and label is empty than the link url is shown (otherwise link cannot be activated at all)
!$rel = $rel + $breakText($label, $usedNewLine) + ']]**'
!else
!$usedNewLine = '**\n**'
!$rel = $rel + '**' + $breakText($label, $usedNewLine) + '**'
!if ($label != "")
!$usedNewLine = '**\n**'
!$rel = $rel + '**' + $breakText($label, $usedNewLine) + '**'
!else
!$rel = $rel + '<size:0>.</size>'
!endif
!endif
!if ($techn != "")
' line break is not deterministic, calculate it

@ -58,18 +58,7 @@ endlegend
' ##################################
!function $getComponent($label, $techn, $descr, $sprite)
!$component = ""
!if ($sprite != "")
!$component = $component + $getSprite($sprite) + '\n'
!endif
!$component = $component + '== ' + $breakLabel($label)
!if ($techn != "")
!$component = $component + '\n//<size:' + $TECHN_FONT_SIZE + '>[' + $breakTechn($techn, '-1') + ']</size>//'
!endif
!if ($descr != "")
!$component = $component + '\n\n' + $descr
!endif
!return $component
!return $getElementBase($label, $techn, $descr, $sprite)
!endfunction
!unquoted procedure Component($alias, $label, $techn="", $descr="", $sprite="", $tags="", $link="")

@ -59,18 +59,7 @@ endlegend
' ##################################
!function $getContainer($label, $techn, $descr, $sprite)
!$container = ""
!if ($sprite != "")
!$container = $container + $getSprite($sprite) + '\n'
!endif
!$container = $container + '== ' + $breakLabel($label)
!if ($techn != "")
!$container = $container + '\n//<size:' + $TECHN_FONT_SIZE + '>[' + $breakTechn($techn, '-1') + ']</size>//'
!endif
!if ($descr != "")
!$container = $container + '\n\n' + $descr
!endif
!return $container
!return $getElementBase($label, $techn, $descr, $sprite)
!endfunction
!unquoted procedure Container($alias, $label, $techn="", $descr="", $sprite="", $tags="", $link="")

@ -333,36 +333,14 @@ UpdateElementStyle("external_person")
' ##################################
!function $getPerson($label, $descr, $sprite)
!if ($sprite == "") && ($defaultPersonSprite != "")
!$sprite = $defaultPersonSprite
!endif
!if ($descr == "") && ($sprite == "")
!return '== '+$breakLabel($label)
!endif
!if ($descr == "") && ($sprite != "")
!return $getSprite($sprite)+'\n== '+$breakLabel($label)
!endif
!if ($descr != "") && ($sprite == "")
!return '== '+$breakLabel($label)+'\n\n '+$descr
!endif
!if ($descr != "") && ($sprite != "")
!return $getSprite($sprite)+'\n== '+$breakLabel($label)+'\n\n '+$descr
!endif
!if ($sprite == "") && ($defaultPersonSprite != "")
!$sprite = $defaultPersonSprite
!endif
!return $getElementBase($label, "", $descr, $sprite)
!endfunction
!function $getSystem($label, $descr, $sprite)
!if ($descr == "") && ($sprite == "")
!return '== '+$breakLabel($label)
!endif
!if ($descr == "") && ($sprite != "")
!return $getSprite($sprite)+'\n== '+$breakLabel($label)
!endif
!if ($descr != "") && ($sprite == "")
!return '== '+$breakLabel($label)+'\n\n '+$descr
!endif
!if ($descr != "") && ($sprite != "")
!return $getSprite($sprite)+'\n== '+$breakLabel($label)+'\n\n '+$descr
!endif
!return $getElementBase($label, "", $descr, $sprite)
!endfunction
!unquoted procedure Person($alias, $label, $descr="", $sprite="", $tags="", $link="")

@ -0,0 +1,105 @@
@startuml
' convert it with additional command line argument -DRELATIVE_INCLUDE="./.." to use locally
!if %variable_exists("RELATIVE_INCLUDE")
!include %get_variable_value("RELATIVE_INCLUDE")/C4_Component.puml
!else
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml
!endif
LAYOUT_TOP_DOWN()
!$img="img:https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Test-Logo.svg/80px-Test-Logo.svg.png"
!$imgSmall="img:https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Test-Logo.svg/20px-Test-Logo.svg.png"
' SHOW_PERSON_OUTLINE()
SHOW_PERSON_PORTRAIT()
Boundary(b, "Persons") {
Person(p, "Label", "Optional Description", $sprite=$img)
Person(p1, "", "Optional Description", $sprite=$img)
Person(p2, "", $sprite=$img)
Person(p3, " ", $sprite=$img)
' should not be used (alias is not automatically reused, only empty block is displayed)
Person(p4, "")
Lay_R(p,p1)
Lay_R(p1,p2)
Lay_R(p2,p3)
Lay_R(p3,p4)
}
Boundary(b1, "Systems") {
System(s, "Label", "Optional Description", $sprite=$img)
System(s1, "", "Optional Description", $sprite=$img)
System(s2, "", $sprite=$img)
System(s3, " ", $sprite=$img)
' should not be used (alias is not automatically reused, only empty block is displayed)
System(s4, "")
Lay_R(s,s1)
Lay_R(s1,s2)
Lay_R(s2,s3)
Lay_R(s3,s4)
}
Boundary(b2, "Components") {
Component(comp, "Label", "Techn", "Optional Description", $sprite=$img)
Component(comp1, "", "Techn", "Optional Description", $sprite=$img)
Component(comp2, "", $sprite=$img)
Component(comp3, " ", $sprite=$img)
' should not be used (alias is not automatically reused, only empty block is displayed)
Component(comp4, "")
Lay_R(comp,comp1)
Lay_R(comp1,comp2)
Lay_R(comp2,comp3)
Lay_R(comp3,comp4)
}
Boundary(b3, "Containers") {
Container(con, "Label", "Techn", "Optional Description", $sprite=$img)
Container(con1, "", "Techn", "Optional Description", $sprite=$img)
Container(con2, "", $sprite=$img)
Container(con3, " ", $sprite=$img)
' should not be used (alias is not automatically reused, only empty block is displayed)
Container(con4, "")
Lay_R(con,con1)
Lay_R(con1,con2)
Lay_R(con2,con3)
Lay_R(con3,con4)
}
Boundary(b4, "Relationships") {
System(A1,"A1")
System(B1,"B1")
System(C1,"C1")
System(D1,"D1")
System(E1,"E1")
System(A2,"A2")
System(B2,"B2")
System(C2,"C2")
System(D2,"D2")
System(E2,"E2")
Lay_D(A1,A2)
Rel_R(E1, A1, "label", $sprite=$imgSmall, $link="https://github.com/plantuml-stdlib/C4-PlantUML")
Rel_R(A1, B1, "", $sprite=$imgSmall, $link="https://github.com/plantuml-stdlib/C4-PlantUML")
Rel_R(B1, C1, " ", $sprite=$imgSmall, $link="https://github.com/plantuml-stdlib/C4-PlantUML")
Rel_R(C1, D1, "", $link="https://github.com/plantuml-stdlib/C4-PlantUML")
Rel_R(E2, A2, "label", $sprite=$imgSmall)
Rel_R(A2, B2, "", $sprite=$imgSmall)
Rel_R(B2, C2, " ", $sprite=$imgSmall)
Rel_R(C2, D2, "")
}
Lay_D(b,b1)
Lay_D(b1,b2)
Lay_D(b2,b3)
Lay_D(b3,b4)
SHOW_LEGEND()
@enduml
Loading…
Cancel
Save