Felipe Coury
af3bc6f796
Add stacked chart primitives for account analytics ( #45763 )
...
## What changed
Add daily stacked bar rendering in the TUI analytics module, staged for dashboard integration.
- Plot three categories plus an Other remainder without renormalizing values, with separate positive and negative bands for signed credits.
- Add readable numeric axes, calendar ticks, a selection cursor, and a callout showing the authoritative daily total. Distinguish missing days from zero usage.
- Keep the selection visible in narrow viewports and omit labels that cannot fit without truncation.
- Use terminal palette colors for series and adapt secondary text to terminal color support and background.
## Testing
Add unit and snapshot coverage for axis scaling, signed bars on light and dark terminals, missing and zero values, narrow layouts, tiny segments, authoritative totals, and duplicate-date remainders.
GitOrigin-RevId: 2ed58def17abd14e77929016a54fd20e91d45670
2026-09-15 19:01:18 +00:00
..
2026-09-15 02:35:59 +00:00
2026-08-24 22:40:35 +00:00
2026-09-15 08:28:03 +00:00
2026-09-15 19:00:56 +00:00
2026-09-14 22:31:32 +00:00
2026-09-15 02:35:59 +00:00
2026-09-15 17:17:07 +00:00
2026-09-03 06:02:25 +00:00
2026-09-10 13:02:57 +00:00
2026-08-20 08:10:08 +00:00
2026-09-11 20:10:02 +00:00
2026-08-31 13:44:12 +00:00
2026-09-15 00:29:13 +00:00
2026-09-09 03:17:48 +00:00
2026-09-15 19:00:56 +00:00
2026-09-07 16:55:06 +00:00
2026-08-14 05:03:39 +00:00
2026-08-17 22:37:14 +00:00
2026-09-15 18:41:13 +00:00
2026-09-10 21:41:39 +00:00
2026-09-03 01:46:37 +00:00
2026-08-28 19:44:50 +00:00
2026-09-11 17:00:07 +00:00
2026-09-11 17:00:07 +00:00
2026-09-11 17:00:07 +00:00
2026-09-15 18:52:15 +00:00
2026-09-15 17:09:11 +00:00
2026-09-15 17:32:33 +00:00
2026-08-13 23:13:37 +00:00
2026-09-14 19:12:59 +00:00
2026-09-14 16:30:00 +00:00
2026-09-05 01:25:06 +00:00
2026-09-14 21:06:36 +00:00
2026-08-31 21:27:51 +00:00
2026-09-15 18:23:08 +00:00
2026-09-12 18:16:17 +00:00
2026-09-15 18:41:13 +00:00
2026-09-11 01:57:54 +00:00
2026-09-15 18:23:08 +00:00
2026-08-07 11:30:17 +00:00
2026-09-05 12:17:32 +00:00
2026-09-14 15:30:22 +00:00
2026-09-15 16:40:06 +00:00
2026-09-15 16:40:06 +00:00
2026-08-17 04:37:50 +00:00
2026-09-15 17:09:11 +00:00
2026-09-10 18:24:13 +00:00
2026-09-15 17:09:11 +00:00
2026-09-10 18:10:26 +00:00
2026-07-31 21:37:56 +00:00
2026-09-15 16:40:06 +00:00
2026-09-06 20:52:29 +00:00
2026-09-15 12:14:59 +00:00
2026-09-09 23:23:59 +00:00
2026-09-10 00:26:30 +00:00
2026-09-14 19:30:37 +00:00
2026-09-11 21:59:24 +00:00
2026-09-14 22:40:20 +00:00
2026-09-14 19:11:29 +00:00
2026-09-09 20:32:57 +00:00
2026-09-10 03:18:28 +00:00
2026-09-10 21:41:39 +00:00
2026-09-12 00:22:04 +00:00
2026-09-14 22:40:20 +00:00
2026-09-15 18:41:13 +00:00
2026-09-09 15:48:39 +00:00
2026-09-01 17:17:45 +00:00
2026-09-10 21:51:34 +00:00
2026-08-25 15:50:19 +00:00
2026-09-15 16:40:06 +00:00
2026-09-11 03:16:01 +00:00
2026-08-26 17:45:42 +00:00
2026-08-21 16:45:05 +00:00
2026-09-10 20:50:10 +00:00
2026-09-14 16:37:47 +00:00
2026-08-28 01:14:02 +00:00
2026-09-15 16:40:06 +00:00
2026-08-10 15:43:10 +00:00
2026-09-15 18:06:03 +00:00
2026-09-09 04:00:10 +00:00
2026-09-05 05:21:42 +00:00
2026-09-15 02:33:27 +00:00
2026-09-02 18:34:27 +00:00
2026-09-14 21:06:36 +00:00
2026-09-15 02:33:27 +00:00
2026-09-14 23:25:09 +00:00
2026-09-15 19:01:18 +00:00
2026-09-02 18:42:06 +00:00
2026-09-08 00:13:28 +00:00
2026-09-14 23:25:09 +00:00
2026-09-11 22:09:02 +00:00
2026-09-03 20:01:07 +00:00
2026-09-15 00:42:31 +00:00
2026-09-15 00:42:31 +00:00
2026-08-15 14:31:04 +00:00
2026-09-13 18:53:06 +00:00
2026-09-08 21:19:02 +00:00
2026-09-15 18:41:13 +00:00
2026-09-14 18:56:43 +00:00
2026-09-11 06:45:09 +00:00