Add syntax highlighting for different runtimes in function history for timer & http functions
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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 },
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user