144 lines
6.8 KiB
HTML
144 lines
6.8 KiB
HTML
{% extends 'mainapp/base.html' %}
|
||
|
||
{% block title %}Подтверждение удаления транспондеров{% endblock %}
|
||
|
||
{% block content %}
|
||
<div class="container mt-4">
|
||
<div class="row justify-content-center">
|
||
<div class="col-md-10">
|
||
<div class="card border-danger">
|
||
<div class="card-header bg-danger text-white">
|
||
<h4 class="mb-0">
|
||
<i class="bi bi-exclamation-triangle"></i> Подтверждение удаления транспондеров
|
||
</h4>
|
||
</div>
|
||
<div class="card-body">
|
||
<div class="alert alert-warning" role="alert">
|
||
<h5 class="alert-heading">
|
||
<i class="bi bi-exclamation-circle"></i> Внимание!
|
||
</h5>
|
||
<p class="mb-0">
|
||
Вы собираетесь удалить <strong>{{ total_transponders }}</strong> транспондер(ов).
|
||
Это действие также удалит <strong>{{ total_objitems }}</strong> связанных точек.
|
||
</p>
|
||
<hr>
|
||
<p class="mb-0">
|
||
<strong>Это действие необратимо!</strong> Все данные будут безвозвратно удалены.
|
||
</p>
|
||
</div>
|
||
|
||
<h5 class="mt-4 mb-3">Детали удаления:</h5>
|
||
|
||
<div class="table-responsive" style="max-height: 400px; overflow-y: auto;">
|
||
<table class="table table-striped table-hover table-sm table-bordered">
|
||
<thead class="table-dark sticky-top">
|
||
<tr>
|
||
<th class="text-center" style="width: 10%;">ID</th>
|
||
<th style="width: 20%;">Название</th>
|
||
<th style="width: 20%;">Спутник</th>
|
||
<th class="text-center" style="width: 15%;">Downlink, МГц</th>
|
||
<th class="text-center" style="width: 15%;">Полоса, МГц</th>
|
||
<th class="text-center" style="width: 20%;">Кол-во точек</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% for transponder in transponders_info %}
|
||
<tr>
|
||
<td class="text-center">{{ transponder.id }}</td>
|
||
<td>{{ transponder.name }}</td>
|
||
<td>{{ transponder.satellite }}</td>
|
||
<td class="text-center">{{ transponder.downlink }}</td>
|
||
<td class="text-center">{{ transponder.frequency_range }}</td>
|
||
<td class="text-center">
|
||
<span class="badge bg-primary">{{ transponder.objitem_count }}</span>
|
||
</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="alert alert-info mt-4" role="alert">
|
||
<h6 class="alert-heading">Что будет удалено:</h6>
|
||
<ul class="mb-0">
|
||
<li><strong>{{ total_transponders }}</strong> транспондер(ов)</li>
|
||
<li><strong>{{ total_objitems }}</strong> точек ГЛ</li>
|
||
<li>Все связанные геолокационные данные</li>
|
||
<li>Все связанные параметры</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<form method="post" id="deleteForm">
|
||
{% csrf_token %}
|
||
<input type="hidden" name="ids" value="{{ ids }}">
|
||
|
||
<div class="d-flex justify-content-between mt-4">
|
||
<a href="{% url 'mainapp:transponder_list' %}" class="btn btn-secondary">
|
||
<i class="bi bi-arrow-left"></i> Отмена
|
||
</a>
|
||
<button type="submit" class="btn btn-danger" id="confirmDeleteBtn">
|
||
<i class="bi bi-trash"></i> Подтвердить удаление
|
||
</button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script>
|
||
document.getElementById('deleteForm').addEventListener('submit', function(e) {
|
||
e.preventDefault();
|
||
|
||
const btn = document.getElementById('confirmDeleteBtn');
|
||
btn.disabled = true;
|
||
btn.innerHTML = '<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span> Удаление...';
|
||
|
||
const formData = new FormData(this);
|
||
|
||
function getCookie(name) {
|
||
let cookieValue = null;
|
||
if (document.cookie && document.cookie !== '') {
|
||
const cookies = document.cookie.split(';');
|
||
for (let i = 0; i < cookies.length; i++) {
|
||
const cookie = cookies[i].trim();
|
||
if (cookie.substring(0, name.length + 1) === (name + '=')) {
|
||
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
return cookieValue;
|
||
}
|
||
|
||
const csrftoken = getCookie('csrftoken');
|
||
|
||
fetch('{% url "mainapp:delete_selected_transponders" %}', {
|
||
method: 'POST',
|
||
headers: {
|
||
'X-CSRFToken': csrftoken,
|
||
},
|
||
body: formData
|
||
})
|
||
.then(response => response.json())
|
||
.then(data => {
|
||
if (data.success) {
|
||
alert(data.message);
|
||
window.location.href = '{% url "mainapp:transponder_list" %}';
|
||
} else {
|
||
alert('Ошибка: ' + (data.error || 'Неизвестная ошибка'));
|
||
btn.disabled = false;
|
||
btn.innerHTML = '<i class="bi bi-trash"></i> Подтвердить удаление';
|
||
}
|
||
})
|
||
.catch(error => {
|
||
console.error('Error:', error);
|
||
alert('Произошла ошибка при удалении транспондеров');
|
||
btn.disabled = false;
|
||
btn.innerHTML = '<i class="bi bi-trash"></i> Подтвердить удаление';
|
||
});
|
||
});
|
||
</script>
|
||
{% endblock %}
|