From 8cf2dd4bbab87909cef061fb62ff5fa78ca6f535 Mon Sep 17 00:00:00 2001 From: Erik Vroon Date: Wed, 8 Nov 2023 16:23:32 +0100 Subject: [PATCH] Filter on groups in teams table (#321) --- frontend/src/components/modals/team_modal.tsx | 1 + frontend/src/components/tables/teams.tsx | 7 +- frontend/src/pages/tournaments/[id]/teams.tsx | 87 ++++++++++++++++--- frontend/src/services/lookups.tsx | 23 +++++ 4 files changed, 105 insertions(+), 13 deletions(-) diff --git a/frontend/src/components/modals/team_modal.tsx b/frontend/src/components/modals/team_modal.tsx index 296a3079..b9dc39ee 100644 --- a/frontend/src/components/modals/team_modal.tsx +++ b/frontend/src/components/modals/team_modal.tsx @@ -33,6 +33,7 @@ export default function TeamModal({ onClick={() => setOpened(true)} leftIcon={} title={operation_text} + style={{ marginTop: '1rem' }} /> ) : ( diff --git a/frontend/src/components/tables/teams.tsx b/frontend/src/components/tables/teams.tsx index e60c9e7e..10b9f161 100644 --- a/frontend/src/components/tables/teams.tsx +++ b/frontend/src/components/tables/teams.tsx @@ -16,11 +16,12 @@ import TableLayout, { ThNotSortable, ThSortable, getTableState, sortTableEntries export default function TeamsTable({ tournamentData, swrTeamsResponse, + teams, }: { tournamentData: TournamentMinimal; swrTeamsResponse: SWRResponse; + teams: TeamInterface[]; }) { - const teams: TeamInterface[] = swrTeamsResponse.data != null ? swrTeamsResponse.data.data : []; const tableState = getTableState('name'); if (swrTeamsResponse.error) return ; @@ -39,6 +40,7 @@ export default function TeamsTable({ + {team.swiss_score} Created + + Swiss score + {null} diff --git a/frontend/src/pages/tournaments/[id]/teams.tsx b/frontend/src/pages/tournaments/[id]/teams.tsx index a12abce6..7d14af12 100644 --- a/frontend/src/pages/tournaments/[id]/teams.tsx +++ b/frontend/src/pages/tournaments/[id]/teams.tsx @@ -1,30 +1,93 @@ -import { Grid, Title } from '@mantine/core'; +import { Grid, Group, Select, Title } from '@mantine/core'; +import React, { useState } from 'react'; import { SWRResponse } from 'swr'; import TeamModal from '../../../components/modals/team_modal'; import TeamsTable from '../../../components/tables/teams'; -import { getTournamentIdFromRouter } from '../../../components/utils/util'; -import { getTeams } from '../../../services/adapter'; +import { getTournamentIdFromRouter, responseIsValid } from '../../../components/utils/util'; +import { StageItemWithRounds } from '../../../interfaces/stage_item'; +import { StageItemInput } from '../../../interfaces/stage_item_input'; +import { TeamInterface } from '../../../interfaces/team'; +import { getStages, getTeams } from '../../../services/adapter'; +import { getStageItemList, getStageItemTeamIdsLookup } from '../../../services/lookups'; import TournamentLayout from '../_tournament_layout'; +function StageItemSelect({ + groupStageItems, + setFilteredStageItemId, +}: { + groupStageItems: any; + setFilteredStageItemId: any; +}) { + if (groupStageItems == null) return null; + const data = groupStageItems.map(([stage_item]: [StageItemWithRounds]) => ({ + value: `${stage_item.id}`, + label: `${stage_item.name}`, + })); + return ( +