551 lines
24 KiB
HTML
Raw Permalink Normal View History

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<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">
2024-10-18 19:07:09 +02:00
<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 */
.modal {
display: none; /* Hidden by default */
position: fixed; /* Stay in place */
z-index: 1; /* Sit on top */
left: 0;
top: 0;
width: 100%; /* Full width */
height: 100%; /* Full height */
overflow: auto; /* Enable scroll if needed */
background-color: rgb(0, 0, 0); /* Fallback color */
background-color: rgba(0, 0, 0, 0.4); /* Black w/ opacity */
padding-top: 60px;
}
.modal-content {
background-color: #fefefe;
margin: 5% auto; /* 15% from the top and centered */
padding: 20px;
border: 1px solid #888;
width: 80%; /* Could be more or less, depending on screen size */
}
.close {
color: #aaa;
float: right;
font-size: 28px;
font-weight: bold;
}
.close:hover,
.close:focus {
color: black;
text-decoration: none;
cursor: pointer;
}
.action-btn {
margin: 5px;
}
.chart-container {
position: relative;
margin: 20px 0;
width: 100%;
max-width: 1200px; /* Largeur max du graphique */
height: 400px; /* Hauteur du graphique */
}
2024-10-23 20:08:31 +02:00
#totalHoursChart{
position: relative;
margin: 20px 0;
width: 50%;
max-width: 1200px; /* Largeur max du graphique */
height: 400px; /* Hauteur du graphique */
}
</style>
</head>
<body>
2024-10-23 20:08:31 +02:00
<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>
2024-10-23 20:08:31 +02:00
<!-- 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="./chef_departement.html" class="w3-bar-item w3-button">Accueil</a>
<a href="./gestion-heures-professeur.html" class="w3-bar-item w3-button">Professeurs</a>
<a href="./vacataire.html" class="w3-bar-item w3-button">Vacation</a>
<a href="./gestion-heures-formation.html" class="w3-bar-item w3-button">Formations</a>
<a href="./paiement.html" class="w3-bar-item w3-button">Paiements</a>
<a href="./budget.html" class="w3-bar-item w3-button">Budget</a>
<a href="./mes-informations.html" class="w3-bar-item w3-button">Mes informations</a>
</div>
2024-10-23 20:08:31 +02:00
<!-- Section utilisateur avec déconnexion -->
<div class="user-section w3-right w3-hide-small w3-hide-medium">
<div class="user-name">
Florent MADELAINE
</div>
2024-10-23 20:08:31 +02:00
<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">
2024-10-23 20:08:31 +02:00
<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="./chef_departement.html" class="w3-bar-item w3-button">Accueil</a>
<a href="./gestion-heures-professeur.html" class="w3-bar-item w3-button">Professeurs</a>
<a href="./vacataire.html" class="w3-bar-item w3-button">Vacation</a>
<a href="./gestion-heures-formation.html" class="w3-bar-item w3-button">Formations</a>
<a href="./paiement.html" class="w3-bar-item w3-button">Paiements</a>
<a href="./budget.html" class="w3-bar-item w3-button">Budget</a>
<a href="./mes-informations.html" class="w3-bar-item w3-button">Mes informations</a>
<!-- Section utilisateur pour mobile -->
<div class="w3-bar-item w3-border-top w3-margin-top">
<div class="user-name">Florent MADELAINE</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="container">
2024-10-23 20:08:31 +02:00
<input type="text" id="searchBar" class="search-bar" placeholder="Rechercher une formation...">
<div class="info-card">
2024-10-23 20:08:31 +02:00
<h2>Détails des formations</h2>
<div class="w3-responsive">
<table class="info-table" id="formationTable">
<thead>
<tr>
<th>Formation</th>
2024-10-23 20:08:31 +02:00
<th>Nombre d'heures effectuées</th>
<th>Objectifs d'heures</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<tr>
<td>BUT1 Informatique</td>
2024-10-23 20:08:31 +02:00
<td>75h</td>
<td>400h</td>
<td>
<button class="action-btn" onclick="toggleDetails(this, 'but1-details')">Voir</button>
<button class="action-btn" onclick="openModal('BUT1 Informatique')">Ajouter des heures</button>
</td>
</tr>
<tr class="details" id="but1-details">
<td colspan="3">
2024-10-23 20:08:31 +02:00
<h2><strong>Détails des heures du semestre 1 :</strong></h2>
<!-- Tableau des heures par enseignant et par groupe -->
<h3>Tableau des heures effectués</h3>
<table class="info-table">
<thead>
<tr>
<th>Enseignant</th>
<th>Matière</th>
<th>Nombre d'heures</th>
<th>Types d'heures</th>
</tr>
</thead>
<tbody>
<tr>
<td>Maxime MENAULT</td>
<td>SCR</td>
<td>30h</td>
<td>TP</td>
</tr>
<tr>
<td>Denis MONNERAT</td>
<td>Mathématiques</td>
<td>45h</td>
<td>CM/TD</td>
</tr>
</tbody>
</table>
<!-- Activités par Semaine -->
<h3>Activités par Semaine</h3>
<table class="info-table">
<thead>
<tr>
<th>Semaine</th>
<th>Activités</th>
<th>Heures</th>
</tr>
</thead>
<tbody>
<tr>
<td>Semaine 1</td>
<td>Introduction à la SCR</td>
<td>5h</td>
</tr>
<tr>
<td>Semaine 2</td>
<td>Mathématiques discrète / Python</td>
<td>10h</td>
</tr>
</tbody>
</table>
<!-- Statistiques Complémentaires -->
<h3>Statistiques Complémentaires</h3>
<ul>
2024-10-23 20:08:31 +02:00
<li><strong>Pourcentage d'Heures :<br></strong> Maxime MENAULT : 40%<br> Denis MONNERAT : 60%</li>
</ul>
2024-10-23 20:08:31 +02:00
<div class="chart-container">
<canvas id="but1Chart"></canvas>
</div>
</td>
</tr>
2024-10-23 20:08:31 +02:00
<tr>
<td>BUT2 Informatique FA</td>
2024-10-23 20:08:31 +02:00
<td>140h</td>
<td>600h</td>
<td>
<button class="action-btn" onclick="toggleDetails(this, 'master-details')">Voir</button>
<button class="action-btn" onclick="openModal('BUT2 Informatique FA')">Ajouter des heures</button>
</td>
</tr>
<tr class="details" id="master-details">
<td colspan="3">
2024-10-23 20:08:31 +02:00
<h2><strong>Détails des heures du semestre 1 :</strong></h2>
<!-- Tableau des heures effectués -->
<h3>Tableau des heures effectuées</h3>
<table class="info-table">
<thead>
<tr>
<th>Enseignant</th>
<th>Matière</th>
<th>Nombre d'heures</th>
<th>Types d'heures</th>
</tr>
</thead>
<tbody>
<tr>
<td>Maxime MENAULT</td>
<td>SCR</td>
<td>50h</td>
<td>TP</td>
</tr>
<tr>
<td>Denis MONNERAT</td>
<td>Mathématiques</td>
<td>90h</td>
<td>CM/TD</td>
</tr>
</tbody>
</table>
<!-- Activités par Semaine -->
<h3>Activités par Semaine</h3>
<table class="info-table">
<thead>
<tr>
<th>Semaine</th>
<th>Activités</th>
<th>Heures</th>
</tr>
</thead>
<tbody>
<tr>
<td>Semaine 1</td>
<td>Introduction à la communication / SCR</td>
<td>5h</td>
</tr>
<tr>
<td>Semaine 2</td>
<td>Mathématiques discrètes / Java / BD</td>
<td>10h</td>
</tr>
<!-- Ajoutez d'autres semaines si nécessaire -->
</tbody>
</table>
</div>
2024-10-23 20:08:31 +02:00
<!-- Statistiques Complémentaires -->
<h3>Statistiques Complémentaires</h3>
<ul>
2024-10-23 20:08:31 +02:00
<li><strong>Pourcentage d'Heures :<br></strong> Maxime MENAULT : 35.71%<br> Denis MONNERAT : 64.29%</li>
</ul>
2024-10-23 20:08:31 +02:00
<div class="chart-container">
<canvas id="masterChart"></canvas>
</div>
</td>
</tr>
2024-10-23 20:08:31 +02:00
</tbody>
</table>
</div>
2024-10-23 20:08:31 +02:00
<div class="totalHoursChart">
<canvas id="totalHoursChart"></canvas>
</div>
</div>
</div>
<!-- Modal pour ajouter des heures -->
2024-10-23 20:08:31 +02:00
<div id="myModal" class="w3-modal" style="display:block;">
<div class="w3-modal-content w3-card-4 w3-animate-top" style="max-width:600px">
<header class="w3-container">
<span class="w3-button w3-display-topright" onclick="closeModal()">&times;</span>
<h2>Ajouter des heures</h2>
</header>
<div class="w3-container">
<form id="addHoursForm" class="w3-padding-16">
<label for="professor" class="w3-text-brown"><b>Choisissez un professeur :</b></label>
<select id="professor" name="professor" class="w3-select" required>
<option value="" disabled selected>Choisir un professeur</option>
<option value="Denis MONNERAT">Denis MONNERAT (Permanent)</option>
<option value="Maxime MENAULT">Maxime MENAULT (Vacataire)</option>
</select>
<br><br>
<label for="subject" class="w3-text-brown"><b>Choisissez une matière :</b></label>
<select id="subject" name="subject" class="w3-select" required>
<option value="" disabled selected>Choisir une matière</option>
<option value="SCR">SCR</option>
<option value="Mathématiques">Mathématiques</option>
<option value="DEV">DEV</option>
<option value="EGOD">EGOD</option>
<option value="EC">EC</option>
<option value="BD">BD</option>
<option value="Anglais">Anglais</option>
</select>
<br><br>
<label for="date" class="w3-text-brown"><b>Date :</b></label>
<input type="date" id="date" name="date" class="w3-input w3-border" required>
<br><br>
<label for="hours" class="w3-text-brown"><b>Nombre d'heures :</b></label>
<input type="number" id="hours" name="hours" class="w3-input w3-border" placeholder="Ex: 1.5" step="0.5" min="0" required>
<br><br>
<label for="classroom" class="w3-text-brown"><b>Salle de classe :</b></label>
<input type="text" id="classroom" name="classroom" class="w3-input w3-border" placeholder="Ex: 224" required>
<br><br>
<button type="button" onclick="submitHours()" class="w3-button w3-brown w3-left w3-margin-bottom">Ajouter</button>
</form>
</div>
</div>
</div>
<!-- Modal de confirmation -->
<div id="confirmationModal" class="modal">
<div class="modal-content">
<span class="close" onclick="closeConfirmationModal()">&times;</span>
2024-10-23 20:08:31 +02:00
<h2 class="w3-text-green"><strong>Confirmation</strong></h2>
<p>Les heures ont été ajoutées avec succès.</p>
<p>Un e-mail a été envoyé au professeur.</p>
2024-10-23 20:08:31 +02:00
<p>Cliquez ici pour ajouter les heures au planning : <a href="https://ade.u-pec.fr/direct/">ADE</a></p>
</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 src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
// Fonction pour afficher ou masquer les détails d'une formation et changer le texte du bouton
function toggleDetails(button, detailId) {
const detailsRow = document.getElementById(detailId);
if (detailsRow.style.display === "none" || detailsRow.style.display === "") {
detailsRow.style.display = "table-row";
button.textContent = "Fermer"; // Change le texte du bouton en "Fermer"
// Dessiner le graphique lorsque les détails sont affichés
if (detailId === 'but1-details') {
drawChart('but1Chart', 'BUT1 Informatique', [30, 45], ['Maxime MENAULT', 'Denis MONNERAT']);
} else if (detailId === 'master-details') {
drawChart('masterChart', 'BUT2 Informatique FA', [50, 90], ['Maxime MENAULT', 'Denis MONNERAT']);
}
} else {
detailsRow.style.display = "none";
button.textContent = "Voir"; // Remet le texte du bouton à "Voir"
}
}
// Fonction de recherche des formations
function searchFormation() {
const input = document.getElementById("searchBar").value.toLowerCase();
const table = document.getElementById("formationTable");
const rows = table.getElementsByTagName("tr");
for (let i = 1; i < rows.length; i++) {
const cells = rows[i].getElementsByTagName("td");
if (cells.length > 0) {
const formationName = cells[0].innerText.toLowerCase();
if (formationName.includes(input)) {
rows[i].style.display = "";
} else {
rows[i].style.display = "none";
}
}
}
}
// Fonction pour ouvrir le modal pour ajouter des heures
function openModal(formationName) {
document.getElementById("myModal").style.display = "block";
}
// Fonction pour fermer le modal
function closeModal() {
document.getElementById("myModal").style.display = "none";
document.getElementById("addHoursForm").reset(); // Réinitialiser le formulaire
}
// Fonction pour soumettre les heures ajoutées
function submitHours() {
const professor = document.getElementById("professor").value;
const subject = document.getElementById("subject").value;
const hours = document.getElementById("hours").value;
// Ici, vous pouvez ajouter la logique pour mettre à jour la table des formations
// Exemple : ajouter les heures à la table
// Ouvrir le modal de confirmation
document.getElementById("confirmationModal").style.display = "block";
// Fermer le modal d'ajout d'heures
closeModal();
}
// Fonction pour fermer le modal de confirmation
function closeConfirmationModal() {
document.getElementById("confirmationModal").style.display = "none";
}
// Fonction pour dessiner le graphique
function drawChart(chartId, label, data, labels) {
const ctx = document.getElementById(chartId).getContext('2d');
const myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: labels,
datasets: [{
label: label,
data: data,
backgroundColor: [
2024-10-23 20:08:31 +02:00
'rgba(255, 99, 132, 1.2)',
'rgba(54, 162, 235, 1.2)',
],
borderColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
],
borderWidth: 1
}]
},
options: {
scales: {
y: {
beginAtZero: true
}
2024-10-23 20:08:31 +02:00
},
plugins: {
legend: {
display: false
}
}}
});
}
// Fonction pour dessiner le graphique général
function drawTotalHoursChart() {
2024-10-23 20:08:31 +02:00
const ctx = document.getElementById('totalHoursChart').getContext('2d');
const totalHoursChart = new Chart(ctx, {
type: 'bar', // Changement du type de graphique à doughnut
data: {
labels: ['BUT1 Informatique', 'BUT2 Informatique FA'],
datasets: [{
label: 'Total d\'heures',
data: [400, 600], // Remplacez ces valeurs par le total d'heures pour chaque formation
backgroundColor: [
'rgba(255, 99, 132, 1.2)',
'rgba(54, 162, 235, 1.2)',
'rgba(255, 206, 86, 1.2)',
],
borderColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
],
borderWidth: 1
}]
},
options: {
responsive: true,
plugins: {
legend: {
display: false
},
title: {
display: true,
text: 'Total d\'heures par formation'
}
}
2024-10-23 20:08:31 +02:00
}
});
}
// Dessiner le graphique général après le chargement de la page
window.onload = function() {
drawTotalHoursChart();
closeModal();
};
</script>
2024-10-23 20:08:31 +02:00
<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>