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..05aa66e --- /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 = " {0} : {1} ,{2}, {3:yyyy-MM-dd}, {4:yyyy-MM-dd}" -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..6fef1b3 --- /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(" section $Title`n") | Out-Null + } + + process { + foreach($EventElement in $Events){ + $output.AppendLine(" $EventElement") | Out-Null + } + } + + end { + return $output.ToString() + } +} \ No newline at end of file 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') + )) + +)