From 4835b90348a966981521965925b188eed57c8cda Mon Sep 17 00:00:00 2001 From: kirchsth Date: Wed, 1 May 2024 17:59:40 +0200 Subject: [PATCH] #350 Boundaries support descriptions - Boundary(..., ?descr) - Enterprise_Boundary(..., ?descr) - System_Boundary(..., ?descr) - Container_Boundary(..., ?descr) --- C4.puml | 13 ++++++++++--- C4_Container.puml | 4 ++-- C4_Context.puml | 8 ++++---- README.md | 8 ++++---- percy/TestBoundaryTagSupport.puml | 16 +++++++++------- 5 files changed, 29 insertions(+), 20 deletions(-) diff --git a/C4.puml b/C4.puml index a8894aa9..db3be8b7 100644 --- a/C4.puml +++ b/C4.puml @@ -36,6 +36,7 @@ rectangle C4VersionDetailsArea <> [ !$BOUNDARY_BORDER_STYLE ?= "dashed" ' boundary symbols written in the same line, typically only 50% of the size in element !$BOUNDARY_IMAGE_SIZE_FACTOR ?= 0.5 +!$BOUNDARY_DESCR_MAX_CHAR_WIDTH ?= 35 !$LEGEND_TITLE_COLOR ?= "#000000" !$LEGEND_FONT_COLOR ?= "#FFFFFF" @@ -926,9 +927,11 @@ $line $defineSkinparams($tagStereo, $bgColor, $fontColor, $borderColor, $shadowing, $shape, $borderStyle, $borderThickness) !if ($sprite!="") %set_variable_value("$" + $tagStereo + "ElementTagSprite", $sprite) +!log "DefinedlegendSprite:" + $legendSprite !if ($legendSprite == "") !$legendSprite = $smallVersionSprite($sprite) !endif +!log "CalculatedlegendSprite:" + $legendSprite !endif !if ($techn != "") %set_variable_value("$" + $tagStereo + "ElementTagTechn", $techn) @@ -1412,24 +1415,28 @@ $getLegendArea($alias, $hideStereotype, $details) !return $boundaryTags !endfunction -!function $getBoundary($sprite, $label, $type) +!function $getBoundary($label, $type, $descr, $sprite) !$line = '== ' !if ($sprite != "") + ' add sprite in label line that it is more compact !$line = $line + $getSprite($smallVersionSprite($sprite, $BOUNDARY_IMAGE_SIZE_FACTOR)) + ' ' !endif !$line = $line + $breakLabel($label) !if ($type != "") !$line = $line + '\n[' + $type + ']' !endif + !if ($descr != "") + !$line = $line + '\n\n' + $breakDescr($descr, $BOUNDARY_DESCR_MAX_CHAR_WIDTH) + !endif !return $line !endfunction -!unquoted procedure Boundary($alias, $label, $type="", $tags="", $link="") +!unquoted procedure Boundary($alias, $label, $type="", $tags="", $link="", $descr = "") !$boundaryTags = $addBoundaryPostfix($tags) ' boundary $type reuses $techn definition of $boundaryTags !$type=$toElementArg($type, $boundaryTags, "ElementTagTechn", "boundary") !$sprite=$toElementArg("", $boundaryTags, "ElementTagSprite", "boundary") -rectangle "$getBoundary($sprite, $label, $type)" $toStereos("boundary", $boundaryTags) as $alias $getLink($link) +rectangle "$getBoundary($label, $type, $descr, $sprite)" $toStereos("boundary", $boundaryTags) as $alias $getLink($link) !endprocedure ' Boundary Styling diff --git a/C4_Container.puml b/C4_Container.puml index d5309efb..4b1c1a4b 100644 --- a/C4_Container.puml +++ b/C4_Container.puml @@ -92,12 +92,12 @@ endlegend ' Boundaries ' ################################## -!unquoted procedure Container_Boundary($alias, $label, $tags="", $link="") +!unquoted procedure Container_Boundary($alias, $label, $tags="", $link="", $descr = "") !if ($tags != "") !$allTags = $tags + '+container' !else !$allTags = 'container' !endif ' $type defined via $tag style - Boundary($alias, $label, "", $allTags, $link) + Boundary($alias, $label, "", $allTags, $link, $descr) !endprocedure diff --git a/C4_Context.puml b/C4_Context.puml index ac07793c..d8dfa4c1 100644 --- a/C4_Context.puml +++ b/C4_Context.puml @@ -413,22 +413,22 @@ rectangle "$getPerson($label, $type, $descr, $sprite)$getProps()" $toStereos("ex ' Boundaries ' ################################## -!unquoted procedure Enterprise_Boundary($alias, $label, $tags="", $link="") +!unquoted procedure Enterprise_Boundary($alias, $label, $tags="", $link="", $descr = "") !if ($tags != "") !$allTags = $tags + '+enterprise' !else !$allTags = 'enterprise' !endif ' $type defined via $tag style - Boundary($alias, $label, "", $allTags, $link) + Boundary($alias, $label, "", $allTags, $link, $descr) !endprocedure -!unquoted procedure System_Boundary($alias, $label, $tags="", $link="") +!unquoted procedure System_Boundary($alias, $label, $tags="", $link="", $descr = "") !if ($tags != "") !$allTags = $tags + '+system' !else !$allTags = 'system' !endif ' $type defined via $tag style - Boundary($alias, $label, "", $allTags, $link) + Boundary($alias, $label, "", $allTags, $link, $descr) !endprocedure diff --git a/README.md b/README.md index 1d271cb5..5aa8a62a 100644 --- a/README.md +++ b/README.md @@ -241,9 +241,9 @@ SHOW_LEGEND() - `System_Ext(alias, label, ?descr, ?sprite, ?tags, ?link, ?type, ?baseShape)` - `SystemDb_Ext(alias, label, ?descr, ?sprite, ?tags, ?link, ?type)` - `SystemQueue_Ext(alias, label, ?descr, ?sprite, ?tags, ?link, ?type)` - - `Boundary(alias, label, ?type, ?tags, ?link)` - - `Enterprise_Boundary(alias, label, ?tags, ?link)` - - `System_Boundary(alias, label, ?tags, ?link)` + - `Boundary(alias, label, ?type, ?tags, ?link, ?descr)` + - `Enterprise_Boundary(alias, label, ?tags, ?link, ?descr)` + - `System_Boundary(alias, label, ?tags, ?link, ?descr)` - Sprites: - `person` - `person2` @@ -262,7 +262,7 @@ SHOW_LEGEND() - `Container_Ext(alias, label, ?techn, ?descr, ?sprite, ?tags, ?link, ?baseShape)` - `ContainerDb_Ext(alias, label, ?techn, ?descr, ?sprite, ?tags, ?link)` - `ContainerQueue_Ext(alias, label, ?techn, ?descr, ?sprite, ?tags, ?link)` - - `Container_Boundary(alias, label, ?tags, ?link)` + - `Container_Boundary(alias, label, ?tags, ?link, ?descr)` ### Component diagram diff --git a/percy/TestBoundaryTagSupport.puml b/percy/TestBoundaryTagSupport.puml index 6cec834a..5e295c6f 100644 --- a/percy/TestBoundaryTagSupport.puml +++ b/percy/TestBoundaryTagSupport.puml @@ -6,19 +6,21 @@ !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml !endif -UpdateBoundaryStyle($bgColor="gold", $fontColor="brown", $borderColor="brown", $sprite="person,scale=1", $legendSprite="person2,scale=0.5") +UpdateBoundaryStyle($bgColor="gold", $fontColor="brown", $borderColor="brown", $sprite="person", $legendSprite="person2,scale=0.3") ' re-set $bgColor avoids '(no back color)' in legend -UpdateSystemBoundaryStyle($bgColor="gold", $fontColor="white", $borderColor="white", $sprite=robot, $legendSprite="robot2") +UpdateSystemBoundaryStyle($bgColor="gold", $fontColor="white", $borderColor="white", $sprite=robot, $legendSprite="robot2,scale=0.3") + +AddElementTag("special", $sprite="person", $legendSprite="person,scale=0.3") AddBoundaryTag("specialSystem", $bgColor="green", $fontColor="white", $borderColor="blue", $shadowing="true", $shape = RoundedBoxShape(), $type="A SPECIAL SYSTEM BOUNDARY", $sprite="robot,scale=0.5,color=black", $legendSprite="robot2,scale=0.3,color=black") -AddBoundaryTag("existingContainersBoundary", $bgColor="red", $fontColor="white", $borderColor="white", $type="Existing CONTAINER BOUNDARY", $legendText="container boundary with existing components") +AddBoundaryTag("existingContainersBoundary", $bgColor="red", $fontColor="white", $borderColor="white", $type="Existing CONTAINER BOUNDARY", $legendText="container boundary with existing components", $sprite="robot") System_Boundary(sb, "A System Boundary") { } -System_Boundary(sb1, "Special System 1 Boundary", $tags="specialSystem") { - Container_Boundary(cb1, "Container Boundary\nwith tag", $tags="existingContainersBoundary") { - Component(e1, "existing 1", "xyz") +System_Boundary(sb1, "Special System 1 Boundary", $tags="specialSystem", $descr="A long description ... A long description ... A long description ... A long description") { + Container_Boundary(cb1, "Container Boundary\nwith tag", $tags="existingContainersBoundary", $descr="A long description ... A long description ... A long description ... A long description") { + Component(e1, "existing 1", "xyz", $tags="special") Component(e2, "existing 2", "xyz") } Container_Boundary(cb2, "A Container Boundary") { @@ -38,7 +40,7 @@ Boundary(anotherBoundary, "Another Boundary", $type="BOUNDARY TYPE", $tags="v1") Component(anotherComponent, "Another Component", $techn="COMPONENT TYPE", $tags="v1", $descr="Component and boundary use different tag name spaces that both v1 tags can use different styles") } -Boundary(aBoundary, "A Boundary") { +Boundary(aBoundary, "A Boundary", $descr="A long description\nwith concrete line breaks\nNew line\nNewLine") { } Lay_R(sb, sb1)