From 0349b82e9a3c4fbc8d1e020d48bcb1c6eb680aca Mon Sep 17 00:00:00 2001 From: Holger Huo Date: Thu, 7 Apr 2022 16:08:03 +0800 Subject: [PATCH 1/3] fix: unable to sort by referrer --- lib/queries.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/queries.js b/lib/queries.js index 7d3dd7a2..aa513d22 100644 --- a/lib/queries.js +++ b/lib/queries.js @@ -469,7 +469,7 @@ export function getPageviewMetrics(website_id, start_at, end_at, field, table, f params.push(decodeURIComponent(url)); } - if (referrer) { + if (referrer && table !== 'event') { refFilter = `and referrer like $${params.length + 1}`; params.push(`%${decodeURIComponent(referrer)}%`); } From 7c744589ae26378fa9e3120b803a64db1b4c1a69 Mon Sep 17 00:00:00 2001 From: Holger Huo Date: Thu, 7 Apr 2022 17:46:39 +0800 Subject: [PATCH 2/3] fix: further address issue in #1043 --- components/metrics/MetricsBar.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/metrics/MetricsBar.js b/components/metrics/MetricsBar.js index 492f2a88..f28aeec7 100644 --- a/components/metrics/MetricsBar.js +++ b/components/metrics/MetricsBar.js @@ -18,7 +18,7 @@ export default function MetricsBar({ websiteId, className }) { const { startDate, endDate, modified } = dateRange; const [format, setFormat] = useState(true); const { - query: { url, ref }, + query: { url, referrer }, } = usePageQuery(); const { data, error, loading } = useFetch( @@ -28,11 +28,11 @@ export default function MetricsBar({ websiteId, className }) { start_at: +startDate, end_at: +endDate, url, - ref, + referrer, }, headers: { [TOKEN_HEADER]: shareToken?.token }, }, - [modified, url, ref], + [modified, url, referrer], ); const formatFunc = format From 0377773e21aa028b91f17c00aca5eb1d51e6596a Mon Sep 17 00:00:00 2001 From: Holger Huo Date: Thu, 7 Apr 2022 21:33:01 +0800 Subject: [PATCH 3/3] fix: forgot to include referrer filter in sessionMetrics --- lib/queries.js | 9 ++++++++- pages/api/website/[id]/metrics.js | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/queries.js b/lib/queries.js index aa513d22..1b89ddea 100644 --- a/lib/queries.js +++ b/lib/queries.js @@ -424,15 +424,21 @@ export function getPageviewStats( export function getSessionMetrics(website_id, start_at, end_at, field, filters = {}) { const params = [website_id, start_at, end_at]; - const { url } = filters; + const { url, referrer } = filters; let urlFilter = ''; + let refFilter = ''; if (url) { urlFilter = `and url=$${params.length + 1}`; params.push(decodeURIComponent(url)); } + if (referrer) { + refFilter = `and referrer like $${params.length + 1}`; + params.push(`%${decodeURIComponent(referrer)}%`); + } + return rawQuery( ` select ${field} x, count(*) y @@ -443,6 +449,7 @@ export function getSessionMetrics(website_id, start_at, end_at, field, filters = where website_id=$1 and created_at between $2 and $3 ${urlFilter} + ${refFilter} ) group by 1 order by 2 desc diff --git a/pages/api/website/[id]/metrics.js b/pages/api/website/[id]/metrics.js index 7e74f044..aa285a55 100644 --- a/pages/api/website/[id]/metrics.js +++ b/pages/api/website/[id]/metrics.js @@ -40,7 +40,7 @@ export default async (req, res) => { const endDate = new Date(+end_at); if (sessionColumns.includes(type)) { - let data = await getSessionMetrics(websiteId, startDate, endDate, type, { url }); + let data = await getSessionMetrics(websiteId, startDate, endDate, type, { url, referrer }); if (type === 'language') { let combined = {};