diff --git a/.vscode/C4.code-snippets b/.vscode/C4.code-snippets
index 275dac1..5780c14 100644
--- a/.vscode/C4.code-snippets
+++ b/.vscode/C4.code-snippets
@@ -17,6 +17,15 @@
],
"description": "Add Person with Description to C4 diagram"
},
+ "C4_Person_Descr_link": {
+ "scope": "diagram",
+ "prefix": "Person with Description",
+ "body": [
+ "Person(${1:alias}, \"${2:label}\", \"${3:description}\", \"${4:url}\")",
+ "$0"
+ ],
+ "description": "Add Person with Description and with a linked url to C4 diagram"
+ },
"C4_Person_Ext": {
"scope": "diagram",
"prefix": [
@@ -41,6 +50,18 @@
],
"description": "Add External Person with Description to C4 diagram"
},
+ "C4_Person_Ext_Descr_link": {
+ "scope": "diagram",
+ "prefix": [
+ "External Person with Description",
+ "Person (External) with Description"
+ ],
+ "body": [
+ "Person_Ext(${1:alias}, \"${2:label}\", \"${3:description}\", \"${4:url}\")",
+ "$0"
+ ],
+ "description": "Add External Person with Description with a linked url to C4 diagram"
+ },
"C4_Container": {
"scope": "diagram",
"prefix": "Container",
@@ -59,6 +80,44 @@
],
"description": "Add Container with Description to C4 diagram"
},
+ "C4_Container_Descr_link": {
+ "scope": "diagram",
+ "prefix": "Container with Description",
+ "body": [
+ "Container(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\", \"${5:url}\")",
+ "$0"
+ ],
+ "description": "Add Container with Description with a linked url to C4 diagram"
+ },
+
+ "C4_ContainerDb": {
+ "scope": "diagram",
+ "prefix": "ContainerDb",
+ "body": [
+ "ContainerDb(${1:alias}, \"${2:label}\", \"${3:technology}\")",
+ "$0"
+ ],
+ "description": "Add ContainerDb to C4 diagram"
+ },
+ "C4_ContainerDb_Descr": {
+ "scope": "diagram",
+ "prefix": "ContainerDb with Description",
+ "body": [
+ "ContainerDb(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\")",
+ "$0"
+ ],
+ "description": "Add ContainerDb with Description to C4 diagram"
+ },
+ "C4_ContainerDb_Descr_link": {
+ "scope": "diagram",
+ "prefix": "ContainerDb with Description",
+ "body": [
+ "ContainerDb(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\", \"${5:url}\")",
+ "$0"
+ ],
+ "description": "Add ContainerDb with Description with a linked url to C4 diagram"
+ },
+
"C4_Container_Boundary": {
"scope": "diagram",
"prefix": [
@@ -72,6 +131,19 @@
],
"description": "Add a Container Boundary to C4 diagram"
},
+ "C4_Container_Boundary_link": {
+ "scope": "diagram",
+ "prefix": [
+ "Container Boundary",
+ "Boundary for Container"
+ ],
+ "body": [
+ "Container_Boundary(${1:alias}, \"${2:label}\", \"${3:url}\"){",
+ "\t$0",
+ "}"
+ ],
+ "description": "Add a Container Boundary with a linked url to C4 diagram"
+ },
"C4_Component": {
"scope": "diagram",
"prefix": "Component",
@@ -90,6 +162,44 @@
],
"description": "Add Component with Description to C4 diagram"
},
+ "C4_Component_Descr_link": {
+ "scope": "diagram",
+ "prefix": "Component with Description",
+ "body": [
+ "Component(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\", \"${5:url}\")",
+ "$0"
+ ],
+ "description": "Add Component with Description with a linked url to C4 diagram"
+ },
+
+ "C4_ComponentDb": {
+ "scope": "diagram",
+ "prefix": "ComponentDb",
+ "body": [
+ "ComponentDb(${1:alias}, \"${2:label}\", \"${3:technology}\")",
+ "$0"
+ ],
+ "description": "Add ComponentDb to C4 diagram"
+ },
+ "C4_ComponentDb_Descr": {
+ "scope": "diagram",
+ "prefix": "ComponentDb with Description",
+ "body": [
+ "ComponentDb(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\")",
+ "$0"
+ ],
+ "description": "Add ComponentDb with Description to C4 diagram"
+ },
+ "C4_ComponentDb_Descr_link": {
+ "scope": "diagram",
+ "prefix": "ComponentDb with Description",
+ "body": [
+ "ComponentDb(${1:alias}, \"${2:label}\", \"${3:technology}\", \"${4:description}\", \"${5:url}\")",
+ "$0"
+ ],
+ "description": "Add ComponentDb with Description with a linked url to C4 diagram"
+ },
+
"C4_System": {
"scope": "diagram",
"prefix": "System",
@@ -108,6 +218,15 @@
],
"description": "Add System with Description to C4 diagram"
},
+ "C4_System_Descr_link": {
+ "scope": "diagram",
+ "prefix": "System with Description",
+ "body": [
+ "System(${1:alias}, \"${2:label}\", \"${3:description}\",\"${4:url}\")",
+ "$0"
+ ],
+ "description": "Add System with Description with a linked url to C4 diagram"
+ },
"C4_System_Ext": {
"scope": "diagram",
"prefix": [
@@ -132,6 +251,18 @@
],
"description": "Add External System with Description to C4 diagram"
},
+ "C4_System_Ext_Descr_link": {
+ "scope": "diagram",
+ "prefix": [
+ "External System with Description",
+ "System (External) with Description"
+ ],
+ "body": [
+ "System_Ext(${1:alias}, \"${2:label}\", \"${3:description}\",\"${4:url}\")",
+ "$0"
+ ],
+ "description": "Add External System with Description with a linked url to C4 diagram"
+ },
"C4_System_Boundary": {
"scope": "diagram",
"prefix": [
@@ -145,6 +276,19 @@
],
"description": "Add a System Boundary to C4 diagram"
},
+ "C4_System_Boundary_link": {
+ "scope": "diagram",
+ "prefix": [
+ "System Boundary",
+ "Boundary for System"
+ ],
+ "body": [
+ "System_Boundary(${1:alias}, \"${2:label}\",\"${3:url}\"){",
+ "\t$0",
+ "}"
+ ],
+ "description": "Add a System Boundary with a linked url to C4 diagram"
+ },
"C4_Enterprise_Boundary": {
"scope": "diagram",
"prefix": [
@@ -158,6 +302,19 @@
],
"description": "Add an Enterprise Boundary to C4 diagram"
},
+ "C4_Enterprise_Boundary_link": {
+ "scope": "diagram",
+ "prefix": [
+ "Enterprise Boundary",
+ "Boundary for Enterprise"
+ ],
+ "body":[
+ "Enterprise_Boundary(${1:alias}, \"${2:label}\",\"${3:url}\"){",
+ "\t$0",
+ "}"
+ ],
+ "description": "Add an Enterprise Boundary with a linked url to C4 diagram"
+ },
"C4_Relationship": {
"scope": "diagram",
"prefix": "Relationship",
diff --git a/C4.puml b/C4.puml
index d28711a..5b646d7 100644
--- a/C4.puml
+++ b/C4.puml
@@ -58,6 +58,7 @@ center footer Warning: Created for discussion, needs to b
!define Boundary(e_alias, e_label) rectangle "==e_label" <> as e_alias
!define Boundary(e_alias, e_label, e_type) rectangle "==e_label\n[e_type]" <> as e_alias
+!define Boundary(e_alias, e_label, e_type, e_link) rectangle "==e_label\n[e_type]" <> as e_alias [[e_link]]
' Relationship
' ##################################
diff --git a/C4_Component.puml b/C4_Component.puml
index 40a8a24..2e32e09 100644
--- a/C4_Component.puml
+++ b/C4_Component.puml
@@ -50,6 +50,8 @@ endlegend
!define Component(e_alias, e_label, e_techn) rectangle "==e_label\n//[e_techn]//" <> as e_alias
!define Component(e_alias, e_label, e_techn, e_descr) rectangle "==e_label\n//[e_techn]//\n\n e_descr" <> as e_alias
+!define Component(e_alias, e_label, e_techn, e_descr, e_link) rectangle "==e_label \n//[e_techn]//\n\n e_descr" <> as e_alias [[e_link]]
!define ComponentDb(e_alias, e_label, e_techn) database "==e_label\n//[e_techn]//" <> as e_alias
!define ComponentDb(e_alias, e_label, e_techn, e_descr) database "==e_label\n//[e_techn]//\n\n e_descr" <> as e_alias
+!define ComponentDb(e_alias, e_label, e_techn, e_descr, e_link) database "==e_label\n//[e_techn]//\n\n e_descr" <> as e_alias [[e_link]]
\ No newline at end of file
diff --git a/C4_Container.puml b/C4_Container.puml
index 2bc697c..a05681a 100644
--- a/C4_Container.puml
+++ b/C4_Container.puml
@@ -49,11 +49,14 @@ endlegend
!define Container(e_alias, e_label, e_techn) rectangle "==e_label\n//[e_techn]//" <> as e_alias
!define Container(e_alias, e_label, e_techn, e_descr) rectangle "==e_label\n//[e_techn]//\n\n e_descr" <> as e_alias
+!define Container(e_alias, e_label, e_techn, e_descr, e_link) rectangle "==e_label\n//[e_techn]//\n\n e_descr" <> as e_alias [[e_link]]
!define ContainerDb(e_alias, e_label, e_techn) database "==e_label\n//[e_techn]//" <> as e_alias
!define ContainerDb(e_alias, e_label, e_techn, e_descr) database "==e_label\n//[e_techn]//\n\n e_descr" <> as e_alias
+!define ContainerDb(e_alias, e_label, e_techn, e_descr, e_link) database "==e_label\n//[e_techn]//\n\n e_descr" <> as e_alias [[e_link]]
' Boundaries
' ##################################
-!define Container_Boundary(e_alias, e_label) Boundary(e_alias, e_label, "Container")
\ No newline at end of file
+!define Container_Boundary(e_alias, e_label) Boundary(e_alias, e_label, "Container")
+!define Container_Boundary(e_alias, e_label,e_link) Boundary(e_alias, e_label, "Container", e_link)
\ No newline at end of file
diff --git a/C4_Context.puml b/C4_Context.puml
index a28a9cb..0414224 100644
--- a/C4_Context.puml
+++ b/C4_Context.puml
@@ -79,24 +79,33 @@ endlegend
!define Person(e_alias, e_label) rectangle "==e_label" <> as e_alias
!define Person(e_alias, e_label, e_descr) rectangle "==e_label\n\n e_descr" <> as e_alias
+!define Person(e_alias, e_label, e_descr, e_link) rectangle "==e_label\n\n e_descr" <> as e_alias [[e_link]]
!define Person_Ext(e_alias, e_label) rectangle "==e_label" <> as e_alias
!define Person_Ext(e_alias, e_label, e_descr) rectangle "==e_label\n\n e_descr" <> as e_alias
+!define Person_Ext(e_alias, e_label, e_descr, e_link) rectangle "==e_label\n\n e_descr" <> as e_alias [[e_link]]
!define System(e_alias, e_label) rectangle "==e_label" <> as e_alias
!define System(e_alias, e_label, e_descr) rectangle "==e_label\n\n e_descr" <> as e_alias
+!define System(e_alias, e_label, e_descr, e_link) rectangle "==e_label\n\n e_descr" <> as e_alias [[e_link]]
!define System_Ext(e_alias, e_label) rectangle "==e_label" <> as e_alias
!define System_Ext(e_alias, e_label, e_descr) rectangle "==e_label\n\n e_descr" <> as e_alias
+!define System_Ext(e_alias, e_label, e_descr, e_link) rectangle "==e_label\n\n e_descr" <> as e_alias [[e_link]]
!define SystemDb(e_alias, e_label) database "==e_label" <> as e_alias
!define SystemDb(e_alias, e_label, e_descr) database "==e_label\n\n e_descr" <> as e_alias
+!define SystemDb(e_alias, e_label, e_descr, e_link) database "==e_label\n\n e_descr" <> as e_alias [[e_link]]
!define SystemDb_Ext(e_alias, e_label) database "==e_label" <> as e_alias
!define SystemDb_Ext(e_alias, e_label, e_descr) database "==e_label\n\n e_descr" <> as e_alias
+!define SystemDb_Ext(e_alias, e_label, e_descr, e_link) database "==e_label\n\n e_descr" <> as e_alias [[e_link]]
' Boundaries
' ##################################
!define Enterprise_Boundary(e_alias, e_label) Boundary(e_alias, e_label, "Enterprise")
-!define System_Boundary(e_alias, e_label) Boundary(e_alias, e_label, "System")
\ No newline at end of file
+!define Enterprise_Boundary(e_alias, e_label, e_link) Boundary(e_alias, e_label, "Enterprise", e_link)
+
+!define System_Boundary(e_alias, e_label) Boundary(e_alias, e_label, "System")
+!define System_Boundary(e_alias, e_label, e_link) Boundary(e_alias, e_label, "System", e_link)
\ No newline at end of file
diff --git a/samples/C4_Component Diagram Sample - bigbankplc.puml b/samples/C4_Component Diagram Sample - bigbankplc.puml
index 491a725..4770af7 100644
--- a/samples/C4_Component Diagram Sample - bigbankplc.puml
+++ b/samples/C4_Component Diagram Sample - bigbankplc.puml
@@ -3,7 +3,7 @@
' uncomment the following line and comment the first to use locally
' !include C4_Component.puml
-LAYOUT_WITH_LEGEND
+LAYOUT_WITH_LEGEND()
title Component diagram for Internet Banking System - API Application
diff --git a/samples/C4_Container Diagram Sample - bigbankplc.puml b/samples/C4_Container Diagram Sample - bigbankplc.puml
index 56dccd9..0acd507 100644
--- a/samples/C4_Container Diagram Sample - bigbankplc.puml
+++ b/samples/C4_Container Diagram Sample - bigbankplc.puml
@@ -4,8 +4,8 @@
' !include C4_Container.puml
LAYOUT_TOP_DOWN
-'LAYOUT_AS_SKETCH
-LAYOUT_WITH_LEGEND
+'LAYOUT_AS_SKETCH()
+LAYOUT_WITH_LEGEND()
title Container diagram for Internet Banking System
diff --git a/samples/C4_Container Diagram Sample - message bus.puml b/samples/C4_Container Diagram Sample - message bus.puml
index d8485ff..eef0dfd 100644
--- a/samples/C4_Container Diagram Sample - message bus.puml
+++ b/samples/C4_Container Diagram Sample - message bus.puml
@@ -7,8 +7,8 @@ skinparam wrapWidth 200
skinparam maxMessageSize 200
LAYOUT_TOP_DOWN
-'LAYOUT_AS_SKETCH
-LAYOUT_WITH_LEGEND
+'LAYOUT_AS_SKETCH()
+LAYOUT_WITH_LEGEND()
Person(customer, Customer, "A customer")
diff --git a/samples/C4_Container Diagram Sample - techtribesjs.puml b/samples/C4_Container Diagram Sample - techtribesjs.puml
index dbd0569..aca31e1 100644
--- a/samples/C4_Container Diagram Sample - techtribesjs.puml
+++ b/samples/C4_Container Diagram Sample - techtribesjs.puml
@@ -4,8 +4,8 @@
' !include C4_Container.puml
LAYOUT_TOP_DOWN
-'LAYOUT_AS_SKETCH
-LAYOUT_WITH_LEGEND
+'LAYOUT_AS_SKETCH()
+LAYOUT_WITH_LEGEND()
Person_Ext(anonymous_user, "Anonymous User")
diff --git a/samples/C4_Context Diagram Sample - bigbankplc-landscape.puml b/samples/C4_Context Diagram Sample - bigbankplc-landscape.puml
index a4b3f4b..ff21fa0 100644
--- a/samples/C4_Context Diagram Sample - bigbankplc-landscape.puml
+++ b/samples/C4_Context Diagram Sample - bigbankplc-landscape.puml
@@ -3,9 +3,9 @@
' uncomment the following line and comment the first to use locally
' !include C4_Context.puml
-'LAYOUT_TOP_DOWN
-'LAYOUT_AS_SKETCH
-LAYOUT_WITH_LEGEND
+LAYOUT_TOP_DOWN
+'LAYOUT_AS_SKETCH()
+LAYOUT_WITH_LEGEND()
title System Landscape diagram for Big Bank plc
diff --git a/samples/C4_Context Diagram Sample - bigbankplc.puml b/samples/C4_Context Diagram Sample - bigbankplc.puml
index 70778cd..06469b1 100644
--- a/samples/C4_Context Diagram Sample - bigbankplc.puml
+++ b/samples/C4_Context Diagram Sample - bigbankplc.puml
@@ -3,7 +3,7 @@
' uncomment the following line and comment the first to use locally
' !include C4_Context.puml
-LAYOUT_WITH_LEGEND
+LAYOUT_WITH_LEGEND()
title System Context diagram for Internet Banking System
diff --git a/samples/C4_Context Diagram Sample - enterprise.puml b/samples/C4_Context Diagram Sample - enterprise.puml
index c58f636..0b8e329 100644
--- a/samples/C4_Context Diagram Sample - enterprise.puml
+++ b/samples/C4_Context Diagram Sample - enterprise.puml
@@ -4,8 +4,8 @@
' !include C4_Context.puml
LAYOUT_TOP_DOWN
-'LAYOUT_AS_SKETCH
-LAYOUT_WITH_LEGEND
+'LAYOUT_AS_SKETCH()
+LAYOUT_WITH_LEGEND()
Person(customer, "Customer", "A customer of Widgets Limited.")