1
0
forked from test/crm

chore: consider view type as list if empty

This commit is contained in:
Shariq Ansari 2024-06-03 12:22:42 +05:30
parent 0e58720944
commit bd23efaded
4 changed files with 20 additions and 18 deletions

View File

@ -251,7 +251,7 @@ def get_list_data(
default_view_filters = { default_view_filters = {
"dt": doctype, "dt": doctype,
"type": view_type, "type": view_type or 'list',
"is_default": 1, "is_default": 1,
"user": frappe.session.user, "user": frappe.session.user,
} }

View File

@ -129,7 +129,7 @@ def create_or_update_default_view(view):
"CRM View Settings", "CRM View Settings",
{ {
"dt": view.doctype, "dt": view.doctype,
"type": view.type, "type": view.type or 'list',
"is_default": True, "is_default": True,
"user": frappe.session.user "user": frappe.session.user
}, },
@ -137,6 +137,7 @@ def create_or_update_default_view(view):
if doc: if doc:
doc = frappe.get_doc("CRM View Settings", doc) doc = frappe.get_doc("CRM View Settings", doc)
doc.label = view.label doc.label = view.label
doc.type = view.type or 'list'
doc.route_name = view.route_name or "" doc.route_name = view.route_name or ""
doc.load_default_columns = view.load_default_columns or False doc.load_default_columns = view.load_default_columns or False
doc.filters = json.dumps(filters) doc.filters = json.dumps(filters)

View File

@ -51,7 +51,7 @@
<div class="flex gap-2"> <div class="flex gap-2">
<GroupBy <GroupBy
v-if="currentViewType === 'group_by'" v-if="route.params.viewType === 'group_by'"
v-model="list" v-model="list"
:doctype="doctype" :doctype="doctype"
:hideLabel="isMobileView" :hideLabel="isMobileView"
@ -142,7 +142,7 @@
</template> </template>
</Button> </Button>
<GroupBy <GroupBy
v-if="currentViewType === 'group_by'" v-if="route.params.viewType === 'group_by'"
v-model="list" v-model="list"
:doctype="doctype" :doctype="doctype"
@update="updateGroupBy" @update="updateGroupBy"
@ -305,9 +305,8 @@ const defaultParams = ref('')
const viewUpdated = ref(false) const viewUpdated = ref(false)
const showViewModal = ref(false) const showViewModal = ref(false)
const currentViewType = computed(() => route.params.viewType || 'list')
function getViewType() { function getViewType() {
let viewType = route.params.viewType || 'list'
let types = { let types = {
list: { list: {
label: __('List View'), label: __('List View'),
@ -315,15 +314,15 @@ function getViewType() {
}, },
group_by: { group_by: {
label: __('Group By View'), label: __('Group By View'),
icon: h(DetailsIcon, { class: 'size-4' }), icon: DetailsIcon,
}, },
} }
return types[currentViewType.value] return types[viewType]
} }
const currentView = computed(() => { 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 { return {
label: label:
_view?.label || props.options?.defaultViewName || getViewType().label, _view?.label || props.options?.defaultViewName || getViewType().label,
@ -364,7 +363,7 @@ watch(updatedPageCount, (value) => {
}) })
function getParams() { 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 filters = (_view?.filters && JSON.parse(_view.filters)) || {}
const order_by = _view?.order_by || 'modified desc' const order_by = _view?.order_by || 'modified desc'
const columns = _view?.columns || '' const columns = _view?.columns || ''
@ -390,7 +389,7 @@ function getParams() {
view.value = { view.value = {
name: '', name: '',
label: getViewType().label, label: getViewType().label,
type: currentViewType.value || 'list', type: route.params.viewType || 'list',
icon: '', icon: '',
filters: {}, filters: {},
order_by: 'modified desc', order_by: 'modified desc',
@ -414,7 +413,7 @@ function getParams() {
page_length_count: pageLengthCount.value, page_length_count: pageLengthCount.value,
view: { view: {
custom_view_name: _view?.name || '', 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', group_by_field: _view?.group_by_field || 'owner',
}, },
default_filters: props.filters, default_filters: props.filters,
@ -432,7 +431,7 @@ list.value = createResource({
} }
}, },
onSuccess(data) { 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() let params = list.value.params ? list.value.params : getParams()
defaultParams.value = { defaultParams.value = {
doctype: props.doctype, doctype: props.doctype,
@ -444,7 +443,7 @@ list.value = createResource({
rows: data.rows, rows: data.rows,
view: { view: {
custom_view_name: cv?.name || '', 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', group_by_field: cv?.group_by_field || 'owner',
}, },
default_filters: props.filters, default_filters: props.filters,
@ -525,6 +524,7 @@ const viewsDropdownOptions = computed(() => {
if (list.value?.data?.views) { if (list.value?.data?.views) {
list.value.data.views.forEach((view) => { list.value.data.views.forEach((view) => {
view.label = __(view.label) view.label = __(view.label)
view.type = view.type || 'list'
view.icon = getIcon(view.icon, view.type) view.icon = getIcon(view.icon, view.type)
view.filters = view.filters =
typeof view.filters == 'string' typeof view.filters == 'string'
@ -534,7 +534,7 @@ const viewsDropdownOptions = computed(() => {
viewUpdated.value = false viewUpdated.value = false
router.push({ router.push({
name: route.name, name: route.name,
params: { viewType: view.type || 'list' }, params: { viewType: view.type },
query: { view: view.name }, query: { view: view.name },
}) })
} }
@ -812,7 +812,7 @@ const viewModalObj = ref({})
function duplicateView() { function duplicateView() {
let label = let label =
__(getView(route.query.view, currentViewType.type, props.doctype)?.label) || __(getView(route.query.view, route.params.viewType, props.doctype)?.label) ||
getViewType().label getViewType().label
view.value.name = '' view.value.name = ''
view.value.label = label + __(' (New)') view.value.label = label + __(' (New)')
@ -821,7 +821,7 @@ function duplicateView() {
} }
function editView() { 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.name = route.query.view
view.value.label = __(cView?.label) || getViewType().label view.value.label = __(cView?.label) || getViewType().label
view.value.icon = cView?.icon || '' view.value.icon = cView?.icon || ''

View File

@ -20,13 +20,14 @@ export const viewsStore = defineStore('crm-views', (doctype) => {
publicViews.value = [] publicViews.value = []
for (let view of views) { for (let view of views) {
viewsByName[view.name] = view viewsByName[view.name] = view
view.type = view.type || 'list'
if (view.pinned) { if (view.pinned) {
pinnedViews.value?.push(view) pinnedViews.value?.push(view)
} }
if (view.public) { if (view.public) {
publicViews.value?.push(view) 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 defaultView.value[view.dt + ' ' + view.type] = view
} }
} }