ui: make flat the default, toggle with T, add --tree/-T/-F flags
This commit is contained in:
parent
15c666702b
commit
89712fe81d
@ -80,7 +80,7 @@ asInit d reset ui@UIState{
|
|||||||
as = map asItemAccountName displayitems
|
as = map asItemAccountName displayitems
|
||||||
|
|
||||||
uopts' = uopts{cliopts_=copts{reportopts_=ropts'}}
|
uopts' = uopts{cliopts_=copts{reportopts_=ropts'}}
|
||||||
ropts' = ropts{accountlistmode_=if flat_ ropts then ALFlat else ALTree}
|
ropts' = ropts{accountlistmode_=if tree_ ropts then ALTree else ALFlat}
|
||||||
|
|
||||||
q = queryFromOpts d ropts
|
q = queryFromOpts d ropts
|
||||||
|
|
||||||
@ -97,7 +97,7 @@ asInit d reset ui@UIState{
|
|||||||
displayitem (fullacct, shortacct, indent, bal) =
|
displayitem (fullacct, shortacct, indent, bal) =
|
||||||
AccountsScreenItem{asItemIndentLevel = indent
|
AccountsScreenItem{asItemIndentLevel = indent
|
||||||
,asItemAccountName = fullacct
|
,asItemAccountName = fullacct
|
||||||
,asItemDisplayAccountName = replaceHiddenAccountsNameWith "All" $ if flat_ ropts' then fullacct else shortacct
|
,asItemDisplayAccountName = replaceHiddenAccountsNameWith "All" $ if tree_ ropts' then shortacct else fullacct
|
||||||
,asItemRenderedAmounts = map showAmountWithoutPrice amts -- like showMixedAmountOneLineWithoutPrice
|
,asItemRenderedAmounts = map showAmountWithoutPrice amts -- like showMixedAmountOneLineWithoutPrice
|
||||||
}
|
}
|
||||||
where
|
where
|
||||||
@ -219,10 +219,10 @@ asDraw UIState{aopts=UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}
|
|||||||
,if ishistorical
|
,if ishistorical
|
||||||
then selectedstr "historical" <+> str "/period"
|
then selectedstr "historical" <+> str "/period"
|
||||||
else str "historical/" <+> selectedstr "period")
|
else str "historical/" <+> selectedstr "period")
|
||||||
,("F"
|
,("T"
|
||||||
,if flat_ ropts
|
,if tree_ ropts
|
||||||
then str "tree/" <+> selectedstr "flat"
|
then str "flat/" <+> selectedstr "tree"
|
||||||
else selectedstr "tree" <+> str "/flat")
|
else selectedstr "flat" <+> str "/tree")
|
||||||
,("-+", str "depth")
|
,("-+", str "depth")
|
||||||
--,("/", "filter")
|
--,("/", "filter")
|
||||||
--,("DEL", "unfilter")
|
--,("DEL", "unfilter")
|
||||||
@ -332,7 +332,7 @@ asHandle ui0@UIState{
|
|||||||
|
|
||||||
-- display mode/query toggles
|
-- display mode/query toggles
|
||||||
VtyEvent (EvKey (KChar 'H') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleHistorical ui
|
VtyEvent (EvKey (KChar 'H') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleHistorical ui
|
||||||
VtyEvent (EvKey (KChar 'F') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleFlat ui
|
VtyEvent (EvKey (KChar 'T') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleTree ui
|
||||||
VtyEvent (EvKey (KChar 'Z') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleEmpty ui
|
VtyEvent (EvKey (KChar 'Z') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleEmpty ui
|
||||||
VtyEvent (EvKey (KChar 'R') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleReal ui
|
VtyEvent (EvKey (KChar 'R') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleReal ui
|
||||||
VtyEvent (EvKey (KChar 'U') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleUnmarked ui
|
VtyEvent (EvKey (KChar 'U') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleUnmarked ui
|
||||||
|
|||||||
@ -64,7 +64,7 @@ rsInit d reset ui@UIState{aopts=UIOpts{cliopts_=CliOpts{reportopts_=ropts}}, ajo
|
|||||||
where
|
where
|
||||||
-- gather arguments and queries
|
-- gather arguments and queries
|
||||||
-- XXX temp
|
-- XXX temp
|
||||||
inclusive = not (flat_ ropts) || rsForceInclusive
|
inclusive = tree_ ropts || rsForceInclusive
|
||||||
thisacctq = Acct $ (if inclusive then accountNameToAccountRegex else accountNameToAccountOnlyRegex) rsAccount
|
thisacctq = Acct $ (if inclusive then accountNameToAccountRegex else accountNameToAccountOnlyRegex) rsAccount
|
||||||
ropts' = ropts{
|
ropts' = ropts{
|
||||||
depth_=Nothing
|
depth_=Nothing
|
||||||
@ -186,7 +186,7 @@ rsDraw UIState{aopts=UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}
|
|||||||
|
|
||||||
where
|
where
|
||||||
ishistorical = balancetype_ ropts == HistoricalBalance
|
ishistorical = balancetype_ ropts == HistoricalBalance
|
||||||
inclusive = not (flat_ ropts) || rsForceInclusive
|
inclusive = tree_ ropts || rsForceInclusive
|
||||||
|
|
||||||
toplabel =
|
toplabel =
|
||||||
withAttr ("border" <> "bold") (str $ T.unpack $ replaceHiddenAccountsNameWith "All" rsAccount)
|
withAttr ("border" <> "bold") (str $ T.unpack $ replaceHiddenAccountsNameWith "All" rsAccount)
|
||||||
@ -233,10 +233,10 @@ rsDraw UIState{aopts=UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}
|
|||||||
,if ishistorical
|
,if ishistorical
|
||||||
then selectedstr "historical" <+> str "/period"
|
then selectedstr "historical" <+> str "/period"
|
||||||
else str "historical/" <+> selectedstr "period")
|
else str "historical/" <+> selectedstr "period")
|
||||||
,("F"
|
,("T"
|
||||||
,if inclusive
|
,if inclusive
|
||||||
then selectedstr "inclusive" <+> str "/exclusive"
|
then str "this/" <+> selectedstr "+subs"
|
||||||
else str "inclusive/" <+> selectedstr "exclusive")
|
else selectedstr "this" <+> str "/+subs")
|
||||||
-- ,("a", "add")
|
-- ,("a", "add")
|
||||||
-- ,("g", "reload")
|
-- ,("g", "reload")
|
||||||
-- ,("q", "quit")
|
-- ,("q", "quit")
|
||||||
@ -323,7 +323,7 @@ rsHandle ui@UIState{
|
|||||||
|
|
||||||
-- display mode/query toggles
|
-- display mode/query toggles
|
||||||
VtyEvent (EvKey (KChar 'H') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleHistorical ui
|
VtyEvent (EvKey (KChar 'H') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleHistorical ui
|
||||||
VtyEvent (EvKey (KChar 'F') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleFlat ui
|
VtyEvent (EvKey (KChar 'T') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleTree ui
|
||||||
VtyEvent (EvKey (KChar 'Z') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleEmpty ui
|
VtyEvent (EvKey (KChar 'Z') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleEmpty ui
|
||||||
VtyEvent (EvKey (KChar 'R') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleReal ui
|
VtyEvent (EvKey (KChar 'R') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleReal ui
|
||||||
VtyEvent (EvKey (KChar 'U') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleUnmarked ui
|
VtyEvent (EvKey (KChar 'U') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleUnmarked ui
|
||||||
|
|||||||
@ -33,7 +33,8 @@ uiflags = [
|
|||||||
-- "show balance change accumulated across periods (in multicolumn reports)"
|
-- "show balance change accumulated across periods (in multicolumn reports)"
|
||||||
-- ,flagNone ["historical","H"] (\opts -> setboolopt "historical" opts)
|
-- ,flagNone ["historical","H"] (\opts -> setboolopt "historical" opts)
|
||||||
-- "show historical ending balance in each period (includes postings before report start date)\n "
|
-- "show historical ending balance in each period (includes postings before report start date)\n "
|
||||||
,flagNone ["flat"] (\opts -> setboolopt "flat" opts) "show full account names, unindented"
|
,flagNone ["flat","F"] (\opts -> setboolopt "flat" opts) "show full account names, unindented (default)"
|
||||||
|
,flagNone ["tree","T"] (\opts -> setboolopt "tree" opts) "show accounts as a tree"
|
||||||
-- ,flagReq ["drop"] (\s opts -> Right $ setopt "drop" s opts) "N" "with --flat, omit this many leading account name components"
|
-- ,flagReq ["drop"] (\s opts -> Right $ setopt "drop" s opts) "N" "with --flat, omit this many leading account name components"
|
||||||
-- ,flagReq ["format"] (\s opts -> Right $ setopt "format" s opts) "FORMATSTR" "use this custom line format"
|
-- ,flagReq ["format"] (\s opts -> Right $ setopt "format" s opts) "FORMATSTR" "use this custom line format"
|
||||||
-- ,flagNone ["no-elide"] (\opts -> setboolopt "no-elide" opts) "don't compress empty parent accounts on one line"
|
-- ,flagNone ["no-elide"] (\opts -> setboolopt "no-elide" opts) "don't compress empty parent accounts on one line"
|
||||||
|
|||||||
@ -108,13 +108,13 @@ toggleEmpty ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=rop
|
|||||||
where
|
where
|
||||||
toggleEmpty ropts = ropts{empty_=not $ empty_ ropts}
|
toggleEmpty ropts = ropts{empty_=not $ empty_ ropts}
|
||||||
|
|
||||||
-- | Toggle between flat and tree mode. If in the third "default" mode, go to flat mode.
|
-- | Toggle between flat and tree mode. If current mode is unspecified/default, assume it's flat.
|
||||||
toggleFlat :: UIState -> UIState
|
toggleTree :: UIState -> UIState
|
||||||
toggleFlat ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}} =
|
toggleTree ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}} =
|
||||||
ui{aopts=uopts{cliopts_=copts{reportopts_=toggleFlatMode ropts}}}
|
ui{aopts=uopts{cliopts_=copts{reportopts_=toggleTreeMode ropts}}}
|
||||||
where
|
where
|
||||||
toggleFlatMode ropts@ReportOpts{accountlistmode_=ALFlat} = ropts{accountlistmode_=ALTree}
|
toggleTreeMode ropts@ReportOpts{accountlistmode_=ALTree} = ropts{accountlistmode_=ALFlat}
|
||||||
toggleFlatMode ropts = ropts{accountlistmode_=ALFlat}
|
toggleTreeMode ropts = ropts{accountlistmode_=ALTree}
|
||||||
|
|
||||||
-- | Toggle between historical balances and period balances.
|
-- | Toggle between historical balances and period balances.
|
||||||
toggleHistorical :: UIState -> UIState
|
toggleHistorical :: UIState -> UIState
|
||||||
|
|||||||
@ -99,11 +99,11 @@ helpDialog copts =
|
|||||||
,str "accounts screen:"
|
,str "accounts screen:"
|
||||||
,renderKey ("-+0123456789", "set depth limit")
|
,renderKey ("-+0123456789", "set depth limit")
|
||||||
,renderKey ("H", "toggle period balance (shows change) or\nhistorical balance (includes older postings)")
|
,renderKey ("H", "toggle period balance (shows change) or\nhistorical balance (includes older postings)")
|
||||||
,renderKey ("F", "toggle tree (amounts include subaccounts) or\nflat mode (amounts exclude subaccounts\nexcept when account is depth-clipped)")
|
,renderKey ("T", "toggle tree (amounts include subaccounts) or\nflat mode (amounts exclude subaccounts\nexcept at depth limit)")
|
||||||
,str " "
|
,str " "
|
||||||
,str "register screen:"
|
,str "register screen:"
|
||||||
,renderKey ("H", "toggle period or historical total")
|
,renderKey ("H", "toggle period or historical total")
|
||||||
,renderKey ("F", "toggle subaccount transaction inclusion\n(and tree/flat mode)")
|
,renderKey ("T", "toggle inclusion of subaccount transactions\n(and tree/flat mode on accounts screen)")
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
-- ,vBox [
|
-- ,vBox [
|
||||||
|
|||||||
@ -66,8 +66,11 @@ Any QUERYARGS are interpreted as a hledger search query which filters the data.
|
|||||||
`--change`
|
`--change`
|
||||||
: show period balances (changes) at startup instead of historical balances
|
: show period balances (changes) at startup instead of historical balances
|
||||||
|
|
||||||
`--flat`
|
`-F --flat`
|
||||||
: show full account names, unindented
|
: show full account names, unindented (default)
|
||||||
|
|
||||||
|
`-T --tree`
|
||||||
|
: show accounts as a tree
|
||||||
|
|
||||||
hledger input options:
|
hledger input options:
|
||||||
|
|
||||||
@ -156,15 +159,14 @@ It lists accounts and their balances, like hledger's balance command.
|
|||||||
By default, it shows all accounts and their latest ending balances (including the balances of subaccounts).
|
By default, it shows all accounts and their latest ending balances (including the balances of subaccounts).
|
||||||
if you specify a query on the command line, it shows just the matched accounts and the balances from matched transactions.
|
if you specify a query on the command line, it shows just the matched accounts and the balances from matched transactions.
|
||||||
|
|
||||||
Account names are normally indented to show the hierarchy (tree mode).
|
Account names are shown as a flat list by default. Press `T` to toggle tree mode.
|
||||||
To see less detail, set a depth limit by pressing a number key, `1` to `9`.
|
In flat mode, account balances are exclusive of subaccounts, except where subaccounts are hidden by a depth limit (see below).
|
||||||
`0` shows even less detail, collapsing all accounts to a single total.
|
In tree mode, all account balances are inclusive of subaccounts.
|
||||||
`-` and `+` (or `=`) decrease and increase the depth limit.
|
|
||||||
To remove the depth limit, set it higher than the maximum account depth, or press `ESCAPE`.
|
|
||||||
|
|
||||||
`F` toggles flat mode, in which accounts are shown as a flat list, with their full names.
|
To see less detail, press a number key, `1` to `9`, to set a depth limit.
|
||||||
In this mode, account balances exclude subaccounts, except for accounts at the depth limit
|
Or use `-` to decrease and `+`/`=` to increase the depth limit.
|
||||||
(as with hledger's balance command).
|
`0` shows even less detail, collapsing all accounts to a single total.
|
||||||
|
To remove the depth limit, set it higher than the maximum account depth, or press `ESCAPE`.
|
||||||
|
|
||||||
`H` toggles between showing historical balances or period balances.
|
`H` toggles between showing historical balances or period balances.
|
||||||
Historical balances (the default) are ending balances at the end of the report period,
|
Historical balances (the default) are ending balances at the end of the report period,
|
||||||
@ -209,13 +211,11 @@ Similar to the accounts screen, the historical total is affected by transactions
|
|||||||
If the historical total is not disturbed by a filter query, it will be the
|
If the historical total is not disturbed by a filter query, it will be the
|
||||||
running historical balance you would see on a bank register for the current account.
|
running historical balance you would see on a bank register for the current account.
|
||||||
|
|
||||||
If the accounts screen was in tree mode,
|
Transactions affecting this account's subaccounts will be shown if
|
||||||
the register screen will include transactions from both the current account and its subaccounts.
|
the accounts screen was in tree mode,
|
||||||
If the accounts screen was in flat mode, and a non-depth-clipped account was selected,
|
or if it was in flat mode but the selected account had depth-clipped subaccounts.
|
||||||
the register screen will exclude transactions from subaccounts.
|
In other words, the register always shows just the transactions contributing to the balance on the accounts screen.
|
||||||
In other words, the register always shows the transactions responsible for the period balance
|
Tree mode/flat mode can be toggled with `T` here also.
|
||||||
shown on the accounts screen.
|
|
||||||
As on the accounts screen, this can be toggled with `F`.
|
|
||||||
|
|
||||||
`U` toggles filtering by [unmarked status](/journal.html#status), showing or hiding unmarked transactions.
|
`U` toggles filtering by [unmarked status](/journal.html#status), showing or hiding unmarked transactions.
|
||||||
Similarly, `P` toggles pending transactions, and `C` toggles cleared transactions.
|
Similarly, `P` toggles pending transactions, and `C` toggles cleared transactions.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user