Commit Graph

950 Commits

Author SHA1 Message Date
Jose Farias
49b603f478 Flesh out D3 time series charts (#657)
* Reindent TimeSeries classes

* Fix spacing in time series tests

* Remove trend tests where current is nil

I think if we've gotten this far with a nil value for current, there's a data integrity problem.

If we allow this, we'll have to be very defensive in our code. Best to raise and fix early.

* Reindent Money class

* Refactor TimeSeries artifacts

* Use as_json in TimeSeries

* Bring back tests for trends where current is nil

* Bring back trend test

* Correctly enumerate trend test

* Use favorable_direction for trend_styles helper

* Make trend public in TimeSeries::Value

* Allow nil current values in trends

I think I might've gotten it wrong before, nils might appear in trends if values are unavailable for snapshots

* Clean up TimeSeries::Trend

* Skip trend values same class validations if any values are nil

* Refactor Money

* Remove object parsing in TimeSeries::Value

We're only every passing hashes

* Refactor trendline chart controller into a time series chart controller

* Replace trendline controller

* Implement empty state

* Port line-chart controller into time-series-chart

* Split out methods

* Group similar time series chart functionality

* Fix indicator color

* Fix empty state in time series chart

* Replace line-chart controller with time-series-chart controller

* Draw empty time series chart if less than 2 data points

* Fix favorable direction serialization

* Handle integers as well as money

* Fix favorable direction serialization

* Replace chart types with optional elements

* Prevent double-renders when displaying turbo caches of time series charts

* Remove ambiguities between time series and series data

* Improve time series chart property names

* Clean up tooltip template

* Match tooltip designs

* Apply trendline gradient

* Implement trendline split behavior

* Use same stroke width on all trend lines

* Sort time series data by date

* Support percentages

* Use data color for guideline circles

* Revert "Use data color for guideline circles"

This reverts commit f239a1e00f84ae28e32f48315d67cf990e541a8a.

* Use expected defaults for time series chart

* Include day in time-series chart x-axis labels

* favorableDirection -> favorable_direction

* data -> datum where appropriate

* Hide change data in tooltip for percentages
2024-04-22 13:44:26 -04:00
Jose Farias
fc3ade392a Refactor TimeSeries artifacts (#651)
* Reindent TimeSeries classes

* Fix spacing in time series tests

* Remove trend tests where current is nil

I think if we've gotten this far with a nil value for current, there's a data integrity problem.

If we allow this, we'll have to be very defensive in our code. Best to raise and fix early.

* Reindent Money class

* Refactor TimeSeries artifacts

* Use as_json in TimeSeries

* Bring back tests for trends where current is nil

* Bring back trend test

* Correctly enumerate trend test

* Use favorable_direction for trend_styles helper

* Make trend public in TimeSeries::Value

* Allow nil current values in trends

I think I might've gotten it wrong before, nils might appear in trends if values are unavailable for snapshots

* Clean up TimeSeries::Trend

* Skip trend values same class validations if any values are nil

* Refactor Money

* Remove object parsing in TimeSeries::Value

We're only every passing hashes
2024-04-22 08:30:42 -04:00
Zach Gollwitzer
c46662c99f Add apply button, improve transaction filters (#655)
* Add apply button, improve transaction filters

* Remove temp log

* Fix lint errors
2024-04-19 12:03:16 -04:00
Zach Gollwitzer
0277bc94f3 Small redesign of transaction filters (#650) 2024-04-18 17:05:37 -04:00
Jakub Kottnauer
0a1fa525d5 Fix modal height in Safari (#648) 2024-04-18 16:55:56 -04:00
Zach Gollwitzer
f5f624881f Add placeholders for dashboard features (#642)
* Add placeholders for new dashboard

* Fix tests and lint errors
2024-04-18 10:32:36 -04:00
Zach Gollwitzer
9bda7efc3f New Settings Menu, Routes and Controllers Organization (#641)
* Add new settings routes and controllers

* Add new settings view, restructure controllers and routes

* Fix lint errors
2024-04-18 07:56:51 -04:00
Jose Farias
cd8d741fe1 Add transaction modal flow (#633)
* Add transaction modal flow

* Preserve decimals when creating transactions
2024-04-16 14:44:31 -04:00
Thibaut Gorioux
a22c7a0e9c Add persistent notification with dismiss and action button (#611)
* Update notification partial

* Update locals args

* Lint

* Move content to body in notification helper

* Avoid dynamic Tailwind class

* Styling

* Add notification to localization file

* Lint

* Normalize locales

* Auto dismiss by default
2024-04-16 13:33:51 -04:00
Zach Gollwitzer
5aca2ff9b6 Add zero-config self hosting on Render (#612)
* v1 of backend implementation for self hosting

* Add docs

* Add upgrades controller

* Add global helpers for self hosting mode

* Add self host settings controller

* Conditionally show self hosting settings

* Environment and config updates

* Complete upgrade prompting flow

* Update config for forked repo

* Move configuration of github provider within class

* Add upgrades cron

* Update deploy button

* Update guides

* Fix render deployer

* Typo

* Enable auto upgrades

* Fix cron

* Make upgrade modes more clear and consistent

* Trigger new available version

* Fix logic for displaying upgrade prompts

* Finish implementation

* Fix regression

* Trigger new version

* Add i18n translations

* trigger new version

* reduce caching time for testing

* Decrease cache for testing

* trigger upgrade

* trigger upgrade

* Only trigger deploy once

* trigger upgrade

* If target is commit, always upgrade if any upgrade is available

* trigger upgrade

* trigger upgrade

* Test release

* Change back to maybe repo for defaults

* Fix lint errors

* Clearer naming

* Fix relative link

* Add abs path

* Relative link

* Update docs
2024-04-13 09:28:45 -04:00
Igor Alexandrov
b5c56f7775 Added lints for ERB templates (#609)
* Added erblint and fixed offenses

* Added erblint bintstub. Included erblint into CI

* Merged GitHub Actions tasks for rubocop and erblint into one

* Added config for erblint.

* Reverted erblint call in the CI
2024-04-09 08:08:58 -04:00
Zach Gollwitzer
d29d465a3c Basic transaction categories CRUD actions (inline) (#601)
* Fix dropdown issues and add dummy transaction category modal

* Minor namings tweaks

* Add search type

* Use new menu controller

* Complete basic transaction category inline CRUD actions

* Fix lint error

---------

Co-authored-by: Jakub Kottnauer <jk@jakubkottnauer.com>
2024-04-04 17:29:50 -04:00
Zach Gollwitzer
4f0b2de4ef Consolidate dropdown controllers (#600)
* Basic listbox and popover controllers with temporary example

* Separate select and menu controllers
2024-04-03 17:32:27 -04:00
Thibaut Gorioux
b3c48d13e7 Filter transactions by category (#581)
* Add transaction filtering by category

* Link label to checkbox

* Keep the dropdown open when clicked to allow tab change

* Show the badge with color and name when filter is applied

* Reduce color height
2024-04-02 12:17:26 -04:00
Mattia
f6540c03ef Add ability to delete Account (#582)
* Add ability to delete Account

Issue #571

* Fix ActiveJob::DeserializationError in AccountSyncJob when an account doesn't exists

* Use custom confirm modal for account deletion

* Revert "Fix ActiveJob::DeserializationError in AccountSyncJob when an account doesn't exists"

This reverts commit 8dbf634819d08b9d55679f9e137e901608070ba0.
2024-03-31 17:36:54 -04:00
Cristiano Crolla
7fa77b4fd7 Add Custom Turbo Confirm Modal (#580)
* Add turbo confirm dialog

* Add default fallback check

* Fix locale typo and swap element type

* Replaced locale folder and removed static strings from Turbo.setConfirmMethod

* Normalize shared/en.yml
2024-03-29 13:33:49 -04:00
Mattia
2d406274ac Allow user to search transaction categories (#577)
Issue #573
2024-03-29 10:02:15 -04:00
Thibaut Gorioux
2181cdd118 Allow event propagation to fix turbo frame update (#575)
* Allow event propagation to fix turbo frame update

* Add setting to dropdown to manage close when open and clicking on it
2024-03-28 13:24:07 -04:00
Zach Gollwitzer
f0c2d4ead0 Implement transaction filtering UI (#578)
* Rough sketch of implementation

* Consolidate auto submit controller

* Store ransack params in session

* Improve how summary is calculated for txns

* Implement filters UI
2024-03-28 13:23:54 -04:00
Thibaut Gorioux
a1b25f1c5b Close new account modal when clicking outside of it (#576) 2024-03-27 10:35:23 -04:00
Thibaut Gorioux
d274d1a394 to_series doen't expect argument anymore (#569) 2024-03-26 08:13:19 -04:00
Zach Gollwitzer
110855d077 Multi-Currency Part 2 (#543)
* Support all currencies, handle outside DB

* Remove currencies from seed

* Fix account balance namespace

* Set default currency on authentication

* Cache currency instances

* Implement multi-currency syncs with tests

* Series fallback, passing tests

* Fix conflicts

* Make value group concrete class that works with currency values

* Fix migration conflict

* Update tests to expect multi-currency results

* Update account list to use group method

* Namespace updates

* Fetch unknown exchange rates from API

* Fix date range bug

* Ensure demo data works without external API

* Enforce cascades only at DB level
2024-03-21 13:39:10 -04:00
Zach Gollwitzer
f904d9d062 Add the ability to "rollup" values in a time series (#554)
* Clean up time series models

* Add value group rollup class for summarizing hierarchical data

* Integrate new classes

* Update UI to use new patterns

* Update D3 charts to expect new data format

* Clean up account model

* More cleanup

* Money improvements

* Use new money fields

* Remove invalid fixture data to avoid orphaned accountables

* Update time series to work better with collections

* Fix tests and UI bugs
2024-03-19 09:10:40 -04:00
Zach Gollwitzer
fe2fa0eac1 Multi-currency support: Money + Currency class improvements (#553)
* Money improvements

* Replace all old money usage
2024-03-18 11:21:00 -04:00
Yu Le
56743eb380 Enable turbo refresh in layout/auth & Fix registrations controller create fail w/ status (#544) 2024-03-14 10:30:46 -04:00
Jakub Kottnauer
2c257a2a4b Add inline category selection (#541)
* Implement inline category selection

* Add turbo frame to refresh updated transaction

* Improve styles

* Fix category assignment

* Reorganize code

* Revert event propagation

* Remove unused frames

* Make only the transaction name clickable

* Add custom scrollbar class
2024-03-14 10:30:36 -04:00
Zach Gollwitzer
c60ddaec1d Multi-currency part 1 (#542)
* Add family snapshots table

* Add snapshot method, clean up family expected results

* Remove old sync trigger
2024-03-11 16:32:13 -04:00
Josh Pigford
0eddd86e74 Favicons 2024-03-11 09:01:50 -05:00
Ciocanel Razvan
cca779d3c4 Feat transactions search (#532)
* gem: Add ransack gem

* feat: Implement transactions search
2024-03-11 08:51:16 -04:00
Cristiano Crolla
7f2633f9da Add transaction sidebar (#534)
* Create sidebar element and working with turbo

* Add overview fields

* Add columns to transations and tidy modal

* permit new transaction params

* Add autosubmit form controller

* remove unused show code
2024-03-10 17:38:31 -04:00
Jean Moreau
9c9459211f Implement basic transaction pagination (#531)
* install pagy

* add pagy to controller, display default pagy UI

* display hardcoded custom UI to confirm styling

* implement custom UI with pagy methods

* move pagination into partial

* use lucide icons

* only display pagination if 2 or more pages are available

* add mobile pagination placeholder

* use link_to and display greyed out buttons when no prev or next needed

* sort transactions by date so grouping works appropriately with pagination

* add space between mobile view buttons

* remove debugging
2024-03-08 15:11:58 -05:00
Zach Gollwitzer
ad7136cb63 Add accounts management list (#522)
* Add accounts management

* Normalize i18n file

* Get turbo streams working

* Ignore disabled accounts in calculations

* Add empty state
2024-03-07 10:55:51 -05:00
Zach Gollwitzer
6f0e410684 Dashboard View and Calculations (#521)
* Handle Turbo updates with tabs

Fixes #491

* Add Filterable concern for controllers

* Add trendline chart

* Extract common UI to partials

* Series refactor

* Put placeholders for calculations in

* Add classification generated column to account

* Add basic net worth calculation

* Add net worth tests

* Get net worth graph working

* Fix lint errors

* Implement asset grouping query

* Make trends and series more intuitive

* Fully functional dashboard

* Remove logging
2024-03-06 09:56:59 -05:00
Zach Gollwitzer
19f15e9391 Add balance heading, date period partials (#507)
* Make balance heading partial

* Move period dropdown to partial

* Fix tests

* Remove redundant arg
2024-03-01 17:33:54 -05:00
Zach Gollwitzer
0fe9b6d34a Add Money and Money Series (#505)
* Add Money class

* Standardize creation of money series

* Formatting

* Fix test
2024-03-01 17:17:34 -05:00
Zach Gollwitzer
89ea12e9a1 Fix Turbo bug with tabs (#506) 2024-03-01 17:14:06 -05:00
Jakub Kottnauer
ccb1bab4b1 Add missing classification local when using account_valuation_list view (#504) 2024-03-01 14:52:13 -05:00
Zach Gollwitzer
14641d16de Add Local Development Demo Data (#502)
* Clean up seeds, add development demo data

* Handle liability account display and sync

* Fix tests
2024-02-29 16:35:54 -05:00
Zach Gollwitzer
7d48c01833 Prepare fixture data for account sync tests (#493)
* Rename account balance field for clarity

`original_balance` and `original_currency` may infer that these values are "original" to the account.  In reality, they represent the "current" balance and currency on the account.

* Prepare fixture data for account sync testing

* Update to new field

* Fix conflicts

* Remove local schema change
2024-02-27 12:43:49 -05:00
Sriram
d3b326d273 Make new account modal close as clickable button (#492)
Co-authored-by: Sriram Krishnan <sriram@seafoodsouq.com>
2024-02-27 12:25:36 -05:00
Sriram
eceff08a4d Make date required for new valuation form (#490)
Co-authored-by: Sriram Krishnan <sriram@seafoodsouq.com>
2024-02-27 09:41:21 -05:00
Sriram
7e883c4439 Update hard-coded currency UI with currency specific params (#488)
* Update hard-coded currency UI with currency specific params

* Rename extension methods to match currency option names; Move cents extension to numeric class extension

* Use currency's precision to show the cents part in accounts show page

---------

Co-authored-by: Sriram Krishnan <sriram@seafoodsouq.com>
2024-02-27 09:40:48 -05:00
Sriram
1968fb0145 Add currency to account form to support multiple currencies (#481)
Co-authored-by: Sriram Krishnan <sriram@seafoodsouq.com>
Co-authored-by: Zach Gollwitzer <zach.gollwitzer@gmail.com>
2024-02-26 09:50:38 -05:00
Zach Gollwitzer
87b97b3c41 Scaffold out basic transactions model and UI (#478)
* Transaction scaffold

* Rough in transaction views

* Fix sort order

* Fix mass assignment issue

* Fix test

* Simplify CI workflow

* Don't seed db before test
2024-02-23 21:34:33 -05:00
Josh Brown
e767aca37f Refresh account on update (#476)
* Refresh account on update

* 🐛 Replace turbo frame on create valuation

This avoids the frame reloading it's src when refreshing.

* Change Action Cable adapater to Postgres
2024-02-23 20:18:30 -06:00
Zach Gollwitzer
7e324f1b53 Scaffold out Account Syncing (#474)
* Add trends, time series, seed data

* Remove test data

* Replace old view values with helpers

* Fix tooltip bugs in D3 chart

* Fix tests

* Fix smoke test

* Add CRUD actions for valuations

* Scaffold out inline editing with Turbo

* Refactor series logic

* Scaffold out basic sync process for accounts

* Fix tests
2024-02-22 11:35:06 -05:00
Zach Gollwitzer
b5b2d335fd Add Live Data to Account Page (#464)
* Add trends, time series, seed data

* Remove test data

* Replace old view values with helpers

* Fix tooltip bugs in D3 chart

* Fix tests

* Fix smoke test

* Add CRUD actions for valuations

* Scaffold out inline editing with Turbo
2024-02-20 09:07:55 -05:00
Zach Gollwitzer
3ec9c9b56b Scaffold out the UI for individual account page (#461)
* Add `AccountBalance` table for account views

* Scaffold out account UI

* Add D3 line chart scaffolding

* Style fixes
2024-02-14 13:02:11 -05:00
Josh Brown
101a5ee0c5 Add notification UI (#449)
* Add notification UI

* Make animation an aribtrary value

It didn't make much sense in the theme as it feels very specific, this
change also means the timing information is clearer within the html
itself.

* Update to use tailwind theme

* Refactor structure of icon

* Add support for multiple notifications at once

* Adjust notification animation timing

* Make notification more accessible

Applies role to the notification which will apply the appropriate
aria-live status to ensure notifications are read out when they are
rendered into the screen for screenreader users.

Wraps the svg with a button tag that keyboard users can focus and engage
with to close the notification.

* Fix notification progress indicator placement

* Map flash types to notification types automatically

* Refine notification animations

* Set success as default icon for notifications
2024-02-13 09:19:11 -06:00
Zach Gollwitzer
bbe7323ca4 Add Tailwind color palette (#452) 2024-02-12 17:20:50 -05:00