Something like this?
$session:output = @(
[pscustomobject]@{
Details = 'Client Name'
Data= "FullName"
Status = "cn"
DeploymentStatus = 'Pending Deploy'
}
[pscustomobject]@{
Details = 'Clients FQDN'
Data= "FDQN"
Status = "cf"
DeploymentStatus = 'Pending Deploy'
}
[pscustomobject]@{
Details = 'Clients Production DNS Server'
Data= "DNSServer"
Status = "cpd"
DeploymentStatus = 'Pending Deploy'
}
[pscustomobject]@{
Details = 'Clients Disaster Recovery DNS Server'
Data= "ClientsDisasterRecoveryDNSServer"
Status = "cdd"
DeploymentStatus = 'Pending Deploy'
}
)
New-UDGrid -Container -Content {
New-UDGrid -Item -ExtraSmallSize 12 -Content {
$columns = @(
New-UDTableColumn -Property Details -Title Details
New-UDTableColumn -Property Data -Title Data
New-UDTableColumn -Property Status -Title Status -Render {
$Status = $EventData.Status
New-UDDynamic -Id $Status -Content {
$Output = $Session:Output
$Item = $Output | Where-Object Status -eq $Status
if ($Item.DeploymentStatus -eq 'Running')
{
New-UDProgress -Circular
}
else
{
New-UDTypography $Item.DeploymentStatus
}
}
}
)
New-UDTable -data $session:output -Columns $Columns
}
New-UDButton -Icon (New-UDIcon -Icon rocket) -Text 'Deploy' -OnClick {
$Output = $Session:Output
foreach($item in $Output)
{
$item.DeploymentStatus = "Running"
$Session:Output = $Output
Sync-UDElement -Id $item.Status
Start-Sleep 1
$item.DeploymentStatus = "Completed"
$Session:Output = $Output
Sync-UDElement -Id $item.Status
}
}
}