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

164 lines
6.2 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 %}Создать Dockerfile - DevOpsLab{% endblock %}
{% block page_title %}Создать Dockerfile{% endblock %}
{% block content %}
<div class="card">
<div class="card-body">
<form
hx-post="/api/v1/dockerfiles"
hx-swap="none"
id="dockerfile-form"
>
<div class="mb-3">
<label class="form-label">Название</label>
<input
type="text"
name="name"
class="form-control"
placeholder="ubuntu22"
required
pattern="[a-z0-9-]+"
title="Только строчные буквы, цифры и дефисы"
>
<div class="form-text">
Только строчные буквы, цифры и дефисы
</div>
</div>
<div class="mb-3">
<label class="form-label">Базовый образ</label>
<input
type="text"
name="base_image"
class="form-control"
placeholder="ubuntu:22.04"
>
<div class="form-text">
Базовый образ (например, ubuntu:22.04)
</div>
</div>
<div class="mb-3">
<label class="form-label">Теги</label>
<input
type="text"
name="tags"
class="form-control"
placeholder="latest, v1.0, stable"
>
<div class="form-text">
Теги образа через запятую (например: latest, v1.0, stable)
</div>
</div>
<div class="mb-3">
<label class="form-label">Описание</label>
<textarea
name="description"
class="form-control"
rows="3"
placeholder="Описание Dockerfile..."
></textarea>
</div>
<div class="mb-3">
<label class="form-label">Dockerfile</label>
<textarea
id="dockerfile-content-editor"
class="form-control font-monospace"
rows="35"
placeholder="# Dockerfile
FROM ubuntu:22.04
# Установка пакетов
RUN apt-get update && apt-get install -y ..."
></textarea>
<input type="hidden" name="content" id="dockerfile-content-hidden">
<div class="form-text">
<i class="fas fa-info-circle me-1"></i>
Содержимое Dockerfile. Подсветка синтаксиса включена.
</div>
</div>
<div class="d-flex gap-2">
<button type="submit" class="btn btn-primary">
<i class="fas fa-save me-2"></i>
Создать Dockerfile
</button>
<a href="/dockerfiles" class="btn btn-secondary">
<i class="fas fa-times me-2"></i>
Отмена
</a>
</div>
</form>
</div>
</div>
{% endblock %}
{% block scripts %}
<script>
document.addEventListener('DOMContentLoaded', function() {
// Инициализация редактора Dockerfile
if (typeof CodeEditor !== 'undefined') {
const dockerfileEditor = CodeEditor.init('dockerfile-content-editor', 'dockerfile', {
theme: 'monokai',
lineNumbers: true,
foldGutter: true
});
if (dockerfileEditor) {
dockerfileEditor.on('change', function() {
const content = dockerfileEditor.getValue();
// Сохраняем в hidden поле для отправки формы
document.getElementById('dockerfile-content-hidden').value = content;
});
}
}
// Обработка формы
const form = document.getElementById('dockerfile-form');
form.addEventListener('htmx:afterRequest', function(event) {
if (event.detail.xhr.status === 200) {
const response = JSON.parse(event.detail.xhr.responseText);
// Показываем модальное окно с успешным сообщением
if (window.showMessageModal) {
window.showMessageModal(
response.message || 'Dockerfile создан успешно',
'success',
'Успешно',
function() {
// После закрытия модального окна перенаправляем на страницу деталей
window.location.href = `/dockerfiles/${response.id}`;
}
);
} else {
// Если функция недоступна, просто перенаправляем
window.location.href = `/dockerfiles/${response.id}`;
}
} else {
// Ошибка - показываем в модальном окне
try {
const response = JSON.parse(event.detail.xhr.responseText);
const errorMessage = response.detail || response.message || 'Ошибка при создании Dockerfile';
if (window.showMessageModal) {
window.showMessageModal(errorMessage, 'error');
} else {
alert(errorMessage);
}
} catch (e) {
if (window.showMessageModal) {
window.showMessageModal('Ошибка при создании Dockerfile', 'error');
} else {
alert('Ошибка при создании Dockerfile');
}
}
}
});
});
</script>
{% endblock %}