From e4e5b543a57176b2f7178c04e2619f318dfc8cf2 Mon Sep 17 00:00:00 2001 From: SJost Date: Thu, 1 Nov 2018 17:01:40 +0100 Subject: [PATCH] Workaround for unfixed issue #223 --- src/Handler/Sheet.hs | 18 ++++++- templates/widgets/sheetTypeSummary.hamlet | 65 ++++++++++++----------- 2 files changed, 52 insertions(+), 31 deletions(-) diff --git a/src/Handler/Sheet.hs b/src/Handler/Sheet.hs index c0dc152d1..dec893ce7 100644 --- a/src/Handler/Sheet.hs +++ b/src/Handler/Sheet.hs @@ -200,7 +200,23 @@ getSheetListR tid ssh csh = do ] psValidator = def & defaultSorting [("submission-since", SortAsc)] - (SheetTypeSummary{..}, table) <- dbTable psValidator $ DBTable + ------------------------------------------------------ + -- ISSUE #223 + -- The following line does not work; something is wrong with the tell in line 189 above. + -- (SheetTypeSummary{..}, table) <- dbTable psValidator $ DBTable + -- + -- If fixed, remove the following workaround code: + SheetTypeSummary{..} <- do + rows <- runDB $ E.select $ E.from $ \(sheet `E.LeftOuterJoin` (submission `E.InnerJoin` submissionUser)) -> do + E.on $ submission E.?. SubmissionId E.==. submissionUser E.?. SubmissionUserSubmission + E.on $ (E.just $ sheet E.^. SheetId) E.==. submission E.?. SubmissionSheet + E.&&. submissionUser E.?. SubmissionUserUser E.==. E.val muid + E.where_ $ sheet E.^. SheetCourse E.==. E.val cid + return (sheet E.^. SheetType, submission E.?. SubmissionRatingPoints) + return $ foldMap (\(E.Value st, E.Value mbPts) -> sheetTypeSum st (join mbPts)) rows + (_, table) <- dbTable psValidator $ DBTable + -- END ISSUE #223 + ----------------------------------------------------- { dbtSQLQuery = sheetData , dbtColonnade = sheetCol , dbtProj = \DBRow{ dbrOutput = dbrOutput@(Entity _ Sheet{..}, _, _) } diff --git a/templates/widgets/sheetTypeSummary.hamlet b/templates/widgets/sheetTypeSummary.hamlet index f74f5dccf..4a86f9a34 100644 --- a/templates/widgets/sheetTypeSummary.hamlet +++ b/templates/widgets/sheetTypeSummary.hamlet @@ -1,33 +1,38 @@ $with realGrades <- normalSummary <> bonusSummary $with allGrades <- realGrades <> informationalSummary
- $maybe realPoints <- positiveSum (sumGradePoints realGrades) - Gesamtpunktzahl #{display realPoints} - $maybe nPts <- getSum <$> achievedPoints realGrades - \ davon #{display nPts} erreicht - $maybe bPts <- getSum <$> achievedPoints bonusSummary - \ (inklusive #{display bPts} # - $maybe achievedBonus <- positiveSum (sumGradePoints bonusSummary) - von #{display achievedBonus} erreichbaren # - Bonuspunkten) - \ #{textPercent $ realToFrac $ nPts / realPoints} - $maybe fakePoints <- positiveSum (sumGradePoints informationalSummary) - Hinweis: - \ #{display fakePoints} Punkte gab es für Aufgabenblätter, # - welche nicht gewertet wurden, sondern nur informativen Charakter besitzen - $maybe achievedFakes <- getSum <$> achievedPoints informationalSummary - , davon wurden #{display achievedFakes} erreicht - \ #{textPercent $ realToFrac $ achievedFakes / fakePoints} - . -
- $maybe reqPasses <- positiveSum (numGradePasses normalSummary) - Aufgaben zum Bestehen: #{display reqPasses} - $maybe passed <- getSum <$> achievedPasses realGrades - \ davon #{display passed} bestanden - $maybe bonusPassed <- getSum <$> achievedPasses bonusSummary - \ (inklusive #{display bonusPassed} Bonusaufgaben) - . -
- $maybe noGradeSheets <- positiveSum numNotGraded - #{display noGradeSheets} unbewertete Aufgabenblätter. - +
    + $maybe realPoints <- positiveSum (sumGradePoints realGrades) +
  • + Gesamtpunktzahl #{display realPoints} + $maybe nPts <- getSum <$> achievedPoints realGrades + \ davon #{display nPts} erreicht + $maybe bPts <- getSum <$> achievedPoints bonusSummary + \ (inklusive #{display bPts} # + $maybe achievedBonus <- positiveSum (sumGradePoints bonusSummary) + von #{display achievedBonus} erreichbaren # + Bonuspunkten) + \ #{textPercent $ realToFrac $ nPts / realPoints} + $maybe fakePoints <- positiveSum (sumGradePoints informationalSummary) +
  • + Hinweis: + \ #{display fakePoints} Punkte gab es für Aufgabenblätter, # + welche nicht gewertet wurden, sondern nur informativen Charakter besitzen + $maybe achievedFakes <- getSum <$> achievedPoints informationalSummary + , davon wurden #{display achievedFakes} erreicht + \ #{textPercent $ realToFrac $ achievedFakes / fakePoints} + . + + $maybe reqPasses <- positiveSum (numGradePasses normalSummary) +
  • + Aufgaben zum Bestehen: #{display reqPasses} + $maybe passed <- getSum <$> achievedPasses realGrades + \ davon #{display passed} bestanden + $maybe bonusPassed <- getSum <$> achievedPasses bonusSummary + \ (inklusive #{display bonusPassed} Bonusaufgaben) + . + + $maybe noGradeSheets <- positiveSum numNotGraded +
  • + #{display noGradeSheets} unbewertete Aufgabenblätter. +