From 1c380b01b553e5969c6eac0381b6448a86d0cd48 Mon Sep 17 00:00:00 2001 From: Gabriel Oliveira Date: Wed, 20 Nov 2024 08:12:27 -0300 Subject: [PATCH] feat(node): Add phoenix framework (#975) * add image * add image to framework.py * add static file and to doc * update images for one that is better --- diagrams/programming/framework.py | 6 +++++- docs/nodes/programming.md | 3 +++ resources/programming/framework/phoenix.png | Bin 0 -> 17581 bytes .../resources/programming/framework/phoenix.png | Bin 0 -> 17581 bytes 4 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 resources/programming/framework/phoenix.png create mode 100644 website/static/img/resources/programming/framework/phoenix.png diff --git a/diagrams/programming/framework.py b/diagrams/programming/framework.py index 10b184b9..1b744784 100644 --- a/diagrams/programming/framework.py +++ b/diagrams/programming/framework.py @@ -62,11 +62,15 @@ class Laravel(_Framework): class Micronaut(_Framework): _icon = "micronaut.png" - + class Nextjs(_Framework): _icon = "nextjs.png" + +class Phoenix(_Framework): + _icon = "phoenix.png" + class Quarkus(_Framework): _icon = "quarkus.png" diff --git a/docs/nodes/programming.md b/docs/nodes/programming.md index 44843c71..7e175898 100644 --- a/docs/nodes/programming.md +++ b/docs/nodes/programming.md @@ -128,6 +128,9 @@ Node classes list of the programming provider. Nextjs **diagrams.programming.framework.Nextjs**, **NextJs** (alias) +Phoenix +**diagrams.programming.framework.Phoenix** + Quarkus **diagrams.programming.framework.Quarkus** diff --git a/resources/programming/framework/phoenix.png b/resources/programming/framework/phoenix.png new file mode 100644 index 0000000000000000000000000000000000000000..ca32175fd1f717e399f9863f85841ee8e756e7b1 GIT binary patch literal 17581 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 io$@3UMMG|WN@iLmZVfdjV_pI^FnGH9xvXnBm literal 0 HcmV?d00001 diff --git a/website/static/img/resources/programming/framework/phoenix.png b/website/static/img/resources/programming/framework/phoenix.png new file mode 100644 index 0000000000000000000000000000000000000000..ca32175fd1f717e399f9863f85841ee8e756e7b1 GIT binary patch literal 17581 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 io$@3UMMG|WN@iLmZVfdjV_pI^FnGH9xvXnBm literal 0 HcmV?d00001