Commit Graph

148 Commits

Author SHA1 Message Date
Peter Stockings
a6eca1b4ac Add ability to add/update/delete exercise categories 2026-02-08 16:48:47 +11:00
Peter Stockings
0cd74f7207 Create blueprint for exercises 2026-02-08 16:08:30 +11:00
Peter Stockings
71a5ae590e Add brotli complression, cache graph requests for 5mins and add pagination for person overview 2026-02-04 09:28:18 +11:00
Peter Stockings
ec8d7f6825 Add asset caching 2026-02-03 23:36:58 +11:00
Peter Stockings
d223bdeebc Add compression 2026-02-03 23:25:13 +11:00
Peter Stockings
d7c9f71d22 Add activity logs table 2026-01-31 14:53:01 +11:00
Peter Stockings
62080b97a4 Ensure only admins can delete users/exercises and users can only edit there own name 2026-01-31 14:19:16 +11:00
Peter Stockings
d03581bff4 feat: assign tags to exercises and show muscle distribution of workout 2026-01-30 23:53:04 +11:00
Peter Stockings
036d852aab Add authentication for update/delete endpoints 2026-01-29 18:41:24 +11:00
Peter Stockings
3a0d4531b6 Switch to using polars 2026-01-29 00:05:25 +11:00
Peter Stockings
dd82f461be 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.
2025-04-24 20:17:30 +10:00
Peter Stockings
7aa7f9b8dc Partial refactor of tags functionality
Still need to move tags db logic to BP and move workout tag logic to BP as well
2025-04-19 21:10:34 +10:00
Peter Stockings
62e203bc2a feat: Add SQL script export option
- Added functionality to export the full database schema (CREATE statements) and data (INSERT statements) as a single `.sql` file.
- Created a new route `/export/database.sql` in `routes/export.py`.
- Added helper functions to `routes/export.py` (adapted from `sql_explorer`) to generate schema CREATE statements and data INSERT statements.
- Added a download link for the SQL export to the Settings page (`templates/settings.html`).
- Updated the changelog entry for data export to include the SQL option.
2025-04-12 21:17:19 +10:00
Peter Stockings
b875b49eca feat: Refactor endpoint listing into blueprint
- Moved endpoint listing and searching routes (`list_endpoints`, `search_endpoints`) and helper function (`get_routes`) from `app.py` into a new blueprint at `routes/endpoints.py`.
- Added `/endpoints` URL prefix to the blueprint.
- Registered the new `endpoints_bp` blueprint in `app.py`.
- Removed the original endpoint route definitions and helper function from `app.py`.
- Updated `url_for` calls in relevant templates (`endpoints.html`, `base.html`) to reference the new blueprint endpoints (e.g., `endpoints.list_endpoints`).
- Updated `templates/changelog/changelog.html` to document this refactoring.
```
2025-03-31 23:15:24 +11:00
Peter Stockings
a8fe28339b I have refactored the SQL Explorer functionality into its own blueprint (routes/sql_explorer.py) with a /sql URL prefix. This involved moving the relevant routes from app.py, registering the new blueprint, removing the old routes, updating url_for calls in the templates, and documenting the change in the changelog.
Here is a conventional commit message summarizing the changes:

```
feat: Refactor SQL Explorer into blueprint

