mirror of https://gitlab.com/m3f_usm/cms-sveltekit
lectura de informacion, se realiza cada 30 segundos parametrizado
parent
dc1caf47f7
commit
6b96f99718
|
@ -77,10 +77,10 @@
|
||||||
|
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
h1, h2 {
|
h2 {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
h1,h2, h3 {
|
h2, h3 {
|
||||||
color: #001b3b;
|
color: #001b3b;
|
||||||
text-rendering: geometricPrecision;
|
text-rendering: geometricPrecision;
|
||||||
text-wrap: balance;
|
text-wrap: balance;
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { json } from '@sveltejs/kit';
|
||||||
|
|
||||||
|
|
||||||
const {
|
const {
|
||||||
VITE_TRANSPORTE_API: base,
|
VITE_TRANSPORTE_API: base,
|
||||||
|
@ -5,32 +7,31 @@ const {
|
||||||
VITE_TRANSPORTE_PASS: password
|
VITE_TRANSPORTE_PASS: password
|
||||||
} = import.meta.env;
|
} = import.meta.env;
|
||||||
|
|
||||||
let intentos = 0;
|
export async function GET({ url }) {
|
||||||
|
const id = url.searchParams.get('id');
|
||||||
export async function load({ url }) {
|
|
||||||
const id = url.searchParams.get('id');
|
|
||||||
|
|
||||||
if (!id) return null;
|
if (!id) return null;
|
||||||
return await tryFetch(id)
|
const data = await tryFetch(id)
|
||||||
|
return json(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function sleep(seconds) {
|
function sleep(seconds) {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
setTimeout(() => { resolve() }, seconds * 1000)
|
setTimeout(() => { resolve() }, seconds * 1000)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
async function tryFetch(id) {
|
async function tryFetch(id, intentos = 0) {
|
||||||
try {
|
try {
|
||||||
const token = await getToken() // token de autorizacion
|
const token = await getToken() // token de autorizacion
|
||||||
const data = await fetchParadero(id, token) // data de dispositivo
|
const data = await fetchParadero(id, token) // data de dispositivo
|
||||||
intentos = 0;
|
|
||||||
return data;
|
return data;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (intentos < 3) {
|
if (intentos < 3) {
|
||||||
intentos++;
|
console.log('Reintento', intentos + 1)
|
||||||
await sleep(2); // espera 2 segundos
|
await sleep(2); // espera 2 segundos
|
||||||
return await tryFetch(id)
|
return await tryFetch(id, intentos + 1)
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -43,13 +44,11 @@ async function getToken() {
|
||||||
body: JSON.stringify({ rut: user, password })
|
body: JSON.stringify({ rut: user, password })
|
||||||
})
|
})
|
||||||
if (!res.ok) throw await res.text()
|
if (!res.ok) throw await res.text()
|
||||||
|
|
||||||
const { token } = await res.json()
|
const { token } = await res.json()
|
||||||
|
|
||||||
// console.log({ base })
|
|
||||||
return token;
|
return token;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log('token',{ error })
|
console.log('token',{ error })
|
||||||
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,5 +72,6 @@ async function fetchParadero(id, token) {
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log('paradero',{ error })
|
console.log('paradero',{ error })
|
||||||
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,41 +1,54 @@
|
||||||
<script>
|
<script>
|
||||||
import ImagenBus from "$lib/images/logo-autobus.png";
|
import ImagenBus from "$lib/images/logo-autobus.png";
|
||||||
|
import { onMount } from "svelte";
|
||||||
|
const { VITE_REFRESH_DATA: segundosRefresca } = import.meta.env || {};
|
||||||
|
|
||||||
export let data;
|
// export let data;
|
||||||
|
let nombreParadero = null;
|
||||||
|
let paraderoData = null;
|
||||||
|
let timeRefresh = null
|
||||||
|
|
||||||
const { NombreParadero: nombreParadero = null, ...paraderoData } = data?.GetInfoDeviceResponse || {};
|
onMount(() => {
|
||||||
|
const url = new URL(document.location.href)
|
||||||
|
const id = url.searchParams.get('id');
|
||||||
|
init({ id, origin: url.origin })
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
console.log('unmount')
|
||||||
|
timeRefresh && clearTimeout(timeRefresh)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
const colores = [
|
|
||||||
"#5fbabe",
|
|
||||||
"#f05eb1",
|
|
||||||
"#5fab88",
|
|
||||||
"#f7646c",
|
|
||||||
"#5e66b5",
|
|
||||||
"#73776e",
|
|
||||||
];
|
|
||||||
|
|
||||||
function getColorAleatorio(index) {
|
async function init({ id, origin }) {
|
||||||
return colores[index % 6];
|
const result = await fetchData(`${origin}/api/paradero?id=${id}`);
|
||||||
|
nombreParadero = result.GetInfoDeviceResponse.NombreParadero;
|
||||||
|
paraderoData = result.GetInfoDeviceResponse;
|
||||||
|
|
||||||
|
timeRefresh = setTimeout(() => init({ id, origin }), +segundosRefresca * 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatTimeMinutes({ EstimadaGPS: horaPlanificada, patente }) {
|
|
||||||
// const diferenciaMinutos = calcularDiferenciaMinutos(horaPlanificada);
|
|
||||||
const horaActual = new Date();
|
|
||||||
const horaUtc = horaActual.toISOString().substring(0, 10) + "T" + horaPlanificada + "Z";
|
|
||||||
const horaTrayecto = new Date(horaUtc);
|
|
||||||
const diferenciaMinutos = (horaTrayecto.getTime() - horaActual.getTime()) / (1000 * 60);
|
|
||||||
|
|
||||||
if (diferenciaMinutos <= 3) {
|
async function fetchData(url) {
|
||||||
return "< a 3 Minutos";
|
try {
|
||||||
} else if (diferenciaMinutos <= 5) {
|
const res = await fetch(url);
|
||||||
return "3-5 Minutos";
|
if (!res.ok) throw await res.text()
|
||||||
} else if (diferenciaMinutos <= 10) {
|
return await res.json()
|
||||||
return "Menos de 10 minutos";
|
} catch (error) {
|
||||||
} else {
|
console.log({ error })
|
||||||
return "Más de 10 minutos";
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// const colores = [
|
||||||
|
// "#5fbabe",
|
||||||
|
// "#f05eb1",
|
||||||
|
// "#5fab88",
|
||||||
|
// "#f7646c",
|
||||||
|
// "#5e66b5",
|
||||||
|
// "#73776e",
|
||||||
|
// ];
|
||||||
|
|
||||||
function LetraoNumeroMicro(cadena, flag) {
|
function LetraoNumeroMicro(cadena, flag) {
|
||||||
if (!cadena || (flag !== 0 && flag !== 1)) {
|
if (!cadena || (flag !== 0 && flag !== 1)) {
|
||||||
return "Error: Entrada no válida";
|
return "Error: Entrada no válida";
|
||||||
|
|
Loading…
Reference in New Issue