From dc3818baaa4ee3261a07cf3844dc63b1ccd25828 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Thu, 18 Jan 2024 16:46:40 -0800 Subject: [PATCH] Refactor of team websites. --- src/app/(main)/dashboard/Dashboard.tsx | 2 +- src/app/(main)/dashboard/DashboardEdit.tsx | 2 +- .../(main)/reports/[id]/FieldFilterForm.tsx | 6 +- .../settings/profile/LanguageSetting.tsx | 2 +- .../settings/profile/TimezoneSetting.tsx | 2 +- .../settings/teams/TeamDeleteButton.tsx | 33 ---------- src/app/(main)/settings/teams/TeamsTable.tsx | 6 +- .../(main)/settings/teams/[id]/TeamData.tsx | 27 ++++++++ .../settings/teams/[id]/TeamSettings.tsx | 3 + .../settings/teams/[id]/TeamWebsites.tsx | 27 +------- .../settings/websites/WebsitesDataTable.tsx | 11 +--- .../settings/websites/WebsitesTable.tsx | 14 +---- .../websites/[id]/WebsiteDeleteForm.tsx | 2 +- .../websites/[id]/WebsiteResetForm.tsx | 2 +- src/app/(main)/websites/WebsitesBrowse.tsx | 29 +-------- .../websites/[id]/WebsiteExpandedView.tsx | 2 +- src/components/input/DateFilter.tsx | 2 +- src/components/input/WebsiteSelect.tsx | 2 +- src/components/messages.ts | 14 ++--- src/lib/types.ts | 1 - src/queries/admin/report.ts | 19 +----- src/queries/admin/website.ts | 61 +------------------ 22 files changed, 61 insertions(+), 208 deletions(-) delete mode 100644 src/app/(main)/settings/teams/TeamDeleteButton.tsx create mode 100644 src/app/(main)/settings/teams/[id]/TeamData.tsx diff --git a/src/app/(main)/dashboard/Dashboard.tsx b/src/app/(main)/dashboard/Dashboard.tsx index ec1d793c..d340ebc6 100644 --- a/src/app/(main)/dashboard/Dashboard.tsx +++ b/src/app/(main)/dashboard/Dashboard.tsx @@ -63,7 +63,7 @@ export function Dashboard() { {editing && } {!editing && ( <> - + get('/websites', { includeTeams: 1 }), + queryFn: () => get('/websites'), }); const { data: websites } = result || {}; diff --git a/src/app/(main)/reports/[id]/FieldFilterForm.tsx b/src/app/(main)/reports/[id]/FieldFilterForm.tsx index 1616e10d..63504ed1 100644 --- a/src/app/(main)/reports/[id]/FieldFilterForm.tsx +++ b/src/app/(main)/reports/[id]/FieldFilterForm.tsx @@ -41,7 +41,7 @@ export default function FieldFilterForm({ format(values[0]); } return formatted; - }, [values]); + }, [formatValue, locale, name, values]); const renderFilterValue = value => { return filters.find(f => f.value === value)?.label; @@ -65,7 +65,7 @@ export default function FieldFilterForm({ items={filters} value={filter} renderValue={renderFilterValue} - onSelect={(key: any) => setFilter(key)} + onChange={(key: any) => setFilter(key)} > {({ value, label }) => { return {label}; @@ -78,7 +78,7 @@ export default function FieldFilterForm({ items={values} value={value} renderValue={renderValue} - onSelect={(key: any) => setValue(key)} + onChange={(key: any) => setValue(key)} style={{ minWidth: '250px', }} diff --git a/src/app/(main)/settings/profile/LanguageSetting.tsx b/src/app/(main)/settings/profile/LanguageSetting.tsx index b0426cc7..267a20f4 100644 --- a/src/app/(main)/settings/profile/LanguageSetting.tsx +++ b/src/app/(main)/settings/profile/LanguageSetting.tsx @@ -29,7 +29,7 @@ export function LanguageSetting() { items={options} value={locale} renderValue={renderValue} - onSelect={saveLocale} + onChange={saveLocale} allowSearch={true} onSearch={setSearch} menuProps={{ className: styles.menu }} diff --git a/src/app/(main)/settings/profile/TimezoneSetting.tsx b/src/app/(main)/settings/profile/TimezoneSetting.tsx index be86b570..c0f722d0 100644 --- a/src/app/(main)/settings/profile/TimezoneSetting.tsx +++ b/src/app/(main)/settings/profile/TimezoneSetting.tsx @@ -21,7 +21,7 @@ export function TimezoneSetting() { void; -}) { - const { formatMessage, labels } = useMessages(); - - return ( - - - - {(close: any) => ( - - )} - - - ); -} - -export default TeamDeleteButton; diff --git a/src/app/(main)/settings/teams/TeamsTable.tsx b/src/app/(main)/settings/teams/TeamsTable.tsx index 70a7bebb..10866b4f 100644 --- a/src/app/(main)/settings/teams/TeamsTable.tsx +++ b/src/app/(main)/settings/teams/TeamsTable.tsx @@ -4,7 +4,6 @@ import useUser from 'components/hooks/useUser'; import { ROLES } from 'lib/constants'; import Link from 'next/link'; import { Button, GridColumn, GridTable, Icon, Icons, Text, useBreakpoint } from 'react-basics'; -import TeamDeleteButton from './TeamDeleteButton'; import TeamLeaveButton from './TeamLeaveButton'; export function TeamsTable({ data = [] }: { data: any[] }) { @@ -26,13 +25,10 @@ export function TeamsTable({ data = [] }: { data: any[] }) { return ( <> - {isOwner && } {!isOwner && } diff --git a/src/app/(main)/settings/teams/[id]/TeamData.tsx b/src/app/(main)/settings/teams/[id]/TeamData.tsx new file mode 100644 index 00000000..f2983ea5 --- /dev/null +++ b/src/app/(main)/settings/teams/[id]/TeamData.tsx @@ -0,0 +1,27 @@ +import { ActionForm, Button, Modal, ModalTrigger } from 'react-basics'; +import useMessages from 'components/hooks/useMessages'; +import TeamDeleteForm from '../TeamDeleteForm'; + +export function TeamData({ teamId }: { teamId: string; onSave?: (value: string) => void }) { + const { formatMessage, labels, messages } = useMessages(); + + const handleSave = () => {}; + + return ( + + + + + {(close: () => void) => ( + + )} + + + + ); +} + +export default TeamData; diff --git a/src/app/(main)/settings/teams/[id]/TeamSettings.tsx b/src/app/(main)/settings/teams/[id]/TeamSettings.tsx index cf5ae35c..1f92b095 100644 --- a/src/app/(main)/settings/teams/[id]/TeamSettings.tsx +++ b/src/app/(main)/settings/teams/[id]/TeamSettings.tsx @@ -9,6 +9,7 @@ import useMessages from 'components/hooks/useMessages'; import TeamEditForm from './TeamEditForm'; import TeamMembers from './TeamMembers'; import TeamWebsites from './TeamWebsites'; +import TeamData from './TeamData'; export function TeamSettings({ teamId }: { teamId: string }) { const { formatMessage, labels, messages } = useMessages(); @@ -52,12 +53,14 @@ export function TeamSettings({ teamId }: { teamId: string }) { {formatMessage(labels.details)} {formatMessage(labels.members)} {formatMessage(labels.websites)} + {formatMessage(labels.data)} {tab === 'details' && ( )} {tab === 'members' && } {tab === 'websites' && } + {canEdit && tab === 'data' && } ); } diff --git a/src/app/(main)/settings/teams/[id]/TeamWebsites.tsx b/src/app/(main)/settings/teams/[id]/TeamWebsites.tsx index 93bb3a10..baca9707 100644 --- a/src/app/(main)/settings/teams/[id]/TeamWebsites.tsx +++ b/src/app/(main)/settings/teams/[id]/TeamWebsites.tsx @@ -1,15 +1,11 @@ -import { ActionForm, Button, Icon, Icons, Modal, ModalTrigger, Text } from 'react-basics'; import TeamWebsitesTable from './TeamWebsitesTable'; -import TeamWebsiteAddForm from './TeamWebsiteAddForm'; import useApi from 'components/hooks/useApi'; -import useMessages from 'components/hooks/useMessages'; import useUser from 'components/hooks/useUser'; import useFilterQuery from 'components/hooks/useFilterQuery'; import DataTable from 'components/common/DataTable'; import useCache from 'store/cache'; export function TeamWebsites({ teamId, readOnly }: { teamId: string; readOnly: boolean }) { - const { formatMessage, labels, messages } = useMessages(); const { user } = useUser(); const { get } = useApi(); const modified = useCache(state => state?.['team:websites']); @@ -28,26 +24,9 @@ export function TeamWebsites({ teamId, readOnly }: { teamId: string; readOnly: b }; return ( - <> - - - - - {close => } - - - - - {({ data }) => ( - - )} - - + + {({ data }) => } + ); } diff --git a/src/app/(main)/settings/websites/WebsitesDataTable.tsx b/src/app/(main)/settings/websites/WebsitesDataTable.tsx index f6632786..7ed2a3b3 100644 --- a/src/app/(main)/settings/websites/WebsitesDataTable.tsx +++ b/src/app/(main)/settings/websites/WebsitesDataTable.tsx @@ -12,9 +12,6 @@ export interface WebsitesDataTableProps { allowEdit?: boolean; allowView?: boolean; showActions?: boolean; - showTeam?: boolean; - includeTeams?: boolean; - onlyTeams?: boolean; children?: ReactNode; } @@ -23,9 +20,6 @@ export function WebsitesDataTable({ allowEdit = true, allowView = true, showActions = true, - showTeam, - includeTeams, - onlyTeams, children, }: WebsitesDataTableProps) { const { get } = useApi(); @@ -33,11 +27,9 @@ export function WebsitesDataTable({ const { websitesUrl } = useContext(SettingsContext); const queryResult = useFilterQuery({ - queryKey: ['websites', { includeTeams, onlyTeams, modified }], + queryKey: ['websites', { modified }], queryFn: (params: any) => { return get(websitesUrl, { - includeTeams, - onlyTeams, ...params, }); }, @@ -49,7 +41,6 @@ export function WebsitesDataTable({ {({ data }) => ( - {showTeam && ( - - {row => row.teamWebsite[0]?.team.name} - - )} - {showTeam && ( - - {row => row.user.username} - - )} {showActions && ( {row => { @@ -51,7 +39,7 @@ export function WebsitesTable({ return ( <> - {allowEdit && (!showTeam || ownerId === user.id) && ( + {allowEdit && ownerId === user.id && (