app Carga GTFS - Subir archivo

francisco/photos
Ronald Morales 2024-02-01 03:18:59 -03:00
parent c03076a58b
commit b439ce5b4a
4 changed files with 40 additions and 15 deletions

View File

@ -1,13 +1,12 @@
<script>
import Paginate from "$/components/Paginate.svelte";
import { getGtfsArchivo,getGtfsArchivoId } from "$/services/gtfs_archivo";
import { getGtfsArchivo,getGtfsArchivoId,getGtfsBase } from "$/services/gtfs_archivo";
import PageTitle from "$/components/PageTitle.svelte";
import { useLocation } from "svelte-navigator";
import { getPermisosPath } from "$/services/usuarios";
import ModalgtfsUpload from "./ModalgtfsUpload.svelte";
import { getRedTransporte } from "$/services/red_transporte";
let id_red;
let escritura = false;
@ -21,7 +20,7 @@
let location = useLocation()
let loading = false;
let showUpload = null;
let baseGTFS=null;
getPermisosPath($location.pathname)
.then(data => escritura = data.escritura)
.catch(error => console.log({ error }))
@ -32,11 +31,19 @@
.then(() => onPage(1))
.catch(error => globalThis.toast.error(error))
async function rutaBaseArchivo() {
baseGTFS = getGtfsBase().replace('/api', '');
}
async function onPage(p) {
try {
if (!id_red) {
return;
}
rutaBaseArchivo()
loading = true
offset = (p - 1) * limit;
const data = await getGtfsArchivo({id_red, offset, limit, ordering })
@ -62,6 +69,9 @@
function onNuevo() {
showUpload = true
}
</script>
<PageTitle {loading}>Listado Archivos GTFS</PageTitle>
@ -126,7 +136,7 @@
<tr>
<td class="table-light">{offset + index + 1}</td>
<!--<td>{app.id_gtfs}</td>-->
<td><a href={app.archivo}>{app.archivo}</a></td>
<td><a href={`${baseGTFS}${app.ruta_archivo}/${app.archivo}`}>{app.archivo}</a></td>
<td>{app.created}</td>
<td>{app.status}</td>
<td>{app.vigente ? '✅':'🚫'}</td>
@ -137,7 +147,9 @@
</div>
</div>
<div class="card-footer d-flex">
<a href={"#"} class="btn btn-outline-secondary me-3" on:click|preventDefault={() => onPage(page)}>
<i class="bi bi-arrow-repeat"></i>
</a>
<Paginate
forcePage={page}
{limit}
@ -148,7 +160,8 @@
</div>
{#if showUpload}
<ModalgtfsUpload on:close={() => showUpload = false} {id_red} />
<ModalgtfsUpload on:close={() => showUpload = false} {id_red} on:refresh={() => onPage(page)} />
{/if}
<style>

View File

@ -15,7 +15,8 @@
// fecha actual en formato yyyy-mm-dd
let fecha_hoy = (new Date()).toISOString().substring(0,10);
let form = { valid_from: fecha_hoy, id_red };
//let form = { valid_from: fecha_hoy, id_red };
let form = { created: fecha_hoy, id_red };
let loading = false;
let inputFile = null;
@ -29,7 +30,8 @@
try {
loading = true;
const archivo = inputFile.files[0]
const vigente = form.valid_from >= fecha_hoy;
//const vigente = form.valid_from >= fecha_hoy;
const vigente = false;
await createGtfsArchivo({ ...form, vigente, archivo });
globalThis.toast.success("Se ha cargado el Archivo");
@ -73,12 +75,14 @@
<input type="date" class="form-control" disabled value={fecha_hoy}>
</div>
</div>
<!--
<div class="row mb-4">
<div class="col-md-3">Valido desde</div>
<div class="col-md">
<input type="date" class="form-control" required bind:value={form.valid_from}>
</div>
</div>
-->
<div class="row mb-5">
<div class="col-md-3">Cargado por</div>

View File

@ -1,3 +1,3 @@
export const url_base = document.location.origin;
export const base = import.meta.env.VITE_BACKEND || '/api';
export const base = import.meta.env.VITE_BACKEND || '/api';
export const getToken = () => sessionStorage.getItem('token') || null;

View File

@ -1,5 +1,9 @@
import { base, getToken } from './_config'
export function getGtfsBase(){
return (base)
}
export async function getGtfsArchivo(params) {
const query = !params ? '' : '?' + (new URLSearchParams(params).toString());
const res = await fetch(`${base}/gtfs-archivo/${query}`, {
@ -19,18 +23,22 @@ export async function getGtfsArchivoId(id) {
export async function createGtfsArchivo(data) {
const form = new FormData()
for (let key in data) {
const directorioUpload= '/uploads'
form.append('ruta_archivo', directorioUpload)
form.append('status', 'PENDIENTE')
for (let key in data) {
if (key === 'archivo') {
const file = data[key]
form.append(key, file, file.name)
const file = data[key]
form.append('binario', file)
form.append(key, file.name)
} else {
form.append(key, data[key])
}
}
const res = await fetch(`${base}/gtfs-archivo/`, {
method: 'POST',
body: form,
body: form,
headers: { "Authorization": `Bearer ${getToken()}` }
})
if (!res.ok) throw await res.json()