fix(ui): исправить раздвоение интерфейса при htmx-фильтрации

Проблема: htmx через hx-target="#scans-table-container" получал
полную HTML-страницу (с <html>, <nav>, <head>) и вставлял её внутрь
существующей страницы → дублировался header.

Решение: шаблоны разделены на полные + фрагменты:
  - _scans_table.html — только filter-bar + таблица + пагинация
  - _packages_table.html — аналогично
  - web/routes.py: проверка HX-Request хедера → отдаём фрагмент
This commit is contained in:
Marker689
2026-05-10 06:08:24 +03:00
parent d23abe8b4b
commit c4c27deb79
5 changed files with 141 additions and 137 deletions

View File

@@ -76,8 +76,10 @@ async def scans_list(
scans = (await session.execute(q)).scalars().all()
total = await session.scalar(count_q)
template = "_scans_table.html" if request.headers.get("HX-Request") else "scans_list.html"
return _render(
"scans_list.html",
template,
scans=scans,
page=page,
per_page=per_page,
@@ -136,8 +138,10 @@ async def packages_list(
total = await session.scalar(total_q)
rows = (await session.execute(rows_q)).all()
template = "_packages_table.html" if request.headers.get("HX-Request") else "packages_list.html"
return _render(
"packages_list.html",
template,
packages=rows,
page=page,
per_page=per_page,