/**
* =========================================================================
* PLATEFORME ECO-PANNEAU.FR - VERSION 1.0.0
* Interface Administrateur - Routeur Principal
* =========================================================================
*/
window.AdminView = ({ data, refreshData, showToast }) => {
const { useState, useEffect } = React;
const [activeTab, setActiveTab] = useState('dashboard');
// Navigation automatique via URL (Paramètre chat_id)
useEffect(() => {
const urlParams = new URLSearchParams(window.location.search);
if (urlParams.get('chat_id')) {
setActiveTab('messages');
}
}, []);
// Calcul asynchrone et sécurisé des pastilles de notification (badges)
const unseenPanels = (data.panneaux || []).filter(p => !p.admin_seen && p.id !== 'demo-panneau').length;
const unreadMessages = (data.interactions || []).filter(m => m.target === 'Admin' && !m.resolved).length;
const pendingShipping = (data.panneaux || []).filter(p => p.physicalPanels > 0 && p.id !== 'demo-panneau' && p.shipping_status === "Attente d'impression").length;
// Définition de la barre de navigation (Appel direct aux composants window.* pour éviter l'undefined mapping)
const navItems = [
{ id: 'dashboard', label: 'Tableau de bord', icon: },
{ id: 'panneaux', label: 'Parc panneaux', icon: , badge: unseenPanels },
{ id: 'logistique', label: 'Logistique (A1)', icon: , badge: pendingShipping },
{ id: 'clients', label: 'Clients & Accès', icon: },
{ id: 'factures', label: 'Facturation', icon: },
{ id: 'messages', label: 'Messagerie', icon: , badge: unreadMessages },
{ id: 'systeme', label: 'Paramètres système', icon: }
];
const handleLogout = async () => {
await fetch('?logout=1');
window.location.reload();
};
// Aiguillage des vues scindées (Appel direct des balises XML plutôt que par variables intermédiaires)
const renderContent = () => {
switch(activeTab) {
case 'dashboard':
return ;
case 'panneaux':
return ;
case 'logistique':
return ;
case 'clients':
return ;
case 'factures':
return ;
case 'messages':
return ;
case 'systeme':
return ;
default:
return ;
}
};
return (
{renderContent()}
);
};
/*
EOF ========== [_www/_react/_admin.jsx]
*/