Commit Graph

9 Commits

Author SHA1 Message Date
trandall
94c101cf7b Add recurring expense functionality (#263)
* code complete

* Smaller updates

* delete ambitious TODOs (add to PR)

* add transactionality to recurring expense creation

* Remove unnecessary `let`s

* Add default english labels to non-en-US translations

* Accept `es.json` translations

* add condition to ensure links are only modified when applicable
2025-04-19 15:23:23 -04:00
Allen
2fda3e453c Ensure the exported data is sorted by the expense date (Fixes #305) (#306) 2025-04-19 14:22:16 -04:00
Yuvaraj Sai
6c5c9d5bed Feat: Add export to CSV support (#292)
* install json2csv package

* add necessary labels

* add support convert the JSON to redable CSV format and export

* add a popover to export btton and provide options for exporting to JSON and CSV

* Use a DropdownMenu

* Translations

---------

Co-authored-by: Sebastien Castiel <sebastien@castiel.me>
2025-04-19 14:11:38 -04:00
Sebastien Castiel
98e2345bb9 Fix group export when name contains non-ASCII characters 2024-12-07 12:03:32 -05:00
Stefan Hynst
d3fd8027a5 Implement "infinite scroll" for expenses (#95)
* Extract ExpenseCard vom ExpenseList

* Implement simple pagination of expenses (see #30)

- display only this year's entries by default
- a "Show more" button reveals all expenses

* Turn getPrisma() into constant "prisma"

- getPrisma() is not async and doesn't need to be awaited
- turn getPrisma() into exported constant "prisma"

* Select fields to be returned by getGroupExpenses()

- make JSON more concise and less redundant
- some properties were removed (i.e.instead of "expense.paidById" use "expense.paidBy.id")

* Remove "participants" from ExpenseCard

- no need to search for participant by id to get it's name
- name property is already present in expense

* Add option to fetch a slice of group expenses

- specify offset and length to get expenses for [offset, offset+length[
- add function to get total number of group expenses

* Add api route for client to fetch group expenses

* Remove "Show more" button from expense list

* Implement infinite scroll

- in server component Page
  - only load first 200 expenses max
  - pass preloaded expenses and total count

- in client component ExpenseList, if there are more expenses to show
  - test if there are more expenses
  - append preloading "skeletons" to end of list
  - fetch more expenses when last item in list comes into view
  - after each fetch increase fetch-length by factor 1.5
    - rationale: db fetch usually is not the issue here, the longer the list gets, the longer react needs to redraw

* Use server action instead of api endpoint

* Fixes

---------

Co-authored-by: Sebastien Castiel <sebastien@castiel.me>
2024-05-29 21:36:07 -04:00
Sebastien Castiel
7956156d70 Upgrade Next.js to 14.1.0 2024-01-24 09:50:37 -05:00
Sebastien Castiel
89ee5ae247 Add date and bring back group name in exported filename (#54) 2024-01-23 16:41:07 -05:00
Sebastien Castiel
1bd3f99d38 Fix export file name (Fix #54) 2024-01-22 13:05:35 -05:00
Sebastien Castiel
28902ad0ea Export group expenses as JSON (Closes #42) 2024-01-15 11:44:49 -05:00