diff --git a/README.md b/README.md
index 1130d95..9706cc1 100644
--- a/README.md
+++ b/README.md
@@ -34,8 +34,8 @@ View the [Change Logs](https://github.com/csgoh/roadmapper/wiki/Change-Logs) to
### Library Dependencies
* python-dateutil >= 2.8.2
-* Pillow >= 10.0.0
-* drawsvg >= 2.2.0
+* Pillow >= 10.3.0
+* drawsvg >= 2.3.0
Any feedback or suggestions are welcome. Please feel free to create an issue or pull request.
@@ -72,20 +72,20 @@ from roadmapper.timelinemode import TimelineMode
roadmap = Roadmap(1200, 400, colour_theme="BLUEMOUNTAIN")
roadmap.set_title("My Demo Roadmap")
roadmap.set_subtitle("Matariki Technologies Ltd")
-roadmap.set_timeline(TimelineMode.MONTHLY, start="2023-01-01", number_of_items=12)
+roadmap.set_timeline(TimelineMode.MONTHLY, start="2024-01-01", number_of_items=12)
roadmap.add_logo("matariki-tech-logo.png", "top-right", 50, 50)
group = roadmap.add_group("Core Product Work Stream")
-task = group.add_task("Base Functionality", "2023-01-01", "2023-10-31")
-task.add_milestone("v.1.0", "2023-02-15")
-task.add_milestone("v.1.1", "2023-08-01")
+task = group.add_task("Base Functionality", "2024-01-01", "2024-10-31")
+task.add_milestone("v.1.0", "2024-02-15")
+task.add_milestone("v.1.1", "2024-08-01")
-parellel_task = task.add_parallel_task("Enhancements", "2023-11-15", "2024-03-31")
-parellel_task.add_milestone("v.2.0", "2024-03-30")
+parellel_task = task.add_parallel_task("Enhancements", "2024-11-15", "2025-03-31")
+parellel_task.add_milestone("v.2.0", "2025-03-30")
-task = group.add_task("Showcase #1", "2023-03-01", "2023-05-07")
-task.add_parallel_task("Showcase #2", "2023-06-01", "2023-08-07")
+task = group.add_task("Showcase #1", "2024-03-01", "2024-05-07")
+task.add_parallel_task("Showcase #2", "2024-06-01", "2024-08-07")
roadmap.set_footer("Generated by Roadmapper")
roadmap.draw()
diff --git a/images/black_roadmap.png b/images/black_roadmap.png
index c8d9db1..b76a919 100644
Binary files a/images/black_roadmap.png and b/images/black_roadmap.png differ
diff --git a/images/black_roadmap.svg b/images/black_roadmap.svg
index 74ce5cc..d41b3cb 100644
--- a/images/black_roadmap.svg
+++ b/images/black_roadmap.svg
@@ -5,11 +5,11 @@
-Black Background Test Roadmap
+Black Background Test Roadmap
-Year 2023
+Year 2023
-Jan
+Jan
Feb
@@ -19,19 +19,19 @@
May
-Jun
+Jun
-Jul
+Jul
-Aug
+Aug
Sep
Oct
-Nov
+Nov
-Dec
+Dec
@@ -44,13 +44,13 @@
-Workstream 1
+Workstream 1
-Task 1-A
-Task 2-B
-Milestone 2
+Milestone 2
+Task 2-B
-Milestone 1
+Milestone 1
+Task 1-A
\ No newline at end of file
diff --git a/images/color-theme01.png b/images/color-theme01.png
index 42c3386..5a1ff37 100644
Binary files a/images/color-theme01.png and b/images/color-theme01.png differ
diff --git a/images/color-theme01.svg b/images/color-theme01.svg
index b53ef5a..1333eba 100644
--- a/images/color-theme01.svg
+++ b/images/color-theme01.svg
@@ -4,9 +4,9 @@
-My Demo Roadmap
+My Demo Roadmap
-Year 2023
+Year 2023
Q1
@@ -19,33 +19,20 @@
-Workstream 1
+Workstream 1
-Task 1-A
-Task 2-B
+Task 2-B
+Task 1-A
-Task 3-C
+Task 3-C
Workstream 2
-Task 2-A
+Task 2-A
-Task 2-B
+Task 2-B
-Task 2-C
-▼
-
-
-
-
-
-
-
-
-
-
-
-
-Generated by Roadmapper
+Task 2-C
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/color-theme02.png b/images/color-theme02.png
index 1e2b4ae..a6d9df8 100644
Binary files a/images/color-theme02.png and b/images/color-theme02.png differ
diff --git a/images/color-theme02.svg b/images/color-theme02.svg
index 02ed214..ee8bdf1 100644
--- a/images/color-theme02.svg
+++ b/images/color-theme02.svg
@@ -4,9 +4,9 @@
-My Demo Roadmap
+My Demo Roadmap
-Year 2023
+Year 2023
Q1
@@ -19,33 +19,20 @@
-Workstream 1
+Workstream 1
-Task 1-A
-Task 2-B
+Task 2-B
+Task 1-A
-Task 3-C
+Task 3-C
Workstream 2
-Task 2-A
+Task 2-A
-Task 2-B
+Task 2-B
-Task 2-C
-▼
-
-
-
-
-
-
-
-
-
-
-
-
-Generated by Roadmapper
+Task 2-C
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/color-theme03.png b/images/color-theme03.png
index e0ded0e..72115f9 100644
Binary files a/images/color-theme03.png and b/images/color-theme03.png differ
diff --git a/images/color-theme03.svg b/images/color-theme03.svg
index affd84e..be0d3f3 100644
--- a/images/color-theme03.svg
+++ b/images/color-theme03.svg
@@ -4,9 +4,9 @@
-My Demo Roadmap
+My Demo Roadmap
-Year 2023
+Year 2023
Q1
@@ -19,33 +19,20 @@
-Workstream 1
+Workstream 1
-Task 1-A
-Task 2-B
+Task 2-B
+Task 1-A
-Task 3-C
+Task 3-C
Workstream 2
-Task 2-A
+Task 2-A
-Task 2-B
+Task 2-B
-Task 2-C
-▼
-
-
-
-
-
-
-
-
-
-
-
-
-Generated by Roadmapper
+Task 2-C
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/color-theme04.png b/images/color-theme04.png
index 14bb442..49eab6a 100644
Binary files a/images/color-theme04.png and b/images/color-theme04.png differ
diff --git a/images/color-theme04.svg b/images/color-theme04.svg
index f7efe6d..67fbd3b 100644
--- a/images/color-theme04.svg
+++ b/images/color-theme04.svg
@@ -4,9 +4,9 @@
-My Demo Roadmap
+My Demo Roadmap
-Year 2023
+Year 2023
Q1
@@ -19,33 +19,20 @@
-Workstream 1
+Workstream 1
-Task 1-A
-Task 2-B
+Task 2-B
+Task 1-A
-Task 3-C
+Task 3-C
Workstream 2
-Task 2-A
+Task 2-A
-Task 2-B
+Task 2-B
-Task 2-C
-▼
-
-
-
-
-
-
-
-
-
-
-
-
-Generated by Roadmapper
+Task 2-C
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/color-theme05.png b/images/color-theme05.png
index b23cb65..5741702 100644
Binary files a/images/color-theme05.png and b/images/color-theme05.png differ
diff --git a/images/color-theme05.svg b/images/color-theme05.svg
index a1a77b6..82a0e49 100644
--- a/images/color-theme05.svg
+++ b/images/color-theme05.svg
@@ -4,9 +4,9 @@
-My Demo Roadmap
+My Demo Roadmap
-Year 2023
+Year 2023
Q1
@@ -19,33 +19,20 @@
-Workstream 1
+Workstream 1
-Task 1-A
-Task 2-B
+Task 2-B
+Task 1-A
-Task 3-C
+Task 3-C
Workstream 2
-Task 2-A
+Task 2-A
-Task 2-B
+Task 2-B
-Task 2-C
-▼
-
-
-
-
-
-
-
-
-
-
-
-
-Generated by Roadmapper
+Task 2-C
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/demo01.png b/images/demo01.png
index 4498f18..facd27a 100644
Binary files a/images/demo01.png and b/images/demo01.png differ
diff --git a/images/demo01.svg b/images/demo01.svg
index 0a768ef..a1dac91 100644
--- a/images/demo01.svg
+++ b/images/demo01.svg
@@ -4,12 +4,12 @@
-My Demo Roadmap
-Matariki Technologies Ltd
+My Demo Roadmap
+Matariki Technologies Ltd
-Year 2023
+Year 2023
-Jan
+Jan
Feb
@@ -19,19 +19,19 @@
May
-Jun
+Jun
-Jul
+Jul
-Aug
+Aug
Sep
Oct
-Nov
+Nov
-Dec
+Dec
@@ -44,26 +44,19 @@
-Core Product Work Stream
+Core Product Work Stream
-Base Functionality
-Enhancements
+Enhancements
-v.1.0
+v.1.0
-v.1.1
+v.1.1
+Base Functionality
-Showcase #1
-Showcase #2
-▼
-
-
-
-
-
-
-Generated by Roadmapper
+Showcase #2
+Showcase #1
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/en_NZ-roadmap.png b/images/en_NZ-roadmap.png
index 6d447ca..640fa81 100644
Binary files a/images/en_NZ-roadmap.png and b/images/en_NZ-roadmap.png differ
diff --git a/images/en_NZ-roadmap.svg b/images/en_NZ-roadmap.svg
index 315448c..f060069 100644
--- a/images/en_NZ-roadmap.svg
+++ b/images/en_NZ-roadmap.svg
@@ -4,10 +4,10 @@
-Strategy Roadmap 2023
-Matariki Technologies Ltd
+Strategy Roadmap 2023
+Matariki Technologies Ltd
-Year 2023
+Year 2023
Q1
@@ -20,52 +20,32 @@
-People Stream
+People Stream
-Develop Inclusion Strategy
-Promote diversity, equity, and inclusion
+Promote diversity, equity, and inclusion
+Develop Inclusion Strategy
-Implement a sustainability programme
+Implement a sustainability programme
-Process Stream
+Process Stream
-Implement Business Improvement Programme
+Implement Business Improvement Programme
-Automate processes
-30% Automated
+30% Automated
-60% Automated
+60% Automated
+Automate processes
-Tool Stream
+Tool Stream
-Implement strategy
+Implement strategy
-Tools Selection
+Tools Selection
-Centralized Tool Administration
-Admin Centralised
-▼
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Generated by Roadmapper
+Admin Centralised
+Centralized Tool Administration
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/gallery/gallery-BLUEMOUNTAIN-monthly.png b/images/gallery/gallery-BLUEMOUNTAIN-monthly.png
index 80271c3..05a159a 100644
Binary files a/images/gallery/gallery-BLUEMOUNTAIN-monthly.png and b/images/gallery/gallery-BLUEMOUNTAIN-monthly.png differ
diff --git a/images/gallery/gallery-BLUEMOUNTAIN-monthly.svg b/images/gallery/gallery-BLUEMOUNTAIN-monthly.svg
index 5cb0225..c379092 100644
--- a/images/gallery/gallery-BLUEMOUNTAIN-monthly.svg
+++ b/images/gallery/gallery-BLUEMOUNTAIN-monthly.svg
@@ -4,12 +4,12 @@
-SAMPLE ROADMAP 2022/2023
+SAMPLE ROADMAP 2022/2023
GodZone Corporation
-Year 2023
+Year 2023
-Jan
+Jan
Feb
@@ -19,19 +19,19 @@
May
-Jun
+Jun
-Jul
+Jul
-Aug
+Aug
Sep
Oct
-Nov
+Nov
-Dec
+Dec
@@ -46,30 +46,20 @@
Core Product Work Stream
-Base Functionality
-Enhancements
+Enhancements
-v.1.0
+v.1.0
-v.1.1
+v.1.1
+Base Functionality
-Showcase #1
-Showcase #2
+Showcase #2
+Showcase #1
Mobility Work Stream
-Mobile App Development
-▼
-
-
-
-
-
-
-
-
-
-Generated by Roadmapper
+Mobile App Development
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/gallery/gallery-DEFAULT-generic-monthly.png b/images/gallery/gallery-DEFAULT-generic-monthly.png
index bb2f60f..63c6ff0 100644
Binary files a/images/gallery/gallery-DEFAULT-generic-monthly.png and b/images/gallery/gallery-DEFAULT-generic-monthly.png differ
diff --git a/images/gallery/gallery-DEFAULT-generic-monthly.svg b/images/gallery/gallery-DEFAULT-generic-monthly.svg
index ce32410..50b8877 100644
--- a/images/gallery/gallery-DEFAULT-generic-monthly.svg
+++ b/images/gallery/gallery-DEFAULT-generic-monthly.svg
@@ -4,12 +4,12 @@
-SAMPLE ROADMAP 2022/2023
+SAMPLE ROADMAP 2022/2023
GodZone Corporation
-Year 1
+Year 1
-Month 1
+Month 1
Month 2
@@ -27,11 +27,11 @@
Month 9
-Month 10
+Month 10
-Month 11
+Month 11
-Month 12
+Month 12
@@ -46,20 +46,20 @@
Core Product Work Stream
-Base Functionality
-Enhancements
+Enhancements
-v.1.0
+v.1.0
-v.1.1
+v.1.1
+Base Functionality
-Showcase #1
-Showcase #2
+Showcase #2
+Showcase #1
Mobility Work Stream
-Mobile App Development
-Generated by Roadmapper
+Mobile App Development
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/gallery/gallery-DEFAULT-halfyearly.png b/images/gallery/gallery-DEFAULT-halfyearly.png
index d30bb2d..0332067 100644
Binary files a/images/gallery/gallery-DEFAULT-halfyearly.png and b/images/gallery/gallery-DEFAULT-halfyearly.png differ
diff --git a/images/gallery/gallery-DEFAULT-halfyearly.svg b/images/gallery/gallery-DEFAULT-halfyearly.svg
index bfeecc2..9bc85b6 100644
--- a/images/gallery/gallery-DEFAULT-halfyearly.svg
+++ b/images/gallery/gallery-DEFAULT-halfyearly.svg
@@ -4,18 +4,18 @@
-SAMPLE ROADMAP 2022/2023
+SAMPLE ROADMAP 2022/2023
GodZone Corporation
-Year 2023
+Year 2023
-Year 2024
+Year 2024
-H1
+H1
H2
-H1
+H1
H2
@@ -24,32 +24,32 @@
Core Product Work Stream
-Base Functionality
-Enhancements
-v.2.0
+v.2.0
+Enhancements
-v.1.0
+v.1.0
-v.1.1
+v.1.1
+Base Functionality
-Showcase #1
-Showcase #2
+Showcase #2
+Showcase #1
Mobility Work Stream
-Mobile App Development
-▼
-
-
-
-
-
-
-
-
-
-Generated by Roadmapper
+Mobile App Development
+▼
+
+
+
+
+
+
+
+
+
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/gallery/gallery-DEFAULT-monthly.png b/images/gallery/gallery-DEFAULT-monthly.png
index db0668f..b4b13d2 100644
Binary files a/images/gallery/gallery-DEFAULT-monthly.png and b/images/gallery/gallery-DEFAULT-monthly.png differ
diff --git a/images/gallery/gallery-DEFAULT-monthly.svg b/images/gallery/gallery-DEFAULT-monthly.svg
index 72c08e1..1a0894e 100644
--- a/images/gallery/gallery-DEFAULT-monthly.svg
+++ b/images/gallery/gallery-DEFAULT-monthly.svg
@@ -4,12 +4,12 @@
-SAMPLE ROADMAP 2022/2023
+SAMPLE ROADMAP 2022/2023
GodZone Corporation
-Year 2023
+Year 2023
-Jan
+Jan
Feb
@@ -19,19 +19,19 @@
May
-Jun
+Jun
-Jul
+Jul
-Aug
+Aug
Sep
Oct
-Nov
+Nov
-Dec
+Dec
@@ -46,30 +46,20 @@
Core Product Work Stream
-Base Functionality
-Enhancements
+Enhancements
-v.1.0
+v.1.0
-v.1.1
+v.1.1
+Base Functionality
-Showcase #1
-Showcase #2
+Showcase #2
+Showcase #1
Mobility Work Stream
-Mobile App Development
-▼
-
-
-
-
-
-
-
-
-
-Generated by Roadmapper
+Mobile App Development
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/gallery/gallery-DEFAULT-quarterly.png b/images/gallery/gallery-DEFAULT-quarterly.png
index 69e53a4..35d32e7 100644
Binary files a/images/gallery/gallery-DEFAULT-quarterly.png and b/images/gallery/gallery-DEFAULT-quarterly.png differ
diff --git a/images/gallery/gallery-DEFAULT-quarterly.svg b/images/gallery/gallery-DEFAULT-quarterly.svg
index ba5d124..8ab8620 100644
--- a/images/gallery/gallery-DEFAULT-quarterly.svg
+++ b/images/gallery/gallery-DEFAULT-quarterly.svg
@@ -4,12 +4,12 @@
-SAMPLE ROADMAP 2022/2023
+SAMPLE ROADMAP 2022/2023
GodZone Corporation
-Year 2023
+Year 2023
-Year 2024
+Year 2024
Q1
@@ -30,32 +30,32 @@
Core Product Work Stream
-Base Functionality
-Enhancements
-v.2.0
+v.2.0
+Enhancements
-v.1.0
+v.1.0
-v.1.1
+v.1.1
+Base Functionality
-Showcase #1
-Showcase #2
+Showcase #2
+Showcase #1
Mobility Work Stream
-Mobile App Development
-▼
-
-
-
-
-
-
-
-
-
-Generated by Roadmapper
+Mobile App Development
+▼
+
+
+
+
+
+
+
+
+
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/gallery/gallery-DEFAULT-weekly.png b/images/gallery/gallery-DEFAULT-weekly.png
index 771d190..7055267 100644
Binary files a/images/gallery/gallery-DEFAULT-weekly.png and b/images/gallery/gallery-DEFAULT-weekly.png differ
diff --git a/images/gallery/gallery-DEFAULT-weekly.svg b/images/gallery/gallery-DEFAULT-weekly.svg
index fd436c8..b934bfa 100644
--- a/images/gallery/gallery-DEFAULT-weekly.svg
+++ b/images/gallery/gallery-DEFAULT-weekly.svg
@@ -4,13 +4,13 @@
-SAMPLE ROADMAP 2022/2023
+SAMPLE ROADMAP 2022/2023
GodZone Corporation
-Year
-2022
+Year
+2022
-Year 2023
+Year 2023
W52
@@ -34,7 +34,7 @@
W10
-W11
+W11
W12
@@ -169,30 +169,20 @@
Core Product Work Stream
-Base Functionality
-Enhancements
+Enhancements
-v.1.0
+v.1.0
-v.1.1
+v.1.1
+Base Functionality
-Showcase #1
-Showcase #2
+Showcase #2
+Showcase #1
Mobility Work Stream
-Mobile App Development
-▼
-
-
-
-
-
-
-
-
-
-Generated by Roadmapper
+Mobile App Development
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/gallery/gallery-DEFAULT-yearly.png b/images/gallery/gallery-DEFAULT-yearly.png
index f5c6972..c4a7be7 100644
Binary files a/images/gallery/gallery-DEFAULT-yearly.png and b/images/gallery/gallery-DEFAULT-yearly.png differ
diff --git a/images/gallery/gallery-DEFAULT-yearly.svg b/images/gallery/gallery-DEFAULT-yearly.svg
index 36d93e2..5522d74 100644
--- a/images/gallery/gallery-DEFAULT-yearly.svg
+++ b/images/gallery/gallery-DEFAULT-yearly.svg
@@ -4,42 +4,42 @@
-SAMPLE ROADMAP 2022/2023
+SAMPLE ROADMAP 2022/2023
GodZone Corporation
-Year 2023
+Year 2023
-Year 2024
+Year 2024
Core Product Work Stream
-Base Functionality
-Enhancements
-v.2.0
+v.2.0
+Enhancements
-v.1.0
+v.1.0
-v.1.1
+v.1.1
+Base Functionality
-Showcase #1
-Showcase #2
+Showcase #2
+Showcase #1
Mobility Work Stream
-Mobile App Development
-▼
-
-
-
-
-
-
-
-
-
-Generated by Roadmapper
+Mobile App Development
+▼
+
+
+
+
+
+
+
+
+
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/gallery/gallery-GREENTURTLE-monthly.png b/images/gallery/gallery-GREENTURTLE-monthly.png
index 8889962..9bbc3b5 100644
Binary files a/images/gallery/gallery-GREENTURTLE-monthly.png and b/images/gallery/gallery-GREENTURTLE-monthly.png differ
diff --git a/images/gallery/gallery-GREENTURTLE-monthly.svg b/images/gallery/gallery-GREENTURTLE-monthly.svg
index 87ac916..acc5ea4 100644
--- a/images/gallery/gallery-GREENTURTLE-monthly.svg
+++ b/images/gallery/gallery-GREENTURTLE-monthly.svg
@@ -4,12 +4,12 @@
-SAMPLE ROADMAP 2022/2023
+SAMPLE ROADMAP 2022/2023
GodZone Corporation
-Year 2023
+Year 2023
-Jan
+Jan
Feb
@@ -19,19 +19,19 @@
May
-Jun
+Jun
-Jul
+Jul
-Aug
+Aug
Sep
Oct
-Nov
+Nov
-Dec
+Dec
@@ -46,30 +46,20 @@
Core Product Work Stream
-Base Functionality
-Enhancements
+Enhancements
-v.1.0
+v.1.0
-v.1.1
+v.1.1
+Base Functionality
-Showcase #1
-Showcase #2
+Showcase #2
+Showcase #1
Mobility Work Stream
-Mobile App Development
-▼
-
-
-
-
-
-
-
-
-
-Generated by Roadmapper
+Mobile App Development
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/gallery/gallery-GREYWOOF-monthly.png b/images/gallery/gallery-GREYWOOF-monthly.png
index 72a4438..81c0362 100644
Binary files a/images/gallery/gallery-GREYWOOF-monthly.png and b/images/gallery/gallery-GREYWOOF-monthly.png differ
diff --git a/images/gallery/gallery-GREYWOOF-monthly.svg b/images/gallery/gallery-GREYWOOF-monthly.svg
index e68cf34..ffbe487 100644
--- a/images/gallery/gallery-GREYWOOF-monthly.svg
+++ b/images/gallery/gallery-GREYWOOF-monthly.svg
@@ -4,12 +4,12 @@
-SAMPLE ROADMAP 2022/2023
+SAMPLE ROADMAP 2022/2023
GodZone Corporation
-Year 2023
+Year 2023
-Jan
+Jan
Feb
@@ -19,19 +19,19 @@
May
-Jun
+Jun
-Jul
+Jul
-Aug
+Aug
Sep
Oct
-Nov
+Nov
-Dec
+Dec
@@ -46,30 +46,20 @@
Core Product Work Stream
-Base Functionality
-Enhancements
+Enhancements
-v.1.0
+v.1.0
-v.1.1
+v.1.1
+Base Functionality
-Showcase #1
-Showcase #2
+Showcase #2
+Showcase #1
Mobility Work Stream
-Mobile App Development
-▼
-
-
-
-
-
-
-
-
-
-Generated by Roadmapper
+Mobile App Development
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/gallery/gallery-ORANGEPEEL-monthly.png b/images/gallery/gallery-ORANGEPEEL-monthly.png
index e3bc994..be7f1cc 100644
Binary files a/images/gallery/gallery-ORANGEPEEL-monthly.png and b/images/gallery/gallery-ORANGEPEEL-monthly.png differ
diff --git a/images/gallery/gallery-ORANGEPEEL-monthly.svg b/images/gallery/gallery-ORANGEPEEL-monthly.svg
index 1e1e802..a356ded 100644
--- a/images/gallery/gallery-ORANGEPEEL-monthly.svg
+++ b/images/gallery/gallery-ORANGEPEEL-monthly.svg
@@ -4,12 +4,12 @@
-SAMPLE ROADMAP 2022/2023
+SAMPLE ROADMAP 2022/2023
GodZone Corporation
-Year 2023
+Year 2023
-Jan
+Jan
Feb
@@ -19,19 +19,19 @@
May
-Jun
+Jun
-Jul
+Jul
-Aug
+Aug
Sep
Oct
-Nov
+Nov
-Dec
+Dec
@@ -46,30 +46,20 @@
Core Product Work Stream
-Base Functionality
-Enhancements
+Enhancements
-v.1.0
+v.1.0
-v.1.1
+v.1.1
+Base Functionality
-Showcase #1
-Showcase #2
+Showcase #2
+Showcase #1
Mobility Work Stream
-Mobile App Development
-▼
-
-
-
-
-
-
-
-
-
-Generated by Roadmapper
+Mobile App Development
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/gallery/gallery-marker-monthly.png b/images/gallery/gallery-marker-monthly.png
index bfb640b..279e621 100644
Binary files a/images/gallery/gallery-marker-monthly.png and b/images/gallery/gallery-marker-monthly.png differ
diff --git a/images/gallery/gallery-marker-monthly.svg b/images/gallery/gallery-marker-monthly.svg
index 0932ea7..3fe6196 100644
--- a/images/gallery/gallery-marker-monthly.svg
+++ b/images/gallery/gallery-marker-monthly.svg
@@ -4,17 +4,17 @@
-My Demo Roadmap!!!
+My Demo Roadmap!!!
-Year 2022
+Year 2022
-Year 2023
+Year 2023
-Nov
+Nov
-Dec
+Dec
-Jan
+Jan
Feb
@@ -24,11 +24,11 @@
May
-Jun
+Jun
-Jul
+Jul
-Aug
+Aug
Sep
@@ -45,20 +45,20 @@
-Core Product Work Stream
+Core Product Work Stream
-Base Functionality
-v.1.0
+v.1.0
-v.1.1
+v.1.1
+Base Functionality
-Showcase #1
-Showcase #2
+Showcase #2
+Showcase #1
-Mobility Work Stream
+Mobility Work Stream
-Mobile App Development
-Generated by Roadmapper
+Mobile App Development
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/gallery/gallery-sample-01.png b/images/gallery/gallery-sample-01.png
index 630d8c1..d4a1af2 100644
Binary files a/images/gallery/gallery-sample-01.png and b/images/gallery/gallery-sample-01.png differ
diff --git a/images/gallery/gallery-sample-01.svg b/images/gallery/gallery-sample-01.svg
index ceb2d6b..0718ff3 100644
--- a/images/gallery/gallery-sample-01.svg
+++ b/images/gallery/gallery-sample-01.svg
@@ -4,12 +4,12 @@
-STRATEGY ROADMAP 2023
-Matariki Technologies Inc.
+STRATEGY ROADMAP 2023
+Matariki Technologies Inc.
-Year 2023
+Year 2023
-Jan
+Jan
Feb
@@ -19,19 +19,19 @@
May
-Jun
+Jun
-Jul
+Jul
-Aug
+Aug
Sep
Oct
-Nov
+Nov
-Dec
+Dec
@@ -44,64 +44,64 @@
-Planning
+Planning
-Vision
+Vision
-Goals
-Strategic Intent
+Strategic Intent
-Sales Budget
+Sales Budget
-Release Plans
+Release Plans
+Goals
Strategy
-Market Analysis
-SWOT
+SWOT
-Competitor Review
+Competitor Review
+Market Analysis
-Business Model
-Price Reseach
-Price List (Final)
+Price List (Final)
+Price Reseach
-Price List (Draft)
+Price List (Draft)
+Business Model
-Objectives
+Objectives
-Sales Trends Analysis
+Sales Trends Analysis
-Service Development
+Service Development
-Product Roadmap
-Development
-Alpha May 20
+Alpha May 20
-Private Beta Jul 02
+Private Beta Jul 02
-Public Beta Aug 15
+Public Beta Aug 15
+Development
-Release Candidate
+Release Candidate
-Release To Public
-Go Live Dec 20
+Go Live Dec 20
+Release To Public
+Product Roadmap
-Business Intelligence
+Business Intelligence
-BI Development
-Service Dashboard
+Service Dashboard
-Real-Time Analytics
+Real-Time Analytics
-Sales Dashboard
-Generated by Roadmapper
+Sales Dashboard
+BI Development
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/ja_JP-roadmap.png b/images/ja_JP-roadmap.png
index 96ca9b0..48a1e2d 100644
Binary files a/images/ja_JP-roadmap.png and b/images/ja_JP-roadmap.png differ
diff --git a/images/ja_JP-roadmap.svg b/images/ja_JP-roadmap.svg
index 5f9ada1..c6966da 100644
--- a/images/ja_JP-roadmap.svg
+++ b/images/ja_JP-roadmap.svg
@@ -4,10 +4,10 @@
-戦略的ロードマップ 2023
-マタリッチサンテクノロジー株式会社
+戦略的ロードマップ 2023
+マタリッチサンテクノロジー株式会社
-2023 年
+2023 年
第1 四半期
@@ -22,9 +22,9 @@
人事プロセス
-インクルージョン戦略を策定する
多様性、公平性、包括性の促進
+インクルージョン戦略を策定する
持続可能な開発計画の実施
@@ -32,11 +32,11 @@
業務改善計画の実施
-自動化されたプロセス
-30%自動化
+30%自動化
-60%自動化
+60%自動化
+自動化されたプロセス
ツールフロー
@@ -44,28 +44,8 @@
ツールの選択
-集中ツール管理
-システムは集中型
-▼
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+システムは集中型
+集中ツール管理
ロードマッパーによって生成
\ No newline at end of file
diff --git a/images/ko-KR-roadmap.png b/images/ko-KR-roadmap.png
index 3dd1a65..76f4656 100644
Binary files a/images/ko-KR-roadmap.png and b/images/ko-KR-roadmap.png differ
diff --git a/images/ko-KR-roadmap.svg b/images/ko-KR-roadmap.svg
index aca50d0..32f50f4 100644
--- a/images/ko-KR-roadmap.svg
+++ b/images/ko-KR-roadmap.svg
@@ -5,67 +5,47 @@
전략 로드맵 2023
-마타리키 테크놀로지스
+마타리키 테크놀로지스
-2023 년
+2023 년
-第1 분기
+第1 분기
-第2 분기
+第2 분기
-第3 분기
+第3 분기
-第4 분기
+第4 분기
-인사 프로세스
+인사 프로세스
-포함 전략을 수립
-다양성, 공정성, 포괄성 촉진
+다양성, 공정성, 포괄성 촉진
+포함 전략을 수립
-지속 가능한 개발 계획 실시
+지속 가능한 개발 계획 실시
-작업 과정
+작업 과정
-업무 개선 계획 실시
+업무 개선 계획 실시
-자동화된 프로세스
-30% 자동화
+30% 자동화
-60% 자동화
+60% 자동화
+자동화된 프로세스
-공구 흐름
+공구 흐름
-도구 선택 전략 구현
+도구 선택 전략 구현
-도구 선택
+도구 선택
-중앙 집중식 도구 관리
-시스템은 중앙 집중식
-▼
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-로드매퍼에서 생성
+시스템은 중앙 집중식
+중앙 집중식 도구 관리
+로드매퍼에서 생성
\ No newline at end of file
diff --git a/images/my_roadmap.png b/images/my_roadmap.png
index 26ea8a6..6be97ee 100644
Binary files a/images/my_roadmap.png and b/images/my_roadmap.png differ
diff --git a/images/my_roadmap.svg b/images/my_roadmap.svg
index 40a08ad..012dc29 100644
--- a/images/my_roadmap.svg
+++ b/images/my_roadmap.svg
@@ -4,17 +4,17 @@
-My Roadmap
+My Roadmap
-Year 2022
+Year 2022
-Year 2023
+Year 2023
-Nov
+Nov
-Dec
+Dec
-Jan
+Jan
Feb
@@ -27,12 +27,12 @@
-Development
+Development
Activity 1
Activity 2
Activity 3
-Generated by Roadmapper
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/roadmapper-anatomy-base.png b/images/roadmapper-anatomy-base.png
index 10d9323..f3bd02c 100644
Binary files a/images/roadmapper-anatomy-base.png and b/images/roadmapper-anatomy-base.png differ
diff --git a/images/roadmapper-anatomy-base.svg b/images/roadmapper-anatomy-base.svg
index f24c7c3..0246f04 100644
--- a/images/roadmapper-anatomy-base.svg
+++ b/images/roadmapper-anatomy-base.svg
@@ -4,12 +4,12 @@
-Product Roadmap
-Matariki Tech Ltd
+Product Roadmap
+Matariki Tech Ltd
-Year 2023
+Year 2023
-Jan
+Jan
Feb
@@ -19,11 +19,11 @@
May
-Jun
+Jun
-Jul
+Jul
-Aug
+Aug
Sep
@@ -35,14 +35,14 @@
-Workstream 1
+Workstream 1
-Task 1-A
-Task 2-B
+Task 2-B
+Task 1-A
-Task 3-C
-Milestone 1
-Generated by Roadmapper
+Milestone 1
+Task 3-C
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/theme-demo01.png b/images/theme-demo01.png
index c5a9fe0..125cd68 100644
Binary files a/images/theme-demo01.png and b/images/theme-demo01.png differ
diff --git a/images/theme-demo01.svg b/images/theme-demo01.svg
index d93c409..bed1b38 100644
--- a/images/theme-demo01.svg
+++ b/images/theme-demo01.svg
@@ -4,9 +4,9 @@
-My Demo Roadmap
+My Demo Roadmap
-Year 2023
+Year 2023
Q1
@@ -19,33 +19,20 @@
-Workstream 1
+Workstream 1
-Task 1-A
-Task 2-B
+Task 2-B
+Task 1-A
-Task 3-C
+Task 3-C
Workstream 2
-Task 2-A
+Task 2-A
-Task 2-B
+Task 2-B
-Task 2-C
-▼
-
-
-
-
-
-
-
-
-
-
-
-
-Generated by Roadmapper
+Task 2-C
+Generated by Roadmapper
\ No newline at end of file
diff --git a/images/transparent_roadmap.png b/images/transparent_roadmap.png
index 12186c8..7e6b7ed 100644
Binary files a/images/transparent_roadmap.png and b/images/transparent_roadmap.png differ
diff --git a/images/transparent_roadmap.svg b/images/transparent_roadmap.svg
index 1480431..f1a7698 100644
--- a/images/transparent_roadmap.svg
+++ b/images/transparent_roadmap.svg
@@ -5,11 +5,11 @@
-Transparent Background Test Roadmap
+Transparent Background Test Roadmap
-Year 2023
+Year 2023
-Jan
+Jan
Feb
@@ -19,19 +19,19 @@
May
-Jun
+Jun
-Jul
+Jul
-Aug
+Aug
Sep
Oct
-Nov
+Nov
-Dec
+Dec
@@ -44,13 +44,13 @@
-Workstream 1
+Workstream 1
-Task 1-A
-Task 2-B
-Milestone 2
+Milestone 2
+Task 2-B
-Milestone 1
+Milestone 1
+Task 1-A
\ No newline at end of file
diff --git a/images/with_context_manager.png b/images/with_context_manager.png
index fbae3c5..8e98456 100644
Binary files a/images/with_context_manager.png and b/images/with_context_manager.png differ
diff --git a/images/with_context_manager.svg b/images/with_context_manager.svg
index c209068..e3a375a 100644
--- a/images/with_context_manager.svg
+++ b/images/with_context_manager.svg
@@ -4,11 +4,11 @@
-Context Manager Test Roadmap
+Context Manager Test Roadmap
-Year 2023
+Year 2023
-Jan
+Jan
Feb
@@ -18,19 +18,19 @@
May
-Jun
+Jun
-Jul
+Jul
-Aug
+Aug
Sep
Oct
-Nov
+Nov
-Dec
+Dec
@@ -43,13 +43,13 @@
-Workstream 1
+Workstream 1
-Task 1-A
-Task 2-B
-Milestone 2
+Milestone 2
+Task 2-B
-Milestone 1
+Milestone 1
+Task 1-A
\ No newline at end of file
diff --git a/images/zh_TW-roadmap.png b/images/zh_TW-roadmap.png
index fcb95b4..d4de773 100644
Binary files a/images/zh_TW-roadmap.png and b/images/zh_TW-roadmap.png differ
diff --git a/images/zh_TW-roadmap.svg b/images/zh_TW-roadmap.svg
index efe40e2..5d2f9e0 100644
--- a/images/zh_TW-roadmap.svg
+++ b/images/zh_TW-roadmap.svg
@@ -7,7 +7,7 @@
戰略路線圖 2023
瑪塔里奇太陽科技有限公司
-2023 年
+2023 年
第1季度
@@ -22,9 +22,9 @@
人員流程
-制定包容戰略
促進多樣性、公平性和包容性
+制定包容戰略
實施可持續發展計劃
@@ -32,11 +32,11 @@
實施業務改進計劃
-自動化流程
30%自動化
60%自動化
+自動化流程
工具流程
@@ -44,28 +44,8 @@
工具選擇
-集中工具管理
系統集中完成
-▼
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-由 Roadmapper 生成
+集中工具管理
+由 Roadmapper 生成
\ No newline at end of file
diff --git a/images/zh_TW-timeline-roadmap.png b/images/zh_TW-timeline-roadmap.png
index 2e84cfe..dd6430d 100644
Binary files a/images/zh_TW-timeline-roadmap.png and b/images/zh_TW-timeline-roadmap.png differ
diff --git a/images/zh_TW-timeline-roadmap.svg b/images/zh_TW-timeline-roadmap.svg
index 6009f47..8205fdb 100644
--- a/images/zh_TW-timeline-roadmap.svg
+++ b/images/zh_TW-timeline-roadmap.svg
@@ -7,9 +7,9 @@
戰略路線圖 2023
瑪塔里奇太陽科技有限公司
-Year 2023
+Year 2023
-Q1
+Q1
Q2
@@ -22,9 +22,9 @@
人員流程
-制定包容戰略
促進多樣性、公平性和包容性
+制定包容戰略
實施可持續發展計劃
@@ -32,11 +32,11 @@
實施業務改進計劃
-自動化流程
30%自動化
60%自動化
+自動化流程
工具流程
@@ -44,28 +44,8 @@
工具選擇
-集中工具管理
系統集中完成
-▼
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-由 Roadmapper 生成
+集中工具管理
+由 Roadmapper 生成
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
index b74a17a..5528e14 100644
Binary files a/requirements.txt and b/requirements.txt differ
diff --git a/src/debug.py b/src/debug.py
index a4f6702..6d2f4f4 100644
--- a/src/debug.py
+++ b/src/debug.py
@@ -110,17 +110,57 @@ def debug03():
my_roadmap.save(output_file)
-if __name__ == "__main__":
- output_file = "debug01"
- debug01(
- file_name=output_file,
- timelinemode=TimelineMode.MONTHLY,
- number_of_items=14,
+def debug04():
+ output_file = "debug04.png"
+
+ my_roadmap = Roadmap(width=800, height=400, show_marker=False)
+ my_roadmap.set_title("My Roadmap")
+ my_roadmap.set_timeline(
+ mode=TimelineMode.MONTHLY, start="2024-01-01", number_of_items=6
)
- output_file = "debug02"
- debug02(
- file_name=output_file,
- timelinemode=TimelineMode.MONTHLY,
- number_of_items=14,
+
+ group = my_roadmap.add_group("Development")
+ task1 = group.add_task("Activity 1", "2024-01-01", "2024-03-10")
+ task1.add_milestone("MS1", "2024-02-01", fill_colour="green", font_colour="red")
+ group.add_task("Activity 2", "2024-01-11", "2024-03-20")
+
+ my_roadmap.set_footer("Generated by Roadmapper")
+ my_roadmap.draw()
+ my_roadmap.save(output_file)
+
+
+def debug04_svg():
+ output_file = "debug04.svg"
+
+ my_roadmap = Roadmap(width=800, height=400, show_marker=False, painter_type="svg")
+ my_roadmap.set_title("My Roadmap")
+ my_roadmap.set_timeline(
+ mode=TimelineMode.MONTHLY, start="2024-01-01", number_of_items=6
)
- debug03()
+
+ group = my_roadmap.add_group("Development")
+ task1 = group.add_task("Activity 1", "2024-01-01", "2024-03-10")
+ task1.add_milestone("MS1", "2024-02-01", fill_colour="green", font_colour="red")
+ group.add_task("Activity 2", "2024-01-11", "2024-03-20")
+
+ my_roadmap.set_footer("Generated by Roadmapper")
+ my_roadmap.draw()
+ my_roadmap.save(output_file)
+
+
+if __name__ == "__main__":
+ # output_file = "debug01"
+ # debug01(
+ # file_name=output_file,
+ # timelinemode=TimelineMode.MONTHLY,
+ # number_of_items=14,
+ # )
+ # output_file = "debug02"
+ # debug02(
+ # file_name=output_file,
+ # timelinemode=TimelineMode.MONTHLY,
+ # number_of_items=14,
+ # )
+ # debug03()
+ debug04()
+ debug04_svg()
diff --git a/src/roadmapper/painter.py b/src/roadmapper/painter.py
index fd950d7..c7f889e 100644
--- a/src/roadmapper/painter.py
+++ b/src/roadmapper/painter.py
@@ -331,6 +331,22 @@ def draw_box_with_text(
box_y + box_height,
)
+ def draw_text_on_box(
+ self,
+ box_x: int,
+ box_y: int,
+ box_width: int,
+ box_height: int,
+ box_fill_colour: int,
+ text: str,
+ text_alignment: str,
+ text_font: str,
+ text_font_size: int,
+ text_font_colour: str,
+ style: str = "rectangle",
+ ) -> None:
+ raise NotImplementedError
+
def draw_diamond(
self, x: int, y: int, width: int, height: int, fill_colour: str
) -> list:
@@ -521,13 +537,86 @@ def draw_box_with_text(
multi_lines = []
wrap_lines = []
- ### Make '\n' work
+ # ** Make '\n' work
multi_lines = text.splitlines()
left, _, right, _ = font.getbbox("a")
single_char_width = right - left
- ### wrap text
+ # ** wrap text
+ for line in multi_lines:
+ wrap_lines.extend(textwrap.wrap(line, int(box_width / single_char_width)))
+
+ pad = 4
+ line_count = len(wrap_lines)
+
+ for i, line in enumerate(wrap_lines):
+ font_width, font_height = self.get_text_dimension(
+ line, text_font, text_font_size
+ )
+
+ match text_alignment:
+ case "centre":
+ x = box_x1 + (box_width - font_width) / 2
+ case "left":
+ x = box_x1 + 15
+ case "right":
+ x = box_x2 - font_width - 15
+ case _:
+ x = box_x1 + (box_width - font_width) / 2
+
+ total_line_height = (font_height * line_count) + (pad * (line_count - 1))
+
+ single_line_height = font_height
+
+ y = (
+ box_y1
+ + ((box_height - total_line_height) / 2)
+ + ((single_line_height * i) + (pad * i))
+ )
+
+ self.__cr.text((x, y), line, fill=text_font_colour, anchor="la", font=font)
+
+ def draw_text_on_box(
+ self,
+ box_x: int,
+ box_y: int,
+ box_width: int,
+ box_height: int,
+ box_fill_colour: int,
+ text: str,
+ text_alignment: str,
+ text_font: str,
+ text_font_size: int,
+ text_font_colour: str,
+ style: str = "rectangle",
+ ) -> None:
+ box_x1, box_y1, box_x2, box_y2 = super().draw_box_with_text(
+ box_x,
+ box_y,
+ box_width,
+ box_height,
+ box_fill_colour,
+ text,
+ text_alignment,
+ text_font,
+ text_font_size,
+ text_font_colour,
+ style,
+ )
+
+ font = ImageFont.truetype(self.get_font_path(text_font), size=text_font_size)
+
+ multi_lines = []
+ wrap_lines = []
+
+ # ** Make '\n' work
+ multi_lines = text.splitlines()
+
+ left, _, right, _ = font.getbbox("a")
+ single_char_width = right - left
+
+ # ** wrap text
for line in multi_lines:
wrap_lines.extend(textwrap.wrap(line, int(box_width / single_char_width)))
@@ -579,6 +668,7 @@ def draw_diamond(
# Use Pillow's ImageDraw module to draw a polygon with the given points and fill color.
self.__cr.polygon(points, fill=fill_colour)
+ # self.__cr.polygon(points, outline=fill_colour, width=2)
def draw_text(
self, x: int, y: int, text: str, font: str, font_size: int, font_colour: str
@@ -912,6 +1002,89 @@ def draw_box_with_text(
)
self.elements.append(txt)
+ def draw_text_on_box(
+ self,
+ box_x: int,
+ box_y: int,
+ box_width: int,
+ box_height: int,
+ box_fill_colour: int,
+ text: str,
+ text_alignment: str,
+ text_font: str,
+ text_font_size: int,
+ text_font_colour: str,
+ style: str = "rectangle",
+ ) -> None:
+ box_x1, box_y1, box_x2, box_y2 = super().draw_box_with_text(
+ box_x,
+ box_y,
+ box_width,
+ box_height,
+ box_fill_colour,
+ text,
+ text_alignment,
+ text_font,
+ text_font_size,
+ text_font_colour,
+ style,
+ )
+
+ font = ImageFont.truetype(self.get_font_path(text_font), size=text_font_size)
+
+ multi_lines = []
+ wrap_lines = []
+
+ # ** Make '\n' work
+ multi_lines = text.splitlines()
+
+ left, _, right, _ = font.getbbox("a")
+ single_char_width = right - left
+
+ # ** wrap text
+ for line in multi_lines:
+ wrap_lines.extend(textwrap.wrap(line, int(box_width / single_char_width)))
+
+ pad = 4
+ line_count = len(wrap_lines)
+
+ for i, line in enumerate(wrap_lines):
+ font_width, font_height = self.get_text_dimension(
+ line, text_font, text_font_size
+ )
+
+ match text_alignment:
+ case "centre":
+ x = box_x1 + (box_width - font_width) / 2
+ case "left":
+ x = box_x1 + 15
+ case "right":
+ x = box_x2 - font_width - 15
+ case _:
+ x = box_x1 + (box_width - font_width) / 2
+
+ total_line_height = (font_height * line_count) + (pad * (line_count - 1))
+
+ single_line_height = font_height
+
+ y = (
+ box_y1
+ + ((box_height - total_line_height) / 2)
+ + ((single_line_height * i) + (pad * i))
+ )
+
+ txt = dw.Text(
+ line,
+ x=x,
+ y=y,
+ font_size=text_font_size,
+ stroke=text_font_colour,
+ text_anchor="start",
+ dominant_baseline="hanging",
+ font_family=text_font,
+ )
+ self.elements.append(txt)
+
def draw_diamond(
self, x: int, y: int, width: int, height: int, fill_colour: str
) -> None:
diff --git a/src/roadmapper/task.py b/src/roadmapper/task.py
index 0a8364d..638731e 100644
--- a/src/roadmapper/task.py
+++ b/src/roadmapper/task.py
@@ -546,23 +546,32 @@ def draw(self, painter: Painter) -> None:
if i == 0:
box_x = box[0]
box_y = box[1]
- ### Fix for [69] - factored in gap spaces width
+ # ** Fix for [69] - factored in gap spaces width
width += int(box[2]) + 2
- ###
+ # **
height = box[3]
- ### Fix for [69] - ignore the last gap space
+ # ** Fix for [69] - ignore the last gap space
if width >= 2:
width -= 2
- ###
+ # **
box_width, box_height = (
width,
height,
)
- if box_x != 0 or box_y != 0 or box_width != 0 or box_height != 0:
- painter.draw_box_with_text(
+ if box_x != 0 and box_y != 0 and box_width > 0 and box_height != 0:
+ painter.draw_box(box_x, box_y, box_width, box_height, self.fill_colour)
+
+ # ** Fix for v1.4.1 - Draw milestone first before task text
+ for task in self.tasks:
+ task.draw(painter)
+
+ for milestone in self.milestones:
+ milestone.draw(painter)
+
+ painter.draw_text_on_box(
box_x,
box_y,
box_width,
@@ -575,12 +584,7 @@ def draw(self, painter: Painter) -> None:
self.font_colour,
style=self.style,
)
-
- for task in self.tasks:
- task.draw(painter)
-
- for milestone in self.milestones:
- milestone.draw(painter)
+ # **
def __enter__(self):
"""This method is called when the 'with' statement is used"""
diff --git a/src/roadmapper/version.py b/src/roadmapper/version.py
index 7df8e08..bf25615 100644
--- a/src/roadmapper/version.py
+++ b/src/roadmapper/version.py
@@ -1 +1 @@
-__version__ = "1.4.1-SNAPSHOT"
+__version__ = "1.4.1"
diff --git a/src/tests/test_cases.py b/src/tests/test_cases.py
index 53f3039..8506d23 100644
--- a/src/tests/test_cases.py
+++ b/src/tests/test_cases.py
@@ -4,13 +4,13 @@
from src.roadmapper.timelinemode import TimelineMode
-### Roadmap Tests ###
+# ** Roadmap Tests
def colour_theme_demo(
width: int = 1200,
timelinemode: TimelineMode = TimelineMode.MONTHLY,
- start_date: str = "2022-12-01",
+ start_date: str = "2024-12-01",
number_of_items: int = 12,
show_generic_dates: bool = False,
file_name: str = "colour_theme_demo.png",
@@ -24,7 +24,7 @@ def colour_theme_demo(
roadmap = Roadmap(
width, 1000, auto_height=True, colour_theme=colour_theme, show_marker=False
)
- roadmap.set_title("STRATEGY ROADMAP 2023")
+ roadmap.set_title("STRATEGY ROADMAP 2024")
roadmap.set_subtitle("Mars Software Inc.")
roadmap.set_timeline(
timelinemode,
@@ -39,29 +39,29 @@ def colour_theme_demo(
group = roadmap.add_group("Planning", fill_colour="#FFC000", font_colour="black")
task = group.add_task(
- "Vision", "2023-01-01", "2023-03-31", fill_colour="#FFC000", font_colour="black"
+ "Vision", "2024-01-01", "2024-03-31", fill_colour="#FFC000", font_colour="black"
)
task = group.add_task(
- "Goals", "2023-02-15", "2023-03-31", fill_colour="#FFC000", font_colour="black"
+ "Goals", "2024-02-15", "2024-03-31", fill_colour="#FFC000", font_colour="black"
)
task.add_parallel_task(
"Strategic Intent",
- "2023-04-01",
- "2023-05-31",
+ "2024-04-01",
+ "2024-05-31",
fill_colour="#FFC000",
font_colour="black",
)
task.add_parallel_task(
"Sales Budget",
- "2023-06-01",
- "2023-07-15",
+ "2024-06-01",
+ "2024-07-15",
fill_colour="#FFC000",
font_colour="black",
)
task.add_parallel_task(
"Release Plans",
- "2023-07-16",
- "2023-09-30",
+ "2024-07-16",
+ "2024-09-30",
fill_colour="#FFC000",
font_colour="black",
)
@@ -69,49 +69,49 @@ def colour_theme_demo(
group = roadmap.add_group("Strategy", fill_colour="#ED7D31", font_colour="black")
task = group.add_task(
"Market Analysis",
- "2023-02-01",
- "2023-03-30",
+ "2024-02-01",
+ "2024-03-30",
fill_colour="#ED7D31",
font_colour="black",
)
task.add_milestone(
- "Competitor Review", "2023-03-30", fill_colour="#843C0C", font_colour="black"
+ "Competitor Review", "2024-03-30", fill_colour="#843C0C", font_colour="black"
)
task.add_parallel_task(
- "SWOT", "2023-04-01", "2023-04-30", fill_colour="#ED7D31", font_colour="black"
+ "SWOT", "2024-04-01", "2024-04-30", fill_colour="#ED7D31", font_colour="black"
)
task = group.add_task(
"Business Model",
- "2023-04-01",
- "2023-05-31",
+ "2024-04-01",
+ "2024-05-31",
fill_colour="#ED7D31",
font_colour="black",
)
task.add_milestone(
- "Price List (Draft)", "2023-06-01", fill_colour="#843C0C", font_colour="black"
+ "Price List (Draft)", "2024-06-01", fill_colour="#843C0C", font_colour="black"
)
parallel_task = task.add_parallel_task(
- "Price Reseach",
- "2023-06-01",
- "2023-08-05",
+ "Price Reseach XXXXXXXXXXX",
+ "2024-06-01",
+ "2024-08-05",
fill_colour="#ED7D31",
font_colour="black",
)
parallel_task.add_milestone(
- "Price List (Final)", "2023-07-28", fill_colour="#843C0C", font_colour="black"
+ "Price List (Final)", "2024-07-28", fill_colour="#843C0C", font_colour="black"
)
group.add_task(
"Objectives",
- "2023-06-20",
- "2023-09-10",
+ "2024-06-20",
+ "2024-09-10",
fill_colour="#ED7D31",
font_colour="black",
)
group.add_task(
"Sales Trends Analysis",
- "2023-08-15",
- "2023-10-10",
+ "2024-08-15",
+ "2024-10-10",
fill_colour="#ED7D31",
font_colour="black",
)
@@ -121,46 +121,46 @@ def colour_theme_demo(
)
task = group.add_task(
"Product Roadmap",
- "2023-02-15",
- "2023-03-31",
+ "2024-02-15",
+ "2024-03-31",
fill_colour="#70AD47",
font_colour="black",
)
parallel_task = task.add_parallel_task(
"Development",
- "2023-04-01",
- "2023-08-30",
+ "2024-04-01",
+ "2024-08-30",
fill_colour="#70AD47",
font_colour="black",
)
parallel_task.add_milestone(
- "Alpha May 20", "2023-05-20", fill_colour="#385723", font_colour="black"
+ "Alpha May 20", "2024-05-20", fill_colour="#385723", font_colour="black"
)
parallel_task.add_milestone(
- "Private Beta Jun 30", "2023-06-30", fill_colour="#385723", font_colour="black"
+ "Private Beta Jun 30", "2024-06-30", fill_colour="#385723", font_colour="black"
)
parallel_task.add_milestone(
- "Public Beta Jun 30", "2023-08-10", fill_colour="#385723", font_colour="black"
+ "Public Beta Jun 30", "2024-08-10", fill_colour="#385723", font_colour="black"
)
parallel_task = task.add_parallel_task(
"Release Candidate",
- "2023-09-01",
- "2023-10-15",
+ "2024-09-01",
+ "2024-10-15",
fill_colour="#70AD47",
font_colour="black",
)
parallel_task = task.add_parallel_task(
"Release To Public",
- "2023-10-16",
- "2023-12-31",
+ "2024-10-16",
+ "2024-12-31",
fill_colour="#70AD47",
font_colour="black",
)
parallel_task.add_milestone(
- "Go Live Dec 20", "2023-12-20", fill_colour="#385723", font_colour="black"
+ "Go Live Dec 20", "2024-12-20", fill_colour="#385723", font_colour="black"
)
group = roadmap.add_group(
@@ -170,22 +170,22 @@ def colour_theme_demo(
)
task = group.add_task(
"BI Development",
- "2023-04-15",
- "2023-12-31",
+ "2024-04-15",
+ "2024-12-31",
fill_colour="#4472C4",
font_colour="black",
)
task.add_milestone(
- "Service Dashboard", "2023-05-15", fill_colour="#162641", font_colour="black"
+ "Service Dashboard", "2024-05-15", fill_colour="#162641", font_colour="black"
)
task.add_milestone(
- "Real-Time Analytics", "2023-08-01", fill_colour="#162641", font_colour="black"
+ "Real-Time Analytics", "2024-08-01", fill_colour="#162641", font_colour="black"
)
task.add_milestone(
- "Sales Dashboard", "2023-12-15", fill_colour="#162641", font_colour="black"
+ "Sales Dashboard", "2024-12-15", fill_colour="#162641", font_colour="black"
)
roadmap.set_footer(
@@ -215,7 +215,7 @@ def unicode_demo(
roadmap = Roadmap(
width, 1000, auto_height=True, colour_theme=colour_theme, show_marker=False
)
- roadmap.set_title("2023 年戰略路線圖")
+ roadmap.set_title("2024 年戰略路線圖")
roadmap.set_subtitle("火星科技公司")
roadmap.set_timeline(
timelinemode,
@@ -230,29 +230,29 @@ def unicode_demo(
group = roadmap.add_group("規劃", fill_colour="#FFC000", font_colour="black")
task = group.add_task(
- "願景", "2023-01-01", "2023-03-31", fill_colour="#FFC000", font_colour="black"
+ "願景", "2024-01-01", "2024-03-31", fill_colour="#FFC000", font_colour="black"
)
task = group.add_task(
- "目標", "2023-02-15", "2023-03-31", fill_colour="#FFC000", font_colour="black"
+ "目標", "2024-02-15", "2024-03-31", fill_colour="#FFC000", font_colour="black"
)
task.add_parallel_task(
"戰略意圖",
- "2023-04-01",
- "2023-05-31",
+ "2024-04-01",
+ "2024-05-31",
fill_colour="#FFC000",
font_colour="black",
)
task.add_parallel_task(
"銷售預算",
- "2023-06-01",
- "2023-07-15",
+ "2024-06-01",
+ "2024-07-15",
fill_colour="#FFC000",
font_colour="black",
)
task.add_parallel_task(
"發布計劃",
- "2023-07-16",
- "2023-09-30",
+ "2024-07-16",
+ "2024-09-30",
fill_colour="#FFC000",
font_colour="black",
)
@@ -260,49 +260,49 @@ def unicode_demo(
group = roadmap.add_group("戰略", fill_colour="#ED7D31", font_colour="black")
task = group.add_task(
"市場分析",
- "2023-02-01",
- "2023-03-30",
+ "2024-02-01",
+ "2024-03-30",
fill_colour="#ED7D31",
font_colour="black",
)
task.add_milestone(
- "競爭對手審查", "2023-03-30", fill_colour="#843C0C", font_colour="black"
+ "競爭對手審查", "2024-03-30", fill_colour="#843C0C", font_colour="black"
)
task.add_parallel_task(
- "SWOT", "2023-04-01", "2023-04-30", fill_colour="#ED7D31", font_colour="black"
+ "SWOT", "2024-04-01", "2024-04-30", fill_colour="#ED7D31", font_colour="black"
)
task = group.add_task(
"商業模式",
- "2023-04-01",
- "2023-05-31",
+ "2024-04-01",
+ "2024-05-31",
fill_colour="#ED7D31",
font_colour="black",
)
task.add_milestone(
- "價目表(草稿)", "2023-06-01", fill_colour="#843C0C", font_colour="black"
+ "價目表(草稿)", "2024-06-01", fill_colour="#843C0C", font_colour="black"
)
parallel_task = task.add_parallel_task(
"價格研究",
- "2023-06-01",
- "2023-08-05",
+ "2024-06-01",
+ "2024-08-05",
fill_colour="#ED7D31",
font_colour="black",
)
parallel_task.add_milestone(
- "價目表(最終)", "2023-07-28", fill_colour="#843C0C", font_colour="black"
+ "價目表(最終)", "2024-07-28", fill_colour="#843C0C", font_colour="black"
)
group.add_task(
"目標",
- "2023-06-20",
- "2023-09-10",
+ "2024-06-20",
+ "2024-09-10",
fill_colour="#ED7D31",
font_colour="black",
)
group.add_task(
"銷售趨勢分析",
- "2023-08-15",
- "2023-10-10",
+ "2024-08-15",
+ "2024-10-10",
fill_colour="#ED7D31",
font_colour="black",
)
@@ -310,46 +310,46 @@ def unicode_demo(
group = roadmap.add_group("服務發展", fill_colour="#70AD47", font_colour="black")
task = group.add_task(
"產品路線圖",
- "2023-02-15",
- "2023-03-31",
+ "2024-02-15",
+ "2024-03-31",
fill_colour="#70AD47",
font_colour="black",
)
parallel_task = task.add_parallel_task(
"軟件開發",
- "2023-04-01",
- "2023-08-30",
+ "2024-04-01",
+ "2024-08-30",
fill_colour="#70AD47",
font_colour="black",
)
parallel_task.add_milestone(
- "阿尔法 5月20", "2023-05-20", fill_colour="#385723", font_colour="black"
+ "阿尔法 5月20", "2024-05-20", fill_colour="#385723", font_colour="black"
)
parallel_task.add_milestone(
- "私人測試 6月30", "2023-06-30", fill_colour="#385723", font_colour="black"
+ "私人測試 6月30", "2024-06-30", fill_colour="#385723", font_colour="black"
)
parallel_task.add_milestone(
- "公開測試 8月30", "2023-08-10", fill_colour="#385723", font_colour="black"
+ "公開測試 8月30", "2024-08-10", fill_colour="#385723", font_colour="black"
)
parallel_task = task.add_parallel_task(
"候选版本",
- "2023-09-01",
- "2023-10-15",
+ "2024-09-01",
+ "2024-10-15",
fill_colour="#70AD47",
font_colour="black",
)
parallel_task = task.add_parallel_task(
"公開發布",
- "2023-10-16",
- "2023-12-31",
+ "2024-10-16",
+ "2024-12-31",
fill_colour="#70AD47",
font_colour="black",
)
parallel_task.add_milestone(
- "上綫 12月20", "2023-12-20", fill_colour="#385723", font_colour="black"
+ "上綫 12月20", "2024-12-20", fill_colour="#385723", font_colour="black"
)
group = roadmap.add_group(
@@ -359,20 +359,22 @@ def unicode_demo(
)
task = group.add_task(
"商業智能開發",
- "2023-04-15",
- "2023-12-31",
+ "2024-04-15",
+ "2024-12-31",
fill_colour="#4472C4",
font_colour="black",
)
task.add_milestone(
- "服務儀表板", "2023-05-15", fill_colour="#162641", font_colour="black"
+ "服務儀表板", "2024-05-15", fill_colour="#162641", font_colour="black"
)
- task.add_milestone("實時分析", "2023-08-01", fill_colour="#162641", font_colour="black")
+ task.add_milestone(
+ "實時分析", "2024-08-01", fill_colour="#162641", font_colour="black"
+ )
task.add_milestone(
- "Sales Dashboard", "2023-12-15", fill_colour="#162641", font_colour="black"
+ "Sales Dashboard", "2024-12-15", fill_colour="#162641", font_colour="black"
)
roadmap.set_footer("由 Roadmapper 生成於 " + datetime.now().strftime("%Y-%m-%d"))
@@ -399,7 +401,7 @@ def sample_roadmap(
roadmap = Roadmap(
width, 1000, auto_height=True, colour_theme=colour_theme, show_marker=False
)
- roadmap.set_title("STRATEGY ROADMAP 2023")
+ roadmap.set_title("STRATEGY ROADMAP 2024")
roadmap.set_subtitle("Matariki Technologies Inc.")
roadmap.set_timeline(
timelinemode,
@@ -414,29 +416,29 @@ def sample_roadmap(
group = roadmap.add_group("Planning", fill_colour="#FFC000", font_colour="black")
task = group.add_task(
- "Vision", "2023-01-01", "2023-03-31", fill_colour="#FFC000", font_colour="black"
+ "Vision", "2024-01-01", "2024-03-31", fill_colour="#FFC000", font_colour="black"
)
task = group.add_task(
- "Goals", "2023-02-15", "2023-03-31", fill_colour="#FFC000", font_colour="black"
+ "Goals", "2024-02-15", "2024-03-31", fill_colour="#FFC000", font_colour="black"
)
task.add_parallel_task(
"Strategic Intent",
- "2023-04-01",
- "2023-05-31",
+ "2024-04-01",
+ "2024-05-31",
fill_colour="#FFC000",
font_colour="black",
)
task.add_parallel_task(
"Sales Budget",
- "2023-06-01",
- "2023-07-15",
+ "2024-06-01",
+ "2024-07-15",
fill_colour="#FFC000",
font_colour="black",
)
task.add_parallel_task(
"Release Plans",
- "2023-07-16",
- "2023-09-30",
+ "2024-07-16",
+ "2024-09-30",
fill_colour="#FFC000",
font_colour="black",
)
@@ -444,49 +446,49 @@ def sample_roadmap(
group = roadmap.add_group("Strategy", fill_colour="#ED7D31", font_colour="black")
task = group.add_task(
"Market Analysis",
- "2023-02-01",
- "2023-03-30",
+ "2024-02-01",
+ "2024-03-30",
fill_colour="#ED7D31",
font_colour="black",
)
task.add_milestone(
- "Competitor Review", "2023-03-30", fill_colour="#843C0C", font_colour="black"
+ "Competitor Review", "2024-03-30", fill_colour="#843C0C", font_colour="black"
)
task.add_parallel_task(
- "SWOT", "2023-04-01", "2023-04-30", fill_colour="#ED7D31", font_colour="black"
+ "SWOT", "2024-04-01", "2024-04-30", fill_colour="#ED7D31", font_colour="black"
)
task = group.add_task(
"Business Model",
- "2023-04-01",
- "2023-05-31",
+ "2024-04-01",
+ "2024-05-31",
fill_colour="#ED7D31",
font_colour="black",
)
task.add_milestone(
- "Price List (Draft)", "2023-06-01", fill_colour="#843C0C", font_colour="black"
+ "Price List (Draft)", "2024-06-01", fill_colour="#843C0C", font_colour="black"
)
parallel_task = task.add_parallel_task(
"Price Reseach",
- "2023-06-01",
- "2023-08-05",
+ "2024-06-01",
+ "2024-08-05",
fill_colour="#ED7D31",
font_colour="black",
)
parallel_task.add_milestone(
- "Price List (Final)", "2023-07-28", fill_colour="#843C0C", font_colour="black"
+ "Price List (Final)", "2024-07-28", fill_colour="#843C0C", font_colour="black"
)
group.add_task(
"Objectives",
- "2023-06-20",
- "2023-09-10",
+ "2024-06-20",
+ "2024-09-10",
fill_colour="#ED7D31",
font_colour="black",
)
group.add_task(
"Sales Trends Analysis",
- "2023-08-15",
- "2023-10-10",
+ "2024-08-15",
+ "2024-10-10",
fill_colour="#ED7D31",
font_colour="black",
)
@@ -496,46 +498,46 @@ def sample_roadmap(
)
task = group.add_task(
"Product Roadmap",
- "2023-02-15",
- "2023-03-31",
+ "2024-02-15",
+ "2024-03-31",
fill_colour="#70AD47",
font_colour="black",
)
parallel_task = task.add_parallel_task(
"Development",
- "2023-04-01",
- "2023-08-30",
+ "2024-04-01",
+ "2024-08-30",
fill_colour="#70AD47",
font_colour="black",
)
parallel_task.add_milestone(
- "Alpha May 20", "2023-05-20", fill_colour="#385723", font_colour="black"
+ "Alpha May 20", "2024-05-20", fill_colour="#385723", font_colour="black"
)
parallel_task.add_milestone(
- "Private Beta Jul 02", "2023-07-02", fill_colour="#385723", font_colour="black"
+ "Private Beta Jul 02", "2024-07-02", fill_colour="#385723", font_colour="black"
)
parallel_task.add_milestone(
- "Public Beta Aug 15", "2023-08-15", fill_colour="#385723", font_colour="black"
+ "Public Beta Aug 15", "2024-08-15", fill_colour="#385723", font_colour="black"
)
parallel_task = task.add_parallel_task(
"Release Candidate",
- "2023-09-01",
- "2023-10-15",
+ "2024-09-01",
+ "2024-10-15",
fill_colour="#70AD47",
font_colour="black",
)
parallel_task = task.add_parallel_task(
"Release To Public",
- "2023-10-16",
- "2023-12-31",
+ "2024-10-16",
+ "2024-12-31",
fill_colour="#70AD47",
font_colour="black",
)
parallel_task.add_milestone(
- "Go Live Dec 20", "2023-12-20", fill_colour="#385723", font_colour="black"
+ "Go Live Dec 20", "2024-12-20", fill_colour="#385723", font_colour="black"
)
group = roadmap.add_group(
@@ -545,22 +547,22 @@ def sample_roadmap(
)
task = group.add_task(
"BI Development",
- "2023-04-15",
- "2023-12-31",
+ "2024-04-15",
+ "2024-12-31",
fill_colour="#4472C4",
font_colour="black",
)
task.add_milestone(
- "Service Dashboard", "2023-05-15", fill_colour="#162641", font_colour="black"
+ "Service Dashboard", "2024-05-15", fill_colour="#162641", font_colour="black"
)
task.add_milestone(
- "Real-Time Analytics", "2023-08-01", fill_colour="#162641", font_colour="black"
+ "Real-Time Analytics", "2024-08-01", fill_colour="#162641", font_colour="black"
)
task.add_milestone(
- "Sales Dashboard", "2023-12-15", fill_colour="#162641", font_colour="black"
+ "Sales Dashboard", "2024-12-15", fill_colour="#162641", font_colour="black"
)
roadmap.set_footer("Generated by Roadmapper")
@@ -574,7 +576,7 @@ def sample_roadmap(
def colour_theme_roadmap(
width: int = 1200,
timelinemode: TimelineMode = TimelineMode.MONTHLY,
- start_date: str = "2022-12-01",
+ start_date: str = "2023-12-01",
number_of_items: int = 12,
show_generic_dates: bool = False,
file_name: str = "colour_theme_roadmap.png",
@@ -588,7 +590,7 @@ def colour_theme_roadmap(
roadmap = Roadmap(
width, 1000, auto_height=True, colour_theme=colour_theme, show_marker=True
)
- roadmap.set_title("SAMPLE ROADMAP 2022/2023")
+ roadmap.set_title("SAMPLE ROADMAP 2023/2024")
roadmap.set_subtitle("GodZone Corporation")
roadmap.set_timeline(
timelinemode,
@@ -598,17 +600,17 @@ def colour_theme_roadmap(
)
group = roadmap.add_group("Core Product Work Stream", text_alignment="left")
- task = group.add_task("Base Functionality", "2022-11-01", "2023-10-31")
- task.add_milestone("v.1.0", "2023-02-15")
- task.add_milestone("v.1.1", "2023-08-01")
- parellel_task = task.add_parallel_task("Enhancements", "2023-11-15", "2024-03-31")
+ task = group.add_task("Base Functionality", "2023-11-01", "2024-10-31")
+ task.add_milestone("v.1.0", "2024-02-15")
+ task.add_milestone("v.1.1", "2024-08-01")
+ parellel_task = task.add_parallel_task("Enhancements", "2024-11-15", "2024-03-31")
parellel_task.add_milestone("v.2.0", "2024-03-30")
- task = group.add_task("Showcase #1", "2023-03-01", "2023-05-07")
- task.add_parallel_task("Showcase #2", "2023-06-01", "2023-08-07")
+ task = group.add_task("Showcase #1", "2024-03-01", "2024-05-07")
+ task.add_parallel_task("Showcase #2", "2024-06-01", "2024-08-07")
group = roadmap.add_group("Mobility Work Stream", text_alignment="left")
- group.add_task("Mobile App Development", "2023-02-01", "2024-12-07")
+ group.add_task("Mobile App Development", "2024-02-01", "2024-12-07")
roadmap.set_footer("Generated by Roadmapper")
roadmap.draw()
@@ -622,7 +624,7 @@ def custom_colour_roadmap(
width: int = 1200,
height: int = 1000,
timelinemode: TimelineMode = TimelineMode.MONTHLY,
- start_date: str = "2022-11-01",
+ start_date: str = "2023-11-01",
number_of_items: int = 24,
show_marker: bool = False,
show_generic_dates: bool = False,
@@ -650,17 +652,17 @@ def custom_colour_roadmap(
)
group = roadmap.add_group("Core Product Work Stream")
- task = group.add_task("Base Functionality", "2022-11-01", "2023-10-31")
- task.add_milestone("v.1.0", "2023-02-15")
- task.add_milestone("v.1.1", "2023-08-01")
- parellel_task = task.add_parallel_task("Enhancements", "2023-11-15", "2024-03-31")
+ task = group.add_task("Base Functionality", "2023-11-01", "2024-10-31")
+ task.add_milestone("v.1.0", "2024-02-15")
+ task.add_milestone("v.1.1", "2024-08-01")
+ parellel_task = task.add_parallel_task("Enhancements", "2024-11-15", "2024-03-31")
parellel_task.add_milestone("v.2.0", "2024-03-30")
- task = group.add_task("Showcase #1", "2023-03-01", "2023-05-07")
- task.add_parallel_task("Showcase #2", "2023-06-01", "2023-08-07")
+ task = group.add_task("Showcase #1", "2024-03-01", "2024-05-07")
+ task.add_parallel_task("Showcase #2", "2024-06-01", "2024-08-07")
group = roadmap.add_group("Mobility Work Stream")
- group.add_task("Mobile App Development", "2023-02-01", "2024-12-07")
+ group.add_task("Mobile App Development", "2024-02-01", "2024-12-07")
roadmap.set_footer("Generated by Roadmapper")
roadmap.draw()
@@ -717,9 +719,9 @@ def home_roadmap():
)
group = my_roadmap.add_group("Development")
- group.add_task("Activity 1", "2022-12-01", "2023-02-10")
- group.add_task("Activity 2", "2023-01-11", "2023-03-20")
- group.add_task("Activity 3", "2023-01-21", "2023-06-30")
+ group.add_task("Activity 1", "2022-12-01", "2024-02-10")
+ group.add_task("Activity 2", "2024-01-11", "2024-03-20")
+ group.add_task("Activity 3", "2024-01-21", "2024-06-30")
my_roadmap.set_footer("Generated by Roadmapper")
my_roadmap.draw()
@@ -739,7 +741,7 @@ def readme_roadmap():
roadmap = Roadmap(1200, 400, colour_theme="BLUEMOUNTAIN")
roadmap.set_title("My Demo Roadmap")
roadmap.set_subtitle("Matariki Technologies Ltd")
- roadmap.set_timeline(TimelineMode.MONTHLY, start="2023-01-01", number_of_items=12)
+ roadmap.set_timeline(TimelineMode.MONTHLY, start="2024-01-01", number_of_items=12)
roadmap.add_logo(
"../../images/logo/matariki-tech-logo.png",
position="top-right",
@@ -749,15 +751,15 @@ def readme_roadmap():
group = roadmap.add_group("Core Product Work Stream")
- task = group.add_task("Base Functionality", "2023-01-01", "2023-10-31")
- task.add_milestone("v.1.0", "2023-02-15")
- task.add_milestone("v.1.1", "2023-08-01")
+ task = group.add_task("Base Functionality", "2024-01-01", "2024-10-31")
+ task.add_milestone("v.1.0", "2024-02-15")
+ task.add_milestone("v.1.1", "2024-08-01")
- parellel_task = task.add_parallel_task("Enhancements", "2023-11-15", "2024-03-31")
+ parellel_task = task.add_parallel_task("Enhancements", "2024-11-15", "2024-03-31")
parellel_task.add_milestone("v.2.0", "2024-03-30")
- task = group.add_task("Showcase #1", "2023-03-01", "2023-05-07")
- task.add_parallel_task("Showcase #2", "2023-06-01", "2023-08-07")
+ task = group.add_task("Showcase #1", "2024-03-01", "2024-05-07")
+ task.add_parallel_task("Showcase #2", "2024-06-01", "2024-08-07")
roadmap.set_footer("Generated by Roadmapper")
roadmap.draw()
@@ -773,18 +775,18 @@ def color_theme_roadmap(filename: str, colour_theme: str):
roadmap = Roadmap(600, 500, colour_theme=colour_theme, show_marker=True)
roadmap.set_title("My Demo Roadmap")
- roadmap.set_timeline(TimelineMode.QUARTERLY, start="2023-07-01", number_of_items=4)
+ roadmap.set_timeline(TimelineMode.QUARTERLY, start="2024-07-01", number_of_items=4)
roadmap.set_footer("Generated by Roadmapper")
group = roadmap.add_group("Workstream 1")
- task = group.add_task("Task 1-A", "2023-07-01", "2023-10-30")
- task.add_parallel_task("Task 2-B", "2023-11-15", "2024-02-28")
- group.add_task("Task 3-C", "2023-10-01", "2023-12-31")
+ task = group.add_task("Task 1-A", "2024-07-01", "2024-10-30")
+ task.add_parallel_task("Task 2-B", "2024-11-15", "2024-02-28")
+ group.add_task("Task 3-C", "2024-10-01", "2024-12-31")
group = roadmap.add_group("Workstream 2")
- group.add_task("Task 2-A", "2023-10-01", "2023-12-30")
- group.add_task("Task 2-B", "2023-11-01", "2024-01-30")
- group.add_task("Task 2-C", "2023-12-01", "2024-02-28")
+ group.add_task("Task 2-A", "2024-10-01", "2024-12-30")
+ group.add_task("Task 2-B", "2024-11-01", "2024-01-30")
+ group.add_task("Task 2-C", "2024-12-01", "2024-02-28")
roadmap.draw()
roadmap.save(filename)
@@ -798,36 +800,36 @@ def en_NZ_roadmap(filename: str, colour_theme: str, locale_name: str):
os.remove(output_file)
roadmap = Roadmap(800, 700, colour_theme=colour_theme, show_marker=True)
- roadmap.set_title("Strategy Roadmap 2023")
+ roadmap.set_title("Strategy Roadmap 2024")
roadmap.set_subtitle("Matariki Technologies Ltd")
roadmap.set_timeline(
TimelineMode.QUARTERLY,
- start="2023-01-01",
+ start="2024-01-01",
number_of_items=4,
timeline_locale=locale_name,
)
roadmap.set_footer("Generated by Roadmapper")
group = roadmap.add_group("People Stream")
- task = group.add_task("Develop Inclusion Strategy", "2023-01-01", "2023-04-30")
+ task = group.add_task("Develop Inclusion Strategy", "2024-01-01", "2024-04-30")
task.add_parallel_task(
- "Promote diversity, equity, and inclusion", "2023-05-01", "2023-12-30"
+ "Promote diversity, equity, and inclusion", "2024-05-01", "2024-12-30"
)
- group.add_task("Implement a sustainability programme", "2023-03-01", "2023-11-30")
+ group.add_task("Implement a sustainability programme", "2024-03-01", "2024-11-30")
group = roadmap.add_group("Process Stream")
group.add_task(
- "Implement Business Improvement Programme", "2023-02-01", "2023-11-30"
+ "Implement Business Improvement Programme", "2024-02-01", "2024-11-30"
)
- task = group.add_task("Automate processes", "2023-07-01", "2023-12-30")
- task.add_milestone("30% Automated ", "2023-8-01")
- task.add_milestone("60% Automated ", "2023-12-01")
+ task = group.add_task("Automate processes", "2024-07-01", "2024-12-30")
+ task.add_milestone("30% Automated ", "2024-8-01")
+ task.add_milestone("60% Automated ", "2024-12-01")
group = roadmap.add_group("Tool Stream")
- group.add_task("Implement strategy", "2023-01-01", "2023-04-30")
- group.add_task("Tools Selection", "2023-02-01", "2023-08-30")
- task = group.add_task("Centralized Tool Administration", "2023-04-01", "2023-11-30")
- task.add_milestone("Admin Centralised", "2023-12-01")
+ group.add_task("Implement strategy", "2024-01-01", "2024-04-30")
+ group.add_task("Tools Selection", "2024-02-01", "2024-08-30")
+ task = group.add_task("Centralized Tool Administration", "2024-04-01", "2024-11-30")
+ task.add_milestone("Admin Centralised", "2024-12-01")
roadmap.draw()
roadmap.save(filename)
@@ -841,32 +843,32 @@ def zh_TW_with_locale_roadmap(filename: str, colour_theme: str, locale_name: str
os.remove(output_file)
roadmap = Roadmap(800, 700, colour_theme=colour_theme, show_marker=True)
- roadmap.set_title("戰略路線圖 2023")
+ roadmap.set_title("戰略路線圖 2024")
roadmap.set_subtitle("瑪塔里奇太陽科技有限公司")
roadmap.set_timeline(
TimelineMode.QUARTERLY,
- start="2023-01-01",
+ start="2024-01-01",
number_of_items=4,
timeline_locale=locale_name,
)
roadmap.set_footer("由 Roadmapper 生成")
group = roadmap.add_group("人員流程")
- task = group.add_task("制定包容戰略", "2023-01-01", "2023-04-30")
- task.add_parallel_task("促進多樣性、公平性和包容性", "2023-05-01", "2023-12-30")
- group.add_task("實施可持續發展計劃", "2023-03-01", "2023-11-30")
+ task = group.add_task("制定包容戰略", "2024-01-01", "2024-04-30")
+ task.add_parallel_task("促進多樣性、公平性和包容性", "2024-05-01", "2024-12-30")
+ group.add_task("實施可持續發展計劃", "2024-03-01", "2024-11-30")
group = roadmap.add_group("工作流程")
- group.add_task("實施業務改進計劃", "2023-02-01", "2023-11-30")
- task = group.add_task("自動化流程", "2023-07-01", "2023-12-30")
- task.add_milestone("30%自動化 ", "2023-8-01")
- task.add_milestone("60%自動化 ", "2023-12-01")
+ group.add_task("實施業務改進計劃", "2024-02-01", "2024-11-30")
+ task = group.add_task("自動化流程", "2024-07-01", "2024-12-30")
+ task.add_milestone("30%自動化 ", "2024-8-01")
+ task.add_milestone("60%自動化 ", "2024-12-01")
group = roadmap.add_group("工具流程")
- group.add_task("實施工具選擇策略", "2023-01-01", "2023-04-30")
- group.add_task("工具選擇", "2023-02-01", "2023-08-30")
- task = group.add_task("集中工具管理", "2023-04-01", "2023-11-30")
- task.add_milestone("系統集中完成", "2023-12-01")
+ group.add_task("實施工具選擇策略", "2024-01-01", "2024-04-30")
+ group.add_task("工具選擇", "2024-02-01", "2024-08-30")
+ task = group.add_task("集中工具管理", "2024-04-01", "2024-11-30")
+ task.add_milestone("系統集中完成", "2024-12-01")
roadmap.draw()
roadmap.save(filename)
@@ -880,27 +882,27 @@ def zh_TW_roadmap(filename: str, colour_theme: str):
os.remove(output_file)
roadmap = Roadmap(800, 700, colour_theme=colour_theme, show_marker=True)
- roadmap.set_title("戰略路線圖 2023")
+ roadmap.set_title("戰略路線圖 2024")
roadmap.set_subtitle("瑪塔里奇太陽科技有限公司")
- roadmap.set_timeline(TimelineMode.QUARTERLY, start="2023-01-01", number_of_items=4)
+ roadmap.set_timeline(TimelineMode.QUARTERLY, start="2024-01-01", number_of_items=4)
roadmap.set_footer("由 Roadmapper 生成")
group = roadmap.add_group("人員流程")
- task = group.add_task("制定包容戰略", "2023-01-01", "2023-04-30")
- task.add_parallel_task("促進多樣性、公平性和包容性", "2023-05-01", "2023-12-30")
- group.add_task("實施可持續發展計劃", "2023-03-01", "2023-11-30")
+ task = group.add_task("制定包容戰略", "2024-01-01", "2024-04-30")
+ task.add_parallel_task("促進多樣性、公平性和包容性", "2024-05-01", "2024-12-30")
+ group.add_task("實施可持續發展計劃", "2024-03-01", "2024-11-30")
group = roadmap.add_group("工作流程")
- group.add_task("實施業務改進計劃", "2023-02-01", "2023-11-30")
- task = group.add_task("自動化流程", "2023-07-01", "2023-12-30")
- task.add_milestone("30%自動化 ", "2023-8-01")
- task.add_milestone("60%自動化 ", "2023-12-01")
+ group.add_task("實施業務改進計劃", "2024-02-01", "2024-11-30")
+ task = group.add_task("自動化流程", "2024-07-01", "2024-12-30")
+ task.add_milestone("30%自動化 ", "2024-8-01")
+ task.add_milestone("60%自動化 ", "2024-12-01")
group = roadmap.add_group("工具流程")
- group.add_task("實施工具選擇策略", "2023-01-01", "2023-04-30")
- group.add_task("工具選擇", "2023-02-01", "2023-08-30")
- task = group.add_task("集中工具管理", "2023-04-01", "2023-11-30")
- task.add_milestone("系統集中完成", "2023-12-01")
+ group.add_task("實施工具選擇策略", "2024-01-01", "2024-04-30")
+ group.add_task("工具選擇", "2024-02-01", "2024-08-30")
+ task = group.add_task("集中工具管理", "2024-04-01", "2024-11-30")
+ task.add_milestone("系統集中完成", "2024-12-01")
roadmap.draw()
roadmap.save(filename)
@@ -914,32 +916,32 @@ def ja_JP_roadmap(filename: str, colour_theme: str, locale_name: str):
os.remove(output_file)
roadmap = Roadmap(800, 700, colour_theme=colour_theme, show_marker=True)
- roadmap.set_title("戦略的ロードマップ 2023")
+ roadmap.set_title("戦略的ロードマップ 2024")
roadmap.set_subtitle("マタリッチサンテクノロジー株式会社")
roadmap.set_timeline(
TimelineMode.QUARTERLY,
- start="2023-01-01",
+ start="2024-01-01",
number_of_items=4,
timeline_locale=locale_name,
)
roadmap.set_footer("ロードマッパーによって生成")
group = roadmap.add_group("人事プロセス")
- task = group.add_task("インクルージョン戦略を策定する", "2023-01-01", "2023-04-30")
- task.add_parallel_task("多様性、公平性、包括性の促進", "2023-05-01", "2023-12-30")
- group.add_task("持続可能な開発計画の実施", "2023-03-01", "2023-11-30")
+ task = group.add_task("インクルージョン戦略を策定する", "2024-01-01", "2024-04-30")
+ task.add_parallel_task("多様性、公平性、包括性の促進", "2024-05-01", "2024-12-30")
+ group.add_task("持続可能な開発計画の実施", "2024-03-01", "2024-11-30")
group = roadmap.add_group("作業過程")
- group.add_task("業務改善計画の実施", "2023-02-01", "2023-11-30")
- task = group.add_task("自動化されたプロセス", "2023-07-01", "2023-12-30")
- task.add_milestone("30%自動化", "2023-8-01")
- task.add_milestone("60%自動化", "2023-12-01")
+ group.add_task("業務改善計画の実施", "2024-02-01", "2024-11-30")
+ task = group.add_task("自動化されたプロセス", "2024-07-01", "2024-12-30")
+ task.add_milestone("30%自動化", "2024-8-01")
+ task.add_milestone("60%自動化", "2024-12-01")
group = roadmap.add_group("ツールフロー")
- group.add_task("ツール選択戦略を実装する", "2023-01-01", "2023-04-30")
- group.add_task("ツールの選択", "2023-02-01", "2023-08-30")
- task = group.add_task("集中ツール管理", "2023-04-01", "2023-11-30")
- task.add_milestone("システムは集中型", "2023-12-01")
+ group.add_task("ツール選択戦略を実装する", "2024-01-01", "2024-04-30")
+ group.add_task("ツールの選択", "2024-02-01", "2024-08-30")
+ task = group.add_task("集中ツール管理", "2024-04-01", "2024-11-30")
+ task.add_milestone("システムは集中型", "2024-12-01")
roadmap.draw()
roadmap.save(filename)
@@ -953,32 +955,32 @@ def ko_KR_roadmap(filename: str, colour_theme: str, locale_name: str):
os.remove(output_file)
roadmap = Roadmap(800, 700, colour_theme=colour_theme, show_marker=True)
- roadmap.set_title("전략 로드맵 2023")
+ roadmap.set_title("전략 로드맵 2024")
roadmap.set_subtitle("마타리키 테크놀로지스")
roadmap.set_timeline(
TimelineMode.QUARTERLY,
- start="2023-01-01",
+ start="2024-01-01",
number_of_items=4,
timeline_locale=locale_name,
)
roadmap.set_footer("로드매퍼에서 생성")
group = roadmap.add_group("인사 프로세스")
- task = group.add_task("포함 전략을 수립", "2023-01-01", "2023-04-30")
- task.add_parallel_task("다양성, 공정성, 포괄성 촉진", "2023-05-01", "2023-12-30")
- group.add_task("지속 가능한 개발 계획 실시", "2023-03-01", "2023-11-30")
+ task = group.add_task("포함 전략을 수립", "2024-01-01", "2024-04-30")
+ task.add_parallel_task("다양성, 공정성, 포괄성 촉진", "2024-05-01", "2024-12-30")
+ group.add_task("지속 가능한 개발 계획 실시", "2024-03-01", "2024-11-30")
group = roadmap.add_group("작업 과정")
- group.add_task("업무 개선 계획 실시", "2023-02-01", "2023-11-30")
- task = group.add_task("자동화된 프로세스", "2023-07-01", "2023-12-30")
- task.add_milestone("30% 자동화", "2023-8-01")
- task.add_milestone("60% 자동화", "2023-12-01")
+ group.add_task("업무 개선 계획 실시", "2024-02-01", "2024-11-30")
+ task = group.add_task("자동화된 프로세스", "2024-07-01", "2024-12-30")
+ task.add_milestone("30% 자동화", "2024-8-01")
+ task.add_milestone("60% 자동화", "2024-12-01")
group = roadmap.add_group("공구 흐름")
- group.add_task("도구 선택 전략 구현", "2023-01-01", "2023-04-30")
- group.add_task("도구 선택", "2023-02-01", "2023-08-30")
- task = group.add_task("중앙 집중식 도구 관리", "2023-04-01", "2023-11-30")
- task.add_milestone("시스템은 중앙 집중식", "2023-12-01")
+ group.add_task("도구 선택 전략 구현", "2024-01-01", "2024-04-30")
+ group.add_task("도구 선택", "2024-02-01", "2024-08-30")
+ task = group.add_task("중앙 집중식 도구 관리", "2024-04-01", "2024-11-30")
+ task.add_milestone("시스템은 중앙 집중식", "2024-12-01")
roadmap.draw()
roadmap.save(filename)
@@ -997,7 +999,7 @@ def test_sample_case1():
colour_theme="ORANGEPEEL",
timelinemode=TimelineMode.WEEKLY,
number_of_items=52,
- start_date="2023-01-01",
+ start_date="2024-01-01",
)
@@ -1009,7 +1011,7 @@ def test_sample_case2():
colour_theme="ORANGEPEEL",
timelinemode=TimelineMode.MONTHLY,
number_of_items=12,
- start_date="2023-01-01",
+ start_date="2024-01-01",
)
@@ -1021,7 +1023,7 @@ def test_sample_case3():
colour_theme="ORANGEPEEL",
timelinemode=TimelineMode.QUARTERLY,
number_of_items=4,
- start_date="2023-01-01",
+ start_date="2024-01-01",
)
@@ -1033,7 +1035,7 @@ def test_sample_unicase1():
# colour_theme="ORANGEPEEL",
timelinemode=TimelineMode.MONTHLY,
number_of_items=12,
- start_date="2023-01-01",
+ start_date="2024-01-01",
)
assert True
@@ -1050,14 +1052,14 @@ def test_draw_anatomy():
roadmap = Roadmap(1200, 380, colour_theme="BLUEMOUNTAIN", show_marker=True)
roadmap.set_title("Product Roadmap")
roadmap.set_subtitle("Matariki Tech Ltd")
- roadmap.set_timeline(TimelineMode.MONTHLY, start="2023-01-01", number_of_items=9)
+ roadmap.set_timeline(TimelineMode.MONTHLY, start="2024-01-01", number_of_items=9)
roadmap.set_footer("Generated by Roadmapper")
group = roadmap.add_group("Workstream 1")
- task = group.add_task("Task 1-A", "2023-01-01", "2023-05-15")
- task.add_parallel_task("Task 2-B", "2023-05-16", "2023-08-30")
- task = group.add_task("Task 3-C", "2023-04-01", "2023-06-30")
- task.add_milestone("Milestone 1", "2023-06-30")
+ task = group.add_task("Task 1-A", "2024-01-01", "2024-05-15")
+ task.add_parallel_task("Task 2-B", "2024-05-16", "2024-08-30")
+ task = group.add_task("Task 3-C", "2024-04-01", "2024-06-30")
+ task.add_milestone("Milestone 1", "2024-06-30")
roadmap.draw()
@@ -1076,18 +1078,18 @@ def test_draw_banner_theme():
roadmap = Roadmap(600, 380, colour_theme="BLUEMOUNTAIN", show_marker=True)
roadmap.set_title("My Demo Roadmap")
- roadmap.set_timeline(TimelineMode.QUARTERLY, start="2023-01-01", number_of_items=4)
+ roadmap.set_timeline(TimelineMode.QUARTERLY, start="2024-01-01", number_of_items=4)
roadmap.set_footer("Generated by Roadmapper")
group = roadmap.add_group("Workstream 1")
- task = group.add_task("Task 1-A", "2023-01-01", "2023-04-30")
- task.add_parallel_task("Task 2-B", "2023-05-15", "2023-08-30")
- group.add_task("Task 3-C", "2023-04-01", "2023-06-30")
+ task = group.add_task("Task 1-A", "2024-01-01", "2024-04-30")
+ task.add_parallel_task("Task 2-B", "2024-05-15", "2024-08-30")
+ group.add_task("Task 3-C", "2024-04-01", "2024-06-30")
group = roadmap.add_group("Workstream 2")
- group.add_task("Task 2-A", "2023-04-01", "2023-06-30")
- group.add_task("Task 2-B", "2023-05-01", "2023-07-30")
- group.add_task("Task 2-C", "2023-06-01", "2023-08-30")
+ group.add_task("Task 2-A", "2024-04-01", "2024-06-30")
+ group.add_task("Task 2-B", "2024-05-01", "2024-07-30")
+ group.add_task("Task 2-C", "2024-06-01", "2024-08-30")
roadmap.draw()
roadmap.save(output_file)
@@ -1107,7 +1109,7 @@ def test_draw_banner():
roadmap.set_title("My Demo Roadmap")
roadmap.set_timeline(
TimelineMode.QUARTERLY,
- start="2023-01-01",
+ start="2024-01-01",
number_of_items=3,
year_fill_colour="#7CC1AC",
year_font_colour="black",
@@ -1120,22 +1122,22 @@ def test_draw_banner():
)
task = group.add_task(
"Task 1-A",
- "2023-01-01",
- "2023-04-30",
+ "2024-01-01",
+ "2024-04-30",
font_colour="black",
fill_colour="#D7B3BD",
)
task.add_parallel_task(
"Task 2-B",
- "2023-05-15",
- "2023-08-30",
+ "2024-05-15",
+ "2024-08-30",
font_colour="black",
fill_colour="#D7B3BD",
)
group.add_task(
"Task 3-C",
- "2023-04-01",
- "2023-06-30",
+ "2024-04-01",
+ "2024-06-30",
font_colour="black",
fill_colour="#D7B3BD",
)
@@ -1145,22 +1147,22 @@ def test_draw_banner():
)
group.add_task(
"Task 2-A",
- "2023-04-01",
- "2023-06-30",
+ "2024-04-01",
+ "2024-06-30",
font_colour="black",
fill_colour="#EFC5A7",
)
group.add_task(
"Task 2-B",
- "2023-05-01",
- "2023-07-30",
+ "2024-05-01",
+ "2024-07-30",
font_colour="black",
fill_colour="#EFC5A7",
)
group.add_task(
"Task 2-C",
- "2023-06-01",
- "2023-08-30",
+ "2024-06-01",
+ "2024-08-30",
font_colour="black",
fill_colour="#EFC5A7",
)
@@ -1177,7 +1179,7 @@ def test_gallery_images():
file_name="../../images/gallery/gallery-sample-01.png",
timelinemode=TimelineMode.MONTHLY,
number_of_items=12,
- start_date="2023-01-01",
+ start_date="2024-01-01",
)
### Colour Theme Roadmap ###
@@ -1187,7 +1189,7 @@ def test_gallery_images():
# colour_theme="ORANGEPEEL",
timelinemode=TimelineMode.MONTHLY,
number_of_items=12,
- start_date="2023-01-01",
+ start_date="2024-01-01",
)
colour_theme_roadmap(
@@ -1195,7 +1197,7 @@ def test_gallery_images():
colour_theme="ORANGEPEEL",
timelinemode=TimelineMode.MONTHLY,
number_of_items=12,
- start_date="2023-01-01",
+ start_date="2024-01-01",
)
colour_theme_roadmap(
@@ -1203,7 +1205,7 @@ def test_gallery_images():
colour_theme="BLUEMOUNTAIN",
timelinemode=TimelineMode.MONTHLY,
number_of_items=12,
- start_date="2023-01-01",
+ start_date="2024-01-01",
)
colour_theme_roadmap(
@@ -1211,7 +1213,7 @@ def test_gallery_images():
colour_theme="GREENTURTLE",
timelinemode=TimelineMode.MONTHLY,
number_of_items=12,
- start_date="2023-01-01",
+ start_date="2024-01-01",
)
colour_theme_roadmap(
@@ -1219,7 +1221,7 @@ def test_gallery_images():
colour_theme="GREYWOOF",
timelinemode=TimelineMode.MONTHLY,
number_of_items=12,
- start_date="2023-01-01",
+ start_date="2024-01-01",
)
### Marker Roadmap ###
@@ -1228,7 +1230,7 @@ def test_gallery_images():
file_name="../../images/gallery/gallery-marker-monthly.png",
timelinemode=TimelineMode.MONTHLY,
number_of_items=12,
- start_date="2022-11-01",
+ start_date="2023-11-01",
show_marker=True,
show_generic_dates=False,
)
@@ -1240,7 +1242,7 @@ def test_gallery_images():
colour_theme="DEFAULT",
timelinemode=TimelineMode.WEEKLY,
number_of_items=52,
- start_date="2023-01-01",
+ start_date="2024-01-01",
show_generic_dates=False,
)
@@ -1251,7 +1253,7 @@ def test_gallery_images():
colour_theme="DEFAULT",
timelinemode=TimelineMode.QUARTERLY,
number_of_items=6,
- start_date="2023-01-01",
+ start_date="2024-01-01",
show_generic_dates=False,
)
@@ -1262,7 +1264,7 @@ def test_gallery_images():
colour_theme="DEFAULT",
timelinemode=TimelineMode.HALF_YEARLY,
number_of_items=4,
- start_date="2023-01-01",
+ start_date="2024-01-01",
show_generic_dates=False,
)
@@ -1284,7 +1286,7 @@ def test_gallery_images():
colour_theme="DEFAULT",
timelinemode=TimelineMode.MONTHLY,
number_of_items=12,
- start_date="2023-01-01",
+ start_date="2024-01-01",
show_generic_dates=True,
)
@@ -1301,22 +1303,22 @@ def test_with_context_manager():
1200, 500, show_marker=False, auto_height=True, colour_theme="ORANGEPEEL"
) as my_roadmap:
my_roadmap.set_title("Context Manager Test Roadmap")
- my_roadmap.set_timeline(TimelineMode.MONTHLY, start="2023-01-01")
+ my_roadmap.set_timeline(TimelineMode.MONTHLY, start="2024-01-01")
with my_roadmap.add_group("Workstream 1") as group1:
with group1.add_task(
"Task 1-A",
- "2023-01-01",
- "2023-04-30",
+ "2024-01-01",
+ "2024-04-30",
) as task1:
with task1.add_parallel_task(
"Task 2-B",
- "2023-05-15",
- "2023-08-30",
+ "2024-05-15",
+ "2024-08-30",
) as parallel_task1:
- parallel_task1.add_milestone("Milestone 2", "2023-08-10")
+ parallel_task1.add_milestone("Milestone 2", "2024-07-10")
task1.add_milestone(
"Milestone 1",
- "2023-04-01",
+ "2024-04-01",
)
my_roadmap.draw()
my_roadmap.save("../../images/with_context_manager.png")
@@ -1328,22 +1330,22 @@ def test_black_blackground():
) as my_roadmap:
my_roadmap.set_background_colour("black")
my_roadmap.set_title("Black Background Test Roadmap")
- my_roadmap.set_timeline(TimelineMode.MONTHLY, start="2023-01-01")
+ my_roadmap.set_timeline(TimelineMode.MONTHLY, start="2024-01-01")
with my_roadmap.add_group("Workstream 1") as group1:
with group1.add_task(
"Task 1-A",
- "2023-01-01",
- "2023-04-30",
+ "2024-01-01",
+ "2024-04-30",
) as task1:
with task1.add_parallel_task(
"Task 2-B",
- "2023-05-15",
- "2023-08-30",
+ "2024-05-15",
+ "2024-08-30",
) as parallel_task1:
- parallel_task1.add_milestone("Milestone 2", "2023-08-10")
+ parallel_task1.add_milestone("Milestone 2", "2024-08-10")
task1.add_milestone(
"Milestone 1",
- "2023-04-01",
+ "2024-04-01",
)
my_roadmap.draw()
my_roadmap.save("../../images/black_roadmap.png")
@@ -1355,22 +1357,22 @@ def test_transparent_blackground():
) as my_roadmap:
my_roadmap.set_background_colour("transparent")
my_roadmap.set_title("Transparent Background Test Roadmap")
- my_roadmap.set_timeline(TimelineMode.MONTHLY, start="2023-01-01")
+ my_roadmap.set_timeline(TimelineMode.MONTHLY, start="2024-01-01")
with my_roadmap.add_group("Workstream 1") as group1:
with group1.add_task(
"Task 1-A",
- "2023-01-01",
- "2023-04-30",
+ "2024-01-01",
+ "2024-04-30",
) as task1:
with task1.add_parallel_task(
"Task 2-B",
- "2023-05-15",
- "2023-08-30",
+ "2024-05-15",
+ "2024-08-30",
) as parallel_task1:
- parallel_task1.add_milestone("Milestone 2", "2023-08-10")
+ parallel_task1.add_milestone("Milestone 2", "2024-08-10")
task1.add_milestone(
"Milestone 1",
- "2023-04-01",
+ "2024-04-01",
)
my_roadmap.draw()
my_roadmap.save("../../images/transparent_roadmap.png")
diff --git a/src/tests/test_roadmapper.py b/src/tests/test_roadmapper.py
index 205f422..9a6031f 100644
--- a/src/tests/test_roadmapper.py
+++ b/src/tests/test_roadmapper.py
@@ -8,7 +8,7 @@
def colour_theme_demo(
mode: TimelineMode = TimelineMode.MONTHLY,
- start_date: str = "2022-12-01",
+ start_date: str = "2023-12-01",
number_of_items: int = 12,
show_generic_dates: bool = False,
file_name: str = "demo01.png",
@@ -18,7 +18,7 @@ def colour_theme_demo(
roadmap = Roadmap(
1200, 1000, auto_height=True, colour_theme=colour_theme, show_marker=True
)
- roadmap.set_title("SAMPLE ROADMAP 2022/2023")
+ roadmap.set_title("SAMPLE ROADMAP 2023/2024")
roadmap.set_subtitle("ABC Corporation")
roadmap.set_timeline(
mode,
@@ -29,17 +29,17 @@ def colour_theme_demo(
)
group = roadmap.add_group("Core Product Work Stream", text_alignment="left")
- task = group.add_task("Base Functionality", "2022-11-01", "2023-10-31")
- task.add_milestone("v.1.0", "2023-02-15")
- task.add_milestone("v.1.1", "2023-08-01")
- parellel_task = task.add_parallel_task("Enhancements", "2023-11-15", "2024-03-31")
- parellel_task.add_milestone("v.2.0", "2024-03-30")
+ task = group.add_task("Base Functionality", "2023-11-01", "2024-10-31")
+ task.add_milestone("v.1.0", "2024-02-15")
+ task.add_milestone("v.1.1", "2024-08-01")
+ parellel_task = task.add_parallel_task("Enhancements", "2024-11-15", "2025-03-31")
+ parellel_task.add_milestone("v.2.0", "2025-03-30")
- task = group.add_task("Showcase #1", "2023-03-01", "2023-05-07")
- task.add_parallel_task("Showcase #2", "2023-06-01", "2023-08-07")
+ task = group.add_task("Showcase #1", "2024-03-01", "2024-05-07")
+ task.add_parallel_task("Showcase #2", "2024-06-01", "2024-08-07")
group = roadmap.add_group("Mobility Work Stream", text_alignment="left")
- group.add_task("Mobile App Development", "2023-02-01", "2024-12-07")
+ group.add_task("Mobile App Development", "2024-02-01", "2025-12-07")
roadmap.set_footer("Updated on " + datetime.now().strftime("%Y-%m-%d"))
roadmap.draw()
@@ -49,7 +49,7 @@ def colour_theme_demo(
def colour_theme_demo_without_locale(
timelinemode: TimelineMode = TimelineMode.MONTHLY,
- start_date: str = "2022-12-01",
+ start_date: str = "2023-12-01",
number_of_items: int = 12,
show_generic_dates: bool = False,
file_name: str = "demo01.png",
@@ -58,7 +58,7 @@ def colour_theme_demo_without_locale(
roadmap = Roadmap(
1200, 1000, auto_height=True, colour_theme=colour_theme, show_marker=True
)
- roadmap.set_title("SAMPLE ROADMAP 2022/2023")
+ roadmap.set_title("SAMPLE ROADMAP 2023/2024")
roadmap.set_subtitle("ABC Corporation")
roadmap.set_timeline(
timelinemode,
@@ -68,17 +68,17 @@ def colour_theme_demo_without_locale(
)
group = roadmap.add_group("Core Product Work Stream", text_alignment="left")
- task = group.add_task("Base Functionality", "2022-11-01", "2023-10-31")
- task.add_milestone("v.1.0", "2023-02-15")
- task.add_milestone("v.1.1", "2023-08-01")
- parellel_task = task.add_parallel_task("Enhancements", "2023-11-15", "2024-03-31")
- parellel_task.add_milestone("v.2.0", "2024-03-30")
+ task = group.add_task("Base Functionality", "2023-11-01", "2024-10-31")
+ task.add_milestone("v.1.0", "2024-02-15")
+ task.add_milestone("v.1.1", "2024-08-01")
+ parellel_task = task.add_parallel_task("Enhancements", "2024-11-15", "2025-03-31")
+ parellel_task.add_milestone("v.2.0", "2025-03-30")
- task = group.add_task("Showcase #1", "2023-03-01", "2023-05-07")
- task.add_parallel_task("Showcase #2", "2023-06-01", "2023-08-07")
+ task = group.add_task("Showcase #1", "2024-03-01", "2024-05-07")
+ task.add_parallel_task("Showcase #2", "2024-06-01", "2024-08-07")
group = roadmap.add_group("Mobility Work Stream", text_alignment="left")
- group.add_task("Mobile App Development", "2023-02-01", "2024-12-07")
+ group.add_task("Mobile App Development", "2024-02-01", "2025-12-07")
roadmap.set_footer("Updated on " + datetime.now().strftime("%Y-%m-%d"))
roadmap.draw()
@@ -88,7 +88,7 @@ def colour_theme_demo_without_locale(
def chinese_theme_demo(
timelinemode: TimelineMode = TimelineMode.MONTHLY,
- start_date: str = "2022-12-01",
+ start_date: str = "2023-12-01",
number_of_items: int = 12,
show_generic_dates: bool = False,
show_first_day_of_week=False,
@@ -99,7 +99,7 @@ def chinese_theme_demo(
roadmap = Roadmap(
1200, 1000, auto_height=True, colour_theme=colour_theme, show_marker=True
)
- roadmap.set_title("示例路線圖 2022/2023")
+ roadmap.set_title("示例路線圖 2023/2024")
roadmap.set_subtitle("甲乙丙有限公司")
roadmap.set_timeline(
timelinemode,
@@ -111,17 +111,17 @@ def chinese_theme_demo(
)
group = roadmap.add_group("核心產品工作流程", text_alignment="left")
- task = group.add_task("基本功能", "2022-11-01", "2023-10-31")
- task.add_milestone("版本 1.0", "2023-02-15")
- task.add_milestone("版本 1.1", "2023-08-01")
- parellel_task = task.add_parallel_task("增強功能", "2023-11-15", "2024-03-31")
- parellel_task.add_milestone("版本 2.0", "2024-01-30")
+ task = group.add_task("基本功能", "2023-11-01", "2024-10-31")
+ task.add_milestone("版本 1.0", "2024-02-15")
+ task.add_milestone("版本 1.1", "2024-08-01")
+ parellel_task = task.add_parallel_task("增強功能", "2024-11-15", "2025-03-31")
+ parellel_task.add_milestone("版本 2.0", "2025-01-30")
- task = group.add_task("陳列 #1", "2023-03-01", "2023-05-07")
- task.add_parallel_task("陳列 #2", "2023-06-01", "2023-08-07")
+ task = group.add_task("陳列 #1", "2024-03-01", "2024-05-07")
+ task.add_parallel_task("陳列 #2", "2024-06-01", "2024-08-07")
group = roadmap.add_group("移動工作流程", text_alignment="left")
- group.add_task("移動應用程序開發", "2023-02-01", "2024-12-07")
+ group.add_task("移動應用程序開發", "2024-02-01", "2024-12-07")
roadmap.set_footer("更新於 " + datetime.now().strftime("%Y-%m-%d"))
roadmap.draw()
@@ -131,7 +131,7 @@ def chinese_theme_demo(
def japanese_theme_demo(
timelinemode: TimelineMode = TimelineMode.MONTHLY,
- start_date: str = "2022-12-01",
+ start_date: str = "2023-12-01",
number_of_items: int = 12,
show_generic_dates: bool = False,
show_first_day_of_week=False,
@@ -142,7 +142,7 @@ def japanese_theme_demo(
roadmap = Roadmap(
1200, 1000, auto_height=True, colour_theme=colour_theme, show_marker=True
)
- roadmap.set_title("ロードマップの例 2022/2023")
+ roadmap.set_title("ロードマップの例 2024/2025")
roadmap.set_subtitle("株式会社エー・ビー・シー")
roadmap.set_timeline(
timelinemode,
@@ -154,17 +154,17 @@ def japanese_theme_demo(
)
group = roadmap.add_group("コア製品のワークフロー", text_alignment="left")
- task = group.add_task("基本的なスキル", "2022-11-01", "2023-10-31")
- task.add_milestone("バージョン 1.0", "2023-02-15")
- task.add_milestone("バージョン 1.1", "2023-08-01")
- parellel_task = task.add_parallel_task("強化", "2023-11-15", "2024-03-31")
- parellel_task.add_milestone("バージョン 2.0", "2024-01-30")
+ task = group.add_task("基本的なスキル", "2023-11-01", "2024-10-31")
+ task.add_milestone("バージョン 1.0", "2024-02-15")
+ task.add_milestone("バージョン 1.1", "2024-08-01")
+ parellel_task = task.add_parallel_task("強化", "2024-11-15", "2025-03-31")
+ parellel_task.add_milestone("バージョン 2.0", "2025-01-30")
- task = group.add_task("ショーケース #1", "2023-03-01", "2023-05-07")
- task.add_parallel_task("ショーケース #2", "2023-06-01", "2023-08-07")
+ task = group.add_task("ショーケース #1", "2024-03-01", "2024-05-07")
+ task.add_parallel_task("ショーケース #2", "2024-06-01", "2024-08-07")
group = roadmap.add_group("モバイル ワークフロー", text_alignment="left")
- group.add_task("モバイルアプリ開発", "2023-02-01", "2024-12-07")
+ group.add_task("モバイルアプリ開発", "2024-02-01", "2025-12-07")
roadmap.set_footer("更新日 " + datetime.now().strftime("%Y-%m-%d"))
roadmap.draw()
@@ -174,7 +174,7 @@ def japanese_theme_demo(
def generic_date_test(
timelinemode: TimelineMode = TimelineMode.MONTHLY,
- start_date: str = "2022-11-01",
+ start_date: str = "2023-11-01",
number_of_items: int = 24,
show_generic_dates: bool = False,
show_first_day_of_week: bool = False,
@@ -192,17 +192,17 @@ def generic_date_test(
)
group = roadmap.add_group("Core Product Work Stream")
- task = group.add_task("Base Functionality", "2022-11-01", "2023-10-31")
- task.add_milestone("v.1.0", "2023-02-15")
- task.add_milestone("v.1.1", "2023-08-01")
- parellel_task = task.add_parallel_task("Enhancements", "2023-11-15", "2024-03-31")
- parellel_task.add_milestone("v.2.0", "2024-03-30")
+ task = group.add_task("Base Functionality", "2023-11-01", "2024-10-31")
+ task.add_milestone("v.1.0", "2024-02-15")
+ task.add_milestone("v.1.1", "2024-08-01")
+ parellel_task = task.add_parallel_task("Enhancements", "2024-11-15", "2025-03-31")
+ parellel_task.add_milestone("v.2.0", "2025-03-30")
- task = group.add_task("Showcase #1", "2023-03-01", "2023-05-07")
- task.add_parallel_task("Showcase #2", "2023-06-01", "2023-08-07")
+ task = group.add_task("Showcase #1", "2024-03-01", "2024-05-07")
+ task.add_parallel_task("Showcase #2", "2024-06-01", "2024-08-07")
group = roadmap.add_group("Mobility Work Stream")
- group.add_task("Mobile App Development", "2023-02-01", "2024-12-07")
+ group.add_task("Mobile App Development", "2024-02-01", "2025-12-07")
roadmap.set_footer("Generated by Roadmapper")
roadmap.draw()
@@ -211,7 +211,7 @@ def generic_date_test(
def parallel_task_demo(
timelinemode: TimelineMode = TimelineMode.MONTHLY,
- start_date: str = "2022-12-01",
+ start_date: str = "2023-12-01",
number_of_items: int = 14,
file_name: str = "demo01.png",
colour_theme: str = "DEFAULT",
@@ -223,7 +223,7 @@ def parallel_task_demo(
colour_theme=colour_theme,
show_marker=True,
)
- roadmap.set_title("ROADMAP EXAMPLE 2022/2023")
+ roadmap.set_title("ROADMAP EXAMPLE 2023/2024")
roadmap.set_subtitle("This is a subtitle")
roadmap.set_timeline(
timelinemode,
@@ -234,13 +234,13 @@ def parallel_task_demo(
group = roadmap.add_group("Core Product Work Stream")
- task = group.add_task("Base Functionality", "2022-11-01", "2023-01-31")
- parellel_task = task.add_parallel_task("Enhancements", "2023-02-15", "2024-03-31")
- parellel_task.add_milestone("v.2.0", "2023-04-30")
+ task = group.add_task("Base Functionality", "2023-11-01", "2024-01-31")
+ parellel_task = task.add_parallel_task("Enhancements", "2024-02-15", "2025-03-31")
+ parellel_task.add_milestone("v.2.0", "2024-04-30")
- task = group.add_task("Showcase #1", "2023-01-01", "2023-01-31")
- parellel_task = task.add_parallel_task("Showcase #2", "2023-02-02", "2023-03-15")
- parellel_task.add_milestone("v.2.0", "2023-04-15")
+ task = group.add_task("Showcase #1", "2024-01-01", "2024-01-31")
+ parellel_task = task.add_parallel_task("Showcase #2", "2024-02-02", "2024-03-15")
+ parellel_task.add_milestone("v.2.0", "2024-04-15")
# group = roadmap.add_group("Core Product Work Stream 2")
# task = group.add_task("Base Functionality", "2022-11-01", "2023-01-31")
@@ -252,7 +252,7 @@ def parallel_task_demo(
def singleton_demo(
timelinemode: TimelineMode = TimelineMode.MONTHLY,
- start_date: str = "2023-01-01",
+ start_date: str = "2024-01-01",
number_of_items: int = 2,
file_name: str = "demo01.png",
colour_theme: str = "BLUEMOUNTAIN",
@@ -276,11 +276,9 @@ def singleton_demo(
group = roadmap.add_group("Showcase Task Styles")
- group.add_task("Rectangle Style", "2023-01-15", "2023-02-15")
- group.add_task("Rounded Style", "2023-01-15", "2023-02-15", style="rounded")
- group.add_task(
- "Arrowhead Style", "2023-01-15", "2023-02-15", style="arrowhead"
- )
+ group.add_task("Rectangle Style", "2024-01-15", "2024-02-15")
+ group.add_task("Rounded Style", "2024-01-15", "2024-02-15", style="rounded")
+ group.add_task("Arrowhead Style", "2024-01-15", "2024-02-15", style="arrowhead")
# roadmap.set_footer("Author: CS Goh " + datetime.now().strftime("%Y-%m-%d"))
roadmap.draw()
@@ -289,7 +287,7 @@ def singleton_demo(
def logo_demo(
timelinemode: TimelineMode = TimelineMode.MONTHLY,
- start_date: str = "2023-01-01",
+ start_date: str = "2025-01-01",
number_of_items: int = 2,
file_name: str = "demo01.png",
colour_theme: str = "BLUEMOUNTAIN",
@@ -321,7 +319,7 @@ def logo_demo(
text = "I love Python"
# emojized_text = emojize(text)
- group.add_task(text, "2023-01-15", "2023-02-15")
+ group.add_task(text, "2024-01-15", "2024-02-15")
roadmap.set_footer("Author: CS Goh " + datetime.now().strftime("%Y-%m-%d"))
roadmap.draw()
@@ -353,7 +351,7 @@ def test_dev():
file_name=output_file,
colour_theme="../json/chinese.json",
timelinemode=TimelineMode.WEEKLY,
- start_date="2023-01-01",
+ start_date="2024-01-01",
number_of_items=14,
locale_name="../json/zh_TW_timeline_settings.json",
show_generic_dates=False,
@@ -366,7 +364,7 @@ def test_dev():
file_name=output_file,
colour_theme="../json/chinese.json",
timelinemode=TimelineMode.MONTHLY,
- start_date="2023-01-01",
+ start_date="2024-01-01",
number_of_items=14,
locale_name="../json/ja_JP_timeline_settings.json",
show_generic_dates=False,
@@ -376,12 +374,11 @@ def test_dev():
assert os.path.exists(output_file)
-
-# check if calling from main
-if __name__ == "__main__":
- output_file = "../../images/test/colour_theme_demo_without_locale.png"
- colour_theme_demo_without_locale(
- file_name=output_file,
- timelinemode=TimelineMode.MONTHLY,
- number_of_items=14,
- )
\ No newline at end of file
+# # check if calling from main
+# if __name__ == "__main__":
+# output_file = "../../images/test/colour_theme_demo_without_locale.png"
+# colour_theme_demo_without_locale(
+# file_name=output_file,
+# timelinemode=TimelineMode.MONTHLY,
+# number_of_items=14,
+# )