diff --git a/frontend/src/certs/Registers/RegisterSidebar.tsx b/frontend/src/certs/Registers/RegisterSidebar.tsx new file mode 100644 index 0000000..f81be76 --- /dev/null +++ b/frontend/src/certs/Registers/RegisterSidebar.tsx @@ -0,0 +1,59 @@ +import { Register } from "../../types/Register"; +import { formatDate } from "../../utils/functions"; + +export function RegisterSidebar(props: {register: Register, close: () => void, onDelete: () => void}) { + const deleteRegister = async() => { + + const res = await fetch(`${import.meta.env.VITE_BACKEND_URL}/api/register/${props.register.register_id}`,{ + method: "DELETE", + }); + + if (res.ok) { + props.onDelete(); + props.close(); + } + }; + + return ( +
+

Detalles del certificado

+ +

Curso

+

Matpel 2

+ +

Código del certificado

+

{props.register.register_code}

+ +

Fecha de creación

+

{formatDate(props.register.register_creation_date)}

+ +

Fecha del certificado

+

{formatDate(props.register.register_display_date)}

+ +

Denominacion

+

{props.register.register_custom_label}

+ +

¿Es cert. sin firmas?

+

{props.register.register_is_preview ? "Si" : "No"}

+ + + +
+ ); +} diff --git a/frontend/src/certs/Registers/index.tsx b/frontend/src/certs/Registers/index.tsx index 703060d..222c9ba 100644 --- a/frontend/src/certs/Registers/index.tsx +++ b/frontend/src/certs/Registers/index.tsx @@ -5,10 +5,22 @@ import { Register } from "../../types/Register"; import { courseMap } from "../../utils/allCourses"; import { certGenerator } from "../../certGenerator"; import { CaretRight } from "../../icons/CaretRight"; +import { RegisterSidebar } from "./RegisterSidebar"; export function Registers(props: {person: Person | null, count: number}) { const [registers, setRegisters] = createSignal>([]); const [showHidden, setShowHidden] = createSignal(false); + const [sidebarRegister, setSidebarRegister] = createSignal(null); + + const loadRegisters = async() => { + const person = props.person!; + + const res = await fetch(`${import.meta.env.VITE_BACKEND_URL}/api/register/${person.person_dni}`); + if (res.ok) { + const data = await res.json(); + setRegisters(data); + } + }; createEffect(async() => { // eslint-disable-next-line @typescript-eslint/no-unused-vars @@ -19,13 +31,7 @@ export function Registers(props: {person: Person | null, count: number}) { return; } - const person = props.person; - - const res = await fetch(`${import.meta.env.VITE_BACKEND_URL}/api/register/${person.person_dni}`); - if (res.ok) { - const data = await res.json(); - setRegisters(data); - } + loadRegisters(); }); // All registers sorted by year, and an indicator of whether there's register older @@ -68,7 +74,7 @@ export function Registers(props: {person: Person | null, count: number}) { const inputCheck = () => setShowHidden((x) => !x); return ( -
+

{props.person?.person_names}  {props.person?.person_paternal_surname}  @@ -76,10 +82,10 @@ export function Registers(props: {person: Person | null, count: number}) {    | - - + + +

@@ -87,16 +93,30 @@ export function Registers(props: {person: Person | null, count: number}) { {(year) => (
- {(register) => } + {(register) => ( + setSidebarRegister(register)} + /> + )}
)} + + + setSidebarRegister(null)} + onDelete={loadRegisters} + /> +
); } -function RegisterEl(props: {register: Register, person: Person}) { +function RegisterEl(props: {register: Register, person: Person, onClick: () => void}) { const dateComponents = () => { const [, year, month, day] = /(\d{4})-(\d{2})-(\d{2})/.exec(props.register.register_display_date) ?? []; @@ -172,6 +192,7 @@ function RegisterEl(props: {register: Register, person: Person}) { diff --git a/frontend/src/utils/functions.ts b/frontend/src/utils/functions.ts new file mode 100644 index 0000000..e7df087 --- /dev/null +++ b/frontend/src/utils/functions.ts @@ -0,0 +1,7 @@ + + +// YYYY-MM-DD to DD/MM/YYYY +export function formatDate(date: string): string { + const [year, month, day] = date.split("-"); + return `${day}/${month}/${year}`; +}