Formatting/StreamDeck.Profile.format.ps1

<#
Write-FormatView -TypeName StreamDeck.Profile -Action {
    Write-FormatViewExpression -ScriptBlock {
        @(
        . $align $_.Name -Alignment Center
        ''
        . $align $_.DeviceModel -Alignment Center
        ''
        ) -join [Environment]::NewLine
    }

    Write-FormatViewExpression -ScriptBlock {
        $sdProfile = $_
        $maxX = 0
        $maxY = 0
        foreach ($actCoordinate in @($sdProfile.Actions.psobject.properties).Name) {
            $x, $y = $actCoordinate -split ','
            if ($x -gt $maxX ){$maxX = [int]$x }
            if ($y -gt $maxY) {$maxY = [int]$y }
        }

        $bufferWidth = $Host.UI.RawUI.BufferSize.Width - 1
        $bufferHeight = [math]::Floor($bufferWidth * ([float]($maxY + 1)/[float]($maxX + 1)))
        
        $cellWidth = ($bufferWidth -2)/($maxX + 1)
        $cellHeight = ($bufferHeight - (2+$maxY))/($maxY + 1)
        $emptyCellRow = ' ' * $cellWidth
        @(
            '-' * $bufferWidth
            (@(foreach ($columnNumber in 0..$maxX) {
                '|' + $emptyCellRow
            }) -join '')
            
            '-' * $bufferWidth
        ) -join [Environment]::NewLine
    }
}
#>



Write-FormatView -TypeName StreamDeck.Profile -Property Name, DeviceModel, DeviceUUID, Actions -Wrap -VirtualProperty @{
    Actions = {
        @(foreach ($prop in $_.Actions.psobject.properties) {
            $prop.Name + ' > ' + $prop.Value.Name
        }) -join [Environment]::NewLine
    }
} -Width 20,12,0 -GroupLabel Application -GroupByScript { if ($_.AppIdentifier) { $_.AppIdentifier } else { 'None' } }