From 557293adfef373d5e7d1bbf2b62756377f69a214 Mon Sep 17 00:00:00 2001 From: Maxim Sysoev Date: Wed, 15 May 2024 15:48:05 +0300 Subject: [PATCH] feat: show link field title in sidebar filters if set (#26417) * feat: In sidebar filter link field show Title of Field if set (#26413) * fix: test_list_view_child_table_filter_with_created_by_filter * fix tests * fix: formatting * fix: formatting * refactor: cleanup logic slightly, reduce code repetition Respect value of show_title_field_in_link Signed-off-by: Akhil Narang --------- Signed-off-by: Akhil Narang Co-authored-by: Akhil Narang --- frappe/desk/listview.py | 16 ++++++++++++++-- .../js/frappe/list/list_sidebar_group_by.js | 2 ++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/frappe/desk/listview.py b/frappe/desk/listview.py index cc32e4ab063..843d8c695bc 100644 --- a/frappe/desk/listview.py +++ b/frappe/desk/listview.py @@ -60,10 +60,12 @@ def get_group_by_count(doctype: str, current_filters: str, field: str) -> list[d .run(as_dict=True) ) - if not frappe.get_meta(doctype).has_field(field) and not is_default_field(field): + meta = frappe.get_meta(doctype) + + if not meta.has_field(field) and not is_default_field(field): raise ValueError("Field does not belong to doctype") - return frappe.get_list( + data = frappe.get_list( doctype, filters=current_filters, group_by=f"`tab{doctype}`.{field}", @@ -71,3 +73,13 @@ def get_group_by_count(doctype: str, current_filters: str, field: str) -> list[d order_by="count desc", limit=50, ) + + # Add in title if it's a link field and `show_title_field_in_link` is set + if (field_meta := meta.get_field(field)) and field_meta.fieldtype == "Link": + link_meta = frappe.get_meta(field_meta.options) + if link_meta.show_title_field_in_link: + title_field = link_meta.get_title_field() + for item in data: + item.title = frappe.get_value(field_meta.options, item.name, title_field) + + return data diff --git a/frappe/public/js/frappe/list/list_sidebar_group_by.js b/frappe/public/js/frappe/list/list_sidebar_group_by.js index 8430b54678d..53f5406f4b5 100644 --- a/frappe/public/js/frappe/list/list_sidebar_group_by.js +++ b/frappe/public/js/frappe/list/list_sidebar_group_by.js @@ -221,6 +221,8 @@ frappe.views.ListGroupBy = class ListGroupBy { label = __("Me"); } else if (fieldtype && fieldtype == "Check") { label = field.name == "0" ? __("No") : __("Yes"); + } else if (fieldtype && fieldtype == "Link" && field.title) { + label = __(field.title); } else { label = __(field.name); }