fix: allow creating/updating custom view

This commit is contained in:
Shariq Ansari 2024-06-21 16:15:08 +05:30
parent c06d534744
commit e86a5cf98d
2 changed files with 17 additions and 28 deletions

View File

@ -17,12 +17,12 @@ def create(view):
view.columns = parse_json(view.columns or '[]') view.columns = parse_json(view.columns or '[]')
view.rows = parse_json(view.rows or '[]') view.rows = parse_json(view.rows or '[]')
default_rows = sync_default_list_rows(view.doctype) default_rows = sync_default_rows(view.doctype)
view.rows = view.rows + default_rows if default_rows else view.rows view.rows = view.rows + default_rows if default_rows else view.rows
view.rows = remove_duplicates(view.rows) view.rows = remove_duplicates(view.rows)
if not view.columns: if not view.columns:
view.columns = sync_default_list_columns(view.doctype) view.columns = sync_default_columns(view)
doc = frappe.new_doc("CRM View Settings") doc = frappe.new_doc("CRM View Settings")
doc.name = view.label doc.name = view.label
@ -36,6 +36,7 @@ def create(view):
doc.filters = json.dumps(view.filters) doc.filters = json.dumps(view.filters)
doc.order_by = view.order_by doc.order_by = view.order_by
doc.group_by_field = view.group_by_field doc.group_by_field = view.group_by_field
doc.column_field = view.column_field
doc.columns = json.dumps(view.columns) doc.columns = json.dumps(view.columns)
doc.rows = json.dumps(view.rows) doc.rows = json.dumps(view.rows)
doc.insert() doc.insert()
@ -49,7 +50,7 @@ def update(view):
columns = parse_json(view.columns) or [] columns = parse_json(view.columns) or []
rows = parse_json(view.rows) or [] rows = parse_json(view.rows) or []
default_rows = sync_default_list_rows(view.doctype) default_rows = sync_default_rows(view.doctype)
rows = rows + default_rows if default_rows else rows rows = rows + default_rows if default_rows else rows
rows = remove_duplicates(rows) rows = remove_duplicates(rows)
@ -62,6 +63,7 @@ def update(view):
doc.filters = json.dumps(filters) doc.filters = json.dumps(filters)
doc.order_by = view.order_by doc.order_by = view.order_by
doc.group_by_field = view.group_by_field doc.group_by_field = view.group_by_field
doc.column_field = view.column_field
doc.columns = json.dumps(columns) doc.columns = json.dumps(columns)
doc.rows = json.dumps(rows) doc.rows = json.dumps(rows)
doc.save() doc.save()

View File

@ -297,7 +297,6 @@ const { reload: reloadView, getView } = viewsStore()
const { isManager } = usersStore() const { isManager } = usersStore()
const list = defineModel() const list = defineModel()
const kanban = defineModel('kanban')
const loadMore = defineModel('loadMore') const loadMore = defineModel('loadMore')
const resizeColumn = defineModel('resizeColumn') const resizeColumn = defineModel('resizeColumn')
const updatedPageCount = defineModel('updatedPageCount') const updatedPageCount = defineModel('updatedPageCount')
@ -346,6 +345,7 @@ const view = ref({
icon: '', icon: '',
filters: {}, filters: {},
order_by: 'modified desc', order_by: 'modified desc',
column_field: 'status',
columns: '', columns: '',
rows: '', rows: '',
load_default_columns: false, load_default_columns: false,
@ -399,23 +399,6 @@ function getParams() {
public: _view?.public || false, public: _view?.public || false,
} }
let params = {}
if (route.params.viewType === 'kanban') {
params = {
column_field: column_field,
columns: columns,
rows: rows,
}
} else {
params = {
columns: columns,
rows: rows,
page_length: pageLength.value,
page_length_count: pageLengthCount.value,
}
}
return { return {
doctype: props.doctype, doctype: props.doctype,
filters: filters, filters: filters,
@ -426,7 +409,11 @@ function getParams() {
view_type: view_type, view_type: view_type,
group_by_field: group_by_field, group_by_field: group_by_field,
}, },
...params, column_field: column_field,
columns: columns,
rows: rows,
page_length: pageLength.value,
page_length_count: pageLengthCount.value,
} }
} }
@ -441,17 +428,17 @@ list.value = createResource({
doctype: props.doctype, doctype: props.doctype,
filters: params.filters, filters: params.filters,
order_by: params.order_by, order_by: params.order_by,
page_length: params.page_length, default_filters: props.filters,
page_length_count: params.page_length_count,
column_field: params.column_field,
columns: data.columns,
rows: data.rows,
view: { view: {
custom_view_name: cv?.name || '', custom_view_name: cv?.name || '',
view_type: cv?.type || route.params.viewType || 'list', view_type: cv?.type || route.params.viewType || 'list',
group_by_field: params?.view?.group_by_field || 'owner', group_by_field: params?.view?.group_by_field || 'owner',
}, },
default_filters: props.filters, column_field: params.column_field,
columns: data.columns,
rows: data.rows,
page_length: params.page_length,
page_length_count: params.page_length_count,
} }
}, },
}) })