Commit graph

278 commits

Author SHA1 Message Date
1fff1f136d Show day of week in conference date column
Add %a prefix: "Wed 25 Mar 2026", "Wed 25–28 Mar 2026", etc.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 12:00:18 +00:00
1dfef38128 Merge conference sections into a single table so columns align
Replace three separate <table> elements with one shared table. The
conf_table macro becomes conf_rows which emits only <tr> elements;
Current/Future/Past section boundaries are dark header rows inside
the same <tbody>. With one colgroup the browser uses one shared
column-width calculation so all headings line up.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 11:22:43 +00:00
57054bb1bd Remove auto-scroll on Gantt bar hover
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 11:07:02 +00:00
10716f9874 Add bidirectional hover highlight between Gantt chart and table
Each Gantt bar and table row gets a data-conf-key attribute
(ISO start date + conference name). A small JS lookup map connects
them so hovering either element highlights both simultaneously:
- Gantt bar: filter brightness + inset white box-shadow
- Table row: yellow tint via background-color

Hovering a Gantt bar also scrolls the matching table row into view
(scrollIntoView nearest) so future conferences are reachable without
manual scrolling. The key field is pre-computed in
build_conference_timeline() to keep the template simple.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 11:02:55 +00:00
ef517c98ff Replace CSS grid with Bootstrap table on conference list page
- Proper <table> with colgroup widths, table-sm table-hover align-middle
- Month-divider rows (MARCH 2026, APRIL 2026, …) break up long lists
- Date ranges collapsed to a single column (e.g. "25–28 Mar 2026")
- Row highlight (conf-going) for conferences marked going=true
- Topic and date columns styled text-muted small to reduce visual noise
- Trip links replaced with 🧳 emoji: shows just the emoji when the trip
  title matches the conference name (the common case), otherwise appends
  the trip title (e.g. "🧳 Budapest" for FOSDEM); full title always in
  tooltip

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 10:56:44 +00:00
20f1e31119 Add Gantt-style timeline to conference list page
Shows the next 90 days as a horizontal bar chart above the conference
list. A greedy interval-colouring algorithm assigns each conference to a
lane so overlapping conferences appear in separate rows. Lane colour
cycles through a fixed palette so simultaneous events are easy to tell
apart. Month boundary markers and a red today-line provide orientation.
All position maths happens in build_conference_timeline() in Python;
the Jinja template is pure rendering.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 10:47:46 +00:00
d9b08f3e5b Handle date-only transport times in trip page template 2026-03-07 13:25:56 +00:00
574b4feb1f trip: redesign itinerary display and add trip list macro
- Add render_trip_element macro to macros.html; use it in trip_item for
  the trip list page, giving a consistent one-line-per-element format
  with emoji, route, times, duration, operator, distance, and CO₂
- Redesign trip_page.html itinerary: day headers use date-only (no year),
  condense check-out to a single accent line, show time-only on transport
  cards, humanise duration (Xh Ym), km-only distance, add CO₂ for all
  transport modes, fix seat display for integer seat values
- Fix UndefinedError on /trip/past caused by absent 'arrive' key (Jinja2
  Undefined is truthy) and date-only depart/arrive fields (no .date())
- Improve mobile map layout: text column before map in HTML order, reduce
  mobile map heights, hide toggle button on mobile
- Add trips.css with design system (Playfair Display / Source Sans 3 /
  JetBrains Mono, navy/gold/amber palette, card variants by type)
- Add tests/test_trip_list_render.py covering the rendering edge cases

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 09:15:51 +00:00
f0698acd59 Base trip timezone differences on trip dates and remove live local-time column 2026-02-26 15:31:13 +00:00
f2752383f2 Render UK time difference server-side and simplify trip timezone JS 2026-02-26 15:26:25 +00:00
701023db59 Adjust wording 2026-02-26 15:21:11 +00:00
ec413ac310 Add destination time difference and live local times on trip pages
Closes #208
2026-02-26 14:50:54 +00:00
016039e78f Show current-year school holidays and add Bristol source link
Closes #209

