[loggi-99y] Expand statistics: new chart types, smarter defaults & responsive grid layout #111

Closed
opened 2026-02-21 17:59:07 +01:00 by matthias · 0 comments
Owner

Bead ID: loggi-99y
Type: epic
Priority: P2
Status: closed
Close reason: All subtasks complete: loggi-d7a (responsive grid layout, reduced defaults) and loggi-nh0 (4 new chart types: cumulative, gaps, duration dist, word dist). Epic fully delivered.


Why

All 9 current charts default to visible, overwhelming the stats tab on first visit. The grid is single-column only, wasting horizontal space on wider screens. Several useful analytical perspectives are missing (cumulative trends, gap analysis, distribution histograms).

What

This epic adds new chart types, reduces default-visible charts for a cleaner first impression, and makes the grid layout responsive so smaller charts sit side-by-side on wider screens.

New charts

  • Cumulative Progress (all types) — running-total line computed client-side from daily data
  • Gap Analysis (all types) — histogram of days-between-records, computed client-side from daily data
  • Duration Distribution (timerange) — histogram of session lengths from existing /sessions endpoint
  • Word Count Distribution (diary) — per-entry word count histogram, needs new /stats/distribution endpoint

Default visibility changes

  • Keep visible: Summary, Calendar Heatmap, type-specific trend (Duration/Frequency/Writing)
  • Hide by default: Daily Activity, Hourly, Weekday, all new charts

Layout

  • Summary + heatmap span full width
  • Smaller charts (hourly, weekday, distributions) go 2-up on sm:+ breakpoints
  • Cards fill available width cleanly with no orphan single-card rows where avoidable

Where

  • app/static/js/stats.js — PLOT_REGISTRY, grid rendering, card builders
  • app/static/js/stats-charts.js — new chart renderers
  • app/templates/entry.html — grid CSS classes
  • app/stats.py — new distribution endpoint (diary word counts)

Acceptance criteria

  • Stats tab loads with ≤4–5 charts visible per type (down from 7–9)
  • New charts render correctly for each applicable entry type
  • Grid uses responsive multi-column layout on sm+ screens
  • Customize modal lists all charts including new ones
  • No console errors; existing charts unaffected
  • All new charts hidden by default (discoverable via Customize)

Dependencies:

  • blocks: loggi-d7a
  • blocks: loggi-nh0
**Bead ID:** `loggi-99y` **Type:** epic **Priority:** P2 **Status:** closed **Close reason:** All subtasks complete: loggi-d7a (responsive grid layout, reduced defaults) and loggi-nh0 (4 new chart types: cumulative, gaps, duration dist, word dist). Epic fully delivered. --- ## Why All 9 current charts default to visible, overwhelming the stats tab on first visit. The grid is single-column only, wasting horizontal space on wider screens. Several useful analytical perspectives are missing (cumulative trends, gap analysis, distribution histograms). ## What This epic adds new chart types, reduces default-visible charts for a cleaner first impression, and makes the grid layout responsive so smaller charts sit side-by-side on wider screens. ### New charts - **Cumulative Progress** (all types) — running-total line computed client-side from daily data - **Gap Analysis** (all types) — histogram of days-between-records, computed client-side from daily data - **Duration Distribution** (timerange) — histogram of session lengths from existing `/sessions` endpoint - **Word Count Distribution** (diary) — per-entry word count histogram, needs new `/stats/distribution` endpoint ### Default visibility changes - Keep visible: Summary, Calendar Heatmap, type-specific trend (Duration/Frequency/Writing) - Hide by default: Daily Activity, Hourly, Weekday, all new charts ### Layout - Summary + heatmap span full width - Smaller charts (hourly, weekday, distributions) go 2-up on `sm:`+ breakpoints - Cards fill available width cleanly with no orphan single-card rows where avoidable ## Where - `app/static/js/stats.js` — PLOT_REGISTRY, grid rendering, card builders - `app/static/js/stats-charts.js` — new chart renderers - `app/templates/entry.html` — grid CSS classes - `app/stats.py` — new distribution endpoint (diary word counts) ## Acceptance criteria - Stats tab loads with ≤4–5 charts visible per type (down from 7–9) - New charts render correctly for each applicable entry type - Grid uses responsive multi-column layout on sm+ screens - Customize modal lists all charts including new ones - No console errors; existing charts unaffected - All new charts hidden by default (discoverable via Customize) **Dependencies:** - blocks: `loggi-d7a` - blocks: `loggi-nh0`
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
matthias/loggi#111
No description provided.