403 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
		
		
			
		
	
	
			403 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| 
								 | 
							
								<!DOCTYPE html>
							 | 
						||
| 
								 | 
							
								<html lang="fr">
							 | 
						||
| 
								 | 
							
								<head>
							 | 
						||
| 
								 | 
							
								    <meta charset="UTF-8">
							 | 
						||
| 
								 | 
							
								    <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">
							 | 
						||
| 
								 | 
							
								    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
							 | 
						||
| 
								 | 
							
								    <link rel="stylesheet" href="../../css/VACATAIRE/paiements.css">
							 | 
						||
| 
								 | 
							
								</head>
							 | 
						||
| 
								 | 
							
								<body>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    <div class="header">
							 | 
						||
| 
								 | 
							
								        <!-- Logo pour retourner à l'accueil -->
							 | 
						||
| 
								 | 
							
								        <div class="logo-container">
							 | 
						||
| 
								 | 
							
								            <img src="../../media/img/logoWhite.png" alt="Logo Accueil">
							 | 
						||
| 
								 | 
							
								        </div>
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        <!-- Catégories dans le header -->
							 | 
						||
| 
								 | 
							
								        <div class="categories">
							 | 
						||
| 
								 | 
							
								            <a href="./vacataire.html">Accueil</a>
							 | 
						||
| 
								 | 
							
								            <a href="./mes-heures.html">Heures</a>
							 | 
						||
| 
								 | 
							
								            <a href="./paiements.html">Paiements</a>
							 | 
						||
| 
								 | 
							
								            <a href="./mes-informations.html">Mes informations et documents</a>
							 | 
						||
| 
								 | 
							
								        </div>
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								        <!-- Section utilisateur avec déconnexion -->
							 | 
						||
| 
								 | 
							
								        <div class="user-section">
							 | 
						||
| 
								 | 
							
								            <div class="user-name">
							 | 
						||
| 
								 | 
							
								                Maxime MENAULT
							 | 
						||
| 
								 | 
							
								            </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>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<div class="dashboard-container">
							 | 
						||
| 
								 | 
							
								    <!-- Historique des paiements -->
							 | 
						||
| 
								 | 
							
								    <div class="section-header">
							 | 
						||
| 
								 | 
							
								        <h2>Historique des Paiements</h2>
							 | 
						||
| 
								 | 
							
								    </div>
							 | 
						||
| 
								 | 
							
								    <div class="card">
							 | 
						||
| 
								 | 
							
								        <div class="table-container">
							 | 
						||
| 
								 | 
							
								            <table>
							 | 
						||
| 
								 | 
							
								                <thead>
							 | 
						||
| 
								 | 
							
								                    <tr>
							 | 
						||
| 
								 | 
							
								                        <th data-sort="periode">Période</th>
							 | 
						||
| 
								 | 
							
								                        <th data-sort="heuresPayees">Heures Payées</th>
							 | 
						||
| 
								 | 
							
								                        <th data-sort="montantBrut">Montant Brut (€)</th>
							 | 
						||
| 
								 | 
							
								                        <th data-sort="montantNet">Montant Net (€)</th>
							 | 
						||
| 
								 | 
							
								                        <th data-sort="datePaiement">Date de Paiement</th>
							 | 
						||
| 
								 | 
							
								                        <th data-sort="modePaiement">Mode de Paiement</th>
							 | 
						||
| 
								 | 
							
								                        <th data-sort="compteBancaire">Compte Bancaire</th>
							 | 
						||
| 
								 | 
							
								                        <th data-sort="statut">Statut</th>
							 | 
						||
| 
								 | 
							
								                        <th>Bulletin de Paie</th>
							 | 
						||
| 
								 | 
							
								                    </tr>
							 | 
						||
| 
								 | 
							
								                </thead>                
							 | 
						||
| 
								 | 
							
								                <tbody>
							 | 
						||
| 
								 | 
							
								                    <tr>
							 | 
						||
