defined the structure of a goalie report

This commit is contained in:
Jonathan Lamothe 2019-11-28 05:46:56 -05:00
parent 4848e54d81
commit de67628df0
3 changed files with 58 additions and 2 deletions

View File

@ -33,6 +33,7 @@ module Mtlstats.Format
, tableWith , tableWith
, complexTable , complexTable
, overlayLast , overlayLast
, showFloating
) where ) where
import Data.List (transpose) import Data.List (transpose)
@ -185,3 +186,7 @@ overlayLast
overlayLast _ [] = [] overlayLast _ [] = []
overlayLast str [l] = [overlay str l] overlayLast str [l] = [overlay str l]
overlayLast str (l:ls) = l : overlayLast str ls overlayLast str (l:ls) = l : overlayLast str ls
-- | Converts a non-integer into a string
showFloating :: Fractional n => n -> String
showFloating = undefined

View File

@ -213,4 +213,44 @@ playerReport width label ps = let
in rHeader ++ table in rHeader ++ table
goalieReport :: Int -> [(Goalie, GoalieStats)] -> [String] goalieReport :: Int -> [(Goalie, GoalieStats)] -> [String]
goalieReport = undefined goalieReport width goalieData = let
olayText = "GOALTENDING TOTALS"
tData = foldl addGoalieStats newGoalieStats
$ map snd goalieData
header =
[ CellText "NO."
, CellText $ left (length olayText) "GOALTENDER"
, CellText "GP"
, CellText " MIN"
, CellText " GA"
, CellText " SO"
, CellText "AVE"
]
rowCells stats =
[ CellText $ show $ stats^.gsGames
, CellText $ show $ stats^.gsMinsPlayed
, CellText $ show $ stats^.gsGoalsAllowed
, CellText $ show $ stats^.gsShutouts
, CellText $ showFloating $ gsAverage stats
]
body = map
(\(goalie, stats) ->
[ CellText $ show (goalie^.gNumber) ++ " "
, CellText $ show $ goalie^.gName
] ++ rowCells stats)
goalieData
separator
= replicate 2 (CellText "")
++ replicate 5 (CellFill '-')
summary = replicate 2 (CellText "") ++ rowCells tData
in map (centre width)
$ overlayLast olayText
$ complexTable ([right, left] ++ repeat right)
$ header : body ++ [separator, summary]

View File

@ -171,7 +171,10 @@ module Mtlstats.Types (
goalieSearch, goalieSearch,
goalieSearchExact, goalieSearchExact,
goalieSummary, goalieSummary,
goalieIsActive goalieIsActive,
-- ** GoalieStats Helpers
addGoalieStats,
gsAverage
) where ) where
import Control.Monad.Trans.State (StateT) import Control.Monad.Trans.State (StateT)
@ -990,3 +993,11 @@ goalieSummary g = g^.gName ++ " (" ++ show (g^.gNumber) ++ ")"
-- season -- season
goalieIsActive :: Goalie -> Bool goalieIsActive :: Goalie -> Bool
goalieIsActive g = g^.gYtd.gsMinsPlayed /= 0 goalieIsActive g = g^.gYtd.gsMinsPlayed /= 0
-- | Adds two sets of 'GoalieStats'
addGoalieStats :: GoalieStats -> GoalieStats -> GoalieStats
addGoalieStats = undefined
-- | Determines a goalie's average goals allowed per game.
gsAverage :: GoalieStats -> Rational
gsAverage = undefined