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