51 lines
1.7 KiB
Haskell
51 lines
1.7 KiB
Haskell
-- The balance sheet screen, like the accounts screen but restricted to balance sheet accounts.
|
|
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
{-# LANGUAGE RecordWildCards #-}
|
|
|
|
module Hledger.UI.BalancesheetScreen
|
|
(bsNew
|
|
,bsUpdate
|
|
,bsDraw
|
|
,bsHandle
|
|
)
|
|
where
|
|
|
|
import Brick hiding (bsDraw)
|
|
import Brick.Widgets.List
|
|
import Lens.Micro.Platform
|
|
|
|
import Hledger
|
|
import Hledger.Cli hiding (mode, progname, prognameandversion)
|
|
import Hledger.UI.UIOptions
|
|
import Hledger.UI.UITypes
|
|
import Hledger.UI.UIUtils
|
|
import Hledger.UI.UIScreens
|
|
import Hledger.UI.AccountsScreen (asDrawHelper, handleHelpMode, handleMinibufferMode, asHandleNormalMode)
|
|
|
|
|
|
bsDraw :: UIState -> [Widget Name]
|
|
bsDraw ui = dlogUiTrace "bsDraw" $ asDrawHelper ui ropts' scrname showbalchgkey
|
|
where
|
|
scrname = "balance sheet"
|
|
ropts' = (_rsReportOpts $ reportspec_ $ uoCliOpts $ aopts ui){balanceaccum_=Historical}
|
|
showbalchgkey = False
|
|
|
|
bsHandle :: BrickEvent Name AppEvent -> EventM Name UIState ()
|
|
bsHandle ev = do
|
|
ui0 <- get'
|
|
dlogUiTraceM "bsHandle"
|
|
case ui0 of
|
|
ui1@UIState{aMode=mode, aScreen=BS sst} -> case mode of
|
|
Normal -> asHandleNormalMode ui scr ev
|
|
Minibuffer _ ed -> handleMinibufferMode ui ed ev
|
|
Help -> handleHelpMode ui ev
|
|
where
|
|
scr = BS
|
|
-- save the currently selected account, in case we leave this screen and lose the selection
|
|
selacct = case listSelectedElement $ _assList sst of
|
|
Just (_, AccountsScreenItem{..}) -> asItemAccountName
|
|
Nothing -> sst ^. assSelectedAccount
|
|
ui = ui1{aScreen=scr sst{_assSelectedAccount=selacct}}
|
|
_ -> dlogUiTraceM "bsHandle" >> errorWrongScreenType "event handler"
|