diff --git a/messages/uniworx/de.msg b/messages/uniworx/de.msg index 4326f365c..4e5ddb679 100644 --- a/messages/uniworx/de.msg +++ b/messages/uniworx/de.msg @@ -407,8 +407,9 @@ SheetTypeNotGraded: Unbewertet SheetTypeInfoNotGraded: Blätter ohne Wertung werden nirgends angerechnet, die Bewertung durch den Korrektor dient lediglich zur Information der Teilnehmer. SheetTypeInfoBonus: Bonus Blätter zählen normal, erhöhen aber nicht die maximal erreichbare Punktzahl bzw. Anzahl zu bestehender Blätter. SheetGradingBonusIncluded: Erzielte Bonuspunkte wurden hier bereits zu den erreichten normalen Punkten hinzugezählt. -SheetGradingSummaryTitle n@Int: Zusammenfassung über alle #{display n} Blätter -SubmissionGradingSummaryTitle n@Int: Zusammenfassung über alle #{display n} Abgaben +SummaryTitle: Zusammenfassung über alle +SheetGradingSummaryTitle count@Integer: #{display count} Blätter +SubmissionGradingSummaryTitle count@Integer: #{display count} Abgaben SheetTypeBonus': Bonus SheetTypeNormal': Normal diff --git a/src/Handler/Utils/SheetType.hs b/src/Handler/Utils/SheetType.hs index 9b83f6270..43b98a92f 100644 --- a/src/Handler/Utils/SheetType.hs +++ b/src/Handler/Utils/SheetType.hs @@ -9,19 +9,19 @@ import Utils.Lens addBonusToPoints :: SheetTypeSummary -> SheetTypeSummary addBonusToPoints sts = - update _achievedPoints _sumSheetsPoints $ - update _achievedPasses _numSheetsPasses sts + sts & _normalSummary . _achievedPasses %~ (min passmax . (passbonus +)) + & _normalSummary . _achievedPoints %~ (min ptsmax . (ptsbonus +)) where - update lachieved lmax s = - let bonus = s ^. _bonusSummary . lachieved - valmax = s ^. _normalSummary . lmax - in s & _normalSummary . lachieved %~ min valmax . (bonus +) + passmax = sts ^. _normalSummary . _numMarkedPasses + passbonus = sts ^. _bonusSummary . _achievedPasses + ptsmax = sts ^. _normalSummary . _sumMarkedPoints + ptsbonus = sts ^. _bonusSummary . _achievedPoints -gradeSummaryWidget :: RenderMessage UniWorX msg => (Int -> msg) -> SheetTypeSummary -> Widget +gradeSummaryWidget :: RenderMessage UniWorX msg => (Integer -> msg) -> SheetTypeSummary -> Widget gradeSummaryWidget title sts = let SheetTypeSummary{..} = addBonusToPoints sts sumSummaries = normalSummary <> bonusSummary <> informationalSummary & _numSheets %~ (<> numNotGraded) - hasPassings = positiveSum $ numSheetsPasses sumSummaries + hasPasses = positiveSum $ numSheetsPasses sumSummaries hasMarkedPasses = positiveSum $ numMarkedPasses sumSummaries hasPoints = positiveSum $ numSheetsPoints sumSummaries hasMarkedPoints = positiveSum $ numMarkedPoints sumSummaries diff --git a/src/Model.hs b/src/Model.hs index 91de5c48c..9df99df4b 100644 --- a/src/Model.hs +++ b/src/Model.hs @@ -10,7 +10,7 @@ import ClassyPrelude.Yesod import Database.Persist.Quasi -- import Data.Time -- import Data.ByteString -import Model.Types +import Model.Types hiding (_maxPoints, _passingPoints) import Cron.Types import Data.Aeson (Value) diff --git a/src/Model/Types.hs b/src/Model/Types.hs index 1d7389038..ba3fca139 100644 --- a/src/Model/Types.hs +++ b/src/Model/Types.hs @@ -123,6 +123,8 @@ fromPoints = round instance DisplayAble Points +instance DisplayAble a => DisplayAble (Sum a) where + display (Sum x) = display x data SheetGrading = Points { maxPoints :: Points } @@ -162,7 +164,7 @@ data SheetGradeSummary = SheetGradeSummary , numMarked :: Count -- Number of already marked sheets , numMarkedPasses :: Count -- Number of already marked sheets with passes , numMarkedPoints :: Count -- Number of already marked sheets with points - , sumMarkedPoints :: Sum Point -- Achieveable points within marked sheets + , sumMarkedPoints :: Sum Points -- Achieveable points within marked sheets -- , achievedPasses :: Count -- Achieved passes (within marked sheets) , achievedPoints :: Sum Points -- Achieved points (within marked sheets) @@ -214,7 +216,7 @@ data SheetTypeSummary = SheetTypeSummary { normalSummary , bonusSummary , informationalSummary :: SheetGradeSummary - , numNotGraded :: Sum Int + , numNotGraded :: Count } deriving (Generic, Read, Show, Eq) instance Monoid SheetTypeSummary where diff --git a/templates/widgets/gradingSummary.hamlet b/templates/widgets/gradingSummary.hamlet index cb389d6a0..204f4fd28 100644 --- a/templates/widgets/gradingSummary.hamlet +++ b/templates/widgets/gradingSummary.hamlet @@ -1,21 +1,25 @@ $# Displays gradings Summary for various purposes $# Expects several variables: $# sumSummaries :: SheetGradeSummary -- summary over all grading types -$# hasPassing :: Maybe Int -- Should Passing be displayed? +$# hasPasses :: Maybe Int -- Should Passing be displayed? $# hasMarkedPasses :: Maybe Int -- Number of marked pass-sheets $# hasPoints :: Maybe Points -- Should Points be displayed? $# hasMarkedPoints :: Maybe Int -- Number of marked point-sheets $# --
-

_{title $ getSum $ numSheets $ sumSummaries} +

_{MsgSummaryTitle} _{title $ getSum $ numSheets $ sumSummaries} + $maybe _ <- positiveSum $ summary ^. _numSheets +
- $# empty cell for row headers - $maybe _ <- hasPassings - _{MsgSheetGradingPassing'} + $# empty cell for row headers + $maybe _ <- hasMarkedPasses + _{MsgCorrected} + $maybe _ <- hasPasses + _{MsgSheetGradingPassing'} + $maybe _ <- hasMarkedPoints + _{MsgCorrected} $maybe _ <- hasPoints - _{MsgSheetGradingPoints'} + _{MsgSheetGradingPoints'} _{MsgSheetGradingCount'} $# Number of Sheet/Submissions used for calculating maximum passes/points $forall row <- rowWdgts @@ -23,14 +27,18 @@ $# -- $maybe nrNoGrade <- positiveSum $ numNotGraded
_{MsgSheetTypeNotGraded} - $maybe _ <- hasPassings + $maybe _ <- hasMarkedPasses - $maybe _ <- hasPoints + $maybe _ <- hasPasses + + $maybe _ <- hasMarkedPoints + $maybe _ <- hasPoints + #{display nrNoGrade} $maybe _ <- positiveSum $ bonusSummary ^. _numSheets

_{MsgSheetTypeInfoBonus} # - $maybe _ <- positiveSum =<< (bonusSummary ^. _achievedPoints) + $maybe _ <- positiveSum $ bonusSummary ^. _achievedPoints _{MsgSheetGradingBonusIncluded} $maybe _ <- positiveSum $ informationalSummary ^. _numSheets

_{MsgSheetTypeInfoNotGraded} diff --git a/templates/widgets/gradingSummaryRow.hamlet b/templates/widgets/gradingSummaryRow.hamlet index 42dc8da26..0b40eeba3 100644 --- a/templates/widgets/gradingSummaryRow.hamlet +++ b/templates/widgets/gradingSummaryRow.hamlet @@ -2,7 +2,7 @@ $# Displays one row of the grading summary $# Expects several variables: $# summary :: SheetGradeSummary -- summary to display $# sumHeader :: UniWorXMessage -- row header -$# hasPassing :: Maybe Int -- Should Passing be displayed? +$# hasPasses :: Maybe Int -- Should Passing be displayed? $# hasMarkedPasses :: Maybe Int -- Number of marked pass-sheets $# hasPoints :: Maybe Points -- Should Points be displayed? $# hasMarkedPoints :: Maybe Int -- Number of marked point-sheets @@ -10,29 +10,31 @@ $# $# TODO: Durschnittliche Punktzahl anzeigen $# TODO: Extra-Spalte für Punkte Bewertet = numMarkedPoints / Punkte Gesamt = sumSheetPoints $# - $maybe nrSheets <- positiveSum $ summary ^. _numSheets -

_{sumHeader} - $maybe _ <- hasPassings - $with Sum pmax <- summary ^. _numGradePasses - $maybe Sum pacv <- summary ^. _achievedPasses - - $if pmax /= 0 - #{textPercentInt pacv pmax} - - #{display pacv} / #{display pmax} - $nothing - - #{display pmax } + $maybe _ <- hasMarkedPasses + $with Sum pmax <- summary ^. _numMarkedPasses + $with Sum pacv <- summary ^. _achievedPasses + + $if pmax > 0 + #{textPercentInt pacv pmax} + + #{display pacv} / #{display pmax} + $maybe _ <- hasPasses + + #{display $ summary ^. _numSheetsPasses} + $maybe _ <- hasMarkedPoints + $with Sum pmax <- summary ^. _sumMarkedPoints + $with Sum pacv <- summary ^. _achievedPoints + + $if pmax > 0 + #{textPercent $ realToFrac $ pacv / pmax} + + #{display pacv} / #{display pmax} + \ (_{title $ getSum $ summary ^. _numMarkedPoints}) $maybe _ <- hasPoints - $with Sum pmax <- summary ^. _sumGradePoints - $maybe Sum pacv <- summary ^. _achievedPoints - - $if pmax /= 0 - #{textPercent $ realToFrac $ pacv / pmax} - - #{display pacv} / #{display pmax} - $nothing - - #{display pmax } - #{display nrSheets} \ No newline at end of file + + #{display (summary ^. _sumSheetsPoints)} + \ (_{title $ getSum $ summary ^. _numSheetsPoints}) + #{display $ summary ^. _numSheets} \ No newline at end of file