import { For, createMemo, createSignal } from "solid-js"; import { FilledButton } from "../components/FilledButton"; import { FilledCard } from "../components/FilledCard"; import { LoadingIcon } from "../icons/LoadingIcon"; import { MagnifyingGlassIcon } from "../icons/MagnifyingGlassIcon"; import { LoadingStatus, useLoading } from "../utils/functions"; import { PDFIcon } from "../icons/PDFIcon"; /** * Represents the data about the scans that were detected. * Serialization & Deserialization is done by the backend. */ interface ScanData { Ok: Array<[string, ScanResult]>, } type ScanResult = | {Full: [string, number, string]} | {Partial: [string, string]} | {Error: string}; function dataFromScanResult(result: ScanResult) { if ("Full" in result) { return `DNI: ${result.Full[0]}, iid: ${result.Full[1]}`; } else if ("Partial" in result) { return `DNI: ${result.Partial}`; } else if ("Error" in result) { return `Error: ${result.Error}`; } } export function Scans() { const {status, setStatus, error, setError} = useLoading(); const [scanData, setScanData] = createSignal(null); const loading = createMemo(() => status() === LoadingStatus.Loading); const detectScans = () => { setStatus(LoadingStatus.Loading); setScanData(null); fetch(`${import.meta.env.VITE_BACKEND_URL}/api/scans/detect`) .then((res) => res.json()) .then((data) => { setStatus(LoadingStatus.Ok); setScanData(data); }) .catch((err) => { setStatus(LoadingStatus.Error); console.error(err); }); }; const convertScans = () => { setStatus(LoadingStatus.Loading); if (scanData() === null) { setError("No se detectaron escaneos"); setStatus(LoadingStatus.Error); return; } fetch( `${import.meta.env.VITE_BACKEND_URL}/api/scans/convert`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(scanData()), }, ) .then((res) => res.json()) .then((res) => { setStatus(LoadingStatus.Ok); console.log(res); }) .catch((err) => { setStatus(LoadingStatus.Error); console.error(err); }); }; return (

Parámetros de detección

Para que el sistema detecte y clasifique automáticamente los escaneos se debe cumplir lo siguiente:
  1. Escanear el certificado en formato  jpg
  2. El nombre del archivo debe iniciar con  eeg
  3. El nombre del archivo debe terminar en  .jpg
  4. El nombre del archivo puede tener otras letras en medio, siempre que se cumplan las condiciones anteriores.
Por ejemplo, los siguientes nombres de archivo son válidos:
  • eeg.jpg
  • eeg0001.jpg
  • eeg archivo con letras en medio.jpg

Detectar escaneos

El siguiente botón detectará los archivos que cumplen con los parámetros de detección en la carpeta ESCANEOS, y los mostrará en una lista.

La detección demora aprox. 1 segundo por cada archivo que cumple con los parámetros.

Si la detección demora más de 90 segundos, se cancelará.

Detectar escaneos

Escaneos detectados

{([path, result]) => (

{path.substring(path.lastIndexOf("/") + 1)}
{dataFromScanResult(result)}

)}

- Al convertir los escaneos a PDF se eliminan los archivos JPG.
- Solo se convertiran los escaneos mostrados en esta lista.
- Si ejecutas la detección de escaneos nuevamente los nombres de los archivos cambiarán. Esto es normal. El contenido de los JPG es el mismo.

Convertir escaneos
); }