fix: added list view cache
This commit is contained in:
parent
6cabe46852
commit
374ef6fc79
@ -125,6 +125,10 @@ const props = defineProps({
|
|||||||
type: String,
|
type: String,
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
|
default_filters: {
|
||||||
|
type: Object,
|
||||||
|
default: {},
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const emit = defineEmits(['update'])
|
const emit = defineEmits(['update'])
|
||||||
@ -155,8 +159,8 @@ const filters = computed(() => {
|
|||||||
let allFilters = list.value?.params?.filters
|
let allFilters = list.value?.params?.filters
|
||||||
if (!allFilters || !filterableFields.data) return new Set()
|
if (!allFilters || !filterableFields.data) return new Set()
|
||||||
// remove default filters
|
// remove default filters
|
||||||
if (list.value.data._defaultFilters) {
|
if (props.default_filters) {
|
||||||
allFilters = removeCommonFilters(list.value.data._defaultFilters, allFilters)
|
allFilters = removeCommonFilters(props.default_filters, allFilters)
|
||||||
}
|
}
|
||||||
return convertFilters(filterableFields.data, allFilters)
|
return convertFilters(filterableFields.data, allFilters)
|
||||||
})
|
})
|
||||||
@ -165,11 +169,11 @@ function removeCommonFilters(commonFilters, allFilters) {
|
|||||||
for (const key in commonFilters) {
|
for (const key in commonFilters) {
|
||||||
if (commonFilters.hasOwnProperty(key) && allFilters.hasOwnProperty(key)) {
|
if (commonFilters.hasOwnProperty(key) && allFilters.hasOwnProperty(key)) {
|
||||||
if (commonFilters[key] === allFilters[key]) {
|
if (commonFilters[key] === allFilters[key]) {
|
||||||
delete allFilters[key];
|
delete allFilters[key]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return allFilters;
|
return allFilters
|
||||||
}
|
}
|
||||||
|
|
||||||
function convertFilters(data, allFilters) {
|
function convertFilters(data, allFilters) {
|
||||||
|
|||||||
@ -26,7 +26,12 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center gap-2">
|
<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" />
|
<SortBy v-model="list" :doctype="doctype" @update="updateSort" />
|
||||||
<ViewSettings
|
<ViewSettings
|
||||||
v-model="list"
|
v-model="list"
|
||||||
@ -101,9 +106,11 @@ const defaultParams = ref('')
|
|||||||
const viewUpdated = ref(false)
|
const viewUpdated = ref(false)
|
||||||
const showViewModal = ref(false)
|
const showViewModal = ref(false)
|
||||||
|
|
||||||
const currentView = ref({
|
const currentView = computed(() => {
|
||||||
label: 'List View',
|
return {
|
||||||
icon: 'list',
|
label: view.value.label || 'List View',
|
||||||
|
icon: view.value.icon || 'list',
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const view = ref({
|
const view = ref({
|
||||||
@ -163,6 +170,7 @@ function getParams() {
|
|||||||
list.value = createResource({
|
list.value = createResource({
|
||||||
url: 'crm.api.doc.get_list_data',
|
url: 'crm.api.doc.get_list_data',
|
||||||
params: getParams(),
|
params: getParams(),
|
||||||
|
cache: [props.doctype, route.query.view],
|
||||||
onSuccess(data) {
|
onSuccess(data) {
|
||||||
setupViews(data.views)
|
setupViews(data.views)
|
||||||
setupDefaults(data)
|
setupDefaults(data)
|
||||||
@ -228,10 +236,6 @@ function setupViews(views) {
|
|||||||
|
|
||||||
function setupDefaults(data) {
|
function setupDefaults(data) {
|
||||||
let cv = getView(route.query.view)
|
let cv = getView(route.query.view)
|
||||||
currentView.value = {
|
|
||||||
label: cv?.label || 'List View',
|
|
||||||
icon: cv?.icon || 'list',
|
|
||||||
}
|
|
||||||
|
|
||||||
defaultParams.value = {
|
defaultParams.value = {
|
||||||
doctype: props.doctype,
|
doctype: props.doctype,
|
||||||
@ -241,8 +245,6 @@ function setupDefaults(data) {
|
|||||||
rows: data.rows,
|
rows: data.rows,
|
||||||
custom_view_name: cv?.name || '',
|
custom_view_name: cv?.name || '',
|
||||||
}
|
}
|
||||||
|
|
||||||
data._defaultFilters = props.filters
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateFilter(filters) {
|
function updateFilter(filters) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user