From bb20146143e2eea43212c3604851e6de78098ee9 Mon Sep 17 00:00:00 2001 From: Peter Stockings Date: Sun, 30 Nov 2025 00:26:33 +1100 Subject: [PATCH] Add syntax highlighting for different runtimes in function history for timer & http functions --- routes/http.py | 4 +++- routes/timer.py | 5 +++-- static/js/mithril/FunctionHistory.js | 7 +++++-- templates/dashboard/http_functions/history.html | 3 ++- templates/dashboard/timer_functions/history.html | 3 ++- 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/routes/http.py b/routes/http.py index ca4cef1..d45e07c 100644 --- a/routes/http.py +++ b/routes/http.py @@ -316,7 +316,7 @@ def history(function_id): # Fetch the http function to verify ownership http_function = db.execute( """ - SELECT id, name, script_content AS code, version_number + SELECT id, name, script_content AS code, version_number, runtime FROM http_functions WHERE id = %s AND user_id = %s """, @@ -350,6 +350,7 @@ def history(function_id): "function_id": function_id, "http_function": http_function, "versions": versions, + "runtime": http_function.get("runtime", "node"), } if htmx: @@ -359,6 +360,7 @@ def history(function_id): return render_template("dashboard/http_functions/history.html", **args) + @http.route("/editor/", methods=["GET"]) @login_required def editor(function_id): diff --git a/routes/timer.py b/routes/timer.py index fb185bf..4710207 100644 --- a/routes/timer.py +++ b/routes/timer.py @@ -561,7 +561,7 @@ def logs(function_id): def history(function_id): # Fetch the timer function to verify ownership timer_function = db.execute(""" - SELECT id, name, code AS script, version_number + SELECT id, name, code AS script, version_number, runtime FROM timer_functions WHERE id = %s AND user_id = %s """, [function_id, current_user.id], one=True) @@ -587,7 +587,8 @@ def history(function_id): 'function_id': function_id, 'timer_function': timer_function, 'versions': versions, - 'title': timer_function['name'] + 'title': timer_function['name'], + 'runtime': timer_function.get('runtime', 'node'), } if htmx: diff --git a/static/js/mithril/FunctionHistory.js b/static/js/mithril/FunctionHistory.js index 247f4a0..3116c24 100644 --- a/static/js/mithril/FunctionHistory.js +++ b/static/js/mithril/FunctionHistory.js @@ -7,6 +7,7 @@ const FunctionHistory = { vnode.state.rightVersion = versions[0]; vnode.state.editor = null; vnode.state.aceDiffer = null; + vnode.state.runtime = vnode.attrs.runtime || "node"; // Add runtime support // Listen for theme changes vnode.state.themeListener = (e) => { @@ -152,7 +153,8 @@ const FunctionHistory = { if (!vnode.state.editor) { vnode.state.editor = ace.edit("editor-history"); vnode.state.editor.setTheme(theme); - vnode.state.editor.session.setMode("ace/mode/javascript"); + const editorMode = vnode.state.runtime === "python" ? "ace/mode/python" : "ace/mode/javascript"; + vnode.state.editor.session.setMode(editorMode); vnode.state.editor.setReadOnly(true); } else { vnode.state.editor.setTheme(theme); @@ -167,9 +169,10 @@ const FunctionHistory = { if (vnode.state.aceDiffer) { vnode.state.aceDiffer.destroy(); } + const diffMode = vnode.state.runtime === "python" ? "ace/mode/python" : "ace/mode/javascript"; vnode.state.aceDiffer = new AceDiff({ element: "#diff-container", - mode: "ace/mode/javascript", + mode: diffMode, theme: theme, left: { content: leftVersion.script, editable: false }, right: { content: rightVersion.script, editable: false }, diff --git a/templates/dashboard/http_functions/history.html b/templates/dashboard/http_functions/history.html index 34fe41a..d7322ae 100644 --- a/templates/dashboard/http_functions/history.html +++ b/templates/dashboard/http_functions/history.html @@ -21,7 +21,8 @@ history_url=url_for('http.history', function_id=function_id)) }} view: () => m(FunctionHistory, { versions: {{ versions| tojson | safe }}, function_id: {{ function_id }}, - restore_url: "{{ url_for('http.restore', function_id=function_id) }}" + restore_url: "{{ url_for('http.restore', function_id=function_id) }}", + runtime: "{{ runtime }}" }) }); diff --git a/templates/dashboard/timer_functions/history.html b/templates/dashboard/timer_functions/history.html index 3bd0651..4911fb1 100644 --- a/templates/dashboard/timer_functions/history.html +++ b/templates/dashboard/timer_functions/history.html @@ -23,7 +23,8 @@ history_url=url_for('timer.history', function_id=function_id)) view: () => m(FunctionHistory, { versions: {{ versions| tojson | safe }}, function_id: {{ function_id }}, - restore_url: "{{ url_for('timer.restore', function_id=function_id) }}" + restore_url: "{{ url_for('timer.restore', function_id=function_id) }}", + runtime: "{{ runtime }}" }) });