#8036 - arrayData_exprBuilder_after #845

Merged
alexm merged 7 commits from 8036-arrayData_exprBuilder_after into dev 2024-11-19 09:03:50 +00:00
2 changed files with 22 additions and 14 deletions

View File

@ -37,7 +37,7 @@ const $props = defineProps({
}, },
hiddenTags: { hiddenTags: {
type: Array, type: Array,
default: () => ['filter', 'search', 'or', 'and'], default: () => ['filter', 'or', 'and'],
}, },
customTags: { customTags: {
type: Array, type: Array,
@ -61,7 +61,6 @@ const emit = defineEmits([
'update:modelValue', 'update:modelValue',
'refresh', 'refresh',
'clear', 'clear',
'search',
'init', 'init',
Outdated
Review

Como ahora se muestra bien, se puede mostrar

Como ahora se muestra bien, se puede mostrar
'remove', 'remove',
'setUserParams', 'setUserParams',

View File

@ -75,18 +75,10 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
limit: store.limit, limit: store.limit,
}; };
let exprFilter;
let userParams = { ...store.userParams }; let userParams = { ...store.userParams };
Outdated
Review

La solucion era ejecutar el exprBuilder despues de todo, y guardar el filtro antes de aplicarlo

La solucion era ejecutar el exprBuilder despues de todo, y guardar el filtro antes de aplicarlo
if (store?.exprBuilder) {
const where = buildFilter(userParams, (param, value) => {
const res = store.exprBuilder(param, value);
if (res) delete userParams[param];
return res;
});
exprFilter = where ? { where } : null;
}
Object.assign(filter, store.userFilter, exprFilter); Object.assign(filter, store.userFilter);
let where; let where;
if (filter?.where || store.filter?.where) if (filter?.where || store.filter?.where)
where = Object.assign(filter?.where ?? {}, store.filter?.where ?? {}); where = Object.assign(filter?.where ?? {}, store.filter?.where ?? {});
@ -96,11 +88,28 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
Object.assign(params, userParams); Object.assign(params, userParams);
params.filter.skip = store.skip; params.filter.skip = store.skip;
if (store.order?.length) params.filter.order = store.order; if (store?.order && typeof store?.order == 'string') store.order = [store.order];
if (store.order?.length) params.filter.order = [...store.order];
else delete params.filter.order; else delete params.filter.order;
Outdated
Review

Usar structuredClone

Usar structuredClone
Outdated
Review

No se pot fer sense JSON.parse(JSON.stringify , he provat en structuredClone, pero no permitix gastar dins Proxys. I la opcio de fer {...params} mantendria la refernecia de 2n nivell

No se pot fer sense JSON.parse(JSON.stringify , he provat en structuredClone, pero no permitix gastar dins Proxys. I la opcio de fer {...params} mantendria la refernecia de 2n nivell
store.currentFilter = JSON.parse(JSON.stringify(params));
Outdated
Review

Els borre per a que no moleste en la url

Els borre per a que no moleste en la url
delete store.currentFilter.filter.include;
store.currentFilter.filter = JSON.stringify(store.currentFilter.filter);
let exprFilter;
if (store?.exprBuilder) {
exprFilter = buildFilter(params, (param, value) => {
if (param == 'filter') return;
const res = store.exprBuilder(param, value);
if (res) delete params[param];
return res;
});
}
if (params.filter.where || exprFilter)
params.filter.where = { ...params.filter.where, ...exprFilter };
params.filter = JSON.stringify(params.filter); params.filter = JSON.stringify(params.filter);
store.currentFilter = params;
store.isLoading = true; store.isLoading = true;
const response = await axios.get(store.url, { const response = await axios.get(store.url, {
signal: canceller.signal, signal: canceller.signal,