fix(VnFilterPanel): emit userParams better #607

Merged
alexm merged 4 commits from warmFix_vnFilterPanel_setUserParams into dev 2024-08-09 10:38:02 +00:00
3 changed files with 13 additions and 7 deletions
Showing only changes of commit 43ca7e1667 - Show all commits

View File

@ -41,6 +41,7 @@ async function orderBy(name, direction) {
break;
}
if (!direction) return await arrayData.deleteOrder(name);
console.log('name, direction: ', name, direction);
await arrayData.addOrder(name, direction);
}

View File

@ -154,7 +154,7 @@ watch(
const isTableMode = computed(() => mode.value == TABLE_MODE);
function setUserParams(watchedParams) {
function setUserParams(watchedParams, watchedOrder) {
if (!watchedParams) return;
if (typeof watchedParams == 'string') watchedParams = JSON.parse(watchedParams);
@ -163,7 +163,7 @@ function setUserParams(watchedParams) {
? JSON.parse(watchedParams?.filter)
: watchedParams?.filter;
const where = filter?.where;
const order = filter?.order;
const order = watchedOrder ?? filter?.order;
watchedParams = { ...watchedParams, ...where };
delete watchedParams.filter;

View File

@ -82,23 +82,28 @@ onMounted(() => {
});
function setUserParams(watchedParams) {
if (!watchedParams) return;
if (!watchedParams || Object.keys(watchedParams).length == 0) return;
jorgep marked this conversation as resolved
Review

Hay casos que es objeto vacío y no queremos emitirlo

Hay casos que es objeto vacío y no queremos emitirlo
if (typeof watchedParams == 'string') watchedParams = JSON.parse(watchedParams);
if (typeof watchedParams?.filter == 'string')
watchedParams.filter = JSON.parse(watchedParams.filter);
watchedParams = { ...watchedParams, ...watchedParams.filter?.where };
const order = watchedParams.filter?.order;
delete watchedParams.filter;
userParams.value = { ...userParams.value, ...watchedParams };
emit('setUserParams', userParams.value);
userParams.value = { ...userParams.value, ...sanitizer(watchedParams) };
emit('setUserParams', userParams.value, order);
jorgep marked this conversation as resolved
Review

Si no emite el order, cuando se actualiza la url quita los ordenes del VnTable

Si no emite el order, cuando se actualiza la url quita los ordenes del VnTable
}
watch(
alexm marked this conversation as resolved
Review

Puedes crear un watch para observar route.query[$props.searchUrl] y arrayData.store.userParams

Tipo esto:
watch( () => [route.query[$props.searchUrl], arrayData.store.userParams], ([newSearchUrl, newUserParams], [oldSearchUrl, oldUserParams]) => { if (newSearchUrl || oldSearchUrl) { setUserParams(newSearchUrl); } if (newUserParams || oldUserParams) { setUserParams(newUserParams); } } );

Puedes crear un watch para observar **route.query[$props.searchUrl]** y **arrayData.store.userParams** Tipo esto: `watch( () => [route.query[$props.searchUrl], arrayData.store.userParams], ([newSearchUrl, newUserParams], [oldSearchUrl, oldUserParams]) => { if (newSearchUrl || oldSearchUrl) { setUserParams(newSearchUrl); } if (newUserParams || oldUserParams) { setUserParams(newUserParams); } } );`
() => route.query[$props.searchUrl],
(val) => setUserParams(val)
(val, oldValue) => (val || oldValue) && setUserParams(val)
alexm marked this conversation as resolved Outdated

newVal, oldVal ?

newVal, oldVal ?
);
watch(
() => arrayData.store.userParams,
(val) => setUserParams(val)
(val, oldValue) => (val || oldValue) && setUserParams(val)
);
watch(