diff --git a/src/app/(main)/reports/utm/UTMView.tsx b/src/app/(main)/reports/utm/UTMView.tsx index ba025824..a8200c2c 100644 --- a/src/app/(main)/reports/utm/UTMView.tsx +++ b/src/app/(main)/reports/utm/UTMView.tsx @@ -15,6 +15,31 @@ function toArray(data: { [key: string]: number } = {}) { .sort(firstBy('value', -1)); } +function parseParameters(data: any[]) { + return data.reduce((obj, { url_query, num }) => { + try { + const searchParams = new URLSearchParams(url_query); + + for (const [key, value] of searchParams) { + if (key.match(/^utm_(\w+)$/)) { + const name = value; + if (!obj[key]) { + obj[key] = { [name]: Number(num) }; + } else if (!obj[key][name]) { + obj[key][name] = Number(num); + } else { + obj[key][name] += Number(num); + } + } + } + } catch { + // Ignore + } + + return obj; + }, {}); +} + export default function UTMView() { const { formatMessage, labels } = useMessages(); const { report } = useContext(ReportContext); @@ -27,7 +52,7 @@ export default function UTMView() { return (
{UTM_PARAMS.map(param => { - const items = toArray(data[param]); + const items = toArray(parseParameters(data)[param]); const chartData = { labels: items.map(({ name }) => name), datasets: [ diff --git a/src/queries/sql/reports/getUTM.ts b/src/queries/sql/reports/getUTM.ts index 5463815b..f96c62d3 100644 --- a/src/queries/sql/reports/getUTM.ts +++ b/src/queries/sql/reports/getUTM.ts @@ -44,7 +44,7 @@ async function relationalQuery( startDate, endDate, }, - ).then(result => parseParameters(result as any[])); + ); } async function clickhouseQuery( @@ -73,30 +73,5 @@ async function clickhouseQuery( startDate, endDate, }, - ).then(result => parseParameters(result as any[])); -} - -function parseParameters(data: any[]) { - return data.reduce((obj, { url_query, num }) => { - try { - const searchParams = new URLSearchParams(url_query); - - for (const [key, value] of searchParams) { - if (key.match(/^utm_(\w+)$/)) { - const name = value; - if (!obj[key]) { - obj[key] = { [name]: Number(num) }; - } else if (!obj[key][name]) { - obj[key][name] = Number(num); - } else { - obj[key][name] += Number(num); - } - } - } - } catch { - // Ignore - } - - return obj; - }, {}); + ); }