From ab80807cca17a76dc9bbfa0ded42533b84e48942 Mon Sep 17 00:00:00 2001 From: jajakob Date: Sat, 28 Dec 2024 11:00:31 +0100 Subject: [PATCH 1/4] adding reports page to player's page --- apps/demo-game/src/components/DecisionsDisplay.tsx | 4 ++-- apps/demo-game/src/pages/play/cockpit.tsx | 12 +++++++----- packages/ui/src/components/NavBar.tsx | 7 +++++-- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/apps/demo-game/src/components/DecisionsDisplay.tsx b/apps/demo-game/src/components/DecisionsDisplay.tsx index b260f099..ec3d73d5 100644 --- a/apps/demo-game/src/components/DecisionsDisplay.tsx +++ b/apps/demo-game/src/components/DecisionsDisplay.tsx @@ -107,9 +107,9 @@ function DecisionsDisplayCompact({ segmentDecisions }: DecisionDisplayProps) { {segmentDecisions.map((e) => { return ( - + - P{e.period.index + 1} S{e.segment.index + 1} + P{e.period?.index + 1} S{e.segment?.index + 1} diff --git a/apps/demo-game/src/pages/play/cockpit.tsx b/apps/demo-game/src/pages/play/cockpit.tsx index 2d451a84..4cc1389f 100644 --- a/apps/demo-game/src/pages/play/cockpit.tsx +++ b/apps/demo-game/src/pages/play/cockpit.tsx @@ -124,6 +124,13 @@ function GameLayout({ children }: { children: React.ReactNode }) { role: data.self.role, } + const tabs = [ + { + name: 'Reports', + href: `/admin/reports/${data?.result?.currentGame?.id}`, + }, + ] + const sidebar = (
- +
From e6ccec7554f381f651bd57994f9aa1529f84f79c Mon Sep 17 00:00:00 2001 From: jajakob Date: Mon, 6 Jan 2025 12:15:31 +0100 Subject: [PATCH 2/4] exclude period and segment facts from report page --- apps/demo-game/src/graphql/generated/ops.ts | 5 +-- apps/demo-game/src/pages/admin/games/[id].tsx | 2 +- .../src/pages/admin/reports/[id].tsx | 6 ++-- packages/platform/public/ops/QGame.graphql | 32 +++++++++++++++++-- 4 files changed, 36 insertions(+), 9 deletions(-) diff --git a/apps/demo-game/src/graphql/generated/ops.ts b/apps/demo-game/src/graphql/generated/ops.ts index 7e9a2544..3dda84c7 100644 --- a/apps/demo-game/src/graphql/generated/ops.ts +++ b/apps/demo-game/src/graphql/generated/ops.ts @@ -510,10 +510,11 @@ export type UpdateReadyStateMutation = { __typename?: 'Mutation', updateReadySta export type GameQueryVariables = Exact<{ id?: InputMaybe; + includeFacts: Scalars['Boolean']['input']; }>; -export type GameQuery = { __typename?: 'Query', game?: { __typename?: 'Game', id: string, status: GameStatus, name: string, activePeriodIx?: number | null, activeSegmentIx?: number | null, activePeriod?: { __typename?: 'Period', id: string, activeSegmentIx?: number | null, segmentCount?: number | null, activeSegment?: { __typename?: 'PeriodSegment', id: string, countdownExpiresAt?: any | null, countdownDurationMs?: number | null } | null, segments: Array<{ __typename?: 'PeriodSegment', id: string }> } | null, periods: Array<{ __typename?: 'Period', id: string, index: number, activeSegmentIx?: number | null, facts: any, segmentCount?: number | null, segments: Array<{ __typename?: 'PeriodSegment', id: string, index: number, countdownExpiresAt?: any | null, countdownDurationMs?: number | null, facts: any, learningElements: Array<{ __typename?: 'LearningElement', id: string, title: string }>, storyElements: Array<{ __typename?: 'StoryElement', id: string, title: string }> }> }>, players: Array<{ __typename?: 'Player', id: string, isReady: boolean, role?: string | null, number: number, name: string, facts: any, experience: number, experienceToNext: number, token: string }> } | null }; +export type GameQuery = { __typename?: 'Query', game?: { __typename?: 'Game', id: string, status: GameStatus, name: string, activePeriodIx?: number | null, activeSegmentIx?: number | null, activePeriod?: { __typename?: 'Period', id: string, activeSegmentIx?: number | null, segmentCount?: number | null, activeSegment?: { __typename?: 'PeriodSegment', id: string, countdownExpiresAt?: any | null, countdownDurationMs?: number | null } | null, segments: Array<{ __typename?: 'PeriodSegment', id: string }> } | null, periods: Array<{ __typename?: 'Period', id: string, index: number, activeSegmentIx?: number | null, facts?: any, segmentCount?: number | null, segments: Array<{ __typename?: 'PeriodSegment', id: string, index: number, countdownExpiresAt?: any | null, countdownDurationMs?: number | null, facts: any, learningElements: Array<{ __typename?: 'LearningElement', id: string, title: string }>, storyElements: Array<{ __typename?: 'StoryElement', id: string, title: string }> }> }>, players: Array<{ __typename?: 'Player', id: string, isReady: boolean, role?: string | null, number: number, name: string, facts: any, experience: number, experienceToNext: number, token: string }> } | null }; export type GamesQueryVariables = Exact<{ [key: string]: never; }>; @@ -986,7 +987,7 @@ export const PerformActionDocument = {"kind":"Document","definitions":[{"kind":" export const SaveConsolidationDecisionDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"SaveConsolidationDecision"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"payload"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"saveConsolidationDecision"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"payload"},"value":{"kind":"Variable","name":{"kind":"Name","value":"payload"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}}]}}]}}]} as unknown as DocumentNode; export const UpdatePlayerDataDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdatePlayerData"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"facts"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updatePlayerData"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}},{"kind":"Argument","name":{"kind":"Name","value":"facts"},"value":{"kind":"Variable","name":{"kind":"Name","value":"facts"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"PlayerData"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"PlayerData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Player"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"isReady"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}},{"kind":"Field","name":{"kind":"Name","value":"experience"}},{"kind":"Field","name":{"kind":"Name","value":"experienceToNext"}},{"kind":"Field","name":{"kind":"Name","value":"achievementKeys"}},{"kind":"Field","name":{"kind":"Name","value":"achievements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"count"}},{"kind":"Field","name":{"kind":"Name","value":"achievement"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"image"}},{"kind":"Field","name":{"kind":"Name","value":"reward"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"level"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}}]}}]}}]} as unknown as DocumentNode; export const UpdateReadyStateDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateReadyState"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"isReady"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateReadyState"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"isReady"},"value":{"kind":"Variable","name":{"kind":"Name","value":"isReady"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"isReady"}}]}}]}}]} as unknown as DocumentNode; -export const GameDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"Game"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"game"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"GameData"}},{"kind":"Field","name":{"kind":"Name","value":"activePeriod"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"countdownExpiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"countdownDurationMs"}}]}},{"kind":"Field","name":{"kind":"Name","value":"segmentCount"}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"periods"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"PeriodData"}}]}},{"kind":"Field","name":{"kind":"Name","value":"players"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"isReady"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"number"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}},{"kind":"Field","name":{"kind":"Name","value":"experience"}},{"kind":"Field","name":{"kind":"Name","value":"experienceToNext"}},{"kind":"Field","name":{"kind":"Name","value":"token"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"SegmentData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"PeriodSegment"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}},{"kind":"Field","name":{"kind":"Name","value":"countdownExpiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"countdownDurationMs"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}},{"kind":"Field","name":{"kind":"Name","value":"learningElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}},{"kind":"Field","name":{"kind":"Name","value":"storyElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"GameData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Game"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"activePeriodIx"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"PeriodData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Period"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"SegmentData"}}]}},{"kind":"Field","name":{"kind":"Name","value":"segmentCount"}}]}}]} as unknown as DocumentNode; +export const GameDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"Game"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"includeFacts"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"game"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"GameData"}},{"kind":"Field","name":{"kind":"Name","value":"activePeriod"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"countdownExpiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"countdownDurationMs"}}]}},{"kind":"Field","name":{"kind":"Name","value":"segmentCount"}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"periods"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}},{"kind":"Field","name":{"kind":"Name","value":"facts"},"directives":[{"kind":"Directive","name":{"kind":"Name","value":"include"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"if"},"value":{"kind":"Variable","name":{"kind":"Name","value":"includeFacts"}}}]}]},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"SegmentData"}}]}},{"kind":"Field","name":{"kind":"Name","value":"segmentCount"}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}},{"kind":"Field","name":{"kind":"Name","value":"countdownExpiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"countdownDurationMs"}},{"kind":"Field","name":{"kind":"Name","value":"facts"},"directives":[{"kind":"Directive","name":{"kind":"Name","value":"include"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"if"},"value":{"kind":"Variable","name":{"kind":"Name","value":"includeFacts"}}}]}]},{"kind":"Field","name":{"kind":"Name","value":"learningElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}},{"kind":"Field","name":{"kind":"Name","value":"storyElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"players"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"isReady"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"number"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}},{"kind":"Field","name":{"kind":"Name","value":"experience"}},{"kind":"Field","name":{"kind":"Name","value":"experienceToNext"}},{"kind":"Field","name":{"kind":"Name","value":"token"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"GameData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Game"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"activePeriodIx"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"SegmentData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"PeriodSegment"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}},{"kind":"Field","name":{"kind":"Name","value":"countdownExpiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"countdownDurationMs"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}},{"kind":"Field","name":{"kind":"Name","value":"learningElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}},{"kind":"Field","name":{"kind":"Name","value":"storyElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}}]} as unknown as DocumentNode; export const GamesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"Games"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"games"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"GameData"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"GameData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Game"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"activePeriodIx"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}}]}}]} as unknown as DocumentNode; export const LearningElementDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"LearningElement"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"learningElement"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"element"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"LearningElementData"}},{"kind":"Field","name":{"kind":"Name","value":"options"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"content"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"solution"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"LearningElementData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LearningElement"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"question"}},{"kind":"Field","name":{"kind":"Name","value":"reward"}},{"kind":"Field","name":{"kind":"Name","value":"motivation"}},{"kind":"Field","name":{"kind":"Name","value":"feedback"}}]}}]} as unknown as DocumentNode; export const LearningElementsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"LearningElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"learningElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"LearningElementData"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"LearningElementData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LearningElement"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"question"}},{"kind":"Field","name":{"kind":"Name","value":"reward"}},{"kind":"Field","name":{"kind":"Name","value":"motivation"}},{"kind":"Field","name":{"kind":"Name","value":"feedback"}}]}}]} as unknown as DocumentNode; diff --git a/apps/demo-game/src/pages/admin/games/[id].tsx b/apps/demo-game/src/pages/admin/games/[id].tsx index 4a4c89fb..c69c72a8 100644 --- a/apps/demo-game/src/pages/admin/games/[id].tsx +++ b/apps/demo-game/src/pages/admin/games/[id].tsx @@ -76,7 +76,7 @@ function ManageGame() { const [isSegmentModalOpen, setIsSegmentModalOpen] = useState(false) const { data, error, loading } = useQuery(GameDocument, { - variables: { id: Number(router.query.id) }, + variables: { id: Number(router.query.id), includeFacts: true }, pollInterval: 15000, skip: !router.query.id, }) diff --git a/apps/demo-game/src/pages/admin/reports/[id].tsx b/apps/demo-game/src/pages/admin/reports/[id].tsx index f88edee6..99c672bf 100644 --- a/apps/demo-game/src/pages/admin/reports/[id].tsx +++ b/apps/demo-game/src/pages/admin/reports/[id].tsx @@ -72,11 +72,13 @@ function ReportGame() { const [currPeriod, setCurrPeriod] = useState(0) const { data, error, loading } = useQuery(GameDocument, { - variables: { id: Number(router.query.id) }, + variables: { id: Number(router.query.id), includeFacts: false }, // pollInterval: 15000, skip: !router.query.id, }) + console.log('gamedata', data) + const { data: segmentEndResults, loading: segmentEndResultsLoading, @@ -258,8 +260,6 @@ function ReportGame() { const previousPeriodResults = periodEndResults.specificResults - console.log('previousPeriodResults', previousPeriodResults) - const riskReturnPerPeriod = previousPeriodResults.reduce((acc, result) => { if (!acc[result.period.index]) { acc[result.period.index] = { diff --git a/packages/platform/public/ops/QGame.graphql b/packages/platform/public/ops/QGame.graphql index 94ede441..0b2b5ae7 100644 --- a/packages/platform/public/ops/QGame.graphql +++ b/packages/platform/public/ops/QGame.graphql @@ -1,8 +1,7 @@ #import "./FGameData.graphql" -#import "./FPeriodData.graphql" #import "./FPlayerData.graphql" -query Game($id: Int) { +query Game($id: Int, $includeFacts: Boolean!) { game(id: $id) { ...GameData activePeriod { @@ -19,7 +18,34 @@ query Game($id: Int) { } } periods { - ...PeriodData + id + + index + activeSegmentIx + + facts @include(if: $includeFacts) + + segments { + id + + index + + countdownExpiresAt + countdownDurationMs + + facts @include(if: $includeFacts) + + learningElements { + id + title + } + + storyElements { + id + title + } + } + segmentCount } players { id From aa02d070ba2373f6bd4e60b8357059d5f4feff95 Mon Sep 17 00:00:00 2001 From: jajakob Date: Mon, 6 Jan 2025 13:48:00 +0100 Subject: [PATCH 3/4] fix graphql double variable --- apps/demo-game/src/graphql/generated/ops.ts | 4 ++-- apps/demo-game/src/pages/admin/reports/[id].tsx | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/apps/demo-game/src/graphql/generated/ops.ts b/apps/demo-game/src/graphql/generated/ops.ts index 3dda84c7..7b5a332a 100644 --- a/apps/demo-game/src/graphql/generated/ops.ts +++ b/apps/demo-game/src/graphql/generated/ops.ts @@ -514,7 +514,7 @@ export type GameQueryVariables = Exact<{ }>; -export type GameQuery = { __typename?: 'Query', game?: { __typename?: 'Game', id: string, status: GameStatus, name: string, activePeriodIx?: number | null, activeSegmentIx?: number | null, activePeriod?: { __typename?: 'Period', id: string, activeSegmentIx?: number | null, segmentCount?: number | null, activeSegment?: { __typename?: 'PeriodSegment', id: string, countdownExpiresAt?: any | null, countdownDurationMs?: number | null } | null, segments: Array<{ __typename?: 'PeriodSegment', id: string }> } | null, periods: Array<{ __typename?: 'Period', id: string, index: number, activeSegmentIx?: number | null, facts?: any, segmentCount?: number | null, segments: Array<{ __typename?: 'PeriodSegment', id: string, index: number, countdownExpiresAt?: any | null, countdownDurationMs?: number | null, facts: any, learningElements: Array<{ __typename?: 'LearningElement', id: string, title: string }>, storyElements: Array<{ __typename?: 'StoryElement', id: string, title: string }> }> }>, players: Array<{ __typename?: 'Player', id: string, isReady: boolean, role?: string | null, number: number, name: string, facts: any, experience: number, experienceToNext: number, token: string }> } | null }; +export type GameQuery = { __typename?: 'Query', game?: { __typename?: 'Game', id: string, status: GameStatus, name: string, activePeriodIx?: number | null, activeSegmentIx?: number | null, activePeriod?: { __typename?: 'Period', id: string, activeSegmentIx?: number | null, segmentCount?: number | null, activeSegment?: { __typename?: 'PeriodSegment', id: string, countdownExpiresAt?: any | null, countdownDurationMs?: number | null } | null, segments: Array<{ __typename?: 'PeriodSegment', id: string }> } | null, periods: Array<{ __typename?: 'Period', id: string, index: number, activeSegmentIx?: number | null, facts?: any, segmentCount?: number | null, segments: Array<{ __typename?: 'PeriodSegment', id: string, index: number, countdownExpiresAt?: any | null, countdownDurationMs?: number | null, facts?: any, learningElements: Array<{ __typename?: 'LearningElement', id: string, title: string }>, storyElements: Array<{ __typename?: 'StoryElement', id: string, title: string }> }> }>, players: Array<{ __typename?: 'Player', id: string, isReady: boolean, role?: string | null, number: number, name: string, facts: any, experience: number, experienceToNext: number, token: string }> } | null }; export type GamesQueryVariables = Exact<{ [key: string]: never; }>; @@ -987,7 +987,7 @@ export const PerformActionDocument = {"kind":"Document","definitions":[{"kind":" export const SaveConsolidationDecisionDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"SaveConsolidationDecision"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"payload"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"saveConsolidationDecision"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"payload"},"value":{"kind":"Variable","name":{"kind":"Name","value":"payload"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}}]}}]}}]} as unknown as DocumentNode; export const UpdatePlayerDataDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdatePlayerData"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"facts"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updatePlayerData"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}},{"kind":"Argument","name":{"kind":"Name","value":"facts"},"value":{"kind":"Variable","name":{"kind":"Name","value":"facts"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"PlayerData"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"PlayerData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Player"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"isReady"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}},{"kind":"Field","name":{"kind":"Name","value":"experience"}},{"kind":"Field","name":{"kind":"Name","value":"experienceToNext"}},{"kind":"Field","name":{"kind":"Name","value":"achievementKeys"}},{"kind":"Field","name":{"kind":"Name","value":"achievements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"count"}},{"kind":"Field","name":{"kind":"Name","value":"achievement"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"image"}},{"kind":"Field","name":{"kind":"Name","value":"reward"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"level"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}}]}}]}}]} as unknown as DocumentNode; export const UpdateReadyStateDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateReadyState"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"isReady"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateReadyState"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"isReady"},"value":{"kind":"Variable","name":{"kind":"Name","value":"isReady"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"isReady"}}]}}]}}]} as unknown as DocumentNode; -export const GameDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"Game"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"includeFacts"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"game"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"GameData"}},{"kind":"Field","name":{"kind":"Name","value":"activePeriod"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"countdownExpiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"countdownDurationMs"}}]}},{"kind":"Field","name":{"kind":"Name","value":"segmentCount"}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"periods"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}},{"kind":"Field","name":{"kind":"Name","value":"facts"},"directives":[{"kind":"Directive","name":{"kind":"Name","value":"include"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"if"},"value":{"kind":"Variable","name":{"kind":"Name","value":"includeFacts"}}}]}]},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"SegmentData"}}]}},{"kind":"Field","name":{"kind":"Name","value":"segmentCount"}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}},{"kind":"Field","name":{"kind":"Name","value":"countdownExpiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"countdownDurationMs"}},{"kind":"Field","name":{"kind":"Name","value":"facts"},"directives":[{"kind":"Directive","name":{"kind":"Name","value":"include"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"if"},"value":{"kind":"Variable","name":{"kind":"Name","value":"includeFacts"}}}]}]},{"kind":"Field","name":{"kind":"Name","value":"learningElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}},{"kind":"Field","name":{"kind":"Name","value":"storyElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"players"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"isReady"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"number"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}},{"kind":"Field","name":{"kind":"Name","value":"experience"}},{"kind":"Field","name":{"kind":"Name","value":"experienceToNext"}},{"kind":"Field","name":{"kind":"Name","value":"token"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"GameData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Game"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"activePeriodIx"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"SegmentData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"PeriodSegment"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}},{"kind":"Field","name":{"kind":"Name","value":"countdownExpiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"countdownDurationMs"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}},{"kind":"Field","name":{"kind":"Name","value":"learningElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}},{"kind":"Field","name":{"kind":"Name","value":"storyElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}}]} as unknown as DocumentNode; +export const GameDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"Game"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"includeFacts"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"game"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"GameData"}},{"kind":"Field","name":{"kind":"Name","value":"activePeriod"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"countdownExpiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"countdownDurationMs"}}]}},{"kind":"Field","name":{"kind":"Name","value":"segmentCount"}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"periods"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}},{"kind":"Field","name":{"kind":"Name","value":"facts"},"directives":[{"kind":"Directive","name":{"kind":"Name","value":"include"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"if"},"value":{"kind":"Variable","name":{"kind":"Name","value":"includeFacts"}}}]}]},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}},{"kind":"Field","name":{"kind":"Name","value":"countdownExpiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"countdownDurationMs"}},{"kind":"Field","name":{"kind":"Name","value":"facts"},"directives":[{"kind":"Directive","name":{"kind":"Name","value":"include"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"if"},"value":{"kind":"Variable","name":{"kind":"Name","value":"includeFacts"}}}]}]},{"kind":"Field","name":{"kind":"Name","value":"learningElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}},{"kind":"Field","name":{"kind":"Name","value":"storyElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"segmentCount"}}]}},{"kind":"Field","name":{"kind":"Name","value":"players"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"isReady"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"number"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}},{"kind":"Field","name":{"kind":"Name","value":"experience"}},{"kind":"Field","name":{"kind":"Name","value":"experienceToNext"}},{"kind":"Field","name":{"kind":"Name","value":"token"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"GameData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Game"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"activePeriodIx"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}}]}}]} as unknown as DocumentNode; export const GamesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"Games"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"games"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"GameData"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"GameData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Game"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"activePeriodIx"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}}]}}]} as unknown as DocumentNode; export const LearningElementDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"LearningElement"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"learningElement"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"element"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"LearningElementData"}},{"kind":"Field","name":{"kind":"Name","value":"options"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"content"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"solution"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"LearningElementData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LearningElement"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"question"}},{"kind":"Field","name":{"kind":"Name","value":"reward"}},{"kind":"Field","name":{"kind":"Name","value":"motivation"}},{"kind":"Field","name":{"kind":"Name","value":"feedback"}}]}}]} as unknown as DocumentNode; export const LearningElementsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"LearningElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"learningElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"LearningElementData"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"LearningElementData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LearningElement"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"question"}},{"kind":"Field","name":{"kind":"Name","value":"reward"}},{"kind":"Field","name":{"kind":"Name","value":"motivation"}},{"kind":"Field","name":{"kind":"Name","value":"feedback"}}]}}]} as unknown as DocumentNode; diff --git a/apps/demo-game/src/pages/admin/reports/[id].tsx b/apps/demo-game/src/pages/admin/reports/[id].tsx index 99c672bf..65b7afbc 100644 --- a/apps/demo-game/src/pages/admin/reports/[id].tsx +++ b/apps/demo-game/src/pages/admin/reports/[id].tsx @@ -77,8 +77,6 @@ function ReportGame() { skip: !router.query.id, }) - console.log('gamedata', data) - const { data: segmentEndResults, loading: segmentEndResultsLoading, From 43213b254d2da8a9adfa5bb00b044424d5e8f713 Mon Sep 17 00:00:00 2001 From: jajakob Date: Mon, 13 Jan 2025 10:05:17 +0100 Subject: [PATCH 4/4] query based on authentication --- .../src/graphql/generated/nexus-typegen.ts | 5 ++ apps/demo-game/src/graphql/generated/ops.ts | 20 +++++- .../src/graphql/generated/schema.graphql | 1 + .../src/graphql/generated/schema.json | 25 ++++++++ apps/demo-game/src/pages/admin/games/[id].tsx | 2 +- apps/demo-game/src/pages/play/cockpit.tsx | 2 +- .../src/pages/{admin => }/reports/[id].tsx | 24 +++++-- packages/platform/public/ops/QGame.graphql | 32 +--------- .../public/ops/QGameWithoutFacts.graphql | 63 +++++++++++++++++++ packages/platform/src/types/Query.ts | 10 +++ 10 files changed, 144 insertions(+), 40 deletions(-) rename apps/demo-game/src/pages/{admin => }/reports/[id].tsx (97%) create mode 100644 packages/platform/public/ops/QGameWithoutFacts.graphql diff --git a/apps/demo-game/src/graphql/generated/nexus-typegen.ts b/apps/demo-game/src/graphql/generated/nexus-typegen.ts index ff830429..c7c56872 100644 --- a/apps/demo-game/src/graphql/generated/nexus-typegen.ts +++ b/apps/demo-game/src/graphql/generated/nexus-typegen.ts @@ -387,6 +387,7 @@ export interface NexusGenFieldTypes { } Query: { // field return type game: NexusGenRootTypes['Game'] | null; // Game + gameWithoutFacts: NexusGenRootTypes['Game'] | null; // Game games: NexusGenRootTypes['Game'][] | null; // [Game!] learningElement: NexusGenRootTypes['LearningElementState'] | null; // LearningElementState learningElements: NexusGenRootTypes['LearningElement'][] | null; // [LearningElement!] @@ -565,6 +566,7 @@ export interface NexusGenFieldTypeNames { } Query: { // field return type name game: 'Game' + gameWithoutFacts: 'Game' games: 'Game' learningElement: 'LearningElementState' learningElements: 'LearningElement' @@ -646,6 +648,9 @@ export interface NexusGenArgTypes { game: { // args id?: number | null; // Int } + gameWithoutFacts: { // args + id?: number | null; // Int + } learningElement: { // args id: string; // ID! } diff --git a/apps/demo-game/src/graphql/generated/ops.ts b/apps/demo-game/src/graphql/generated/ops.ts index 7b5a332a..4dfff0d6 100644 --- a/apps/demo-game/src/graphql/generated/ops.ts +++ b/apps/demo-game/src/graphql/generated/ops.ts @@ -332,6 +332,7 @@ export type PlayerState = { export type Query = { __typename?: 'Query'; game?: Maybe; + gameWithoutFacts?: Maybe; games?: Maybe>; learningElement?: Maybe; learningElements?: Maybe>; @@ -349,6 +350,11 @@ export type QueryGameArgs = { }; +export type QueryGameWithoutFactsArgs = { + id?: InputMaybe; +}; + + export type QueryLearningElementArgs = { id: Scalars['ID']['input']; }; @@ -510,11 +516,17 @@ export type UpdateReadyStateMutation = { __typename?: 'Mutation', updateReadySta export type GameQueryVariables = Exact<{ id?: InputMaybe; - includeFacts: Scalars['Boolean']['input']; }>; -export type GameQuery = { __typename?: 'Query', game?: { __typename?: 'Game', id: string, status: GameStatus, name: string, activePeriodIx?: number | null, activeSegmentIx?: number | null, activePeriod?: { __typename?: 'Period', id: string, activeSegmentIx?: number | null, segmentCount?: number | null, activeSegment?: { __typename?: 'PeriodSegment', id: string, countdownExpiresAt?: any | null, countdownDurationMs?: number | null } | null, segments: Array<{ __typename?: 'PeriodSegment', id: string }> } | null, periods: Array<{ __typename?: 'Period', id: string, index: number, activeSegmentIx?: number | null, facts?: any, segmentCount?: number | null, segments: Array<{ __typename?: 'PeriodSegment', id: string, index: number, countdownExpiresAt?: any | null, countdownDurationMs?: number | null, facts?: any, learningElements: Array<{ __typename?: 'LearningElement', id: string, title: string }>, storyElements: Array<{ __typename?: 'StoryElement', id: string, title: string }> }> }>, players: Array<{ __typename?: 'Player', id: string, isReady: boolean, role?: string | null, number: number, name: string, facts: any, experience: number, experienceToNext: number, token: string }> } | null }; +export type GameQuery = { __typename?: 'Query', game?: { __typename?: 'Game', id: string, status: GameStatus, name: string, activePeriodIx?: number | null, activeSegmentIx?: number | null, activePeriod?: { __typename?: 'Period', id: string, activeSegmentIx?: number | null, segmentCount?: number | null, activeSegment?: { __typename?: 'PeriodSegment', id: string, countdownExpiresAt?: any | null, countdownDurationMs?: number | null } | null, segments: Array<{ __typename?: 'PeriodSegment', id: string }> } | null, periods: Array<{ __typename?: 'Period', id: string, index: number, activeSegmentIx?: number | null, facts: any, segmentCount?: number | null, segments: Array<{ __typename?: 'PeriodSegment', id: string, index: number, countdownExpiresAt?: any | null, countdownDurationMs?: number | null, facts: any, learningElements: Array<{ __typename?: 'LearningElement', id: string, title: string }>, storyElements: Array<{ __typename?: 'StoryElement', id: string, title: string }> }> }>, players: Array<{ __typename?: 'Player', id: string, isReady: boolean, role?: string | null, number: number, name: string, facts: any, experience: number, experienceToNext: number, token: string }> } | null }; + +export type GameWithoutFactsQueryVariables = Exact<{ + id?: InputMaybe; +}>; + + +export type GameWithoutFactsQuery = { __typename?: 'Query', game?: { __typename?: 'Game', id: string, status: GameStatus, name: string, activePeriodIx?: number | null, activeSegmentIx?: number | null, activePeriod?: { __typename?: 'Period', id: string, activeSegmentIx?: number | null, segmentCount?: number | null, activeSegment?: { __typename?: 'PeriodSegment', id: string, countdownExpiresAt?: any | null, countdownDurationMs?: number | null } | null, segments: Array<{ __typename?: 'PeriodSegment', id: string }> } | null, periods: Array<{ __typename?: 'Period', id: string, index: number, activeSegmentIx?: number | null, segmentCount?: number | null, segments: Array<{ __typename?: 'PeriodSegment', id: string, index: number, countdownExpiresAt?: any | null, countdownDurationMs?: number | null, learningElements: Array<{ __typename?: 'LearningElement', id: string, title: string }>, storyElements: Array<{ __typename?: 'StoryElement', id: string, title: string }> }> }>, players: Array<{ __typename?: 'Player', id: string, isReady: boolean, role?: string | null, number: number, name: string, facts: any, experience: number, experienceToNext: number, token: string }> } | null }; export type GamesQueryVariables = Exact<{ [key: string]: never; }>; @@ -913,6 +925,7 @@ export type PlayerStateResolvers = { game?: Resolver, ParentType, ContextType, Partial>; + gameWithoutFacts?: Resolver, ParentType, ContextType, Partial>; games?: Resolver>, ParentType, ContextType>; learningElement?: Resolver, ParentType, ContextType, RequireFields>; learningElements?: Resolver>, ParentType, ContextType>; @@ -987,7 +1000,8 @@ export const PerformActionDocument = {"kind":"Document","definitions":[{"kind":" export const SaveConsolidationDecisionDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"SaveConsolidationDecision"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"payload"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"saveConsolidationDecision"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"payload"},"value":{"kind":"Variable","name":{"kind":"Name","value":"payload"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}}]}}]}}]} as unknown as DocumentNode; export const UpdatePlayerDataDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdatePlayerData"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"facts"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updatePlayerData"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}},{"kind":"Argument","name":{"kind":"Name","value":"facts"},"value":{"kind":"Variable","name":{"kind":"Name","value":"facts"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"PlayerData"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"PlayerData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Player"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"isReady"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}},{"kind":"Field","name":{"kind":"Name","value":"experience"}},{"kind":"Field","name":{"kind":"Name","value":"experienceToNext"}},{"kind":"Field","name":{"kind":"Name","value":"achievementKeys"}},{"kind":"Field","name":{"kind":"Name","value":"achievements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"count"}},{"kind":"Field","name":{"kind":"Name","value":"achievement"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"image"}},{"kind":"Field","name":{"kind":"Name","value":"reward"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"level"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}}]}}]}}]} as unknown as DocumentNode; export const UpdateReadyStateDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateReadyState"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"isReady"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateReadyState"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"isReady"},"value":{"kind":"Variable","name":{"kind":"Name","value":"isReady"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"isReady"}}]}}]}}]} as unknown as DocumentNode; -export const GameDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"Game"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"includeFacts"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"game"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"GameData"}},{"kind":"Field","name":{"kind":"Name","value":"activePeriod"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"countdownExpiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"countdownDurationMs"}}]}},{"kind":"Field","name":{"kind":"Name","value":"segmentCount"}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"periods"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}},{"kind":"Field","name":{"kind":"Name","value":"facts"},"directives":[{"kind":"Directive","name":{"kind":"Name","value":"include"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"if"},"value":{"kind":"Variable","name":{"kind":"Name","value":"includeFacts"}}}]}]},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}},{"kind":"Field","name":{"kind":"Name","value":"countdownExpiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"countdownDurationMs"}},{"kind":"Field","name":{"kind":"Name","value":"facts"},"directives":[{"kind":"Directive","name":{"kind":"Name","value":"include"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"if"},"value":{"kind":"Variable","name":{"kind":"Name","value":"includeFacts"}}}]}]},{"kind":"Field","name":{"kind":"Name","value":"learningElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}},{"kind":"Field","name":{"kind":"Name","value":"storyElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"segmentCount"}}]}},{"kind":"Field","name":{"kind":"Name","value":"players"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"isReady"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"number"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}},{"kind":"Field","name":{"kind":"Name","value":"experience"}},{"kind":"Field","name":{"kind":"Name","value":"experienceToNext"}},{"kind":"Field","name":{"kind":"Name","value":"token"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"GameData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Game"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"activePeriodIx"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}}]}}]} as unknown as DocumentNode; +export const GameDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"Game"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"game"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"GameData"}},{"kind":"Field","name":{"kind":"Name","value":"activePeriod"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"countdownExpiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"countdownDurationMs"}}]}},{"kind":"Field","name":{"kind":"Name","value":"segmentCount"}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"periods"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"PeriodData"}}]}},{"kind":"Field","name":{"kind":"Name","value":"players"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"isReady"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"number"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}},{"kind":"Field","name":{"kind":"Name","value":"experience"}},{"kind":"Field","name":{"kind":"Name","value":"experienceToNext"}},{"kind":"Field","name":{"kind":"Name","value":"token"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"SegmentData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"PeriodSegment"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}},{"kind":"Field","name":{"kind":"Name","value":"countdownExpiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"countdownDurationMs"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}},{"kind":"Field","name":{"kind":"Name","value":"learningElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}},{"kind":"Field","name":{"kind":"Name","value":"storyElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"GameData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Game"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"activePeriodIx"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"PeriodData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Period"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"SegmentData"}}]}},{"kind":"Field","name":{"kind":"Name","value":"segmentCount"}}]}}]} as unknown as DocumentNode; +export const GameWithoutFactsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GameWithoutFacts"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"game"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"GameData"}},{"kind":"Field","name":{"kind":"Name","value":"activePeriod"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"countdownExpiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"countdownDurationMs"}}]}},{"kind":"Field","name":{"kind":"Name","value":"segmentCount"}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"periods"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}},{"kind":"Field","name":{"kind":"Name","value":"segments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"index"}},{"kind":"Field","name":{"kind":"Name","value":"countdownExpiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"countdownDurationMs"}},{"kind":"Field","name":{"kind":"Name","value":"learningElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}},{"kind":"Field","name":{"kind":"Name","value":"storyElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"segmentCount"}}]}},{"kind":"Field","name":{"kind":"Name","value":"players"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"isReady"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"number"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"facts"}},{"kind":"Field","name":{"kind":"Name","value":"experience"}},{"kind":"Field","name":{"kind":"Name","value":"experienceToNext"}},{"kind":"Field","name":{"kind":"Name","value":"token"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"GameData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Game"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"activePeriodIx"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}}]}}]} as unknown as DocumentNode; export const GamesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"Games"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"games"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"GameData"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"GameData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Game"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"activePeriodIx"}},{"kind":"Field","name":{"kind":"Name","value":"activeSegmentIx"}}]}}]} as unknown as DocumentNode; export const LearningElementDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"LearningElement"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"learningElement"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"element"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"LearningElementData"}},{"kind":"Field","name":{"kind":"Name","value":"options"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"content"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"state"}},{"kind":"Field","name":{"kind":"Name","value":"solution"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"LearningElementData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LearningElement"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"question"}},{"kind":"Field","name":{"kind":"Name","value":"reward"}},{"kind":"Field","name":{"kind":"Name","value":"motivation"}},{"kind":"Field","name":{"kind":"Name","value":"feedback"}}]}}]} as unknown as DocumentNode; export const LearningElementsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"LearningElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"learningElements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"LearningElementData"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"LearningElementData"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LearningElement"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"question"}},{"kind":"Field","name":{"kind":"Name","value":"reward"}},{"kind":"Field","name":{"kind":"Name","value":"motivation"}},{"kind":"Field","name":{"kind":"Name","value":"feedback"}}]}}]} as unknown as DocumentNode; diff --git a/apps/demo-game/src/graphql/generated/schema.graphql b/apps/demo-game/src/graphql/generated/schema.graphql index 07712eb6..3a3ace05 100644 --- a/apps/demo-game/src/graphql/generated/schema.graphql +++ b/apps/demo-game/src/graphql/generated/schema.graphql @@ -229,6 +229,7 @@ type PlayerState { type Query { game(id: Int): Game + gameWithoutFacts(id: Int): Game games: [Game!] learningElement(id: ID!): LearningElementState learningElements: [LearningElement!] diff --git a/apps/demo-game/src/graphql/generated/schema.json b/apps/demo-game/src/graphql/generated/schema.json index 70421fcf..83fb7d03 100644 --- a/apps/demo-game/src/graphql/generated/schema.json +++ b/apps/demo-game/src/graphql/generated/schema.json @@ -2838,6 +2838,31 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "gameWithoutFacts", + "description": null, + "args": [ + { + "name": "id", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "Game", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "games", "description": null, diff --git a/apps/demo-game/src/pages/admin/games/[id].tsx b/apps/demo-game/src/pages/admin/games/[id].tsx index c69c72a8..709f701d 100644 --- a/apps/demo-game/src/pages/admin/games/[id].tsx +++ b/apps/demo-game/src/pages/admin/games/[id].tsx @@ -788,7 +788,7 @@ function ManageGame() {
{getButton()} - +
diff --git a/apps/demo-game/src/pages/play/cockpit.tsx b/apps/demo-game/src/pages/play/cockpit.tsx index 4cc1389f..af52f71f 100644 --- a/apps/demo-game/src/pages/play/cockpit.tsx +++ b/apps/demo-game/src/pages/play/cockpit.tsx @@ -127,7 +127,7 @@ function GameLayout({ children }: { children: React.ReactNode }) { const tabs = [ { name: 'Reports', - href: `/admin/reports/${data?.result?.currentGame?.id}`, + href: `/reports/${data?.result?.currentGame?.id}`, }, ] diff --git a/apps/demo-game/src/pages/admin/reports/[id].tsx b/apps/demo-game/src/pages/reports/[id].tsx similarity index 97% rename from apps/demo-game/src/pages/admin/reports/[id].tsx rename to apps/demo-game/src/pages/reports/[id].tsx index 65b7afbc..7080268d 100644 --- a/apps/demo-game/src/pages/admin/reports/[id].tsx +++ b/apps/demo-game/src/pages/reports/[id].tsx @@ -5,6 +5,7 @@ import { useQuery } from '@apollo/client' import { Game, GameDocument, + GameWithoutFactsDocument, SpecificResultsDocument, } from 'src/graphql/generated/ops' @@ -48,6 +49,7 @@ import { YAxis, } from 'recharts' +import { useSession } from 'next-auth/react' import { composeChartData } from '~/lib/analysis' import { NUM_MONTHS } from '~/lib/constants' @@ -71,11 +73,20 @@ function ReportGame() { const [currPeriod, setCurrPeriod] = useState(0) - const { data, error, loading } = useQuery(GameDocument, { - variables: { id: Number(router.query.id), includeFacts: false }, - // pollInterval: 15000, - skip: !router.query.id, - }) + const { data: sessionData, status: sessionStatus } = useSession() + const isAuthenticated = sessionStatus === 'authenticated' + const isAdmin = sessionData?.user?.role === 'ADMIN' + + const skipQuery = !router.query.id || !isAuthenticated + + const { data, error, loading } = useQuery( + isAdmin ? GameDocument : GameWithoutFactsDocument, + { + variables: { id: Number(router.query.id) }, + // pollInterval: 15000, + skip: skipQuery, + } + ) const { data: segmentEndResults, @@ -306,7 +317,8 @@ function ReportGame() { segmentEndResultsLoading || periodEndResultsLoading || !memoizedDataPeriod || - !memoizedData + !memoizedData || + skipQuery ) { return
loading...
} diff --git a/packages/platform/public/ops/QGame.graphql b/packages/platform/public/ops/QGame.graphql index 0b2b5ae7..94ede441 100644 --- a/packages/platform/public/ops/QGame.graphql +++ b/packages/platform/public/ops/QGame.graphql @@ -1,7 +1,8 @@ #import "./FGameData.graphql" +#import "./FPeriodData.graphql" #import "./FPlayerData.graphql" -query Game($id: Int, $includeFacts: Boolean!) { +query Game($id: Int) { game(id: $id) { ...GameData activePeriod { @@ -18,34 +19,7 @@ query Game($id: Int, $includeFacts: Boolean!) { } } periods { - id - - index - activeSegmentIx - - facts @include(if: $includeFacts) - - segments { - id - - index - - countdownExpiresAt - countdownDurationMs - - facts @include(if: $includeFacts) - - learningElements { - id - title - } - - storyElements { - id - title - } - } - segmentCount + ...PeriodData } players { id diff --git a/packages/platform/public/ops/QGameWithoutFacts.graphql b/packages/platform/public/ops/QGameWithoutFacts.graphql new file mode 100644 index 00000000..3dc5a892 --- /dev/null +++ b/packages/platform/public/ops/QGameWithoutFacts.graphql @@ -0,0 +1,63 @@ +#import "./FGameData.graphql" +#import "./FPlayerData.graphql" + +query GameWithoutFacts($id: Int) { + gameWithoutFacts(id: $id) { + ...GameData + activePeriod { + id + activeSegmentIx + activeSegment { + id + countdownExpiresAt + countdownDurationMs + } + segmentCount + segments { + id + } + } + periods { + id + + index + activeSegmentIx + + segments { + id + + index + + countdownExpiresAt + countdownDurationMs + + learningElements { + id + title + } + + storyElements { + id + title + } + } + segmentCount + } + players { + id + + isReady + + role + + number + name + + facts + + experience + experienceToNext + token + } + } +} diff --git a/packages/platform/src/types/Query.ts b/packages/platform/src/types/Query.ts index b426f2b6..256790c0 100644 --- a/packages/platform/src/types/Query.ts +++ b/packages/platform/src/types/Query.ts @@ -27,6 +27,16 @@ export function generateBaseQueries() { }, }) + t.field('gameWithoutFacts', { + type: Game, + args: { + id: intArg(), + }, + async resolve(_, args, ctx) { + return GameService.getGame(args, ctx) + }, + }) + t.field('result', { type: PlayerState, async resolve(_, args, ctx) {