fix: implement view type in view controls component
This commit is contained in:
parent
cf693244b7
commit
6dd1ad9678
@ -159,12 +159,15 @@ def get_list_data(
|
||||
page_length_count=20,
|
||||
columns=None,
|
||||
rows=None,
|
||||
custom_view_name=None,
|
||||
view=None,
|
||||
default_filters=None,
|
||||
):
|
||||
custom_view = False
|
||||
filters = frappe._dict(filters)
|
||||
|
||||
custom_view_name = view.get('custom_view_name') if view else None
|
||||
view_type = view.get('view_type') if view else None
|
||||
|
||||
for key in filters:
|
||||
value = filters[key]
|
||||
if isinstance(value, list):
|
||||
@ -197,8 +200,8 @@ def get_list_data(
|
||||
if not rows:
|
||||
rows = ["name"]
|
||||
|
||||
if not custom_view and frappe.db.exists("CRM View Settings", doctype):
|
||||
list_view_settings = frappe.get_doc("CRM View Settings", doctype)
|
||||
if not custom_view and frappe.db.exists("CRM View Settings", {"dt": doctype, "type": view_type}):
|
||||
list_view_settings = frappe.get_doc("CRM View Settings", {"dt": doctype, "type": view_type})
|
||||
columns = frappe.parse_json(list_view_settings.columns)
|
||||
rows = frappe.parse_json(list_view_settings.rows)
|
||||
is_default = False
|
||||
|
||||
@ -355,7 +355,7 @@ function getViewType() {
|
||||
}
|
||||
|
||||
const currentView = computed(() => {
|
||||
let _view = getView(route.query.view)
|
||||
let _view = getView(route.query.view, currentViewType.value)
|
||||
return {
|
||||
label:
|
||||
_view?.label || props.options?.defaultViewName || getViewType().label,
|
||||
@ -366,6 +366,7 @@ const currentView = computed(() => {
|
||||
const view = ref({
|
||||
name: '',
|
||||
label: '',
|
||||
type: 'list',
|
||||
icon: '',
|
||||
filters: {},
|
||||
order_by: 'modified desc',
|
||||
@ -395,7 +396,7 @@ watch(updatedPageCount, (value) => {
|
||||
})
|
||||
|
||||
function getParams() {
|
||||
let _view = getView(route.query.view, props.doctype)
|
||||
let _view = getView(route.query.view, currentViewType.value, props.doctype)
|
||||
const filters = (_view?.filters && JSON.parse(_view.filters)) || {}
|
||||
const order_by = _view?.order_by || 'modified desc'
|
||||
const columns = _view?.columns || ''
|
||||
@ -405,6 +406,7 @@ function getParams() {
|
||||
view.value = {
|
||||
name: _view.name,
|
||||
label: _view.label,
|
||||
type: _view.type || 'list',
|
||||
icon: _view.icon,
|
||||
filters: _view.filters,
|
||||
order_by: _view.order_by,
|
||||
@ -419,6 +421,7 @@ function getParams() {
|
||||
view.value = {
|
||||
name: '',
|
||||
label: '',
|
||||
type: currentViewType.value || 'list',
|
||||
icon: '',
|
||||
filters: {},
|
||||
order_by: 'modified desc',
|
||||
@ -439,7 +442,10 @@ function getParams() {
|
||||
rows: rows,
|
||||
page_length: pageLength.value,
|
||||
page_length_count: pageLengthCount.value,
|
||||
custom_view_name: _view?.name || '',
|
||||
view: {
|
||||
custom_view_name: _view?.name || '',
|
||||
view_type: _view?.type || currentViewType.value || 'list',
|
||||
},
|
||||
default_filters: props.filters,
|
||||
}
|
||||
}
|
||||
@ -455,7 +461,7 @@ list.value = createResource({
|
||||
}
|
||||
},
|
||||
onSuccess(data) {
|
||||
let cv = getView(route.query.view)
|
||||
let cv = getView(route.query.view, currentViewType.value)
|
||||
let params = list.value.params ? list.value.params : getParams()
|
||||
defaultParams.value = {
|
||||
doctype: props.doctype,
|
||||
@ -465,7 +471,10 @@ list.value = createResource({
|
||||
page_length_count: params.page_length_count,
|
||||
columns: data.columns,
|
||||
rows: data.rows,
|
||||
custom_view_name: cv?.name || '',
|
||||
view: {
|
||||
custom_view_name: cv?.name || '',
|
||||
view_type: cv?.type || currentViewType.value || 'list',
|
||||
},
|
||||
default_filters: props.filters,
|
||||
}
|
||||
},
|
||||
@ -696,6 +705,7 @@ function create_or_update_default_view() {
|
||||
reloadView()
|
||||
view.value = {
|
||||
label: view.value.label,
|
||||
type: view.value.type || 'list',
|
||||
icon: view.value.icon,
|
||||
name: view.value.name,
|
||||
filters: defaultParams.value.filters,
|
||||
@ -803,7 +813,9 @@ const viewActions = computed(() => {
|
||||
const viewModalObj = ref({})
|
||||
|
||||
function duplicateView() {
|
||||
let label = __(getView(route.query.view)?.label) || __('List View')
|
||||
let label =
|
||||
__(getView(route.query.view, currentViewType.type)?.label) ||
|
||||
__('List View')
|
||||
view.value.name = ''
|
||||
view.value.label = label + __(' (New)')
|
||||
viewModalObj.value = view.value
|
||||
@ -811,7 +823,7 @@ function duplicateView() {
|
||||
}
|
||||
|
||||
function editView() {
|
||||
let cView = getView(route.query.view)
|
||||
let cView = getView(route.query.view, currentViewType.type)
|
||||
view.value.name = route.query.view
|
||||
view.value.label = __(cView?.label) || __('List View')
|
||||
view.value.icon = cView?.icon || ''
|
||||
@ -857,6 +869,7 @@ function cancelChanges() {
|
||||
function saveView() {
|
||||
view.value = {
|
||||
label: view.value.label,
|
||||
type: view.value.type || 'list',
|
||||
icon: view.value.icon,
|
||||
name: view.value.name,
|
||||
filters: defaultParams.value.filters,
|
||||
@ -925,7 +938,7 @@ defineExpose({ applyFilter, applyLikeFilter, likeDoc })
|
||||
|
||||
// Watchers
|
||||
watch(
|
||||
() => getView(route.query.view),
|
||||
() => getView(route.query.view, currentViewType.value),
|
||||
(value, old_value) => {
|
||||
if (JSON.stringify(value) === JSON.stringify(old_value)) return
|
||||
reload()
|
||||
@ -933,11 +946,8 @@ watch(
|
||||
{ deep: true }
|
||||
)
|
||||
|
||||
watch(
|
||||
() => route,
|
||||
(value, old_value) => {
|
||||
if (value === old_value) return
|
||||
reload()
|
||||
}
|
||||
)
|
||||
watch([() => route, () => route.params.viewType], (value, old_value) => {
|
||||
if (value[0] === old_value[0] && value[1] === value[0]) return
|
||||
reload()
|
||||
})
|
||||
</script>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user