zmiany w changlogach, alertach itp
This commit is contained in:
@ -145,6 +145,23 @@
|
||||
padding: 0.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
/* ========== Modal w trybie ciemny, ========== */
|
||||
.dark-mode .modal-content {
|
||||
background-color: #333;
|
||||
color: #ddd;
|
||||
border: none;
|
||||
}
|
||||
.dark-mode .modal-header,
|
||||
.dark-mode .modal-footer {
|
||||
border-color: #444;
|
||||
}
|
||||
.dark-mode .modal-title {
|
||||
color: #fff;
|
||||
}
|
||||
.dark-mode .btn-close {
|
||||
filter: invert(1);
|
||||
}
|
||||
</style>
|
||||
{% block extra_head %}{% endblock %}
|
||||
</head>
|
||||
|
@ -201,6 +201,11 @@ body.dark-mode .table-bordered > :not(caption) > * > * {
|
||||
<button id="mass-firmware-cancel-btn" class="btn btn-secondary ms-2">Anuluj</button>
|
||||
</div>
|
||||
|
||||
<!-- Overlay informujący o zakończonym odświeżaniu -->
|
||||
<div id="mass-update-overlay" style="display:none; position: fixed; top:0; left:0; width:100%; height:100%; background: rgba(0,0,0,0.7); z-index:1100; color:white; text-align:center; padding-top:200px;">
|
||||
<h3>Polecnie odświeżenia urządzeń wykonane!</h3>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// Ten sam skrypt masowych akcji, przeniesiony bez zmian w logice
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
@ -241,12 +246,12 @@ body.dark-mode .table-bordered > :not(caption) > * > * {
|
||||
// Pokaż overlay z paskiem postępu (5 minut)
|
||||
var overlay = document.getElementById('mass-system-update-overlay');
|
||||
overlay.style.display = 'block';
|
||||
var timeLeft = 300; // 300 sekund
|
||||
var timeLeft = 200; // 200 sekund
|
||||
var progressBar = document.getElementById('mass-system-progress');
|
||||
var timerDisplay = document.getElementById('mass-system-timer');
|
||||
var interval = setInterval(function(){
|
||||
timeLeft--;
|
||||
var percent = ((300 - timeLeft) / 300) * 100;
|
||||
var percent = ((200 - timeLeft) / 200) * 100;
|
||||
progressBar.style.width = percent + '%';
|
||||
timerDisplay.textContent = timeLeft + ' sekund';
|
||||
if(timeLeft <= 0){
|
||||
@ -298,12 +303,12 @@ body.dark-mode .table-bordered > :not(caption) > * > * {
|
||||
.then(function() {
|
||||
var overlay = document.getElementById('mass-firmware-update-overlay');
|
||||
overlay.style.display = 'block';
|
||||
var timeLeft = 120; // 120 sekund
|
||||
var timeLeft = 90; // 90 sekund
|
||||
var progressBar = document.getElementById('mass-firmware-progress');
|
||||
var timerDisplay = document.getElementById('mass-firmware-timer');
|
||||
var interval = setInterval(function(){
|
||||
timeLeft--;
|
||||
var percent = ((120 - timeLeft) / 120) * 100;
|
||||
var percent = ((90 - timeLeft) / 90) * 100;
|
||||
progressBar.style.width = percent + '%';
|
||||
timerDisplay.textContent = timeLeft + ' sekund';
|
||||
if(timeLeft <= 0){
|
||||
@ -319,19 +324,27 @@ body.dark-mode .table-bordered > :not(caption) > * > * {
|
||||
});
|
||||
}
|
||||
|
||||
// Obsługa "Odśwież wybrane"
|
||||
// Obsługa "Odśwież wybrane"
|
||||
document.getElementById('mass-update-form').addEventListener('submit', function(e) {
|
||||
e.preventDefault();
|
||||
var selectedDevices = getSelectedDeviceIds();
|
||||
if(selectedDevices.length === 0) {
|
||||
if (selectedDevices.length === 0) {
|
||||
alert("Wybierz przynajmniej jedno urządzenie.");
|
||||
return;
|
||||
}
|
||||
// Dla każdego wybranego urządzenia wykonaj force_check
|
||||
selectedDevices.forEach(function(id) {
|
||||
fetch(`/device/${id}/force_check`, { method: 'GET' })
|
||||
.catch(function(error){ console.error('Błąd force check dla urządzenia ' + id, error); });
|
||||
.catch(function(error) {
|
||||
console.error('Błąd force check dla urządzenia ' + id, error);
|
||||
});
|
||||
});
|
||||
setTimeout(function(){ location.reload(); }, 2000);
|
||||
// Pokaż overlay informujący o zakończonym odświeżaniu
|
||||
document.getElementById('mass-update-overlay').style.display = 'block';
|
||||
// Po 4 sekundach odśwież stronę
|
||||
setTimeout(function() {
|
||||
location.reload();
|
||||
}, 4000);
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
@ -63,11 +63,10 @@
|
||||
<div class="card border-0 shadow">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<h4 class="mb-0">Changelog RouterOS</h4>
|
||||
<a href="{{ url_for('force_fetch_changelogs') }}"
|
||||
class="btn btn-danger btn-sm"
|
||||
onclick="return confirm('Czy na pewno chcesz ręcznie pobrać wszystkie changelogi? Operacja usunie wszystkie stare wpisy.');">
|
||||
Aktualizuj changelogi
|
||||
</a>
|
||||
<!-- Przycisk do wywołania aktualizacji changelogów -->
|
||||
<a href="#" id="updateChangelog" class="btn btn-danger btn-sm">
|
||||
Aktualizuj changelogi
|
||||
</a>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
@ -151,4 +150,56 @@
|
||||
</div> <!-- /card-body -->
|
||||
</div> <!-- /card -->
|
||||
</div>
|
||||
|
||||
<!-- Modal z progressem -->
|
||||
<div class="modal fade" id="progressModal" tabindex="-1" role="dialog" aria-labelledby="progressModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="progressModalLabel">Pobieranie changelogów</h5>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="spinner-border" role="status">
|
||||
<span class="visually-hidden">Ładowanie...</span>
|
||||
</div>
|
||||
<p>Proszę czekać, trwa pobieranie changelogów...</p>
|
||||
<!-- Możesz dodać miejsce na logi, jeśli chcesz wyświetlać szczegóły postępu -->
|
||||
<div id="progressLog" style="max-height:200px; overflow-y:auto;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// Upewnij się, że Bootstrap JS jest załadowany (np. przez CDN)
|
||||
document.getElementById("updateChangelog").addEventListener("click", function(e) {
|
||||
e.preventDefault();
|
||||
// Pokaż modal
|
||||
var progressModalEl = document.getElementById("progressModal");
|
||||
var progressModal = new bootstrap.Modal(progressModalEl);
|
||||
progressModal.show();
|
||||
|
||||
// Opcjonalnie wyczyść poprzednie logi
|
||||
document.getElementById("progressLog").innerHTML = "";
|
||||
|
||||
// Wywołanie endpointu force_fetch_changelogs
|
||||
fetch("{{ url_for('force_fetch_changelogs') }}")
|
||||
.then(response => response.text())
|
||||
.then(data => {
|
||||
// Aktualizacja logu – możesz dodać otrzymane dane, jeśli są potrzebne
|
||||
document.getElementById("progressLog").innerHTML += "<p>Pobieranie zakończone.</p>";
|
||||
// Po krótkiej chwili zamknij modal i odśwież całą stronę
|
||||
setTimeout(() => {
|
||||
progressModal.hide();
|
||||
location.reload();
|
||||
}, 1000);
|
||||
})
|
||||
.catch(error => {
|
||||
document.getElementById("progressLog").innerHTML += "<p>Błąd: " + error + "</p>";
|
||||
setTimeout(() => {
|
||||
progressModal.hide();
|
||||
}, 2000);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
Reference in New Issue
Block a user