_{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} #{ciSubmissions} $maybe ((splus,sfailed),_) <- Map.lookup sheetName assignment $if 0 < Set.size sfailed #{ciSubmissions - ciAssigned} (-#{show (Set.size splus)}, failed: #{show (Set.size sfailed)}) $elseif 0 < Set.size splus #{ciSubmissions - ciAssigned} (-#{show (Set.size splus)}) $else #{ciSubmissions - ciAssigned} $nothing #{ciSubmissions - ciAssigned} #{ciSubmissions - ciCorrected} #{showDiffDays ciMin} #{showAvgsDays ciTot ciCorrected} #{showDiffDays ciMax}

_{MsgCorrectionCorrectors}
_{MsgCorrector} _{MsgNrSubmissionsTotal} _{MsgNrSubmissionsNotCorrected} _{MsgCorrectionTime} $forall shn <- sheetNames #{shn} $# ^{simpleLinkI (SomeMessage MsgMenuCorrectors) (CSheetR tid ssh csh shn SCorrR)} $forall (CorrectionInfo{ciCorrector, ciSubmissions, ciCorrected, ciMin, ciTot, ciMax}) <- Map.elems corrMap $with (nameW,loadM) <- getCorrector ciCorrector
^{nameW} #{ciSubmissions} #{ciSubmissions - ciCorrected} #{showDiffDays ciMin} #{showAvgsDays ciTot ciCorrected} #{showDiffDays ciMax} $forall shn <- sheetNames $maybe SheetCorrector{sheetCorrectorLoad, sheetCorrectorState} <- Map.lookup shn loadM #{showCompactCorrectorLoad sheetCorrectorLoad sheetCorrectorState} $nothing $maybe CorrectionInfo{ciSubmissions,ciCorrected,ciTot} <- getCorrSheetStatus ciCorrector shn $maybe nrNew <- getCorrNewAssignment ciCorrector shn #{ciSubmissions} $# #{ciAssigned} `ciSubmissions` is here always identical to `ciAssigned` and also works for `ciCorrector == Nothing`. ciAssigned only useful in aggregate maps like `sheetMap` (+#{nrNew}) $nothing #{ciSubmissions} #{ciSubmissions - ciCorrected} #{showAvgsDays ciTot ciCorrected} $nothing $if 0 < length sheetNames
$forall shn <- sheetNames ^{simpleLinkI (SomeMessage MsgMenuCorrectors) (CSheetR tid ssh csh shn SCorrR)} ^{btnWdgt}

_{MsgAssignSubmissionsRandomWarning}