| 
								 | 
							
								                        <td>Février 2024</td>
							 | 
						||
| 
								 | 
							
								                        <td>20h</td>
							 | 
						||
| 
								 | 
							
								                        <td>870,00</td>
							 | 
						||
| 
								 | 
							
								                        <td>700,00</td>
							 | 
						||
| 
								 | 
							
								                        <td>01/03/2024</td>
							 | 
						||
| 
								 | 
							
								                        <td>Virement Bancaire</td>
							 | 
						||
| 
								 | 
							
								                        <td>Compte XXXXXX1234</td>
							 | 
						||
| 
								 | 
							
								                        <td class="status-valide">Validé</td>
							 | 
						||
| 
								 | 
							
								                        <td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
							 | 
						||
| 
								 | 
							
								                    </tr>
							 | 
						||
| 
								 | 
							
								                    <tr>
							 | 
						||
| 
								 | 
							
								                        <td>Mars 2024</td>
							 | 
						||
| 
								 | 
							
								                        <td>25h</td>
							 | 
						||
| 
								 | 
							
								                        <td>1 087,50</td>
							 | 
						||
| 
								 | 
							
								                        <td>875,00</td>
							 | 
						||
| 
								 | 
							
								                        <td>01/04/2024</td>
							 | 
						||
| 
								 | 
							
								                        <td>Virement Bancaire</td>
							 | 
						||
| 
								 | 
							
								                        <td>Compte XXXXXX1234</td>
							 | 
						||
| 
								 | 
							
								                        <td class="status-valide">Validé</td>
							 | 
						||
| 
								 | 
							
								                        <td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
							 | 
						||
| 
								 | 
							
								                    </tr>
							 | 
						||
| 
								 | 
							
								                    <tr>
							 | 
						||
| 
								 | 
							
								                        <td>Avril 2024</td>
							 | 
						||
| 
								 | 
							
								                        <td>22h</td>
							 | 
						||
| 
								 | 
							
								                        <td>957,00</td>
							 | 
						||
| 
								 | 
							
								                        <td>760,00</td>
							 | 
						||
| 
								 | 
							
								                        <td>01/05/2024</td>
							 | 
						||
| 
								 | 
							
								                        <td>Virement Bancaire</td>
							 | 
						||
| 
								 | 
							
								                        <td>Compte XXXXXX1234</td>
							 | 
						||
| 
								 | 
							
								                        <td class="status-valide">Validé</td>
							 | 
						||
| 
								 | 
							
								                        <td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
							 | 
						||
| 
								 | 
							
								                    </tr>
							 | 
						||
| 
								 | 
							
								                    <tr>
							 | 
						||
| 
								 | 
							
								                        <td>Mai 2024</td>
							 | 
						||
| 
								 | 
							
								                        <td>20h</td>
							 | 
						||
| 
								 | 
							
								                        <td>870,00</td>
							 | 
						||
| 
								 | 
							
								                        <td>700,00</td>
							 | 
						||
| 
								 | 
							
								                        <td>01/06/2024</td>
							 | 
						||
| 
								 | 
							
								                        <td>Virement Bancaire</td>
							 | 
						||
| 
								 | 
							
								                        <td>Compte XXXXXX1234</td>
							 | 
						||
| 
								 | 
							
								                        <td class="status-valide">Validé</td>
							 | 
						||
| 
								 | 
							
								                        <td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
							 | 
						||
| 
								 | 
							
								                    </tr>
							 | 
						||
| 
								 | 
							
								                    <tr>
							 | 
						||
| 
								 | 
							
								                        <td>Juin 2024</td>
							 | 
						||
| 
								 | 
							
								                        <td>18h</td>
							 | 
						||
| 
								 | 
							
								                        <td>783,00</td>
							 | 
						||
| 
								 | 
							
								                        <td>625,00</td>
							 | 
						||
| 
								 | 
							
								                        <td>01/07/2024</td>
							 | 
						||
