From 2c1ffc5201615ea521a92d4072cee15edc292142 Mon Sep 17 00:00:00 2001 From: Alex Greenwood <23561607+alexrgreenwood@users.noreply.github.com> Date: Wed, 17 Jul 2024 10:46:59 +0100 Subject: [PATCH 1/2] add gantt functions --- PSMermaid.psd1 | 3 ++ Public/Gantt/New-MermaidGanttChart.ps1 | 30 +++++++++++++++++++ Public/Gantt/New-MermaidGanttChartEvent.ps1 | 24 +++++++++++++++ Public/Gantt/New-MermaidGanttChartSection.ps1 | 22 ++++++++++++++ 4 files changed, 79 insertions(+) create mode 100644 Public/Gantt/New-MermaidGanttChart.ps1 create mode 100644 Public/Gantt/New-MermaidGanttChartEvent.ps1 create mode 100644 Public/Gantt/New-MermaidGanttChartSection.ps1 diff --git a/PSMermaid.psd1 b/PSMermaid.psd1 index 8c0b61c..6b6b598 100644 --- a/PSMermaid.psd1 +++ b/PSMermaid.psd1 @@ -102,6 +102,9 @@ 'New-MermaidERDiagramRelationShipType' 'New-MermaidGitGraphEntry' 'New-MermaidGitGraph' + 'New-MermaidGanttChart' + 'New-MermaidGanttChartSection' + 'New-MermaidGanttChartEvent' ) # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. diff --git a/Public/Gantt/New-MermaidGanttChart.ps1 b/Public/Gantt/New-MermaidGanttChart.ps1 new file mode 100644 index 0000000..a654143 --- /dev/null +++ b/Public/Gantt/New-MermaidGanttChart.ps1 @@ -0,0 +1,30 @@ +function New-MermaidGanttChart { + [CmdletBinding()] + param ( + $Title = $null, + $dateFormat = 'YYYY-MM-DD', + $axisFormat = '%a%d', + [string[]] $Section + ) + + begin { + $output = [System.Text.StringBuilder]::new() + $output.AppendLine("gantt") | Out-Null + if(-not([string]::IsNullOrEmpty($Title))){ + $output.AppendLine("`ttitle $Title") | Out-Null + } + $Output.AppendLine("`tdateFormat $dateFormat") | Out-Null + $Output.AppendLine("`texcludes weekends") | Out-Null + $Output.AppendLine("`taxisFormat $axisFormat") | Out-Null + } + + process { + foreach($SectionElement in $Section){ + $output.AppendLine($SectionElement) |Out-Null + } + } + + end { + return $output.ToString() + } +} \ No newline at end of file diff --git a/Public/Gantt/New-MermaidGanttChartEvent.ps1 b/Public/Gantt/New-MermaidGanttChartEvent.ps1 new file mode 100644 index 0000000..a554e09 --- /dev/null +++ b/Public/Gantt/New-MermaidGanttChartEvent.ps1 @@ -0,0 +1,24 @@ +function New-MermaidGanttChartEvent { + [CmdletBinding()] + param ( + $Label, + [ValidateSet('active', 'done', 'crit','milestone')]$Tag = $null, + $TID, + $Startdate, + $Enddate + + ) + + begin { + $ReturnString = "" + } + + process { + $ReturnString = "`t`t{0} : {1} ,{2}, {3:yyyy-MM-dd}, {4:yyyy-MM-dd}`n" -f $Label, $Tag, $TID, $Startdate, $Enddate + } + + end { + return $ReturnString + } +} + diff --git a/Public/Gantt/New-MermaidGanttChartSection.ps1 b/Public/Gantt/New-MermaidGanttChartSection.ps1 new file mode 100644 index 0000000..87eb54e --- /dev/null +++ b/Public/Gantt/New-MermaidGanttChartSection.ps1 @@ -0,0 +1,22 @@ +function New-MermaidGanttChartSection { + [CmdletBinding()] + param ( + $Title, + [string[]]$Events + ) + + begin { + $output = [System.Text.StringBuilder]::new() + $output.Append("`tsection $Title`n") | Out-Null + } + + process { + foreach($EventElement in $Events){ + $output.AppendLine("`t`t$EventElement`n") | Out-Null + } + } + + end { + return $output.ToString() + } +} \ No newline at end of file From 9635d53423d6a782678c1c95ae4e8ec82545388e Mon Sep 17 00:00:00 2001 From: Alex Greenwood <23561607+alexrgreenwood@users.noreply.github.com> Date: Fri, 26 Jul 2024 14:56:24 +0100 Subject: [PATCH 2/2] add examples for Gantt --- Public/Gantt/New-MermaidGanttChartEvent.ps1 | 2 +- Public/Gantt/New-MermaidGanttChartSection.ps1 | 4 +- README.md | 78 ++++++++++++++++++- example.ps1 | 35 ++++++++- 4 files changed, 112 insertions(+), 7 deletions(-) diff --git a/Public/Gantt/New-MermaidGanttChartEvent.ps1 b/Public/Gantt/New-MermaidGanttChartEvent.ps1 index a554e09..05aa66e 100644 --- a/Public/Gantt/New-MermaidGanttChartEvent.ps1 +++ b/Public/Gantt/New-MermaidGanttChartEvent.ps1 @@ -14,7 +14,7 @@ function New-MermaidGanttChartEvent { } process { - $ReturnString = "`t`t{0} : {1} ,{2}, {3:yyyy-MM-dd}, {4:yyyy-MM-dd}`n" -f $Label, $Tag, $TID, $Startdate, $Enddate + $ReturnString = " {0} : {1} ,{2}, {3:yyyy-MM-dd}, {4:yyyy-MM-dd}" -f $Label, $Tag, $TID, $Startdate, $Enddate } end { diff --git a/Public/Gantt/New-MermaidGanttChartSection.ps1 b/Public/Gantt/New-MermaidGanttChartSection.ps1 index 87eb54e..6fef1b3 100644 --- a/Public/Gantt/New-MermaidGanttChartSection.ps1 +++ b/Public/Gantt/New-MermaidGanttChartSection.ps1 @@ -7,12 +7,12 @@ function New-MermaidGanttChartSection { begin { $output = [System.Text.StringBuilder]::new() - $output.Append("`tsection $Title`n") | Out-Null + $output.Append(" section $Title`n") | Out-Null } process { foreach($EventElement in $Events){ - $output.AppendLine("`t`t$EventElement`n") | Out-Null + $output.AppendLine(" $EventElement") | Out-Null } } diff --git a/README.md b/README.md index 2bcd8c9..cd4cfff 100644 --- a/README.md +++ b/README.md @@ -20,11 +20,18 @@ The full changelog you can find [here](https://github.com/HCRitter/PSMermaid/blo - [x] GitGraph - [ ] Sequence Diagram - [ ] State Diagram -- [ ] Gantt +- [x] Gantt - [ ] Requirement Diagram ## Changelog +### Version 0.1.2 + +#### Changes + +- Added basic functionality to create a 'Gantt' +- Following new functions: 'New-MermaidGanttChart', 'New-MermaidGanttChartSection', 'New-MermaidGanttChartEvent' created + ### Version 0.1.1 #### Changes @@ -43,7 +50,7 @@ The full changelog you can find [here](https://github.com/HCRitter/PSMermaid/blo #### Changes -- Added basic functionality to create a 'QuardrantChart' +- Added basic functionality to create a 'QuadrantChart' - Following new functions: 'New-MermaidQuadrantChart','New-MermaidQuadrantChartAxis', 'New-MermaidQuadrantChartDataSet','New-MermaidQuadrantChartQuadrant' created ### Version 0.0.8 @@ -477,4 +484,69 @@ gitGraph commit id: "THREE" checkout develop commit id: "C" -``` \ No newline at end of file +``` + +### Create a Gantt Chart + +```powershell + +$topaxis='true' +$header=@" +--- +displayMode: compact +config: + theme: base + themeVariables: + primaryColor: "#4682B4" +gantt: + topAxis: $topaxis +--- + +"@ + +$header +New-MermaidGanttChart -Title "Team Absence" -Section @( + $(New-MermaidGanttChartSection -Title 'Bob' -Events @( + $(New-MermaidGanttChartEvent -Label 'Holiday' -Tag 'active' -TID 1 -StartDate '2024-08-01' -Enddate '2024-08-14'), + $(New-MermaidGanttChartEvent -Label 'National Holiday' -Tag 'milestone' -TID 2 -StartDate '2024-08-26' -Enddate '2024-08-27') + )), + $(New-MermaidGanttChartSection -Title 'Billy' -Events @( + $(New-MermaidGanttChartEvent -Label 'Holiday' -Tag 'done' -TID 1 -StartDate '2024-08-14' -Enddate '2024-08-17'), + $(New-MermaidGanttChartEvent -Label 'National Holiday' -Tag 'milestone' -TID 2 -StartDate '2024-08-26' -Enddate '2024-08-27') + )), + $(New-MermaidGanttChartSection -Title 'Mary' -Events @( + $(New-MermaidGanttChartEvent -Label 'Unapproved' -Tag 'crit' -TID 1 -StartDate '2024-08-19' -Enddate '2024-08-21'), + $(New-MermaidGanttChartEvent -Label 'National Holiday' -Tag 'milestone' -TID 2 -StartDate '2024-08-26' -Enddate '2024-08-27') + )) + +) +``` + +```mermaid +--- +displayMode: compact +config: + theme: dark + themeVariables: + +gantt: + topAxis: true +--- + +gantt + title Team Absence + dateFormat YYYY-MM-DD + excludes weekends + axisFormat %a%d + section Bob + Holiday : active ,1, 2024-08-01, 2024-08-14 + National Holiday : milestone ,2, 2024-08-26, 2024-08-27 + + section Billy + Holiday : active ,1, 2024-08-14, 2024-08-17 + National Holiday : milestone ,2, 2024-08-26, 2024-08-27 + + section Mary + Unapproved : crit ,1, 2024-08-19, 2024-08-21 + National Holiday : milestone ,2, 2024-08-26, 2024-08-27 +``` diff --git a/example.ps1 b/example.ps1 index 7fd7d51..304be0c 100644 --- a/example.ps1 +++ b/example.ps1 @@ -292,4 +292,37 @@ new-MermaidGitGraph -Entry @( $(New-MermaidGitGraphEntryCommit -id "THREE"), $(New-MermaidGitGraphEntryCheckOut -name "develop"), $(New-MermaidGitGraphEntryCommit -id "C") -) \ No newline at end of file +) + + +# Create a Gantt Chart +$topaxis='true' +$header=@" +--- +displayMode: compact +config: + theme: base + themeVariables: + primaryColor: "#4682B4" +gantt: + topAxis: $topaxis +--- + +"@ + +$header +New-MermaidGanttChart -Title "Team Absence" -Section @( + $(New-MermaidGanttChartSection -Title 'Bob' -Events @( + $(New-MermaidGanttChartEvent -Label 'Holiday' -Tag 'active' -TID 1 -StartDate '2024-08-01' -Enddate '2024-08-14'), + $(New-MermaidGanttChartEvent -Label 'National Holiday' -Tag 'milestone' -TID 2 -StartDate '2024-08-26' -Enddate '2024-08-27') + )), + $(New-MermaidGanttChartSection -Title 'Billy' -Events @( + $(New-MermaidGanttChartEvent -Label 'Holiday' -Tag 'done' -TID 1 -StartDate '2024-08-14' -Enddate '2024-08-17'), + $(New-MermaidGanttChartEvent -Label 'National Holiday' -Tag 'milestone' -TID 2 -StartDate '2024-08-26' -Enddate '2024-08-27') + )), + $(New-MermaidGanttChartSection -Title 'Mary' -Events @( + $(New-MermaidGanttChartEvent -Label 'Unapproved' -Tag 'crit' -TID 1 -StartDate '2024-08-19' -Enddate '2024-08-21'), + $(New-MermaidGanttChartEvent -Label 'National Holiday' -Tag 'milestone' -TID 2 -StartDate '2024-08-26' -Enddate '2024-08-27') + )) + +)