;ui: notes (#1387)
This commit is contained in:
parent
9337a66fb5
commit
4aecb9182e
@ -70,28 +70,55 @@ runBrickUi uopts@UIOpts{cliopts_=copts@CliOpts{inputopts_=_iopts,reportspec_=rsp
|
|||||||
|
|
||||||
let
|
let
|
||||||
|
|
||||||
-- depth: is a bit different from other queries. In hledger cli,
|
-- hledger-ui's query handling is currently in flux, mixing old and new approaches.
|
||||||
-- - reportopts{depth_} indicates --depth options
|
-- Related: #1340, #1383, #1387. Some notes and terminology:
|
||||||
-- - reportopts{query_} is the query arguments as a string
|
|
||||||
-- - the report query is based on both of these.
|
-- The *startup query* is the Query generated at program startup, from
|
||||||
-- For hledger-ui, for now, move depth: arguments out of reportopts{query_}
|
-- command line options, arguments, and the current date. hledger CLI
|
||||||
-- and into reportopts{depth_}, so that depth and other kinds of filter query
|
-- uses this.
|
||||||
-- can be displayed independently.
|
|
||||||
|
-- hledger-ui/hledger-web allow the query to be changed at will, creating
|
||||||
|
-- a new *runtime query* each time.
|
||||||
|
|
||||||
|
-- The startup query or part of it can be used as a *constraint query*,
|
||||||
|
-- limiting all runtime queries. hledger-web does this with the startup
|
||||||
|
-- report period, never showing transactions outside those dates.
|
||||||
|
-- hledger-ui does not do this.
|
||||||
|
|
||||||
|
-- A query is a combination of multiple subqueries/terms, which are
|
||||||
|
-- generated from command line options and arguments, ui/web app runtime
|
||||||
|
-- state, and/or the current date.
|
||||||
|
|
||||||
|
-- Some subqueries are generated by parsing freeform user input, which
|
||||||
|
-- can fail. We don't want hledger users to see such failures except:
|
||||||
|
|
||||||
|
-- 1. at program startup, in which case the program exits
|
||||||
|
-- 2. after entering a new freeform query in hledger-ui/web, in which case
|
||||||
|
-- the change is rejected and the program keeps running
|
||||||
|
|
||||||
|
-- So we should parse those kinds of subquery only at those times. Any
|
||||||
|
-- subqueries which do not require parsing can be kept separate. And
|
||||||
|
-- these can be combined to make the full query when needed, eg when
|
||||||
|
-- hledger-ui screens are generating their data. (TODO)
|
||||||
|
|
||||||
|
-- hledger-ui provides special UI for controlling different parts of the query.
|
||||||
|
-- Eg the number/+/- keys for depth, the shift-up/down/left/right keys
|
||||||
|
-- for report period (date), the R and UPC keys for toggling realness
|
||||||
|
-- and status filters, and the / key for entering extra freeform query terms.
|
||||||
|
-- We generally store and show these parts separately, since it's cleaner
|
||||||
|
-- and less redundant/conflicting not to have date: and depth: terms in
|
||||||
|
-- the query text users edit with the / key.
|
||||||
|
|
||||||
uopts' = uopts{
|
uopts' = uopts{
|
||||||
cliopts_=copts{
|
cliopts_=copts{
|
||||||
reportspec_=rspec{
|
reportspec_=rspec{
|
||||||
rsQuery=filteredQuery $ rsQuery rspec, -- as in ReportOptions, with same limitations
|
rsQuery=filteredQuery $ rsQuery rspec, -- query with depth/date parts removed
|
||||||
rsOpts=ropts{
|
rsOpts=ropts{
|
||||||
-- incorporate any depth: query args into depth_,
|
depth_ =queryDepth $ rsQuery rspec, -- query's depth part
|
||||||
-- any date: query args into period_
|
period_=periodfromoptsandargs, -- query's date part
|
||||||
depth_ =queryDepth $ rsQuery rspec,
|
no_elide_=True, -- avoid squashing boring account names, for a more regular tree (unlike hledger)
|
||||||
period_=periodfromoptsandargs,
|
empty_=not $ empty_ ropts, -- show zero items by default, hide them with -E (unlike hledger)
|
||||||
-- always disable boring account name eliding, unlike the CLI, for a more regular tree
|
balancetype_=HistoricalBalance -- show historical balances by default (unlike hledger)
|
||||||
no_elide_=True,
|
|
||||||
-- flip the default for items with zero amounts, show them by default
|
|
||||||
empty_=not $ empty_ ropts,
|
|
||||||
-- show historical balances by default, unlike the CLI
|
|
||||||
balancetype_=HistoricalBalance
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user