snix/assessments/tt/client/src/Manager.elm
William Carroll e326b0da45 Add 'assessments/tt/' from commit 'ee8e75231c'
git-subtree-dir: assessments/tt
git-subtree-mainline: 67e0f93b3b
git-subtree-split: ee8e75231c
2021-01-22 11:00:51 +00:00

70 lines
2 KiB
Elm

module Manager exposing (render)
import Array
import Common
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (..)
import RemoteData
import State
import Tailwind
import UI
import Utils
allUsers : State.Model -> Html State.Msg
allUsers model =
case model.accounts of
RemoteData.NotAsked ->
UI.absentData { handleFetch = State.AttemptGetAccounts }
RemoteData.Loading ->
UI.paragraph "Loading..."
RemoteData.Failure e ->
UI.paragraph ("Error: " ++ Utils.explainHttpError e)
RemoteData.Success xs ->
ul []
(xs
|> List.map
(\account ->
li []
[ UI.paragraph
(account.username
++ " - "
++ State.roleToString account.role
)
, UI.textButton
{ label = "delete"
, handleClick = State.AttemptDeleteAccount account.username
}
]
)
)
render : State.Model -> Html State.Msg
render model =
Common.withSession model
(\session ->
div
[ class
([ "container"
, "mx-auto"
, "text-center"
]
|> Tailwind.use
)
]
[ h1 []
[ UI.header 2 ("Welcome back, " ++ session.username ++ "!")
, UI.textButton
{ label = "Logout"
, handleClick = State.AttemptLogout
}
, allUsers model
, Common.allErrors model
]
]
)