diff --git a/ChangeLog.md b/ChangeLog.md index c4b542a..f84c758 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -6,6 +6,7 @@ - Return to correct edit menus after editing player stats - Enabled batch editing of player/goalie YTD/lifetime stats - Bugfix: allow user to edit goalie shutouts +- Added line numbers to lifetime player/goalie reports ## 0.9.0 - Bugfix: Display lifetime stats in report, not YTD diff --git a/src/Mtlstats/Report.hs b/src/Mtlstats/Report.hs index 428fcc7..4894957 100644 --- a/src/Mtlstats/Report.hs +++ b/src/Mtlstats/Report.hs @@ -129,7 +129,7 @@ gameStatsReport width s = let criteria (_, ps) = psPoints ps > 0 - in filteredPlayerReport width "GAME" criteria True playerStats + in filteredPlayerReport width "GAME" criteria True False playerStats ++ [""] ++ gameGoalieReport width goalieStats @@ -146,9 +146,9 @@ yearToDateStatsReport width s = let $ filter goalieIsActive $ db^.dbGoalies - in playerReport width "YEAR TO DATE" True playerStats + in playerReport width "YEAR TO DATE" True False playerStats ++ [""] - ++ goalieReport width True goalieStats + ++ goalieReport width True False goalieStats lifetimeStatsReport :: Int -> ProgState -> [String] lifetimeStatsReport width s = let @@ -161,9 +161,9 @@ lifetimeStatsReport width s = let goalieStats = map (\g -> (g, g^.gLifetime)) $ db^.dbGoalies - in playerReport width "LIFETIME" False playerStats + in playerReport width "LIFETIME" False True playerStats ++ [""] - ++ goalieReport width False goalieStats + ++ goalieReport width False True goalieStats gameDate :: GameState -> String gameDate gs = fromMaybe "" $ do @@ -176,6 +176,7 @@ playerReport :: Int -> String -> Bool + -> Bool -> [(Player, PlayerStats)] -> [String] playerReport width label = @@ -186,9 +187,10 @@ filteredPlayerReport -> String -> ((Player, PlayerStats) -> Bool) -> Bool + -> Bool -> [(Player, PlayerStats)] -> [String] -filteredPlayerReport width label criteria showTotals ps = let +filteredPlayerReport width label criteria showTotals lineNumbers ps = let tStats = foldl addPlayerStats newPlayerStats $ map snd ps criteria' = (&&) <$> criteria <*> \(p, _) -> p^.pNumber /= 0 fps = filter criteria' ps @@ -232,8 +234,13 @@ filteredPlayerReport width label criteria showTotals ps = let then label ++ " TOTALS" else "" + lnOverlay = if lineNumbers + then "" : [right 2 $ show x | x <- [(1 :: Int)..]] + else repeat "" + table = overlayLast olayText - $ map (centre width) + $ map (\(ln, line) -> overlay ln $ centre width line) + $ zip lnOverlay $ complexTable ([right, left] ++ repeat right) $ tHeader : body ++ if showTotals then [separator, totals] @@ -244,9 +251,10 @@ filteredPlayerReport width label criteria showTotals ps = let goalieReport :: Int -> Bool + -> Bool -> [(Goalie, GoalieStats)] -> [String] -goalieReport width showTotals goalieData = let +goalieReport width showTotals lineNumbers goalieData = let olayText = if showTotals then "GOALTENDING TOTALS" else "" @@ -285,7 +293,12 @@ goalieReport width showTotals goalieData = let summary = replicate 2 (CellText "") ++ rowCells tData - in map (centre width) + lnOverlay = if lineNumbers + then "" : [right 2 $ show x | x <- [(1 :: Int)..]] + else repeat "" + + in map (\(ln, line) -> overlay ln $ centre width line) + $ zip lnOverlay $ overlayLast olayText $ complexTable ([right, left] ++ repeat right) $ header : body ++ if showTotals