Merge pull request #1 from mathix420/feat/filter-by-query-param

feat: filter by query params
This commit is contained in:
Arnaud Gissinger 2024-03-20 14:04:19 +01:00 committed by GitHub
commit d05fadc654
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 13 additions and 6 deletions

View file

@ -16,7 +16,7 @@ export default function WebsiteDetails({ websiteId }: { websiteId: string }) {
const showLinks = !pathname.includes('/share/'); const showLinks = !pathname.includes('/share/');
const { const {
query: { view, url, referrer, os, browser, device, country, region, city, title }, query: { view, url, referrer, query, os, browser, device, country, region, city, title },
} = useNavigation(); } = useNavigation();
if (isLoading || error) { if (isLoading || error) {
@ -26,7 +26,7 @@ export default function WebsiteDetails({ websiteId }: { websiteId: string }) {
return ( return (
<> <>
<WebsiteHeader websiteId={websiteId} showLinks={showLinks} /> <WebsiteHeader websiteId={websiteId} showLinks={showLinks} />
<FilterTags params={{ url, referrer, os, browser, device, country, region, city, title }} /> <FilterTags params={{ url, referrer, query, os, browser, device, country, region, city, title }} />
<WebsiteMetricsBar websiteId={websiteId} sticky={true} /> <WebsiteMetricsBar websiteId={websiteId} sticky={true} />
<WebsiteChart websiteId={websiteId} /> <WebsiteChart websiteId={websiteId} />
{!website && <Loading icon="dots" style={{ minHeight: 300 }} />} {!website && <Loading icon="dots" style={{ minHeight: 300 }} />}

View file

@ -16,6 +16,7 @@ export function WebsiteFilterButton({
const fieldOptions = [ const fieldOptions = [
{ name: 'url', type: 'string', label: formatMessage(labels.url) }, { name: 'url', type: 'string', label: formatMessage(labels.url) },
{ name: 'referrer', type: 'string', label: formatMessage(labels.referrer) }, { name: 'referrer', type: 'string', label: formatMessage(labels.referrer) },
{ name: 'query', type: 'string', label: formatMessage(labels.query) },
{ name: 'browser', type: 'string', label: formatMessage(labels.browser) }, { name: 'browser', type: 'string', label: formatMessage(labels.browser) },
{ name: 'os', type: 'string', label: formatMessage(labels.os) }, { name: 'os', type: 'string', label: formatMessage(labels.os) },
{ name: 'device', type: 'string', label: formatMessage(labels.device) }, { name: 'device', type: 'string', label: formatMessage(labels.device) },

View file

@ -6,7 +6,7 @@ export function useWebsitePageviews(websiteId: string, options?: { [key: string]
const { startDate, endDate, unit } = dateRange; const { startDate, endDate, unit } = dateRange;
const [timezone] = useTimezone(); const [timezone] = useTimezone();
const { const {
query: { url, referrer, os, browser, device, country, region, city, title }, query: { url, referrer, query, os, browser, device, country, region, city, title },
} = useNavigation(); } = useNavigation();
const params = { const params = {
@ -16,6 +16,7 @@ export function useWebsitePageviews(websiteId: string, options?: { [key: string]
timezone, timezone,
url, url,
referrer, referrer,
query,
os, os,
browser, browser,
device, device,

View file

@ -5,7 +5,7 @@ export function useWebsiteStats(websiteId: string, options?: { [key: string]: st
const [dateRange] = useDateRange(websiteId); const [dateRange] = useDateRange(websiteId);
const { startDate, endDate } = dateRange; const { startDate, endDate } = dateRange;
const { const {
query: { url, referrer, title, os, browser, device, country, region, city }, query: { url, referrer, query, title, os, browser, device, country, region, city },
} = useNavigation(); } = useNavigation();
const params = { const params = {
@ -13,6 +13,7 @@ export function useWebsiteStats(websiteId: string, options?: { [key: string]: st
endAt: +endDate, endAt: +endDate,
url, url,
referrer, referrer,
query,
title, title,
os, os,
browser, browser,

View file

@ -48,7 +48,7 @@ export function MetricsTable({
const [{ startDate, endDate }] = useDateRange(websiteId); const [{ startDate, endDate }] = useDateRange(websiteId);
const { const {
renderUrl, renderUrl,
query: { url, referrer, title, os, browser, device, country, region, city }, query: { url, referrer, query, title, os, browser, device, country, region, city },
} = useNavigation(); } = useNavigation();
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const { dir } = useLocale(); const { dir } = useLocale();
@ -61,6 +61,7 @@ export function MetricsTable({
endAt: +endDate, endAt: +endDate,
url, url,
referrer, referrer,
query,
os, os,
title, title,
browser, browser,

View file

@ -14,6 +14,7 @@ export interface WebsitePageviewRequestQuery {
timezone?: string; timezone?: string;
url?: string; url?: string;
referrer?: string; referrer?: string;
query?: string;
title?: string; title?: string;
os?: string; os?: string;
browser?: string; browser?: string;
@ -34,6 +35,7 @@ const schema = {
timezone: TimezoneTest, timezone: TimezoneTest,
url: yup.string(), url: yup.string(),
referrer: yup.string(), referrer: yup.string(),
query: yup.string(),
title: yup.string(), title: yup.string(),
os: yup.string(), os: yup.string(),
browser: yup.string(), browser: yup.string(),
@ -52,7 +54,7 @@ export default async (
await useAuth(req, res); await useAuth(req, res);
await useValidate(schema, req, res); await useValidate(schema, req, res);
const { websiteId, timezone, url, referrer, title, os, browser, device, country, region, city } = const { websiteId, timezone, url, referrer, query, title, os, browser, device, country, region, city } =
req.query; req.query;
if (req.method === 'GET') { if (req.method === 'GET') {
@ -69,6 +71,7 @@ export default async (
unit, unit,
url, url,
referrer, referrer,
query,
title, title,
os, os,
browser, browser,