diff --git a/src/components/NavBar.vue b/src/components/NavBar.vue index 3051e8b99..e80a293c6 100644 --- a/src/components/NavBar.vue +++ b/src/components/NavBar.vue @@ -7,7 +7,7 @@ import { useQuasar } from 'quasar'; import PinnedModules from './PinnedModules.vue'; import UserPanel from 'components/UserPanel.vue'; import VnBreadcrumbs from './common/VnBreadcrumbs.vue'; -import VnImg from 'src/components/ui/VnImg.vue'; +import VnAvatar from './ui/VnAvatar.vue'; const { t } = useI18n(); const stateStore = useStateStore(); @@ -72,22 +72,13 @@ const pinnedModulesRef = ref(); - - - - + + {{ t('globals.userPanel') }} diff --git a/src/components/UserPanel.vue b/src/components/UserPanel.vue index 589524258..2f191691a 100644 --- a/src/components/UserPanel.vue +++ b/src/components/UserPanel.vue @@ -11,8 +11,8 @@ import VnSelect from 'src/components/common/VnSelect.vue'; import VnRow from 'components/ui/VnRow.vue'; import FetchData from 'components/FetchData.vue'; import { useClipboard } from 'src/composables/useClipboard'; -import VnImg from 'src/components/ui/VnImg.vue'; import { useRole } from 'src/composables/useRole'; +import VnAvatar from './ui/VnAvatar.vue'; const state = useState(); const session = useSession(); @@ -136,7 +136,7 @@ const isEmployee = computed(() => useRole().isEmployee()); @update:model-value="saveLanguage" :label="t(`globals.lang['${userLocale}']`)" icon="public" - color="orange" + color="primary" false-value="es" true-value="en" /> @@ -145,7 +145,7 @@ const isEmployee = computed(() => useRole().isEmployee()); @update:model-value="saveDarkMode" :label="t(`globals.darkMode`)" checked-icon="dark_mode" - color="orange" + color="primary" unchecked-icon="light_mode" /> @@ -153,10 +153,20 @@ const isEmployee = computed(() => useRole().isEmployee());
- - - - + +
{{ user.nickname }}
@@ -168,7 +178,7 @@ const isEmployee = computed(() => useRole().isEmployee());
useRole().isEmployee()); } } + +es: + My account: Mi cuenta + diff --git a/src/components/VnTable/VnColumn.vue b/src/components/VnTable/VnColumn.vue index 55b2f5fee..ed34e9eee 100644 --- a/src/components/VnTable/VnColumn.vue +++ b/src/components/VnTable/VnColumn.vue @@ -151,7 +151,7 @@ const col = computed(() => { }; } if ( - (newColumn.name.startsWith('is') || newColumn.name.startsWith('has')) && + (/^is[A-Z]/.test(newColumn.name) || /^has[A-Z]/.test(newColumn.name)) && newColumn.component == null ) newColumn.component = 'checkbox'; diff --git a/src/components/VnTable/VnTable.vue b/src/components/VnTable/VnTable.vue index be39570ee..d6b35d4da 100644 --- a/src/components/VnTable/VnTable.vue +++ b/src/components/VnTable/VnTable.vue @@ -108,6 +108,8 @@ const CrudModelRef = ref({}); const showForm = ref(false); const splittedColumns = ref({ columns: [] }); const columnsVisibilitySkiped = ref(); +const createForm = ref(); + const tableModes = [ { icon: 'view_column', @@ -139,6 +141,14 @@ onMounted(() => { .map((c) => c.name), ...['tableActions'], ]; + createForm.value = $props.create; + if ($props.create && route?.query?.createForm) { + showForm.value = true; + createForm.value = { + ...createForm.value, + ...{ formInitialData: JSON.parse(route?.query?.createForm) }, + }; + } }); watch( @@ -154,16 +164,16 @@ watch( const isTableMode = computed(() => mode.value == TABLE_MODE); -function setUserParams(watchedParams) { +function setUserParams(watchedParams, watchedOrder) { if (!watchedParams) return; if (typeof watchedParams == 'string') watchedParams = JSON.parse(watchedParams); const filter = typeof watchedParams?.filter == 'string' - ? JSON.parse(watchedParams?.filter) + ? JSON.parse(watchedParams?.filter ?? '{}') : watchedParams?.filter; const where = filter?.where; - const order = filter?.order; + const order = watchedOrder ?? filter?.order; watchedParams = { ...watchedParams, ...where }; delete watchedParams.filter; @@ -615,14 +625,14 @@ defineExpose({ - {{ create.title }} + {{ createForm.title }} diff --git a/src/components/ui/VnRow.vue b/src/components/ui/VnRow.vue index f68052455..5c01d7216 100644 --- a/src/components/ui/VnRow.vue +++ b/src/components/ui/VnRow.vue @@ -1,15 +1,12 @@ - - + +es: + I do not remember my password: No recuerdo mi contraseña + diff --git a/src/pages/Login/RecoverPassword.vue b/src/pages/Login/RecoverPassword.vue new file mode 100644 index 000000000..5e0fd367a --- /dev/null +++ b/src/pages/Login/RecoverPassword.vue @@ -0,0 +1,59 @@ + + diff --git a/src/pages/Login/ResetPassword.vue b/src/pages/Login/ResetPassword.vue new file mode 100644 index 000000000..eff718e97 --- /dev/null +++ b/src/pages/Login/ResetPassword.vue @@ -0,0 +1,99 @@ + + diff --git a/src/pages/Login/TwoFactor.vue b/src/pages/Login/TwoFactor.vue index 31b4ccc79..dd404094f 100644 --- a/src/pages/Login/TwoFactor.vue +++ b/src/pages/Login/TwoFactor.vue @@ -8,6 +8,7 @@ import axios from 'axios'; import { useSession } from 'src/composables/useSession'; import { useLogin } from 'src/composables/useLogin'; import VnInput from 'src/components/common/VnInput.vue'; +import VnOutForm from 'src/components/ui/VnOutForm.vue'; const quasar = useQuasar(); const session = useSession(); @@ -38,24 +39,22 @@ async function onSubmit() { } - diff --git a/src/pages/Parking/Card/ParkingCard.vue b/src/pages/Parking/Card/ParkingCard.vue index 5c29e5665..ad37eb630 100644 --- a/src/pages/Parking/Card/ParkingCard.vue +++ b/src/pages/Parking/Card/ParkingCard.vue @@ -16,7 +16,7 @@ const filter = { :descriptor="ParkingDescriptor" :filter-panel="ParkingFilter" search-data-key="ParkingList" - :searchbarProps="{ + :searchbar-props="{ url: 'Parkings', label: 'parking.searchBar.label', info: 'parking.searchBar.info', diff --git a/src/pages/Route/Agency/Card/AgencyCard.vue b/src/pages/Route/Agency/Card/AgencyCard.vue index 65a095e48..9935fc6eb 100644 --- a/src/pages/Route/Agency/Card/AgencyCard.vue +++ b/src/pages/Route/Agency/Card/AgencyCard.vue @@ -8,7 +8,7 @@ import VnCard from 'components/common/VnCard.vue'; base-url="Agencies" :descriptor="AgencyDescriptor" search-data-key="AgencyList" - :searchbarProps="{ + :searchbar-props="{ url: 'Agencies', label: 'agency.searchBar.label', info: 'agency.searchBar.info', diff --git a/src/pages/Route/Card/RouteFilter.vue b/src/pages/Route/Card/RouteFilter.vue index 24b155389..a6cd149f1 100644 --- a/src/pages/Route/Card/RouteFilter.vue +++ b/src/pages/Route/Card/RouteFilter.vue @@ -119,6 +119,7 @@ const emit = defineEmits(['search']); sort-by="numberPlate ASC" option-value="id" option-label="numberPlate" + option-filter-value="numberPlate" dense outlined rounded diff --git a/src/pages/Route/Card/RouteForm.vue b/src/pages/Route/Card/RouteForm.vue index b80b4536d..8c89718fa 100644 --- a/src/pages/Route/Card/RouteForm.vue +++ b/src/pages/Route/Card/RouteForm.vue @@ -142,11 +142,6 @@ const onSave = (data, response) => { @@ -194,7 +189,7 @@ es: Description: Descripción Is served: Se ha servido Created: Creado - Distance must be lesser than: La distancia debe ser inferior a {maxDistance} + The km can not exceed: La distancia debe ser inferior a {maxDistance} en: - Distance must be lesser than: Distance must be lesser than {maxDistance} + The km can not exceed: Distance must be lesser than {maxDistance} diff --git a/src/pages/Route/Roadmap/RoadmapCard.vue b/src/pages/Route/Roadmap/RoadmapCard.vue index 6bd6816ff..148d16ac9 100644 --- a/src/pages/Route/Roadmap/RoadmapCard.vue +++ b/src/pages/Route/Roadmap/RoadmapCard.vue @@ -10,7 +10,7 @@ import RoadmapFilter from 'pages/Route/Roadmap/RoadmapFilter.vue'; :descriptor="RoadmapDescriptor" :filter-panel="RoadmapFilter" search-data-key="RoadmapList" - :searchbarProps="{ + :searchbar-props="{ url: 'Roadmaps', label: 'Search roadmap', info: 'You can search by roadmap id or customer name', diff --git a/src/pages/Route/RouteAutonomous.vue b/src/pages/Route/RouteAutonomous.vue index 8e7900652..5ad349942 100644 --- a/src/pages/Route/RouteAutonomous.vue +++ b/src/pages/Route/RouteAutonomous.vue @@ -214,7 +214,7 @@ onUnmounted(() => (stateStore.rightDrawer = false)); @click="openDmsUploadDialog" > - {{ t('Create invoiceIn') }} + {{ t('globals.createInvoiceIn') }} @@ -267,7 +267,6 @@ onUnmounted(() => (stateStore.rightDrawer = false)); es: Search autonomous: Buscar autónomos You can search by autonomous reference: Puedes buscar por referencia del autónomo - Create invoiceIn: Crear factura recibida Two autonomous cannot be counted at the same time: Dos autonónomos no pueden ser contabilizados al mismo tiempo Date: Fecha Agency route: Agencia Ruta diff --git a/src/pages/Route/RouteList.vue b/src/pages/Route/RouteList.vue index a978d8fda..e24ed33ed 100644 --- a/src/pages/Route/RouteList.vue +++ b/src/pages/Route/RouteList.vue @@ -99,6 +99,7 @@ const columns = computed(() => [ url: 'vehicles', fields: ['id', 'numberPlate'], optionLabel: 'numberPlate', + optionFilterValue: 'numberPlate', find: { value: 'vehicleFk', label: 'vehiclePlateNumber', diff --git a/src/pages/Supplier/Card/SupplierDescriptor.vue b/src/pages/Supplier/Card/SupplierDescriptor.vue index a31a3bc8d..6e60a336c 100644 --- a/src/pages/Supplier/Card/SupplierDescriptor.vue +++ b/src/pages/Supplier/Card/SupplierDescriptor.vue @@ -177,7 +177,7 @@ const getEntryQueryParams = (supplier) => { icon="vn:invoice-in-create" color="primary" > - {{ t('Create invoiceIn') }} + {{ t('globals.createInvoiceIn') }}
@@ -188,7 +188,6 @@ const getEntryQueryParams = (supplier) => { es: All entries with current supplier: Todas las entradas con proveedor actual Go to client: Ir a cliente - Create invoiceIn: Crear factura recibida Go to module index: Ir al índice del módulo Inactive supplier: Proveedor inactivo Unverified supplier: Proveedor no verificado diff --git a/src/pages/Ticket/Card/TicketBoxing.vue b/src/pages/Ticket/Card/TicketBoxing.vue index 05bde8977..bff95c0e2 100644 --- a/src/pages/Ticket/Card/TicketBoxing.vue +++ b/src/pages/Ticket/Card/TicketBoxing.vue @@ -105,14 +105,14 @@ async function getVideoList(expeditionId, timed) { label markers snap - color="orange" + color="primary" /> routeName.value); :filter-panel="TicketFilter" :descriptor="TicketDescriptor" search-data-key="TicketList" - :searchbarProps="{ + :searchbar-props="{ customRouteRedirectName, label: t('card.search'), info: t('card.searchInfo'), diff --git a/src/pages/Ticket/Card/TicketEditMana.vue b/src/pages/Ticket/Card/TicketEditMana.vue index 721057515..428e5e8c2 100644 --- a/src/pages/Ticket/Card/TicketEditMana.vue +++ b/src/pages/Ticket/Card/TicketEditMana.vue @@ -34,7 +34,7 @@ const cancel = () => {