* Consolidate modal form structure into partial + helper
* Scaffold out trade transaction form
* Normalize translations
* Add buy and sell trade form with tests
* Move entryable lists to dedicated controllers
* Delegate entry group contents rendering
* More cleanup
* Extract transaction and valuation update logic from entries controller
* Delegate edit and show actions to entryables
* Trade builder
* Update paths for transaction updates
* Add holdings tab to account view
* Basic portfolio UI
* Cleanup
* Handle missing holding data
* Remove synced at (implemented in separate pr)
* translations
* Tweak post sync streams
* Remove stale methods from merge conflict
* Make forms more composable, opt-in to form builder
* Remove unused method
* Simpler money input controls
* Add in new form styling to imports
* Lint fixes
* Small tweak of multi select styles
* Initial entryable models
* Update transfer and tests
* Update transaction controllers and tests
* Update sync process to use new entries model
* Get dashboard working again
* Update transfers, imports, and accounts to use Account::Entry
* Update system tests
* Consolidate transaction management into entries controller
* Add permitted partial key helper
* Move account transactions list to entries controller
* Delegate transaction entries search
* Move transfer relation to entry
* Update bulk transaction management flows to use entries
* Remove test code
* Test fix attempt
* Update demo data script
* Consolidate remaining transaction partials to entries
* Consolidate valuations controller to entries controller
* Lint fix
* Remove unused files, additional cleanup
* Add back valuation creation
* Make migrations fully reversible
* Stale routes cleanup
* Migrations reversible fix
* Move types to entryable concern
* Fix search when no entries found
* Remove more unused code
An overhaul and cleanup of the transactions feature including:
- Simplification of transactions search and filtering
- Consolidation of account sync logic after transaction change
- Split sidebar modal and modal into "drawer" and "modal" concepts
- Refactor of transaction partials and folder organization
- Cleanup turbo frames and streams for transaction updates, including new Transactions::RowsController for inline updates
- Refactored and added several integration and systems tests
Introduces a basic CSV import module for bulk-importing account transactions.
Changes include:
- User can load a CSV
- User can configure the column mappings for a CSV
- Imported CSV shows invalid cells
- User can clean up their data directly in the UI
- User can see a preview of the import rows and confirm import
- Layout refactor + Import nav stepper
- System test stability improvements
* Added i18n for the Dashboard page.
* Add a check for blank. Empty returned an error since @accounts was nil.
* Remove subtitle when accounts are empty..
* Increased the padding-right value for the buttons. The sapce occupied by the icon made the button elements unbalanced.
* Add refactor as suggested by Zach (https://github.com/maybe-finance/maybe/pull/707#discussion_r1588506443)
* Extract empty state into a partial.
* Render new partial if no accounts exist.
* Moved translation text to shared directory.
* Fix padding-right on New account button.
* Lint fix
* i18n tasks
* Get tests passing with :test queue adapter
---------
Co-authored-by: Zach Gollwitzer <zach.gollwitzer@gmail.com>
* Introduce ActiveStorage
* Add active storage related service gems
* Update storage.yml
* Install image processing gem
- sudo apt-get install libvips (required dependency)
* Set default active storage service
* Add profile image to user model
* Amend form to allow profile images to be saved, introduce stimulus controller.
* Purge image when form is blank
* Update markup/stimulus controller
* Add test for profile image uplaods
* Add profile image validation
* Use rails guide gem versions
* Use correct ERB syntax and make all storage options configurable
* Ensure form submits when user clears profile image
* Add profile image thumbnail method
* Extract profile image to a partial
* Updates env.example and storage.yml
* Fix bug with double form save
* Add profile image to the sidenav
* Update production config
* Fix ERB formatting
* normalize en.yml
* Handle non-square images
* Use pre-processing on thumbnail variant
* Resovle gemfile.lock issues
* Rubocop style changes
---------
Signed-off-by: Christian <47796704+crobbo@users.noreply.github.com>
Co-authored-by: Christian Robinson <christian@robbo.dev>
* 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 f239a1e00f.
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* Initial dropdown setup and styles
* Allow form field to pass through block content and update dropdown posititon
* add currency to accounts params
* Add repositionDropdown function and carry over dropdown controller
* remove block context from form builder in favour of using form tag directly
* Hide currency input and set checks for input and label before updating
* align currency button with balance
* revert form_field_tag changes
* remove margin on currency button, looks cleaner
---------
Signed-off-by: Josh Pigford <josh@joshpigford.com>
Co-authored-by: Josh Pigford <josh@joshpigford.com>
* Patch virtual_path within modal helper
Added an example translation within the modal to test.
* Fix modal translation scope
By changing this to a partial that accepts the content via a local var
instead of a layout the virtual path, and therefore translation scope is
not changed.
* Add Lucide gem (#364)
* feat: add cursor pointer in the log-in and create account pages, also make full with (it's cutted right now) the fileds in the settings edit page
* feat: skip system test with an explanation instead of comment them
* fix typo in the skip
* feat: add lucide gem
* Add reusable modal (#362)
* Remove unused form
* Add reusable modal
* Prelim styling
* Add instructions
---------
Co-authored-by: Josh Pigford <josh@joshpigford.com>
* Add keyboard navigation to new account selector (#375)
* New account menu (#372)
* New account menu
* Styling tweaks
---------
Signed-off-by: Josh Pigford <josh@joshpigford.com>
* Entry method links (#376)
* Initial add account form (#378)
* Initial add account form
* Unused
---------
Signed-off-by: Josh Pigford <josh@joshpigford.com>
Co-authored-by: Pedro López Mareque <Pedro.lopez.mareque@gmail.com>
Co-authored-by: Rob Zolkos <rob@zolkos.com>
Co-authored-by: Josh Brown <josh@joossh.com>