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;
- }, {});
+ );
}