From aefffa4a42e373585c3aa3b163afdfa1ccf5577b Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 10 Mar 2025 12:30:24 +0100 Subject: [PATCH 01/11] test: refs #8647 revert saveFn string --- src/components/CrudModel.vue | 2 +- src/components/__tests__/CrudModel.spec.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/CrudModel.vue b/src/components/CrudModel.vue index acc9fcb3f..afc875363 100644 --- a/src/components/CrudModel.vue +++ b/src/components/CrudModel.vue @@ -61,7 +61,7 @@ const $props = defineProps({ default: null, }, saveFn: { - type: [String, Function], + type: Function, default: null, }, beforeSaveFn: { diff --git a/src/components/__tests__/CrudModel.spec.js b/src/components/__tests__/CrudModel.spec.js index b0eafbc02..c6a09fc3c 100644 --- a/src/components/__tests__/CrudModel.spec.js +++ b/src/components/__tests__/CrudModel.spec.js @@ -21,7 +21,7 @@ describe('CrudModel', () => { dataKey: 'crudModelKey', model: 'crudModel', url: 'crudModelUrl', - saveFn: '', + saveFn: vi.fn(), }, }); wrapper = wrapper.wrapper; @@ -223,7 +223,7 @@ describe('CrudModel', () => { expect(vm.isLoading).toBe(false); expect(vm.hasChanges).toBe(false); - await wrapper.setProps({ saveFn: '' }); + await wrapper.setProps({ saveFn: null }); }); it("should use default url if there's not saveFn", async () => { From 92a7f2c33c56690ea6b81b658ba8a1d6eb4f3418 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 10 Mar 2025 12:33:31 +0100 Subject: [PATCH 02/11] test: refs #8647 revert filter string --- src/components/ui/CardSummary.vue | 2 +- src/components/ui/__tests__/CardSummary.spec.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/ui/CardSummary.vue b/src/components/ui/CardSummary.vue index 6d43f9426..6a61994c1 100644 --- a/src/components/ui/CardSummary.vue +++ b/src/components/ui/CardSummary.vue @@ -12,7 +12,7 @@ const props = defineProps({ default: '', }, filter: { - type: [String, Object], + type: Object, default: null, }, userFilter: { diff --git a/src/components/ui/__tests__/CardSummary.spec.js b/src/components/ui/__tests__/CardSummary.spec.js index 6bd742310..6506b28b8 100644 --- a/src/components/ui/__tests__/CardSummary.spec.js +++ b/src/components/ui/__tests__/CardSummary.spec.js @@ -29,7 +29,7 @@ describe('CardSummary', () => { propsData: { dataKey: 'cardSummaryKey', url: 'cardSummaryUrl', - filter: 'cardFilter', + filter: { key: 'cardFilter' }, }, }); vm = wrapper.vm; @@ -53,7 +53,7 @@ describe('CardSummary', () => { it('should set correct props to the store', () => { expect(vm.store.url).toEqual('cardSummaryUrl'); - expect(vm.store.filter).toEqual('cardFilter'); + expect(vm.store.filter).toEqual({ key: 'cardFilter' }); }); it('should respond to prop changes and refetch data', async () => { From dcd4c327a02c8eb0f24c3e1ad8331b8336ced76e Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 10 Mar 2025 13:02:14 +0100 Subject: [PATCH 03/11] fix: refs #8647 solve warning --- src/composables/useArrayData.js | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/composables/useArrayData.js b/src/composables/useArrayData.js index d1c1b01b8..ebe65d07e 100644 --- a/src/composables/useArrayData.js +++ b/src/composables/useArrayData.js @@ -8,24 +8,36 @@ import { isDialogOpened } from 'src/filters'; const arrayDataStore = useArrayDataStore(); export function useArrayData(key, userOptions) { - key ??= useRoute().meta.moduleName; + let route = null; + let router = null; + const initializeRouting = () => { + if (!route) route = useRoute(); + if (!router) router = useRouter(); + return { route, router }; + }; + // Si no hay key, intentamos obtenerla del route + if (!key) { + const { route: initialRoute, router: initialRouter } = initializeRouting(); + key = initialRoute?.meta?.moduleName; + route = initialRoute; + router = initialRouter; + } if (!key) throw new Error('ArrayData: A key is required to use this composable'); if (!arrayDataStore.get(key)) arrayDataStore.set(key); const store = arrayDataStore.get(key); - const route = useRoute(); - const router = useRouter(); let canceller = null; onMounted(() => { setOptions(); reset(['skip']); - - const query = route.query; + const { route: initialRoute, router: initialRouter } = initializeRouting(); + route = initialRoute; + router = initialRouter; const searchUrl = store.searchUrl; - if (query[searchUrl]) { + if (route.query[searchUrl]) { const params = JSON.parse(query[searchUrl]); const filter = params?.filter && typeof params?.filter == 'object' From 6dbaf841a4e645d1da86ff5b734e5faaac0377da Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 10 Mar 2025 13:02:41 +0100 Subject: [PATCH 04/11] test: refs #8647 try to solve the problem --- src/composables/__tests__/useArrayData.spec.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/composables/__tests__/useArrayData.spec.js b/src/composables/__tests__/useArrayData.spec.js index a610ba9eb..0bdcd135d 100644 --- a/src/composables/__tests__/useArrayData.spec.js +++ b/src/composables/__tests__/useArrayData.spec.js @@ -25,6 +25,7 @@ describe('useArrayData', () => { arrayData.fetch({}); await flushPromises(); + const router = useRouter(); const routerReplace = useRouter().replace.mock.calls[0][0]; expect(axios.get.mock.calls[0][1].params).toEqual({ From 6778a309dd098dd9ba64a8aa67cb8695260d6d10 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 11 Mar 2025 10:52:02 +0100 Subject: [PATCH 05/11] test: refs #8647 solve fail test --- src/composables/__tests__/useArrayData.spec.js | 2 +- src/composables/useArrayData.js | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/composables/__tests__/useArrayData.spec.js b/src/composables/__tests__/useArrayData.spec.js index 0bdcd135d..6ee6866c0 100644 --- a/src/composables/__tests__/useArrayData.spec.js +++ b/src/composables/__tests__/useArrayData.spec.js @@ -25,7 +25,7 @@ describe('useArrayData', () => { arrayData.fetch({}); await flushPromises(); - const router = useRouter(); + const routerReplace = useRouter().replace.mock.calls[0][0]; expect(axios.get.mock.calls[0][1].params).toEqual({ diff --git a/src/composables/useArrayData.js b/src/composables/useArrayData.js index ebe65d07e..cca34d3b3 100644 --- a/src/composables/useArrayData.js +++ b/src/composables/useArrayData.js @@ -11,14 +11,8 @@ export function useArrayData(key, userOptions) { let route = null; let router = null; - const initializeRouting = () => { - if (!route) route = useRoute(); - if (!router) router = useRouter(); - return { route, router }; - }; // Si no hay key, intentamos obtenerla del route if (!key) { - const { route: initialRoute, router: initialRouter } = initializeRouting(); key = initialRoute?.meta?.moduleName; route = initialRoute; router = initialRouter; @@ -30,15 +24,20 @@ export function useArrayData(key, userOptions) { const store = arrayDataStore.get(key); let canceller = null; + const { route: initialRoute, router: initialRouter } = (() => { + if (!route) route = useRoute(); + if (!router) router = useRouter(); + return { route, router }; + })(); onMounted(() => { setOptions(); reset(['skip']); - const { route: initialRoute, router: initialRouter } = initializeRouting(); route = initialRoute; router = initialRouter; const searchUrl = store.searchUrl; - if (route.query[searchUrl]) { - const params = JSON.parse(query[searchUrl]); + const query = route.query[searchUrl]; + if (query) { + const params = JSON.parse(query); const filter = params?.filter && typeof params?.filter == 'object' ? params?.filter From 6bee0ead8ccaba4acfd14d37bcf42ebb65f21197 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Sun, 16 Mar 2025 14:39:48 +0100 Subject: [PATCH 06/11] fix: refs #8647 allow searchUrl prop to accept both String and Boolean types --- src/components/ui/VnPaginate.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ui/VnPaginate.vue b/src/components/ui/VnPaginate.vue index 68968e6c5..5d5eac774 100644 --- a/src/components/ui/VnPaginate.vue +++ b/src/components/ui/VnPaginate.vue @@ -69,7 +69,7 @@ const props = defineProps({ default: null, }, searchUrl: { - type: String, + type: [String, Boolean], default: null, }, disableInfiniteScroll: { From e42f4797b1509e28cc52d3ffe3cf57c3efbe7fc3 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 25 Mar 2025 19:00:07 +0100 Subject: [PATCH 07/11] refactor: refs #8647 remove :data-cy in VnFilterPanel --- src/components/VnTable/VnTableFilter.vue | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/components/VnTable/VnTableFilter.vue b/src/components/VnTable/VnTableFilter.vue index c62b8b0fc..79b903e54 100644 --- a/src/components/VnTable/VnTableFilter.vue +++ b/src/components/VnTable/VnTableFilter.vue @@ -26,12 +26,7 @@ function columnName(col) { }