Commit Graph

275 Commits

Author SHA1 Message Date
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
e947feb3e3 refactor(sql_explorer): Replace Plotly with SVG rendering for plots
Replaces the Plotly-based graph generation in the SQL Explorer with direct SVG rendering within an HTML template, similar to the exercise progress sparklines.

- Modifies `routes/sql_explorer.py` endpoints (`plot_query`, `plot_unsaved_query`) to fetch raw data instead of using pandas/Plotly.
- Adds `utils.prepare_svg_plot_data` to process raw SQL results, determine plot type (scatter, line, bar, table), normalize data, and prepare it for SVG.
- Creates `templates/partials/sql_explorer/svg_plot.html` to render the SVG plot with axes, ticks, labels, and basic tooltips.
- Removes the `generate_plot` function's usage for SQL Explorer and the direct dependency on Plotly for this feature.
2025-04-15 19:34:26 +10:00
Peter Stockings
51ec18c461 feat: Add dismissible exercise progress graph to workout page
Adds a feature to view exercise progress directly from the workout page.

- Modifies `templates/partials/topset.html`.
- Adds a graph icon next to the exercise name in the topset list.
- Clicking the icon uses HTMX to fetch and display the progress graph for that exercise inline in a new table row.
- Implements a dismiss button using hyperscript to hide the graph after viewing.
2025-04-13 19:20:53 +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
ead73e8190 Add instructions on how to set Gemni model 2025-04-05 21:29:41 +11:00
Peter Stockings
bd8a3fcdb2 refactor: Use REST API for Gemini SQL generation
- Modified the `_generate_sql_from_natural_language` helper function in `routes/sql_explorer.py` to use direct REST API calls via the `requests` library instead of the `google-generativeai` Python library.
- Added `requests` and `json` imports and removed the `google-generativeai` import.
- Updated error handling for API communication and response parsing.
- Updated the corresponding changelog entry.
2025-04-05 21:17:56 +11: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
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
fb0e1519e4 Include Plotly js lib 2025-02-01 21:26:52 +11:00
Peter Stockings
5fe003bcbf Add loading icons to sql plot and add clear button to results container 2025-02-01 21:06:01 +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
55149c5ea9 Switch stats from camel case to snake case 2025-02-01 19:48:56 +11:00
Peter Stockings
f70438e4e4 Refactor dashboard 2025-01-27 14:46:20 +11:00
Peter Stockings
a7592a29f6 Remove space in person id query param for tags 2025-01-27 13:14:55 +11:00
Peter Stockings
d2c03cb81b Move person graphs down below title 2025-01-27 13:13:59 +11:00
Peter Stockings
2a614ae1c0 Fix view selector all->overview and make overview selected on overview page 2025-01-27 01:26:30 +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
23de6ef1f7 Render stats to block in overview 2025-01-26 22:19:34 +11:00
Peter Stockings
cd6f3920f5 Add exercise progress graphs to new person overview page 2025-01-26 20:00:31 +11:00
Peter Stockings
2c8019ef7b Bugfix: Attempting to update a set would fail due to including multiple elements for exercise_id, repetition, & weight 2025-01-26 18:47:45 +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
78f2ce2317 Fix bug introduced by last commit in which exercise progress graph wouldnt load upon selecting a exercise 2025-01-24 22:21:18 +11:00
Peter Stockings
5ffb08a994 Fix issue selecting a new exercise 2025-01-19 21:34:45 +11:00
Peter Stockings
da73d816d6 Add favicon 2024-12-18 23:34:44 +11:00
Peter Stockings
71bf4b640c whoops update column heading order after moving methods to 2nd pos 2024-11-10 18:35:28 +11:00
Peter Stockings
5bdb586a2c For endpoints page, remove faulty logic that attempted to persisted column view preferences and move Method column to 2nd pos 2024-11-10 18:31:44 +11:00
Peter Stockings
8b248bad17 Make endpoints column filter responsive 2024-11-10 18:15:33 +11:00
Peter Stockings
285175c29d Update previous page link for workout navbar 2024-11-10 18:09:22 +11:00
Peter Stockings
5db18cbf18 Clear exercise select dropdown when clear search is clicked 2024-11-10 18:01:30 +11:00
Peter Stockings
16cd4e93e3 Change exercise select input from text to search so it adds a clear button on the right 2024-11-10 17:50:13 +11:00
Peter Stockings
2d6c738e3e Max SQL query text box resize to query length 2024-11-09 23:18:57 +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
90cb1c1451 Add styling to sql query text area 2024-11-08 21:57:48 +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
30ba59381c Add confirmation prior to deleting workout 2024-11-05 16:52:41 +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