module Web.View.WidgetOwnerships.Index where
import Web.Types
import Generated.Types
import IHP.Prelude
import IHP.ViewPrelude
data IndexView = IndexView
{ ownerships :: ![WidgetOwnership]
, widgets :: ![Widget]
, hubs :: ![Hub]
}
instance View IndexView where
html IndexView { .. } = [hsx|
{if null ownerships
then [hsx|No ownership records yet.
|]
else [hsx|
| Widget |
Owner Hub |
Steward Hub |
Type |
Effective From |
|
{forEach ownerships renderRow}
|]}
|]
where
widgetName wid = maybe (show wid) (.name) (find (\w -> w.id == wid) widgets)
hubName hid = maybe "–" (.name) (find (\h -> h.id == hid) hubs)
renderRow :: WidgetOwnership -> Html
renderRow o = [hsx|
| {widgetName o.widgetId} |
{hubName o.ownerHubId} |
{maybe "–" hubName o.stewardHubId}
|
" text-xs px-2 py-0.5 rounded font-medium"}>
{o.ownershipType}
|
{show o.effectiveFrom} |
View
|
|]
typeBadge :: Text -> Text
typeBadge t = case t of
"local" -> "bg-gray-100 text-gray-700"
"delegated" -> "bg-blue-100 text-blue-700"
"global" -> "bg-purple-100 text-purple-700"
_ -> "bg-gray-100 text-gray-600"