_{MsgCorrectionSheets} _{MsgCourseParticipants nrParticipants}
_{MsgSheet} $if groupsPossible _{MsgNrSubmittorsTotal} _{MsgNrSubmissionsTotal} _{MsgNrSubmissionsNotAssigned} _{MsgNrSubmissionsNotCorrected} _{MsgCorrectionTime} $forall (sheetName, CorrectionInfo{ciSubmittors, ciSubmissions, ciAssigned, ciCorrected, ciMin, ciTot, ciMax}) <- Map.toList sheetMap
^{simpleLink (toWidget sheetName) (CSheetR tid ssh csh sheetName SSubsR)} $if groupsPossible #{ciSubmittors} $maybe ((splus,sfailed),_) <- Map.lookup sheetName assignment #{ciSubmissions} (+#{show (Set.size splus)}) #{ciSubmissions - ciAssigned} (#{show (Set.size sfailed)}) $nothing #{ciSubmissions} #{ciSubmissions - ciAssigned} #{ciSubmissions - ciCorrected} #{showDiffDays ciMin} #{showAvgsDays ciTot ciCorrected} #{showDiffDays ciMax}

_{MsgCorrectionCorrectors}
_{MsgCorrector} _{MsgNrSubmissionsTotal} _{MsgNrSubmissionsNotCorrected} _{MsgCorrectionTime} $forall shn <- sheetNames #{shn} $forall (CorrectionInfo{ciCorrector, ciSubmissions, ciCorrected, ciMin, ciTot, ciMax}) <- Map.elems corrMap
^{showCorrector ciCorrector} #{ciSubmissions} #{ciSubmissions - ciCorrected} #{showDiffDays ciMin} #{showAvgsDays ciTot ciCorrected} #{showDiffDays ciMax} $forall shn <- sheetNames $maybe smap <- Map.lookup shn infoMap $maybe CorrectionInfo{ciAssigned,ciCorrected,ciTot} <- Map.lookup ciCorrector smap $maybe (_,cass) <- Map.lookup shn assignment $maybe nrNew <- Map.lookup ciCorrector cass #{ciAssigned} (+#{nrNew}) #{ciAssigned - ciCorrected} #{showAvgsDays ciTot ciCorrected} $nothing #{ciAssigned} #{ciAssigned - ciCorrected} #{showAvgsDays ciTot ciCorrected} $nothing #{ciAssigned} #{ciAssigned - ciCorrected} #{showAvgsDays ciTot ciCorrected} $nothing $nothing ^{btnWdgt}