From bd23efaded5621b214709030d9614298ba6520da Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Mon, 3 Jun 2024 12:22:42 +0530 Subject: [PATCH] chore: consider view type as list if empty --- crm/api/doc.py | 2 +- .../crm_view_settings/crm_view_settings.py | 3 +- frontend/src/components/ViewControls.vue | 30 +++++++++---------- frontend/src/stores/views.js | 3 +- 4 files changed, 20 insertions(+), 18 deletions(-) diff --git a/crm/api/doc.py b/crm/api/doc.py index 39488b99..fae49446 100644 --- a/crm/api/doc.py +++ b/crm/api/doc.py @@ -251,7 +251,7 @@ def get_list_data( default_view_filters = { "dt": doctype, - "type": view_type, + "type": view_type or 'list', "is_default": 1, "user": frappe.session.user, } diff --git a/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py index f483c22c..f33f3e7f 100644 --- a/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py +++ b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py @@ -129,7 +129,7 @@ def create_or_update_default_view(view): "CRM View Settings", { "dt": view.doctype, - "type": view.type, + "type": view.type or 'list', "is_default": True, "user": frappe.session.user }, @@ -137,6 +137,7 @@ def create_or_update_default_view(view): if doc: doc = frappe.get_doc("CRM View Settings", doc) doc.label = view.label + doc.type = view.type or 'list' doc.route_name = view.route_name or "" doc.load_default_columns = view.load_default_columns or False doc.filters = json.dumps(filters) diff --git a/frontend/src/components/ViewControls.vue b/frontend/src/components/ViewControls.vue index c63505f3..6ef947aa 100644 --- a/frontend/src/components/ViewControls.vue +++ b/frontend/src/components/ViewControls.vue @@ -51,7 +51,7 @@
route.params.viewType || 'list') - function getViewType() { + let viewType = route.params.viewType || 'list' let types = { list: { label: __('List View'), @@ -315,15 +314,15 @@ function getViewType() { }, group_by: { label: __('Group By View'), - icon: h(DetailsIcon, { class: 'size-4' }), + icon: DetailsIcon, }, } - return types[currentViewType.value] + return types[viewType] } const currentView = computed(() => { - let _view = getView(route.query.view, currentViewType.value, props.doctype) + let _view = getView(route.query.view, route.params.viewType, props.doctype) return { label: _view?.label || props.options?.defaultViewName || getViewType().label, @@ -364,7 +363,7 @@ watch(updatedPageCount, (value) => { }) function getParams() { - let _view = getView(route.query.view, currentViewType.value, props.doctype) + let _view = getView(route.query.view, route.params.viewType, props.doctype) const filters = (_view?.filters && JSON.parse(_view.filters)) || {} const order_by = _view?.order_by || 'modified desc' const columns = _view?.columns || '' @@ -390,7 +389,7 @@ function getParams() { view.value = { name: '', label: getViewType().label, - type: currentViewType.value || 'list', + type: route.params.viewType || 'list', icon: '', filters: {}, order_by: 'modified desc', @@ -414,7 +413,7 @@ function getParams() { page_length_count: pageLengthCount.value, view: { custom_view_name: _view?.name || '', - view_type: _view?.type || currentViewType.value || 'list', + view_type: _view?.type || route.params.viewType || 'list', group_by_field: _view?.group_by_field || 'owner', }, default_filters: props.filters, @@ -432,7 +431,7 @@ list.value = createResource({ } }, onSuccess(data) { - let cv = getView(route.query.view, currentViewType.value, props.doctype) + let cv = getView(route.query.view, route.params.viewType, props.doctype) let params = list.value.params ? list.value.params : getParams() defaultParams.value = { doctype: props.doctype, @@ -444,7 +443,7 @@ list.value = createResource({ rows: data.rows, view: { custom_view_name: cv?.name || '', - view_type: cv?.type || currentViewType.value || 'list', + view_type: cv?.type || route.params.viewType || 'list', group_by_field: cv?.group_by_field || 'owner', }, default_filters: props.filters, @@ -525,6 +524,7 @@ const viewsDropdownOptions = computed(() => { if (list.value?.data?.views) { list.value.data.views.forEach((view) => { view.label = __(view.label) + view.type = view.type || 'list' view.icon = getIcon(view.icon, view.type) view.filters = typeof view.filters == 'string' @@ -534,7 +534,7 @@ const viewsDropdownOptions = computed(() => { viewUpdated.value = false router.push({ name: route.name, - params: { viewType: view.type || 'list' }, + params: { viewType: view.type }, query: { view: view.name }, }) } @@ -812,7 +812,7 @@ const viewModalObj = ref({}) function duplicateView() { let label = - __(getView(route.query.view, currentViewType.type, props.doctype)?.label) || + __(getView(route.query.view, route.params.viewType, props.doctype)?.label) || getViewType().label view.value.name = '' view.value.label = label + __(' (New)') @@ -821,7 +821,7 @@ function duplicateView() { } function editView() { - let cView = getView(route.query.view, currentViewType.type, props.doctype) + let cView = getView(route.query.view, route.params.viewType, props.doctype) view.value.name = route.query.view view.value.label = __(cView?.label) || getViewType().label view.value.icon = cView?.icon || '' diff --git a/frontend/src/stores/views.js b/frontend/src/stores/views.js index 8dfaeba9..487870ce 100644 --- a/frontend/src/stores/views.js +++ b/frontend/src/stores/views.js @@ -20,13 +20,14 @@ export const viewsStore = defineStore('crm-views', (doctype) => { publicViews.value = [] for (let view of views) { viewsByName[view.name] = view + view.type = view.type || 'list' if (view.pinned) { pinnedViews.value?.push(view) } if (view.public) { publicViews.value?.push(view) } - if (view.is_default && view.dt && view.type) { + if (view.is_default && view.dt) { defaultView.value[view.dt + ' ' + view.type] = view } }