Skip to content

fix(chart): use range tuples for cumulative spend area shading#33

Merged
ItsThompson merged 2 commits into
mainfrom
fix/cumulative-spending-graph-synthetic-datapoint
Jun 10, 2026
Merged

fix(chart): use range tuples for cumulative spend area shading#33
ItsThompson merged 2 commits into
mainfrom
fix/cumulative-spending-graph-synthetic-datapoint

Conversation

@ItsThompson

Copy link
Copy Markdown
Owner

Problem

The cumulative spending chart's red/green area shading fills from the budget-relevant line all the way down to £0 (the x-axis). The shading should only fill the region between the actual spending line and the budget pace line.

Fix

  • Changed area data from single values (surplusTop/deficitTop) to range tuples (surplus/deficit as [lower, upper]). Recharts detects array values and renders fill only between the two bounds.
  • Converted XAxis to type="number" with explicit integer ticks to eliminate phantom tick slots from fractional crossover points.
  • Added formatter/labelFormatter guards on Tooltip to handle array values and fractional-day labels.

Verification

  • TypeScript: 0 errors
  • ESLint: 0 errors
  • Dashboard tests: 81 passed
  • insertCrossoverPoints tests: 8 passed

- Change surplus/deficit data from single values to [lower, upper] tuples
  so Recharts renders fill only between actual and ideal lines, not to y=0
- Convert XAxis to type=number with explicit integer ticks to eliminate
  phantom tick slots from fractional crossover day values
- Add custom Tooltip content that filters out non-integer day points and
  excludes array-valued (range area) entries from display
@ItsThompson ItsThompson enabled auto-merge June 10, 2026 19:16
- Extract tooltipFormatter and tooltipLabelFormatter as named exports
  so branch logic is directly testable without triggering Recharts events
- Add tests covering array-value filtering, currency formatting,
  integer-day labels, and fractional crossover suppression
- Raises global branch coverage above the 85% threshold
@ItsThompson ItsThompson merged commit dd74c9b into main Jun 10, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant