summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cady <d@jerkface.net>2022-10-20 16:00:13 -0400
committerAndrew Cady <d@jerkface.net>2022-10-20 16:33:48 -0400
commit3015c67066f6aadc0a2fb0faad027623b8c4f225 (patch)
treedb9281645ec2385746b83cdf9da69fb6e5b85618
parent23120dee0f5b89ff171bd3db10ddf636fd34d5c7 (diff)
terse read/show instances for Performance
-rw-r--r--package.yaml2
-rwxr-xr-xrepgoal.hs19
2 files changed, 16 insertions, 5 deletions
diff --git a/package.yaml b/package.yaml
index 8fe8bbc..441c46e 100644
--- a/package.yaml
+++ b/package.yaml
@@ -13,6 +13,8 @@ dependencies:
13- brick 13- brick
14- format-numbers 14- format-numbers
15- text 15- text
16- generic-data
17- pretty-simple
16 18
17executables: 19executables:
18 repgoal: 20 repgoal:
diff --git a/repgoal.hs b/repgoal.hs
index 86fba80..de0ca68 100755
--- a/repgoal.hs
+++ b/repgoal.hs
@@ -12,6 +12,8 @@
12{-# language TemplateHaskell #-} 12{-# language TemplateHaskell #-}
13{-# language ViewPatterns #-} 13{-# language ViewPatterns #-}
14{-# language OverloadedStrings #-} 14{-# language OverloadedStrings #-}
15{-# language DeriveGeneric #-}
16{-# language DerivingVia #-}
15import Rebase.Prelude hiding (toList, on, (<+>), Max) 17import Rebase.Prelude hiding (toList, on, (<+>), Max)
16import qualified Rebase.Prelude as Prelude 18import qualified Rebase.Prelude as Prelude
17import Control.Lens hiding ((<|)) 19import Control.Lens hiding ((<|))
@@ -63,19 +65,24 @@ import Brick.AttrMap as A
63import Brick.Util (fg, bg, on, clamp) 65import Brick.Util (fg, bg, on, clamp)
64import Brick.Widgets.Core 66import Brick.Widgets.Core
65import Brick.Widgets.Table 67import Brick.Widgets.Table
68import Text.Pretty.Simple (pPrint)
69
70import GHC.Generics (Generic)
71import Generic.Data
72import Generic.Data.Microsurgery
66 73
67data Performance = Achieved { 74data Performance = Achieved {
68 achievedReps :: Integer, 75 achievedReps :: Integer,
69 achievedWeight :: Rational 76 achievedWeight :: Rational
70} 77} deriving Generic deriving (Read, Show) via Surgery Derecordify Performance
71 78
72data LiftRecord = LiftRecord { 79data LiftRecord = LiftRecord {
73 liftName :: Text, 80 liftName :: Text,
74 stats :: [Performance] 81 stats :: [Performance]
75} 82} deriving Generic deriving (Read, Show) via Surgery Derecordify LiftRecord
76 83
77initial :: [LiftRecord] 84initial' :: [LiftRecord]
78initial = 85initial' =
79 [ 86 [
80 LiftRecord "Squat" [Achieved 6 270, Achieved 8 255, Achieved 5 285, Achieved 10 255, Achieved 7 280], 87 LiftRecord "Squat" [Achieved 6 270, Achieved 8 255, Achieved 5 285, Achieved 10 255, Achieved 7 280],
81 LiftRecord "Bench" [Achieved 7 190, Achieved 9 180, Achieved 4 205, Achieved 11 180, Achieved 8 200], 88 LiftRecord "Bench" [Achieved 7 190, Achieved 9 180, Achieved 4 205, Achieved 11 180, Achieved 8 200],
@@ -195,10 +202,12 @@ powerClean = clean * 80 / 100
195pushPress = press * 100 / 75 202pushPress = press * 100 / 75
196jerk = pushPress / 100 * 85 203jerk = pushPress / 100 * 85
197 204
198main :: IO () 205main, main' :: IO ()
206main' = pPrint initial'
199main = do 207main = do
200 let buildVty = V.mkVty V.defaultConfig 208 let buildVty = V.mkVty V.defaultConfig
201 vty <- buildVty 209 vty <- buildVty
202 -- liftIO $ setMode (outputIface vty) Mouse True 210 -- liftIO $ setMode (outputIface vty) Mouse True
203 chan <- newBChan 10 211 chan <- newBChan 10
212 initial <- read <$> readFile "targets.dat" :: IO [LiftRecord]
204 void $ customMain vty buildVty (Just chan) (theApp) (St initial Week1) 213 void $ customMain vty buildVty (Just chan) (theApp) (St initial Week1)