Private/Functions/Start-JCDashboardDefault.ps1

Function Start-JCDashboardDefault () {

    param (
        [Parameter(Mandatory = $true)]
        $OrgName,
        [Parameter(Mandatory = $true)]
        $DashboardSettings
    )
    ## Declare container variables for dashboard items
    $UDPages = @()

    ## Get files from "UDPages" folder
    $PublishedFolder = Publish-UDFolder -Path:($InstalledModuleLocation + '/Private/' + 'Images') -RequestPath "/Images"

    if ($Beta) {
        # If Beta Selected Then Load All UDPages
        $ContentPagesFiles = Get-ChildItem -Path:($InstalledModuleLocation + '/Private/' + 'UDPages/*.ps1') -Recurse
    }
    else {
        $ContentPagesFiles = Get-ChildItem -Path:($InstalledModuleLocation + '/Private/' + 'UDPages/Default/*.ps1') -Recurse
    }
    ## Call functions to build dashboard
    ##############################################################################################################
    $Theme = Get-JCTheme
    $NavBarLinks = Get-JCNavBarLinks
    ##############################################################################################################

    [int]$ProgressCounter = 0

    $ContentPagesFiles | ForEach-Object {


        ## Load functions from "UDPages" folder
        .($_.FullName)
        Write-Verbose "Loading $($_.BaseName)"

        ## Write progress logic
        $PageName = ($($_.BaseName) -split '-UD')[1]
        $ProgressCounter++

        $PageProgressParams = @{

            Activity        = "Loading the $PageName dashboard components"
            Status          = "Dashboard $ProgressCounter of $($ContentPagesFiles.count)"
            PercentComplete = ($ProgressCounter / $($ContentPagesFiles.count)) * 100

        }

        Write-Progress @PageProgressParams

        ## Load the Page Settings
        $PageSettings = $($DashboardSettings."$($_.BaseName)".'Settings')

        ## Compile the parameters
        $commandParams = ''

        $($PageSettings).PSObject.Properties | ForEach-Object {
            $commandParams = $commandParams + '-' + "$($_.Name) " + "'$($_.Value)' "
        }
        Write-Debug $commandParams

        ## Run function to load the page
        $CommandResults = Invoke-Expression "$($_.BaseName) $commandParams"

        ## Add the output to the container variable
        $UDPages += $CommandResults.UDPage
        #$UDSideNavItems += $CommandResults.UDSideNavItem
    }
    # Build dashboard
    $Navigation = New-UDSideNav -None
    $Pages = $UDPages
    $Dashboard = New-UDDashboard `
        -Title:("$($OrgName) Dashboard") `
        -Theme:($Theme) `
        -Pages:($Pages) `
        -Navigation:($Navigation) `
        -NavbarLinks:($NavBarLinks) `
        -NavBarLogo:(New-UDImage -Url:('/Images/jumpcloud.svg') -Height 42 -Width 56)

    # -Scripts:($Scripts) `
    # -Stylesheets:($Stylesheets) `
    # -Footer:($Footer)

    ## Start the dashboard
    Start-UDDashboard -Dashboard:($Dashboard) -Port:($DashboardSettings.'Dashboard'.Settings.Port) -ListenAddress:('127.0.0.1') -PublishedFolder $PublishedFolder -Force
}