mirror of
https://github.com/umami-software/umami.git
synced 2026-02-08 06:37:18 +01:00
Merge branch 'dev' of https://github.com/umami-software/umami into francis/uc-24-kafka-test
This commit is contained in:
commit
fc3c39be3c
110 changed files with 635 additions and 2499 deletions
|
|
@ -9,3 +9,10 @@ export function chunk(arr, size) {
|
|||
|
||||
return chunks;
|
||||
}
|
||||
|
||||
export function sortArrayByMap(arr, map = [], key) {
|
||||
if (!arr) return [];
|
||||
if (map.length === 0) return arr;
|
||||
|
||||
return map.map(id => arr.find(item => item[key] === id));
|
||||
}
|
||||
|
|
|
|||
13
lib/db.js
13
lib/db.js
|
|
@ -203,7 +203,6 @@ export function getFilterQuery(table, column, filters = {}, params = []) {
|
|||
if (table === 'pageview' || table === 'event') {
|
||||
arr.push(`and ${table}.${key}=$${params.length + 1}`);
|
||||
params.push(decodeURIComponent(filter));
|
||||
console.log(params);
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
@ -238,6 +237,11 @@ export function getFilterQuery(table, column, filters = {}, params = []) {
|
|||
params.push(`%://${filter}/%`);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'query':
|
||||
if (table === 'pageview') {
|
||||
arr.push(`and ${table}.url like '%?%'`);
|
||||
}
|
||||
}
|
||||
|
||||
return arr;
|
||||
|
|
@ -247,9 +251,12 @@ export function getFilterQuery(table, column, filters = {}, params = []) {
|
|||
}
|
||||
|
||||
export function parseFilters(table, column, filters = {}, params = [], sessionKey = 'session_id') {
|
||||
const { domain, url, event_url, referrer, os, browser, device, country, event_name } = filters;
|
||||
const { domain, url, event_url, referrer, os, browser, device, country, event_name, query } =
|
||||
filters;
|
||||
|
||||
const pageviewFilters = { domain, url, referrer };
|
||||
console.log({ table, column, filters, params });
|
||||
|
||||
const pageviewFilters = { domain, url, referrer, query };
|
||||
const sessionFilters = { os, browser, device, country };
|
||||
const eventFilters = { url: event_url, event_name };
|
||||
|
||||
|
|
|
|||
|
|
@ -68,18 +68,37 @@ export const refFilter = data => {
|
|||
return Object.keys(map).map(key => ({ x: key, y: map[key], w: links[key] }));
|
||||
};
|
||||
|
||||
export const eventTypeFilter = (data, types) => {
|
||||
if (!types || types.length === 0) {
|
||||
return data;
|
||||
}
|
||||
|
||||
return data.filter(({ x }) => {
|
||||
const [event] = x.split('\t');
|
||||
return types.some(type => type === event);
|
||||
});
|
||||
};
|
||||
|
||||
export const percentFilter = data => {
|
||||
const total = data.reduce((n, { y }) => n + y, 0);
|
||||
return data.map(({ x, y, ...props }) => ({ x, y, z: total ? (y / total) * 100 : 0, ...props }));
|
||||
};
|
||||
|
||||
export const paramFilter = data => {
|
||||
const map = data.reduce((obj, { x, y }) => {
|
||||
try {
|
||||
const searchParams = new URLSearchParams(x.split('?')[1]);
|
||||
|
||||
for (const [key, value] of searchParams) {
|
||||
if (!obj[key]) {
|
||||
obj[key] = { [value]: y };
|
||||
} else if (!obj[key][value]) {
|
||||
obj[key][value] = y;
|
||||
} else {
|
||||
obj[key][value] += y;
|
||||
}
|
||||
}
|
||||
} catch {
|
||||
// Ignore
|
||||
}
|
||||
|
||||
return obj;
|
||||
}, {});
|
||||
|
||||
const d = Object.keys(map).flatMap(key =>
|
||||
Object.keys(map[key]).map(n => ({ x: `${key}=${n}`, p: key, v: n, y: map[key][n] })),
|
||||
);
|
||||
|
||||
console.log({ map, d });
|
||||
|
||||
return d;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -78,14 +78,3 @@ export function stringToColor(str) {
|
|||
}
|
||||
return color;
|
||||
}
|
||||
|
||||
export function orderByWebsiteMap(websites, orderMap) {
|
||||
if (!websites) return [];
|
||||
|
||||
let ordered = [...websites];
|
||||
for (let website of websites) {
|
||||
ordered[orderMap[website.website_uuid]] = website;
|
||||
}
|
||||
|
||||
return ordered;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,8 +69,6 @@ export const getItem = (key, session) => {
|
|||
return JSON.parse(value);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
export const removeItem = (key, session) => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue