perf: #7136 update composables

This commit is contained in:
Javier Segarra 2024-06-10 12:09:43 +02:00
parent a23eb0a5ad
commit 693e689f5e
5 changed files with 33 additions and 20 deletions

View File

@ -82,7 +82,7 @@ const selectValue = computed({
return $props.modelValue; return $props.modelValue;
}, },
set(value) { set(value) {
arrayData.store.page.value = 0; arrayData.store.page = 0;
emit('update:modelValue', value); emit('update:modelValue', value);
}, },
}); });
@ -156,7 +156,7 @@ async function fetchFilter(val) {
async function filterHandler(val, update) { async function filterHandler(val, update) {
if (!$props.defaultFilter) return update(); if (!$props.defaultFilter) return update();
let newOptions = []; let newOptions = [];
if (myOptions.value.length > 0) { if (myOptions.value.length > 0 && !useURL.value) {
newOptions = filter(val, myOptions.value); newOptions = filter(val, myOptions.value);
myOptions.value = []; myOptions.value = [];
} else newOptions = filter(val, myOptionsOriginal.value); } else newOptions = filter(val, myOptionsOriginal.value);

View File

@ -15,8 +15,6 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
const route = useRoute(); const route = useRoute();
let canceller = null; let canceller = null;
const page = ref(1);
onMounted(() => { onMounted(() => {
setOptions(); setOptions();
store.skip = 0; store.skip = 0;
@ -143,7 +141,7 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
store.userParams = userParams; store.userParams = userParams;
store.skip = 0; store.skip = 0;
store.filter.skip = 0; store.filter.skip = 0;
page.value = 1; store.page = 1;
await fetch({ append: false }); await fetch({ append: false });
return { filter, params }; return { filter, params };
@ -171,8 +169,8 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
async function loadMore() { async function loadMore() {
if (!store.hasMoreData) return; if (!store.hasMoreData) return;
store.skip = store.limit * page.value; store.skip = store.limit * store.page;
page.value += 1; store.page += 1;
await fetch({ append: true }); await fetch({ append: true });
} }

View File

@ -1,17 +1,31 @@
import axios from 'axios'; import axios from 'axios';
export function useAxios() { export function useAxios(props, url) {
const fetch = async (url, filter, params) => { if (!url) url = props.url;
axios.get(url, { params: { ...params, ...filter } }); const handleFilter = (filter) => {
filter = Object.assign(filter, props.filter);
if (props.where && !filter.where) filter.where = props.where;
if (props.sortBy) filter.order = props.sortBy;
if (props.limit) filter.limit = props.limit;
return JSON.stringify(filter);
}; };
const fetch = async (filter) =>
(
await axios.get(url, {
params: { filter: handleFilter(filter), ...props.params },
})
).data;
const push = async (url, method = 'PUT', filter, params) => { const push = async (method = 'PUT', filter, data) =>
axios({ url, method, params: { ...params, ...filter } }); axios({
}; url,
method,
data,
params: { filter: handleFilter(filter), ...props.params },
});
const pop = async (url, filter, params) => { const pop = async (filter) =>
axios.delete(url, { params: { ...params, ...filter } }); axios.delete(url, { params: { filter: handleFilter(filter), ...props.params } });
};
return { return {
fetch, fetch,

View File

@ -1,8 +1,8 @@
import { ref } from 'vue'; // import { ref } from 'vue';
import axios from 'axios'; import axios from 'axios';
export function useFetchData(props) { export function useFetchData(props) {
const data = ref(null); // const data = ref(null);
async function fetch(fetchFilter = {}) { async function fetch(fetchFilter = {}) {
try { try {
@ -15,7 +15,7 @@ export function useFetchData(props) {
params: { filter: JSON.stringify(filter), ...props.params }, params: { filter: JSON.stringify(filter), ...props.params },
}); });
data.value = response.data; // data.value = response.data;
return response.data; return response.data;
} catch (e) { } catch (e) {
// Manejo de errores // Manejo de errores
@ -24,7 +24,7 @@ export function useFetchData(props) {
} }
return { return {
data, // data,
fetch, fetch,
}; };
} }

View File

@ -18,6 +18,7 @@ export const useArrayDataStore = defineStore('arrayDataStore', () => {
skip: 0, skip: 0,
order: '', order: '',
data: ref(), data: ref(),
page: ref(1),
isLoading: false, isLoading: false,
userParamsChanged: false, userParamsChanged: false,
exprBuilder: null, exprBuilder: null,