2024-10-16 18:19:14 +02:00
|
|
|
<!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">
|
|
|
|
<title>Gestion des Candidatures</title>
|
|
|
|
<style>
|
|
|
|
/* Ajout de styles pour la barre de recherche et le tri */
|
|
|
|
.search-container {
|
|
|
|
margin-bottom: 20px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.sort-container {
|
|
|
|
margin-bottom: 20px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.sort-button {
|
|
|
|
margin-right: 5px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.modal-content {
|
|
|
|
max-height: 80vh;
|
|
|
|
overflow-y: auto;
|
|
|
|
}
|
|
|
|
|
|
|
|
.comment-container {
|
|
|
|
margin-top: 20px;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Styles pour la pop-up d'ajout d'offre de vacation */
|
|
|
|
.vacation-modal {
|
|
|
|
display: none; /* Masquer par défaut */
|
|
|
|
position: fixed;
|
|
|
|
z-index: 1;
|
|
|
|
left: 0;
|
|
|
|
top: 0;
|
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
|
|
|
overflow: auto;
|
|
|
|
background-color: rgb(0,0,0);
|
|
|
|
background-color: rgba(0,0,0,0.4);
|
|
|
|
padding-top: 60px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.vacation-modal-content {
|
|
|
|
background-color: #fefefe;
|
|
|
|
margin: 5% auto;
|
|
|
|
padding: 20px;
|
|
|
|
border: 1px solid #888;
|
|
|
|
width: 80%;
|
|
|
|
}
|
|
|
|
|
|
|
|
.validationDossier{
|
|
|
|
margin-top: 25px;
|
|
|
|
background-color: green;
|
|
|
|
}
|
|
|
|
|
|
|
|
.refusDossier{
|
|
|
|
background-color: rgb(128, 0, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
.commentairee{
|
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
|
|
|
box-sizing: border-box;
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
</head>
|
|
|
|
|
|
|
|
<body>
|
|
|
|
<div class="header">
|
|
|
|
<div class="logo-container">
|
|
|
|
<img src="../../media/img/logoWhite.png" alt="Logo Accueil">
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="categories">
|
|
|
|
<a href="./rh.html">Accueil</a>
|
|
|
|
<a href="./gestion_personnel.html">Gestion du personnel</a>
|
2024-10-17 15:45:20 +02:00
|
|
|
<a href="./gestion-heures.html">Heures</a>
|
2024-10-16 18:19:14 +02:00
|
|
|
<a href="./candidature.html">Candidatures</a>
|
|
|
|
<a href="./mes-informations.html">Mes informations et documents</a>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="user-section">
|
|
|
|
<div class="user-name">Alice BERGER</div>
|
|
|
|
<div class="logout-container">
|
|
|
|
<a href="../../index.html" title="Se déconnecter">
|
|
|
|
<img src="../../media/img/LogOutWhite.png" alt="Logo Déconnexion">
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<main>
|
|
|
|
<section>
|
|
|
|
<h2>Candidatures en Attente de Validation</h2>
|
|
|
|
|
|
|
|
<!-- Barre de recherche -->
|
|
|
|
<div class="search-container">
|
|
|
|
<input type="text" id="search-input" placeholder="Rechercher par nom" oninput="filterTable()">
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Conteneur de tri -->
|
|
|
|
<div class="sort-container">
|
|
|
|
<button class="sort-button" onclick="sortTable(0)">Trier par Nom</button>
|
|
|
|
<button class="sort-button" onclick="sortTable(1)">Trier par Prénom</button>
|
|
|
|
<button class="sort-button" onclick="sortTable(2)">Trier par Formation</button>
|
|
|
|
<button class="sort-button" onclick="openVacationModal()">Ajouter une Offre de Vacation</button>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<table>
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<th>Nom</th>
|
|
|
|
<th>Prénom</th>
|
|
|
|
<th>Formation Demandée</th>
|
|
|
|
<th>Action</th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody id="candidatures-table">
|
|
|
|
<tr>
|
|
|
|
<td>Mike</td>
|
|
|
|
<td>Michel</td>
|
|
|
|
<td>Informatique - BUT1</td>
|
|
|
|
<td>
|
|
|
|
<button onclick="consulterDossier('Mike', 'Michel')">Consulter Dossier</button>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>John</td>
|
|
|
|
<td>Williams</td>
|
|
|
|
<td>Mathématiques - BUT GEA</td>
|
|
|
|
<td>
|
|
|
|
<button onclick="consulterDossier('John', 'Williams')">Consulter Dossier</button>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
<!-- Ajoutez d'autres lignes ici -->
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</section>
|
|
|
|
</main>
|
|
|
|
|
|
|
|
<!-- Modal pour consulter le dossier de candidature -->
|
|
|
|
<div id="dossierModal" class="modal">
|
|
|
|
<div class="modal-content">
|
|
|
|
<span class="close" onclick="closeDossierModal()">×</span>
|
|
|
|
<h2>Dossier de Candidature : <span id="dossier-nom"></span> <span id="dossier-prenom"></span></h2>
|
|
|
|
<h3>Pièces Justificatives :</h3>
|
|
|
|
<ul id="pieces-list"></ul>
|
|
|
|
<div class="comment-container">
|
|
|
|
<h3>Commentaire :</h3>
|
|
|
|
<textarea class="commentairee" rows="4" placeholder="Ajouter un commentaire sur ce dossier..."></textarea><br>
|
|
|
|
<button onclick="ajouterCommentaire()">Ajouter Commentaire</button>
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<button class="validationDossier" onclick="validerDossier()">Valider Dossier</button>
|
|
|
|
<button class="refusDossier" onclick="refuserDossier()">Refuser Dossier</button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Modal pour ajouter une offre de vacation -->
|
|
|
|
<div id="vacationModal" class="vacation-modal">
|
|
|
|
<div class="vacation-modal-content">
|
|
|
|
<span class="close" onclick="closeVacationModal()">×</span>
|
|
|
|
<h2>Ajouter une Offre de Vacation</h2>
|
|
|
|
<form id="vacation-form">
|
|
|
|
<label for="diplome">Diplôme requis :</label><br>
|
|
|
|
<input type="text" id="diplome" name="diplome" required><br><br>
|
|
|
|
|
|
|
|
<label for="description">Description :</label><br>
|
|
|
|
<textarea id="description" name="description" rows="4" required></textarea><br><br>
|
|
|
|
|
|
|
|
|
|
|
|
<label for="duree">Durée (en jours) :</label><br>
|
|
|
|
<input type="number" id="duree" name="duree" min="1" required><br><br>
|
|
|
|
|
|
|
|
<button type="submit">Soumettre l'Offre</button>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="footer">
|
|
|
|
<p>© 2024 IUT de Fontainebleau. Tous droits réservés |
|
|
|
|
<a href="../mentions_legales.html">Mentions légales</a>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
const sortOrder = [true, true, true]; // État du tri pour chaque colonne
|
|
|
|
|
|
|
|
function sortTable(columnIndex) {
|
|
|
|
const table = document.getElementById("candidatures-table");
|
|
|
|
const rows = Array.from(table.rows);
|
|
|
|
const direction = sortOrder[columnIndex] ? 1 : -1; // Déterminer la direction du tri
|
|
|
|
sortOrder[columnIndex] = !sortOrder[columnIndex]; // Basculer l'ordre de tri pour le prochain clic
|
|
|
|
|
|
|
|
rows.sort((a, b) => {
|
|
|
|
const aText = a.cells[columnIndex].textContent.trim();
|
|
|
|
const bText = b.cells[columnIndex].textContent.trim();
|
|
|
|
return direction * aText.localeCompare(bText);
|
|
|
|
});
|
|
|
|
|
|
|
|
// Réattacher les lignes triées au tableau
|
|
|
|
rows.forEach(row => table.appendChild(row));
|
|
|
|
}
|
|
|
|
|
|
|
|
function filterTable() {
|
|
|
|
const input = document.getElementById("search-input").value.toLowerCase();
|
|
|
|
const table = document.getElementById("candidatures-table");
|
|
|
|
const rows = Array.from(table.rows);
|
|
|
|
|
|
|
|
rows.forEach(row => {
|
|
|
|
const cells = Array.from(row.cells);
|
|
|
|
const match = cells[0].textContent.toLowerCase().includes(input) ||
|
|
|
|
cells[1].textContent.toLowerCase().includes(input);
|
|
|
|
row.style.display = match ? "" : "none";
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
function consulterDossier(nom, prenom) {
|
|
|
|
document.getElementById("dossier-nom").textContent = nom;
|
|
|
|
document.getElementById("dossier-prenom").textContent = prenom;
|
|
|
|
const piecesList = document.getElementById("pieces-list");
|
|
|
|
piecesList.innerHTML = `
|
|
|
|
<li><a href="">CV - ${prenom} ${nom}.pdf</a></li>
|
|
|
|
<li><a href="">Diplôme - Licence Informatique.pdf</a></li>
|
|
|
|
<li><a href="">Lettre de motivation.pdf</a></li>
|
|
|
|
<li><a href="">Justificatif d'expérience.pdf</a></li>
|
|
|
|
`; // Remplacer par les vraies données
|
|
|
|
document.getElementById("dossierModal").style.display = "block";
|
|
|
|
}
|
|
|
|
|
|
|
|
function closeDossierModal() {
|
|
|
|
document.getElementById("dossierModal").style.display = "none";
|
|
|
|
document.getElementById("commentaire").value = ""; // Réinitialiser le champ de commentaire
|
|
|
|
}
|
|
|
|
|
|
|
|
function ajouterCommentaire() {
|
|
|
|
const commentaire = document.getElementById("commentaire").value;
|
|
|
|
alert(`Commentaire ajouté : ${commentaire}`);
|
|
|
|
// Logic to handle the comment addition can be implemented here
|
|
|
|
}
|
|
|
|
|
|
|
|
function validerDossier() {
|
|
|
|
alert("Dossier validé !");
|
|
|
|
closeDossierModal();
|
|
|
|
// Logic to handle the validation of the dossier can be implemented here
|
|
|
|
}
|
|
|
|
|
|
|
|
function refuserDossier() {
|
|
|
|
alert("Dossier refusé !");
|
|
|
|
closeDossierModal();
|
|
|
|
// Logic to handle the refusal of the dossier can be implemented here
|
|
|
|
}
|
|
|
|
|
|
|
|
function openVacationModal() {
|
|
|
|
document.getElementById("vacationModal").style.display = "block";
|
|
|
|
}
|
|
|
|
|
|
|
|
function closeVacationModal() {
|
|
|
|
document.getElementById("vacationModal").style.display = "none";
|
|
|
|
document.getElementById("vacation-form").reset(); // Réinitialiser le formulaire
|
|
|
|
}
|
|
|
|
|
|
|
|
// Gestion de la soumission du formulaire d'offre de vacation
|
|
|
|
document.getElementById("vacation-form").addEventListener("submit", function(event) {
|
|
|
|
event.preventDefault(); // Empêcher le rechargement de la page
|
|
|
|
alert("Offre de vacation soumise !");
|
|
|
|
closeVacationModal(); // Fermer la pop-up après soumission
|
|
|
|
// Ici, vous pouvez ajouter le code pour traiter l'envoi du formulaire, comme envoyer les données à un serveur.
|
|
|
|
});
|
|
|
|
</script>
|
|
|
|
</body>
|
|
|
|
|
|
|
|
</html>
|