Files
DevOpsLab/app/templates/pages/roles/detail.html
Сергей Антропов 1fbf9185a2 feat: добавлена пометка типа операции (Build/Push) в истории сборок Dockerfile
- Добавлена колонка 'Тип' во все таблицы истории сборок
- Для push операций отображается registry вместо платформ
- Сохранение пользователя при создании push лога
- Исправлена ошибка с logger в push_docker_image endpoint
- Улучшено отображение истории сборок с визуальными индикаторами
2026-02-15 22:59:02 +03:00

235 lines
9.6 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% extends "base.html" %}
{% block title %}{{ role.name }} - DevOpsLab{% endblock %}
{% block page_title %}{{ role.name }}{% endblock %}
{% block header_actions %}
<div class="d-flex gap-2">
<a href="/roles/{{ role.name }}/test" class="btn btn-success btn-sm">
<i class="fas fa-vial me-2"></i>
Тестировать
</a>
<a href="/roles/{{ role.name }}/edit" class="btn btn-primary btn-sm">
<i class="fas fa-edit me-2"></i>
Редактировать
</a>
<a href="/roles" class="btn btn-secondary btn-sm">
<i class="fas fa-arrow-left me-2"></i>
Назад
</a>
</div>
{% endblock %}
{% block content %}
{% if role.description %}
<div class="alert alert-info mb-3">
<i class="fas fa-info-circle me-2"></i>
{{ role.description }}
</div>
{% endif %}
<!-- Вкладки -->
<div class="card">
<div class="card-header">
<ul class="nav nav-tabs card-header-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button
class="nav-link active"
id="overview-tab"
data-bs-toggle="tab"
data-bs-target="#overview"
type="button"
role="tab"
>
<i class="fas fa-info-circle me-2"></i>
Обзор
</button>
</li>
<li class="nav-item" role="presentation">
<button
class="nav-link"
id="tasks-tab"
data-bs-toggle="tab"
data-bs-target="#tasks"
type="button"
role="tab"
>
<i class="fas fa-tasks me-2"></i>
Задачи
</button>
</li>
<li class="nav-item" role="presentation">
<button
class="nav-link"
id="defaults-tab"
data-bs-toggle="tab"
data-bs-target="#defaults"
type="button"
role="tab"
>
<i class="fas fa-sliders-h me-2"></i>
Переменные
</button>
</li>
<li class="nav-item" role="presentation">
<button
class="nav-link"
id="readme-tab"
data-bs-toggle="tab"
data-bs-target="#readme"
type="button"
role="tab"
>
<i class="fas fa-book me-2"></i>
Документация
</button>
</li>
</ul>
</div>
<!-- Содержимое вкладок -->
<div class="card-body">
<div class="tab-content" id="role-tabs-content">
<!-- Вкладка: Обзор -->
<div class="tab-pane fade show active" id="overview" role="tabpanel">
<h5 class="mb-4">Информация о роли</h5>
<div class="row g-4 mb-4">
<div class="col-12 col-md-6">
<h6 class="fw-semibold mb-3">Структура</h6>
<ul class="list-unstyled">
{% if role.has_tasks %}
<li class="mb-2">
<i class="fas fa-check-circle text-success me-2"></i>
tasks/main.yml
</li>
{% else %}
<li class="mb-2 text-muted">
<i class="fas fa-times-circle me-2"></i>
tasks/main.yml
</li>
{% endif %}
{% if role.has_defaults %}
<li class="mb-2">
<i class="fas fa-check-circle text-success me-2"></i>
defaults/main.yml
</li>
{% else %}
<li class="mb-2 text-muted">
<i class="fas fa-times-circle me-2"></i>
defaults/main.yml
</li>
{% endif %}
{% if role.has_handlers %}
<li class="mb-2">
<i class="fas fa-check-circle text-success me-2"></i>
handlers/main.yml
</li>
{% else %}
<li class="mb-2 text-muted">
<i class="fas fa-times-circle me-2"></i>
handlers/main.yml
</li>
{% endif %}
{% if role.has_meta %}
<li class="mb-2">
<i class="fas fa-check-circle text-success me-2"></i>
meta/main.yml
</li>
{% else %}
<li class="mb-2 text-muted">
<i class="fas fa-times-circle me-2"></i>
meta/main.yml
</li>
{% endif %}
</ul>
</div>
<div class="col-12 col-md-6">
<h6 class="fw-semibold mb-3">Метаданные</h6>
{% if role.author %}
<p class="mb-2">
<strong>Автор:</strong> {{ role.author }}
</p>
{% endif %}
{% if role.platforms %}
<p class="mb-2"><strong>Платформы:</strong></p>
<ul class="list-unstyled">
{% for platform in role.platforms %}
<li class="mb-1">
<i class="fas fa-server me-2 text-muted"></i>
{{ platform.name }}
{% if platform.versions %}
<span class="text-muted">({{ platform.versions|join(", ") }})</span>
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
</div>
</div>
<div class="mt-4">
<h6 class="fw-semibold mb-3">Быстрые действия</h6>
<div class="d-flex gap-2 flex-wrap">
<a href="/roles/{{ role.name }}/test" class="btn btn-success">
<i class="fas fa-vial me-2"></i>
Запустить тест
</a>
<a href="/roles/{{ role.name }}/deploy" class="btn btn-primary">
<i class="fas fa-rocket me-2"></i>
Деплой
</a>
<a href="/roles/{{ role.name }}/export" class="btn btn-outline-primary">
<i class="fas fa-upload me-2"></i>
Экспорт
</a>
</div>
</div>
</div>
<!-- Вкладка: Задачи -->
<div class="tab-pane fade" id="tasks" role="tabpanel">
<h5 class="mb-4">Задачи (tasks/main.yml)</h5>
{% if tasks_content %}
<pre class="bg-dark text-light p-3 rounded"><code>{{ tasks_content }}</code></pre>
{% else %}
<div class="alert alert-warning">
<i class="fas fa-exclamation-triangle me-2"></i>
Файл tasks/main.yml не найден
</div>
{% endif %}
</div>
<!-- Вкладка: Переменные -->
<div class="tab-pane fade" id="defaults" role="tabpanel">
<h5 class="mb-4">Переменные (defaults/main.yml)</h5>
{% if defaults_content %}
<pre class="bg-dark text-light p-3 rounded"><code>{{ defaults_content }}</code></pre>
{% else %}
<div class="alert alert-warning">
<i class="fas fa-exclamation-triangle me-2"></i>
Файл defaults/main.yml не найден
</div>
{% endif %}
</div>
<!-- Вкладка: Документация -->
<div class="tab-pane fade" id="readme" role="tabpanel">
<h5 class="mb-4">Документация (README.md)</h5>
{% if readme_content %}
<div class="border rounded p-3 bg-light">
<pre class="mb-0" style="white-space: pre-wrap;">{{ readme_content }}</pre>
</div>
{% else %}
<div class="alert alert-warning">
<i class="fas fa-exclamation-triangle me-2"></i>
Файл README.md не найден
</div>
{% endif %}
</div>
</div>
</div>
</div>
{% endblock %}