diff --git a/crm/api/doc.py b/crm/api/doc.py
index f51c8984..1fc41f65 100644
--- a/crm/api/doc.py
+++ b/crm/api/doc.py
@@ -60,6 +60,7 @@ def get_list_data(
doctype: str,
filters: dict,
order_by: str,
+ page_length=20,
columns=None,
rows=None,
custom_view_name=None,
@@ -110,7 +111,7 @@ def get_list_data(
fields=rows,
filters=filters,
order_by=order_by,
- page_length=20,
+ page_length=page_length,
) or []
fields = frappe.get_meta(doctype).fields
@@ -154,8 +155,11 @@ def get_list_data(
"columns": columns,
"rows": rows,
"fields": fields,
+ "page_length": page_length,
"is_default": is_default,
"views": get_views(doctype),
+ "total_count": frappe.client.get_count(doctype, filters=filters),
+ "row_count": len(data),
}
def get_views(doctype):
diff --git a/frappe-ui b/frappe-ui
index 0f4b6650..75407e4d 160000
--- a/frappe-ui
+++ b/frappe-ui
@@ -1 +1 @@
-Subproject commit 0f4b6650598831d4382549c4ee22c360e01e35f0
+Subproject commit 75407e4d0f52b01d572ed2c2e26e2a05abdefb9e
diff --git a/frontend/src/components/ListViews/LeadsListView.vue b/frontend/src/components/ListViews/LeadsListView.vue
index 6e2465b4..b3a61e1b 100644
--- a/frontend/src/components/ListViews/LeadsListView.vue
+++ b/frontend/src/components/ListViews/LeadsListView.vue
@@ -95,6 +95,14 @@
+
diff --git a/frontend/src/components/ViewControls.vue b/frontend/src/components/ViewControls.vue
index b6aa728c..0513335c 100644
--- a/frontend/src/components/ViewControls.vue
+++ b/frontend/src/components/ViewControls.vue
@@ -124,6 +124,16 @@ const view = ref({
pinned: false,
})
+const pageLength = computed(() => list.value?.data?.page_length)
+
+watch(
+ () => list.value?.data?.page_length,
+ (value) => {
+ if (!value) return
+ updatePageLength(value)
+ }
+)
+
function getParams() {
let _view = getView(route.query.view)
const filters = (_view?.filters && JSON.parse(_view.filters)) || {}
@@ -163,6 +173,7 @@ function getParams() {
order_by: order_by,
columns: columns,
rows: rows,
+ page_length: pageLength.value,
custom_view_name: _view?.name || '',
default_filters: props.filters,
}
@@ -179,6 +190,7 @@ list.value = createResource({
doctype: props.doctype,
filters: list.value.params.filters,
order_by: list.value.params.order_by,
+ page_length: list.value.params.page_length,
columns: data.columns,
rows: data.rows,
custom_view_name: cv?.name || '',
@@ -287,6 +299,15 @@ function updateColumns(obj) {
viewUpdated.value = true
}
+function updatePageLength(page_length) {
+ if (!defaultParams.value) {
+ defaultParams.value = getParams()
+ }
+ list.value.params = defaultParams.value
+ list.value.params.page_length = page_length
+ list.value.reload()
+}
+
// View Actions
const viewActions = computed(() => {
let actions = [
diff --git a/frontend/src/pages/Leads.vue b/frontend/src/pages/Leads.vue
index 2dfbfe74..3a23371c 100644
--- a/frontend/src/pages/Leads.vue
+++ b/frontend/src/pages/Leads.vue
@@ -16,8 +16,13 @@
/>