765 lines
31 KiB
HTML

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Gestion du Personnel</title>
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<link rel="stylesheet" href="../../css/VACATAIRE/vacataire.css">
<link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" />
<style>
/* Styles personnalisés pour la page de gestion */
.header {
background-color: #0f431f;
color: white;
padding: 10px 0;
text-align: center;
}
.footer {
text-align: center;
padding: 10px 0;
margin-top: 20px;
background-color: #0f431f;
color: white;
}
.btn {
padding: 10px 15px;
background-color: #0f431f;
color: white;
text-decoration: none;
border-radius: 5px;
display: inline-block;
}
.btn:hover {
background-color: #0b3116;
}
.employee-table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
.employee-table th, .employee-table td {
border: 1px solid #ccc;
padding: 8px;
text-align: left;
}
.employee-table th {
background-color: #f8f8f8;
}
.modal {
display: none; /* Hidden by default */
position: fixed; /* Stay in place */
z-index: 1000; /* Sit on top */
left: 0;
top: 0;
width: 100%; /* Full width */
height: 100%; /* Full height */
overflow: auto; /* Enable scroll if needed */
background-color: rgba(0, 0, 0, 0.4); /* Black w/ opacity */
}
.modal-content {
background-color: #fefefe;
margin: 15% auto; /* 15% from the top and centered */
padding: 20px;
border: 1px solid #888;
width: 80%; /* Could be more or less, depending on screen size */
border-radius: 8px; /* Rounded corners */
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); /* Shadow */
animation: fadeIn 0.5s; /* Animation for modal */
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
.close {
color: #aaa;
float: right;
font-size: 28px;
font-weight: bold;
}
.close:hover,
.close:focus {
color: black;
text-decoration: none;
cursor: pointer;
}
h2 {
color: #333; /* Couleur du texte du titre */
}
label {
font-weight: bold; /* Grasset pour les étiquettes */
}
input[type="text"],
input[type="email"],
input[type="tel"],
input[type="date"] {
width: 100%; /* Full width */
padding: 10px; /* Padding for inputs */
margin: 8px 0; /* Margin for inputs */
border: 1px solid #ccc; /* Border color */
border-radius: 4px; /* Rounded corners */
box-sizing: border-box; /* Box sizing */
}
button.btn {
background-color: #4CAF50; /* Green */
color: white; /* White text */
padding: 10px 15px; /* Padding for buttons */
border: none; /* No border */
border-radius: 4px; /* Rounded corners */
cursor: pointer; /* Pointer cursor on hover */
transition: background-color 0.3s; /* Transition effect */
}
button.btn:hover {
background-color: #45a049; /* Darker green on hover */
}
.view-section {
display: none;
margin-top: 20px;
}
</style>
</head>
<body>
<div class="header w3-bar w3-card-4 w3-dark-blue">
<!-- Logo pour retourner à l'accueil -->
<div class="logo-container w3-bar-item">
<img src="../../media/img/logoWhite.png" alt="Logo Accueil" class="w3-image" style="width:150px; height:40px;">
</div>
<!-- Bouton burger pour petit écran -->
<a href="javascript:void(0)" class="w3-bar-item w3-button w3-hide-large w3-right w3-padding-16" onclick="toggleMenu()"></a>
<!-- Catégories dans le header -->
<div id="menu" class="categories w3-hide-small w3-hide-medium w3-bar-item">
<a href="./rh.html" class="w3-bar-item w3-button">Accueil</a>
<a href="./gestion_personnel.html" class="w3-bar-item w3-button">Gestion du personnel</a>
<a href="./gestion-heures.html" class="w3-bar-item w3-button">Heures</a>
<a href="./candidature.html" class="w3-bar-item w3-button">Candidatures</a>
<a href="./mes-informations.html" class="w3-bar-item w3-button">Mes informations et documents</a>
</div>
<!-- Section utilisateur avec déconnexion -->
<div class="user-section w3-right w3-hide-small w3-hide-medium">
<div class="user-name">
Alice BERGER
</div>
<div class="logout-container w3-bar-item">
<a href="./notifications.html" title="Notifications">
<img src="../../media/img/notifs.png" alt="Logo notification" style="width:24px; height:24px;">
</a>
<a href="./settings.html" title="Paramètres">
<img src="../../media/img/settings.png" alt="Logo paramètres" style="width:24px; height:24px;">
</a>
<a href="../../index.html" title="Se déconnecter">
<img src="../../media/img/LogOutWhite.png" alt="Logo Déconnexion" style="width:24px; height:24px;">
</a>
</div>
</div>
<!-- Menu mobile caché au départ -->
<div id="mobileMenu" class="w3-bar-block w3-hide w3-hide-large w3-dark-blue">
<a href="./rh.html" class="w3-bar-item w3-button">Accueil</a>
<a href="./gestion_personnel.html" class="w3-bar-item w3-button">Gestion du personnel</a>
<a href="./gestion-heures.html" class="w3-bar-item w3-button">Heures</a>
<a href="./candidature.html" class="w3-bar-item w3-button">Candidatures</a>
<a href="./mes-informations.html" class="w3-bar-item w3-button">Mes informations et documents</a>
<!-- Section utilisateur pour mobile -->
<div class="w3-bar-item w3-border-top w3-margin-top">
<div class="user-name">Alice BERGER</div>
<a href="./notifications.html" title="Notifications">
<img src="../../media/img/notifs.png" alt="Logo notification" style="width:24px; height:24px;">
</a>
<a href="./settings.html" title="Paramètres">
<img src="../../media/img/settings.png" alt="Logo paramètres" style="width:24px; height:24px;">
</a>
<a href="../../index.html" title="Se déconnecter">
<img src="../../media/img/LogOutWhite.png" alt="Logo Déconnexion" style="width:24px; height:24px;">
</a>
</div>
</div>
</div>
<div class="w3-container">
<h2>Gestion du Personnel</h2>
<!-- Section pour importer et exporter des fichiers CSV -->
<div class="w3-margin-bottom">
<button class="btn" onclick="importCSV()">Importer données CSV</button>
<button class="btn" onclick="exportCSV()">Exporter données CSV</button>
</div>
<!-- Barre de recherche -->
<input type="text" id="searchInput" placeholder="Rechercher un employé..." onkeyup="searchEmployees()" class="w3-input w3-border w3-margin-bottom">
<!-- Table des employés -->
<div class="w3-responsive"> <!-- Classe pour la réactivité -->
<table class="employee-table" id="employeeTable">
<thead>
<tr>
<th onclick="sortTable(0)">Nom</th>
<th onclick="sortTable(1)">Prénom</th>
<th onclick="sortTable(2)">Département</th>
<th onclick="sortTable(3)">Date de Naissance</th>
<th onclick="sortTable(4)">Numéro de Sécurité Sociale</th>
<th onclick="sortTable(5)">Sexe</th>
<th onclick="sortTable(6)">Adresse</th>
<th onclick="sortTable(7)">E-mail</th>
<th onclick="sortTable(8)">Téléphone</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<!-- Exemples de données -->
<tr>
<td>Dupont</td>
<td>Jean</td>
<td>Informatique</td>
<td>01/01/1980</td>
<td>123-45-6789</td>
<td>M</td>
<td>123 Rue Exemple, Paris</td>
<td>jean.dupont@example.com</td>
<td>0123456789</td>
<td>
<button class="btn w3-red" onclick="openEditModal(this)">Modifier</button>
<button class="btn" onclick="removeEmployee(this)">Supprimer</button>
<button class="btn" onclick="viewPayments('Jean')">Voir Paiements</button>
<button class="btn" onclick="viewHours('Jean')">Voir Heures</button>
<button class="btn" onclick="viewAidRequests('Jean')">Voir Demandes d'Aide</button>
</td>
</tr>
<tr>
<td>Martin</td>
<td>Marie</td>
<td>GEA</td>
<td>15/05/1985</td>
<td>987-65-4321</td>
<td>F</td>
<td>456 Rue Exemple, Lyon</td>
<td>marie.martin@example.com</td>
<td>0987654321</td>
<td>
<button class="btn w3-red" onclick="openEditModal(this)">Modifier</button>
<button class="btn" onclick="removeEmployee(this)">Supprimer</button>
<button class="btn" onclick="viewPayments('Marie')">Voir Paiements</button>
<button class="btn" onclick="viewHours('Marie')">Voir Heures</button>
<button class="btn" onclick="viewAidRequests('Marie')">Voir Demandes d'Aide</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- Modal pour modifier les informations d'un employé -->
<div id="editModal" class="modal">
<div class="modal-content">
<span class="close" onclick="closeModal()">&times;</span>
<h2>Modifier l'Employé</h2>
<label for="editName">Nom :</label>
<input type="text" id="editName"><br>
<label for="editFirstName">Prénom :</label>
<input type="text" id="editFirstName"><br>
<label for="editDepartment">Département :</label>
<input type="text" id="editDepartment"><br>
<label for="editBirthdate">Date de Naissance :</label>
<input type="date" id="editBirthdate"><br>
<label for="editSSN">Numéro de Sécurité Sociale :</label>
<input type="text" id="editSSN"><br>
<label for="editGender">Sexe :</label>
<select id="editGender">
<option value="M">Masculin</option>
<option value="F">Féminin</option>
<option value="Autre">Autre</option>
</select><br>
<label for="editAddress">Adresse :</label>
<input type="text" id="editAddress"><br>
<label for="editEmail">E-mail :</label>
<input type="email" id="editEmail"><br>
<label for="editPhone">Téléphone :</label>
<input type="tel" id="editPhone"><br>
<button class="btn" onclick="saveEmployee()">Enregistrer</button>
</div>
</div>
<div id="paymentModal" class="modal">
<div class="modal-content">
<span class="close" onclick="closePaymentModal()">&times;</span>
<h2>Historique des Paiements</h2>
<div class="table-container">
<table>
<thead>
<tr>
<th>Date</th>
<th>Montant (Brut)</th>
<th>Statut</th>
<th>Actions</th>
</tr>
</thead>
<tbody id="paymentHistory">
<!-- Les paiements seront ajoutés ici dynamiquement -->
</tbody>
</table>
</div>
</div>
</div>
<div id="hoursModal" class="modal">
<div class="modal-content">
<span class="close" onclick="closeHoursModal()">&times;</span>
<h2>Historique des Heures Travaillées</h2>
<div class="table-container">
<table id="hoursTable" class="w3-table w3-bordered w3-striped">
<thead>
<tr>
<th onclick="sortTable(0)">Date &#x25B2;</th> <!-- Triable -->
<th>Matière</th>
<th>Type d'Intervention</th>
<th onclick="sortTable(3)">Volume Horaire &#x25B2;</th> <!-- Triable -->
<th onclick="sortTable(4)">Heures Travaillées &#x25B2;</th> <!-- Triable -->
<th>Actions</th>
</tr>
</thead>
<tbody id="hoursTableBody">
<!-- Les lignes seront générées dynamiquement avec JavaScript -->
</tbody>
</table>
</div>
</div>
</div>
<!-- Modal pour afficher l'historique des demandes d'aide -->
<div id="aidRequestsModal" class="modal">
<div class="modal-content">
<span class="close" onclick="closeAidRequestsModal()">&times;</span>
<h2>Historique des Demandes d'Aide</h2>
<div class="table-container">
<table id="aidRequestsTable" class="w3-table w3-bordered w3-striped">
<thead>
<tr>
<th>Date de Demande</th>
<th>Matière</th>
<th>Type de Demande</th>
<th>Statut</th>
<th>Actions</th>
</tr>
</thead>
<tbody id="aidRequestsTableBody">
<!-- Les lignes seront générées dynamiquement avec JavaScript -->
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="footer">
<p>&copy; 2024 IUT de Fontainebleau. Tous droits réservés |
<a href="../mentions_legales.html">Mentions légales</a>
</p>
</div>
<script>
// Variables globales pour stocker les informations des employés
const employees = [
{
name: 'Dupont',
firstName: 'Jean',
department: 'Informatique',
birthdate: '1980-01-01',
ssn: '1 85 04 25 311 114 26',
gender: 'M',
address: '123 Rue des exemples, Paris',
email: 'jean.dupont@u-pec.fr',
phone: '06.02.54.15.85'
},
{
name: 'Martin',
firstName: 'Marie',
department: 'GEA',
birthdate: '1985-05-15',
ssn: '2 85 04 25 311 114 26',
gender: 'F',
address: '456 Rue des développeurs, Lyon',
email: 'marie.martin@u-pec.fr',
phone: '07.68.54.14.85'
}
];
const allHours = {
"Jean": [
{ date: "2024-01-15", subject: "Mathématiques", interventionType: "Cours", volume: "3h", workedHours: "3h" },
{ date: "2024-01-20", subject: "Physique", interventionType: "TD", volume: "2h", workedHours: "2h" },
{ date: "2024-02-15", subject: "Informatique", interventionType: "TP", volume: "4h", workedHours: "4h" },
{ date: "2024-03-05", subject: "Chimie", interventionType: "Cours", volume: "2h", workedHours: "2h" },
{ date: "2024-03-10", subject: "Mathématiques", interventionType: "Cours", volume: "1h", workedHours: "1h" },
{ date: "2024-04-01", subject: "Biologie", interventionType: "TD", volume: "2h", workedHours: "2h" },
],
"Marie": [
{ date: "2024-01-12", subject: "Économie", interventionType: "Cours", volume: "3h", workedHours: "3h" },
{ date: "2024-01-22", subject: "Gestion", interventionType: "TP", volume: "2h", workedHours: "2h" },
{ date: "2024-02-18", subject: "Droit", interventionType: "TD", volume: "4h", workedHours: "4h" },
{ date: "2024-03-15", subject: "Informatique", interventionType: "Cours", volume: "2h", workedHours: "2h" },
],
};
const allAidRequests = {
"Jean": [
{ requestDate: "2024-01-10", subject: "Mathématiques", requestType: "Problème d'heures", status: "En attente" },
{ requestDate: "2024-02-12", subject: "Informatique", requestType: "Problèmes de paiements", status: "Résolue" },
],
"Marie": [
{ requestDate: "2024-01-05", subject: "Économie", requestType: "Problème d'heures", status: "Résolue" },
{ requestDate: "2024-01-22", subject: "Gestion", requestType: "Problèmes de paiements", status: "En attente" },
],
};
function editHour(button) {
const row = button.closest("tr");
const date = row.cells[0].innerText;
const subject = row.cells[1].innerText;
const interventionType = row.cells[2].innerText;
const volume = row.cells[3].innerText;
const workedHours = row.cells[4].innerText;
// Logique de modification des heures
const newSubject = prompt("Modifier la matière:", subject);
if (newSubject) {
row.cells[1].innerText = newSubject; // Met à jour la matière
}
}
function viewAidRequests(firstName) {
const aidRequestsContent = document.getElementById('aidRequestsTableBody');
aidRequestsContent.innerHTML = ""; // Réinitialiser le tableau
const aidRequests = allAidRequests[firstName] || [];
// Boucle à travers les demandes d'aide pour remplir le tableau
aidRequests.forEach((entry) => {
const row = document.createElement("tr");
row.innerHTML = `
<td>${entry.requestDate}</td>
<td>${entry.subject}</td>
<td>${entry.requestType}</td>
<td>${entry.status}</td>
<td>
<button class="btn" onclick="editAidRequest(this)">Modifier</button>
<button class="btn" onclick="removeAidRequest(this)">Supprimer</button>
</td>
`;
aidRequestsContent.appendChild(row);
});
document.getElementById('aidRequestsModal').style.display = "block";
}
function editAidRequest(button) {
const row = button.closest("tr");
const requestDate = row.cells[0].innerText;
const subject = row.cells[1].innerText;
const requestType = row.cells[2].innerText;
const status = row.cells[3].innerText;
// Logique de modification de la demande
const newSubject = prompt("Modifier la matière:", subject);
if (newSubject) {
row.cells[1].innerText = newSubject; // Met à jour la matière
}
// Vous pouvez ajouter plus de prompts pour les autres colonnes si nécessaire
}
function removeAidRequest(button) {
const row = button.closest("tr");
row.parentNode.removeChild(row);
}
function removeHour(button) {
const row = button.closest("tr");
row.parentNode.removeChild(row);
}
function viewHours(firstName) {
const hoursContent = document.getElementById('hoursTableBody');
hoursContent.innerHTML = ""; // Réinitialiser le tableau
const hours = allHours[firstName] || [];
// Boucle à travers les heures pour remplir le tableau
hours.forEach((entry) => {
const row = document.createElement("tr");
row.innerHTML = `
<td>${entry.date}</td>
<td>${entry.subject}</td>
<td>${entry.interventionType}</td>
<td>${entry.volume}</td>
<td>${entry.workedHours}</td>
<td>
<button class="btn" onclick="editHour(this)">Modifier</button>
<button class="btn" onclick="removeHour(this)">Supprimer</button>
</td>
`;
hoursContent.appendChild(row);
});
document.getElementById('hoursModal').style.display = "block";
}
// Fonction pour ouvrir le modal d'édition
function openEditModal(button) {
const row = button.closest('tr');
const index = Array.from(row.parentNode.children).indexOf(row);
const employee = employees[index];
// Remplir le modal avec les données de l'employé
document.getElementById('editName').value = employee.name;
document.getElementById('editFirstName').value = employee.firstName;
document.getElementById('editDepartment').value = employee.department;
document.getElementById('editBirthdate').value = employee.birthdate;
document.getElementById('editSSN').value = employee.ssn;
document.getElementById('editGender').value = employee.gender;
document.getElementById('editAddress').value = employee.address;
document.getElementById('editEmail').value = employee.email;
document.getElementById('editPhone').value = employee.phone;
// Afficher le modal
document.getElementById('editModal').style.display = "block";
}
// Fonction pour fermer le modal
function closeModal() {
document.getElementById('editModal').style.display = "none";
}
// Fonction pour enregistrer les modifications
function saveEmployee() {
const name = document.getElementById('editName').value;
const firstName = document.getElementById('editFirstName').value;
const department = document.getElementById('editDepartment').value;
const birthdate = document.getElementById('editBirthdate').value;
const ssn = document.getElementById('editSSN').value;
const gender = document.getElementById('editGender').value;
const address = document.getElementById('editAddress').value;
const email = document.getElementById('editEmail').value;
const phone = document.getElementById('editPhone').value;
// Logique pour mettre à jour les données de l'employé
const index = Array.from(document.querySelectorAll('#employeeTable tbody tr')).findIndex(row => row.querySelector('td').textContent === name);
employees[index] = { name, firstName, department, birthdate, ssn, gender, address, email, phone };
// Mettre à jour la table
updateEmployeeTable();
// Fermer le modal
closeModal();
}
// Fonction pour mettre à jour la table des employés
function updateEmployeeTable() {
const tbody = document.querySelector('#employeeTable tbody');
tbody.innerHTML = ''; // Vider le contenu actuel
employees.forEach(employee => {
const row = document.createElement('tr');
row.innerHTML = `
<td>${employee.name}</td>
<td>${employee.firstName}</td>
<td>${employee.department}</td>
<td>${employee.birthdate}</td>
<td>${employee.ssn}</td>
<td>${employee.gender}</td>
<td>${employee.address}</td>
<td>${employee.email}</td>
<td>${employee.phone}</td>
<td>
<button class="btn" onclick="openEditModal(this)">Modifier</button>
<button class="btn" onclick="removeEmployee(this)">Supprimer</button>
<button class="btn" onclick="viewPayments('${employee.firstName}')">Voir Paiements</button>
<button class="btn" onclick="viewHours('${employee.firstName}')">Voir Heures</button>
<button class="btn" onclick="viewAidRequests('${employee.firstName}')">Voir Demandes d'Aide</button>
</td>
`;
tbody.appendChild(row);
});
}
// Fonction pour supprimer un employé
function removeEmployee(button) {
const row = button.closest('tr');
const index = Array.from(row.parentNode.children).indexOf(row);
employees.splice(index, 1); // Supprimer l'employé du tableau
updateEmployeeTable(); // Mettre à jour la table
}
// Fonction de recherche
function searchEmployees() {
const input = document.getElementById('searchInput').value.toLowerCase();
const table = document.getElementById('employeeTable');
const rows = table.getElementsByTagName('tr');
for (let i = 1; i < rows.length; i++) {
const cells = rows[i].getElementsByTagName('td');
let found = false;
for (let j = 0; j < cells.length; j++) {
if (cells[j].textContent.toLowerCase().includes(input)) {
found = true;
break;
}
}
rows[i].style.display = found ? '' : 'none';
}
}
// Fonction pour trier la table
function sortTable(n) {
const table = document.getElementById("employeeTable");
let switching = true;
let shouldSwitch, dir = "asc", switchcount = 0;
while (switching) {
switching = false;
const rows = table.rows;
for (let i = 1; i < (rows.length - 1); i++) {
shouldSwitch = false;
const x = rows[i].getElementsByTagName("TD")[n];
const y = rows[i + 1].getElementsByTagName("TD")[n];
if (dir === "asc") {
if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
shouldSwitch = true;
break;
}
} else if (dir === "desc") {
if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
shouldSwitch = true;
break;
}
}
}
if (shouldSwitch) {
rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
switching = true;
switchcount++;
} else {
if (switchcount === 0 && dir === "asc") {
dir = "desc";
switching = true;
}
}
}
}
// Fonctions pour afficher les paiements, les heures et les demandes d'aide
function viewPayments(firstName) {
const paymentHistory = document.getElementById("paymentHistory");
paymentHistory.innerHTML = ""; // Réinitialiser l'historique
// Simuler des données de paiements
const payments = [
{ date: "2024-01-15", amount: "1500€", status: "Validé" },
{ date: "2024-02-15", amount: "1500€", status: "Validé" },
{ date: "2024-03-15", amount: "1500€", status: "En attente" },
];
payments.forEach((payment, index) => {
const row = document.createElement("tr");
row.innerHTML = `
<td>${payment.date}</td>
<td>${payment.amount}</td>
<td class="${payment.status === 'Validé' ? 'status-valide' : 'status-attente'}">${payment.status}</td>
<td>
<button class="btn" onclick="editPayment(${index})">Modifier</button>
<button class="btn" onclick="launchPayment(${index})">Lancer le Paiement</button>
</td>
`;
paymentHistory.appendChild(row);
});
document.getElementById("paymentModal").style.display = "block";
}
function editPayment(index) {
const paymentHistory = [
{ date: "2024-01-15", amount: "1500€", status: "Validé" },
{ date: "2024-02-15", amount: "1500€", status: "Validé" },
{ date: "2024-03-15", amount: "1500€", status: "En attente" },
];
const payment = paymentHistory[index];
const newAmount = prompt("Modifier le montant:", payment.amount);
if (newAmount) {
paymentHistory[index].amount = newAmount; // Mettre à jour le montant
alert(`Montant mis à jour: ${newAmount}`);
viewPayments(paymentHistory[index].firstName); // Actualiser l'historique
}
}
function launchPayment(index) {
const paymentHistory = [
{ date: "2024-01-15", amount: "1500€", status: "Validé" },
{ date: "2024-02-15", amount: "1500€", status: "Validé" },
{ date: "2024-03-15", amount: "1500€", status: "En attente" },
];
const payment = paymentHistory[index];
if (payment.status === "En attente") {
// Logique pour lancer le paiement ici
alert(`Paiement de ${payment.amount} lancé pour le ${payment.date}`);
payment.status = "Validé"; // Mettre à jour le statut
viewPayments(paymentHistory[index].firstName); // Actualiser l'historique
} else {
alert("Ce paiement est déjà validé.");
}
}
function closePaymentModal() {
document.getElementById("paymentModal").style.display = "none";
}
function closeHoursModal() {
document.getElementById('hoursModal').style.display = "none";
}
function closeAidRequestsModal() {
document.getElementById('aidRequestsModal').style.display = "none";
}
// Initialiser la table des employés
updateEmployeeTable();
function importCSV() {
alert("On demande à l'utilisateur de choisir un fichier .csv et ensuite on modifiera les tableaux en conséquences !");
}
function exportCSV() {
alert("On lancera le téléchargement d'un fichier CSV avec les données présentes dans les tableaux !");
}
</script>
<script>
function toggleMenu() {
var x = document.getElementById("mobileMenu");
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
} else {
x.className = x.className.replace(" w3-show", "");
}
}
</script>
</body>
</html>