diff --git a/src/pages/concentrators/ConcentratorsSidebar.tsx b/src/pages/concentrators/ConcentratorsSidebar.tsx index e956e2d..aadd7b7 100644 --- a/src/pages/concentrators/ConcentratorsSidebar.tsx +++ b/src/pages/concentrators/ConcentratorsSidebar.tsx @@ -65,8 +65,6 @@ export default function ConcentratorsSidebar({

Proyectos

- Tipo: {sampleViewLabel} - {" • "} Seleccionado:{" "} {projects.find((p) => p.id === selectedProject)?.name || "—"} @@ -142,10 +140,8 @@ export default function ConcentratorsSidebar({ ) : projects.length === 0 ? (

{selectedMeterTypeId - ? `No hay proyectos con el tipo de toma seleccionado y concentradores ${sampleViewLabel}.` - : sampleView === "GENERAL" - ? "No hay proyectos con concentradores disponibles." - : `No hay proyectos con concentradores ${sampleViewLabel}.` + ? `No hay proyectos con el tipo de toma seleccionado.` + : "No hay proyectos disponibles." }
) : ( diff --git a/src/pages/concentrators/useConcentrators.ts b/src/pages/concentrators/useConcentrators.ts index cdf30fd..cd18897 100644 --- a/src/pages/concentrators/useConcentrators.ts +++ b/src/pages/concentrators/useConcentrators.ts @@ -183,11 +183,6 @@ export function useConcentrators() { let filteredProjects = visibleProjects; - filteredProjects = filteredProjects.filter((projectId) => { - const count = counts[projectId] ?? 0; - return count > 0; - }); - if (selectedMeterTypeId) { filteredProjects = filteredProjects.filter((projectId) => { const project = projects.find((p) => p.id === projectId); diff --git a/src/pages/consumption/ConsumptionPage.tsx b/src/pages/consumption/ConsumptionPage.tsx index cf32148..a0ce67d 100644 --- a/src/pages/consumption/ConsumptionPage.tsx +++ b/src/pages/consumption/ConsumptionPage.tsx @@ -22,9 +22,14 @@ import { type Pagination, } from "../../api/readings"; import { fetchProjects, type Project } from "../../api/projects"; +import { getCurrentUserRole, getCurrentUserProjectId } from "../../api/auth"; import ReadingsBulkUploadModal from "./ReadingsBulkUploadModal"; export default function ConsumptionPage() { + const userRole = useMemo(() => getCurrentUserRole(), []); + const userProjectId = useMemo(() => getCurrentUserProjectId(), []); + const isOperator = userRole?.toUpperCase() === 'OPERATOR'; + const [readings, setReadings] = useState([]); const [summary, setSummary] = useState(null); const [projects, setProjects] = useState([]); @@ -49,12 +54,23 @@ export default function ConsumptionPage() { const loadProjects = async () => { try { const data = await fetchProjects(); - setProjects(data); + + let visibleProjects = data; + if (isOperator && userProjectId) { + visibleProjects = data.filter(p => p.id === userProjectId); + + if (visibleProjects.length > 0) { + setSelectedProject(visibleProjects[0].id); + } + } + + setProjects(visibleProjects); } catch (error) { console.error("Error loading projects:", error); } }; loadProjects(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const loadData = async (page = 1) => { @@ -167,7 +183,9 @@ export default function ConsumptionPage() { }; const clearFilters = () => { - setSelectedProject(""); + if (!isOperator) { + setSelectedProject(""); + } setStartDate(""); setEndDate(""); setSearch(""); @@ -342,8 +360,9 @@ export default function ConsumptionPage() { value={selectedProject} onChange={(e) => setSelectedProject(e.target.value)} className="px-3 py-1.5 text-sm bg-white border border-slate-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500/20" + disabled={isOperator} > - + {!isOperator && } {projects.map((p) => (