ContentLibrary/Hackathon/Content-Pages/Get-UDSystemInsights.ps1
Function Get-UDSystemInsights() { $Tables = (Get-Command 'Get-JCSysteminsights').Parameters.Table.Attributes.ValidValues | Sort-Object $UDPage = @() $UDSideNavItems = @() $Tables | ForEach-Object { $Table = $_ $UDPage += New-UDPage -Name:($Table) -ArgumentList:(@($Table)) -Endpoint { #region Loading Indicator $Session:DoneLoading = $false New-UDRow -Columns { New-UDColumn -Endpoint { New-UDElement -Id 'LoadingMessage' -Tag div -Endpoint { if ($Session:DoneLoading -ne $true) { New-UDHeading -Text "Loading...Please wait..." -Size 5 New-UDPreloader -Circular } } } } #endregion New-UDColumn -Endpoint { $SystemInsights = Get-JCSystemInsights -Table:($Table) If (-not [System.String]::IsNullOrEmpty($SystemInsights)) { $Properties = ($SystemInsights | Get-Member -MemberType:('NoteProperty')) | Where-Object { $_.Name -notin ('ById', 'ByName', 'httpMetaData', 'table', 'TargetPlural', 'Targets', 'TargetSingular', 'type', 'TypeName', 'TypeNamePlural', 'TypeNameSingular') } | Select-Object -Unique -Property:('Name') New-UDGrid -Title:($Table) -Headers @($Properties.Name) -Properties @($Properties.Name) -ArgumentList:($SystemInsights) -Endpoint { $ArgumentList[0] | ForEach-Object { $_ | Select-Object -Property:(@{Name = 'system_id'; Expression = { New-UDLink -Text:($_.system_id) -Url:("https://console.jumpcloud.com/#/systems/$($_.system_id)/details") -OpenInNewWindow } }, '*') -ExcludeProperty:('system_id') } | Out-UDGridData } } Else { New-UDCard -Title:($Table) -Text:('No data available for ' + $Table + '.') } # Remove the Loading Indicator $Session:DoneLoading = $true Sync-UDElement -Id 'LoadingMessage' -Broadcast } } $UDSideNavItems += New-UDSideNavItem -Text:($_) -PageName:($_) } $UDSideNavItem = New-UDSideNavItem -Text:('SystemInsights') -Children { $UDSideNavItems } -Icon:('Database') Return [PSCustomObject]@{ 'UDPage' = $UDPage; 'UDSideNavItem' = $UDSideNavItem; } } |