Improve compatibility of router list update script and datatable

This commit is contained in:
Eduardo Silva 2024-04-15 16:55:07 -03:00
parent c0d3a6a971
commit f2fe560a3d
4 changed files with 45 additions and 32 deletions

View file

@ -140,6 +140,6 @@ STATICFILES_DIRS = [
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
MEDIA_ROOT = '/var/lib/routerfleet/' MEDIA_ROOT = '/var/lib/routerfleet/'
ROUTERFLEET_VERSION = 7012 ROUTERFLEET_VERSION = 7013
from routerfleet.production_settings import * from routerfleet.production_settings import *

View file

@ -11,6 +11,9 @@ def tag_webadmin_version():
if webadmin_settings.current_version != settings.ROUTERFLEET_VERSION: if webadmin_settings.current_version != settings.ROUTERFLEET_VERSION:
webadmin_settings.current_version = settings.ROUTERFLEET_VERSION webadmin_settings.current_version = settings.ROUTERFLEET_VERSION
webadmin_settings.save() webadmin_settings.save()
if webadmin_settings.current_version > webadmin_settings.latest_version:
webadmin_settings.latest_version = webadmin_settings.current_version
webadmin_settings.save()
if webadmin_settings.current_version == webadmin_settings.latest_version: if webadmin_settings.current_version == webadmin_settings.latest_version:
webadmin_settings.update_available = False webadmin_settings.update_available = False
webadmin_settings.save() webadmin_settings.save()

View file

@ -273,24 +273,25 @@
$('.select').chosen(); $('.select').chosen();
</script> </script>
<script> <script>
$(function () { var dataTable;
$(".datatables-with-export").DataTable({ $(function () {
"responsive": true, "lengthChange": false, "autoWidth": false, $(".datatables-with-export").DataTable({
"buttons": ["copy", "csv", "excel", "pdf", "print", "colvis"] "responsive": true, "lengthChange": false, "autoWidth": false,
}).buttons().container().appendTo('#example1_wrapper .col-md-6:eq(0)'); "buttons": ["copy", "csv", "excel", "pdf", "print", "colvis"]
$('.datatables-no-export').DataTable({ }).buttons().container().appendTo('#example1_wrapper .col-md-6:eq(0)');
"paging": true, dataTable = $('.datatables-no-export').DataTable({
"lengthChange": true, "paging": true,
"searching": true, "lengthChange": true,
"ordering": true, "searching": true,
"order": [], "ordering": true,
"info": true, "order": [],
"autoWidth": false, "info": true,
"responsive": true, "autoWidth": false,
"responsive": true,
});
}); });
}); $('.datatables-with-export').show();
$('.datatables-with-export').show(); $('.datatables-no-export').show();
$('.datatables-no-export').show();
</script> </script>
<script> <script>
$(document).ready(function() { $(document).ready(function() {

View file

@ -100,7 +100,7 @@
var group_uuid = "{{ filter_group.uuid|default_if_none:'' }}"; var group_uuid = "{{ filter_group.uuid|default_if_none:'' }}";
var status_online_text = '<span style="display: none">online</span><i class="far fa-check-circle text-success" title="Host is Online"></i>'; var status_online_text = '<span style="display: none">online</span><i class="far fa-check-circle text-success" title="Host is Online"></i>';
var status_offline_text = '<span style="display: none">offline</span><i class="far fa-times-circle text-danger" title="Host is unavailable"></i>'; var status_offline_text = '<span style="display: none">offline</span><i class="far fa-times-circle text-danger" title="Host is unavailable"></i>';
function checkStatusChange() { function checkStatusChange() {
$.ajax({ $.ajax({
url: "/monitoring/last_status_change/", url: "/monitoring/last_status_change/",
@ -123,28 +123,37 @@
} }
}); });
} }
function updateRouterStatuses(routerList) { function updateRouterStatuses(routerList) {
for (var uuid in routerList) { for (var uuid in routerList) {
var router = routerList[uuid]; var router = routerList[uuid];
var $statusTd = $('#status-' + uuid); var cells = dataTable.$('td#status-' + uuid);
var currentStatus = $statusTd.find('span').text().trim();
var newStatus = router.online ? 'online' : 'offline';
var newStatusHtml = router.online ? status_online_text : status_offline_text;
if (currentStatus !== newStatus) { if (cells.length) {
$statusTd.html(newStatusHtml); cells.each(function () {
var $cell = $(this);
var currentStatusContent = $cell.html();
var $currentSpan = $cell.find('span');
var currentStatus = $currentSpan.length ? $currentSpan.text().trim() : '';
$(document).Toasts('create', { var newStatus = router.online ? 'online' : 'offline';
class: router.online ? 'bg-success' : 'bg-danger', var newStatusHtml = router.online ? status_online_text : status_offline_text;
title: 'Host status updated',
body: 'Host ' + router.name + ' is now ' + newStatus, if (currentStatus !== newStatus) {
delay: 10000, $cell.html(newStatusHtml);
autohide: true
$(document).Toasts('create', {
class: router.online ? 'bg-success' : 'bg-danger',
title: 'Host status updated',
body: 'Host ' + router.name + ' is now ' + newStatus,
delay: 10000,
autohide: true
});
}
}); });
} }
} }
} }
setInterval(checkStatusChange, 30000); setInterval(checkStatusChange, 30000);
$(document).ready(function() { $(document).ready(function() {
checkStatusChange(); checkStatusChange();