diff --git a/frappe/core/doctype/report/report.json b/frappe/core/doctype/report/report.json index 7a38bbb742a7..4bdcb8774d63 100644 --- a/frappe/core/doctype/report/report.json +++ b/frappe/core/doctype/report/report.json @@ -15,6 +15,7 @@ "report_type", "letter_head", "add_total_row", + "enable_card_view_in_summary", "disabled", "prepared_report", "timeout", @@ -190,12 +191,18 @@ "fieldname": "timeout", "fieldtype": "Int", "label": "Timeout (In Seconds)" + }, + { + "default": "0", + "fieldname": "enable_card_view_in_summary", + "fieldtype": "Check", + "label": "Enable Card View in Summary" } ], "idx": 1, "index_web_pages_for_search": 1, "links": [], - "modified": "2024-08-31 20:34:10.018811", + "modified": "2025-07-04 14:04:43.497377", "modified_by": "Administrator", "module": "Core", "name": "Report", @@ -248,4 +255,4 @@ "sort_order": "DESC", "states": [], "track_changes": 1 -} +} \ No newline at end of file diff --git a/frappe/core/doctype/report/report.py b/frappe/core/doctype/report/report.py index e2d4de08fd27..12eeca7b7548 100644 --- a/frappe/core/doctype/report/report.py +++ b/frappe/core/doctype/report/report.py @@ -31,6 +31,7 @@ class Report(Document): add_total_row: DF.Check columns: DF.Table[ReportColumn] disabled: DF.Check + enable_card_view_in_summary: DF.Check filters: DF.Table[ReportFilter] is_standard: DF.Literal["No", "Yes"] javascript: DF.Code | None @@ -46,7 +47,6 @@ class Report(Document): report_type: DF.Literal["Report Builder", "Query Report", "Script Report", "Custom Report"] roles: DF.Table[HasRole] timeout: DF.Int - # end: auto-generated types def validate(self): """only administrator can save standard report""" diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index b16c274749e2..e10eb7934a4f 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -770,13 +770,81 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { } render_summary(data) { - data.forEach((summary) => { - frappe.utils.build_summary_item(summary).appendTo(this.$summary); - }); + this.$summary.empty(); + + // Check if the report enable card view + if (this.report_doc.enable_card_view_in_summary) { + let html = `
| ${item.label} | +${value} | +