1
0
forked from test/crm

fix: added list view cache

This commit is contained in:
Shariq Ansari 2024-01-02 12:44:28 +05:30
parent 6cabe46852
commit 374ef6fc79
2 changed files with 20 additions and 14 deletions

View File

@ -125,6 +125,10 @@ const props = defineProps({
type: String,
required: true,
},
default_filters: {
type: Object,
default: {},
},
})
const emit = defineEmits(['update'])
@ -155,8 +159,8 @@ const filters = computed(() => {
let allFilters = list.value?.params?.filters
if (!allFilters || !filterableFields.data) return new Set()
// remove default filters
if (list.value.data._defaultFilters) {
allFilters = removeCommonFilters(list.value.data._defaultFilters, allFilters)
if (props.default_filters) {
allFilters = removeCommonFilters(props.default_filters, allFilters)
}
return convertFilters(filterableFields.data, allFilters)
})
@ -165,11 +169,11 @@ function removeCommonFilters(commonFilters, allFilters) {
for (const key in commonFilters) {
if (commonFilters.hasOwnProperty(key) && allFilters.hasOwnProperty(key)) {
if (commonFilters[key] === allFilters[key]) {
delete allFilters[key];
delete allFilters[key]
}
}
}
return allFilters;
return allFilters
}
function convertFilters(data, allFilters) {

View File

@ -26,7 +26,12 @@
/>
</div>
<div class="flex items-center gap-2">
<Filter v-model="list" :doctype="doctype" @update="updateFilter" />
<Filter
v-model="list"
:doctype="doctype"
:default_filters="filters"
@update="updateFilter"
/>
<SortBy v-model="list" :doctype="doctype" @update="updateSort" />
<ViewSettings
v-model="list"
@ -101,9 +106,11 @@ const defaultParams = ref('')
const viewUpdated = ref(false)
const showViewModal = ref(false)
const currentView = ref({
label: 'List View',
icon: 'list',
const currentView = computed(() => {
return {
label: view.value.label || 'List View',
icon: view.value.icon || 'list',
}
})
const view = ref({
@ -163,6 +170,7 @@ function getParams() {
list.value = createResource({
url: 'crm.api.doc.get_list_data',
params: getParams(),
cache: [props.doctype, route.query.view],
onSuccess(data) {
setupViews(data.views)
setupDefaults(data)
@ -228,10 +236,6 @@ function setupViews(views) {
function setupDefaults(data) {
let cv = getView(route.query.view)
currentView.value = {
label: cv?.label || 'List View',
icon: cv?.icon || 'list',
}
defaultParams.value = {
doctype: props.doctype,
@ -241,8 +245,6 @@ function setupDefaults(data) {
rows: data.rows,
custom_view_name: cv?.name || '',
}
data._defaultFilters = props.filters
}
function updateFilter(filters) {