Skip to content

Commit 69274f9

Browse files
Prestamos por dispositivos parte 1
1 parent e13c36f commit 69274f9

File tree

4 files changed

+38
-10
lines changed

4 files changed

+38
-10
lines changed

src/App.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ const NAV: MenuItem[] = [
9191
{ id: "anuncios", label: "Anuncios", to: <CrearAnuncio />, roles: ["Administrador", "Tecnico"], icon: <img src={newsIcon} className="sb-icon" /> },
9292
{ id: "plantillas", label: "Plantillas", icon: <img src={templateIcon} className="sb-icon" />, to: <CrearPlantilla />, roles: ["Administrador", "Tecnico", "Listo"] },
9393
{ id: "usuarios", label: "Usuarios", icon: <img src={usersIcon} className="sb-icon" />, to: <UsuariosPanel />, roles: ["Administrador"] },
94-
// { id: "acceso", label: "Acceso", to: <UsuariosApp />, roles: ["Administrador", "Tecnico"] },
9594
{ id: "tips", label: "Tips", icon: <img src={infoIcon} className="sb-icon" />, to: <AnnouncementsTable />, roles: ["Administrador", "Tecnico", "Listo"] },
9695
],
9796
},

src/Funcionalidades/prestamos.ts

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import type { FlowToUser } from "../Models/FlujosPA";
99

1010
export function usePrestamos() {
1111
const {prestamos, Tickets, Logs} = useGraphServices()
12+
const {dispositivosById} = useDispositivos()
1213
const [rows, setRows] = React.useState<prestamos[]>([]);
1314
const [loading, setLoading] = React.useState(false);
1415
const [submitting, setSubmitting] = React.useState(false);
@@ -20,19 +21,17 @@ export function usePrestamos() {
2021
const [errors, setErrors] = React.useState<prestamosErrors>({});
2122
const {account} = useAuth()
2223
const notifyFlow = new FlowClient("https://defaultcd48ecd97e154f4b97d9ec813ee42b.2c.environment.api.powerplatform.com:443/powerautomate/automations/direct/workflows/a21d66d127ff43d7a940369623f0b27d/triggers/manual/paths/invoke?api-version=1&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=0ptZLGTXbYtVNKdmIvLdYPhw1Wcqb869N3AOZUf2OH4")
23-
24+
2425
const buildFilter = React.useCallback((): GetAllOpts => {
2526
const filters: string[] = [];
2627

2728
if(estado && estado !== "all") filters.push(`fields/Estado eq '${estado}'`);
28-
if(search) filters.push(`startswith(fields/Title, '${search}')`);
29-
3029

3130
return {
3231
filter: filters.join(" and "),
3332
orderby: "fields/Created asc",
3433
};
35-
}, [estado, search]);
34+
}, [estado,]);
3635

3736
const validate = () => {
3837
const e: prestamosErrors = {};
@@ -167,8 +166,29 @@ export function usePrestamos() {
167166
}
168167
}
169168

169+
const visibleRows = React.useMemo(() => {
170+
const q = search.trim().toLowerCase();
171+
if (!q || q.length < 3) return rows;
172+
173+
return rows.filter(p => {
174+
const d = dispositivosById.get(p.Id_dispositivo);
175+
176+
return (
177+
p.Title?.toLowerCase().includes(q) ||
178+
p.nombreSolicitante?.toLowerCase().includes(q) ||
179+
(d?.Referencia ?? "").toLowerCase().includes(q) ||
180+
(d?.Serial ?? "").toLowerCase().includes(q) ||
181+
(d?.Title)?.toLowerCase().includes(q)
182+
);
183+
});
184+
}, [rows, search, dispositivosById]);
185+
186+
187+
React.useEffect(() => { load(); }, [load]);
188+
189+
170190
return {
171-
rows, loading, error, load, reload, estado, setEstado, search, setSearch, handleSubmit, errors, submitting, setField, state, notify, finalizeLoan, notifyEstado
191+
visibleRows, rows, loading, error, load, reload, estado, setEstado, search, setSearch, handleSubmit, errors, submitting, setField, state, notify, finalizeLoan, notifyEstado
172192
};
173193
}
174194

@@ -313,8 +333,17 @@ export function useDispositivos() {
313333
load();
314334
}, [load]);
315335

336+
React.useEffect(() => { load(); }, [load]);
337+
338+
339+
const dispositivosById = React.useMemo(() => {
340+
const m = new Map<string, dispositivos>();
341+
for (const d of rows) m.set(d?.Id ?? "", d);
342+
return m;
343+
}, [rows]);
344+
316345
return {
317-
rows, loading, error, load, reload, estado, setEstado, search, setSearch, handleSubmit, errors, state, setState, submitting, setField, borrowDevice, deviceReturn, editDevice
346+
dispositivosById, rows, loading, error, load, reload, estado, setEstado, search, setSearch, handleSubmit, errors, state, setState, submitting, setField, borrowDevice, deviceReturn, editDevice
318347
};
319348
}
320349

src/components/Loans/PretamosPage.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export function deviceStatusTone(s: string): Tone {
2323

2424
export function PrestamosPage() {
2525
const [activeTab, setActiveTab] = React.useState<PrestamosTabKey>("historial");
26-
const {notify, rows, estado, setEstado, search, setSearch, handleSubmit, state, setField, load: loadPrestamos, finalizeLoan: Terminar, notifyEstado } = usePrestamos()
26+
const {notify, visibleRows, estado, setEstado, search, setSearch, handleSubmit, state, setField, load: loadPrestamos, finalizeLoan: Terminar, notifyEstado } = usePrestamos()
2727
const {setState, deviceReturn, borrowDevice, load, setField: setFieldDispositivos, handleSubmit: crearDispositivo, rows: dispositivosRows, search: dispositivosSearch, setSearch: setDispositivosSearch, state: dispositivosState, editDevice } = useDispositivos()
2828
const {handleSubmit: createTest, editTest, createAllPruebas, loadAllPruebas, pruebasRows, state: pruebasState, setField: setFieldPruebas, setState: setPruebasState} = usePruebas()
2929

@@ -73,7 +73,7 @@ export function PrestamosPage() {
7373
<Tabs value={activeTab} onChange={setActiveTab} items={[{ key: "historial", label: "Historial" }, { key: "inventario", label: "Inventario" }, { key: "pruebas", label: "Pruebas" }]}/>
7474

7575
{activeTab === "historial" && (
76-
<LoanHistorySection rows={rows} query={search} statusFilter={estado} onQueryChange={setSearch} onStatusFilterChange={setEstado} dispositivos={dispositivosRows} onCreateLoan={createLoan} state={state} setField={setField} onFinalizeLoan={finalizeLoan}/>
76+
<LoanHistorySection rows={visibleRows} query={search} statusFilter={estado} onQueryChange={setSearch} onStatusFilterChange={setEstado} dispositivos={dispositivosRows} onCreateLoan={createLoan} state={state} setField={setField} onFinalizeLoan={finalizeLoan}/>
7777
)}
7878

7979
{activeTab === "inventario" && (

src/components/Loans/Secciones.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ export function LoanHistorySection({onFinalizeLoan, setField, state, rows, query
143143
</td>
144144

145145
<td>
146-
<div className="pl-cellMain">{device?.Title ?? "Equipo no encontrado"}</div>
146+
<div className="pl-cellMain">{device?.Title} {device?.Referencia}</div>
147147
<div className="pl-cellSub pl-mono">{device?.Serial ?? "—"}</div>
148148
</td>
149149

0 commit comments

Comments
 (0)