#5186 create parking section #197
Labels
No Milestone
No Assignees
4 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: verdnatura/salix-front#197
Loading…
Reference in New Issue
No description provided.
Delete Branch "5186-CreateParkingSection"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
WIP: #5186 create parking sectionto #5186 create parking section@ -405,3 +405,3 @@
<div
class="column items-center logs origin-log"
class="column items-center logs origin-log q-mt-md"
v-for="(originLog, originLogIndex) in logTree"
No se veía en algunos caso el primer registro.
@ -0,0 +41,4 @@
<VnInput v-model="data.row" :label="t('parking.basicData.row')" />
<VnInput v-model="data.column" :label="t('parking.basicData.column')" />
</VnRow>
<VnRow>
El campo debería ser requerido si al enviar nulo da error.
O cambiar el mensaje de error en salix para que sea mas informativo al usuario y no de pie a pensar que algo está hecho mal.
Esto habría que aplicarlo a nivel de FormModel, actualmente pasa en cualquier sección que inserte un campo que es obligatorio en bd, yo crearía tarea para hacer refactor de formModel. De momento, lo soluciono con la prop is-clearable="false". Pero que baraje @alexm y @jgallego si crear tarea.
@ -0,0 +29,4 @@
<template #body="{ entity: parking }">
<QCard class="vn-one">
<QCardSection class="q-pa-none">
<a class="header" :href="`#/parking/${entityId}/basic-data`">
Diria que no tiene el estilo correcto
@ -0,0 +39,4 @@
<template>
<template v-if="stateStore.isHeaderMounted()">
<Teleport to="#searchbar">
<VnSearchbar
La opcion de PArking en el breadcrum no lleva a la parking, pero si monta bien la URL
New commits pushed, approval review dismissed automatically according to repository settings
@ -0,0 +22,4 @@
<template>
<FetchData
url="Sectors"
:filter="{ fields: ['id', 'description'] }"
Podemos usar los valores de filter.include.scope.fields?
Me ha gustado como lo has enfocado al reves de lo que decia! 👌
@ -0,0 +6,4 @@
const firstDetailBtn =
':nth-child(1) > :nth-child(1) > .card-list-body > .actions > .q-btn';
const summaryHeader = '.summaryBody .header';
const screen = '.q-page-container > .q-drawer-container > .fullscreen';
Ya hay un comando para ello. Busca por el valor de la variable en el archivo commands
Le cambio el nombre oir closeSideMenu, ya que cerraría cualquiera de los 2. También modifico el selector , porque directamente con .fullscreen no funciona en esa sección. Así funciona en cualquier sección.
@ -683,6 +684,36 @@ export default {
recyclable: 'Recyclable',
},
},
parking: {
Hacer lo que hablamos ayer de si la misma se usa dos veces pasarla a global
@ -741,6 +742,34 @@ export default {
recyclable: 'Reciclable',
},
},
parking: {
Hacer lo que hablamos ayer de si la misma se usa dos veces pasarla a global
code se repite varias veces, esta la paso a global y el resto a nivel de módulo.
@ -0,0 +42,4 @@
<VnInput v-model="data.row" :label="t('parking.basicData.row')" />
<VnInput v-model="data.column" :label="t('parking.basicData.column')" />
</VnRow>
<VnRow>
Al final un VnRow con un unico elemento se veia bien?
sí, te aplica el flex 1, ocupando todo el ancho
New commits pushed, approval review dismissed automatically according to repository settings
@ -3,3 +3,3 @@
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
const { t, te } = useI18n();
la función "te" devuelve un booleano . Si existe true , si no false.
_Mientras que es común utilizar abreviaturas para ciertas palabras en nombres de variables, evita abreviaturas excesivas que puedan hacer que el código sea menos legible.
Evitar abreviaturas excesivas: Mientras que es común utilizar abreviaturas para ciertas palabras en nombres de variables, evita abreviaturas excesivas que puedan hacer que el código sea menos legible._
Jo en este cas no ho abreviaria. com a molt a tExist pq t si sabem q significa.
@juan com ho veus?
No entiendo, la abreviatura es de la librería vue-i18n
Es nativo de i18n
@ -15,0 +15,4 @@
const item = JSON.parse(JSON.stringify(props.item));
const [, , section] = item.title.split('.');
if (!te(item.title)) item.title = t(`globals.pageTitles.${section}`);
Si no encuentra la traducción, coge la global.
@ -13,2 +13,3 @@
const item = computed(() => props.item); // eslint-disable-line vue/no-dupe-keys
const item = computed(() => {
const item = JSON.parse(JSON.stringify(props.item));
Es necesario hacerlo así para que no sea una referencia al mismo objeto.
@ -41,3 +41,4 @@
breadcrumb.title = useCamelCase(param.meta.title);
}
breadcrumb.locale = te(`${breadcrumb.root}.pageTitles.${breadcrumb.title}`)
Si existe la traducción específica , pone esta, si no la global
La clave i18n de las lineas 44 y 45 son iguales no?
Podemos reducir a 1 ocurrencia?
No, "te" devuelve un booleano, "t" traduce
Tras hablar con Javier, guardo el valor en una variable.
Bien, pero quizás para evitarte un ternario, te diría de usar un if con la operacion "te" y dentro le asignas el valor que quieras. Fuera del if resuelves la traducción asignandola a breadcumb.locale
@ -84,2 +84,4 @@
copyClipboard: 'Copy on clipboard',
salesPerson: 'SalesPerson',
code: 'Code',
pageTitles: {
Esto se repite mucho. Yo crearía tarea para sustituir en todos los sitios esto.
@ -15,0 +17,4 @@
if (!te(item.title)) item.title = t(`globals.pageTitles.${section}`);
return item;
}); // eslint-disable-line vue/no-dupe-keys
Si gastes una variable distinta a "item" ja no cal ficar esta linea.
@ -85,6 +85,12 @@ export default {
selectFile: 'Select a file',
Traducciones duplicadas
@ -0,0 +27,4 @@
const setHeader = (entity) => (header.value = useCardDescription(entity.code, entity.id));
</script>
<template>
No pot gastar les dades que hi han en la store? les seteges en parkingCard
Alex tiene razón, sin embargo, deberías comprobar que en parkingCard y este fichero solicitas los mismos
Es lo mismo, tienen la misma url y filtro.
@ -0,0 +16,4 @@
const entityId = computed(() => $props.id || route.params.id);
const filter = {
No pot gastar les dades que hi han en la store? les seteges en parkingCard
Sí pero hay que modificar la lógica de CardSummary, voy a dejarme esto en pendiente. Hoy subiré la rama con los cambios aplicados para que puedas ver como lo he hecho en el descriptor. No altera el funcionamiento del resto de la página.
Sé que te refieres a importar arrayData en parking summary y usarlo en CardSummary pero eso no tiene sentido porque sigues haciendo la llamada en CardSummary para usar los datos. Yo esto lo abordaría en una tarea. Avisame si quieres que lo miremos en llamada mañana.
Tras hablar con Alex , decidimos hacer un refactor en CardSummary para que use el arrayData e intentarlo con FormModel también.
El formModel lo paso a otra tarea https://redmine.verdnatura.es/issues/7135, que se me está alargando la tarea,
@ -85,6 +85,12 @@ export default {
selectFile: 'Select a file',
copyClipboard: 'Copy on clipboard',
salesPerson: 'SalesPerson',
code: 'Code',
Se usa 7 veces. Deberia estar global.
@ -87,1 +87,4 @@
salesPerson: 'SalesPerson',
code: 'Code',
pageTitles: {
summary: 'Summary',
Se usa 17 veces, deberia estar global o crear tarea
https://redmine.verdnatura.es/issues/7132
@ -88,0 +88,4 @@
code: 'Code',
pageTitles: {
summary: 'Summary',
basicData: 'Basic data',
Se usa 19 veces, debería estar global o crear tarea
@ -88,0 +89,4 @@
pageTitles: {
summary: 'Summary',
basicData: 'Basic data',
log: 'Logs',
Se usa 2 veces, debería estar global
@ -665,6 +671,7 @@ export default {
summary: 'Summary',
basicData: 'Basic Data',
log: 'Logs',
parkingList: 'Parking list',
Tu mismo la estas usando 2 veces. Poner global o como hablamos global para el modulo Parking
@ -85,6 +85,12 @@ export default {
selectFile: 'Seleccione un fichero',
Las mismas repetidas pero en este caso en español
@ -200,3 +200,3 @@
<template>
<CardSummary
ref="summary"
data-key="InvoiceInSummary"
Como se hace uso de arrayData en InvoiceInCard, se le tiene que poner otra clave. Ya que no gasta el mismo origen de datos.
@ -52,4 +58,2 @@
watch(
() => $props.url,
async (newUrl, lastUrl) => {
if (newUrl == lastUrl) return;
De momento, para que sea retrocompatible con el resto de secciones a la hora de abrir los descriptors, se hace la llamada siempre , pero si se hace refactor se puede evitar hacer la llamada. Pero ya usa los datos desde arrayData.
@ -33,2 +44,3 @@
isSummary.value = String(route.path).endsWith('/summary');
fetch();
await fetch();
watch(props, async () => await fetch());
De momento, para que sea retrocompatible con el resto de secciones a la hora de abrir los summaryPopup, se hace la llamada siempre , pero si se hace refactor se puede evitar hacer la llamada. Pero ya usa los datos desde arrayData.
@ -0,0 +19,4 @@
const entityId = computed(() => props.id || params.id);
const { store } = useArrayData('Parking');
const card = computed(() => store.data);
const filter = {
Yo valoraría crear un archivo general con los filtros de las cards de cada sección, porque si no hay que escribir el filtro. Si entramos en la sección summary no hay problema, se puede recoger el filtro desde la store, pero si abrimos el summaryProxy o popup, este no pasa por card y no tiene acceso al descriptor.
@ -0,0 +15,4 @@
const { t } = useI18n();
const entityId = computed(() => $props.id || params.id);
const filter = {
Yo valoraría crear un archivo general con los filtros de las cards de cada sección, porque si no hay que escribir el filtro. Si entramos en la sección summary no hay problema, se puede recoger el filtro desde la store, pero si abrimos el summaryProxy o popup, este no pasa por card y no tiene acceso al descriptor.
New commits pushed, approval review dismissed automatically according to repository settings