import React, { useState, useEffect } from "react"; import Sidebar from "./sidebar.jsx"; import { RadioTower,Minus, ArrowRight, BadgePlus, Settings } from "lucide-react"; import { useTranslation } from "react-i18next"; import { API_BASE_URL } from "../../config.js"; import axios from "axios"; const exportCSV = () => { const headers = ["Catégorie", "Valeur"]; const rows = [ ["Consommation énergétique", "1372 kWh"], ["Taux de connexion", "87%"], ["Service", "Consultation des données météo"], ["Service", "Alertes et suivi de consommation"], ["Service", "Ajout d'objets connectés"], ]; const csvContent = "\uFEFF" + [headers, ...rows] .map((row) => row.map((val) => `"${val.replace(/"/g, '""')}"`).join(",")) .join("\n"); const blob = new Blob([csvContent], { type: "text/csv;charset=utf-8;", }); const link = document.createElement("a"); link.href = URL.createObjectURL(blob); link.setAttribute("download", "rapport_plateforme.csv"); document.body.appendChild(link); link.click(); document.body.removeChild(link); }; const initialWidgets = [ { id: 1, type: "summary" }, { id: 2, type: "users" }, { id: 3, type: "reporting" }, { id: 4, type: "adminobjet" }, { id: 5, type: "objects" }, ]; function Dashboard() { const { t } = useTranslation(); const [users, setUsers] = useState([]); const [logs, setLogs] = useState([ { id: 1, username: "complexe", action: "Accès attribué", timestamp: new Date().toLocaleString(), }, { id: 2, username: "admin", action: "Accès attribué", timestamp: new Date().toLocaleString(), }, ]); useEffect(() => { axios.get(`${API_BASE_URL}/users`).then((response) => { setUsers(response.data); }); axios.get(`${API_BASE_URL}/objets`).then((response) => { setAdminObjects(response.data); }); }, []); const [adminObjects, setAdminObjects] = useState([]); const [manageMode, setManageMode] = useState(false); const [widgets, setWidgets] = useState(initialWidgets); const [showAddWidgetModal, setShowAddWidgetModal] = useState(false); const handleDeleteWidget = (id) => { setWidgets(widgets.filter((widget) => widget.id !== id)); }; const openAddWidgetModal = () => { setShowAddWidgetModal(true); }; const handleWidgetSelection = (widgetType) => { const newWidget = { id: Date.now(), type: widgetType }; setWidgets([...widgets, newWidget]); setShowAddWidgetModal(false); }; return (

{t('admin.dashboard.title')}

{widgets.map((widget) => (
{manageMode && ( )} {widget.type === "summary" && (

{t('admin.dashboard.summary')}

{t('admin.dashboard.totalUsers')}

{users.length}

{t('admin.dashboard.lastLog')}

{logs.length > 0 ? (

{logs[logs.length - 1].username} -{" "} {logs[logs.length - 1].action}

) : (

{t('admin.dashboard.noLog')}

)}
)} {widget.type === "users" && (

{t('admin.dashboard.usersList')}

{users.slice(0, 5).map((user) => ( ))} {users.length === 0 && ( )}
{t('admin.dashboard.username')} {t('admin.dashboard.email')} {t('admin.dashboard.access')}
{user.pseudo} {user.email} {user.role}
{t('admin.dashboard.noUser')}
)} {widget.type === "objects" && ( )} {widget.type === "adminobjet" && (

{t('admin.dashboard.objectsList')}

    {adminObjects.slice(0, 2).map((obj) => (
  • {obj.name}

    {obj.type}

    {obj.status}

  • ))}
)} {widget.type === "requestObject" && (

{t('admin.dashboard.requestDelete')}

{t('admin.dashboard.generateReports')}

)} {widget.type === "reporting" && (

{t('admin.dashboard.reportsStats')}

{t('admin.dashboard.generateReports')}

{t('admin.dashboard.energyConsumption')}

{t('admin.dashboard.energyConsumptionDesc')}

{t('admin.dashboard.connectionRate')}

{t('admin.dashboard.connectionRateDesc')}

{t('admin.dashboard.mostUsedServices')}

  • Consultation des données météo
  • Alertes et suivi de consommation
  • Ajout d'objets connectés
)}
))}
{showAddWidgetModal && (

{t('admin.dashboard.chooseWidget')}

)}
); } export default Dashboard;