actualbudget / actualbudget/actual
[Bug]: Custom report conditions ignored when switching to data table view
- Lingua principale
- TypeScript
- Stelle
- 28.8k
- Fork
- 3k
- Merge medio
- 2g 11h
- PR unite (30g)
- 65
Descrizione
## What happened?
When a custom report has a **conditions/filter** set (e.g. Notes `contains` `#groceries`), the filter is applied correctly in graph views (AreaGraph, etc.) but is **silently ignored** when switching to the data table view. The last-used view mode also persists, so subsequent opens of the same report from a dashboard card open in data table mode with no filter applied.
- Expected: conditions apply in all view modes (graph and data table)
- Actual: conditions apply only in graph view; data table shows all transactions regardless of saved conditions
Screenshots below show the difference (AreaGraph filtered vs data table unfiltered).
## How can we reproduce the issue?
1. Create a custom report — e.g. Name: "Groceries", Graph: AreaGraph, add filter **Notes → contains → `#groceries`**
2. Save. Verify the AreaGraph chart shows only `#groceries`-tagged data ✓
3. Click the **data table icon** (⊞) to switch to table view
4. Observe: the table shows **all transactions** — the `contains` condition is not applied ✗
5. Navigate away (e.g. go to Budget, then back to Reports)
6. Click the same report card — it reopens in data table mode with no filter applied ✗
**Additional finding:** the `hasTags` operator is listed in `@actual-app/api`'s `disallowedOps` for custom report conditions, causing those conditions to be silently discarded entirely. We worked around this by using `contains` instead — but `contains` still fails in the data table view. This suggests condition handling may be implemented per-renderer rather than at the data layer.
## Where are you hosting Actual?
Docker (self-hosted)
## What browsers are you seeing the problem on?
Chrome
## Operating System
Linux
---
_Screenshots to follow in comments._
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Start by tracing custom report condition handling from the AreaGraph and data table views, then inspect @actual-app/api's disallowedOps handling for the hasTags operator. Reproduce the Notes contains case and compare the conditions passed to each view. Done means saved conditions filter both views and remain applied when the report is reopened from a dashboard card.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- typescript
- Ambito
- analytics, frontend
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 48/100