module Web.View.AnnotationThreads.Index where import Web.Types import Generated.Types import IHP.Prelude import IHP.ViewPrelude import Web.Routes () data IndexView = IndexView { widget :: !Widget , threads :: ![AnnotationThread] , allAnnotations :: ![Annotation] } instance View IndexView where html IndexView { .. } = [hsx|
No threads yet.
|] renderThreadsSection threads allAnnotations = [hsx|{d}
|] buildSeverityBreakdown :: [Annotation] -> [(Text, Int)] buildSeverityBreakdown annotations = [ ("low", length $ filter (\a -> a.severity == "low") annotations) , ("medium", length $ filter (\a -> a.severity == "medium") annotations) , ("high", length $ filter (\a -> a.severity == "high") annotations) , ("critical", length $ filter (\a -> a.severity == "critical") annotations) ] renderSeverityBreakdown :: [(Text, Int)] -> Html renderSeverityBreakdown pairs = [hsx| {forEach (filter (\(_, n) -> n > 0) pairs) renderSeverityPip} |] renderSeverityPip :: (Text, Int) -> Html renderSeverityPip (sev, n) = [hsx| " text-xs px-1.5 py-0.5 rounded"}> {sev}: {show n} |] severityClass :: Text -> Text severityClass "low" = "bg-gray-100 text-gray-500" severityClass "medium" = "bg-blue-100 text-blue-700" severityClass "high" = "bg-yellow-100 text-yellow-800" severityClass "critical" = "bg-red-100 text-red-800 font-semibold" severityClass _ = "bg-gray-100 text-gray-500"