From 11142c1d08b5766ad76efff469fe2719e6056a34 Mon Sep 17 00:00:00 2001 From: mwiegand Date: Sun, 17 May 2026 21:18:38 +0200 Subject: [PATCH] feat(server-detail): state cluster + inspection strip + five modals Co-Authored-By: Claude Sonnet 4.6 --- l4d2web/l4d2web/templates/server_detail.html | 201 ++++++++++++++----- l4d2web/tests/test_servers.py | 41 ++++ 2 files changed, 193 insertions(+), 49 deletions(-) diff --git a/l4d2web/l4d2web/templates/server_detail.html b/l4d2web/l4d2web/templates/server_detail.html index 53fb085..c567a65 100644 --- a/l4d2web/l4d2web/templates/server_detail.html +++ b/l4d2web/l4d2web/templates/server_detail.html @@ -1,46 +1,70 @@ {% extends "base.html" %} +{% import "_macros.html" as macros %} {% block title %}Server {{ server.name }} | left4me{% endblock %} {% block content %} -
+

Server: {{ server.name }}

-
- -
Blueprint
{% if blueprint %}{{ blueprint.name }}{% endif %}
-
RCON Password
••••••••••••
-
Hostname
-
-
- - - - Leave empty for auto: "{{ g.user.username }} {{ server.name }}" -
-
-
-
- -

Actions

+ {# Lifecycle subblock — uses _server_actions.html which now opens job-log-modal on click #} {% include "_server_actions.html" %} -

Server Log

-

-
-  
-
+ hx-swap="innerHTML">
-

Console

-
-
+ {# Config grid — flat auto-fit; uses config_field macro from _macros.html #} +
+ {{ macros.config_field( + "Port", + ('' ~ server.port ~ '') | safe + ) }} + {{ macros.config_field( + "Blueprint", + (('' ~ blueprint.name ~ '') | safe) if blueprint else "—" + ) }} + {{ macros.config_field( + "RCON", + ( + '••••••••••••' + ~ ' ' + ~ '' + ) | safe + ) }} + {{ macros.config_field( + "Hostname", + ( + '
' + ~ '' + ~ '' + ~ '' + ~ '
' + ) | safe, + editable=True + ) }} +
+
+ +{# Inspection strip — Log / Console / Files with expand-to-modal #} +
+
+ + + + +
+ +
+

+  
+ +
+ -

Files

- {% if not file_tree_root_entries %} -

No files yet — start the server to mount its runtime.

- {% else %} - {% set entries = file_tree_root_entries %} - {% set truncated = file_tree_truncated %} - {% set truncated_count = file_tree_truncated_count %} - {% set files_base_url = "/servers/" ~ server.id %} - {% include "_overlay_file_tree.html" %} - {% endif %} +
+{# ===== Modals ===== #} + + + + + + + + + + + + + + + + + + + + + + + + + +