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
}
}