umami/src/app/(main)/websites/[websiteId]/WebsiteDetails.tsx

41 lines
1.5 KiB
TypeScript
Raw Normal View History

import { Loading } from 'react-basics';
2023-09-29 12:29:22 +00:00
import { usePathname } from 'next/navigation';
import Page from 'components/layout/Page';
import FilterTags from 'components/metrics/FilterTags';
2024-02-06 07:59:33 +00:00
import { useNavigation, useWebsite } from 'components/hooks';
2023-09-29 12:29:22 +00:00
import WebsiteChart from './WebsiteChart';
2023-12-10 10:02:24 +00:00
import WebsiteExpandedView from './WebsiteExpandedView';
import WebsiteHeader from './WebsiteHeader';
2023-09-29 12:29:22 +00:00
import WebsiteMetricsBar from './WebsiteMetricsBar';
2023-10-15 20:12:29 +00:00
import WebsiteTableView from './WebsiteTableView';
2023-12-03 11:07:03 +00:00
export default function WebsiteDetails({ websiteId }: { websiteId: string }) {
const { data: website, isLoading, error } = useWebsite(websiteId);
2023-09-29 12:29:22 +00:00
const pathname = usePathname();
2023-07-12 02:33:34 +00:00
const showLinks = !pathname.includes('/share/');
const {
query: { view, url, referrer, os, browser, device, country, region, city, title },
2023-10-03 16:45:02 +00:00
} = useNavigation();
2023-09-29 12:29:22 +00:00
if (isLoading || error) {
return <Page isLoading={isLoading} error={error} />;
}
return (
2023-09-29 12:29:22 +00:00
<>
2023-07-12 02:33:34 +00:00
<WebsiteHeader websiteId={websiteId} showLinks={showLinks} />
2023-12-03 11:07:03 +00:00
<FilterTags params={{ url, referrer, os, browser, device, country, region, city, title }} />
2023-08-25 23:05:02 +00:00
<WebsiteMetricsBar websiteId={websiteId} sticky={true} />
<WebsiteChart websiteId={websiteId} />
{!website && <Loading icon="dots" style={{ minHeight: 300 }} />}
{website && (
<>
2023-12-13 08:02:54 +00:00
{!view && <WebsiteTableView websiteId={websiteId} domainName={website.domain} />}
{view && <WebsiteExpandedView websiteId={websiteId} domainName={website.domain} />}
</>
)}
2023-09-29 12:29:22 +00:00
</>
);
}