| 
								 | 
							
								                        <td>Virement Bancaire</td>
							 | 
						||
| 
								 | 
							
								                        <td>Compte XXXXXX1234</td>
							 | 
						||
| 
								 | 
							
								                        <td class="status-valide">Validé</td>
							 | 
						||
| 
								 | 
							
								                        <td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
							 | 
						||
| 
								 | 
							
								                    </tr>
							 | 
						||
| 
								 | 
							
								                    <tr>
							 | 
						||
| 
								 | 
							
								                        <td>Septembre 2024</td>
							 | 
						||
| 
								 | 
							
								                        <td>20h</td>
							 | 
						||
| 
								 | 
							
								                        <td>870,00</td>
							 | 
						||
| 
								 | 
							
								                        <td>700,00</td>
							 | 
						||
| 
								 | 
							
								                        <td>01/10/2024</td>
							 | 
						||
| 
								 | 
							
								                        <td>Virement Bancaire</td>
							 | 
						||
| 
								 | 
							
								                        <td>Compte XXXXXX1234</td>
							 | 
						||
| 
								 | 
							
								                        <td class="status-valide">Validé</td>
							 | 
						||
| 
								 | 
							
								                        <td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
							 | 
						||
| 
								 | 
							
								                    </tr>
							 | 
						||
| 
								 | 
							
								                    <tr>
							 | 
						||
| 
								 | 
							
								                        <td>Octobre 2024</td>
							 | 
						||
| 
								 | 
							
								                        <td>22h</td>
							 | 
						||
| 
								 | 
							
								                        <td>957,00</td>
							 | 
						||
| 
								 | 
							
								                        <td>760,00</td>
							 | 
						||
| 
								 | 
							
								                        <td>01/11/2024</td>
							 | 
						||
| 
								 | 
							
								                        <td>Virement Bancaire</td>
							 | 
						||
| 
								 | 
							
								                        <td>Compte XXXXXX1234</td>
							 | 
						||
| 
								 | 
							
								                        <td class="status-attente">En attente</td>
							 | 
						||
| 
								 | 
							
								                        <td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
							 | 
						||
| 
								 | 
							
								                    </tr>
							 | 
						||
| 
								 | 
							
								                </tbody>
							 | 
						||
| 
								 | 
							
								            </table>
							 | 
						||
| 
								 | 
							
								        </div>
							 | 
						||
| 
								 | 
							
								        <p><strong>Prochain paiement prévu :</strong> Novembre 2024 (20h restantes)</p>
							 | 
						||
| 
								 | 
							
								    </div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    <!-- Graphique des paiements (brut) -->
							 | 
						||
| 
								 | 
							
								    <div class="section-header">
							 | 
						||
| 
								 | 
							
								        <h2>Évolution de vos Paiements</h2>
							 | 
						||
| 
								 | 
							
								    </div>
							 | 
						||
| 
								 | 
							
								    <div class="card">
							 | 
						||
| 
								 | 
							
								        <div class="chart-container">
							 | 
						||
| 
								 | 
							
								            <canvas id="paymentChart"></canvas>
							 | 
						||
| 
								 | 
							
								        </div>
							 | 
						||
| 
								 | 
							
								    </div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    <!-- Formulaire pour signaler un problème -->
							 | 
						||
| 
								 | 
							
								<!-- Formulaire pour signaler un problème -->
							 | 
						||
| 
								 | 
							
								<div class="section-header">
							 | 
						||
| 
								 | 
							
								    <h2>Signaler un problème de paye</h2>
							 | 
						||
| 
								 | 
							
								</div>
							 | 
						||
| 
								 | 
							
								<div class="card contact-form">
							 | 
						||
| 
								 | 
							
								    <h3>Formulaire de signalement</h3>
							 | 
						||
| 
								 | 
							
								    <form id="contactForm">
							 | 
						||
| 
								 | 
							
								        <label for="probleme">Sélectionnez un problème :</label>
							 | 
						||
| 
								 | 
							
								        <select id="probleme" required>
							 | 
						||
