se modifica descarga de archivo zip
parent
b439ce5b4a
commit
4829634194
|
@ -1,11 +1,12 @@
|
||||||
<script>
|
<script>
|
||||||
import Paginate from "$/components/Paginate.svelte";
|
import Paginate from "$/components/Paginate.svelte";
|
||||||
import { getGtfsArchivo,getGtfsArchivoId,getGtfsBase } from "$/services/gtfs_archivo";
|
import { downloadGtfsArchivo, getGtfsArchivo,getGtfsArchivoId,getGtfsBase } from "$/services/gtfs_archivo";
|
||||||
import PageTitle from "$/components/PageTitle.svelte";
|
import PageTitle from "$/components/PageTitle.svelte";
|
||||||
import { useLocation } from "svelte-navigator";
|
import { useLocation } from "svelte-navigator";
|
||||||
import { getPermisosPath } from "$/services/usuarios";
|
import { getPermisosPath } from "$/services/usuarios";
|
||||||
import ModalgtfsUpload from "./ModalgtfsUpload.svelte";
|
import ModalgtfsUpload from "./ModalgtfsUpload.svelte";
|
||||||
import { getRedTransporte } from "$/services/red_transporte";
|
import { getRedTransporte } from "$/services/red_transporte";
|
||||||
|
import { space } from "svelte/internal";
|
||||||
|
|
||||||
let id_red;
|
let id_red;
|
||||||
let escritura = false;
|
let escritura = false;
|
||||||
|
@ -20,7 +21,6 @@
|
||||||
let location = useLocation()
|
let location = useLocation()
|
||||||
let loading = false;
|
let loading = false;
|
||||||
let showUpload = null;
|
let showUpload = null;
|
||||||
let baseGTFS=null;
|
|
||||||
getPermisosPath($location.pathname)
|
getPermisosPath($location.pathname)
|
||||||
.then(data => escritura = data.escritura)
|
.then(data => escritura = data.escritura)
|
||||||
.catch(error => console.log({ error }))
|
.catch(error => console.log({ error }))
|
||||||
|
@ -31,19 +31,11 @@
|
||||||
.then(() => onPage(1))
|
.then(() => onPage(1))
|
||||||
.catch(error => globalThis.toast.error(error))
|
.catch(error => globalThis.toast.error(error))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async function rutaBaseArchivo() {
|
|
||||||
baseGTFS = getGtfsBase().replace('/api', '');
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async function onPage(p) {
|
async function onPage(p) {
|
||||||
try {
|
try {
|
||||||
if (!id_red) {
|
if (!id_red) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
rutaBaseArchivo()
|
|
||||||
loading = true
|
loading = true
|
||||||
offset = (p - 1) * limit;
|
offset = (p - 1) * limit;
|
||||||
const data = await getGtfsArchivo({id_red, offset, limit, ordering })
|
const data = await getGtfsArchivo({id_red, offset, limit, ordering })
|
||||||
|
@ -70,6 +62,13 @@
|
||||||
showUpload = true
|
showUpload = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onDownload({ id_gtfs }) {
|
||||||
|
loading = true
|
||||||
|
downloadGtfsArchivo(id_gtfs)
|
||||||
|
.catch(error => globalThis.toast.error(error))
|
||||||
|
.finally(() => loading = false)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
@ -136,7 +135,13 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td class="table-light">{offset + index + 1}</td>
|
<td class="table-light">{offset + index + 1}</td>
|
||||||
<!--<td>{app.id_gtfs}</td>-->
|
<!--<td>{app.id_gtfs}</td>-->
|
||||||
<td><a href={`${baseGTFS}${app.ruta_archivo}/${app.archivo}`}>{app.archivo}</a></td>
|
<td>
|
||||||
|
{#if !loading}
|
||||||
|
<a href={"#"} on:click|preventDefault={() => onDownload(app)}>{app.archivo}</a>
|
||||||
|
{:else}
|
||||||
|
<span>{app.archivo}</span>
|
||||||
|
{/if}
|
||||||
|
</td>
|
||||||
<td>{app.created}</td>
|
<td>{app.created}</td>
|
||||||
<td>{app.status}</td>
|
<td>{app.status}</td>
|
||||||
<td>{app.vigente ? '✅':'🚫'}</td>
|
<td>{app.vigente ? '✅':'🚫'}</td>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { base, getToken } from './_config'
|
import { base, getToken } from './_config'
|
||||||
|
|
||||||
export function getGtfsBase(){
|
export function getGtfsBase() {
|
||||||
|
|
||||||
return (base)
|
return (base)
|
||||||
}
|
}
|
||||||
|
@ -23,22 +23,22 @@ export async function getGtfsArchivoId(id) {
|
||||||
|
|
||||||
export async function createGtfsArchivo(data) {
|
export async function createGtfsArchivo(data) {
|
||||||
const form = new FormData()
|
const form = new FormData()
|
||||||
const directorioUpload= '/uploads'
|
const directorioUpload = '/uploads'
|
||||||
form.append('ruta_archivo', directorioUpload)
|
form.append('ruta_archivo', directorioUpload)
|
||||||
form.append('status', 'PENDIENTE')
|
form.append('status', 'PENDIENTE')
|
||||||
for (let key in data) {
|
for (let key in data) {
|
||||||
if (key === 'archivo') {
|
if (key === 'archivo') {
|
||||||
const file = data[key]
|
const file = data[key]
|
||||||
form.append('binario', file)
|
form.append('binario', file)
|
||||||
form.append(key, file.name)
|
form.append(key, file.name)
|
||||||
} else {
|
} else {
|
||||||
form.append(key, data[key])
|
form.append(key, data[key])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const res = await fetch(`${base}/gtfs-archivo/`, {
|
const res = await fetch(`${base}/gtfs-archivo/`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
body: form,
|
body: form,
|
||||||
headers: { "Authorization": `Bearer ${getToken()}` }
|
headers: { "Authorization": `Bearer ${getToken()}` }
|
||||||
})
|
})
|
||||||
if (!res.ok) throw await res.json()
|
if (!res.ok) throw await res.json()
|
||||||
|
@ -62,4 +62,26 @@ export async function deleteGtfsArchivo(id) {
|
||||||
})
|
})
|
||||||
if (!res.ok) throw await res.json()
|
if (!res.ok) throw await res.json()
|
||||||
return res.text()
|
return res.text()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export async function downloadGtfsArchivo(id) {
|
||||||
|
const res = await fetch(`${base}/gtfs-archivo/download/?id=${id}`, {
|
||||||
|
headers: { "Authorization": `Bearer ${getToken()}` }
|
||||||
|
})
|
||||||
|
if (!res.ok) throw await res.text()
|
||||||
|
|
||||||
|
const filename = res.headers.get('content-disposition').split('filename=')[1].replace(/\"/g,'');
|
||||||
|
const blob = await res.blob()
|
||||||
|
const url = URL.createObjectURL(blob);
|
||||||
|
|
||||||
|
// Crear un enlace <a> para simular la descarga
|
||||||
|
let enlaceDescarga = document.createElement('a');
|
||||||
|
enlaceDescarga.href = url;
|
||||||
|
enlaceDescarga.download = filename; // Establece el nombre del archivo
|
||||||
|
enlaceDescarga.click();
|
||||||
|
|
||||||
|
// Liberar la URL del Blob una vez que se haya completado la descarga
|
||||||
|
URL.revokeObjectURL(url);
|
||||||
|
enlaceDescarga.remove()
|
||||||
}
|
}
|
Loading…
Reference in New Issue