- Moved SQL Explorer routes (view explorer, save/load/execute/delete queries, view schema, plot queries) from `app.py` into a new blueprint at `routes/sql_explorer.py`.
- Added `/sql` URL prefix to the blueprint.
- Registered the new `sql_explorer_bp` blueprint in `app.py`.
- Removed the original SQL Explorer route definitions from `app.py`.
- Updated `url_for` calls in relevant templates (`sql_explorer.html`, `partials/sql_explorer/sql_query.html`, `base.html`) to reference the new blueprint endpoints (e.g., `sql_explorer.sql_explorer`).
- Updated `templates/changelog/changelog.html` to document this refactoring.
```
2025-03-31 23:00:54 +11:00
Peter Stockings
eaeb4ab2c8 feat: Refactor workout functionality into blueprint
- Moved workout-related routes (create/delete/edit workouts, topsets, tags, start dates, show workout) from `app.py` into a new blueprint at `routes/workout.py`.
- Integrated workout view model logic from `features/workout.py` directly into `routes/workout.py` helper function `_get_workout_view_model`.
- Removed `features/workout.py` and the corresponding class instantiation in `db.py`.
- Registered the new `workout_bp` blueprint in `app.py`.
- Removed the original workout route definitions from `app.py`.
- Updated `url_for` calls in relevant templates (`workout.html`, `person_overview.html`, `partials/workout_tags.html`, `partials/topset.html`, `partials/start_date.html`, `partials/new_set_form.html`, `notes.html`, `calendar.html`) to reference the new blueprint endpoints (e.g., `workout.create_workout`).
- Updated `templates/changelog/changelog.html` to document this refactoring.
2025-03-31 22:38:48 +11:00
Peter Stockings
78436b230b feat: Refactor notes functionality into blueprint
- Moved notes-related routes (viewing/editing workout notes) from `app.py` into a new blueprint at `routes/notes.py`.
- Integrated notes-specific database logic (fetching and updating notes) directly into `routes/notes.py` helper functions, removing the corresponding methods from `db.py` for better encapsulation.
- Registered the new `notes_bp` blueprint in `app.py`.
- Removed the original notes route definitions from `app.py`.
- Updated `url_for` calls in `templates/partials/workout_note.html` to reference the new blueprint endpoints (e.g., `notes.get_person_notes`).
- Updated `templates/changelog/changelog.html` to document this refactoring in its own entry.
2025-03-31 22:08:47 +11:00
Peter Stockings
6095e76f10 Here is a conventional commit message summarizing the refactoring work:
```
feat: Refactor calendar feature into blueprint