| 
								 | 
							
								            <option value="">-- Sélectionner un problème --</option>
							 | 
						||
| 
								 | 
							
								            <option value="noPayment">Je n'ai pas reçu de paiement</option>
							 | 
						||
| 
								 | 
							
								            <option value="wrongAmount">Le montant de mon salaire est inférieur à ce qui était prévu.</option>
							 | 
						||
| 
								 | 
							
								            <option value="duplicatePayment">J'ai reçu un paiement en double</option>
							 | 
						||
| 
								 | 
							
								            <option value="latePayment">Mon paiement est en retard</option>
							 | 
						||
| 
								 | 
							
								            <option value="unjustifiedWithholding">Il y a une retenue sur mon paiement que je ne comprends pas</option>
							 | 
						||
| 
								 | 
							
								            <option value="technicalIssue">J'ai des difficultés à accéder à mes bulletins de salaire en ligne</option>
							 | 
						||
| 
								 | 
							
								        </select>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        <!-- Champs supplémentaires qui s'affichent selon le problème -->
							 | 
						||
| 
								 | 
							
								        <div id="detailsSupplementaires" style="display: none;">
							 | 
						||
| 
								 | 
							
								            <!-- Champ pour sélectionner le mois -->
							 | 
						||
| 
								 | 
							
								            <div id="moisEnQuestion" style="display:none;">
							 | 
						||
| 
								 | 
							
								                <label for="mois">Sélectionner le mois :</label>
							 | 
						||
| 
								 | 
							
								                <select id="mois">
							 | 
						||
| 
								 | 
							
								                    <option value="">-- Sélectionner le mois --</option>
							 | 
						||
| 
								 | 
							
								                    <option value="fevrier">Février 2024</option>
							 | 
						||
| 
								 | 
							
								                    <option value="mars">Mars 2024</option>
							 | 
						||
| 
								 | 
							
								                    <option value="avril">Avril 2024</option>
							 | 
						||
| 
								 | 
							
								                    <option value="mai">Mai 2024</option>
							 | 
						||
| 
								 | 
							
								                    <option value="juin">Juin 2024</option>
							 | 
						||
| 
								 | 
							
								                    <option value="septembre">Septembre 2024</option>
							 | 
						||
| 
								 | 
							
								                    <option value="octobre">Octobre 2024</option>
							 | 
						||
| 
								 | 
							
								                </select>
							 | 
						||
| 
								 | 
							
								            </div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            <!-- Champ pour indiquer le montant reçu -->
							 | 
						||
| 
								 | 
							
								            <div id="montantRecuSupplementaire" style="display:none;">
							 | 
						||
| 
								 | 
							
								                <label for="montantRecu">Montant reçu (€) :</label>
							 | 
						||
| 
								 | 
							
								                <input type="number" id="montantRecu" placeholder="Montant reçu" />
							 | 
						||
| 
								 | 
							
								            </div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            <!-- Champ pour indiquer le montant attendu -->
							 | 
						||
| 
								 | 
							
								            <div id="montantAttendu" style="display:none;">
							 | 
						||
| 
								 | 
							
								                <label for="montantAttenduInput">Montant attendu (€) :</label>
							 | 
						||
| 
								 | 
							
								                <input type="number" id="montantAttenduInput" placeholder="Montant attendu" />
							 | 
						||
| 
								 | 
							
								            </div>
							 | 
						||
| 
								 | 
							
								        </div>
							 | 
						||
| 
								 | 
							
								        <button type="submit">Envoyer</button>
							 | 
						||
| 
								 | 
							
								    </form>
							 | 
						||
| 
								 | 
							
								</div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<div class="footer">
							 | 
						||
| 
								 | 
							
								    <p>© 2024 IUT de Fontainebleau. Tous droits réservés | 
							 | 
						||
| 
								 | 
							
								        <a href="html/mentions_legales.html">Mentions légales</a>
							 | 
						||
