diff --git a/src/app/(main)/websites/[websiteId]/WebsiteExpandedView.tsx b/src/app/(main)/websites/[websiteId]/WebsiteExpandedView.tsx
index 4858ec734..64df01311 100644
--- a/src/app/(main)/websites/[websiteId]/WebsiteExpandedView.tsx
+++ b/src/app/(main)/websites/[websiteId]/WebsiteExpandedView.tsx
@@ -18,6 +18,7 @@ import ScreenTable from '@/components/metrics/ScreenTable';
import TagsTable from '@/components/metrics/TagsTable';
import ChannelsTable from '@/components/metrics/ChannelsTable';
import styles from './WebsiteExpandedView.module.css';
+import { sub } from 'date-fns';
const views = {
url: PagesTable,
@@ -136,8 +137,8 @@ export default function WebsiteExpandedView({
const DetailsComponent = views[view] || (() => null);
- const handleChange = (view: any) => {
- router.push(renderUrl({ view }));
+ const handleChange = (view?: any) => {
+ router.push(renderUrl({ view },false,['subview']));
};
const renderValue = (value: string) => items.find(({ key }) => key === value)?.label;
@@ -146,7 +147,7 @@ export default function WebsiteExpandedView({
{formatMessage(labels.back)}
-
+
);
-}
+}
\ No newline at end of file
diff --git a/src/components/hooks/useNavigation.ts b/src/components/hooks/useNavigation.ts
index b727ee90a..ff2ac6a0b 100644
--- a/src/components/hooks/useNavigation.ts
+++ b/src/components/hooks/useNavigation.ts
@@ -6,7 +6,7 @@ export function useNavigation(): {
pathname: string;
query: { [key: string]: string };
router: any;
- renderUrl: (params: any, reset?: boolean) => string;
+ renderUrl: (params: any, reset?: boolean, removeParams?: string[]) => string;
} {
const router = useRouter();
const pathname = usePathname();
@@ -22,8 +22,17 @@ export function useNavigation(): {
return obj;
}, [params]);
- function renderUrl(params: any, reset?: boolean) {
- return reset ? pathname : buildUrl(pathname, { ...query, ...params });
+ function renderUrl(params: any, reset?: boolean, removeParams: string[] = []) {
+ if (reset) {
+ return pathname;
+ } else {
+ const newParams = { ...query, ...params };
+ removeParams.forEach(param => {
+ delete newParams[param];
+ });
+
+ return buildUrl(pathname, newParams);
+ }
}
return { pathname, query, router, renderUrl };
diff --git a/src/components/metrics/PagesTable.tsx b/src/components/metrics/PagesTable.tsx
index 59cfda43d..59422f224 100644
--- a/src/components/metrics/PagesTable.tsx
+++ b/src/components/metrics/PagesTable.tsx
@@ -14,13 +14,13 @@ export function PagesTable({ allowFilter, ...props }: PagesTableProps) {
const {
router,
renderUrl,
- query: { view = 'url' },
+ query: { subview="url" },
} = useNavigation();
const { formatMessage, labels } = useMessages();
const { domain } = useContext(WebsiteContext);
const handleSelect = (key: any) => {
- router.push(renderUrl({ view: key }), { scroll: false });
+ router.push(renderUrl({ subview: key }), { scroll: false });
};
const buttons = [
@@ -45,11 +45,11 @@ export function PagesTable({ allowFilter, ...props }: PagesTableProps) {
const renderLink = ({ x }) => {
return (
- {allowFilter && }
+ {allowFilter && }
);
}
-export default PagesTable;
+export default PagesTable;
\ No newline at end of file
diff --git a/src/components/metrics/ReferrersTable.tsx b/src/components/metrics/ReferrersTable.tsx
index 89729418c..10464652a 100644
--- a/src/components/metrics/ReferrersTable.tsx
+++ b/src/components/metrics/ReferrersTable.tsx
@@ -15,12 +15,12 @@ export function ReferrersTable({ allowFilter, ...props }: ReferrersTableProps) {
const {
router,
renderUrl,
- query: { view = 'referrer' },
+ query: { subview = 'referrer' },
} = useNavigation();
const { formatMessage, labels } = useMessages();
const handleSelect = (key: any) => {
- router.push(renderUrl({ view: key }), { scroll: false });
+ router.push(renderUrl({ subview: key }), { scroll: false });
};
const buttons = [
@@ -35,7 +35,7 @@ export function ReferrersTable({ allowFilter, ...props }: ReferrersTableProps) {
];
const renderLink = ({ x: referrer }) => {
- if (view === 'grouped') {
+ if (subview === 'grouped') {
if (referrer === '_other') {
return `(${formatMessage(labels.other)})`;
} else {
@@ -92,15 +92,15 @@ export function ReferrersTable({ allowFilter, ...props }: ReferrersTableProps) {
title={formatMessage(labels.referrers)}
type="referrer"
metric={formatMessage(labels.visitors)}
- dataFilter={view === 'grouped' ? groupedFilter : undefined}
+ dataFilter={subview === 'grouped' ? groupedFilter : undefined}
renderLabel={renderLink}
>
{allowFilter && (
-
+
)}
>
);
}
-export default ReferrersTable;
+export default ReferrersTable;
\ No newline at end of file