- Moved calendar logic from `features/calendar.py` and `app.py` into a new blueprint at `routes/calendar.py`.
- Removed the `Calendar` class and refactored logic into helper functions within the blueprint module for better organization and readability.
- Eliminated the `pandas` dependency for date range generation, using standard `datetime` operations instead.
- Resolved circular import issues between `db.py`, `extensions.py`, and `routes/calendar.py` by adjusting import locations.
- Corrected `url_for` calls in templates (`calendar.html`, `partials/people_link.html`) to reference the new blueprint endpoint (`calendar.get_calendar`).
- Fixed an `AttributeError` related to HTMX request checking in the calendar route.
- Corrected `AttributeError` related to `.date()` calls on `datetime.date` objects in view processing functions.
- Updated `templates/changelog/changelog.html` to document the refactoring and associated fixes.
```
2025-03-30 22:20:48 +11:00
Peter Stockings
2465cad005 feat: Add static changelog page
Adds a new static page accessible at /changelog to display site updates and changes manually.

- Creates a new Flask Blueprint in `routes/changelog.py` to handle the route logic.
- Registers the `changelog_bp` blueprint in `app.py`.
- Creates the corresponding template `templates/changelog/changelog.html` extending the base layout.
- Adds a link to the Changelog page in the main sidebar navigation in `templates/base.html`, using an archive icon for consistency.
- Applies basic card styling to the changelog page content for improved visual structure.
2025-03-30 21:30:25 +11:00
Peter Stockings
39e91f2655 Add support to set degree of line of best fit for exercise progress graphs in custom view 2025-02-06 23:43:10 +11:00
Peter Stockings
116de33df3 Update load_user function 2025-02-02 17:45:54 +11:00
Peter Stockings
b0296be9a0 On SQL explorer page add a button to copy the create tables database schema 2025-02-01 23:50:09 +11:00
Peter Stockings
5be7438afc Add in auth however there are no restrictions currently 2025-02-01 22:42:58 +11:00
Peter Stockings
8b02307397 Add plot functionality to unsaved sql query and use htmx 2025-02-01 20:26:54 +11:00
Peter Stockings
07c2111b55 Remove unused functions from app.py 2025-01-27 14:54:31 +11:00
Peter Stockings
f70438e4e4 Refactor dashboard 2025-01-27 14:46:20 +11:00
Peter Stockings
6319e488e1 Update page url after visiting page overview 2025-01-27 01:56:42 +11:00
Peter Stockings
6b741e50d0 Swtich from person list to new overview page 2025-01-27 01:17:23 +11:00
Peter Stockings
0ed0c20e93 Add person graphs endpoint for workouts per week & PRs per week, consumed via dashboard, person overview and notes 2025-01-27 01:00:50 +11:00
Peter Stockings
5ed737ee94 Refactor stats endpoint so supports filtering people and make dashboard page utilise it 2025-01-27 00:07:27 +11:00
Peter Stockings
527395d704 Make stats refresh, and add filter support to stats endpoint 2025-01-26 23:01:39 +11:00
Peter Stockings
df3796b30e Dont trigger 'updatedPeople' on person dashboard render anymore 2025-01-26 20:04:15 +11:00
Peter Stockings
b0fb8895df Start refactoring person overview (list) page, currently is accessible through tags and workout exercise select. Doesnt have any stats or graphs 2025-01-26 18:21:44 +11:00
Peter Stockings
5ffb08a994 Fix issue selecting a new exercise 2025-01-19 21:34:45 +11:00
Peter Stockings
0b7b804d62 Fix issue where redirecting to endpoints page would only show table 2024-11-09 19:20:06 +11:00
Peter Stockings
120a94ff45 Add page to list all flask endpoints with filter 2024-11-09 19:07:55 +11:00
Peter Stockings
c7013e0eac Add ability to plot saved queries using plotly, need to check performance in production, also need to improve generate_plot function 2024-11-09 16:49:08 +11:00
Peter Stockings
23def088bb Add ability to save and edit queries, still need to add ability to edit queries 2024-11-08 23:09:19 +11:00
Peter Stockings
0f55d42f22 * Add SQL query executor
* Move mermaid.min.js to static asset
* Create templates for sql logic
2024-11-06 23:25:25 +11:00
Peter Stockings
3a07b9d97f WIP: Render database schema using Mermaid.js
Still need to:
* Move mermaid.js to static files
* Make template for mermaid wrapper
* Create new page for SQL viewer then add explorer
2024-11-06 22:48:51 +11:00
Peter Stockings
616b57e1db Fix regression where selecting an exercise didnt populate reps/weight inputs with last set and resize progress graph on desktop 2024-11-05 15:04:06 +11:00
Peter Stockings
5938c9468b Fix error thrown when attempting to update exercise name 2024-11-04 23:14:56 +11:00
Peter Stockings
b5493e627c Fix tags, may have increased load on database while only using one query to fetch workout, topsets, and all tags 2024-11-04 22:33:08 +11:00
Peter Stockings
10326ccd7a Switch from using workout modal and change to workout page, still need to cleanup modal logic and templates. Need to fix workout tag functionality 2024-11-04 22:02:06 +11:00
Peter Stockings
7d65f9b8e8 Add ability to add/delete exercises from dropdown 2024-11-04 16:46:22 +11:00
Peter Stockings
7d43965289 Add ability to edit exercise name from new dropdown, still WIP as I need to handle exercise selection and make it a component 2024-11-04 12:07:47 +11:00
Peter Stockings
e756607dc8 Add WIP of exercise live search, just testing speed in prod site 2024-11-03 09:45:48 +11:00
Peter Stockings
817a6016e2 Create seperate page view for workout (WIP) 2024-11-02 23:09:26 +11:00
Peter Stockings
1384eb007b Add min/max filter filter for exercise sparkline graph 2024-07-29 21:27:30 +10:00
Peter Stockings
497a96be60 Instead of retreiving list of users and workouts card on initial load which involves a second db call, use htmx onload callback 2024-04-11 17:43:16 +10:00