Skip to content

Commit

Permalink
fix rating result client error on events with only one stage
Browse files Browse the repository at this point in the history
  • Loading branch information
Tschonti committed Oct 16, 2024
1 parent a319b20 commit bb7391e
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 38 deletions.
6 changes: 3 additions & 3 deletions packages/client/src/pages/results/ResultDetails.page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { PATHS } from 'src/util/paths'
import { filterEventMessages } from 'src/util/resultItemHelpers'
import { EventRankBadge } from '../events/components/EventRankBadge'
import { AgeGroupRoleSelector } from './components/AgeGroupRoleSelector'
import { CategoryBarChart } from './components/CategoriesBarChart'
import { CategoriesBarChart } from './components/CategoriesBarChart'
import { CriteriaBarChart } from './components/CriteriaBarChart'
import { RatingMessage } from './components/RatingMessage'

Expand Down Expand Up @@ -74,7 +74,7 @@ export const ResultDetailsPage = () => {
<Text>
<b>Rendező{event.organisers.length > 1 && 'k'}:</b> {event.organisers.map((o) => o.shortName).join(', ')}
</Text>
{ratingCount && (
{ratingCount !== undefined && (
<Text>
Összesen <b>{ratingCount}</b> felhasználó értékelte a versenyt.
</Text>
Expand All @@ -87,7 +87,7 @@ export const ResultDetailsPage = () => {
<AgeGroupRoleSelector />
</Stack>
<Heading size="md">Kategóriák szerinti eredmények</Heading>
<CategoryBarChart event={event} setSelectedCategoryId={setSelectedCategoryId} />
<CategoriesBarChart event={event} setSelectedCategoryId={setSelectedCategoryId} />
<Heading size="md">Szempontok szerinti eredmények</Heading>
<VStack gap={0.5} alignItems="flex-start" width={['100%', '100%', '33%']}>
<FormLabel>Kategória</FormLabel>
Expand Down
47 changes: 28 additions & 19 deletions packages/client/src/pages/results/components/CategoriesBarChart.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,21 @@ type Props = {
setSelectedCategoryId: (catId: number) => void
}

export const CategoryBarChart = ({ event, setSelectedCategoryId }: Props) => {
export const CategoriesBarChart = ({ event, setSelectedCategoryId }: Props) => {
const { selectedAgeGroups, selectedRoles } = useResultTableContext()

const parseEventData = (rootResult: RatingResultWithJoins, stages: StageWithResults[]): BarChartData[] => {
const rootOutput: BarChartData = {
name: 'Összesített átlag',
event: Math.max(+(getResultItem(rootResult.items, selectedRoles, selectedAgeGroups)?.average ?? 0).toFixed(2), 0),
}
stages.forEach((s) => {
rootOutput[s.id] = Math.max(+(getResultItem(s.ratingResults.items, selectedRoles, selectedAgeGroups)?.average ?? 0).toFixed(2), 0)
})
if (stages.length > 1) {
stages.forEach((s) => {
if (s.ratingResults) {
rootOutput[s.id] = Math.max(+(getResultItem(s.ratingResults.items, selectedRoles, selectedAgeGroups)?.average ?? 0).toFixed(2), 0)
}
})
}
return [
rootOutput,
...(rootResult.children?.map((r) => {
Expand All @@ -30,18 +34,22 @@ export const CategoryBarChart = ({ event, setSelectedCategoryId }: Props) => {
name: r.category?.name ?? '',
event: Math.max(+(getResultItem(r.items, selectedRoles, selectedAgeGroups)?.average ?? 0).toFixed(2), 0),
}
stages.forEach((s) => {
output[s.id] = Math.max(
+(
getResultItem(
s.ratingResults.children?.find((c) => c.categoryId === r.categoryId)?.items ?? [],
selectedRoles,
selectedAgeGroups
)?.average ?? 0
).toFixed(2),
0
)
})
if (stages.length > 1) {
stages.forEach((s) => {
if (s.ratingResults) {
output[s.id] = Math.max(
+(
getResultItem(
s.ratingResults.children?.find((c) => c.categoryId === r.categoryId)?.items ?? [],
selectedRoles,
selectedAgeGroups
)?.average ?? 0
).toFixed(2),
0
)
}
})
}
return output
}) ?? []),
]
Expand Down Expand Up @@ -77,9 +85,10 @@ export const CategoryBarChart = ({ event, setSelectedCategoryId }: Props) => {
{!isMobile && <Tooltip cursor={{ fillOpacity: 0.4 }} />}
<Bar name="Teljes verseny" dataKey="event" fill={chartColors[0]} onClick={(e) => onChartClick(e.categoryId)} />

{event.stages.map((s, i) => (
<Bar key={s.id} name={s.name} dataKey={s.id} fill={chartColors[i + 1]} onClick={(e) => onChartClick(e.categoryId)} />
))}
{event.stages.length > 1 &&
event.stages.map((s, i) => (
<Bar key={s.id} name={s.name} dataKey={s.id} fill={chartColors[i + 1]} onClick={(e) => onChartClick(e.categoryId)} />
))}
</BarChart>
</Box>
)
Expand Down
36 changes: 21 additions & 15 deletions packages/client/src/pages/results/components/CriteriaBarChart.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,20 +25,24 @@ export const CriteriaBarChart = ({ event, selectedCategoryId }: Props) => {
name: r.criterion?.name ?? '',
event: Math.max(+(getResultItem(r.items, selectedRoles, selectedAgeGroups)?.average ?? 0).toFixed(2), 0),
}
event.stages.forEach((s) => {
output[s.id] = Math.max(
+(
getResultItem(
s.ratingResults.children
?.find((cat) => cat.categoryId === selectedCategoryId)
?.children?.find((c) => c.criterionId === r.criterionId)?.items ?? [],
selectedRoles,
selectedAgeGroups
)?.average ?? 0
).toFixed(2),
0
)
})
if (event.stages.length > 1) {
event.stages.forEach((s) => {
if (s.ratingResults) {
output[s.id] = Math.max(
+(
getResultItem(
s.ratingResults.children
?.find((cat) => cat.categoryId === selectedCategoryId)
?.children?.find((c) => c.criterionId === r.criterionId)?.items ?? [],
selectedRoles,
selectedAgeGroups
)?.average ?? 0
).toFixed(2),
0
)
}
})
}
return output
}) ?? []
)
Expand Down Expand Up @@ -68,7 +72,9 @@ export const CriteriaBarChart = ({ event, selectedCategoryId }: Props) => {
{!isMobile && <Tooltip cursor={{ fillOpacity: 0.4 }} />}
<Legend />
<Bar name="Teljes verseny" dataKey="event" fill={chartColors[0]} />
{stageSpecificCategory && event.stages.map((s, i) => <Bar key={s.id} name={s.name} dataKey={s.id} fill={chartColors[i + 1]} />)}
{event.stages.length > 1 &&
stageSpecificCategory &&
event.stages.map((s, i) => <Bar key={s.id} name={s.name} dataKey={s.id} fill={chartColors[i + 1]} />)}
</BarChart>
</Box>
)
Expand Down
2 changes: 1 addition & 1 deletion packages/common/src/lib/types/ratingResult.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export interface RatingResultItem {
}

export interface StageWithResults extends DbStage {
ratingResults: RatingResultWithJoins
ratingResults?: RatingResultWithJoins
}

export interface EventWithResults extends Omit<DbEvent, 'stages'> {
Expand Down

0 comments on commit bb7391e

Please sign in to comment.