Add syntax highlighting for different runtimes in function history for timer & http functions

This commit is contained in:
Peter Stockings
2025-11-30 00:26:33 +11:00
parent 6c55eaa930
commit bb20146143
5 changed files with 15 additions and 7 deletions

View File

@@ -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/<int:function_id>", methods=["GET"])
@login_required
def editor(function_id):

View File

@@ -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:

View File

@@ -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 },

View File

@@ -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 }}"
})
});
</script>

View File

@@ -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 }}"
})
});
</script>