-- | Options for the Balance report. module Penny.Cabin.Balance.Options where import qualified Data.Text as X import qualified Penny.Lincoln as L import qualified Penny.Cabin.Chunk as Chunk import qualified Penny.Cabin.Colors as C import qualified Penny.Cabin.Options as O import qualified Penny.Shield as S import qualified Penny.Cabin.Colors.DarkBackground as DB import qualified Penny.Copper.DateTime as DT import qualified Penny.Lincoln.Balance as Bal data Options = Options { drCrColors :: C.DrCrColors , baseColors :: C.BaseColors , balanceFormat :: L.BottomLine -> X.Text , colorPref :: Chunk.Colors , showZeroBalances :: O.ShowZeroBalances , convert :: Maybe (L.Commodity, L.DateTime) , defaultTimeZone :: DT.DefaultTimeZone } balanceAsIs :: L.BottomLine -> X.Text balanceAsIs n = case n of L.Zero -> X.pack "--" L.NonZero c -> X.pack . show . L.unQty . Bal.qty $ c defaultOptions :: S.Runtime -> Options defaultOptions rt = Options { drCrColors = DB.drCrColors , baseColors = DB.baseColors , balanceFormat = balanceAsIs , colorPref = O.maxCapableColors rt , showZeroBalances = O.ShowZeroBalances False , convert = Nothing , defaultTimeZone = DT.utcDefault }