diff --git a/src/components/ui/VnPaginate.vue b/src/components/ui/VnPaginate.vue index f516f473d..4dae312ce 100644 --- a/src/components/ui/VnPaginate.vue +++ b/src/components/ui/VnPaginate.vue @@ -77,7 +77,6 @@ const arrayData = useArrayData(props.dataKey, { userParams: props.userParams, exprBuilder: props.exprBuilder, }); -const hasMoreData = ref(); const store = arrayData.store; onMounted(() => { @@ -97,7 +96,7 @@ const addFilter = async (filter, params) => { async function fetch() { await arrayData.fetch({ append: false }); - if (!arrayData.hasMoreData.value) { + if (!store.hasMoreData) { isLoading.value = false; } emit('onFetch', store.data); @@ -110,8 +109,8 @@ async function paginate() { isLoading.value = true; await arrayData.loadMore(); - if (!arrayData.hasMoreData.value) { - if (store.userParamsChanged) arrayData.hasMoreData.value = true; + if (!store.hasMoreData) { + if (store.userParamsChanged) store.hasMoreData = true; store.userParamsChanged = false; endPagination(); return; @@ -132,9 +131,7 @@ function endPagination() { emit('onPaginate'); } async function onLoad(index, done) { - if (!store.data) { - return done(); - } + if (!store.data) return done(); if (store.data.length === 0 || !props.url) return done(false); @@ -142,7 +139,7 @@ async function onLoad(index, done) { await paginate(); let isDone = false; - if (store.userParamsChanged) isDone = !arrayData.hasMoreData.value; + if (store.userParamsChanged) isDone = !store.hasMoreData; done(isDone); } @@ -182,13 +179,12 @@ defineExpose({ fetch, addFilter }); - @@ -196,7 +192,10 @@ defineExpose({ fetch, addFilter }); -
+
diff --git a/src/composables/useArrayData.js b/src/composables/useArrayData.js index 998ee0576..490186e77 100644 --- a/src/composables/useArrayData.js +++ b/src/composables/useArrayData.js @@ -9,12 +9,9 @@ const arrayDataStore = useArrayDataStore(); export function useArrayData(key, userOptions) { if (!key) throw new Error('ArrayData: A key is required to use this composable'); - if (!arrayDataStore.get(key)) { - arrayDataStore.set(key); - } + if (!arrayDataStore.get(key)) arrayDataStore.set(key); const store = arrayDataStore.get(key); - const hasMoreData = ref(false); const route = useRoute(); let canceller = null; @@ -22,6 +19,7 @@ export function useArrayData(key, userOptions) { onMounted(() => { setOptions(); + store.skip = 0; const query = route.query; if (query.params) { @@ -29,9 +27,7 @@ export function useArrayData(key, userOptions) { } }); - if (key && userOptions) { - setOptions(); - } + if (key && userOptions) setOptions(); function setOptions() { const allowedOptions = [ @@ -96,8 +92,7 @@ export function useArrayData(key, userOptions) { }); const { limit } = filter; - hasMoreData.value = limit && response.data.length >= limit; - store.hasMoreData = hasMoreData.value; + store.hasMoreData = limit && response.data.length >= limit; if (append) { if (!store.data) store.data = []; @@ -169,7 +164,7 @@ export function useArrayData(key, userOptions) { } async function loadMore() { - if (!hasMoreData.value && !store.hasMoreData) return; + if (!store.hasMoreData) return; store.skip = store.limit * page.value; page.value += 1; @@ -211,7 +206,6 @@ export function useArrayData(key, userOptions) { destroy, loadMore, store, - hasMoreData, totalRows, updateStateParams, isLoading, diff --git a/test/cypress/integration/invoiceIn/invoiceInDueDay.spec.js b/test/cypress/integration/invoiceIn/invoiceInDueDay.spec.js index ee5ffe08d..f39c80809 100644 --- a/test/cypress/integration/invoiceIn/invoiceInDueDay.spec.js +++ b/test/cypress/integration/invoiceIn/invoiceInDueDay.spec.js @@ -1,7 +1,6 @@ /// describe('InvoiceInDueDay', () => { const inputs = 'label input'; - const inputBtns = 'label button'; const addBtn = '.q-page-sticky > div > .q-btn > .q-btn__content'; beforeEach(() => { @@ -10,7 +9,6 @@ describe('InvoiceInDueDay', () => { }); it('should update the amount', () => { - cy.get(inputBtns).eq(1).click(); cy.get(inputs).eq(3).type(23); cy.saveCard(); cy.get('.q-notification__message').should('have.text', 'Data saved'); diff --git a/test/cypress/integration/invoiceIn/invoiceInVat.spec.js b/test/cypress/integration/invoiceIn/invoiceInVat.spec.js index 2f045f32c..ff891399b 100644 --- a/test/cypress/integration/invoiceIn/invoiceInVat.spec.js +++ b/test/cypress/integration/invoiceIn/invoiceInVat.spec.js @@ -1,11 +1,11 @@ /// describe('InvoiceInVat', () => { - const inputs = 'label input'; - const inputBtns = 'label button'; const thirdRow = 'tbody > :nth-child(3)'; const firstLineVat = 'tbody > :nth-child(1) > :nth-child(4)'; const dialogInputs = '.q-dialog label input'; const dialogBtns = '.q-dialog button'; + const acrossInput = + ':nth-child(1) > .q-td.q-table--col-auto-width > .q-field > .q-field__inner > .q-field__control > :nth-child(2) > .default-icon'; const randomInt = Math.floor(Math.random() * 100); beforeEach(() => { @@ -13,11 +13,8 @@ describe('InvoiceInVat', () => { cy.visit(`/#/invoice-in/1/vat`); }); - it('should edit the first line', () => { - cy.get(inputBtns).eq(1).click(); - cy.get(inputs).eq(2).type(23); + it('should edit the sage iva', () => { cy.selectOption(firstLineVat, 'H.P. IVA 21% CEE'); - cy.saveCard(); cy.visit(`/#/invoice-in/1/vat`); @@ -36,16 +33,13 @@ describe('InvoiceInVat', () => { }); it('should throw an error if there are fields undefined', () => { - cy.get(inputBtns).eq(0).click(); - cy.get(':nth-child(1) > .q-td.q-table--col-auto-width > .q-field > .q-field__inner > .q-field__control > :nth-child(2) > .default-icon').click(); + cy.get(acrossInput).click(); cy.get(dialogBtns).eq(2).click(); cy.get('.q-notification__message').should('have.text', "The code can't be empty"); }); it('should correctly handle expense addition', () => { - cy.get(inputBtns).eq(0).click(); - - cy.get(':nth-child(1) > .q-td.q-table--col-auto-width > .q-field > .q-field__inner > .q-field__control > :nth-child(2) > .default-icon').click(); + cy.get(acrossInput).click(); cy.get(dialogInputs).eq(0).type(randomInt); cy.get(dialogInputs).eq(1).click(); cy.get(dialogInputs).eq(1).type('This is a dummy expense'); diff --git a/test/vitest/__tests__/components/Paginate.spec.js b/test/vitest/__tests__/components/Paginate.spec.js index cf5e5d2ea..345903c1a 100644 --- a/test/vitest/__tests__/components/Paginate.spec.js +++ b/test/vitest/__tests__/components/Paginate.spec.js @@ -48,7 +48,7 @@ describe('VnPaginate', () => { { id: 3, name: 'Bruce Wayne' }, ], }); - vm.arrayData.hasMoreData.value = true; + vm.store.hasMoreData = true; await vm.$nextTick(); vm.store.data = [