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
|
Username
|
Email
|
Access
|
{users.slice(0, 5).map((user) => (
|
{user.pseudo}
|
{user.email}
|
{user.role}
|
))}
{users.length === 0 && (
|
Aucun utilisateur disponible
|
)}
)}
{widget.type === "objects" && (
Gestion des Objets Connectés
)}
{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;