Closes #210
2026-02-26 14:42:40 +00:00
b4f0a5bf5d Add OpenWeatherMap weather forecasts. Closes #48
Show 8-day Bristol home weather on the index and weekends pages.
Show destination weather per day on the trip list and trip page.
Cache forecasts in ~/lib/data/weather/ and refresh via update.py.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-21 20:27:25 +00:00
61e17d9c96 Track dates of English school holidays
Fixes #168
2026-02-21 18:05:19 +00:00
7a50ea6016 Improve launch status UI and alert on SpaceDevs payload errors 2026-02-21 16:39:47 +00:00
7cced919a2 Show full conference dates alongside partial attendance dates.
When attend_start or attend_end is set, display the full conference
date range in parentheses after the attended dates, e.g.
"Wed 6 Mar to Sun 10 Mar (full conference: Sun 3 Mar to Sun 10 Mar)".

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-18 18:23:33 +00:00
49e5a3000e Add attend_start/attend_end fields for partial conference attendance.
Allows recording when you arrive late or leave early at a multi-day
conference. Both fields accept a plain date or datetime with time.
Trip pages display the attendance dates instead of the official
conference dates when these fields are set.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-18 18:14:27 +00:00
2edfb40e66 Avoid crash when flight.co2_kg is not set. 2026-02-18 17:09:18 +00:00
84dfafefa1 Avoid crash when flight.co2_kg is not set. 2026-02-18 17:07:40 +00:00
3a786c4b04 Add bus journeys. 2026-02-18 09:43:02 +00:00
bc2c884589 Show flash messages on event list. 2026-02-17 11:34:40 +00:00
b835956ea9 Show bootstrap alert after login. 2026-02-17 11:30:03 +00:00
e0b9e4e719 Switch from UniAuth to OpenID Connect 2026-02-17 11:25:55 +00:00
905c9c330d Redesign trip stats page with collapsible sections
Use Bootstrap cards and collapsible sections to make the long
lists of airlines, airports, and stations easier to read. Items
are now displayed as badges and hidden by default.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 09:30:58 +00:00
523dc78b35 Add overall airline, airport, and station stats to trip summary
Aggregate yearly stats into overall totals so the trip stats page
shows flight segments by airline, airports used, and stations used
in the summary section at the top.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 09:25:10 +00:00
bc5e595bb0 Add airline, airport, and station stats 2026-01-15 23:05:39 +00:00
f22772d12d Move trip new-country filtering into stats 2026-01-15 22:53:17 +00:00
8a0df48a73 Fix trip stats new-country counting 2026-01-15 22:43:22 +00:00
91a74fd887 Add YAML output on debug page. 2025-11-14 16:16:54 +00:00
6d899113ce Add map fixture. 2025-11-13 06:42:12 +00:00
178c669b01 Fix country name box wrapping. 2025-11-03 19:57:16 +00:00
a8652d881c Show country flags in Schengen compliance history 2025-11-03 13:05:09 +00:00
7e3f9a9b1e Show trip stats in reverse chronological order. 2025-11-03 12:36:41 +00:00
623e20c273 Add days until column to birthdays table 2025-10-09 20:57:46 +01:00
bc8391a5d5 Unicode arrows 2025-07-25 23:17:49 +01:00
88d10af3f5 New travel type: coach
Fixes #149
2025-07-25 18:16:34 +01:00
8a9bad4bba Bug fix calendar next/prev buttons. 2025-07-24 23:28:30 +01:00
0e769c3de6 Replace fullcalendar with TOAST UI Calendar
Fixes #146
2025-07-24 23:10:23 +01:00
3dd322475f Show ferry detail on individual trip page
Closes: #154
2025-07-24 22:30:31 +01:00
672ca4b849 Generalize and enhance yearly statistics
The accommodation page has been updated to provide a more comprehensive and dynamic view of travel statistics.

Previously, the page only displayed hard-coded statistics for total nights away and abroad for the year 2024. This required manual updates each year and didn't provide historical context.

This commit introduces the following changes:

*   **Dynamically Calculate Yearly Stats:** The `accommodation_list` view in `web_view.py` now calculates statistics for every year found in the accommodation data. It correctly handles stays that span across multiple years.
*   **Display All Years:** The `accommodation.html` template now iterates through a list of all calculated yearly stats, displaying a summary for each year automatically.
*   **Add Percentage of Year:** The template also calculates and displays what percentage of the year the "total nights" and "nights abroad" represent. This includes logic to correctly account for leap years (366 days) for an accurate calculation.

These changes make the statistics more informative and ensure the page remains relevant over time without needing further manual code adjustments.
2025-07-23 22:52:22 +01:00
72940be3d2 Fix flightradar24 URL to use IATA code over ICAO
Fixes #165
2025-07-21 07:34:47 +02:00
37e74404d5 Add meteor info page
Fixes #164
2025-07-16 12:42:21 +02:00
0e2c95117c Add debug page for trip objects
Add /trip/<start>/debug endpoint that displays the complete trip object
data in pretty-printed JSON format with syntax highlighting. Includes
both raw data and computed properties for debugging purposes.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 11:25:17 +02:00
02350ef4db Use None in place of "Bristol" for home
Also fix some more location bugs.
2025-07-16 07:55:20 +02:00
663dc479c2 Weekends: Don't both showing 'home' when home. 2025-07-16 04:30:13 +02:00
af492750cb Add location tracking to weekend page
Weekend page now shows specific location (city and country) for each
Saturday and Sunday based on travel history:

- Analyzes flight arrivals and accommodation check-ins to determine exact location
- Shows "home" when at Bristol, UK
- Shows "City, 🏴 Country" format when traveling
- Handles multi-location trips by finding most recent travel within trip period
- Optimized to parse YAML files once instead of per-date lookup

Closes #191

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 03:59:35 +02:00
f41930f811 Use get_country for Schengen report 2025-07-15 18:12:11 +02:00
f499015466 Adjust weekend page high pithing
Don't highlight a week number when showing weekends for different year.

Example: https://edwardbetts.com/agenda/weekends?year=2100&week=1

Closes: #198
2025-07-15 17:48:44 +02:00
a68df381fe Add CO2 breakdown by transport type to trip list and detail pages
Implements bug #194 by adding CO2 emission display by transport type:
- Add co2_by_transport_type() method to Trip class
- Display CO2 breakdown on trip list page and individual trip items
- Display CO2 breakdown on individual trip detail pages
- Show both total CO2 and breakdown by transport type (flight/train/ferry)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 16:57:19 +02:00