Create http function header template and move all http function related templates into same directory
This commit is contained in:
8
app.py
8
app.py
@@ -85,7 +85,7 @@ def client(user_id, function):
|
|||||||
return jsonify({'error': 'Function not found'}), 404
|
return jsonify({'error': 'Function not found'}), 404
|
||||||
|
|
||||||
http_function = create_http_function_view_model(http_function)
|
http_function = create_http_function_view_model(http_function)
|
||||||
return render_template("client.html", **http_function)
|
return render_template("dashboard/http_functions/client.html", **http_function)
|
||||||
|
|
||||||
@ app.route("/dashboard", methods=["GET"])
|
@ app.route("/dashboard", methods=["GET"])
|
||||||
@login_required
|
@login_required
|
||||||
@@ -101,7 +101,7 @@ def dashboard_http_functions():
|
|||||||
user_id = current_user.id
|
user_id = current_user.id
|
||||||
http_functions = db.get_http_functions_for_user(user_id)
|
http_functions = db.get_http_functions_for_user(user_id)
|
||||||
http_functions = create_http_functions_view_model(http_functions)
|
http_functions = create_http_functions_view_model(http_functions)
|
||||||
return render_template("dashboard/http_functions.html", http_functions=http_functions)
|
return render_template("dashboard/http_functions/overview.html", http_functions=http_functions)
|
||||||
|
|
||||||
@ app.route("/dashboard/http_functions/add_form", methods=["GET"])
|
@ app.route("/dashboard/http_functions/add_form", methods=["GET"])
|
||||||
@login_required
|
@login_required
|
||||||
@@ -124,7 +124,7 @@ def create_http_function():
|
|||||||
|
|
||||||
http_functions = db.get_http_functions_for_user(user_id)
|
http_functions = db.get_http_functions_for_user(user_id)
|
||||||
http_functions = create_http_functions_view_model(http_functions)
|
http_functions = create_http_functions_view_model(http_functions)
|
||||||
return render_template("dashboard/http_functions.html", http_functions=http_functions)
|
return render_template("dashboard/http_functions/overview.html", http_functions=http_functions)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print(e)
|
||||||
return { "status": "error", "message": str(e) }
|
return { "status": "error", "message": str(e) }
|
||||||
@@ -172,7 +172,7 @@ def delete_http_function():
|
|||||||
|
|
||||||
http_functions = db.get_http_functions_for_user(user_id)
|
http_functions = db.get_http_functions_for_user(user_id)
|
||||||
http_functions = create_http_functions_view_model(http_functions)
|
http_functions = create_http_functions_view_model(http_functions)
|
||||||
return render_template("dashboard/http_functions.html", http_functions=http_functions)
|
return render_template("dashboard/http_functions/overview.html", http_functions=http_functions)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return jsonify({"status": 'error', "message": str(e)}), 500
|
return jsonify({"status": 'error', "message": str(e)}), 500
|
||||||
|
|
||||||
|
|||||||
@@ -88,7 +88,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</header>
|
</header>
|
||||||
<main class="flex flex-1 flex-col gap-4 p-4 md:gap-8 md:p-6" data-id="50" id="container">
|
<main class="flex flex-1 flex-col gap-4 p-4 md:gap-8 md:p-6" data-id="50" id="container">
|
||||||
{{ render_partial('dashboard/http_functions.html', http_functions=http_functions) }}
|
{{ render_partial('dashboard/http_functions/overview.html', http_functions=http_functions) }}
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2,16 +2,10 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<div class="flex items-center pb-4" data-id="51">
|
{{ render_partial('dashboard/http_functions/header.html', title='Try', user_id=user_id, name=name,
|
||||||
<h1 class="font-semibold text-lg md:text-2xl" data-id="52">Try: {{ name }}</h1>
|
show_refresh=False, show_link=False, show_edit_form=True, show_client=True, show_logs=True) }}
|
||||||
<button
|
|
||||||
class="inline-flex items-center justify-center text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-9 rounded-md px-3 ml-auto"
|
|
||||||
hx-get="{{ url_for('dashboard_http_functions') }}" hx-target="#container" hx-swap="innerHTML">
|
|
||||||
Cancel
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mx-auto w-full">
|
<div class="mx-auto w-full pt-4">
|
||||||
<form class="flex"><select
|
<form class="flex"><select
|
||||||
class="px-4 py-2 border rounded-md border-gray-300 hover:border-orange-500 focus:outline-none bg-gray-100"
|
class="px-4 py-2 border rounded-md border-gray-300 hover:border-orange-500 focus:outline-none bg-gray-100"
|
||||||
name="method">
|
name="method">
|
||||||
@@ -1,55 +1,5 @@
|
|||||||
<div>
|
{{ render_partial('dashboard/http_functions/header.html', title='Update', user_id=user_id, name=name,
|
||||||
<div class="flex items-center pb-1" data-id="51">
|
refresh_url=url_for('get_http_function_edit_form', name=name), show_logs=True, show_client=True) }}
|
||||||
<div class="flex items-center">
|
|
||||||
|
|
||||||
<h1 class="font-semibold text-lg md:text-2xl" data-id="52">Update: <span class="font-mono">{{ name }}</span>
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<div class="ml-2 cursor-pointer text-gray-500"
|
|
||||||
hx-get="{{ url_for('get_http_function_edit_form', name=name) }}" hx-target="#container"
|
|
||||||
hx-swap="innerHTML">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
|
||||||
stroke="currentColor" class="w-6 h-6" data-darkreader-inline-stroke=""
|
|
||||||
style="--darkreader-inline-stroke: currentColor;">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round"
|
|
||||||
d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99">
|
|
||||||
</path>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="ml-2 cursor-pointer text-gray-500" hx-get="{{ url_for('get_http_function_logs', name=name) }}"
|
|
||||||
hx-target="#container" hx-swap="innerHTML">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
|
||||||
stroke="currentColor" data-slot="icon" class="w-6 h-6">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round"
|
|
||||||
d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z" />
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<button
|
|
||||||
class="inline-flex items-center justify-center text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-9 rounded-md px-3 ml-auto"
|
|
||||||
hx-get="{{ url_for('dashboard_http_functions') }}" hx-target="#container" hx-swap="innerHTML">
|
|
||||||
Cancel
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="flex">
|
|
||||||
<a class="text-gray-300" href="{{ url_for('execute_http_function', user_id=user_id, function=name) }}">{{
|
|
||||||
url_for('execute_http_function', user_id=user_id, function=name) }}</a>
|
|
||||||
<button
|
|
||||||
class="inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground px-2 text-gray-600 dark:text-gray-400"
|
|
||||||
data-id="24"><span class="sr-only" data-id="25">Add Link</span><svg xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
|
||||||
stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4" data-id="26"
|
|
||||||
data-darkreader-inline-stroke="" style="--darkreader-inline-stroke: currentColor;">
|
|
||||||
<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71">
|
|
||||||
</path>
|
|
||||||
<path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71">
|
|
||||||
</path>
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{{ render_partial('function_editor.html', name=name, script=script, environment_info=environment_info,
|
{{ render_partial('function_editor.html', name=name, script=script, environment_info=environment_info,
|
||||||
is_public=is_public, log_request=log_request, log_response=log_response, is_edit=True) }}
|
is_public=is_public, log_request=log_request, log_response=log_response, is_edit=True) }}
|
||||||
84
templates/dashboard/http_functions/header.html
Normal file
84
templates/dashboard/http_functions/header.html
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
<div>
|
||||||
|
<div class="flex items-center pb-1" data-id="51">
|
||||||
|
<div class="flex items-center">
|
||||||
|
|
||||||
|
<h1 class="font-semibold text-lg md:text-2xl" data-id="52">
|
||||||
|
{{ title }}: <span class="font-mono">{{ name }}</span>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
{% if show_refresh|default(true, false) %}
|
||||||
|
<div class="ml-2 cursor-pointer text-gray-500" hx-get="{{ refresh_url }}" hx-target="#container"
|
||||||
|
hx-swap="innerHTML">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
||||||
|
stroke="currentColor" class="w-6 h-6" data-darkreader-inline-stroke=""
|
||||||
|
style="--darkreader-inline-stroke: currentColor;">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round"
|
||||||
|
d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99">
|
||||||
|
</path>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if show_logs|default(false, true) %}
|
||||||
|
<div class="ml-2 cursor-pointer text-gray-500" hx-get="{{ url_for('get_http_function_logs', name=name) }}"
|
||||||
|
hx-target="#container" hx-swap="innerHTML">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
||||||
|
stroke="currentColor" data-slot="icon" class="w-6 h-6">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round"
|
||||||
|
d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if show_client|default(false, true) %}
|
||||||
|
<div class="ml-2 cursor-pointer text-gray-500"
|
||||||
|
hx-get="{{ url_for('client', user_id=user_id, function=name) }}" hx-target="#container"
|
||||||
|
hx-swap="innerHTML">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
||||||
|
stroke="currentColor" class="w-6 h-6">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round"
|
||||||
|
d="m3.75 13.5 10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75Z" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if show_edit_form|default(false, true) %}
|
||||||
|
<div class="ml-2 cursor-pointer text-gray-500"
|
||||||
|
hx-get="{{ url_for('get_http_function_edit_form', name=name) }}" hx-target="#container"
|
||||||
|
hx-swap="innerHTML">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
||||||
|
stroke="currentColor" data-slot="icon" class="w-6 h-6">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round"
|
||||||
|
d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<button
|
||||||
|
class="inline-flex items-center justify-center text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-9 rounded-md px-3 ml-auto"
|
||||||
|
hx-get="{{ url_for('dashboard_http_functions') }}" hx-target="#container" hx-swap="innerHTML">
|
||||||
|
Cancel
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% if show_link|default(true, false) %}
|
||||||
|
<div class="flex">
|
||||||
|
<a class="text-gray-300" href="{{ url_for('execute_http_function', user_id=user_id, function=name) }}">{{
|
||||||
|
url_for('execute_http_function', user_id=user_id, function=name) }}</a>
|
||||||
|
<button
|
||||||
|
class="inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground px-2 text-gray-600 dark:text-gray-400"
|
||||||
|
data-id="24">
|
||||||
|
<span class="sr-only" data-id="25">Add Link</span>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
|
||||||
|
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4"
|
||||||
|
data-id="26" data-darkreader-inline-stroke="" style="--darkreader-inline-stroke: currentColor;">
|
||||||
|
<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71">
|
||||||
|
</path>
|
||||||
|
<path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71">
|
||||||
|
</path>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
@@ -1,55 +1,5 @@
|
|||||||
<div>
|
{{ render_partial('dashboard/http_functions/header.html', title='Logs', user_id=user_id, name=name,
|
||||||
<div class="flex items-center pb-1" data-id="51">
|
refresh_url=url_for('get_http_function_logs', name=name), show_edit_form=True, show_client=True) }}
|
||||||
<div class="flex items-center">
|
|
||||||
|
|
||||||
<h1 class="font-semibold text-lg md:text-2xl" data-id="52">Logs: <span class="font-mono">{{ name }}</span>
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<div class="ml-2 cursor-pointer text-gray-500" hx-get="{{ url_for('get_http_function_logs', name=name) }}"
|
|
||||||
hx-target="#container" hx-swap="innerHTML">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
|
||||||
stroke="currentColor" class="w-6 h-6" data-darkreader-inline-stroke=""
|
|
||||||
style="--darkreader-inline-stroke: currentColor;">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round"
|
|
||||||
d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99">
|
|
||||||
</path>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="ml-2 cursor-pointer text-gray-500"
|
|
||||||
hx-get="{{ url_for('get_http_function_edit_form', name=name) }}" hx-target="#container"
|
|
||||||
hx-swap="innerHTML">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
|
||||||
stroke="currentColor" data-slot="icon" class="w-6 h-6">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round"
|
|
||||||
d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10" />
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<button
|
|
||||||
class="inline-flex items-center justify-center text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-9 rounded-md px-3 ml-auto"
|
|
||||||
hx-get="{{ url_for('dashboard_http_functions') }}" hx-target="#container" hx-swap="innerHTML">
|
|
||||||
Cancel
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="flex">
|
|
||||||
<a class="text-gray-300" href="{{ url_for('execute_http_function', user_id=user_id, function=name) }}">{{
|
|
||||||
url_for('execute_http_function', user_id=user_id, function=name) }}</a>
|
|
||||||
<button
|
|
||||||
class="inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground px-2 text-gray-600 dark:text-gray-400"
|
|
||||||
data-id="24"><span class="sr-only" data-id="25">Add Link</span><svg xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
|
||||||
stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4" data-id="26"
|
|
||||||
data-darkreader-inline-stroke="" style="--darkreader-inline-stroke: currentColor;">
|
|
||||||
<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71">
|
|
||||||
</path>
|
|
||||||
<path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71">
|
|
||||||
</path>
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="block md:grid md:grid-cols-4 md:gap-4 p-4">
|
<div class="block md:grid md:grid-cols-4 md:gap-4 p-4">
|
||||||
<!-- Headers -->
|
<!-- Headers -->
|
||||||
|
|||||||
Reference in New Issue
Block a user