diff --git a/crm/api/views.py b/crm/api/views.py index f70246e1..ece602a1 100644 --- a/crm/api/views.py +++ b/crm/api/views.py @@ -8,9 +8,14 @@ def get_views(doctype): query = ( frappe.qb.from_(View) .select("*") - .where(Criterion.any([View.user == '', View.user == frappe.session.user])) + .where(Criterion.any([View.user == "", View.user == frappe.session.user])) ) if doctype: query = query.where(View.dt == doctype) views = query.run(as_dict=True) - return views \ No newline at end of file + return views + + +@frappe.whitelist() +def get_default_view(): + return frappe.db.get_single_value("FCRM Settings", "default_view") or None diff --git a/frontend/src/stores/views.js b/frontend/src/stores/views.js index 487870ce..3cded530 100644 --- a/frontend/src/stores/views.js +++ b/frontend/src/stores/views.js @@ -6,7 +6,14 @@ export const viewsStore = defineStore('crm-views', (doctype) => { let viewsByName = reactive({}) let pinnedViews = ref([]) let publicViews = ref([]) - let defaultView = ref({}) + let standardViews = ref({}) + + // Default view + const defaultView = createResource({ + url: 'crm.api.views.get_default_view', + cache: 'crm-default-view', + auto: true, + }) // Views const views = createResource({ @@ -28,7 +35,7 @@ export const viewsStore = defineStore('crm-views', (doctype) => { publicViews.value?.push(view) } if (view.is_default && view.dt) { - defaultView.value[view.dt + ' ' + view.type] = view + standardViews.value[view.dt + ' ' + view.type] = view } } return views @@ -38,7 +45,7 @@ export const viewsStore = defineStore('crm-views', (doctype) => { function getView(view, type, doctype = null) { type = type || 'list' if (!view && doctype) { - return defaultView.value[doctype + ' ' + type] || null + return standardViews.value[doctype + ' ' + type] || null } return viewsByName[view] } @@ -60,6 +67,7 @@ export const viewsStore = defineStore('crm-views', (doctype) => { return { views, defaultView, + standardViews, getPinnedViews, getPublicViews, reload,