Add version history view for timer functions

- Implement `/history/<function_id>` route in timer routes to fetch and display function versions
- Create new Mithril `DiffView` component for comparing script versions
- Add new history template for timer functions with version comparison
- Include version diff functionality using AceDiff library
- Update header and edit templates to include history URL for timer functions
This commit is contained in:
Peter Stockings
2025-02-17 19:19:45 +11:00
parent 77957a61a3
commit 17457e492e
11 changed files with 173 additions and 11 deletions

View File

@@ -11,7 +11,8 @@ show_client=False,
show_history=True,
edit_url=url_for('timer.edit', function_id=function_id),
cancel_url=url_for('timer.overview'),
logs_url=url_for('timer.logs', function_id=function_id)) }}
logs_url=url_for('timer.logs', function_id=function_id),
history_url=url_for('timer.history', function_id=function_id)) }}
<div id="app" class="p-1">

View File

@@ -0,0 +1,26 @@
{% extends 'dashboard.html' %}
{% block page %}
{{ render_partial('dashboard/http_functions/header.html',
user_id=user_id,
function_id=function_id,
active_tab='history',
show_edit_form=True,
show_logs=True,
show_history=True,
edit_url=url_for('timer.edit', function_id=function_id),
cancel_url=url_for('timer.overview'),
logs_url=url_for('timer.logs', function_id=function_id),
history_url=url_for('timer.history', function_id=function_id))
}}
<div id="version-diff"></div>
<script>
// Mount the Mithril component with versions as an attribute
m.mount(document.getElementById("version-diff"), {
view: () => m(DiffView, { versions: {{ versions| tojson }} })
});
</script>
{% endblock %}

View File

@@ -9,7 +9,8 @@ show_logs=True,
show_history=True,
edit_url=url_for('timer.edit', function_id=function_id),
cancel_url=url_for('timer.overview'),
logs_url=url_for('timer.logs', function_id=function_id)) }}
logs_url=url_for('timer.logs', function_id=function_id),
history_url=url_for('timer.history', function_id=function_id)) }}
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
<div class="bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden">