Fixed websites paging.

This commit is contained in:
Mike Cao 2024-02-19 11:31:11 -08:00
parent 9671414edd
commit d709f4eb80
14 changed files with 34 additions and 36 deletions

View File

@ -2,7 +2,7 @@
import TeamsDataTable from './TeamsDataTable'; import TeamsDataTable from './TeamsDataTable';
import TeamsHeader from './TeamsHeader'; import TeamsHeader from './TeamsHeader';
export default function TeamsPage() { export default function TeamsSettingsPage() {
return ( return (
<> <>
<TeamsHeader /> <TeamsHeader />

View File

@ -1,8 +1,8 @@
import { Metadata } from 'next'; import { Metadata } from 'next';
import TeamsPage from './TeamsPage'; import TeamsSettingsPage from './TeamsSettingsPage';
export default function () { export default function () {
return <TeamsPage />; return <TeamsSettingsPage />;
} }
export const metadata: Metadata = { export const metadata: Metadata = {

View File

@ -2,7 +2,7 @@
import UsersDataTable from './UsersDataTable'; import UsersDataTable from './UsersDataTable';
import UsersHeader from './UsersHeader'; import UsersHeader from './UsersHeader';
export default function UsersPage() { export default function UsersSettingsPage() {
return ( return (
<> <>
<UsersHeader /> <UsersHeader />

View File

@ -1,8 +1,8 @@
import { Metadata } from 'next'; import { Metadata } from 'next';
import UsersPage from './UsersPage'; import UsersSettingsPage from './UsersSettingsPage';
export default function () { export default function () {
return <UsersPage />; return <UsersSettingsPage />;
} }
export const metadata: Metadata = { export const metadata: Metadata = {
title: 'Users', title: 'Users',

View File

@ -4,21 +4,19 @@ import DataTable from 'components/common/DataTable';
import { useWebsites } from 'components/hooks'; import { useWebsites } from 'components/hooks';
export function WebsitesDataTable({ export function WebsitesDataTable({
userId,
teamId, teamId,
allowEdit = true, allowEdit = true,
allowView = true, allowView = true,
showActions = true, showActions = true,
children, children,
}: { }: {
userId?: string;
teamId?: string; teamId?: string;
allowEdit?: boolean; allowEdit?: boolean;
allowView?: boolean; allowView?: boolean;
showActions?: boolean; showActions?: boolean;
children?: ReactNode; children?: ReactNode;
}) { }) {
const queryResult = useWebsites({ userId, teamId }); const queryResult = useWebsites({ teamId });
return ( return (
<DataTable queryResult={queryResult}> <DataTable queryResult={queryResult}>

View File

@ -1,15 +0,0 @@
'use client';
import { useLogin } from 'components/hooks';
import WebsitesDataTable from './WebsitesDataTable';
import WebsitesHeader from './WebsitesHeader';
export default function WebsitesPage({ teamId }: { teamId: string }) {
const { user } = useLogin();
return (
<>
<WebsitesHeader teamId={teamId} allowCreate={user.role !== 'view-only'} />
<WebsitesDataTable teamId={teamId} userId={user.id} allowEdit={true} />
</>
);
}

View File

@ -0,0 +1,12 @@
'use client';
import WebsitesDataTable from './WebsitesDataTable';
import WebsitesHeader from './WebsitesHeader';
export default function WebsitesSettingsPage({ teamId }: { teamId: string }) {
return (
<>
<WebsitesHeader teamId={teamId} />
<WebsitesDataTable teamId={teamId} />
</>
);
}

View File

@ -2,7 +2,7 @@
import WebsiteProvider from 'app/(main)/websites/[websiteId]/WebsiteProvider'; import WebsiteProvider from 'app/(main)/websites/[websiteId]/WebsiteProvider';
import WebsiteSettings from './WebsiteSettings'; import WebsiteSettings from './WebsiteSettings';
export default function WebsitePage({ websiteId }: { websiteId: string }) { export default function WebsiteSettingsPage({ websiteId }: { websiteId: string }) {
return ( return (
<WebsiteProvider websiteId={websiteId}> <WebsiteProvider websiteId={websiteId}>
<WebsiteSettings websiteId={websiteId} /> <WebsiteSettings websiteId={websiteId} />

View File

@ -1,8 +1,8 @@
import WebsitePage from './WebsitePage'; import WebsiteSettingsPage from './WebsiteSettingsPage';
import { Metadata } from 'next'; import { Metadata } from 'next';
export default async function ({ params: { websiteId } }) { export default async function ({ params: { websiteId } }) {
return <WebsitePage websiteId={websiteId} />; return <WebsiteSettingsPage websiteId={websiteId} />;
} }
export const metadata: Metadata = { export const metadata: Metadata = {

View File

@ -1,8 +1,8 @@
import { Metadata } from 'next'; import { Metadata } from 'next';
import WebsitesPage from './WebsitesPage'; import WebsitesSettingsPage from './WebsitesSettingsPage';
export default function ({ params: { teamId } }: { params: { teamId: string } }) { export default function ({ params: { teamId } }: { params: { teamId: string } }) {
return <WebsitesPage teamId={teamId} />; return <WebsitesSettingsPage teamId={teamId} />;
} }
export const metadata: Metadata = { export const metadata: Metadata = {

View File

@ -1,12 +1,15 @@
'use client'; 'use client';
import WebsitesHeader from 'app/(main)/settings/websites/WebsitesHeader'; import WebsitesHeader from 'app/(main)/settings/websites/WebsitesHeader';
import WebsitesDataTable from 'app/(main)/settings/websites/WebsitesDataTable'; import WebsitesDataTable from 'app/(main)/settings/websites/WebsitesDataTable';
import { useLogin } from 'components/hooks';
export default function WebsitesPage({ teamId }: { teamId: string; userId: string }) {
const { user } = useLogin();
export default function WebsitesPage({ teamId, userId }: { teamId: string; userId: string }) {
return ( return (
<> <>
<WebsitesHeader teamId={teamId} /> <WebsitesHeader teamId={teamId} allowCreate={user.role !== 'view-only'} />
<WebsitesDataTable teamId={teamId} userId={userId} allowEdit={false} /> <WebsitesDataTable teamId={teamId} allowEdit={false} />
</> </>
); );
} }

View File

@ -23,6 +23,7 @@ export function Pager({ page, pageSize, count, onPageChange, className }: PagerP
const handlePageChange = (value: number) => { const handlePageChange = (value: number) => {
const nextPage = page + value; const nextPage = page + value;
if (nextPage > 0 && nextPage <= maxPage) { if (nextPage > 0 && nextPage <= maxPage) {
onPageChange(nextPage); onPageChange(nextPage);
} }

View File

@ -13,8 +13,9 @@ export function useWebsites(
return useFilterQuery({ return useFilterQuery({
queryKey: ['websites', { userId, teamId, modified, ...params }], queryKey: ['websites', { userId, teamId, modified, ...params }],
queryFn: () => { queryFn: (data: any) => {
return get(teamId ? `/teams/${teamId}/websites` : `/users/${userId || user.id}/websites`, { return get(teamId ? `/teams/${teamId}/websites` : `/users/${userId || user.id}/websites`, {
...data,
...params, ...params,
}); });
}, },

View File

@ -7,12 +7,10 @@ import styles from './WebsiteSelect.module.css';
export function WebsiteSelect({ export function WebsiteSelect({
websiteId, websiteId,
teamId, teamId,
userId,
onSelect, onSelect,
}: { }: {
websiteId?: string; websiteId?: string;
teamId?: string; teamId?: string;
userId?: string;
onSelect?: (key: any) => void; onSelect?: (key: any) => void;
}) { }) {
const { formatMessage, labels, messages } = useMessages(); const { formatMessage, labels, messages } = useMessages();
@ -21,7 +19,7 @@ export function WebsiteSelect({
const { data: website } = useWebsite(selectedId as string); const { data: website } = useWebsite(selectedId as string);
const queryResult = useWebsites({ teamId, userId }, { query, pageSize: 5 }); const queryResult = useWebsites({ teamId }, { query, pageSize: 5 });
const renderValue = () => { const renderValue = () => {
return website?.name; return website?.name;