From c4e31f435b8f566a238989d6888f81bc99f8b88c Mon Sep 17 00:00:00 2001 From: Suraj Shetty Date: Tue, 28 Feb 2023 13:37:04 +0530 Subject: [PATCH] feat: Add grouping based on source And a formatter for source column --- .../website_analytics/website_analytics.js | 20 +++++++++++++++++++ .../website_analytics/website_analytics.py | 8 +++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/frappe/website/report/website_analytics/website_analytics.js b/frappe/website/report/website_analytics/website_analytics.js index a3cfdde0b8..d88a9de663 100644 --- a/frappe/website/report/website_analytics/website_analytics.js +++ b/frappe/website/report/website_analytics/website_analytics.js @@ -36,8 +36,28 @@ frappe.query_reports["Website Analytics"] = { { value: "path", label: __("Path") }, { value: "browser", label: __("Browser") }, { value: "referrer", label: __("Referrer") }, + { value: "source", label: __("Source") }, ], default: "path", }, ], + formatter: function (value, row, column, data, default_formatter) { + if ( + frappe.query_report.get_filter_value("group_by") === "source" && + column.id === "source" + ) { + if (value) { + try { + let doctype = value.split(">")[0].trim(); + let name = value.split(">")[1].trim(); + return frappe.utils.get_form_link(doctype, name, true, value); + } catch (e) { + // skip and return with default formatter + } + } else { + return `${__("Unknown")}`; + } + } + return default_formatter(value, row, column, data); + }, }; diff --git a/frappe/website/report/website_analytics/website_analytics.py b/frappe/website/report/website_analytics/website_analytics.py index c912d9ede5..dc75cdc825 100644 --- a/frappe/website/report/website_analytics/website_analytics.py +++ b/frappe/website/report/website_analytics/website_analytics.py @@ -42,7 +42,13 @@ class WebsiteAnalytics: meta = frappe.get_meta("Web Page View") group_by = meta.get_field(self.group_by) return [ - {"fieldname": group_by.fieldname, "label": group_by.label, "fieldtype": "Data", "width": 300}, + { + "fieldname": group_by.fieldname, + "label": group_by.label, + "fieldtype": "Data", + "width": 500, + "align": "left", + }, {"fieldname": "count", "label": "Page Views", "fieldtype": "Int", "width": 150}, {"fieldname": "unique_count", "label": "Unique Visitors", "fieldtype": "Int", "width": 150}, ]