Modules/UniversalDashboard.Charts/UniversalDashboard.Charts.psm1


$JsFiles = Get-ChildItem "$PSScriptRoot\*.bundle.js"

$Items = @("nivo-bar", "nivo-calendar", "nivo-heatmap", "nivo-line", "nivo-pie", "nivo-stream", "nivo-treemap")
foreach($item in $items) {
    $JsFiles | Where-Object { $_.FullName.Contains($item)} | ForEach-Object {
        [UniversalDashboard.Enterprise.NewNivoChartCommand]::AssetIds.Add($item, [UniversalDashboard.Services.AssetService]::Instance.RegisterScript($_))
    }
}

$SparklinesFile = $JsFiles | Where-Object { $_.FullName.Contains("sparklines")}

$SparklinesAssetId = [UniversalDashboard.Services.AssetService]::Instance.RegisterScript($SparklinesFile.FullName)

function New-UDSparklines {
    param(
        [Parameter()]
        [string]$Id = (New-Guid).ToString(),
        [Parameter(Mandatory)]
        [float[]]$Data,
        [Parameter()]
        [ValidateSet('lines', 'bars', 'both')]
        [string]$Type = 'lines',
        [Parameter()]
        [int]$Width,
        [Parameter()]
        [int]$Height,
        [Parameter()]
        [int]$Margin,
        [Parameter()]
        [float]$Minimum,
        [Parameter()]
        [float]$Maximum,
        [Parameter()]
        [UniversalDashboard.Models.DashboardColor]$Color,
        [Parameter()]
        [Hashtable]$Style
    )

    Process {
        @{
            isPlugin = $true
            assetId = $SparklinesAssetId
            data = $Data
            type = $Type
            id = $Id
            width = $Width
            height = $Height
            margin = $Margin
            min = $Minimum
            max = $Maximum
            color = $Color
            style = $Style
        }
    }
}