Loading analyst/src/components/Questionnaires/SummaryQuestionnaires.tsx 0 → 100644 +67 −0 Original line number Diff line number Diff line import { css } from '@emotion/css' import { SummaryQuestionnaireCard } from '@inject/frontend' import type { VariablesOf } from '@inject/graphql' import { AnalystQuestionnaireSummary, AnalystQuestionnaireUpdatesSubscription, useSubscription, useTypedQuery, type Team, } from '@inject/graphql' import { Container } from '@inject/shared' import { useMemo, type FC } from 'react' const container = css` flex: 1; padding: 1rem; overflow: auto; display: flex; flex-direction: column; gap: 1rem; ` interface SummaryQuestionnairesProps { exerciseId: string teams: Team[] } export const SummaryQuestionnaires: FC<SummaryQuestionnairesProps> = ({ exerciseId, teams, }) => { const teamIds = teams.map(t => t.id) const [{ data }] = useTypedQuery({ query: AnalystQuestionnaireSummary, variables: { exerciseId, teamIds: teams.map(t => t.id), }, context: useMemo( () => ({ suspense: true, }), [] ), requestPolicy: 'cache-and-network', }) const questionnaires = data?.questionnaires ?? [] useSubscription({ document: AnalystQuestionnaireUpdatesSubscription, variables: { teamIds, } as VariablesOf<typeof AnalystQuestionnaireUpdatesSubscription>, }) return ( <Container className={container}> {questionnaires.map(questionnaire => ( <SummaryQuestionnaireCard key={questionnaire.id} questionnaire={questionnaire} /> ))} </Container> ) } analyst/src/components/TeamQuestionnaires/index.tsx→analyst/src/components/Questionnaires/TeamQuestionnaires.tsx +1 −1 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ export const TeamQuestionnaires: FC<TeamQuestionnairesProps> = ({ useSubscription({ document: AnalystQuestionnaireUpdatesSubscription, variables: { teamId: team.id } as VariablesOf< variables: { teamIds: [team.id] } as VariablesOf< typeof AnalystQuestionnaireUpdatesSubscription >, }) Loading analyst/src/components/TeamSelectPage/TeamOrAllSelectPage.tsx 0 → 100644 +26 −0 Original line number Diff line number Diff line import { Divider } from '@blueprintjs/core' import type { Team } from '@inject/graphql' import type { FC, ReactNode } from 'react' import { TeamSelector } from '../TeamSelector' import { useTeamSelectorProps } from '../TeamSelector/useTeamSelectorProps' import { wrapper } from './classes' interface TeamOrAllSelectPageProps { teams: Team[] getChildren: (selectedTeam: Team | undefined) => ReactNode } export const TeamOrAllSelectPage: FC<TeamOrAllSelectPageProps> = ({ teams, getChildren, }) => { const teamSelectorProps = useTeamSelectorProps({ teams, includeAll: true }) return ( <div className={wrapper}> <TeamSelector {...teamSelectorProps} /> <Divider /> {getChildren(teamSelectorProps.selectedTeam)} </div> ) } analyst/src/components/TeamSelectPage/classes.ts 0 → 100644 +8 −0 Original line number Diff line number Diff line import { css } from '@emotion/css' export const wrapper = css` display: flex; flex-direction: column; height: 100%; overflow: auto; ` analyst/src/components/TeamSelectPage/index.tsx +1 −8 Original line number Diff line number Diff line import { Divider } from '@blueprintjs/core' import { css } from '@emotion/css' import type { Team } from '@inject/graphql' import type { FC, ReactNode } from 'react' import { TeamSelector } from '../TeamSelector' import { useTeamSelectorProps } from '../TeamSelector/useTeamSelectorProps' const wrapper = css` display: flex; flex-direction: column; height: 100%; overflow: auto; ` import { wrapper } from './classes' interface TeamSelectPageProps { teams: Team[] Loading Loading
analyst/src/components/Questionnaires/SummaryQuestionnaires.tsx 0 → 100644 +67 −0 Original line number Diff line number Diff line import { css } from '@emotion/css' import { SummaryQuestionnaireCard } from '@inject/frontend' import type { VariablesOf } from '@inject/graphql' import { AnalystQuestionnaireSummary, AnalystQuestionnaireUpdatesSubscription, useSubscription, useTypedQuery, type Team, } from '@inject/graphql' import { Container } from '@inject/shared' import { useMemo, type FC } from 'react' const container = css` flex: 1; padding: 1rem; overflow: auto; display: flex; flex-direction: column; gap: 1rem; ` interface SummaryQuestionnairesProps { exerciseId: string teams: Team[] } export const SummaryQuestionnaires: FC<SummaryQuestionnairesProps> = ({ exerciseId, teams, }) => { const teamIds = teams.map(t => t.id) const [{ data }] = useTypedQuery({ query: AnalystQuestionnaireSummary, variables: { exerciseId, teamIds: teams.map(t => t.id), }, context: useMemo( () => ({ suspense: true, }), [] ), requestPolicy: 'cache-and-network', }) const questionnaires = data?.questionnaires ?? [] useSubscription({ document: AnalystQuestionnaireUpdatesSubscription, variables: { teamIds, } as VariablesOf<typeof AnalystQuestionnaireUpdatesSubscription>, }) return ( <Container className={container}> {questionnaires.map(questionnaire => ( <SummaryQuestionnaireCard key={questionnaire.id} questionnaire={questionnaire} /> ))} </Container> ) }
analyst/src/components/TeamQuestionnaires/index.tsx→analyst/src/components/Questionnaires/TeamQuestionnaires.tsx +1 −1 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ export const TeamQuestionnaires: FC<TeamQuestionnairesProps> = ({ useSubscription({ document: AnalystQuestionnaireUpdatesSubscription, variables: { teamId: team.id } as VariablesOf< variables: { teamIds: [team.id] } as VariablesOf< typeof AnalystQuestionnaireUpdatesSubscription >, }) Loading
analyst/src/components/TeamSelectPage/TeamOrAllSelectPage.tsx 0 → 100644 +26 −0 Original line number Diff line number Diff line import { Divider } from '@blueprintjs/core' import type { Team } from '@inject/graphql' import type { FC, ReactNode } from 'react' import { TeamSelector } from '../TeamSelector' import { useTeamSelectorProps } from '../TeamSelector/useTeamSelectorProps' import { wrapper } from './classes' interface TeamOrAllSelectPageProps { teams: Team[] getChildren: (selectedTeam: Team | undefined) => ReactNode } export const TeamOrAllSelectPage: FC<TeamOrAllSelectPageProps> = ({ teams, getChildren, }) => { const teamSelectorProps = useTeamSelectorProps({ teams, includeAll: true }) return ( <div className={wrapper}> <TeamSelector {...teamSelectorProps} /> <Divider /> {getChildren(teamSelectorProps.selectedTeam)} </div> ) }
analyst/src/components/TeamSelectPage/classes.ts 0 → 100644 +8 −0 Original line number Diff line number Diff line import { css } from '@emotion/css' export const wrapper = css` display: flex; flex-direction: column; height: 100%; overflow: auto; `
analyst/src/components/TeamSelectPage/index.tsx +1 −8 Original line number Diff line number Diff line import { Divider } from '@blueprintjs/core' import { css } from '@emotion/css' import type { Team } from '@inject/graphql' import type { FC, ReactNode } from 'react' import { TeamSelector } from '../TeamSelector' import { useTeamSelectorProps } from '../TeamSelector/useTeamSelectorProps' const wrapper = css` display: flex; flex-direction: column; height: 100%; overflow: auto; ` import { wrapper } from './classes' interface TeamSelectPageProps { teams: Team[] Loading