feat: Add workout program management

- Create database tables: workout_program, program_session, person_program_assignment.
- Add Flask blueprint `routes/programs.py` with routes for creating, listing, viewing, and deleting programs.
- Implement program creation form (`templates/program_create.html`):
    - Allows defining program name, description, and multiple sessions.
    - Each session includes a name and dynamically added exercise selections.
    - Uses `tail.select` for searchable exercise dropdowns.
    - JavaScript handles dynamic addition/removal of sessions and exercises.
- Implement backend logic for program creation:
    - Parses form data including multiple exercises per session.
    - Automatically finds or creates non-person-specific tags based on selected exercises for each session.
    - Saves program and session data, linking sessions to appropriate tags.
- Implement program list view (`templates/program_list.html`):
    - Displays existing programs.
    - Includes HTMX-enabled delete button for each program.
    - Links program names to the view page using HTMX for dynamic loading.
- Implement program detail view (`templates/program_view.html`):
    - Displays program name, description, and sessions.
    - Parses session tag filters to retrieve and display associated exercises.
- Update changelog with details of the new feature.
This commit is contained in:
Peter Stockings
2025-04-24 20:17:30 +10:00
parent e7d125d57b
commit dd82f461be
7 changed files with 796 additions and 0 deletions

View File

@@ -10,6 +10,25 @@
<div class="prose max-w-none">
<p>Updates and changes to the site will be documented here, with the most recent changes listed first.</p>
<!-- New Entry for Workout Programs -->
<hr class="my-6">
<h2 class="text-xl font-semibold mb-2">April 24, 2025</h2>
<ul class="list-disc pl-5 space-y-1">
<li>Added Workout Program Management:</li>
<ul class="list-disc pl-5 space-y-1">
<li>Created new database tables (`workout_program`, `program_session`, `person_program_assignment`).
</li>
<li>Added a new section under `/programs/` to create, view, and list workout program templates.</li>
<li>Program creation allows defining multiple sessions, each with a name and a list of selected
exercises.</li>
<li>The system automatically finds or creates non-person-specific tags based on the selected
exercises for each session.</li>
<li>Added functionality to delete programs from the list view.</li>
<li>Implemented HTMX for dynamic loading of the program view page from the list page.</li>
<li>Integrated `tail.select` for searchable exercise dropdowns in the program creation form.</li>
</ul>
</ul>
<!-- New Entry for SQL Explorer SVG Plots -->
<hr class="my-6">
<h2 class="text-xl font-semibold mb-2">April 19, 2025</h2>