module Web.View.Requirements.Show where import Web.Types import Generated.Types import IHP.Prelude import IHP.ViewPrelude import Web.Routes () data ShowView = ShowView { requirement :: !Requirement , candidate :: !RequirementCandidate , widget :: !Widget , mDecision :: !(Maybe DecisionRecord) } instance View ShowView where html ShowView { .. } = [hsx|
Requirements / {requirement.title}

{requirement.title}

" text-xs px-2 py-0.5 rounded font-medium ml-4"}> {requirement.status}

{requirement.description}

Source Candidate

{candidate.title}

Widget: {widget.name}

Linked Decision

{renderLinkedDecision mDecision}
|] reqStatusClass :: Text -> Text reqStatusClass "active" = "bg-green-100 text-green-800" reqStatusClass "superseded" = "bg-yellow-100 text-yellow-800" reqStatusClass "withdrawn" = "bg-gray-100 text-gray-500" reqStatusClass _ = "bg-gray-100 text-gray-600" renderLinkedDecision :: Maybe DecisionRecord -> Html renderLinkedDecision Nothing = [hsx|

No decision linked yet.

|] renderLinkedDecision (Just dr) = [hsx| {dr.title} " text-xs px-2 py-0.5 rounded font-medium ml-2"}> {dr.outcome} |] outcomeClass :: Text -> Text outcomeClass "accepted" = "bg-green-100 text-green-800" outcomeClass "rejected" = "bg-red-100 text-red-800" outcomeClass "deferred" = "bg-gray-100 text-gray-600" outcomeClass "split" = "bg-purple-100 text-purple-800" outcomeClass "merged" = "bg-indigo-100 text-indigo-800" outcomeClass "reframed" = "bg-orange-100 text-orange-800" outcomeClass _ = "bg-gray-100 text-gray-600"