import React, { useState,useEffect } from "react"; import Sidebar from "./sidebar.jsx"; import { RadioTower, ArrowRight, BadgePlus, Settings } from "lucide-react"; 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 [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([ { id: 101, nom: "Objet A", description: "Description A", type: "Type A", localisation: "Localisation A", proprietaire: "Propriétaire A", status: "active", }, { id: 102, nom: "Objet B", description: "Description B", type: "Type B", localisation: "Localisation B", proprietaire: "Propriétaire B", status: "inactive", }, { id: 103, nom: "Objet C", description: "Description C", type: "Type C", localisation: "Localisation C", proprietaire: "Propriétaire C", status: "active", }, ]); 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 (

Dashboard

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

Résumé du tableau de bord

Total Utilisateur

{users.length}

Dernier Log

{logs.length > 0 ? (

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

) : (

Aucun log

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

Gestion des Utilisateurs

{users.slice(0, 5).map((user) => ( ))} {users.length === 0 && ( )}
Username Email Access
{user.pseudo} {user.email} {user.role}
Aucun utilisateur disponible
)} {widget.type === "objects" && ( )} {widget.type === "adminobjet" && (

Liste des Objets et Outils/Services

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

    {obj.type}

    {obj.status}

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

Rapports et Statistiques

Générer des rapports d'utilisation :

Consommation énergétique totale

1372 kWh cumulés (estimation)

Taux de connexion des utilisateurs

87% des utilisateurs actifs ce mois-ci

Services les plus utilisés

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

Choisir un type de widget

)}
); } export default Dashboard;