!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml ' uncomment the following line and comment the first to use locally ' !include C4_Container.puml ' Colors ' ################################## !global $NODE_FONT_COLOR = "#000000" !global $NODE_BG_COLOR = "#FFFFFF" !global $NODE_BORDER_COLOR = "#A2A2A2" ' Styling ' ################################## ' orig was without background 'UpdateSkinparamsAndLegendEntry("node", $fontColor=$NODE_FONT_COLOR, $borderColor=$NODE_BORDER_COLOR) UpdateSkinparamsAndLegendEntry("node", $bgColor=$NODE_BG_COLOR, $fontColor=$NODE_FONT_COLOR, $borderColor=$NODE_BORDER_COLOR) skinparam rectangle<> { StereotypeFontSize 0 } ' Layout ' ################################## ' comment if node should not be added to legend. No dynamic legend extension required SetDefaultLegendEntries("person\nsystem\ncontainer\nexternal_person\nexternal_system\nexternal_container\nnode") ' Special ' ################################## ' PlantUML supports no automatic line breaks of "PlantUML containers" (C4 Deployment_Node is a "PlantUML container") ' therefore Deployment_Node() implements an automatic line break based on spaces (like in all other objects). ' If a $type contains \n then the these are used (and no automatic space based line breaks are done) ' $NODE_TYPE_MAX_CHAR_WIDTH defines the automatic line break position !global $NODE_TYPE_MAX_CHAR_WIDTH = 35 ' Elements ' ################################## !unquoted function $breakLine($type) !$multiLine = "" !if (%strpos($type, "\n") >= 0) !while (%strpos($type, "\n") >= 0) !$brPos = %strpos($type, "\n") !$multiLine = $multiLine + %substr($type, 0, $brPos) + '\n' !$type = %substr($type, $brPos+2) !endwhile !else !while (%strlen($type)>$NODE_TYPE_MAX_CHAR_WIDTH) !$brPos = $NODE_TYPE_MAX_CHAR_WIDTH !while ($brPos>0 && %substr($type, $brPos, 1)!= ' ') !$brPos = $brPos - 1 !endwhile !if ($brPos < 1) !$brPos = %strpos($type, " ") !else !endif !if ($brPos > 0) !$multiLine = $multiLine + %substr($type, 0, $brPos) + '\n' !$type = %substr($type, $brPos) !else !$multiLine = $multiLine+ $type !$type = "" !endif !endwhile !endif !if (%strlen($type)>0) !$multiLine = $multiLine + $type !endif !return $multiLine !endfunction !function $getNode($label, $type) !if ($type == "") !return '==' + $label !endif !if (type != "") !return '==' + $label + '\n[' + $breakLine($type) + ']' !endif !endfunction !unquoted procedure Deployment_Node($alias, $label, $type="", $tags="") rectangle "$getNode($label, $type)" $toStereos("node",$tags) as $alias !endprocedure