| 
								 | 
							
								    </p>
							 | 
						||
| 
								 | 
							
								</div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<!-- Popup de confirmation -->
							 | 
						||
| 
								 | 
							
								<div class="popup" id="popup">
							 | 
						||
| 
								 | 
							
								    <img src="https://img.icons8.com/ios-filled/50/155724/checkmark.png" alt="Coche">
							 | 
						||
| 
								 | 
							
								    <h4>Message envoyé</h4>
							 | 
						||
| 
								 | 
							
								    <p>Votre message a été transmis à la direction. Un email de confirmation vous a été envoyé.</p>
							 | 
						||
| 
								 | 
							
								    <button onclick="fermerPopup()">Fermer</button>
							 | 
						||
| 
								 | 
							
								</div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<!-- Script pour gérer le formulaire et le popup -->
							 | 
						||
| 
								 | 
							
								<script>
							 | 
						||
| 
								 | 
							
								document.getElementById('probleme').addEventListener('change', function() {
							 | 
						||
| 
								 | 
							
								    var detailsSupplementaires = document.getElementById('detailsSupplementaires');
							 | 
						||
| 
								 | 
							
								    var montantRecuSupplementaire = document.getElementById('montantRecuSupplementaire');
							 | 
						||
| 
								 | 
							
								    var moisEnQuestion = document.getElementById('moisEnQuestion'); // Champ pour sélectionner le mois
							 | 
						||
| 
								 | 
							
								    var montantAttendu = document.getElementById('montantAttendu'); // Champ pour indiquer le montant attendu
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Masquer tous les champs au départ
							 | 
						||
| 
								 | 
							
								    detailsSupplementaires.style.display = 'none';
							 | 
						||
| 
								 | 
							
								    montantRecuSupplementaire.style.display = 'none';
							 | 
						||
| 
								 | 
							
								    moisEnQuestion.style.display = 'none'; 
							 | 
						||
| 
								 | 
							
								    montantAttendu.style.display = 'none';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Afficher les champs en fonction du problème sélectionné
							 | 
						||
| 
								 | 
							
								    switch (this.value) {
							 | 
						||
| 
								 | 
							
								        case 'noPayment':
							 | 
						||
| 
								 | 
							
								            detailsSupplementaires.style.display = 'block';
							 | 
						||
| 
								 | 
							
								            moisEnQuestion.style.display = 'block'; // Afficher le champ pour sélectionner le mois
							 | 
						||
| 
								 | 
							
								            break;
							 | 
						||
| 
								 | 
							
								        case 'wrongAmount':
							 | 
						||
| 
								 | 
							
								            detailsSupplementaires.style.display = 'block';
							 | 
						||
| 
								 | 
							
								            montantRecuSupplementaire.style.display = 'block'; // Afficher le montant
							 | 
						||
| 
								 | 
							
								            moisEnQuestion.style.display = 'block'; // Afficher le champ pour sélectionner le mois
							 | 
						||
| 
								 | 
							
								            break;
							 | 
						||
| 
								 | 
							
								        case 'duplicatePayment':
							 | 
						||
| 
								 | 
							
								            detailsSupplementaires.style.display = 'block';
							 | 
						||
| 
								 | 
							
								            moisEnQuestion.style.display = 'block'; // Afficher le champ pour sélectionner le mois
							 | 
						||
| 
								 | 
							
								            montantAttendu.style.display = 'block'; // Afficher le champ pour le montant attendu
							 | 
						||
| 
								 | 
							
								            break;
							 | 
						||
| 
								 | 
							
								        case 'latePayment':
							 | 
						||
| 
								 | 
							
								            detailsSupplementaires.style.display = 'block';
							 | 
						||
| 
								 | 
							
								            moisEnQuestion.style.display = 'block'; // Afficher le champ pour sélectionner le mois
							 | 
						||
| 
								 | 
							
								            break;
							 | 
						||
| 
								 | 
							
								        case 'unjustifiedWithholding':
							 | 
						||
| 
								 | 
							
								            detailsSupplementaires.style.display = 'block';
							 | 
						||
| 
								 | 
							
								            break;
							 | 
						||
| 
								 | 
							
								        case 'technicalIssue':
							 | 
						||
| 
								 | 
							
								            detailsSupplementaires.style.display = 'block';
							 | 
						||
| 
								 | 
							
								            break;
							 | 
						||
| 
								 | 
							
								        default:
							 | 
						||
| 
								 | 
							
								            // Aucune action si aucune valeur valide n'est sélectionnée
							 | 
						||
| 
								 | 
							
								            break;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								document.getElementById('contactForm').addEventListener('submit', function(event) {
							 | 
						||
| 
								 | 
							
								    event.preventDefault();
							 | 
						||
| 
								 | 
							
								    // Afficher le popup de confirmation
							 | 
						||
| 
								 | 
							
								    document.getElementById('popup').style.display = 'block';
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function fermerPopup() {
							 | 
						||
| 
								 | 
							
								    document.getElementById('popup').style.display = 'none';
							 | 
						||
| 
								 | 
							
								    // Réinitialiser le formulaire après soumission
							 | 
						||
| 
								 | 
							
								    document.getElementById('contactForm').reset();
							 | 
						||
| 
								 | 
							
								    document.getElementById('detailsSupplementaires').style.display = 'none';
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Configuration du graphique Chart.js
							 | 
						||
| 
								 | 
							
								const ctx = document.getElementById('paymentChart').getContext('2d');
							 | 
						||
| 
								 | 
							
								const paymentChart = new Chart(ctx, {
							 | 
						||
| 
								 | 
							
								    type: 'line',
							 | 
						||
| 
								 | 
							
								    data: {
							 | 
						||
| 
								 | 
							
								        labels: ['Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Septembre', 'Octobre'],
							 | 
						||
| 
								 | 
							
								        datasets: [{
							 | 
						||
| 
								 | 
							
								            label: 'Montant Brut (€)',
							 | 
						||
| 
								 | 
							
								            data: [870, 1087.5, 957, 870, 783, 870, 957],
							 | 
						||
| 
								 | 
							
								            borderColor: 'rgba(75, 192, 192, 1)',
							 | 
						||
| 
								 | 
							
								            backgroundColor: 'rgba(75, 192, 192, 0.2)',
							 | 
						||
| 
								 | 
							
								            fill: true,
							 | 
						||
| 
								 | 
							
								            tension: 0.3,
							 | 
						||
| 
								 | 
							
								        }]
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    options: {
							 | 
						||
| 
								 | 
							
								        responsive: true,
							 | 
						||
| 
								 | 
							
								        scales: {
							 | 
						||
| 
								 | 
							
								            y: {
							 | 
						||
| 
								 | 
							
								                beginAtZero: true
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        plugins: {
							 | 
						||
| 
								 | 
							
								            legend: {
							 | 
						||
| 
								 | 
							
								                display: true,
							 | 
						||
| 
								 | 
							
								                position: 'top',
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								document.querySelectorAll('th[data-sort]').forEach(function (header) {
							 | 
						||
| 
								 | 
							
								    header.addEventListener('click', function () {
							 | 
						||
| 
								 | 
							
								        const table = header.closest('table');
							 | 
						||
| 
								 | 
							
								        const tbody = table.querySelector('tbody');
							 | 
						||
| 
								 | 
							
								        const rowsArray = Array.from(tbody.querySelectorAll('tr'));
							 | 
						||
| 
								 | 
							
								        const index = Array.from(header.parentElement.children).indexOf(header);
							 | 
						||
| 
								 | 
							
								        let order = header.dataset.order || 1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // Retirer les classes de tri des autres colonnes
							 | 
						||
| 
								 | 
							
								        document.querySelectorAll('th[data-sort]').forEach(function (th) {
							 | 
						||
| 
								 | 
							
								            th.classList.remove('ascending', 'descending');
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // Appliquer la classe de tri
							 | 
						||
| 
								 | 
							
								        if (order == 1) {
							 | 
						||
| 
								 | 
							
								            header.classList.add('ascending');
							 | 
						||
| 
								 | 
							
								            header.dataset.order = -1;  // Inverser l'ordre pour la prochaine fois
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								            header.classList.add('descending');
							 | 
						||
| 
								 | 
							
								            header.dataset.order = 1;  // Réinitialiser pour la prochaine fois
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // Trier les lignes du tableau
							 | 
						||
| 
								 | 
							
								        rowsArray.sort(function (rowA, rowB) {
							 | 
						||
| 
								 | 
							
								            let cellA = rowA.children[index].innerText.trim();
							 | 
						||
| 
								 | 
							
								            let cellB = rowB.children[index].innerText.trim();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            // Gérer les périodes (mois)
							 | 
						||
| 
								 | 
							
								            if (header.dataset.sort === 'periode') {
							 | 
						||
| 
								 | 
							
								                cellA = moisToNumero(cellA);
							 | 
						||
| 
								 | 
							
								                cellB = moisToNumero(cellB);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            // Gérer les montants numériques avec des virgules
							 | 
						||
| 
								 | 
							
								            else if (!isNaN(cellA.replace(',', '.')) && !isNaN(cellB.replace(',', '.'))) {
							 | 
						||
| 
								 | 
							
								                return (parseFloat(cellA.replace(',', '.')) - parseFloat(cellB.replace(',', '.'))) * order;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            // Gérer les dates
							 | 
						||
| 
								 | 
							
								            else if (isDate(cellA) && isDate(cellB)) {
							 | 
						||
| 
								 | 
							
								                return (new Date(cellA) - new Date(cellB)) * order;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            // Gérer les textes (par défaut)
							 | 
						||
| 
								 | 
							
								            else {
							 | 
						||
| 
								 | 
							
								                return cellA.localeCompare(cellB) * order;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            return (cellA - cellB) * order;
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // Réorganiser les lignes dans le tableau
							 | 
						||
| 
								 | 
							
								        rowsArray.forEach(function (row) {
							 | 
						||
| 
								 | 
							
								            tbody.appendChild(row);
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Fonction pour convertir les mois en numéros pour faciliter le tri
							 | 
						||
| 
								 | 
							
								function moisToNumero(mois) {
							 | 
						||
| 
								 | 
							
								    const moisIndex = {
							 | 
						||
| 
								 | 
							
								        "Janvier": 1,
							 | 
						||
| 
								 | 
							
								        "Février": 2,
							 | 
						||
| 
								 | 
							
								        "Mars": 3,
							 | 
						||
| 
								 | 
							
								        "Avril": 4,
							 | 
						||
| 
								 | 
							
								        "Mai": 5,
							 | 
						||
| 
								 | 
							
								        "Juin": 6,
							 | 
						||
| 
								 | 
							
								        "Juillet": 7,
							 | 
						||
| 
								 | 
							
								        "Août": 8,
							 | 
						||
| 
								 | 
							
								        "Septembre": 9,
							 | 
						||
| 
								 | 
							
								        "Octobre": 10,
							 | 
						||
| 
								 | 
							
								        "Novembre": 11,
							 | 
						||
| 
								 | 
							
								        "Décembre": 12
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Extraire le mois et l'année du texte (ex: "Février 2024")
							 | 
						||
| 
								 | 
							
								    const [moisNom, annee] = mois.split(' ');
							 | 
						||
| 
								 | 
							
								    return new Date(annee, moisIndex[moisNom] - 1); // Créer un objet Date
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Fonction pour vérifier si un texte est une date valide
							 | 
						||
| 
								 | 
							
								function isDate(dateString) {
							 | 
						||
| 
								 | 
							
								    return !isNaN(Date.parse(dateString));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</script>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</body>
							 | 
						||
| 
								 | 
							
								</html>
							 |