pages/dashboard.ps1

New-UDPage -Name "Dashboard" -Icon chart_bar -Endpoint {
    New-UDHelmet -Content {
        New-UDHtmlTag -Tag 'title' -Content { "Universal Automation / Dashboard" }
    }

    New-UDRow -Endpoint {

        Try{
            $Session:AuthorizationPolicies = Get-UDAuthorizationPolicy -ErrorAction Continue
        }
        Catch{
            $Session:AuthorizationPolicies = $null
        }
        

        $Cache:Stats = Get-UAStats 

        New-UDColumn -SmallSize 12 -Content {
            New-UDRow -Columns {
                New-UDColumn -SmallSize 2 -Content {
                    New-UDCounter -Title "Run Today" -Endpoint {
                        $Cache:Stats.JobsRunToday
                    } -Icon check_circle -TextSize Medium -BackgroundColor "#3F51B5" -FontColor  "#FFFFFF"
                }
                New-UDColumn -SmallSize 2 -Content {
                    New-UDCounter -Title "Failed" -Endpoint {
                        $Cache:Stats.JobsFailedToday
                    } -Icon times_circle -TextSize Medium -BackgroundColor "#3F51B5" -FontColor  "#FFFFFF"
                }
                New-UDColumn -SmallSize 2 -Content {
                    New-UDCounter -Title "Running" -Endpoint {
                        $Cache:Stats.RunningJobs
                    } -Icon play_circle -TextSize Medium -BackgroundColor "#3F51B5" -FontColor  "#FFFFFF"
                } 
                New-UDColumn -SmallSize 2 -Content { 
                    New-UDCounter -Title "Upcoming" -Endpoint {
                        $CountUpcomingJobs = 0
                        Get-UASchedule | ForEach-Object { #TODO will need NOT get inactive / previously executed schedules (one off schedules)
                            $NextExecution = $_.NextExecution 
                            if ($NextExecution -lt (Get-Date).AddHours(24) -and $NextExecution -gt (Get-Date)) {
                                $CountUpcomingJobs++
                            }
                        }
                        $CountUpcomingJobs
                    } -Icon chart_bar -TextSize Medium -BackgroundColor "#3F51B5" -FontColor  "#FFFFFF"
                }
               
                New-UDColumn -SmallSize 2 -Content {
                    New-UDCounter -Title "Pending" -Endpoint {
                        $Cache:Stats.JobsWaitingOnFeedback
                    } -Icon question_circle -TextSize Medium -BackgroundColor "#3F51B5" -FontColor  "#FFFFFF"
                }

                New-UDColumn -SmallSize 2 -Content { 
                    New-UDCounter -Title "Time Saved" -Endpoint {
                        $Cache:Stats.TimeSavedSeconds / 60
                    } -Icon play_circle -TextSize Medium -BackgroundColor "#3F51B5" -FontColor  "#FFFFFF"
                } 
            }
        }
    }-AutoRefresh -RefreshInterval 30
    
    New-UDElement -Tag 'div' -Endpoint {
        New-UDTabContainer -Tabs {
            New-UDTab -Text 'Running Jobs' -Content {
                New-JobRunningGrid
            }
            New-UDTab -Text 'Past Jobs' -Content {
                New-JobHistoricalGrid
                New-UDElement -Tag 'div' -Endpoint {
                    If ($Cache:UAVersion -eq "Premium") {
                        <# New-UDCard -Content {
                            New-JobHistoryCalendar
                            New-JobHistoryBarChart
                        }#>

                    }
                }
            }
            New-UDTab -Text "Scripts" -Content {
                New-ScriptGrid
                if ($null -eq $Session:AuthorizationPolicies -or ($Session:UserRole -eq "Administrator" -or $Session:UserRole -eq "Operator")) {
                    New-UDButton -Text "New Script" -OnClick {
                        New-UDScriptModal
                    }
                }
            }
            New-UDTab -Text 'Schedules' -Content {
                New-JobUpcomingGrid
            }
            New-UDTab -Text "Variables" -Content {
                New-VariableGrid
                if ($null -eq $Session:AuthorizationPolicies -or ($Session:UserRole -eq "Administrator" -or $Session:UserRole -eq "Operator")) {
                    New-UDButton -Text "New Variable" -OnClick {
                        New-UDCreateVariableModal
                    }
                }
            }
            New-UDTab -Text "Secrets" -Content {
                New-UDSecretManagerGrid
                if ($null -eq $Session:AuthorizationPolicies -or ($Session:UserRole -eq "Administrator" -or $Session:UserRole -eq "Operator")) {
                    New-UDButton -Text "New Secret Manager" -OnClick {
                        New-UDCreateSecretManagerModal
                    }
                }
            }
            New-UDTab -Text "Tags" -Content {
                New-TagGrid
                if ($null -eq $Session:AuthorizationPolicies -or ($Session:UserRole -eq "Administrator" -or $Session:UserRole -eq "Operator")) {
                    New-UDButton -Text "New Tag" -OnClick {
                        New-UDCreateTagModal
                    }
                }
            }
            if($null -eq $Session:AuthorizationPolicies -or $Session:UserRole -eq "Administrator") {
                New-UDTab -Text "Config" -Content {
               
                    New-UDTabContainer -Tabs {
                    
                        New-UDTab -Text 'Connect' -Content {
                            New-UAConnectionHelp 
                        }
    
                        New-UDTab -Text 'Git Details' -Content {
                            New-UAConfigDetails
                        }
    
                        New-UDTab -Text 'Identities' -Content {
                            New-UAIdentityGrid
                            New-UDButton -Text "Add Identity" -OnClick {
                                New-UACreateIdentityModal
                            }
                        }
    
                        New-UDTab -Text 'PowerShell Versions' -Content {
                            New-PowerShellVersionGrid
                            New-UDButton -Text "New PowerShell Version" -OnClick {
                                New-UDCreatePowerShellVersionModal
                            }
                        }
    
                        New-UDTab -Text 'Roles' -Content {
                            New-UARoleGrid
                        }
                        
                        New-UDTab -Text 'Swagger' -Content {
                            New-UDCard -Title "Swagger Documentation" -Content {
    
                                New-UDElement -Tag 'div' -Content {
                                    New-UDHtml -Markup ("Use the following link to open the Swagger interactive API documentation")
                                }
    
                                New-UDButton -Text "Open Swagger Document" -Icon file -OnClick {
                                    $SwaggerURL = "http://localhost:10000/swagger/index.html"
                                    Invoke-UDRedirect -Url $SwaggerURL -OpenInNewWindow
                                }
                            }
                        }
    
                        New-UDTab -Text 'Help' -Content {
                            New-UDCard -Title "Help" -Content {
    
                                New-UDElement -Tag 'div' -Content {
                                    New-UDHtml -Markup ("Have questions or need help? Try the following resources...")
                                }
    
                                New-UDButton -Text "Documentation" -Icon file -OnClick {
                                    $DocsURL = "http://docs.universalautomation.io"
                                    Invoke-UDRedirect -Url $DocsURL -OpenInNewWindow
                                }
                                " "
                                New-UDButton -Text "Community Forum" -Icon users -OnClick {
                                    $ForumURL = "https://forums.universaldashboard.io/c/universal-automation"
                                    Invoke-UDRedirect -Url $ForumURL -OpenInNewWindow
                                }
                                " "
                                New-UDButton -Text "Ironman Software Slack" -Icon Slack -OnClick {
                                    $ForumURL = "https://ironmansoftware.slack.com/"
                                    Invoke-UDRedirect -Url $ForumURL -OpenInNewWindow
                                }
                                " "
                                New-UDButton -Text "Universal Automation Homepage" -Icon home -OnClick {
                                    $ForumURL = "https://ironmansoftware.com/universal-automation/"
                                    Invoke-UDRedirect -Url $ForumURL -OpenInNewWindow
                                }
                            }
                        }
    
                    }
                }
                
            }
        }
    }

}