se agrega letrero en mapa de rutas
parent
4f11229f3a
commit
18b19902c7
|
@ -6,6 +6,8 @@
|
||||||
export let className = "";
|
export let className = "";
|
||||||
export let classTitle = "";
|
export let classTitle = "";
|
||||||
export let classHeader = "";
|
export let classHeader = "";
|
||||||
|
export let classBody = "";
|
||||||
|
export let classFooter = "";
|
||||||
export let size = "";
|
export let size = "";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -24,10 +26,10 @@
|
||||||
on:click|preventDefault={() => dispatch("close")}>
|
on:click|preventDefault={() => dispatch("close")}>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class={"modal-body " + classBody}>
|
||||||
<slot />
|
<slot />
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class={"modal-footer " + classFooter}>
|
||||||
<slot name="buttons" />
|
<slot name="buttons" />
|
||||||
<div class="me-auto" />
|
<div class="me-auto" />
|
||||||
<button
|
<button
|
||||||
|
|
|
@ -73,6 +73,15 @@
|
||||||
|
|
||||||
Propiedades:
|
Propiedades:
|
||||||
<form on:submit|preventDefault={onSave}>
|
<form on:submit|preventDefault={onSave}>
|
||||||
|
<div class="input-group mb-3">
|
||||||
|
<div class="input-group-text">Identificador</div>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
disabled
|
||||||
|
value={form.id_paradero}
|
||||||
|
class="form-control"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
<div class="input-group mb-3">
|
<div class="input-group mb-3">
|
||||||
<div class="input-group-text">Nombre</div>
|
<div class="input-group-text">Nombre</div>
|
||||||
<input
|
<input
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
<script>
|
||||||
|
import Modal from "../../components/Modal.svelte";
|
||||||
|
|
||||||
|
import { createEventDispatcher } from "svelte";
|
||||||
|
import { getLetreroLUR } from "../../services/letreros_lur";
|
||||||
|
const dispatch = createEventDispatcher();
|
||||||
|
|
||||||
|
export let codigo = null;
|
||||||
|
|
||||||
|
let letrero = {};
|
||||||
|
let codigo_dividido = []
|
||||||
|
|
||||||
|
$: fetchLetreroLUR(codigo)
|
||||||
|
|
||||||
|
async function fetchLetreroLUR(codigo) {
|
||||||
|
try {
|
||||||
|
letrero = await getLetreroLUR(codigo) || {}
|
||||||
|
codigo_dividido = letrero.codigo.match(/\d+|[a-z]+/gi)
|
||||||
|
} catch (error) {
|
||||||
|
console.log({ error })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<Modal title="Letrero" classBody="bg-white" on:close={() => dispatch('close')}>
|
||||||
|
<table class="m-auto" cellpadding="10" cellspacing="0"
|
||||||
|
style="--bgcolor1: {letrero.bgcolor1}; --color1: {letrero.color1}; --bgcolor2: {letrero.bgcolor2}; --color2: {letrero.color2}"
|
||||||
|
>
|
||||||
|
<tbody class="color1">
|
||||||
|
<tr>
|
||||||
|
<td rowspan="4" width="80" class="color2 text-center">
|
||||||
|
<h1 class="m-0">{codigo_dividido[0]}</h1>
|
||||||
|
<h1 class="m-0">{codigo_dividido[1]}</h1>
|
||||||
|
</td>
|
||||||
|
<td width="220">{letrero.linea1}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{letrero.linea2}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{letrero.linea3}</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="color2">
|
||||||
|
<td>{letrero.linea4}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</Modal>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.color1 {
|
||||||
|
background-color: var(--bgcolor1);
|
||||||
|
color: var(--color1);
|
||||||
|
}
|
||||||
|
.color2 {
|
||||||
|
background-color: var(--bgcolor2);
|
||||||
|
color: var(--color2);
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -36,7 +36,7 @@
|
||||||
})
|
})
|
||||||
|
|
||||||
function create_map() {
|
function create_map() {
|
||||||
if (!elMap) return;
|
if (!elMap || !globalThis.L) return;
|
||||||
if (!L) L = globalThis.L;
|
if (!L) L = globalThis.L;
|
||||||
if (!iconParada) {
|
if (!iconParada) {
|
||||||
iconParada = L.icon({
|
iconParada = L.icon({
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
import { getOperadores } from "$/services/operadores";
|
import { getOperadores } from "$/services/operadores";
|
||||||
import { getLineas } from "$/services/lineas";
|
import { getLineas } from "$/services/lineas";
|
||||||
import { getRutas } from "$/services/mapas";
|
import { getRutas } from "$/services/mapas";
|
||||||
|
import ModalLetreroLUR from "./ModalLetreroLUR.svelte";
|
||||||
|
|
||||||
let myMap = null
|
let myMap = null
|
||||||
let elMap = null
|
let elMap = null
|
||||||
|
@ -26,6 +27,11 @@
|
||||||
let marker1 = null
|
let marker1 = null
|
||||||
let marker2 = null
|
let marker2 = null
|
||||||
|
|
||||||
|
let showLetrero = false
|
||||||
|
let codigo = null
|
||||||
|
|
||||||
|
$: codigo = lineas.find(el => el.id_linea === id_linea)?.route_short_name || null
|
||||||
|
|
||||||
getOperadores()
|
getOperadores()
|
||||||
.then(data => data.sort((a,b) => a.nombre_operador < b.nombre_operador? -1 : 1))
|
.then(data => data.sort((a,b) => a.nombre_operador < b.nombre_operador? -1 : 1))
|
||||||
.then(data => operadores = data)
|
.then(data => operadores = data)
|
||||||
|
@ -42,7 +48,7 @@
|
||||||
})
|
})
|
||||||
|
|
||||||
function create_map() {
|
function create_map() {
|
||||||
if (!elMap) return;
|
if (!elMap || !globalThis.L) return;
|
||||||
if (!L) L = globalThis.L;
|
if (!L) L = globalThis.L;
|
||||||
if (!iconPartida) {
|
if (!iconPartida) {
|
||||||
iconPartida = L.icon({
|
iconPartida = L.icon({
|
||||||
|
@ -119,6 +125,7 @@
|
||||||
Rutas
|
Rutas
|
||||||
</PageTitle>
|
</PageTitle>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-auto">
|
<div class="col-md-auto">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<div class="input-group-text">Operador</div>
|
<div class="input-group-text">Operador</div>
|
||||||
|
@ -128,10 +135,7 @@
|
||||||
<option value={operador.id_operador}>{operador.nombre_operador}</option>
|
<option value={operador.id_operador}>{operador.nombre_operador}</option>
|
||||||
{/each}
|
{/each}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-auto">
|
|
||||||
<div class="input-group">
|
|
||||||
<div class="input-group-text">Linea</div>
|
<div class="input-group-text">Linea</div>
|
||||||
<select bind:value={id_linea} class="form-select">
|
<select bind:value={id_linea} class="form-select">
|
||||||
<option value=""></option>
|
<option value=""></option>
|
||||||
|
@ -141,6 +145,14 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{#if id_operador && codigo}
|
||||||
|
<div class="col-auto">
|
||||||
|
<button class="btn btn-secondary"
|
||||||
|
on:click|preventDefault={() => showLetrero = true}
|
||||||
|
>Ver Letrero</button>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
|
@ -148,3 +160,7 @@
|
||||||
<div bind:this={elMap} style="height: 100vh;"></div>
|
<div bind:this={elMap} style="height: 100vh;"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{#if showLetrero}
|
||||||
|
<ModalLetreroLUR {codigo} on:close={() => showLetrero = false} />
|
||||||
|
{/if}
|
|
@ -0,0 +1,48 @@
|
||||||
|
|
||||||
|
import { base, getToken } from './_config'
|
||||||
|
|
||||||
|
export async function getLetrerosLUR(params) {
|
||||||
|
const query = !params ? '' : '?' + (new URLSearchParams(params).toString());
|
||||||
|
const res = await fetch(`${base}/letreros-lur/${query}`, {
|
||||||
|
headers: { "Authorization": `Bearer ${getToken()}`, "Content-Type": "application/json" }
|
||||||
|
})
|
||||||
|
if (!res.ok) throw await res.text()
|
||||||
|
return res.json()
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getLetreroLUR(id) {
|
||||||
|
const res = await fetch(`${base}/letreros-lur/${id}/`, {
|
||||||
|
headers: { "Authorization": `Bearer ${getToken()}`, "Content-Type": "application/json" }
|
||||||
|
})
|
||||||
|
if (!res.ok) throw await res.text()
|
||||||
|
return res.json()
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function createLetreroLUR(data) {
|
||||||
|
const res = await fetch(`${base}/letreros-lur/`, {
|
||||||
|
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 updateLetreroLUR({ codigo: id = null, ...data }) {
|
||||||
|
const res = await fetch(`${base}/letreros-lur/${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 deleteLetreroLUR(id) {
|
||||||
|
const res = await fetch(`${base}/letreros-lur/${id}/`, {
|
||||||
|
method: 'DELETE',
|
||||||
|
headers: { "Authorization": `Bearer ${getToken()}`, "Content-Type": "application/json" }
|
||||||
|
})
|
||||||
|
if (!res.ok) throw await res.text()
|
||||||
|
return res.json()
|
||||||
|
}
|
Loading…
Reference in New Issue