Files
KindClustersDashboard/app/templates/base.html
T
Sergey Antropoff c1e867a01f Веб-UI: логи kind create, старт/стоп кластеров, документация README
- Потоковые логи в job_store и UI; kind create через Popen с построчным выводом
- POST /clusters/{name}/start|stop; create по сохранённому kind-config.yaml
- Страница /documentation: GET /api/v1/docs/readme, marked+DOMPurify из static/vendor
- Иконки действий, плавающие подсказки, модалка подтверждения вместо confirm
- Makefile: make docker|podman rebuild; compose: монтирование README.md
- Dockerfile: COPY README.md; readme_doc: несколько путей к README

Автор: Сергей Антропов — https://devops.org.ru
2026-04-04 06:21:00 +03:00

71 lines
2.9 KiB
HTML

{# Общий каркас страниц веб-интерфейса kind-k8s-develop.
Автор: Сергей Антропов — https://devops.org.ru #}
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>{% block page_title %}{{ app_title }}{% endblock %} — kind</title>
<link rel="stylesheet" href="/static/style.css" />
{% block head_extra %}{% endblock %}
</head>
<body
class="app-body"
data-api-base="/api/v1"
data-app-title="{{ app_title | e }}"
>
<a class="skip-link" href="#main-content">К основному содержимому</a>
<header class="top-nav" role="banner">
<div class="top-nav-inner">
<div class="nav-brand">
<span class="nav-logo" aria-hidden="true"></span>
<span class="nav-title">{{ app_title }}</span>
</div>
<nav class="nav-links" aria-label="Разделы">
<a href="/" class="nav-link nav-pill nav-pill--home">Панель</a>
<a href="/documentation" class="nav-link nav-pill">Документация</a>
<a href="/docs" class="nav-link nav-pill nav-pill--ext" data-open-window="kind_swagger">Swagger</a>
<a href="/redoc" class="nav-link nav-pill nav-pill--ext" data-open-window="kind_redoc">ReDoc</a>
<a href="/api/v1/health" class="nav-link nav-pill nav-pill--ext" data-open-window="kind_health">Health</a>
</nav>
</div>
</header>
<div id="toast" class="toast hidden" role="status" aria-live="polite"></div>
{# Плавающие подсказки для иконок (position:fixed; не режутся overflow таблицы). #}
<div id="action-tooltip" class="action-tooltip-floating hidden" role="tooltip"></div>
<main id="main-content" class="app-main" tabindex="-1">
{% block content %}{% endblock %}
</main>
<footer class="footer app-footer">
{% block footer %}
<div class="footer-inner">
<p class="muted footer-line">Данные: том <code>clusters/</code> на хосте</p>
<p class="footer-copyright">
© kind-k8s-develop ·
<a href="https://devops.org.ru" target="_blank" rel="noopener">devops.org.ru</a>
</p>
</div>
{% endblock %}
</footer>
{# Отдельное окно браузера для документации и health (не вкладка). #}
<script>
(function () {
var opts = "noopener,noreferrer,width=1240,height=840,scrollbars=yes,resizable=yes";
document.querySelectorAll(".nav-link[data-open-window]").forEach(function (a) {
a.addEventListener("click", function (e) {
e.preventDefault();
var name = a.getAttribute("data-open-window") || "kind_ext";
window.open(a.getAttribute("href"), name, opts);
});
});
})();
</script>
{% block scripts %}{% endblock %}
</body>
</html>