This commit is contained in:
fra-2107
2024-11-25 19:40:57 -05:00
parent c6fd49192e
commit f9dcfde1e2
3 changed files with 114 additions and 211 deletions

View File

@ -3,27 +3,26 @@
// initialisation
let previousAlerts = [];
let sortOrder = {};
ajaxRequest('GET', 'php/request.php/alertes/', CheckNewAlerts);
// ajaxRequest('GET', 'php/request.php/alertes/', displayAlerts);
setInterval(() => {
ajaxRequest('GET', 'php/request.php/alertes/', CheckNewAlerts);
// Effectuer une requête AJAX pour récupérer les nouvelles alertes
}, 10000);
ajaxRequest('GET', 'php/request.php/alertes/', CheckNewAlerts);
ajaxRequest('GET', 'php/request.php/devices/', fillSelectDevice);
fillSelectRisque();
// filtrage
setInterval(() => {
ajaxRequest('GET', 'php/request.php/alertes/', CheckNewAlerts);
}, 10000);
// initialisation of the filters
$('#filter-button').click(() => {
const params = []; // Initialise le tableau des paramètres
const params = [];
const device = $('#device-select').val();
const alertlvl = $('#risque-select').val();
// Ajouter les paramètres uniquement s'ils sont définis
// enable parameters only if they are not empty
if (device) params.push(`device_product=${encodeURIComponent(device)}`);
if (alertlvl) params.push(`agent_severity=${encodeURIComponent(alertlvl)}`);
// Construire l'URL avec les paramètres
// build the url
let url;
if (params.length) {
url = `php/request.php/alertes/?${params.join('&')}`;
@ -32,23 +31,12 @@ $('#filter-button').click(() => {
url = 'php/request.php/alertes/';
console.log(url);
}
// Effectuer la requête AJAX
ajaxRequest('GET', url, displayAlerts);
ajaxRequest('GET', url, displayAlerts);
}
);
// $('#tweets').on('click', '.del', () => {
// console.log('delete');
// ajaxRequest('DELETE', 'php/request.php/tweets/' +
// $(event.target).closest('.del').attr('value') + '?login=' + login, () => {
// ajaxRequest('GET', 'php/request.php/tweets/', displayTweets);
// }
// );
// }
// );
//------------------------------------------------------------------------------
//--- displayAlerts ------------------------------------------------------------
//------------------------------------------------------------------------------
@ -66,55 +54,68 @@ function displayAlerts(alerts) {
$('<td>').text(alert['date_alerte']),
$('<td>').text(alert['name']),
$('<td>').text(alert['device_product']),
$('<td>').text(alert['src']+":"+alert['spt']),
$('<td>').text(alert['dst']+":"+alert['dpt']),
$('<td>').text(alert['src'] + ":" + alert['spt']),
$('<td>').text(alert['dst'] + ":" + alert['dpt']),
$('<td>').text(alert['agent_severity']),
$('<td>').text(alert['reason'])
)
);
}
//------------------------------------------------------------------------------
//--- fillSelectDevice ------------------------------------------------------------
//------------------------------------------------------------------------------
// fill select with devices.
// \param devices The devices data received via the Ajax request.
function fillSelectDevice(devices) {
for (let device of devices)
$('#device-select').append($('<option>').text(device['device_product']).val(device['device_product']));
}
//------------------------------------------------------------------------------
//--- fillSelectRisque ------------------------------------------------------------
//------------------------------------------------------------------------------
// fill select with alertslvl.
function fillSelectRisque() {
for (let i = 1; i <= 10; i++)
$('#risque-select').append($('<option>').text(i).val(i));
}
//------------------------------------------------------------------------------
//--- CheckNewAlerts ------------------------------------------------------------
//------------------------------------------------------------------------------
// checks if there is new alerts in the database and display if so.
// \param newAlerts The alerts data received via the Ajax request.
// \previousAlerts The old alerts data received via the Ajax request and stored.
function CheckNewAlerts(newAlerts) {
// Comparer les nouvelles alertes avec les anciennes
if (JSON.stringify(previousAlerts) !== JSON.stringify(newAlerts)) {
// Si les alertes ont changé, mettre à jour l'interface
displayAlerts(newAlerts);
// Mettre à jour les alertes précédentes
previousAlerts = newAlerts;
displayAlerts(newAlerts);
previousAlerts = newAlerts;
}
}
// Fonction pour trier les alertes
//------------------------------------------------------------------------------
//--- sortTable ------------------------------------------------------------
//------------------------------------------------------------------------------
// sort the table.
// \param columnName The name of the column to sort.
function sortTable(columnName) {
const currentOrder = sortOrder[columnName] || 'asc';
const newOrder = currentOrder === 'asc' ? 'desc' : 'asc';
sortOrder[columnName] = newOrder;
// Construire les paramètres de la requête pour l'orderby
const params = [];
params.push(`orderby=${columnName}`);
params.push(`order=${newOrder}`);
const url = `php/request.php/alertes/?${params.join('&')}`;
// Effectuer la requête AJAX pour récupérer les alertes triées
ajaxRequest('GET', url, displayAlerts);
}
// Ajouter des gestionnaires d'événements de clic sur les en-têtes de colonnes
$('th').click(function() {
let columnName = $(this).text().trim().toLowerCase().replace(/ /g, '_'); // Convertir le texte de l'en-tête en nom de colonne
// sort the table when clicking on the column name
$('th').click(function () {
let columnName = $(this).text().trim().toLowerCase().replace(/ /g, '_');
console.log(columnName);
switch (columnName) {
case 'n°':