A Dashboard to help my help desk gather and triage

Hi there!

How do you do the cards with the image on top and then links on the bottom? I feel like it is something super simple, but I just can’t seem to figure it out to make it look right.

I think what you want is about 2 replies up :slight_smile:

1 Like

I am also working on a tool for helpdesk colleagues, and I am interested how Azure AD single sign on works? Can colleagues from helpdesk run the dashboard and be signed in automatically?

Yes, as long as they have a valid token from any Azure SSO enabled application like Outlook OWA. The idea is a one time (single-sign-on) authentication provides a token that any other applications can use. The Azure AD authentication aspect of universal dashboard provides such an application.

Can you share the code for the modal ?
I like how the text is formatted, and would like to see how you have done that… (Have not been able to make the layout of the cards looks as good as what you have done

Sure, the modal is stored as an on-click event. Here is a sanitized version of it. Keep in mind it won’t quite run as is, since I had to redact portions of it, but it gets the idea across.

$OnClick = {
  Show-UDModal -BackgroundColor "#FFFFFF"  -Header { New-UDHeading -Color "#a80000" -Size 5 -Text "Account Information" } -Content {
      New-UDRow -Columns {
          New-UDColumn -Size 12 -Endpoint {
              New-UDElement -Tag 'span' -Attributes @{style=@{'font-weight'='300'}} -Content {'Quickly retrieve basic information about a current REDACTED'}
              New-UDInput -SubmitText 'Retrieve' -Endpoint {
                  param(
                      [ValidateNotNullOrEmpty()]
                      [ValidatePattern("^REDACTED")]
                      [UniversalDashboard.ValidationErrorMessage("This is not a valid query.")]
                      [string]
                      $UserName
                  ) 
                  #strip domain if email is submitted
                  $UserName = ($UserName -split '@')[0]
                  
                      # define filter based on input type
                      # detect if input string is integer and adjust user lookup filter
                      If ($UserName -match '^\d+$') {
                          If ($Username.length -eq 6){$Username = ('0' + $Username)}
                          $Filter = 'REDACTED'
                      }
                      If ($UserName -notmatch '^\d+$') {$Filter = 'REDACTED'}
                      
                      $ADProperties = @(
                        'REDACTED'
                          )

                          $Lookup = Get-AdUser -Credential REDACTED -Filter {$Filter -eq $Username} -SearchBase "REDACTED" -Properties $ADProperties  |
                          Select-Object $ADProperties

                          If ($null -eq $Lookup.REDACTED) {$Lookup.REDACTED = "N/A"}

                  # Output a new card based on that info
                  New-UDInputAction -Content @(

                      If (($Lookup.REDACTED -eq $True) -or ($Lookup.REDACTED -eq $True)) {$CardBG = "#E08B8B" ; Show-UDToast @ToastErrorTheme -Message "This user cannot login for the following reasons: "} Else {$CardBG = "#ACE08B"}

                      New-UDCard -BackgroundColor $CardBG -Endpoint {
                          If (($Lookup) -and ($Lookup -ne " ") -and $UserName -notin ('REDACTED')) {
                              If ($Lookup.PasswordExpired -eq $False) {$pwicon = 'unlock_alt'}
                              If ($Lookup.PasswordExpired -eq $True) {$pwicon = 'window_close'}
                              If ($Lookup.LockedOut -eq $False) {$lockedicon = 'unlock_alt'}
                              If ($Lookup.LockedOut -eq $True) {$lockedicon = 'window_close'}

                              New-UDButton -Flat -Text ("Password Expired? " + ($Lookup.PasswordExpired)) -IconAlignment left -Icon ($pwicon).tostring()
                              New-UDButton -Flat -Text ("Account Locked? " + ($Lookup.LockedOut)) -IconAlignment left -Icon ($lockedicon).tostring()

                          }
                      }

                      New-UDTable -Title "Additional information for '$UserName'" -Headers @(" ", " ") -Endpoint {
                              Try {
                                  $Table = [ordered]@{
                                      'User Principal Name' = $Lookup.UserPrincipalName
                                      'Password Last Set'   = $Lookup.PasswordLastSet
                                      'REDACTED'     = (($Lookup.REDACTED).tostring())
                                      'REDACTED'     = (($Lookup.REDACTED).tostring())
                                      'Account Expires' = 'REDACTED'
                                  }
                                  $Table.GetEnumerator() | Out-UDTableData -Property @("Name", "Value")
                              }
                              Catch {
                                  $Lookup = ' '
                                  $Lookup | Out-UDTableData -Property @("Name", "Value")
                              }
                      }
                      New-UDButton -Flat -Text 'Dismiss' -icon window_close -OnClick {Hide-UDModal}
                  )
              } -Validate
          }
      }
  }
}

@Claustn also, keep in mind this dashboard has been rewritten to version 2.0 here: https://forums.ironmansoftware.com/t/help-desk-2-0-total-rewrite

Modals are largely the same though.