From a5dc0ec8a06eecc6e9120969cb64ff750fa5b5af Mon Sep 17 00:00:00 2001 From: stiti <moncef.stiti@gmail.com> Date: Fri, 18 Oct 2024 19:07:09 +0200 Subject: [PATCH] Ajouts RH --- MaquetteWEB/html/CHEF/chef_departement.html | 1 + MaquetteWEB/html/CHEF/gestion-edt.html | 1 + .../html/CHEF/gestion-heures-formation.html | 1 + .../html/CHEF/gestion-heures-professeur.html | 1 + MaquetteWEB/html/CHEF/mes-informations.html | 1 + MaquetteWEB/html/CHEF/paiements.html | 1 + MaquetteWEB/html/FINANCE/finance.html | 1 + .../html/FINANCE/historique_paiements.html | 1 + .../html/FINANCE/mes_informations.html | 1 + .../html/FINANCE/paiements_en_attente.html | 1 + .../html/FINANCE/rapports_financiers.html | 1 + .../html/PROF/enseignant_permanent.html | 1 + MaquetteWEB/html/PROF/mes-heures.html | 1 + MaquetteWEB/html/PROF/mes-informations.html | 1 + MaquetteWEB/html/PROF/notifications.html | 1 + MaquetteWEB/html/PROF/paiements.html | 1 + MaquetteWEB/html/PROF/settings.html | 1 + MaquetteWEB/html/RH/candidature.html | 108 ++- MaquetteWEB/html/RH/gestion-heures.html | 176 ++-- MaquetteWEB/html/RH/gestion_personnel.html | 873 ++++++++++++++---- MaquetteWEB/html/RH/mes-informations.html | 53 +- MaquetteWEB/html/RH/notifications.html | 156 ++++ MaquetteWEB/html/RH/rh.html | 59 +- MaquetteWEB/html/RH/settings.html | 251 +++++ MaquetteWEB/html/mentions_legales.html | 1 + MaquetteWEB/index.html | 1 + MaquetteWEB/media/img/logoIcon.ico | Bin 0 -> 7921 bytes 27 files changed, 1361 insertions(+), 334 deletions(-) create mode 100644 MaquetteWEB/html/RH/notifications.html create mode 100644 MaquetteWEB/html/RH/settings.html create mode 100644 MaquetteWEB/media/img/logoIcon.ico diff --git a/MaquetteWEB/html/CHEF/chef_departement.html b/MaquetteWEB/html/CHEF/chef_departement.html index c820df4..7299e9b 100644 --- a/MaquetteWEB/html/CHEF/chef_departement.html +++ b/MaquetteWEB/html/CHEF/chef_departement.html @@ -7,6 +7,7 @@ <title>Dashboard Chef de département</title> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> <link rel="stylesheet" href="../../css/CHEF/chef_departement.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <link rel="stylesheet" href="../../css/CHEF/chef_departement2.css"> </head> diff --git a/MaquetteWEB/html/CHEF/gestion-edt.html b/MaquetteWEB/html/CHEF/gestion-edt.html index 67b53e3..2a1dfaa 100644 --- a/MaquetteWEB/html/CHEF/gestion-edt.html +++ b/MaquetteWEB/html/CHEF/gestion-edt.html @@ -8,6 +8,7 @@ <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> <link rel="stylesheet" href="../../css/CHEF/gestion-heures-formation.css"> <link rel="stylesheet" href="../../css/CHEF/chef_departement.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <style> /* Styles pour le modal */ .modal { diff --git a/MaquetteWEB/html/CHEF/gestion-heures-formation.html b/MaquetteWEB/html/CHEF/gestion-heures-formation.html index e379cc9..7ec3e18 100644 --- a/MaquetteWEB/html/CHEF/gestion-heures-formation.html +++ b/MaquetteWEB/html/CHEF/gestion-heures-formation.html @@ -6,6 +6,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Pilotage Budgétaire</title> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <link rel="stylesheet" href="../../css/CHEF/gestion-heures-formation.css"> <style> /* Styles pour le modal */ diff --git a/MaquetteWEB/html/CHEF/gestion-heures-professeur.html b/MaquetteWEB/html/CHEF/gestion-heures-professeur.html index 01b0b0a..7fdc43f 100644 --- a/MaquetteWEB/html/CHEF/gestion-heures-professeur.html +++ b/MaquetteWEB/html/CHEF/gestion-heures-professeur.html @@ -7,6 +7,7 @@ <title>Pilotage Budgétaire</title> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> <link rel="stylesheet" href="../../css/CHEF/gestion-heures-professeur.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <style> .chart-container { diff --git a/MaquetteWEB/html/CHEF/mes-informations.html b/MaquetteWEB/html/CHEF/mes-informations.html index d9b9fd5..9d1c422 100644 --- a/MaquetteWEB/html/CHEF/mes-informations.html +++ b/MaquetteWEB/html/CHEF/mes-informations.html @@ -5,6 +5,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Mes Informations</title> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <style> body { font-family: Arial, sans-serif; diff --git a/MaquetteWEB/html/CHEF/paiements.html b/MaquetteWEB/html/CHEF/paiements.html index 73ca619..77b06d7 100644 --- a/MaquetteWEB/html/CHEF/paiements.html +++ b/MaquetteWEB/html/CHEF/paiements.html @@ -5,6 +5,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Pilotage Budgétaire</title> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <link rel="stylesheet" href="../../css/CHEF/gestion-heures-professeur.css"> <style> .container { diff --git a/MaquetteWEB/html/FINANCE/finance.html b/MaquetteWEB/html/FINANCE/finance.html index f32cdb4..f545f1f 100644 --- a/MaquetteWEB/html/FINANCE/finance.html +++ b/MaquetteWEB/html/FINANCE/finance.html @@ -5,6 +5,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Dashboard Financier</title> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <link rel="stylesheet" href="../../css/FINANCE/finance.css"> </head> <body> diff --git a/MaquetteWEB/html/FINANCE/historique_paiements.html b/MaquetteWEB/html/FINANCE/historique_paiements.html index 6180a52..fd560e3 100644 --- a/MaquetteWEB/html/FINANCE/historique_paiements.html +++ b/MaquetteWEB/html/FINANCE/historique_paiements.html @@ -5,6 +5,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Historique des Transactions</title> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <link rel="stylesheet" href="../../css/FINANCE/finance.css"> <style> .dashboard-container { diff --git a/MaquetteWEB/html/FINANCE/mes_informations.html b/MaquetteWEB/html/FINANCE/mes_informations.html index eaf7d19..a8234e7 100644 --- a/MaquetteWEB/html/FINANCE/mes_informations.html +++ b/MaquetteWEB/html/FINANCE/mes_informations.html @@ -5,6 +5,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Mes Informations</title> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <style> body { font-family: Arial, sans-serif; diff --git a/MaquetteWEB/html/FINANCE/paiements_en_attente.html b/MaquetteWEB/html/FINANCE/paiements_en_attente.html index 9741e63..ee9c52f 100644 --- a/MaquetteWEB/html/FINANCE/paiements_en_attente.html +++ b/MaquetteWEB/html/FINANCE/paiements_en_attente.html @@ -5,6 +5,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Paiements en Attente</title> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <link rel="stylesheet" href="../../css/FINANCE/finance.css"> <style> diff --git a/MaquetteWEB/html/FINANCE/rapports_financiers.html b/MaquetteWEB/html/FINANCE/rapports_financiers.html index 397ac31..bba1981 100644 --- a/MaquetteWEB/html/FINANCE/rapports_financiers.html +++ b/MaquetteWEB/html/FINANCE/rapports_financiers.html @@ -5,6 +5,7 @@ <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Index des Rapports Financiers</title> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> <link rel="stylesheet" href="../../css/FINANCE/style.css"> <style> diff --git a/MaquetteWEB/html/PROF/enseignant_permanent.html b/MaquetteWEB/html/PROF/enseignant_permanent.html index 884fae8..59290c1 100644 --- a/MaquetteWEB/html/PROF/enseignant_permanent.html +++ b/MaquetteWEB/html/PROF/enseignant_permanent.html @@ -5,6 +5,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Dashboard enseignant permanent</title> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <link rel="stylesheet" href="../../css/PROF/enseignant_permanent.css"> </head> <body> diff --git a/MaquetteWEB/html/PROF/mes-heures.html b/MaquetteWEB/html/PROF/mes-heures.html index f8ac88b..0f32285 100644 --- a/MaquetteWEB/html/PROF/mes-heures.html +++ b/MaquetteWEB/html/PROF/mes-heures.html @@ -5,6 +5,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Suivi des Heures</title> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <link rel="stylesheet" href="../../css/PROF/mes-heures.css"> </head> diff --git a/MaquetteWEB/html/PROF/mes-informations.html b/MaquetteWEB/html/PROF/mes-informations.html index 261aa7e..9e300cb 100644 --- a/MaquetteWEB/html/PROF/mes-informations.html +++ b/MaquetteWEB/html/PROF/mes-informations.html @@ -5,6 +5,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Mes Informations</title> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <link rel="stylesheet" href="../../css/PROF/mes-infos.css"> </head> <body> diff --git a/MaquetteWEB/html/PROF/notifications.html b/MaquetteWEB/html/PROF/notifications.html index 7163f4c..9e14c1a 100644 --- a/MaquetteWEB/html/PROF/notifications.html +++ b/MaquetteWEB/html/PROF/notifications.html @@ -5,6 +5,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Notifications</title> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <link rel="stylesheet" href="../../css/PROF/enseignant_permanent.css"> <style> /* Ajout d'un style pour le conteneur des notifications */ diff --git a/MaquetteWEB/html/PROF/paiements.html b/MaquetteWEB/html/PROF/paiements.html index 38413a2..3ef3ca2 100644 --- a/MaquetteWEB/html/PROF/paiements.html +++ b/MaquetteWEB/html/PROF/paiements.html @@ -5,6 +5,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Suivi des Paiements</title> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <link rel="stylesheet" href="../../css/PROF/paiements.css"> </head> diff --git a/MaquetteWEB/html/PROF/settings.html b/MaquetteWEB/html/PROF/settings.html index 595c702..47b21c3 100644 --- a/MaquetteWEB/html/PROF/settings.html +++ b/MaquetteWEB/html/PROF/settings.html @@ -5,6 +5,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Paramètres Utilisateur</title> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <link rel="stylesheet" href="../../css/PROF/enseignant_permanent.css"> <style> .header { diff --git a/MaquetteWEB/html/RH/candidature.html b/MaquetteWEB/html/RH/candidature.html index 262bac1..22e2f1c 100644 --- a/MaquetteWEB/html/RH/candidature.html +++ b/MaquetteWEB/html/RH/candidature.html @@ -7,6 +7,7 @@ <link rel="stylesheet" href="../../css/RH/style.css"> <link rel="stylesheet" href="../../css/RH/rh.css"> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <title>Gestion des Candidatures</title> </head> @@ -32,12 +33,18 @@ <!-- Section utilisateur avec déconnexion --> <div class="user-section w3-bar-item w3-right"> - <div class="user-name w3-padding-16"> - Alice BERGER + <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"> + </a> + <a href="./settings.html" title="Paramètres"> + <img src="../../media/img/settings.png" alt="Logo paramètres"> + </a> <a href="../../index.html" title="Se déconnecter"> - <img src="../../media/img/LogOutWhite.png" alt="Logo Déconnexion" style="width:25px; height:25px;"> + <img src="../../media/img/LogOutWhite.png" alt="Logo Déconnexion"> </a> </div> </div> @@ -45,54 +52,69 @@ <div class="w3-container"> <div class="w3-row"> - <div class="w3-col s10"> + <div class="w3-col l10 m12 s12"> <!-- Pour large, medium et small devices --> <h2>Candidatures en Attente de Validation</h2> </div> </div> - + <!-- Barre de recherche --> <div class="w3-margin-bottom"> <input type="text" id="search-input" placeholder="Rechercher par nom" oninput="filterTable()" class="w3-input w3-border"> </div> - <!-- Conteneur de tri --> - <div class="w3-margin-bottom"> - <button class="w3-button w3-green" onclick="sortTable(0)">Trier par Nom</button> - <button class="w3-button w3-green" onclick="sortTable(1)">Trier par Prénom</button> - <button class="w3-button w3-green" onclick="sortTable(2)">Trier par Formation</button> - <button class="w3-button w3-green" onclick="openVacationModal()">Ajouter une Offre de Vacation</button> + <div class="w3-margin-bottom w3-row"> + <!-- Boutons empilés sur les petits écrans --> + <div class="w3-col l2 m6 s12 w3-margin-bottom" style="padding-right: 8px;"> + <button class="w3-button w3-green w3-block w3-small" style="padding: 5px;" onclick="sortTable(0)">Trier par Nom</button> + </div> + <div class="w3-col l2 m6 s12 w3-margin-bottom" style="padding-right: 8px;"> + <button class="w3-button w3-green w3-block w3-small" style="padding: 5px;" onclick="sortTable(1)">Trier par Prénom</button> + </div> + <div class="w3-col l2 m6 s12 w3-margin-bottom" style="padding-right: 8px;"> + <button class="w3-button w3-green w3-block w3-small" style="padding: 5px;" onclick="sortTable(2)">Trier par Formation</button> + </div> + <div class="w3-col l2 m6 s12 w3-margin-bottom"> + <button class="w3-button w3-blue w3-block w3-small" style="padding: 5px;" onclick="openVacationModal()">Ajouter une Offre de Vacation</button> + </div> </div> - <table class="w3-table w3-bordered w3-white"> - <thead> - <tr class="w3-green"> - <th>Nom</th> - <th>Prénom</th> - <th>Formation</th> - <th>Action</th> - </tr> - </thead> - <tbody id="candidatures-table"> - <tr> - <td>Mike</td> - <td>Michel</td> - <td>Informatique - BUT1</td> - <td> - <button class="w3-button w3-green" onclick="consulterDossier('Mike', 'Michel')">Consulter Dossier</button> - </td> - </tr> - <tr> - <td>John</td> - <td>Williams</td> - <td>Mathématiques - BUT GEA</td> - <td> - <button class="w3-button w3-green" onclick="consulterDossier('John', 'Williams')">Consulter Dossier</button> - </td> - </tr> - <!-- Ajoutez d'autres lignes ici --> - </tbody> - </table> + + <!-- Tableau responsive --> + <div class="w3-responsive"> + <table class="w3-table w3-bordered w3-white"> + <thead> + <tr class="w3-green"> + <th>Nom</th> + <th>Prénom</th> + <th>Formation</th> + <th>Durée</th> + <th>Action</th> + </tr> + </thead> + <tbody id="candidatures-table"> + <tr> + <td>Mike</td> + <td>Michel</td> + <td>Informatique - BUT1</td> + <td>1 semestre (120h)</td> + <td> + <button class="w3-button w3-green" onclick="consulterDossier('Mike', 'Michel')">Consulter Dossier</button> + </td> + </tr> + <tr> + <td>John</td> + <td>Williams</td> + <td>Mathématiques - BUT GEA</td> + <td>2 semestre (180h)</td> + <td> + <button class="w3-button w3-green" onclick="consulterDossier('John', 'Williams')">Consulter Dossier</button> + </td> + </tr> + </tbody> + </table> + </div> </div> + <!-- Modal pour consulter le dossier de candidature --> <div id="dossierModal" class="w3-modal"> @@ -108,8 +130,8 @@ <button class="w3-button w3-lime" style="margin-bottom: 10px;" onclick="ajouterCommentaire()">Ajouter Commentaire</button> </div> <div> - <button class="w3-button w3-green" onclick="validerDossier()">Valider Dossier</button> - <button class="w3-button w3-red" onclick="refuserDossier()">Refuser Dossier</button> + <button class="w3-button w3-green w3-margin-bottom" onclick="validerDossier()">Valider Dossier</button> + <button class="w3-button w3-red w3-margin-bottom" onclick="refuserDossier()">Refuser Dossier</button> </div> </div> </div> @@ -131,7 +153,7 @@ <label for="duree">Durée (en jours) :</label> <input type="number" id="duree" name="duree" min="1" required class="w3-input w3-border"> - <button type="submit" class="w3-button w3-green">Soumettre l'Offre</button> + <button type="submit" class="w3-button w3-green w3-margin-top w3-margin-bottom">Soumettre l'Offre</button> </form> </div> </div> diff --git a/MaquetteWEB/html/RH/gestion-heures.html b/MaquetteWEB/html/RH/gestion-heures.html index 5a18815..915c3b4 100644 --- a/MaquetteWEB/html/RH/gestion-heures.html +++ b/MaquetteWEB/html/RH/gestion-heures.html @@ -4,10 +4,11 @@ <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>Pilotage Budgétaire</title> + <title>Heures</title> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> <link rel="stylesheet" href="../../css/RH/style.css"> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <style> .chart-container { position: relative; @@ -113,12 +114,18 @@ <!-- Section utilisateur avec déconnexion --> <div class="user-section w3-bar-item w3-right"> - <div class="user-name w3-padding-16"> - Alice BERGER + <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"> + </a> + <a href="./settings.html" title="Paramètres"> + <img src="../../media/img/settings.png" alt="Logo paramètres"> + </a> <a href="../../index.html" title="Se déconnecter"> - <img src="../../media/img/LogOutWhite.png" alt="Logo Déconnexion" style="width:25px; height:25px;"> + <img src="../../media/img/LogOutWhite.png" alt="Logo Déconnexion"> </a> </div> </div> @@ -135,7 +142,7 @@ <div class="section-header"> <h2>Suivi des demandes de modification d'heures</h2> </div> - <div class="card"> + <div class="card w3-responsive"> <table class="w3-table-all" id="teaching-hours-table"> <thead> <tr> @@ -184,65 +191,68 @@ </table> </div> - - <h2>Heures des Professeurs</h2> - <table class="info-table" id="professorTable"> - <thead> - <tr> - <th>Professeur</th> - <th>Nombre d'heures</th> - <th>Statut</th> - <th>Actions</th> - </tr> - </thead> - <tbody> - <tr> - <td>Denis MONNERAT</td> - <td>120h</td> - <td>Permanents</td> - <td> - <button class="action-btn" onclick="toggleDetails(this, 'denis-details')">Voir</button> - <button class="action-btn" onclick="openModal('Denis MONNERAT')">Modifier</button> - </td> - </tr> - <tr class="details" id="denis-details"> - <td colspan="4"> - <strong>Historique des heures :</strong> - <ul> - <li>BUT1 Groupe 1 : 30h</li> - <li>BUT2 Groupe 2 : 40h</li> - <li>BUT3 Groupe 1 : 50h</li> - </ul> - <div class="chart-container"> - <canvas id="denisChart"></canvas> - </div> - </td> - </tr> - <tr> - <td>Maxime MENAULT</td> - <td>90h</td> - <td>Vacataire</td> - <td> - <button class="action-btn" onclick="toggleDetails(this, 'menault-details')">Voir</button> - <button class="action-btn" onclick="openModal('Maxime MENAULT')">Modifier</button> - </td> - </tr> - <tr class="details" id="menault-details"> - <td colspan="4"> - <strong>Historique des heures :</strong> - <ul> - <li>BUT1 Groupe 1 : 45h</li> - <li>BUT2 Groupe 3 : 45h</li> - </ul> - <div class="chart-container"> - <canvas id="menaultChart"></canvas> - </div> - </td> - </tr> - </tbody> - </table> - </div> - + <div class="w3-container"> + <h2>Heures des Professeurs</h2> + + <!-- Table des heures des professeurs --> + <div class="w3-responsive"> <!-- Classe pour la réactivité --> + <table class="info-table" id="professorTable"> + <thead> + <tr> + <th>Professeur</th> + <th>Nombre d'heures</th> + <th>Statut</th> + <th>Actions</th> + </tr> + </thead> + <tbody> + <tr> + <td>Denis MONNERAT</td> + <td>120h</td> + <td>Permanents</td> + <td> + <button class="action-btn" onclick="toggleDetails(this, 'denis-details')">Voir</button> + <button class="action-btn" onclick="openModal('Denis MONNERAT')">Modifier</button> + </td> + </tr> + <tr class="details" id="denis-details" style="display: none;"> + <td colspan="4"> + <strong>Historique des heures :</strong> + <ul> + <li>BUT1 Groupe 1 : 30h</li> + <li>BUT2 Groupe 2 : 40h</li> + <li>BUT3 Groupe 1 : 50h</li> + </ul> + <div class="chart-container"> + <canvas id="denisChart" width="200" height="100"></canvas> + </div> + </td> + </tr> + <tr> + <td>Maxime MENAULT</td> + <td>90h</td> + <td>Vacataire</td> + <td> + <button class="action-btn" onclick="toggleDetails(this, 'menault-details')">Voir</button> + <button class="action-btn" onclick="openModal('Maxime MENAULT')">Modifier</button> + </td> + </tr> + <tr class="details" id="menault-details" style="display: none;"> + <td colspan="4"> + <strong>Historique des heures :</strong> + <ul> + <li>BUT1 Groupe 1 : 45h</li> + <li>BUT2 Groupe 3 : 45h</li> + </ul> + <div class="chart-container"> + <canvas id="menaultChart" width="200" height="100"></canvas> + </div> + </td> + </tr> + </tbody> + </table> + </div> + </div> <div id="myModal" class="modal"> <div class="modal-content"> @@ -355,7 +365,7 @@ </form> </div> - +</div> <div class="footer"> <p>© 2024 IUT de Fontainebleau. Tous droits réservés | @@ -379,14 +389,14 @@ label: 'Heures des Professeurs par Catégorie', data: heuresParCategorie, backgroundColor: [ - 'rgba(255, 99, 132, 0.2)', - 'rgba(54, 162, 235, 0.2)', - 'rgba(255, 206, 86, 0.2)' + 'rgba(255, 99, 132, 0.7)', // Couleur rouge plus foncée + 'rgba(54, 162, 235, 0.7)', // Couleur bleue plus foncée + 'rgba(255, 206, 86, 0.7)' // Couleur jaune plus foncée ], borderColor: [ - 'rgba(255, 99, 132, 1)', - 'rgba(54, 162, 235, 1)', - 'rgba(255, 206, 86, 1)' + 'rgba(255, 99, 132, 1)', // Bordure rouge opaque + 'rgba(54, 162, 235, 1)', // Bordure bleue opaque + 'rgba(255, 206, 86, 1)' // Bordure jaune opaque ], borderWidth: 1 }] @@ -412,14 +422,14 @@ label: 'Répartition des heures', data: heures, backgroundColor: [ - 'rgba(255, 99, 132, 0.2)', - 'rgba(54, 162, 235, 0.2)', - 'rgba(255, 206, 86, 0.2)' + 'rgba(255, 99, 132, 0.7)', // Couleur rouge plus foncée + 'rgba(54, 162, 235, 0.7)', // Couleur bleue plus foncée + 'rgba(255, 206, 86, 0.7)' // Couleur jaune plus foncée ], borderColor: [ - 'rgba(255, 99, 132, 1)', - 'rgba(54, 162, 235, 1)', - 'rgba(255, 206, 86, 1)' + 'rgba(255, 99, 132, 1)', // Bordure rouge opaque + 'rgba(54, 162, 235, 1)', // Bordure bleue opaque + 'rgba(255, 206, 86, 1)' // Bordure jaune opaque ], borderWidth: 1 }] @@ -688,6 +698,18 @@ function deleteVacationOffer(button) { row.parentElement.removeChild(row); } +</script> +<script> + function toggleMenu() { + var menu = document.getElementById('menu'); + var nom = document.getElementById('user-section'); + if (menu.classList.contains('w3-hide-small')) { + menu.classList.remove('w3-hide-small'); + menu.classList.remove('user-section'); + } else { + menu.classList.add('w3-hide-small'); + } + } </script> </body> diff --git a/MaquetteWEB/html/RH/gestion_personnel.html b/MaquetteWEB/html/RH/gestion_personnel.html index 23baedc..9d67593 100644 --- a/MaquetteWEB/html/RH/gestion_personnel.html +++ b/MaquetteWEB/html/RH/gestion_personnel.html @@ -1,242 +1,743 @@ <!DOCTYPE html> <html lang="fr"> - <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link rel="stylesheet" href="../../css/RH/style.css"> - <link rel="stylesheet" href="../../css/RH/rh.css"> - <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> <!-- Include W3.CSS --> <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:200px; height:50px;"> - </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-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-bar-item w3-right"> - <div class="user-name w3-padding-16"> - Alice BERGER + <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:200px; height:50px;"> </div> - <div class="logout-container w3-bar-item"> - <a href="../../index.html" title="Se déconnecter"> - <img src="../../media/img/LogOutWhite.png" alt="Logo Déconnexion" style="width:25px; height:25px;"> - </a> + + <!-- 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-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-bar-item w3-right"> + <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"> + </a> + <a href="./settings.html" title="Paramètres"> + <img src="../../media/img/settings.png" alt="Logo paramètres"> + </a> + <a href="../../index.html" title="Se déconnecter"> + <img src="../../media/img/LogOutWhite.png" alt="Logo Déconnexion"> + </a> + </div> </div> </div> -</div> - - <main class="w3-container"> - <section> - <h2>Gestion du personnel</h2> - <!-- Barre de recherche --> - <div class="w3-margin-bottom"> - <input type="text" id="search-input" placeholder="Rechercher par nom" oninput="filterTable()" class="w3-input w3-border"> - </div> - - <!-- Conteneur de tri --> - <div class="w3-margin-bottom"> - <button class="w3-button w3-green" onclick="sortTable(0)">Trier par Nom</button> - <button class="w3-button w3-green" onclick="sortTable(1)">Trier par Prénom</button> - <button class="w3-button w3-green" onclick="sortTable(2)">Trier par Statut</button> - <button class="w3-button w3-green" onclick="sortTable(3)">Trier par Dernière Intervention</button> - </div> - - <table class="w3-table w3-bordered w3-white"> + <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 class="w3-green"> - <th>Nom</th> - <th>Prénom</th> - <th>Statut</th> - <th>Statut du paiement</th> - <th>Dernière Intervention</th> + <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 id="personnel-table"> + <tbody> + <!-- Exemples de données --> <tr> <td>Dupont</td> <td>Jean</td> - <td>Professeur Vacataire</td> - <td>En attente</td> - <td>01/10/2024</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="w3-button w3-green" onclick="openModal2('Dupont', 'Jean', 'Professeur Vacataire', '01/10/2024')">Modifier</button> - <button class="w3-button w3-red" onclick="supprimerPersonnel('Dupont', 'Jean')">Supprimer</button> - <button class="w3-button w3-orange" onclick="voirDetails('Dupont', 'Jean', 'Professeur Vacataire', '01/10/2024')">Voir Détails</button> + <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>Sophie</td> - <td>Professeur Vacataire</td> - <td>En attente</td> - <td>15/09/2024</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="w3-button w3-green" onclick="openModal2('Martin', 'Sophie', 'Professeur Vacataire', '15/09/2024')">Modifier</button> - <button class="w3-button w3-red" onclick="supprimerPersonnel('Martin', 'Sophie')">Supprimer</button> - <button class="w3-button w3-orange" onclick="voirDetails('Martin', 'Sophie', 'Professeur Vacataire', '15/09/2024')">Voir Détails</button> + <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> - <button class="w3-button w3-green" style="margin-bottom: 10px;" onclick="ajouterPersonnel()">Ajouter un Personnel</button> - </section> - </main> - - <!-- Modal pour modifier le personnel --> - <div id="myModal" class="modal w3-modal"> - <div class="w3-modal-content w3-card-4"> - <span class="w3-button w3-display-topright" onclick="closeModal()">×</span> - <h2 class="w3-green">Modifier le Personnel</h2> - <form id="edit-form" class="w3-container"> - <label for="nom">Nom:</label> - <input type="text" id="nom" required class="w3-input w3-border"><br> - <label for="prenom">Prénom:</label> - <input type="text" id="prenom" required class="w3-input w3-border"><br> - <label for="statut">Statut:</label> - <input type="text" id="statut" required class="w3-input w3-border"><br> - <label for="intervention">Dernière Intervention:</label> - <input type="date" id="intervention" required class="w3-input w3-border"><br> - <button type="submit" class="w3-button w3-green">Enregistrer</button> - </form> </div> </div> - <!-- Modal pour voir les détails du personnel --> - <div id="detailModal" class="modal w3-modal"> - <div class="w3-modal-content w3-card-4"> - <span class="w3-button w3-display-topright" onclick="closeDetailModal()">×</span> - <h2 class="w3-green">Détails de Personnel</h2> - <p id="detail-info"></p> - <p id="coordonnees"></p> - <h3>Heures à Payer</h3> - <p id="heures-a-payer"></p> - <h3>Demandes de Corrections d'Heures</h3> - <ul id="corrections-list"></ul> - <h3>Documents</h3> - <ul id="documents-list"></ul> - <h3>Statut</h3> - <p id="statut-detail"></p> - <button class="w3-button w3-green" onclick="lancerProcedurePaiement()">Lancer la Procédure de Paiement</button> + <!-- Modal pour modifier les informations d'un employé --> + <div id="editModal" class="modal"> + <div class="modal-content"> + <span class="close" onclick="closeModal()">×</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()">×</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()">×</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 ▲</th> <!-- Triable --> + <th>Matière</th> + <th>Type d'Intervention</th> + <th onclick="sortTable(3)">Volume Horaire ▲</th> <!-- Triable --> + <th onclick="sortTable(4)">Heures Travaillées ▲</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> - <div class="w3-container w3-center w3-padding-16 w3-text-white" style="background-color: #0f431f;"> + <!-- Modal pour afficher l'historique des demandes d'aide --> + <div id="aidRequestsModal" class="modal"> + <div class="modal-content"> + <span class="close" onclick="closeAidRequestsModal()">×</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>© 2024 IUT de Fontainebleau. Tous droits réservés | - <a href="../mentions_legales.html" class="w3-text-white">Mentions légales</a> + <a href="../mentions_legales.html">Mentions légales</a> </p> </div> - <script> - let sortOrder = [true, true, true, true]; // Array to keep track of sort order for each column +<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' + } + ]; - function sortTable(columnIndex) { - const table = document.getElementById("personnel-table"); - const rows = Array.from(table.rows); - const direction = sortOrder[columnIndex] ? 1 : -1; // Determine sorting direction - sortOrder[columnIndex] = !sortOrder[columnIndex]; // Toggle sort order for the next click + 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" }, + ], + }; - rows.sort((a, b) => { - const aText = a.cells[columnIndex].textContent.trim(); - const bText = b.cells[columnIndex].textContent.trim(); + 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" }, + ], + }; - if (columnIndex === 3) { // Date column (Dernière Intervention) - return direction * (new Date(aText) - new Date(bText)); - } - return direction * aText.localeCompare(bText); - }); + 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; - rows.forEach(row => table.appendChild(row)); // Re-append sorted rows + // 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 filterTable() { - const input = document.getElementById("search-input"); - const filter = input.value.toLowerCase(); - const table = document.getElementById("personnel-table"); - const rows = table.getElementsByTagName("tr"); + } - for (let i = 0; i < rows.length; i++) { - const cells = rows[i].getElementsByTagName("td"); - let rowVisible = false; + function viewAidRequests(firstName) { + const aidRequestsContent = document.getElementById('aidRequestsTableBody'); + aidRequestsContent.innerHTML = ""; // Réinitialiser le tableau + const aidRequests = allAidRequests[firstName] || []; - for (let j = 0; j < cells.length; j++) { - if (cells[j].textContent.toLowerCase().includes(filter)) { - rowVisible = true; + // 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; } } - rows[i].style.display = rowVisible ? "" : "none"; // Show or hide row } - } - - function openModal2(nom, prenom, statut, intervention) { - // Populate the modal with the data - document.getElementById("nom").value = nom; - document.getElementById("prenom").value = prenom; - document.getElementById("statut").value = statut; - document.getElementById("intervention").value = intervention; - document.getElementById("myModal").style.display = "block"; // Show modal - } - - function closeModal() { - document.getElementById("myModal").style.display = "none"; // Hide modal - } - - function closeDetailModal() { - document.getElementById("detailModal").style.display = "none"; // Hide detail modal - } - - function ajouterPersonnel() { - // Logic to add personnel - alert("Ajouter personnel n'est pas encore implémentée."); - } - - function supprimerPersonnel(nom, prenom) { - // Logic to delete personnel - alert(`Suppression de ${prenom} ${nom} n'est pas encore implémentée.`); - } - - function voirDetails(nom, prenom, statut, intervention) { - // Populate the detail modal with personnel details - const detailInfo = `Nom: ${nom}, Prénom: ${prenom}, Statut: ${statut}, Dernière Intervention: ${intervention}`; - document.getElementById("detail-info").textContent = detailInfo; - document.getElementById("heures-a-payer").textContent = "Heures à payer : 10h"; // Example data - document.getElementById("statut-detail").textContent = "Statut: En attente"; // Example data - document.getElementById("detailModal").style.display = "block"; // Show detail modal - } - - function lancerProcedurePaiement() { - alert("Procédure de paiement lancée."); // Example action - } - - function toggleMenu() { - var menu = document.getElementById('menu'); - var nom = document.getElementById('user-section'); - if (menu.classList.contains('w3-hide-small')) { - menu.classList.remove('w3-hide-small'); - menu.classList.remove('user-section'); + if (shouldSwitch) { + rows[i].parentNode.insertBefore(rows[i + 1], rows[i]); + switching = true; + switchcount++; } else { - menu.classList.add('w3-hide-small'); + if (switchcount === 0 && dir === "asc") { + dir = "desc"; + switching = true; + } } } - </script> -</body> + } + // 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 menu = document.getElementById('menu'); + var nom = document.getElementById('user-section'); + if (menu.classList.contains('w3-hide-small')) { + menu.classList.remove('w3-hide-small'); + menu.classList.remove('user-section'); + } else { + menu.classList.add('w3-hide-small'); + } + } +</script> + +</body> </html> diff --git a/MaquetteWEB/html/RH/mes-informations.html b/MaquetteWEB/html/RH/mes-informations.html index 571f234..68a4b54 100644 --- a/MaquetteWEB/html/RH/mes-informations.html +++ b/MaquetteWEB/html/RH/mes-informations.html @@ -7,6 +7,7 @@ <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> <link rel="stylesheet" href="../../css/RH/rh.css"> <link rel="stylesheet" href="../../css/RH/style.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> <style> body { font-family: Arial, sans-serif; @@ -251,22 +252,36 @@ </head> <body> - <div class="header"> - <div class="logo-container"> - <img src="../../media/img/logoWhite.png" alt="Logo Accueil"> + <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:200px; height:50px;"> </div> - <div class="categories"> - <a href="./rh.html">Accueil</a> - <a href="./gestion_personnel.html">Gestion du personnel</a> - <a href="./gestion-heures.html">Heures</a> - <a href="./candidature.html">Candidatures</a> - <a href="./mes-informations.html">Mes informations et documents</a> - </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> - <div class="user-section"> - <div class="user-name">Alice BERGER</div> - <div class="logout-container"> + <!-- Catégories dans le header --> + <div id="menu" class="categories w3-hide-small 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-bar-item w3-right"> + <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"> + </a> + <a href="./settings.html" title="Paramètres"> + <img src="../../media/img/settings.png" alt="Logo paramètres"> + </a> <a href="../../index.html" title="Se déconnecter"> <img src="../../media/img/LogOutWhite.png" alt="Logo Déconnexion"> </a> @@ -514,6 +529,18 @@ } </script> +<script> + function toggleMenu() { + var menu = document.getElementById('menu'); + var nom = document.getElementById('user-section'); + if (menu.classList.contains('w3-hide-small')) { + menu.classList.remove('w3-hide-small'); + menu.classList.remove('user-section'); + } else { + menu.classList.add('w3-hide-small'); + } + } +</script> </body> </html> diff --git a/MaquetteWEB/html/RH/notifications.html b/MaquetteWEB/html/RH/notifications.html new file mode 100644 index 0000000..24d9c6f --- /dev/null +++ b/MaquetteWEB/html/RH/notifications.html @@ -0,0 +1,156 @@ +<!DOCTYPE html> +<html lang="fr"> +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>Notifications</title> + <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> + <link rel="stylesheet" href="../../css/RH/style.css"> + <link rel="stylesheet" href="../../css/RH/rh.css"> + <style> + /* Ajout d'un style pour le conteneur des notifications */ + #notifications-container { + border: 1px solid #ccc; /* Bordure autour du conteneur */ + border-radius: 8px; /* Coins arrondis */ + padding: 16px; /* Espacement intérieur */ + margin-top: 16px; /* Espacement supérieur */ + max-height: 300px; /* Hauteur maximale */ + overflow-y: auto; /* Ajout de défilement si le contenu dépasse */ + background-color: #f9f9f9; /* Couleur de fond */ + } + + /* Amélioration de l'apparence des notifications */ + .alert, .success { + margin: 8px 0; /* Marge entre les notifications */ + } + </style> +</head> +<body class="w3-light-grey"> + + <!-- Header --> + <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:200px; height:50px;"> + </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-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-bar-item w3-right"> + <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"> + </a> + <a href="./settings.html" title="Paramètres"> + <img src="../../media/img/settings.png" alt="Logo paramètres"> + </a> + <a href="../../index.html" title="Se déconnecter"> + <img src="../../media/img/LogOutWhite.png" alt="Logo Déconnexion"> + </a> + </div> + </div> + </div> + + <!-- Alertes et Notifications --> + <div class="w3-container w3-white w3-card-4 w3-margin-bottom"> + <h2 class="w3-text-dark-gray">Alertes et Notifications</h2> + <div id="notifications-container"> + <!-- Notifications --> + <div class="w3-panel w3-red alert"> + <span class="w3-closebtn close" onclick="removeNotification(this);">×</span> + <p><strong>Validation de Candidature :</strong> Une nouvelle candidature a été soumise pour l'offre de vacation n°383. Veuillez la consulter et valider dans les plus brefs délais dans (la candidature expire dans 26 jours) : <a href="./candidature.html">Candidatures</a>.</p> + </div> + <div class="w3-panel w3-green success"> + <span class="w3-closebtn close" onclick="removeNotification(this);">×</span> + <p><strong>Demande de paiement :</strong> Le service financier a procédé au paiement de Jean DUPONT. Vous pouvez consulter les détails : <a href="gestion_personnel.html">Gestion du personnel</a>.</p> + </div> + </div> + + <!-- Bouton pour tout effacer --> + <button id="clear-notifications" class="w3-button w3-dark-grey w3-margin-top w3-margin-bottom" onclick="clearAllNotifications();">Tout effacer</button> + + <!-- Message quand aucune notification n'est présente --> + <div id="no-notifications-message" class="w3-hide w3-padding-16 w3-text-gray"> + <p>Vous n'avez pas de notifications pour le moment !</p> + </div> + </div> + + <!-- Footer --> + <footer id="footer" class="w3-center w3-padding w3-text-white footer" style="background-color: #0f431f;"> + <p>© 2024 IUT de Fontainebleau. Tous droits réservés | + <a href="../mentions_legales.html">Mentions légales</a> + </p> + </footer> + + <script> + function removeNotification(element) { + // Supprime la notification + const notification = element.parentElement; + notification.style.display = 'none'; + + // Vérifier s'il reste des notifications + checkNotifications(); + } + + function clearAllNotifications() { + const notifications = document.getElementById('notifications-container'); + let hasNotifications = false; + + // Cacher toutes les notifications + Array.from(notifications.children).forEach(notification => { + if (notification.style.display !== 'none') { + notification.style.display = 'none'; + hasNotifications = true; // Au moins une notification a été cachée + } + }); + + // Vérifier s'il reste des notifications + if (hasNotifications) { + checkNotifications(); // Vérifie les notifications restantes + } + } + + function checkNotifications() { + const notifications = document.getElementById('notifications-container'); + const noNotificationsMessage = document.getElementById('no-notifications-message'); + const visibleNotifications = Array.from(notifications.children).some(notification => notification.style.display !== 'none'); + + if (!visibleNotifications) { + noNotificationsMessage.classList.remove('w3-hide'); + document.getElementById('clear-notifications').style.display = 'none'; // Cacher le bouton "Tout effacer" + } else { + noNotificationsMessage.classList.add('w3-hide'); + document.getElementById('clear-notifications').style.display = 'block'; // Montrer le bouton "Tout effacer" + } + } + </script> + <script> + function toggleMenu() { + var menu = document.getElementById('menu'); + var nom = document.getElementById('user-section'); + if (menu.classList.contains('w3-hide-small')) { + menu.classList.remove('w3-hide-small'); + menu.classList.remove('user-section'); + } else { + menu.classList.add('w3-hide-small'); + } + } + </script> + +</body> +</html> diff --git a/MaquetteWEB/html/RH/rh.html b/MaquetteWEB/html/RH/rh.html index 54194c0..c4ae47b 100644 --- a/MaquetteWEB/html/RH/rh.html +++ b/MaquetteWEB/html/RH/rh.html @@ -3,9 +3,10 @@ <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>Dashboard Vacataire</title> + <title>Dashboard RH</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> .header { background-color: #0f431f; @@ -46,22 +47,37 @@ </head> <body> - <div class="header"> - <div class="logo-container"> - <img src="../../media/img/logoWhite.png" alt="Logo Accueil"> + + <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:200px; height:50px;"> </div> - <div class="categories"> - <a href="./rh.html">Accueil</a> - <a href="./gestion_personnel.html">Gestion du personnel</a> - <a href="./gestion-heures.html">Heures</a> - <a href="./candidature.html">Candidatures</a> - <a href="./mes-informations.html">Mes informations et documents</a> - </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> - <div class="user-section"> - <div class="user-name">Alice BERGER</div> - <div class="logout-container"> + <!-- Catégories dans le header --> + <div id="menu" class="categories w3-hide-small 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-bar-item w3-right"> + <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"> + </a> + <a href="./settings.html" title="Paramètres"> + <img src="../../media/img/settings.png" alt="Logo paramètres"> + </a> <a href="../../index.html" title="Se déconnecter"> <img src="../../media/img/LogOutWhite.png" alt="Logo Déconnexion"> </a> @@ -93,7 +109,7 @@ <div class="summary"> <p><strong>Heures Travaillées :</strong> 120 heures</p> <p><strong>Heures à Payer :</strong> 30 heures</p> - <p><a href="./gestion_personnel.html" class="btn">Voir Détails</a></p> + <p><a href="./gestion-heures.html" class="btn">Voir Détails</a></p> </div> @@ -127,5 +143,18 @@ </p> </div> + <script> + function toggleMenu() { + var menu = document.getElementById('menu'); + var nom = document.getElementById('user-section'); + if (menu.classList.contains('w3-hide-small')) { + menu.classList.remove('w3-hide-small'); + menu.classList.remove('user-section'); + } else { + menu.classList.add('w3-hide-small'); + } + } + </script> + </body> </html> diff --git a/MaquetteWEB/html/RH/settings.html b/MaquetteWEB/html/RH/settings.html new file mode 100644 index 0000000..ae8b7e6 --- /dev/null +++ b/MaquetteWEB/html/RH/settings.html @@ -0,0 +1,251 @@ +<!DOCTYPE html> +<html lang="fr"> +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>Paramètres Utilisateur</title> + <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> + <link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" /> + <link rel="stylesheet" href="../../css/RH/style.css"> + <style> + .header { + background-color: #0f431f; /* Couleur par défaut */ + color: white; + } + footer { + background-color: #0f431f; /* Couleur par défaut */ + color: white; + } + .logo-container img { + width: 200px; + height: 50px; + } + .categories a { + font-weight: bold; + } + .btn { + background-color: #0f431f; + } + .btn:hover { + background-color: #0b3317; + } + /* Style par défaut */ + body { + font-family: Arial, sans-serif; + } + + /* Mode Daltonien et autres troubles visuels */ + body.daltonien { + background-color: #e8f4ff; /* Meilleure visibilité pour le texte */ + color: #2c2c2c; + } + .header { + background-color: #0f431f; /* Couleur par défaut */ + } + + body.daltonien .header { + background-color: #3b3a3a; /* Couleur plus neutre */ + } + + /* Couleur du footer en mode daltonien */ + body.daltonien #footer { + background-color: #3b3a3a; /* Couleur plus neutre */ + } + + .daltonien .btn { + background-color: #31302d; /* Couleur facilement visible */ + } + + .daltonien .btn:hover { + background-color: #242321; + } + + /* Grossissement des textes */ + body.large-text { + font-size: 1.2em; + } + body.xlarge-text { + font-size: 1.5em; + } + </style> +</head> +<body class="w3-light-grey" id="main-body"> + + <!-- Header --> + <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:200px; height:50px;"> + </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-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-bar-item w3-right"> + <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"> + </a> + <a href="./settings.html" title="Paramètres"> + <img src="../../media/img/settings.png" alt="Logo paramètres"> + </a> + <a href="../../index.html" title="Se déconnecter"> + <img src="../../media/img/LogOutWhite.png" alt="Logo Déconnexion"> + </a> + </div> + </div> + </div> + + <!-- Paramètres de l'utilisateur --> + <div class="w3-content w3-padding-16"> + <div class="w3-container w3-white w3-card-4 w3-padding-large"> + <h2 class="w3-text-dark-gray">Paramètres de communication et d'accessibilité</h2> + + <form class="w3-container w3-padding-16"> + <!-- Notifications par Email --> + <div class="w3-section"> + <label class="w3-text-dark-gray"><b>Notifications par Email</b></label> + <p>Recevez des notifications par e-mail concernant les heures, paiements, et plus.</p> + <input class="w3-check" type="checkbox" id="email-notifications" checked> + <label for="email-notifications">Activer les notifications par email</label> + </div> + + <hr class="w3-divider"> <!-- Séparation --> + + <!-- Notifications par SMS --> + <div class="w3-section"> + <label class="w3-text-dark-gray"><b>Notifications par SMS</b></label> + <p>Recevez des notifications par SMS sur votre téléphone mobile.</p> + <input class="w3-check" type="checkbox" id="sms-notifications"> + <label for="sms-notifications">Activer les notifications par SMS</label> + </div> + + <hr class="w3-divider"> <!-- Séparation --> + + <!-- Préférences de Langue --> + <div class="w3-section"> + <label class="w3-text-dark-gray"><b>Langue de Communication</b></label> + <select class="w3-select" name="language" id="language"> + <option value="fr" selected>Français</option> + <option value="en">Anglais</option> + </select> + </div> + + <hr class="w3-divider"> <!-- Séparation --> + + <!-- Fréquence de réception des emails --> + <div class="w3-section"> + <label class="w3-text-dark-gray"><b>Fréquence des emails de notification</b></label> + <select class="w3-select" name="email-frequency" id="email-frequency"> + <option value="instant">Immédiatement</option> + <option value="daily">Quotidiennement</option> + <option value="weekly" selected>Hebdomadairement</option> + </select> + </div> + + <hr class="w3-divider"> <!-- Séparation --> + + <!-- Mode Daltonien --> + <div class="w3-section"> + <label class="w3-text-dark-gray"><b>Mode Daltonien</b></label> + <p>Améliore les contrastes et les couleurs pour mieux correspondre aux besoins des personnes atteintes de troubles visuels.</p> + <input class="w3-check" type="checkbox" id="daltonien-mode" onchange="toggleDaltonienMode()"> + <label for="daltonien-mode">Activer le mode Daltonien</label> + </div> + + <hr class="w3-divider"> <!-- Séparation --> + + <!-- Changer la police --> + <div class="w3-section"> + <label class="w3-text-dark-gray"><b>Changer la police</b></label> + <select class="w3-select" name="font" id="font" onchange="changeFont()"> + <option value="Arial" selected>Arial</option> + <option value="Verdana">Verdana</option> + <option value="Georgia">Georgia</option> + <option value="Tahoma">Tahoma</option> + </select> + </div> + + <hr class="w3-divider"> <!-- Séparation --> + + <!-- Grossir le texte --> + <div class="w3-section"> + <label class="w3-text-dark-gray"><b>Agrandir le texte</b></label> + <select class="w3-select" name="text-size" id="text-size" onchange="changeTextSize()"> + <option value="normal" selected>Normal</option> + <option value="large">Grand</option> + <option value="xlarge">Très Grand</option> + </select> + </div> + + <hr class="w3-divider"> <!-- Séparation --> + + <!-- Sauvegarder les modifications --> + <button type="submit" class="w3-button w3-round w3-margin-top btn w3-text-white" style="background-color: #0f431f;">Sauvegarder les modifications</button> + </form> + </div> + </div> + + <!-- Footer --> + <footer id="footer" class="w3-center w3-padding w3-text-white footer"> + <p>© 2024 IUT de Fontainebleau. Tous droits réservés | + <a href="../mentions_legales.html">Mentions légales</a> + </p> + </footer> + + <!-- Script pour changer la police et la taille du texte --> + <script> + function toggleDaltonienMode() { + const body = document.getElementById('main-body'); + const daltonienMode = document.getElementById('daltonien-mode').checked; + if (daltonienMode) { + body.classList.add('daltonien'); + } else { + body.classList.remove('daltonien'); + } + } + + + function changeFont() { + const selectedFont = document.getElementById('font').value; + document.body.style.fontFamily = selectedFont; + } + + function changeTextSize() { + const textSize = document.getElementById('text-size').value; + document.body.classList.remove('large-text', 'xlarge-text'); + if (textSize === 'large') { + document.body.classList.add('large-text'); + } else if (textSize === 'xlarge') { + document.body.classList.add('xlarge-text'); + } + } + </script> + <script> + function toggleMenu() { + var menu = document.getElementById('menu'); + var nom = document.getElementById('user-section'); + if (menu.classList.contains('w3-hide-small')) { + menu.classList.remove('w3-hide-small'); + menu.classList.remove('user-section'); + } else { + menu.classList.add('w3-hide-small'); + } + } + </script> + +</body> +</html> diff --git a/MaquetteWEB/html/mentions_legales.html b/MaquetteWEB/html/mentions_legales.html index 17b89e5..d101550 100644 --- a/MaquetteWEB/html/mentions_legales.html +++ b/MaquetteWEB/html/mentions_legales.html @@ -7,6 +7,7 @@ <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet"> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> <link rel="stylesheet" href="../css/mentions_legales.css"> + <link rel="icon" href="../media/img/logoIcon.ico" type="image/x-icon" /> </head> <body> diff --git a/MaquetteWEB/index.html b/MaquetteWEB/index.html index 0ee4abf..b933312 100644 --- a/MaquetteWEB/index.html +++ b/MaquetteWEB/index.html @@ -7,6 +7,7 @@ <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet"> <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> <link rel="stylesheet" href="css/index.css"> + <link rel="icon" href="./media/img/logoIcon.ico" type="image/x-icon" /> </head> <body> diff --git a/MaquetteWEB/media/img/logoIcon.ico b/MaquetteWEB/media/img/logoIcon.ico new file mode 100644 index 0000000000000000000000000000000000000000..97805f8ce04861156cfc20f88e236c2e48b3d1b9 GIT binary patch literal 7921 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 AkpKVy literal 0 HcmV?d00001