Commit Graph

149 Commits

Author SHA1 Message Date
Simon Michael
606d992fc8 cli: disable no-longer-used --binary-filename flag
It was still supported (as a hidden flag) by hledger-web,
and now is not.
2021-08-05 21:51:10 -10:00
Stephen Morgan
c404800fbf ref!: forecast: Move forecast_ from ReportOpts to InputOpts. 2021-08-05 21:10:47 -10:00
Stephen Morgan
b0aa70b27a lib!: Rename the fields of ReportSpec.
This is done to be more consistent with future field naming conventions,
and to make automatic generation of lenses simpler. See discussion in
\#1545.

rsOpts -> _rsReportOpts
rsToday -> _rsDay
rsQuery -> _rsQuery
rsQueryOpts -> _rsQueryOpts
2021-07-23 10:37:08 -10:00
Simon Michael
a83c2f6950 ;cln: ui: clarify watch loop 2021-07-20 20:38:39 -10:00
Simon Michael
87f575e643 ref: bal: rename some report types to clarify/sync with docs
ReportType -> BalanceCalculation
 ChangeReport -> CalcChange
 BudgetReport -> CalcBudget
 ValueChangeReport -> CalcValueChange

BalanceType -> BalanceAccumulation
 PeriodChange -> PerPeriod
 CumulativeChange -> Cumulative
 HistoricalBalance -> Historical

ReportOpts:
 reporttype_ -> balancecalc_
 balancetype_ -> balanceaccum_

CompoundBalanceCommandSpec:
 cbctype -> cbcaccum

Hledger.Reports.ReportOptions:
 balanceTypeOverride -> balanceAccumulationOverride
