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.
151 lines
8.1 KiB
HTML
151 lines
8.1 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block content %}
|
|
<div class="p-4 md:p-6"> {# Add some overall padding for the page content area #}
|
|
<div class="bg-white shadow-md rounded-lg p-6"> {# Card container #}
|
|
<h1 class="text-2xl font-semibold text-gray-900 mb-6 border-b pb-2">Changelog</h1> {# Added bottom border to
|
|
heading #}
|
|
|
|
{# Container for the actual changelog entries with prose styling #}
|
|
<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 SQL Explorer SVG Plots -->
|
|
<hr class="my-6">
|
|
<h2 class="text-xl font-semibold mb-2">April 15, 2025</h2>
|
|
<ul class="list-disc pl-5 space-y-1">
|
|
<li>Replaced Plotly graph generation in SQL Explorer with direct SVG rendering:</li>
|
|
<ul class="list-disc pl-5 space-y-1">
|
|
<li>Updated `plot_query` and `plot_unsaved_query` endpoints in `routes/sql_explorer.py` to fetch raw
|
|
data.</li>
|
|
<li>Added `prepare_svg_plot_data` function in `utils.py` to process data and determine plot type
|
|
(scatter, line, bar, or table fallback).</li>
|
|
<li>Created `templates/partials/sql_explorer/svg_plot.html` template to render SVG plots with axes
|
|
and basic tooltips.</li>
|
|
<li>Removes the need for Plotly library for SQL Explorer plots, reducing dependencies and
|
|
potentially improving load times.</li>
|
|
</ul>
|
|
</ul>
|
|
|
|
<!-- New Entry for Dismissible Exercise Graph -->
|
|
<hr class="my-6">
|
|
<h2 class="text-xl font-semibold mb-2">April 13, 2025</h2>
|
|
<ul class="list-disc pl-5 space-y-1">
|
|
<li>Added a dismissible exercise progress graph to the workout page:</li>
|
|
<ul class="list-disc pl-5 space-y-1">
|
|
<li>Added a graph icon next to each exercise name in the topset list
|
|
(`templates/partials/topset.html`).</li>
|
|
<li>Clicking the icon loads the exercise progress graph inline using HTMX (`hx-get`, `hx-target`).
|
|
</li>
|
|
<li>Added a dismiss button (cross icon) to the loaded graph area.</li>
|
|
<li>Implemented hyperscript (`_`) logic to show the dismiss button when the graph loads and clear
|
|
the graph/hide the button when clicked.</li>
|
|
</ul>
|
|
</ul>
|
|
|
|
<!-- New Entry for Data Export -->
|
|
<hr class="my-6">
|
|
<h2 class="text-xl font-semibold mb-2">April 12, 2025</h2>
|
|
<ul class="list-disc pl-5 space-y-1">
|
|
<li>Added functionality to export data from the Settings page:</li>
|
|
<ul class="list-disc pl-5 space-y-1">
|
|
<li>Export all workout set data as a CSV file.</li>
|
|
<li>Export full database schema (CREATE statements) and data (INSERT statements) as an SQL script.
|
|
</li>
|
|
</ul>
|
|
</ul>
|
|
|
|
<!-- New Entry for SQL Generation -->
|
|
<hr class="my-6">
|
|
<h2 class="text-xl font-semibold mb-2">April 5, 2025</h2>
|
|
<ul class="list-disc pl-5 space-y-1">
|
|
<li>Added experimental feature to SQL Explorer to generate SQL queries from natural language using the
|
|
Gemini REST API. Requires `GEMINI_API_KEY` environment variable, set Gemni model via GEMINI_MODEL
|
|
environment variable</li>
|
|
</ul>
|
|
|
|
|
|
<!-- New Entry for Endpoints Refactoring -->
|
|
<hr class="my-6">
|
|
<h2 class="text-xl font-semibold mb-2">March 31, 2025</h2>
|
|
<ul class="list-disc pl-5 space-y-1">
|
|
<li>Refactored endpoint listing/searching functionality into its own blueprint (`routes/endpoints.py`
|
|
with `/endpoints` prefix).</li>
|
|
<li>Updated relevant `url_for` calls in templates to use the new `endpoints.` prefix.</li>
|
|
</ul>
|
|
|
|
<!-- New Entry for SQL Explorer Refactoring -->
|
|
<hr class="my-6">
|
|
<h2 class="text-xl font-semibold mb-2">March 31, 2025</h2>
|
|
<ul class="list-disc pl-5 space-y-1">
|
|
<li>Refactored SQL Explorer functionality into its own blueprint (`routes/sql_explorer.py` with `/sql`
|
|
prefix).</li>
|
|
<li>Moved SQL Explorer logic from `features/sql_explorer.py` into the blueprint for better
|
|
encapsulation.</li>
|
|
<li>Updated relevant `url_for` calls in templates to use the new `sql_explorer.` prefix.</li>
|
|
</ul>
|
|
|
|
|
|
<!-- New Entry for Workout Refactoring -->
|
|
<hr class="my-6">
|
|
<h2 class="text-xl font-semibold mb-2">March 31, 2025</h2>
|
|
<ul class="list-disc pl-5 space-y-1">
|
|
<li>Refactored workout functionality (create/delete/edit workouts, topsets, tags) into its own blueprint
|
|
(`routes/workout.py`).</li>
|
|
<li>Moved workout view model logic from `features/workout.py` into the `routes/workout.py` blueprint.
|
|
</li>
|
|
<li>Updated relevant `url_for` calls in templates to use the new `workout.` prefix.</li>
|
|
</ul>
|
|
|
|
<!-- New Entry for Calendar Year View Fix -->
|
|
<hr class="my-6">
|
|
<h2 class="text-xl font-semibold mb-2">March 31, 2025</h2>
|
|
<ul class="list-disc pl-5 space-y-1">
|
|
<li>Fixed `AttributeError` in calendar year view caused by passing a date string instead of a date
|
|
object to the template.</li>
|
|
</ul>
|
|
|
|
<!-- New Entry for Notes Refactoring -->
|
|
<hr class="my-6">
|
|
<h2 class="text-xl font-semibold mb-2">March 31, 2025</h2>
|
|
<ul class="list-disc pl-5 space-y-1">
|
|
<li>Refactored notes functionality (viewing/editing workout notes) into its own blueprint
|
|
(`routes/notes.py`).</li>
|
|
<li>Moved notes-specific database logic from `db.py` into the `routes/notes.py` blueprint for better
|
|
encapsulation.</li>
|
|
</ul>
|
|
|
|
<!-- New Entry for Refactoring -->
|
|
<hr class="my-6">
|
|
<h2 class="text-xl font-semibold mb-2">March 30, 2025</h2>
|
|
<ul class="list-disc pl-5 space-y-1">
|
|
<li>Refactored the calendar view and logic into its own blueprint (`routes/calendar.py`).</li>
|
|
<li>Cleaned up calendar code, removing the `Calendar` class and `pandas` dependency.</li>
|
|
<li>Fixed various bugs related to the calendar refactoring (circular imports, HTMX checks, `url_for`
|
|
build errors, date comparisons).</li>
|
|
</ul>
|
|
|
|
<!-- Example Entry Structure -->
|
|
<hr class="my-6"> {# Increased margin for HR #}
|
|
<h2 class="text-xl font-semibold mb-2">March 30, 2025</h2> {# Reduced margin-bottom for H2 #}
|
|
<ul class="list-disc pl-5 space-y-1"> {# Added space between list items #}
|
|
<li>Added the initial changelog page.</li>
|
|
<li>Fixed a minor styling issue on the dashboard.</li>
|
|
<li>Improved visual styling of the changelog page itself.</li> {# Added an entry for this change #}
|
|
<li>Refactored the calendar view and logic into its own blueprint (`routes/calendar.py`).</li>
|
|
</ul>
|
|
|
|
{# Add more entries below, following the pattern above #}
|
|
<!--
|
|
<hr class="my-6">
|
|
<h2 class="text-xl font-semibold mb-2">March 29, 2025</h2>
|
|
<ul class="list-disc pl-5 space-y-1">
|
|
<li>Implemented feature X.</li>
|
|
<li>Refactored component Y.</li>
|
|
</ul>
|
|
-->
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %} |