Spaces:
Running
Running
| document.addEventListener('DOMContentLoaded', function() { | |
| // Format currency cells | |
| document.querySelectorAll('td').forEach(cell => { | |
| if (cell.textContent.includes(',')) { | |
| const value = parseFloat(cell.textContent.replace(/,/g, '')); | |
| // Format as currency | |
| cell.textContent = new Intl.NumberFormat('fr-FR', { | |
| style: 'currency', | |
| currency: 'EUR', | |
| minimumFractionDigits: 0, | |
| maximumFractionDigits: 0 | |
| }).format(value).replace('€', '') + ' €'; | |
| // Color coding based on value | |
| if (value > 200000) { | |
| cell.classList.add('cell-danger'); | |
| } else if (value > 100000) { | |
| cell.classList.add('cell-warning'); | |
| } else { | |
| cell.classList.add('cell-positive'); | |
| } | |
| } | |
| }); | |
| // Modern hover effects and click events for rows | |
| document.querySelectorAll('tbody tr').forEach(row => { | |
| row.style.cursor = 'pointer'; | |
| row.addEventListener('mouseenter', function() { | |
| this.style.transform = 'translateY(-2px)'; | |
| this.style.boxShadow = '0 4px 12px rgba(59, 130, 246, 0.1)'; | |
| }); | |
| row.addEventListener('mouseleave', function() { | |
| this.style.transform = ''; | |
| this.style.boxShadow = ''; | |
| }); | |
| row.addEventListener('click', function() { | |
| const projectId = this.querySelector('td:first-child').textContent; | |
| console.log('Navigating to project detail:', projectId); | |
| // Modern visual feedback | |
| this.style.transform = 'scale(0.99)'; | |
| this.style.boxShadow = '0 0 0 2px rgba(59, 130, 246, 0.3)'; | |
| setTimeout(() => { | |
| this.style.transform = ''; | |
| this.style.boxShadow = ''; | |
| }, 200); | |
| }); | |
| }); | |
| // Add subtle animation to table headers | |
| document.querySelectorAll('thead th').forEach((th, index) => { | |
| th.style.opacity = '0'; | |
| th.style.transform = 'translateY(-10px)'; | |
| th.style.animation = `fadeInUp 0.4s ease-out ${index * 0.05}s forwards`; | |
| }); | |
| // Initialize Feather icons | |
| if (feather) { | |
| feather.replace(); | |
| } | |
| }); | |