From 486eba41eda3a4735aea3f7a120ccef647c42e00 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Tue, 20 Feb 2024 15:11:50 +0530 Subject: [PATCH] fix: added & exposed applyFilter method in ViewControls --- frontend/src/components/ViewControls.vue | 33 ++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/frontend/src/components/ViewControls.vue b/frontend/src/components/ViewControls.vue index 41e8333e..4235b30b 100644 --- a/frontend/src/components/ViewControls.vue +++ b/frontend/src/components/ViewControls.vue @@ -536,6 +536,39 @@ function saveView() { showViewModal.value = true } +function applyFilter({ event, idx, column, item }) { + let restrictedFieldtypes = ['Duration', 'Datetime', 'Time'] + if (restrictedFieldtypes.includes(column.type) || idx === 0) return + + event.stopPropagation() + event.preventDefault() + + let filters = { ...list.value.params.filters } + + let value = item.name || item.label || item + + if (value) { + filters[column.key] = value + } else { + delete filters[column.key] + } + + if (column.key == '_assign') { + if (item.length > 1) { + let target = e.target.closest('.user-avatar') + if (target) { + let name = target.getAttribute('data-name') + filters['_assign'] = ['LIKE', `%${name}%`] + } + } else { + filters['_assign'] = ['LIKE', `%${item[0].name}%`] + } + } + updateFilter(filters) +} + +defineExpose({ applyFilter }) + // Watchers watch( () => getView(route.query.view),