diff --git a/src/components/GoogleMap.svelte b/src/components/GoogleMap.svelte index 8db34aa..b3f6436 100644 --- a/src/components/GoogleMap.svelte +++ b/src/components/GoogleMap.svelte @@ -1,14 +1,16 @@
Cargando...
diff --git a/src/pages/mapas/ModalParadero.svelte b/src/pages/mapas/ModalParadero.svelte new file mode 100644 index 0000000..3e96d75 --- /dev/null +++ b/src/pages/mapas/ModalParadero.svelte @@ -0,0 +1,92 @@ + + +
+ dispatch('close')}> + +
+
Dirección
+ +
+
+
Latitud
+ +
+
+
Longitud
+ +
+ + {#if form.id_paradero} +
+
+
+ +
+ + Imagen Paradero + {/if} + + + + + +
+
\ No newline at end of file diff --git a/src/pages/mapas/Paraderos.svelte b/src/pages/mapas/Paraderos.svelte index b000b8c..a9610aa 100644 --- a/src/pages/mapas/Paraderos.svelte +++ b/src/pages/mapas/Paraderos.svelte @@ -4,12 +4,12 @@ import { storeParaderos } from "$/stores/global"; import GoogleMap from '$/components/GoogleMap.svelte' import IconLoading from "$/components/IconLoading.svelte"; + import ModalParadero from "./ModalParadero.svelte"; - let my_map = null; let data_map = null + let paradero = null $: init_google_map($storeParaderos) - $: console.log({ data_map }) async function init_google_map(data_inicial) { const paraderos = data_inicial || await getMarcasParaderos() @@ -17,7 +17,9 @@ data_map = paraderos; } - + function onEdita(id_paradero) { + paradero = { id_paradero } + } Paraderos @@ -33,9 +35,15 @@ center={data_map.center} zoom={data_map.zoom} marks={data_map.marks} + on:edita={ev => onEdita(ev.detail)} /> {:else} {/if} + + +{#if paradero} + paradero = null} /> +{/if} \ No newline at end of file diff --git a/src/services/paraderos.js b/src/services/paraderos.js new file mode 100644 index 0000000..f60768c --- /dev/null +++ b/src/services/paraderos.js @@ -0,0 +1,65 @@ + +import { base, getToken } from './_config' + +export function getUrlImagen(id_paradero) { + return `${base}/paraderos/image/${id_paradero}` +} + +export async function getParaderos(params) { + const query = !params ? '' : '?' + (new URLSearchParams(params).toString()); + const res = await fetch(`${base}/paraderos/${query}`, { + headers: { "Authorization": `Bearer ${getToken()}`, "Content-Type": "application/json" } + }) + if (!res.ok) throw await res.text() + return res.json() +} + +export async function getParadero(rut) { + const res = await fetch(`${base}/paraderos/${rut}/`, { + headers: { "Authorization": `Bearer ${getToken()}`, "Content-Type": "application/json" } + }) + if (!res.ok) throw await res.text() + return res.json() +} + +export async function createParadero(data) { + const res = await fetch(`${base}/paraderos/`, { + method: 'POST', + body: JSON.stringify(data), + headers: { "Authorization": `Bearer ${getToken()}`, "Content-Type": "application/json" } + }) + if (!res.ok) throw await res.text() + return res.json() +} + +export async function updateParadero({ id_paradero: id = null, ...data }) { + const res = await fetch(`${base}/paraderos/${id}/`, { + method: 'PATCH', + body: JSON.stringify(data), + headers: { "Authorization": `Bearer ${getToken()}`, "Content-Type": "application/json" } + }) + if (!res.ok) throw await res.text() + return res.json() +} + +export async function deleteParadero(id) { + const res = await fetch(`${base}/paraderos/${id}/`, { + method: 'DELETE', + headers: { "Authorization": `Bearer ${getToken()}`, "Content-Type": "application/json" } + }) + if (!res.ok) throw await res.text() + return res.json() +} + +export async function saveImageParadero(id = null, file) { + const form = new FormData() + form.append('imagen', file) + + const res = await fetch(`${base}/paraderos/image/${id}/`, { + method: 'POST', + body: form, + headers: { "Authorization": `Bearer ${getToken()}` } + }) + if (!res.ok) throw await res.text() + return res.json() +} \ No newline at end of file