d
This commit is contained in:
parent
3bfb1f60d3
commit
765f22e08d
|
|
@ -36,7 +36,7 @@ class UXManager {
|
|||
* Appelée automatiquement par le constructeur
|
||||
*/
|
||||
init() {
|
||||
console.log('[UX Manager] Initialisation du système d\'expérience utilisateur...');
|
||||
//console.log('[UX Manager] Initialisation du système d\'expérience utilisateur...');
|
||||
|
||||
// Initialisation séquentielle des sous-managers
|
||||
this.navigation.init();
|
||||
|
|
@ -52,7 +52,7 @@ class UXManager {
|
|||
// Initialisation du Service Worker
|
||||
this.initServiceWorker();
|
||||
|
||||
console.log('[UX Manager] Initialisation terminée avec succès');
|
||||
//console.log('[UX Manager] Initialisation terminée avec succès');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -149,9 +149,9 @@ class UXManager {
|
|||
initServiceWorker() {
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.ready.then(registration => {
|
||||
console.log('[UX Manager] Service Worker actif:', registration.scope);
|
||||
//console.log('[UX Manager] Service Worker actif:', registration.scope);
|
||||
}).catch(error => {
|
||||
console.warn('[UX Manager] Service Worker non disponible:', error);
|
||||
//console.warn('[UX Manager] Service Worker non disponible:', error);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -182,7 +182,7 @@ class NavigationManager {
|
|||
init() {
|
||||
if (this.isInitialized) return;
|
||||
|
||||
console.log('[Navigation] Initialisation du système de menus...');
|
||||
// console.log('[Navigation] Initialisation du système de menus...');
|
||||
|
||||
// Appliquer le correctif d'urgence pour les menus multiples ouverts
|
||||
this.applyEmergencyFix();
|
||||
|
|
@ -198,7 +198,7 @@ class NavigationManager {
|
|||
}, 300);
|
||||
|
||||
this.isInitialized = true;
|
||||
console.log('[Navigation] Système de menus initialisé');
|
||||
//console.log('[Navigation] Système de menus initialisé');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -211,7 +211,7 @@ class NavigationManager {
|
|||
|
||||
if (activeParentId !== null && activeParentId !== '') {
|
||||
this.activeMenuId = `submenu${activeParentId}`;
|
||||
console.log('[Navigation] Correctif: Menu actif détecté:', this.activeMenuId);
|
||||
//console.log('[Navigation] Correctif: Menu actif détecté:', this.activeMenuId);
|
||||
|
||||
// Forcer la fermeture de tous les autres menus
|
||||
this.forceSingleMenu();
|
||||
|
|
@ -225,7 +225,7 @@ class NavigationManager {
|
|||
forceSingleMenu() {
|
||||
if (!this.activeMenuId) return;
|
||||
|
||||
console.log('[Navigation] Forçage: Un seul menu ouvert ->', this.activeMenuId);
|
||||
//console.log('[Navigation] Forçage: Un seul menu ouvert ->', this.activeMenuId);
|
||||
|
||||
// Étape 1: Fermer TOUS les menus
|
||||
document.querySelectorAll('.nav-submenu').forEach(menu => {
|
||||
|
|
@ -249,11 +249,11 @@ class NavigationManager {
|
|||
const activeParentId = window.appConfig?.activeParentId;
|
||||
const activeLink = window.appConfig?.activeLink;
|
||||
|
||||
console.log('[Navigation] Configuration:', { activeParentId, activeLink });
|
||||
//console.log('[Navigation] Configuration:', { activeParentId, activeLink });
|
||||
|
||||
// CORRECTION : Si "Accueil" mais activeParentId != 0, corriger
|
||||
if (activeLink === 'Accueil' && activeParentId !== '0') {
|
||||
console.warn('[Navigation] Correction: Accueil devrait être menu 0, pas', activeParentId);
|
||||
//console.warn('[Navigation] Correction: Accueil devrait être menu 0, pas', activeParentId);
|
||||
this.activeMenuId = 'submenu0';
|
||||
|
||||
// Mettre à jour la config
|
||||
|
|
@ -268,7 +268,7 @@ class NavigationManager {
|
|||
this.activeMenuId = null;
|
||||
}
|
||||
|
||||
console.log('[Navigation] Menu actif final:', this.activeMenuId);
|
||||
//console.log('[Navigation] Menu actif final:', this.activeMenuId);
|
||||
|
||||
// Appliquer
|
||||
if (this.activeMenuId) {
|
||||
|
|
@ -291,7 +291,7 @@ class NavigationManager {
|
|||
e.stopPropagation();
|
||||
|
||||
const targetId = link.getAttribute('href').substring(1); // Enlever le #
|
||||
console.log('[Navigation] Clic détecté sur menu:', targetId);
|
||||
//console.log('[Navigation] Clic détecté sur menu:', targetId);
|
||||
|
||||
// Logique de basculement intelligent
|
||||
if (this.currentOpenMenu === targetId) {
|
||||
|
|
@ -341,11 +341,11 @@ class NavigationManager {
|
|||
if (menu && link) {
|
||||
// Vérifier si le menu est déjà ouvert
|
||||
if (menu.classList.contains('show')) {
|
||||
console.log('[Navigation] Menu déjà ouvert:', menuId);
|
||||
//console.log('[Navigation] Menu déjà ouvert:', menuId);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('[Navigation] Ouverture du menu:', menuId);
|
||||
//console.log('[Navigation] Ouverture du menu:', menuId);
|
||||
|
||||
// 1. Fermer tous les autres menus
|
||||
document.querySelectorAll('.nav-submenu.show').forEach(otherMenu => {
|
||||
|
|
@ -389,11 +389,11 @@ class NavigationManager {
|
|||
if (menu && link) {
|
||||
// Ne pas fermer le menu actif s'il correspond à la page courante (sauf si forcé)
|
||||
if (!force && menuId === this.activeMenuId) {
|
||||
console.log('[Navigation] Menu actif, fermeture bloquée:', menuId);
|
||||
//console.log('[Navigation] Menu actif, fermeture bloquée:', menuId);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('[Navigation] Fermeture du menu:', menuId);
|
||||
//console.log('[Navigation] Fermeture du menu:', menuId);
|
||||
|
||||
// Appliquer les changements visuels
|
||||
menu.classList.remove('show');
|
||||
|
|
@ -411,7 +411,7 @@ class NavigationManager {
|
|||
* @public - Méthode accessible globalement
|
||||
*/
|
||||
closeAllMenus() {
|
||||
console.log('[Navigation] Fermeture de tous les menus (sauf actif)');
|
||||
//console.log('[Navigation] Fermeture de tous les menus (sauf actif)');
|
||||
|
||||
document.querySelectorAll('.nav-submenu.show').forEach(menu => {
|
||||
if (menu.id !== this.activeMenuId) {
|
||||
|
|
@ -477,13 +477,13 @@ class NavigationManager {
|
|||
* @private - Méthode de validation
|
||||
*/
|
||||
validateMenuConsistency() {
|
||||
console.log('[Navigation] Vérification de cohérence...');
|
||||
//console.log('[Navigation] Vérification de cohérence...');
|
||||
|
||||
// 1. Vérifier que le menu actif est ouvert
|
||||
if (this.activeMenuId) {
|
||||
const activeMenu = document.getElementById(this.activeMenuId);
|
||||
if (activeMenu && !activeMenu.classList.contains('show')) {
|
||||
console.warn('[Navigation] Menu actif non ouvert, correction...');
|
||||
//console.warn('[Navigation] Menu actif non ouvert, correction...');
|
||||
this.openMenu(this.activeMenuId);
|
||||
}
|
||||
}
|
||||
|
|
@ -491,7 +491,7 @@ class NavigationManager {
|
|||
// 2. Vérifier qu'un seul menu est ouvert
|
||||
const openMenus = document.querySelectorAll('.nav-submenu.show');
|
||||
if (openMenus.length > 1) {
|
||||
console.warn(`[Navigation] ${openMenus.length} menus ouverts, correction...`);
|
||||
//console.warn(`[Navigation] ${openMenus.length} menus ouverts, correction...`);
|
||||
this.forceSingleMenu();
|
||||
}
|
||||
|
||||
|
|
@ -512,7 +512,7 @@ class NavigationManager {
|
|||
if (openMenu) {
|
||||
const hasActiveLink = openMenu.querySelector(`a[href*="${activeLink}"]`);
|
||||
if (!hasActiveLink) {
|
||||
console.warn(`[Navigation] Page "${activeLink}" non trouvée dans le menu ouvert ${openMenu.id}`);
|
||||
//console.warn(`[Navigation] Page "${activeLink}" non trouvée dans le menu ouvert ${openMenu.id}`);
|
||||
|
||||
// Essayer de trouver le bon menu
|
||||
this.autoDetectCorrectMenu();
|
||||
|
|
@ -528,14 +528,14 @@ class NavigationManager {
|
|||
const activeLink = window.appConfig?.activeLink;
|
||||
if (!activeLink) return;
|
||||
|
||||
console.log(`[Navigation] Auto-détection du menu pour "${activeLink}"...`);
|
||||
//console.log(`[Navigation] Auto-détection du menu pour "${activeLink}"...`);
|
||||
|
||||
// Chercher dans tous les menus
|
||||
document.querySelectorAll('.nav-submenu').forEach(menu => {
|
||||
const link = menu.querySelector(`a[href*="${activeLink}"]`);
|
||||
if (link) {
|
||||
const correctMenuId = menu.id;
|
||||
console.log(`[Navigation] Trouvé dans ${correctMenuId}`);
|
||||
//console.log(`[Navigation] Trouvé dans ${correctMenuId}`);
|
||||
|
||||
// Mettre à jour
|
||||
this.activeMenuId = correctMenuId;
|
||||
|
|
@ -591,7 +591,7 @@ class ContextPanelManager {
|
|||
init() {
|
||||
if (this.isInitialized || !this.panel) return;
|
||||
|
||||
console.log('[Context Panel] Initialisation...');
|
||||
//console.log('[Context Panel] Initialisation...');
|
||||
|
||||
this.setupProximityDetection();
|
||||
this.setupKeyboardControls();
|
||||
|
|
@ -671,7 +671,7 @@ class ContextPanelManager {
|
|||
if (closeBtn) closeBtn.focus();
|
||||
}, 300);
|
||||
|
||||
console.log('[Context Panel] Ouvert');
|
||||
//console.log('[Context Panel] Ouvert');
|
||||
window.appUX?.accessibility.announce('Panneau contextuel ouvert');
|
||||
}
|
||||
|
||||
|
|
@ -688,7 +688,7 @@ class ContextPanelManager {
|
|||
// Retourner le focus au bouton toggle
|
||||
this.toggleButton.focus();
|
||||
|
||||
console.log('[Context Panel] Fermé');
|
||||
//console.log('[Context Panel] Fermé');
|
||||
window.appUX?.accessibility.announce('Panneau contextuel fermé');
|
||||
}
|
||||
}
|
||||
|
|
@ -715,7 +715,7 @@ class NotificationManager {
|
|||
* @public - Méthode appelée par UXManager
|
||||
*/
|
||||
init() {
|
||||
console.log('[Notifications] Initialisation...');
|
||||
//console.log('[Notifications] Initialisation...');
|
||||
|
||||
this.loadNotifications();
|
||||
this.setupPolling();
|
||||
|
|
@ -730,7 +730,7 @@ class NotificationManager {
|
|||
const mockCount = 3; // Exemple : 3 notifications non lues
|
||||
this.updateCount(mockCount);
|
||||
|
||||
console.log('[Notifications] Chargement simulé:', mockCount, 'notification(s)');
|
||||
//console.log('[Notifications] Chargement simulé:', mockCount, 'notification(s)');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -787,7 +787,7 @@ class NotificationManager {
|
|||
showMessagesModal() {
|
||||
const modalElement = document.getElementById('messagesModal');
|
||||
if (!modalElement) {
|
||||
console.error('[Notifications] Modale des messages non trouvée');
|
||||
//console.error('[Notifications] Modale des messages non trouvée');
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -797,7 +797,7 @@ class NotificationManager {
|
|||
// Charger les messages
|
||||
this.loadMessages();
|
||||
|
||||
console.log('[Notifications] Affichage de la modale des messages');
|
||||
//console.log('[Notifications] Affichage de la modale des messages');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -859,14 +859,14 @@ class AccessibilityManager {
|
|||
* @public - Méthode appelée par UXManager
|
||||
*/
|
||||
init() {
|
||||
console.log('[Accessibility] Initialisation des fonctionnalités d\'accessibilités...');
|
||||
//console.log('[Accessibility] Initialisation des fonctionnalités d\'accessibilités...');
|
||||
|
||||
this.setupFocusManagement();
|
||||
this.setupAriaLiveRegions();
|
||||
this.detectReducedMotion();
|
||||
this.setupSkipLinks();
|
||||
|
||||
console.log('[Accessibility] Fonctionnalités d\'accessibilité activées');
|
||||
//console.log('[Accessibility] Fonctionnalités d\'accessibilité activées');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -934,7 +934,7 @@ class AccessibilityManager {
|
|||
this.liveRegion.setAttribute('role', 'status');
|
||||
document.body.appendChild(this.liveRegion);
|
||||
|
||||
console.log('[Accessibility] Région ARIA live créée');
|
||||
//console.log('[Accessibility] Région ARIA live créée');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -951,7 +951,7 @@ class AccessibilityManager {
|
|||
// Ajouter le nouveau message après un délai
|
||||
setTimeout(() => {
|
||||
this.liveRegion.textContent = message;
|
||||
console.log('[Accessibility] Annonce:', message);
|
||||
//console.log('[Accessibility] Annonce:', message);
|
||||
}, 100);
|
||||
}
|
||||
|
||||
|
|
@ -965,7 +965,7 @@ class AccessibilityManager {
|
|||
|
||||
if (this.reducedMotion) {
|
||||
document.documentElement.classList.add('reduced-motion');
|
||||
console.log('[Accessibility] Réduction des mouvements activée');
|
||||
//console.log('[Accessibility] Réduction des mouvements activée');
|
||||
}
|
||||
|
||||
// Écouter les changements de préférence
|
||||
|
|
@ -976,7 +976,7 @@ class AccessibilityManager {
|
|||
} else {
|
||||
document.documentElement.classList.remove('reduced-motion');
|
||||
}
|
||||
console.log('[Accessibility] Préférence de mouvement mise à jour:', this.reducedMotion);
|
||||
//console.log('[Accessibility] Préférence de mouvement mise à jour:', this.reducedMotion);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -1002,7 +1002,7 @@ class AccessibilityManager {
|
|||
// Insérer au début du body
|
||||
document.body.insertBefore(skipLinks, document.body.firstChild);
|
||||
|
||||
console.log('[Accessibility] Liens d\'évitement créés');
|
||||
//console.log('[Accessibility] Liens d\'évitement créés');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1027,14 +1027,14 @@ class PerformanceManager {
|
|||
* @public - Méthode appelée par UXManager
|
||||
*/
|
||||
init() {
|
||||
console.log('[Performance] Initialisation du monitoring...');
|
||||
//console.log('[Performance] Initialisation du monitoring...');
|
||||
|
||||
this.monitorPerformance();
|
||||
this.setupLazyLoading();
|
||||
this.setupIntersectionObserver();
|
||||
this.setupIdleCallback();
|
||||
|
||||
console.log('[Performance] Monitoring activé');
|
||||
//console.log('[Performance] Monitoring activé');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1049,16 +1049,16 @@ class PerformanceManager {
|
|||
switch (entry.entryType) {
|
||||
case 'largest-contentful-paint':
|
||||
this.metrics.lcp = entry.startTime;
|
||||
console.log('[Performance] LCP:', entry.startTime.toFixed(2), 'ms');
|
||||
//console.log('[Performance] LCP:', entry.startTime.toFixed(2), 'ms');
|
||||
break;
|
||||
case 'first-input':
|
||||
this.metrics.fid = entry.processingStart - entry.startTime;
|
||||
console.log('[Performance] FID:', this.metrics.fid.toFixed(2), 'ms');
|
||||
//console.log('[Performance] FID:', this.metrics.fid.toFixed(2), 'ms');
|
||||
break;
|
||||
case 'layout-shift':
|
||||
if (!entry.hadRecentInput) {
|
||||
this.metrics.cls = (this.metrics.cls || 0) + entry.value;
|
||||
console.log('[Performance] CLS cumulé:', this.metrics.cls.toFixed(4));
|
||||
//console.log('[Performance] CLS cumulé:', this.metrics.cls.toFixed(4));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -1083,11 +1083,11 @@ class PerformanceManager {
|
|||
document.querySelectorAll('img[loading="lazy"]').forEach(img => {
|
||||
img.addEventListener('load', () => {
|
||||
img.classList.add('loaded');
|
||||
console.log('[Performance] Image chargée:', img.src);
|
||||
//console.log('[Performance] Image chargée:', img.src);
|
||||
});
|
||||
|
||||
img.addEventListener('error', () => {
|
||||
console.warn('[Performance] Erreur de chargement image:', img.src);
|
||||
//console.warn('[Performance] Erreur de chargement image:', img.src);
|
||||
});
|
||||
});
|
||||
} else {
|
||||
|
|
@ -1212,7 +1212,7 @@ class LanguageManager {
|
|||
this.detectCurrentLanguage();
|
||||
this.updateLanguageTexts();
|
||||
|
||||
console.log('[Language] Gestionnaire de langue initialisé:', this.currentLang);
|
||||
//console.log('[Language] Gestionnaire de langue initialisé:', this.currentLang);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1258,7 +1258,7 @@ class LanguageManager {
|
|||
// Rediriger vers la page de connexion avec le nouveau paramètre de langue
|
||||
const redirectUrl = window.appConfig?.racineWeb +
|
||||
'Connexion/index?langue=' + newLang;
|
||||
console.log('[Language] Changement de langue vers:', newLang);
|
||||
//console.log('[Language] Changement de langue vers:', newLang);
|
||||
window.location.href = redirectUrl;
|
||||
}
|
||||
});
|
||||
|
|
@ -1298,11 +1298,11 @@ class LanguageManager {
|
|||
* Point d'entrée principal de l'application
|
||||
*/
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
console.log('[App] DOM chargé, initialisation de l\'application...');
|
||||
//console.log('[App] DOM chargé, initialisation de l\'application...');
|
||||
|
||||
// Vérifier que la configuration est disponible
|
||||
if (!window.appConfig) {
|
||||
console.warn('[App] Configuration non trouvée, création par défaut...');
|
||||
//console.warn('[App] Configuration non trouvée, création par défaut...');
|
||||
window.appConfig = {
|
||||
activeParentId: '',
|
||||
activeChildId: '',
|
||||
|
|
@ -1320,7 +1320,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||
// Marquer le chargement comme terminé
|
||||
setTimeout(() => {
|
||||
document.body.classList.add('loaded');
|
||||
console.log('[App] Portail RH Inter Santé initialisé avec succès');
|
||||
//console.log('[App] Portail RH Inter Santé initialisé avec succès');
|
||||
|
||||
// Émettre un événement personnalisé
|
||||
document.dispatchEvent(new CustomEvent('app:initialized'));
|
||||
|
|
@ -1414,11 +1414,11 @@ window.uxManager = {
|
|||
*/
|
||||
testSystem: () => {
|
||||
if (window.appConfig?.debugMode) {
|
||||
console.group('[UX Manager] Test du système');
|
||||
/*console.group('[UX Manager] Test du système');
|
||||
console.log('App UX:', window.appUX);
|
||||
console.log('Navigation:', window.appUX?.navigation);
|
||||
console.log('Config:', window.appConfig);
|
||||
console.groupEnd();
|
||||
console.groupEnd();*/
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
@ -1440,4 +1440,4 @@ export {
|
|||
};
|
||||
*/
|
||||
|
||||
console.log('[UX Manager] Module chargé et prêt à l\'emploi');
|
||||
//console.log('[UX Manager] Module chargé et prêt à l\'emploi');
|
||||
|
|
@ -65,15 +65,15 @@
|
|||
// ============================================
|
||||
|
||||
function handleRegistrationError(error) {
|
||||
console.error('Erreur d\'enregistrement du Service Worker:', error);
|
||||
//console.error('Erreur d\'enregistrement du Service Worker:', error);
|
||||
|
||||
// Suggestions de dépannage basées sur l'erreur
|
||||
if (error.name === 'SecurityError') {
|
||||
console.warn('⚠️ Vérifiez que vous êtes en HTTPS');
|
||||
//console.warn('⚠️ Vérifiez que vous êtes en HTTPS');
|
||||
} else if (error.name === 'TypeError') {
|
||||
console.warn('⚠️ Vérifiez le chemin du Service Worker');
|
||||
//console.warn('⚠️ Vérifiez le chemin du Service Worker');
|
||||
} else if (error.message.includes('MIME type')) {
|
||||
console.warn('⚠️ Vérifiez l\'en-tête Content-Type du Service Worker');
|
||||
//console.warn('⚠️ Vérifiez l\'en-tête Content-Type du Service Worker');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -382,7 +382,7 @@
|
|||
|
||||
function log(message, ...args) {
|
||||
if (DEBUG) {
|
||||
console.log('[SW Register]', message, ...args);
|
||||
//console.log('[SW Register]', message, ...args);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -417,7 +417,7 @@
|
|||
|
||||
window.addEventListener('error', function(event) {
|
||||
if (event.message && event.message.includes('ServiceWorker')) {
|
||||
console.error('Erreur Service Worker:', event.error);
|
||||
//console.error('Erreur Service Worker:', event.error);
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -608,10 +608,10 @@ $activeChildId = $menuData['child'];
|
|||
<?php endif; ?>
|
||||
|
||||
<!-- UX Enhancement Script -->
|
||||
<script src="/Bootstrap_new/js/ux-manager.js?ver=2025.12.23.01"></script>
|
||||
<script src="/Bootstrap_new/js/ux-manager.js?ver=2025.12.31.00"></script>
|
||||
|
||||
<!-- Service Worker Registration -->
|
||||
<script src="/Js/sw-register.js?ver=2025.12.26.01"></script>
|
||||
<script src="/Js/sw-register.js?ver=2025.12.31.00"></script>
|
||||
|
||||
|
||||
<script>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user