Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
2548e75
Fix Bug report (#5)
rebelinux Feb 21, 2026
1f2552a
Clean up Release.yml by removing commented code
rebelinux Feb 21, 2026
f0b5268
Update README.md with new content and links
rebelinux Feb 23, 2026
8ca909f
Revise README for AsBuiltReport.Chart module
rebelinux Feb 24, 2026
8f583ce
Update Readme (#7)
rebelinux Feb 24, 2026
a738208
Add sample chart images for BarChart, PieChart, and StackedBarChart (#8)
rebelinux Feb 24, 2026
00f6888
Update README.md with new content and examples
rebelinux Feb 24, 2026
158e6bf
Fix HTML encoding issues in README.md
rebelinux Feb 24, 2026
dd28e9f
Fix stacked bar column filling entire chart area when single element …
Copilot Feb 25, 2026
afb9590
Refactor StackedBarChart to improve error handling and streamline col…
rebelinux Feb 25, 2026
b6d5db3
Add validation for category names length in StackedBarChart
rebelinux Feb 25, 2026
b2db18f
Add validation for labels in StackedBarChart and create a Todo list f…
rebelinux Feb 26, 2026
c116d83
Refactor chart initialization and enhance axis limit handling for sin…
rebelinux Feb 27, 2026
471a964
Add new SignalChart class file
rebelinux Mar 1, 2026
f38c51a
Add Signal chart support via New-SignalChart cmdlet (#13)
Copilot Mar 1, 2026
3c770b9
Initial plan
Copilot Mar 1, 2026
1a172fa
Add scatter mode support to New-SignalChart cmdlet
Copilot Mar 1, 2026
09eca4c
Merge pull request #15 from AsBuiltReport/copilot/add-support-for-sca…
rebelinux Mar 1, 2026
c8cf4a4
Initial plan
Copilot Mar 1, 2026
7b24248
Add ONTAP-NAS day data tests for Signal chart with Scatter and DateTi…
Copilot Mar 1, 2026
61d8ab8
Merge pull request #17 from AsBuiltReport/copilot/test-signal-chart-data
rebelinux Mar 1, 2026
1eb1c64
Merge branch 'dev' into dev
rebelinux Mar 1, 2026
2450c57
Merge pull request #18 from rebelinux/dev
rebelinux Mar 2, 2026
a39dafe
Update README.md with new links and module info
rebelinux Mar 2, 2026
6e55062
Update CHANGELOG with new version and features
rebelinux Mar 7, 2026
119c2be
Update module version to 0.3.0 in manifest
rebelinux Mar 7, 2026
48716df
Initial plan
Copilot Mar 8, 2026
8c95dee
Improvements: fix ColorblindFriendlyDark bug, security, performance, …
Copilot Mar 8, 2026
c49a590
Merge pull request #20 from AsBuiltReport/copilot/suggestions-for-imp…
rebelinux Mar 8, 2026
3b054aa
Update CHANGELOG with new chart features
rebelinux Mar 8, 2026
7f16533
Revise CHANGELOG for version 0.3.0
rebelinux Mar 8, 2026
0cf328f
Initial plan
Copilot Mar 8, 2026
efb3d86
Add Examples directory with 9 PowerShell example scripts for all char…
Copilot Mar 8, 2026
db4fff9
Update CHANGELOG and enhance example scripts with additional paramete…
rebelinux Mar 9, 2026
0555a53
Merge pull request #22 from AsBuiltReport/copilot/add-examples-to-module
rebelinux Mar 9, 2026
772e741
Update error messages in New-StackedBarChart tests for clarity
rebelinux Mar 9, 2026
864ea14
Add example index to README with descriptions for each chart example
rebelinux Mar 9, 2026
a93470d
Merge pull request #23 from rebelinux/dev
rebelinux Mar 9, 2026
a10d5eb
Enhance Example01 with additional parameters for chart customization
rebelinux Mar 9, 2026
4214a5f
Merge pull request #24 from rebelinux/dev
rebelinux Mar 9, 2026
7045f97
Fix typo in ColorPalette parameter description
rebelinux Mar 9, 2026
9781609
Refactor validation logic in StackedBarChart to ensure consistency be…
rebelinux Mar 9, 2026
e9d9b3c
Reformat Todo list for watermark feature to improve readability
rebelinux Mar 9, 2026
e6d25cb
Merge branch 'AsBuiltReport:dev' into dev
rebelinux Mar 9, 2026
0066ce3
Merge pull request #25 from rebelinux/dev
rebelinux Mar 9, 2026
fa2478a
Initial plan
Copilot Mar 9, 2026
abb246b
Add watermark support to all chart types
Copilot Mar 9, 2026
b6482a6
Add watermark support with customizable text, alignment, and rotation…
rebelinux Mar 9, 2026
1832370
Merge pull request #26 from AsBuiltReport/copilot/add-watermark-suppo…
rebelinux Mar 9, 2026
891b805
Update Todo.md
rebelinux Mar 9, 2026
ae53b3f
Initial plan
Copilot Mar 9, 2026
4da64bd
Fix jpg/jpeg extension swap, add Chart.Reset() for state isolation, i…
Copilot Mar 9, 2026
172b631
Merge pull request #27 from AsBuiltReport/copilot/scan-source-code-im…
rebelinux Mar 10, 2026
6ffaab5
Revise README with updated links and module details
rebelinux Mar 12, 2026
3e63b46
Update CHANGELOG for version 0.3.0
rebelinux Mar 14, 2026
b9467e5
Initial plan
Copilot Mar 14, 2026
2514e07
Potential fix for pull request finding
rebelinux Mar 14, 2026
bdd5017
Potential fix for pull request finding
rebelinux Mar 14, 2026
d6b8d14
Fix null Values handling in New-SignalChart to throw terminating error
Copilot Mar 14, 2026
da9160d
Potential fix for pull request finding
rebelinux Mar 14, 2026
1af2603
Potential fix for pull request finding
rebelinux Mar 14, 2026
e10ed62
Potential fix for pull request finding
rebelinux Mar 14, 2026
73d35a5
Potential fix for pull request finding
rebelinux Mar 14, 2026
f574829
Potential fix for pull request finding
rebelinux Mar 14, 2026
012673b
Merge pull request #29 from AsBuiltReport/copilot/sub-pr-28
rebelinux Mar 14, 2026
51c7c26
Potential fix for pull request finding
rebelinux Mar 14, 2026
371f67f
Potential fix for pull request finding
rebelinux Mar 14, 2026
ec90ab5
Potential fix for pull request finding
rebelinux Mar 14, 2026
19e307b
Potential fix for pull request finding
rebelinux Mar 14, 2026
6e8e05a
Potential fix for pull request finding
rebelinux Mar 14, 2026
af72233
Potential fix for pull request finding
rebelinux Mar 14, 2026
a8ba6c0
Potential fix for pull request finding
rebelinux Mar 14, 2026
b637779
Potential fix for pull request finding
rebelinux Mar 14, 2026
904eae5
Potential fix for pull request finding
rebelinux Mar 14, 2026
907aa7d
Potential fix for pull request finding
rebelinux Mar 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: Bug Report
description: File a bug report
labels: ["bug"]
assignees:
assignees: ["rebelinux"]
body:
- type: textarea
id: bug-description
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/change_request.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: Change Request
description: Request a new change or an improvement
labels: ["change request"]
assignees:
assignees: ["rebelinux"]
body:
- type: textarea
id: description
Expand Down
53 changes: 27 additions & 26 deletions .github/workflows/Release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,29 +49,30 @@ jobs:
shell: pwsh
run: |
Publish-Module -Path .\AsBuiltReport.Chart\ -NuGetApiKey ${{ secrets.PSGALLERY_API_KEY }} -Verbose
tweet:
needs: publish-to-psgallery
runs-on: ubuntu-latest
steps:
- uses: Eomm/why-don-t-you-tweet@v2
# We don't want to tweet if the repository is not a public one
if: ${{ !github.event.repository.private }}
with:
# GitHub event payload
# https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#release
tweet-message: "[New Release] ${{ github.event.repository.name }} ${{ github.event.release.tag_name }}! Check out what's new! ${{ github.event.release.html_url }} #AsBuiltReport #PowerShell"
env:
TWITTER_CONSUMER_API_KEY: ${{ secrets.TWITTER_CONSUMER_API_KEY }}
TWITTER_CONSUMER_API_SECRET: ${{ secrets.TWITTER_CONSUMER_API_SECRET }}
TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }}
TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
bsky-post:
needs: publish-to-psgallery
runs-on: ubuntu-latest
steps:
- uses: zentered/bluesky-post-action@v0.3.0
with:
post: "[New Release] ${{ github.event.repository.name }} ${{ github.event.release.tag_name }}! Check out what's new! ${{ github.event.release.html_url }} #AsBuiltReport #PowerShell"
env:
BSKY_IDENTIFIER: ${{ secrets.BSKY_IDENTIFIER }}
BSKY_PASSWORD: ${{ secrets.BSKY_PASSWORD }}
# tweet:
# needs: publish-to-psgallery
# runs-on: ubuntu-latest
# steps:
# - uses: Eomm/why-don-t-you-tweet@v2
# # We don't want to tweet if the repository is not a public one
# if: ${{ !github.event.repository.private }}
# with:
# # GitHub event payload
# # https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#release
# tweet-message: "[New Release] ${{ github.event.repository.name }} ${{ github.event.release.tag_name }}! Check out what's new! ${{ github.event.release.html_url }} #AsBuiltReport #PowerShell"
# env:
# TWITTER_CONSUMER_API_KEY: ${{ secrets.TWITTER_CONSUMER_API_KEY }}
# TWITTER_CONSUMER_API_SECRET: ${{ secrets.TWITTER_CONSUMER_API_SECRET }}
# TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }}
# TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
# bsky-post:
# needs: publish-to-psgallery
# runs-on: ubuntu-latest
# steps:
# - uses: zentered/bluesky-post-action@v0.3.0
# with:
# post: "[New Release] ${{ github.event.repository.name }} ${{ github.event.release.tag_name }}! Check out what's new! ${{ github.event.release.html_url }} #AsBuiltReport #PowerShell"
# env:
# BSKY_IDENTIFIER: ${{ secrets.BSKY_IDENTIFIER }}
# BSKY_PASSWORD: ${{ secrets.BSKY_PASSWORD }}

5 changes: 3 additions & 2 deletions AsBuiltReport.Chart/AsBuiltReport.Chart.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
RootModule = 'AsBuiltReport.Chart.psm1'

# Version number of this module.
ModuleVersion = '0.2.0'
ModuleVersion = '0.3.0'

# Supported PSEditions
# CompatiblePSEditions = @()
Expand Down Expand Up @@ -69,7 +69,7 @@
# NestedModules = @()

# Functions 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 functions to export.
FunctionsToExport = 'New-PieChart', 'New-BarChart', 'New-StackedBarChart'
FunctionsToExport = 'New-PieChart', 'New-BarChart', 'New-StackedBarChart', 'New-SignalChart'

# 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.
# CmdletsToExport = '*'
Expand Down Expand Up @@ -127,3 +127,4 @@




6 changes: 3 additions & 3 deletions AsBuiltReport.Chart/AsBuiltReport.Chart.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ switch ($PSVersionTable.PSEdition) {
$architecture = [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture
if ($architecture -eq "Arm64" -or $architecture -eq "Arm") {
Write-Verbose "Architecture: ARM (Apple Silicon)"
Import-Module ("$PSScriptRoot{0}Src{0}Assemblies{0}Core{0}mac-osx{0}osx-arm64{0}AsBuiltReportChart.dll" -f [System.IO.Path]::DirectorySeparatorChar) -Verbose -Debug
Import-Module ("$PSScriptRoot{0}Src{0}Assemblies{0}Core{0}mac-osx{0}osx-arm64{0}AsBuiltReportChart.dll" -f [System.IO.Path]::DirectorySeparatorChar)

} elseif ($architecture -eq "X64" -or $architecture -eq "X86") {
Write-Verbose "Architecture: x86 (Intel)"
Import-Module ("$PSScriptRoot{0}Src{0}Assemblies{0}Core{0}mac-osx{0}osx-x64{0}AsBuiltReportChart.dll" -f [System.IO.Path]::DirectorySeparatorChar) -Verbose -Debug
Import-Module ("$PSScriptRoot{0}Src{0}Assemblies{0}Core{0}mac-osx{0}osx-x64{0}AsBuiltReportChart.dll" -f [System.IO.Path]::DirectorySeparatorChar)

} else {
Write-Verbose "Architecture: Unknown or other architecture"
Import-Module ("$PSScriptRoot{0}Src{0}Assemblies{0}Core{0}mac-osx{0}osx-arm64{0}AsBuiltReportChart.dll" -f [System.IO.Path]::DirectorySeparatorChar) -Verbose -Debug
Import-Module ("$PSScriptRoot{0}Src{0}Assemblies{0}Core{0}mac-osx{0}osx-arm64{0}AsBuiltReportChart.dll" -f [System.IO.Path]::DirectorySeparatorChar)
}
} elseif ($IsLinux) {
Import-Module ("$PSScriptRoot{0}Src{0}Assemblies{0}Core{0}linux-x64{0}AsBuiltReportChart.dll" -f [System.IO.Path]::DirectorySeparatorChar)
Expand Down
Empty file.
22 changes: 21 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,23 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.3.0] - 2026-03-14

### Added

- Add Signal chart support
- Add support for setting the background color of the chart
- Add documentation example on how to use the modules

### Changed

Update module version to 0.3.0

### Fixed

- Fix issue with the stacked chart not rendering correctly when using certain data sets
- Fix pester test to properly validate the functionality of the module

## [0.2.0] - 2026-02-20

### Added
Expand All @@ -19,4 +36,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added

- Initial release of AsBuiltReport Chart, providing basic charting capabilities for AsBuiltReport data visualization

- Initial release of AsBuiltReport Chart, providing basic charting capabilities for AsBuiltReport data visualization


61 changes: 61 additions & 0 deletions Examples/Example01.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<#
.SYNOPSIS
Example 01 - Basic Pie Chart

.DESCRIPTION
This example demonstrates how to create a basic Pie Chart using the AsBuiltReport.Chart module.
The chart displays a simple breakdown of VM power states across a vSphere environment.
#>

[CmdletBinding()]
param (
[System.IO.DirectoryInfo] $Path = (Get-Location).Path,
[string] $Format = 'png'
)

<#
Starting with PowerShell v3, modules are auto-imported when needed. Importing the module here
ensures clarity and avoids ambiguity.
#>

# Import-Module AsBuiltReport.Chart -Force -Verbose:$false

<#
Since the chart output is a file, specify the output folder path using $OutputFolderPath.
#>

$OutputFolderPath = Resolve-Path $Path

<#
Define the data to be displayed in the chart.
In a real-world scenario these values would come from your infrastructure query.
#>

$ChartTitle = 'VM Power States'
$Values = @(120, 35, 10)
$Labels = @('Powered On', 'Powered Off', 'Suspended')

<#
The New-PieChart cmdlet generates the Pie Chart image.

-Title : Sets the chart title displayed at the top of the image.
-Values : Array of numeric values, one per slice.
-Labels : Array of label strings corresponding to each value.
-Format : Output file format (e.g. png, jpg, svg).
-OutputFolderPath : Directory where the generated chart file will be saved.
-Width : Width of the chart image in pixels.
-Height : Height of the chart image in pixels.
-ColorPalette : Predefined color palette (e.g. Category20, Pastel).
-Filename : Name of the output file (without extension).
#>

New-PieChart `
-Title $ChartTitle `
-Values $Values `
-Labels $Labels `
-Format $Format `
-OutputFolderPath $OutputFolderPath `
-Width 600 `
-Height 400 `
-ColorPalette Category20 `
-Filename 'Example01-PieChart'
98 changes: 98 additions & 0 deletions Examples/Example02.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
<#
.SYNOPSIS
Example 02 - Pie Chart with Legend, Custom Colors and Border

.DESCRIPTION
This example demonstrates how to create a Pie Chart with additional visual options, including:
- An enabled legend with custom alignment and orientation
- A custom hex color palette
- A chart border
- Adjusted title and label font sizes
- Custom chart dimensions

The chart displays a server operating system distribution report.
#>

[CmdletBinding()]
param (
[System.IO.DirectoryInfo] $Path = (Get-Location).Path,
[string] $Format = 'png'
)

<#
Starting with PowerShell v3, modules are auto-imported when needed. Importing the module here
ensures clarity and avoids ambiguity.
#>

# Import-Module AsBuiltReport.Chart -Force -Verbose:$false

<#
Since the chart output is a file, specify the output folder path using $OutputFolderPath.
#>

$OutputFolderPath = Resolve-Path $Path

<#
Define the data to be displayed in the chart.
In a real-world scenario these values would come from your infrastructure query.
#>

$ChartTitle = 'Server OS Distribution'
$Values = @(85, 60, 30, 15)
$Labels = @('Windows Server 2022', 'Windows Server 2019', 'RHEL 9', 'Ubuntu 22.04')

<#
A custom hex color palette can be used to match corporate branding or improve readability.
Each color corresponds to a slice in the order they appear in $Values.
#>

$CustomColors = @('#0078D4', '#00B7C3', '#E74C3C', '#F39C12')

<#
The New-PieChart cmdlet generates the Pie Chart image.

-Title : Sets the chart title.
-TitleFontSize : Sets the font size of the title in points.
-TitleFontBold : Renders the title in bold.
-Values : Array of numeric values, one per slice.
-Labels : Array of label strings corresponding to each value.
-LabelFontSize : Sets the font size of the slice labels.
-LabelDistance : Controls how far labels are placed from the chart center (0.5-0.9).
-EnableLegend : Enables the legend on the chart.
-LegendAlignment : Positions the legend (e.g. UpperRight, LowerCenter).
-LegendOrientation : Sets legend layout direction (Vertical or Horizontal).
-LegendFontSize : Sets the legend text font size in points.
-EnableChartBorder : Draws a border around the chart area.
-ChartBorderColor : Sets the border color.
-ChartBorderSize : Sets the border thickness in pixels.
-EnableCustomColorPalette : Enables use of the custom color palette.
-CustomColorPalette : Array of hex color strings for each slice.
-Width : Output image width in pixels.
-Height : Output image height in pixels.
-Format : Output file format (e.g. png, jpg, svg).
-OutputFolderPath : Directory where the generated chart file will be saved.
-Filename : Name of the output file (without extension).
#>

New-PieChart `
-Title $ChartTitle `
-TitleFontSize 18 `
-TitleFontBold `
-Values $Values `
-Labels $Labels `
-LabelFontSize 13 `
-LabelDistance 0.7 `
-EnableLegend `
-LegendAlignment UpperRight `
-LegendOrientation Vertical `
-LegendFontSize 12 `
-EnableChartBorder `
-ChartBorderColor Black `
-ChartBorderSize 2 `
-EnableCustomColorPalette `
-CustomColorPalette $CustomColors `
-Width 600 `
-Height 400 `
-Format $Format `
-OutputFolderPath $OutputFolderPath `
-Filename 'Example02-PieChart-Advanced'
61 changes: 61 additions & 0 deletions Examples/Example03.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<#
.SYNOPSIS
Example 03 - Basic Bar Chart

.DESCRIPTION
This example demonstrates how to create a basic Bar Chart using the AsBuiltReport.Chart module.
The chart displays CPU utilization across a set of ESXi hosts.
#>

[CmdletBinding()]
param (
[System.IO.FileInfo] $Path = (Get-Location).Path,
[string] $Format = 'png'
)

<#
Starting with PowerShell v3, modules are auto-imported when needed. Importing the module here
ensures clarity and avoids ambiguity.
#>

# Import-Module AsBuiltReport.Chart -Force -Verbose:$false

<#
Since the chart output is a file, specify the output folder path using $OutputFolderPath.
#>

$OutputFolderPath = Resolve-Path $Path

<#
Define the data to be displayed in the chart.
In a real-world scenario these values would come from your infrastructure query.
#>

$ChartTitle = 'ESXi Host CPU Utilization (%)'
$Values = @(72, 45, 88, 61, 53)
$Labels = @('esxi-host-01', 'esxi-host-02', 'esxi-host-03', 'esxi-host-04', 'esxi-host-05')

<#
The New-BarChart cmdlet generates the Bar Chart image.

-Title : Sets the chart title displayed at the top of the image.
-Values : Array of numeric values, one per bar.
-Labels : Array of label strings corresponding to each bar.
-LabelXAxis : Label for the X-axis.
-LabelYAxis : Label for the Y-axis.
-Format : Output file format (e.g. png, jpg, svg).
-OutputFolderPath : Directory where the generated chart file will be saved.
-Filename : Name of the output file (without extension).
#>

New-BarChart `
-Title $ChartTitle `
-Values $Values `
-Labels $Labels `
-LabelXAxis 'Host' `
-LabelYAxis 'CPU (%)' `
-Format $Format `
-OutputFolderPath $OutputFolderPath `
-Width 600 `
-Height 600 `
-Filename 'Example03-BarChart'
Loading
Loading