From 8f8f7f7acb84abcde3fd450858a3fe38977d98e6 Mon Sep 17 00:00:00 2001 From: Deeman Date: Wed, 25 Feb 2026 12:55:20 +0100 Subject: [PATCH] feat(pipeline): query editor tab templates - partials/pipeline_query.html: dark-themed SQL textarea (navy bg, Commit Mono, 12px border-radius, electric blue focus glow) + schema sidebar (collapsible per-table column lists with types) + controls bar (Execute, Clear, limit/timeout note) + Tab-key indent + Cmd/Ctrl+Enter submit - partials/pipeline_query_results.html: results table with sticky headers, horizontal scroll, row count + elapsed time metadata, truncation warning, error display in red monospace card Subtask 5 of 6 Co-Authored-By: Claude Sonnet 4.6 --- .../admin/partials/pipeline_query.html | 258 ++++++++++++++++++ .../partials/pipeline_query_results.html | 46 ++++ 2 files changed, 304 insertions(+) create mode 100644 web/src/padelnomics/admin/templates/admin/partials/pipeline_query.html create mode 100644 web/src/padelnomics/admin/templates/admin/partials/pipeline_query_results.html diff --git a/web/src/padelnomics/admin/templates/admin/partials/pipeline_query.html b/web/src/padelnomics/admin/templates/admin/partials/pipeline_query.html new file mode 100644 index 0000000..0afb9dc --- /dev/null +++ b/web/src/padelnomics/admin/templates/admin/partials/pipeline_query.html @@ -0,0 +1,258 @@ + + + +
+ + + +
+ +
+ + +
+ + + + + + + {{ max_rows | default(1000) }} row limit · {{ timeout_seconds | default(10) }}s timeout · SELECT only + +
+
+ + + +
+
+ + +
+ + diff --git a/web/src/padelnomics/admin/templates/admin/partials/pipeline_query_results.html b/web/src/padelnomics/admin/templates/admin/partials/pipeline_query_results.html new file mode 100644 index 0000000..5a75d75 --- /dev/null +++ b/web/src/padelnomics/admin/templates/admin/partials/pipeline_query_results.html @@ -0,0 +1,46 @@ + +{% if error %} +
+ Query error + {{ error }} +
+{% elif columns %} +
+ {{ row_count | default(0) }} row{{ 's' if row_count != 1 }} + · + {{ "%.1f" | format(elapsed_ms) }} ms + {% if truncated %} + Result truncated at {{ row_count }} rows + {% endif %} +
+
+ + + + {% for col in columns %} + + {% endfor %} + + + + {% for row in rows %} + + {% for val in row %} + + {% endfor %} + + {% endfor %} + +
{{ col }}
+ {% if val is none %} + null + {% else %} + {{ val | string | truncate(60, true) }} + {% endif %} +
+
+{% else %} +
+

Query returned no rows.

+
+{% endif %}