2021-07-15 14:22:20 -10:00
Stephen Morgan
68e975adf1 lib,cli,ui,web: Remove unused LANGUAGE pragmas. 2021-06-07 17:33:54 -10:00
Stephen Morgan
c87290e5f5 ui: Remove unnecessary CPP when dropping support for GHC 8.4. 2021-06-07 17:33:54 -10:00
Stephen Morgan
4609e79f2c lib,cli,ui,web: A number of AccountName and Journal functions which are
supposed to produce unique sorted use Sets internally to be slightly
more efficient. There is also a new function journalCommodities.
2021-03-23 11:26:30 -07:00
Simon Michael
ffb985f1a2 ui, web: make --man and --info work, similar to hledger
(cf #1410)
2021-03-03 05:57:31 -08:00
Stephen Morgan
e4e533eb9f lib,cli,ui: Replace some uses of String with Text, get rid of some unpacks, clean up showMixed options. 2021-01-02 15:08:09 +11:00
Simon Michael
6158d16443 ;ui: refactor, simplify query 2020-12-12 11:52:15 -08:00
Simon Michael
cc2654b17b ;ui: notes (#1387) 2020-11-15 11:32:43 -08:00
Simon Michael
4aecb9182e ;ui: notes (#1387) 2020-11-15 11:20:40 -08:00
Stephen Morgan
260283e2f1 lib,cli,ui,web: Introduce ReportSpec, which holds ReportOpts, the day of
the report, and the parsed Query.
2020-10-23 14:14:11 -07:00
Stephen Morgan
fcbe511d42 ui,web: Adopt new ReportOptions interface, store literal query string in UIOpts. 2020-10-23 14:14:11 -07:00
Stephen Morgan
07dd30c1e5 lib,cli,ui: Change to consistent naming scheme for Hledger.Utils.Regex. 2020-09-01 11:36:34 +10:00
Stephen Morgan
e5371d5a6a lib,cli,ui,web: Make Regexp a wrapper for Regex. 2020-08-31 12:04:45 +10:00
Stephen Morgan
f5a7c84065 ui: Bump version of vty, present in all supported stackage, to get rid of CPP. 2020-08-29 15:08:28 -07:00
Stephen Morgan
2fd678e415 lib,cli,ui: Remove old CPP directives made redundant by version bounds. 2020-08-29 15:08:28 -07:00
Simon Michael
3f55c23603 ;review, tag all error calls with an easier to find PARTIAL: comment (#1312) 2020-08-05 16:08:33 -07:00
Simon Michael
5b5eab1afe ui: update for new parseQuery (#1312) 2020-08-05 14:18:50 -07:00
Simon Michael
7868da2a48 ui: ESC now restores exactly to initial app state (#1286)
Also resetFilter (DEL/BS key) no longer changes tree/list mode.
2020-07-18 12:24:37 -07:00
Stephen Morgan
51ea6d9f25 lib: Make queryDepth return Maybe Int. 2020-07-16 10:05:53 -07:00
Dmitry Astapov
b7413edf22 lib: --forecast=PERIODICEXPR. Fixes #835, #1236 2020-06-03 15:53:00 -07:00
Simon Michael
dac3920221 ;ui: drop redundant exitSuccess 2020-02-22 11:06:58 -08:00
Simon Michael
3bee9a96c9 ui: simpler forecast toggle: just visibility, no reload (#1193) 2020-02-22 11:06:58 -08:00
Simon Michael
4eba930a5c ui: don't force --auto/--forecast on; merge --future with --forecast (#1193)
Periodic transactions were always on, which meant that periodic
transactions occurring today were always shown, in future or present
mode.

Now, both periodic transactions and display of future transactions are
controlled by --forecast, and toggleable by the F key ("forecast
mode"). The --future flag has been dropped (it still works as a hidden
alias for --forecast, but is deprecated).

It seemed to also make sense to leave auto postings off by default,
like hledger.
2020-02-22 11:06:58 -08:00
Stephen Morgan
74778efcf5 Use nubSort instead of nub . sort. 2020-01-04 08:31:10 -08:00
Simon Michael
5dac8af2ef ;ui: fix build error due to tests rewrite 2019-11-27 21:54:31 -08:00
Mykola Orliuk
5287fe671b ;all: hide RawOpts internals
This way we can ensure we always use only functions from RawOptions.
2019-11-18 17:38:39 -08:00
Mykola Orliuk
78146978f4 ;lib: store raw opts unquoted
It looks like we only need quote when we build query and in some
messages.

Fixes simonmichael/hledger#1079
2019-10-19 14:44:08 -07:00
Caleb Maclennan
11d9e5eb6a code: Strip extraneous trailing whitespace from Haskell sources 2019-07-15 16:40:49 +01:00
Simon Michael
b2e7cc7827 ui: support brick 0.47+ as well
I should have supported latest brick, to get into stackage nightly.
Now it does.

No upper bound, once again; responding lazily to brick API changes
seems less disruptive overall.
2019-03-20 17:38:44 -07:00
Jakub Zárybnický
6becbc78f3 cli, web, ui: Replace withJournalDo* variants 2019-03-01 05:42:30 -08:00
Simon Michael
c5ae8e6891 comments 2019-01-16 13:58:04 -08:00
Simon Michael
89a0c7a308 ui: comment 2018-10-18 14:43:00 -07:00
Simon Michael
2edb1f2705 ui: always enable periodic transactions and transaction modifiers
Rule-based transactions and postings are always generated
(--forecast and --auto are always on).
Experimental.
2018-10-18 14:43:00 -07:00
Simon Michael
ea52c3d620 ui: restore support for fsnotify 0.2.1.2, as well as 0.3.x (#833)
For easier stackage entry.
2018-07-03 12:50:51 +01:00
Simon Michael
a1c0835445 ui: fix a vty version bound typo & possibly build failures (#494)
CPP intended to use old code for vty < 5.15 was always using the new code.
2018-07-03 12:38:40 +01:00
Simon Michael
236101e31a ui: support/require fsnotify 0.3.0.1+
The api has changed, it supports directory events, and might be more robust.
2018-06-05 06:41:13 -07:00
Dmitry Astapov
d82370d10b lib, app, web: remove differences between command line and journal file aliases 2018-04-17 16:09:11 -07:00
Dmitry Astapov
f6ec26e321 lib, app, web, ui: rename readJournalFile[s]WithOpts to readJournalFile, same for tryReader[s]WithOpts 2018-04-17 15:25:02 -07:00
Dmitry Astapov
ecf49b1e4b lib: auto postings generated before amount inference and balance checks (#729) 2018-04-17 14:33:32 -07:00
Simon Michael
178e3a234b ui/web: -E toggles zeroes at startup, with opposite default to cli 2018-03-29 22:35:06 +01:00
Simon Michael
0da68d2cb8 ui: fix some of the hlint warnings 2018-02-18 08:05:33 -08:00
Simon Michael
f8e781462d ui, web: use/support new -V, --forecast, --auto 2017-12-29 16:53:37 -08:00
Simon Michael
e3c4a76119 add & use simpler readJournalFilesWithOpts/InputOpts api 2017-09-14 17:43:32 -07:00
Simon Michael
dc191ec76e cli: refactor: new Commands module
Builtin commands are now gathered more tightly in a single module,
Hledger.Cli.Commands, reducing duplication and facilitating change.

The tests command was difficult and has been dropped for now.

The obsolete convert/info/man commands have been dropped.

cli: refactor: a proper commands list, better Main/Commands separation

The legacy "convert" command has been dropped.

The activity command's module is now named consistently.
2017-09-11 16:50:08 -07:00
Jakub Zárybnický
13a6584440 ui, web: Enable --pivot and --anon in ui and web (#474) 2017-09-04 20:45:31 -07:00
Simon Michael
7e896572a7 make --help and -h the same, drop --man and --info for now (#579) 2017-07-07 02:08:34 +01:00
Simon Michael
1f362101cc ui: addenda for #494 2017-01-25 09:42:10 -08:00
Peter Simons
e3d78fd0db hledger-ui: add support for brick 0.17 and vty 0.15 (#494) 2017-01-25 09:35:47 -08:00
Joshua Chia
d3883bad1f Updated hledger-ui to use brick-0.16 (#479)
brick-0.16 uses Brick.BChan.BChan instead of Control.Concurrent.Chan.Chan.
2017-01-14 10:41:46 -08:00
Simon Michael
7ad31e65a1 ui: comment 2016-12-31 07:54:47 -08:00
Simon Michael
37632a3283 ui: small change to --watch, ignore file add/remove events 2016-12-30 20:01:34 -08:00
Simon Michael
9952f93e97 ui: --watch date tracking fixes
- move the period only if it's "current" (contains the old "today" date)
- make it work on all screens, not just accounts
2016-12-02 15:36:23 -08:00
Simon Michael
e3a7f6697e ui: --watch also tracks the current date, when appropriate
ie, when viewing a "current" period (the current day/week/month/quarter/year),
it will be moved to enclose the current date, if needed, whenever the system date changes.
2016-12-01 19:26:38 -08:00
Simon Michael
1735b62011 ui: oops, watch files only with --watch flag 2016-11-25 07:02:07 -08:00
Simon Michael
148ac4236f ui: --change shows period balances (changes) at startup 2016-11-24 11:32:13 -08:00
Simon Michael
b09b3a7be6 ui: with --watch, react to file changes in real time
Experimental, tested on OSX so far.
Rapid successive file changes can cause it to get stuck.
2016-11-24 11:14:34 -08:00
Simon Michael
0f1108db07 ui: use a custom application event type 2016-11-24 09:10:50 -08:00
Simon Michael
c6e2784eeb ui: use brick 0.12, bump version to 1.0.3 2016-10-31 08:06:29 -07:00
Simon Michael
1d6ca47536 ui: set report period from date: query args, also
date2: and --date2 might also affect it somehow, untested.
2016-08-10 10:24:43 -07:00
Simon Michael
11c6426834 ui: show historical balances whenever possible #392
hledger-ui now tries to show historical balances always, including
when (to limit transactions on the register screen) a report start date
is specified. This means that:

- the accounts screen balances are not disturbed by a start date

- the register screen is now a little better at showing the running
  historical balance. It's still not very good at it; some filter
  queries will cause it to fall back to showing the running total of
  visible transactions. But it's no longer disturbed by Z (nonzero mode)
  or a cur: query term.
2016-08-08 17:50:26 -07:00
Simon Michael
4e1c997965 ui: accounts: always use --no-elide for a more regular tree 2016-08-07 12:17:38 -07:00
Simon Michael
ffb40870ce ui: register: be inclusive for a depth-clipped account, matching displayed balance
And drop F key from register screen again.
2016-07-26 17:28:29 -07:00
Simon Michael
9b0cadc179 ui: support/require brick 0.7+ #379 2016-07-24 18:06:49 -07:00
Simon Michael
47a8eb53c8 ui: refactor: AppState -> UIState, cleanups 2016-06-10 17:54:46 -07:00
Simon Michael
aa75cc69f6 ui: a more general mode mechanism 2016-06-10 08:40:00 -07:00
Simon Michael
6c6222ef85 ui: import Lens.Micro.Platform more correctly 2016-06-09 12:41:26 -07:00
Simon Michael
8bda78a447 ui: refactor, simplify, flatten screen types 2016-06-09 07:47:48 -07:00
Simon Michael
5259605e82 ui: simplify screen naming & importing 2016-06-08 11:03:49 -07:00
Simon Michael
bbcbaf6080 ui: Esc (outside minibuffer) resets, jumps to top 2016-06-07 09:26:16 -07:00
Simon Michael
7a951a8dd7 ui: cleanup, haddocks 2016-06-07 09:03:59 -07:00
Simon Michael
9131eb7c67 ui: allow the filter query to be changed 2016-06-04 11:56:10 -07:00
Simon Michael
d1d6e237ec ui: U key shows only uncleared transactions/postings 2016-06-03 18:32:19 -07:00
Simon Michael
16bb17fbe8 ui: show nonzero (empty) mode, turn it off by default
-E/--empty is now the default for hledger-ui, so accounts with 0 balance
and transactions posting 0 change are shown by default.  The E key
toggles this, entering "nonzero" mode which hides zero items.
2016-06-03 09:01:54 -07:00
Simon Michael
2538d14ea7 lib: textification begins! account names
The first of several conversions from String to (strict) Text, hopefully
reducing space and time usage.

This one shows a small improvement, with GHC 7.10.3 and text-1.2.2.1:

hledger -f data/100x100x10.journal stats
string: <<ghc: 39471064 bytes, 77 GCs, 198421/275048 avg/max bytes residency (3 samples), 2M in use, 0.000 INIT (0.001 elapsed), 0.015 MUT (0.020 elapsed), 0.010 GC (0.014 elapsed) :ghc>>
text:   <<ghc: 39268024 bytes, 77 GCs, 197018/270840 avg/max bytes residency (3 samples), 2M in use, 0.000 INIT (0.002 elapsed), 0.016 MUT (0.022 elapsed), 0.009 GC (0.011 elapsed) :ghc>>

hledger -f data/1000x100x10.journal stats
string: <<ghc: 318555920 bytes, 617 GCs, 2178997/7134472 avg/max bytes residency (7 samples), 16M in use, 0.000 INIT (0.001 elapsed), 0.129 MUT (0.136 elapsed), 0.067 GC (0.077 elapsed) :ghc>>
text:   <<ghc: 314248496 bytes, 612 GCs, 2074045/6617960 avg/max bytes residency (7 samples), 16M in use, 0.000 INIT (0.003 elapsed), 0.137 MUT (0.145 elapsed), 0.067 GC (0.079 elapsed) :ghc>>

hledger -f data/10000x100x10.journal stats
string: <<ghc: 3114763608 bytes, 6026 GCs, 18858950/75552024 avg/max bytes residency (11 samples), 201M in use, 0.000 INIT (0.000 elapsed), 1.331 MUT (1.372 elapsed), 0.699 GC (0.812 elapsed) :ghc>>
text:   <<ghc: 3071468920 bytes, 5968 GCs, 14120344/62951360 avg/max bytes residency (9 samples), 124M in use, 0.000 INIT (0.003 elapsed), 1.272 MUT (1.349 elapsed), 0.513 GC (0.578 elapsed) :ghc>>

hledger -f data/100000x100x10.journal stats
string: <<ghc: 31186579432 bytes, 60278 GCs, 135332581/740228992 avg/max bytes residency (13 samples), 1697M in use, 0.000 INIT (0.008 elapsed), 14.677 MUT (15.508 elapsed), 7.081 GC (8.074 elapsed) :ghc>>
text:   <<ghc: 30753427672 bytes, 59763 GCs, 117595958/666457240 avg/max bytes residency (14 samples), 1588M in use, 0.000 INIT (0.008 elapsed), 13.713 MUT (13.966 elapsed), 6.220 GC (7.108 elapsed) :ghc>>
2016-05-24 19:00:49 -07:00
Simon Michael
42c12fe631 cli, ui, web, api: --info, --man, info & man cmds 2016-04-19 19:21:29 -07:00
Simon Michael
f9362707b6 ui, web, api: fix -h, --help 2016-04-18 16:43:51 -07:00
Simon Michael
f331ebec16 ui, api: switch to the quicker-building microlens
This may not make much difference since dependencies brick and
servant-swagger still depend on lens, but that might change.
2016-04-04 17:50:58 -07:00
Simon Michael
b48ee2d22e ui: types cleanup 2015-10-28 11:46:06 -07:00
Simon Michael
b950bd0d83 ui: reg: refactor, consolidate state 2015-10-28 11:30:56 -07:00
Simon Michael
45db0a28cc ui: acc: preserve account selection across reloads 2015-10-28 11:13:33 -07:00
Simon Michael
ebc4022888 ui: after exiting --register, select that account 2015-09-03 20:51:05 -07:00
Simon Michael
472b0aee75 ui: whitespace 2015-09-03 20:46:36 -07:00
Simon Michael
d46f511b79 ui: allow navigating to accounts after --register 2015-09-03 20:40:43 -07:00
Simon Michael
07041e1b65 ui: fix --ignore-assertions, perhaps more 2015-09-03 16:09:52 -07:00
Simon Michael
74512814ec cli/ui/web: rename X.Options modules to X.XOptions
Make these modules' names more like the heavily-used types they
define (CliOpts, UIOpts, WebOpts). This is consistent with
RawOptions and ReportOptions, and helps with code navigation.
2015-08-28 12:43:51 -07:00
Simon Michael
4f351d6c9c ui: --register starts in the register screen 2015-08-28 08:48:40 -07:00
Simon Michael
d1467d7967 ui: drop unneeded args field, use opts instead 2015-08-28 06:36:07 -07:00
Simon Michael
3fa0ad8eb6 ui: drop old posting register screen's code 2015-08-27 22:53:12 -07:00
Simon Michael
b51f45c675 ui: misc enhancements, allow depth adjustment
- clean up options a bit, enable -V/--value (affects the accounts screen)
- more informative top/bottom borders, including key help
- number keys adjust the depth limit (accounts screen)
- remove obsolete args parameter
2015-08-27 22:46:14 -07:00
Simon Michael
e7aa150e52 ui: solidified register screen, added themes
- register screen:
  - smarter width-sensitive layout, with multi-commodity amounts on one line
  - items are sorted in date order
  - jumps to the latest item by default, with consistent scroll position
  - more prerendering, might speed up movement/paging slightly

- themes! --theme to select, --help to list (current themes: default, terminal, greenterm)

- border tweaks - dropped side borders, added side padding
2015-08-24 16:24:11 -07:00
Simon Michael
6b07503792 ui: move backlog to readme 2015-08-24 16:24:11 -07:00
Simon Michael
866414a528 ui: provide a more useful transaction register
The register screen is now like the register view in hledger-web (and
other accounting systems), rather than hledger's register command.
This means:

- it shows transactions affecting a particular current account, rather
  than postings matching a pattern.

- Each line represents a whole transaction.

- The account field shows the *other* account being transacted with.
  When there is more than one, they are all listed, abbreviated and
  marked with "(split)".

- The amount field shows the effect of the transaction on the current
  account; positive for an inflow to this account, negative for an
  outflow.

- The balance field should usually show the current account's historic
  balance as of the transaction date, even when you change the report
  start date. (Not working yet - currently it always shows the running
  total).

- Transactions are listed most recent first, currently.
2015-08-24 16:24:11 -07:00
Simon Michael
5953978471 ui: update for new brick branch, pgup/down works 2015-08-24 16:24:11 -07:00
Simon Michael
49e1840a0f ui: rewrite the ui using brick
hledger-ui (formerly hledger-vty) is now built on brick, a new
declarative UI layer built on vty. This brings much new power, and
should make the UI much easier to grow and maintain.

At this point, functionality and performance are similar to the old
version. There's no journal entries screen, but entering the postings
screen jumps to the latest posting, and layout is better (multiple
commodities are rendered on one line).

Requires unreleased brick from github (HEAD or some branch) for now.
2015-08-24 16:24:11 -07:00
Simon Michael
207ae772d4 ui: revive the curses UI, now named hledger-ui 2015-08-13 11:22:40 -07:00