module Web.View.Hubs.Index where
import Web.Types
import Generated.Types
import IHP.Prelude
import IHP.ViewPrelude
import Web.Routes ()
data IndexView = IndexView { hubs :: ![Hub] }
instance View IndexView where
html IndexView { .. } = [hsx|
| Name |
Slug |
Domain |
Kind |
Family |
|
{forEach hubs renderHub}
|]
kindBadge :: Text -> Html
kindBadge "framework" = [hsx|framework|]
kindBadge "shared" = [hsx|shared|]
kindBadge _ = [hsx|domain|]
classificationBadge :: Hub -> Html
classificationBadge hub =
case (hub.hubFamily, hub.vsmFunction, hub.vsmSystem) of
(Just "vsm", Just functionName, Just systemName) ->
[hsx|VSM {functionName} / {vsmSystemLabel systemName}|]
_ -> [hsx|-|]
vsmSystemLabel :: Text -> Text
vsmSystemLabel "environment" = "Environment"
vsmSystemLabel systemName = "System " <> systemName
renderHub :: Hub -> Html
renderHub hub = [hsx|
|
{hub.name}
|
{hub.slug} |
{hub.domain} |
{kindBadge hub.hubKind} |
{classificationBadge hub} |
Edit
Delete
|
|]