From a6f970cec8e0f7fffe15ee31b2ce09a4a4bc9ff4 Mon Sep 17 00:00:00 2001 From: Jon <jon@verdnatura.es> Date: Tue, 10 Dec 2024 14:06:34 +0100 Subject: [PATCH 1/5] fix: fixed filter when searching by id --- src/components/ui/VnSearchbar.vue | 11 ++++++----- src/pages/Ticket/Card/TicketCard.vue | 7 +++++++ src/pages/Ticket/TicketList.vue | 9 +++++++++ 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/components/ui/VnSearchbar.vue b/src/components/ui/VnSearchbar.vue index da2d370fe09..cabc6ff18fe 100644 --- a/src/components/ui/VnSearchbar.vue +++ b/src/components/ui/VnSearchbar.vue @@ -51,10 +51,6 @@ const props = defineProps({ type: Object, default: null, }, - staticParams: { - type: Array, - default: () => [], - }, exprBuilder: { type: Function, default: null, @@ -67,6 +63,10 @@ const props = defineProps({ type: Function, default: undefined, }, + beforeSearch: { + type: Function, + default: undefined, + }, }); const searchText = ref(); @@ -103,7 +103,7 @@ async function search() { const staticParams = Object.entries(store.userParams); arrayData.reset(['skip', 'page']); - const filter = { + let filter = { params: { ...Object.fromEntries(staticParams), search: searchText.value, @@ -117,6 +117,7 @@ async function search() { }; delete filter.params.search; } + if (props.beforeSearch) filter = props.beforeSearch(filter); await arrayData.applyFilter(filter); } </script> diff --git a/src/pages/Ticket/Card/TicketCard.vue b/src/pages/Ticket/Card/TicketCard.vue index 73b6f5543c2..8832cb8b0c0 100644 --- a/src/pages/Ticket/Card/TicketCard.vue +++ b/src/pages/Ticket/Card/TicketCard.vue @@ -18,6 +18,13 @@ const { t } = useI18n(); url: 'Tickets/filter', label: t('card.search'), info: t('card.searchInfo'), + beforeSearch: (filter) => { + if (filter.params.search) { + delete filter.params.from; + delete filter.params.to; + } + return filter; + }, }" /> </template> diff --git a/src/pages/Ticket/TicketList.vue b/src/pages/Ticket/TicketList.vue index 6f6c556ca13..c06dcfa3967 100644 --- a/src/pages/Ticket/TicketList.vue +++ b/src/pages/Ticket/TicketList.vue @@ -455,6 +455,15 @@ function setReference(data) { data-key="TicketList" :label="t('Search ticket')" :info="t('You can search by ticket id or alias')" + :before-search=" + (filter) => { + if (filter.params.search) { + delete filter.params.from; + delete filter.params.to; + } + return filter; + } + " /> <RightMenu> <template #right-panel> From 309033c6de572ca410e82739802ae63210abe46d Mon Sep 17 00:00:00 2001 From: Jon <jon@verdnatura.es> Date: Wed, 11 Dec 2024 06:05:38 +0100 Subject: [PATCH 2/5] fix: fixed panel function --- .../Item/ItemType/Card/ItemTypeSummary.vue | 23 +++++++------ src/pages/Item/ItemType/locale/en.yml | 33 ++++++++++--------- src/pages/Item/ItemType/locale/es.yml | 33 ++++++++++--------- src/pages/Zone/Card/ZoneEvents.vue | 1 + src/pages/Zone/Card/ZoneEventsPanel.vue | 27 +++++++++++---- 5 files changed, 69 insertions(+), 48 deletions(-) diff --git a/src/pages/Item/ItemType/Card/ItemTypeSummary.vue b/src/pages/Item/ItemType/Card/ItemTypeSummary.vue index c51d59e137b..9ba774ca462 100644 --- a/src/pages/Item/ItemType/Card/ItemTypeSummary.vue +++ b/src/pages/Item/ItemType/Card/ItemTypeSummary.vue @@ -78,29 +78,32 @@ async function setItemTypeData(data) { {{ t('globals.summary.basicData') }} <QIcon name="open_in_new" /> </router-link> - <VnLv :label="t('summary.id')" :value="itemType.id" /> - <VnLv :label="t('shared.code')" :value="itemType.code" /> - <VnLv :label="t('shared.name')" :value="itemType.name" /> - <VnLv :label="t('shared.worker')"> + <VnLv :label="t('itemType.summary.id')" :value="itemType.id" /> + <VnLv :label="t('itemType.shared.code')" :value="itemType.code" /> + <VnLv :label="t('itemType.shared.name')" :value="itemType.name" /> + <VnLv :label="t('itemType.shared.worker')"> <template #value> <span class="link">{{ itemType.worker?.firstName }}</span> <WorkerDescriptorProxy :id="itemType.worker?.id" /> </template> </VnLv> - <VnLv :label="t('shared.category')" :value="itemType.category?.name" /> <VnLv - :label="t('shared.temperature')" + :label="t('itemType.shared.category')" + :value="itemType.category?.name" + /> + <VnLv + :label="t('itemType.shared.temperature')" :value="itemType.temperature?.name" /> - <VnLv :label="t('summary.life')" :value="itemType.life" /> - <VnLv :label="t('summary.promo')" :value="itemType.promo" /> + <VnLv :label="t('itemType.summary.life')" :value="itemType.life" /> + <VnLv :label="t('itemType.summary.promo')" :value="itemType.promo" /> <VnLv - :label="t('summary.itemPackingType')" + :label="t('itemType.summary.itemPackingType')" :value="itemType.itemPackingType?.description" /> <VnLv class="large-label" - :label="t('summary.isUnconventionalSize')" + :label="t('itemType.summary.isUnconventionalSize')" :value="itemType.isUnconventionalSize" /> </QCard> diff --git a/src/pages/Item/ItemType/locale/en.yml b/src/pages/Item/ItemType/locale/en.yml index 575d5e40277..99c6791f2ed 100644 --- a/src/pages/Item/ItemType/locale/en.yml +++ b/src/pages/Item/ItemType/locale/en.yml @@ -1,16 +1,17 @@ -shared: - code: Code - name: Name - worker: Worker - category: Category - temperature: Temperature - life: Life - itemPackingType: Item packing type - maxRefs: Maximum references - fragile: Fragile -summary: - id: id - life: Life - promo: Promo - itemPackingType: Item packing type - isUnconventionalSize: Is unconventional size +itemType: + shared: + code: Code + name: Name + worker: Worker + category: Category + temperature: Temperature + life: Life + itemPackingType: Item packing type + maxRefs: Maximum references + fragile: Fragile + summary: + id: id + life: Life + promo: Promo + itemPackingType: Item packing type + isUnconventionalSize: Is unconventional size diff --git a/src/pages/Item/ItemType/locale/es.yml b/src/pages/Item/ItemType/locale/es.yml index 93f8b0d0e0a..c91fb405833 100644 --- a/src/pages/Item/ItemType/locale/es.yml +++ b/src/pages/Item/ItemType/locale/es.yml @@ -1,16 +1,17 @@ -shared: - code: Código - name: Nombre - worker: Trabajador - category: Reino - temperature: Temperatura - life: Vida - itemPackingType: Tipo de embalaje - maxRefs: Referencias máximas - fragile: Frágil -summary: - id: id - life: Vida - promo: Promoción - itemPackingType: Tipo de embalaje - isUnconventionalSize: Es de tamaño poco convencional +itemType: + shared: + code: Código + name: Nombre + worker: Trabajador + category: Reino + temperature: Temperatura + life: Vida + itemPackingType: Tipo de embalaje + maxRefs: Referencias máximas + fragile: Frágil + summary: + id: id + life: Vida + promo: Promoción + itemPackingType: Tipo de embalaje + isUnconventionalSize: Es de tamaño poco convencional diff --git a/src/pages/Zone/Card/ZoneEvents.vue b/src/pages/Zone/Card/ZoneEvents.vue index 6d5b37096bc..923a7239130 100644 --- a/src/pages/Zone/Card/ZoneEvents.vue +++ b/src/pages/Zone/Card/ZoneEvents.vue @@ -52,6 +52,7 @@ onUnmounted(() => (stateStore.rightDrawer = false)); :last-day="lastDay" :events="events" v-model:formModeName="formModeName" + @open-zone-form="openForm" /> </QScrollArea> </QDrawer> diff --git a/src/pages/Zone/Card/ZoneEventsPanel.vue b/src/pages/Zone/Card/ZoneEventsPanel.vue index da1c0cf71d1..bb8c159348b 100644 --- a/src/pages/Zone/Card/ZoneEventsPanel.vue +++ b/src/pages/Zone/Card/ZoneEventsPanel.vue @@ -11,10 +11,6 @@ import { dashIfEmpty } from 'src/filters'; import { useWeekdayStore } from 'src/stores/useWeekdayStore'; import { useVnConfirm } from 'composables/useVnConfirm'; -const formModeName = defineModel('formModeName', { - type: String, - required: true, -}); const props = defineProps({ firstDay: { type: Date, @@ -31,8 +27,18 @@ const props = defineProps({ required: true, default: () => [], }, + formModeName: { + type: String, + required: true, + default: 'include', + }, }); +const formName = computed({ + get: () => props.formModeName, + set: (value) => emit('update:formModeName', value), +}); +const emit = defineEmits(['openZoneForm', 'update:formModeName']); const { t } = useI18n(); const route = useRoute(); const weekdayStore = useWeekdayStore(); @@ -80,6 +86,15 @@ const deleteEvent = async (id) => { await fetchData(); }; +const openInclusionForm = (event) => { + formName.value = 'include'; + emit('openZoneForm', { + date: event.dated, + event, + isNewMode: false, + }); +}; + onMounted(async () => { weekdayStore.initStore(); }); @@ -92,13 +107,13 @@ onMounted(async () => { t('eventsPanel.editMode') }}</span> <QRadio - v-model="formModeName" + v-model="formName" dense val="include" :label="t('eventsPanel.include')" /> <QRadio - v-model="formModeName" + v-model="formName" dense val="exclude" :label="t('eventsPanel.exclude')" From c61ad16681480d6958093a5cf534ab3ca482375f Mon Sep 17 00:00:00 2001 From: Jon <jon@verdnatura.es> Date: Wed, 11 Dec 2024 13:38:04 +0100 Subject: [PATCH 3/5] feat: added logic to avoid other filter params when searching on vnsearchbar --- src/components/ui/VnSearchbar.vue | 26 +++++++++++++------------- src/pages/Ticket/Card/TicketCard.vue | 7 ------- src/pages/Ticket/TicketList.vue | 13 ++----------- 3 files changed, 15 insertions(+), 31 deletions(-) diff --git a/src/components/ui/VnSearchbar.vue b/src/components/ui/VnSearchbar.vue index 2b6b59a6ef5..c3a3c0a033c 100644 --- a/src/components/ui/VnSearchbar.vue +++ b/src/components/ui/VnSearchbar.vue @@ -63,10 +63,6 @@ const props = defineProps({ type: Function, default: undefined, }, - beforeSearch: { - type: Function, - default: undefined, - }, }); const searchText = ref(); @@ -102,22 +98,26 @@ onMounted(() => { async function search() { const staticParams = Object.entries(store.userParams); arrayData.reset(['skip', 'page']); - let filter = { params: { - ...Object.fromEntries(staticParams), search: searchText.value, }, - ...{ filter: props.filter }, }; - - if (props.whereFilter) { - filter.filter = { - where: props.whereFilter(searchText.value), + if (!(searchText.value && searchText.value !== '')) { + filter = { + params: { + ...Object.fromEntries(staticParams), + }, + ...{ filter: props.filter }, }; - delete filter.params.search; + + if (props.whereFilter) { + filter.filter = { + where: props.whereFilter(searchText.value), + }; + delete filter.params.search; + } } - if (props.beforeSearch) filter = props.beforeSearch(filter); await arrayData.applyFilter(filter); } </script> diff --git a/src/pages/Ticket/Card/TicketCard.vue b/src/pages/Ticket/Card/TicketCard.vue index 8832cb8b0c0..73b6f5543c2 100644 --- a/src/pages/Ticket/Card/TicketCard.vue +++ b/src/pages/Ticket/Card/TicketCard.vue @@ -18,13 +18,6 @@ const { t } = useI18n(); url: 'Tickets/filter', label: t('card.search'), info: t('card.searchInfo'), - beforeSearch: (filter) => { - if (filter.params.search) { - delete filter.params.from; - delete filter.params.to; - } - return filter; - }, }" /> </template> diff --git a/src/pages/Ticket/TicketList.vue b/src/pages/Ticket/TicketList.vue index 9fbdea3aa9b..eb03a492721 100644 --- a/src/pages/Ticket/TicketList.vue +++ b/src/pages/Ticket/TicketList.vue @@ -1,6 +1,6 @@ <script setup> import axios from 'axios'; -import { computed, ref, onMounted } from 'vue'; +import { computed, ref, onBeforeMount } from 'vue'; import { useRoute, useRouter } from 'vue-router'; import { useStateStore } from 'stores/useStateStore'; import { useI18n } from 'vue-i18n'; @@ -46,7 +46,7 @@ const userParams = { from: null, to: null, }; -onMounted(() => { +onBeforeMount(() => { initializeFromQuery(); stateStore.rightDrawer = true; if (!route.query.createForm) return; @@ -457,15 +457,6 @@ function setReference(data) { :label="t('Search ticket')" :info="t('You can search by ticket id or alias')" data-cy="ticketListSearchBar" - :before-search=" - (filter) => { - if (filter.params.search) { - delete filter.params.from; - delete filter.params.to; - } - return filter; - } - " /> <RightMenu> <template #right-panel> From b635010972de48f428748033f6090ab3b042043f Mon Sep 17 00:00:00 2001 From: Jon <jon@verdnatura.es> Date: Wed, 11 Dec 2024 14:03:56 +0100 Subject: [PATCH 4/5] perf: if searchtext condition --- src/components/ui/VnSearchbar.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ui/VnSearchbar.vue b/src/components/ui/VnSearchbar.vue index c3a3c0a033c..bdebfd875e9 100644 --- a/src/components/ui/VnSearchbar.vue +++ b/src/components/ui/VnSearchbar.vue @@ -103,7 +103,7 @@ async function search() { search: searchText.value, }, }; - if (!(searchText.value && searchText.value !== '')) { + if (!searchText.value) { filter = { params: { ...Object.fromEntries(staticParams), From 9e8c967567e77016f4da4b07e6020338d34e3033 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 11 Dec 2024 15:01:28 +0100 Subject: [PATCH 5/5] fix(VnSearchbar): hotFix rollback --- src/components/ui/VnSearchbar.vue | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/components/ui/VnSearchbar.vue b/src/components/ui/VnSearchbar.vue index bdebfd875e9..4e90245d655 100644 --- a/src/components/ui/VnSearchbar.vue +++ b/src/components/ui/VnSearchbar.vue @@ -98,25 +98,20 @@ onMounted(() => { async function search() { const staticParams = Object.entries(store.userParams); arrayData.reset(['skip', 'page']); - let filter = { + + const filter = { params: { + ...Object.fromEntries(staticParams), search: searchText.value, }, + ...{ filter: props.filter }, }; - if (!searchText.value) { - filter = { - params: { - ...Object.fromEntries(staticParams), - }, - ...{ filter: props.filter }, - }; - if (props.whereFilter) { - filter.filter = { - where: props.whereFilter(searchText.value), - }; - delete filter.params.search; - } + if (props.whereFilter) { + filter.filter = { + where: props.whereFilter(searchText.value), + }; + delete filter.params.search; } await arrayData.applyFilter(filter); }