Skip to content

Commit

Permalink
Merge pull request #2689 from giuseongit/hosts-support
Browse files Browse the repository at this point in the history
add host to visualization
  • Loading branch information
mikecao committed Jun 19, 2024
2 parents f56849a + d1559c3 commit 0626a33
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 2 deletions.
7 changes: 7 additions & 0 deletions src/app/(main)/websites/[websiteId]/WebsiteExpandedView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import OSTable from 'components/metrics/OSTable';
import PagesTable from 'components/metrics/PagesTable';
import QueryParametersTable from 'components/metrics/QueryParametersTable';
import ReferrersTable from 'components/metrics/ReferrersTable';
import HostsTable from 'components/metrics/HostsTable';
import ScreenTable from 'components/metrics/ScreenTable';
import EventsTable from 'components/metrics/EventsTable';
import SideNav from 'components/layout/SideNav';
Expand All @@ -22,6 +23,7 @@ const views = {
exit: PagesTable,
title: PagesTable,
referrer: ReferrersTable,
host: HostsTable,
browser: BrowsersTable,
os: OSTable,
device: DevicesTable,
Expand Down Expand Up @@ -60,6 +62,11 @@ export default function WebsiteExpandedView({
label: formatMessage(labels.referrers),
url: renderUrl({ view: 'referrer' }),
},
{
key: 'host',
label: formatMessage(labels.hosts),
url: renderUrl({ view: 'host' }),
},
{
key: 'browser',
label: formatMessage(labels.browsers),
Expand Down
4 changes: 3 additions & 1 deletion src/app/(main)/websites/[websiteId]/WebsiteTableView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { useState } from 'react';
import { Grid, GridRow } from 'components/layout/Grid';
import PagesTable from 'components/metrics/PagesTable';
import ReferrersTable from 'components/metrics/ReferrersTable';
import HostsTable from 'components/metrics/HostsTable';
import BrowsersTable from 'components/metrics/BrowsersTable';
import OSTable from 'components/metrics/OSTable';
import DevicesTable from 'components/metrics/DevicesTable';
Expand All @@ -19,9 +20,10 @@ export default function WebsiteTableView({ websiteId }: { websiteId: string }) {

return (
<Grid>
<GridRow columns="two">
<GridRow columns="three">
<PagesTable {...tableProps} />
<ReferrersTable {...tableProps} />
<HostsTable {...tableProps} />
</GridRow>
<GridRow columns="three">
<BrowsersTable {...tableProps} />
Expand Down
1 change: 1 addition & 0 deletions src/components/hooks/useFields.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ export function useFields() {
{ name: 'url', type: 'string', label: formatMessage(labels.url) },
{ name: 'title', type: 'string', label: formatMessage(labels.pageTitle) },
{ name: 'referrer', type: 'string', label: formatMessage(labels.referrer) },
{ name: 'host', type: 'string', label: formatMessage(labels.host) },
{ name: 'query', type: 'string', label: formatMessage(labels.query) },
{ name: 'browser', type: 'string', label: formatMessage(labels.browser) },
{ name: 'os', type: 'string', label: formatMessage(labels.os) },
Expand Down
2 changes: 2 additions & 0 deletions src/components/messages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ export const labels = defineMessages({
entry: { id: 'label.entry', defaultMessage: 'Entry URL' },
exit: { id: 'label.exit', defaultMessage: 'Exit URL' },
referrers: { id: 'label.referrers', defaultMessage: 'Referrers' },
hosts: { id: 'label.hosts', defaultMessage: 'Hosts' },
screens: { id: 'label.screens', defaultMessage: 'Screens' },
browsers: { id: 'label.browsers', defaultMessage: 'Browsers' },
os: { id: 'label.os', defaultMessage: 'OS' },
Expand Down Expand Up @@ -202,6 +203,7 @@ export const labels = defineMessages({
},
dropoff: { id: 'label.dropoff', defaultMessage: 'Dropoff' },
referrer: { id: 'label.referrer', defaultMessage: 'Referrer' },
host: { id: 'label.host', defaultMessage: 'Host' },
country: { id: 'label.country', defaultMessage: 'Country' },
region: { id: 'label.region', defaultMessage: 'Region' },
city: { id: 'label.city', defaultMessage: 'City' },
Expand Down
35 changes: 35 additions & 0 deletions src/components/metrics/HostsTable.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import MetricsTable, { MetricsTableProps } from './MetricsTable';
import FilterLink from 'components/common/FilterLink';
import { useMessages } from 'components/hooks';
import { Flexbox } from 'react-basics';

export function HostsTable(props: MetricsTableProps) {
const { formatMessage, labels } = useMessages();

const renderLink = ({ x: host }) => {
return (
<Flexbox alignItems="center">
<FilterLink
id="host"
value={host}
externalUrl={`https://${host}`}
label={!host && formatMessage(labels.none)}
/>
</Flexbox>
);
};

return (
<>
<MetricsTable
{...props}
title={formatMessage(labels.hosts)}
type="host"
metric={formatMessage(labels.views)}
renderLabel={renderLink}
/>
</>
);
}

export default HostsTable;
5 changes: 4 additions & 1 deletion src/lib/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,9 @@ export const FILTER_DAY = 'filter-day';
export const FILTER_RANGE = 'filter-range';
export const FILTER_REFERRERS = 'filter-referrers';
export const FILTER_PAGES = 'filter-pages';

export const UNIT_TYPES = ['year', 'month', 'hour', 'day', 'minute'];
export const EVENT_COLUMNS = ['url', 'entry', 'exit', 'referrer', 'title', 'query', 'event'];
export const EVENT_COLUMNS = ['url', 'entry', 'exit', 'referrer', 'title', 'query', 'event', 'host'];

export const SESSION_COLUMNS = [
'browser',
Expand All @@ -43,13 +44,15 @@ export const SESSION_COLUMNS = [
'country',
'region',
'city',
'host',
];

export const FILTER_COLUMNS = {
url: 'url_path',
entry: 'url_path',
exit: 'url_path',
referrer: 'referrer_domain',
host: 'hostname',
title: 'page_title',
query: 'url_query',
os: 'os',
Expand Down
2 changes: 2 additions & 0 deletions src/pages/api/websites/[websiteId]/pageviews.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export interface WebsitePageviewRequestQuery {
timezone?: string;
url?: string;
referrer?: string;
host?: string;
title?: string;
os?: string;
browser?: string;
Expand All @@ -36,6 +37,7 @@ const schema = {
timezone: TimezoneTest,
url: yup.string(),
referrer: yup.string(),
host: yup.string(),
title: yup.string(),
os: yup.string(),
browser: yup.string(),
Expand Down
2 changes: 2 additions & 0 deletions src/pages/api/websites/[websiteId]/stats.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export interface WebsiteStatsRequestQuery {
endAt: number;
url?: string;
referrer?: string;
host?: string;
title?: string;
query?: string;
event?: string;
Expand All @@ -33,6 +34,7 @@ const schema = {
endAt: yup.number().required(),
url: yup.string(),
referrer: yup.string(),
host: yup.string(),
title: yup.string(),
query: yup.string(),
event: yup.string(),
Expand Down

0 comments on commit 0626a33

Please sign in to comment.