[Study programme] Update loading/error status

This commit is contained in:
Riku Rauhala
2025-03-11 13:46:13 +02:00
parent 1f2d381039
commit a72c5eeaea
@@ -1,6 +1,5 @@
import { Alert, AlertTitle, Stack } from '@mui/material' import { Alert, AlertTitle, Stack } from '@mui/material'
import { useEffect, useState } from 'react' import { useEffect, useState } from 'react'
import { Loader } from 'semantic-ui-react'
import { getTargetCreditsForProgramme } from '@/common' import { getTargetCreditsForProgramme } from '@/common'
import { studyProgrammeToolTips } from '@/common/InfoToolTips' import { studyProgrammeToolTips } from '@/common/InfoToolTips'
@@ -57,13 +56,15 @@ export const StudyTracksAndClassStatisticsTab = ({
}, [studyProgramme, studyTrack, studyTrackStats, specialGroupsExcluded]) }, [studyProgramme, studyTrack, studyTrackStats, specialGroupsExcluded])
const hasErrors = (isSuccess && !studyTrackStats) || isError const hasErrors = (isSuccess && !studyTrackStats) || isError
if (hasErrors) { const isFetchingOrLoading = isFetching || isLoading
return <h3>Something went wrong, please try refreshing the page.</h3>
}
const noData = isSuccess && studyTrackStats.mainStatsByYear && !studyTrackStats.mainStatsByYear.Total.length const noData = isSuccess && studyTrackStats.mainStatsByYear && !studyTrackStats.mainStatsByYear.Total.length
if (noData) { if (noData) {
return <h3>There is no data available for the selected programme between 2017-2022</h3> return (
<Alert severity="warning" variant="outlined">
There is no data available for the selected programme between 2017-{new Date().getFullYear()}
</Alert>
)
} }
const programmeCode = combinedProgramme ? `${studyProgramme}-${combinedProgramme}` : studyProgramme const programmeCode = combinedProgramme ? `${studyProgramme}-${combinedProgramme}` : studyProgramme
@@ -100,7 +101,7 @@ export const StudyTracksAndClassStatisticsTab = ({
} }
const hasStudyTracks = Object.keys(studyTrackStats?.studyTracks ?? {}).length > 1 && studyTrack === studyProgramme const hasStudyTracks = Object.keys(studyTrackStats?.studyTracks ?? {}).length > 1 && studyTrack === studyProgramme
const studyProgrammeMode = studyTrack === '' || studyTrack === studyProgramme const isStudyProgrammeMode = studyTrack === '' || studyTrack === studyProgramme
const calculateStudyTrackStats = (combo = false) => { const calculateStudyTrackStats = (combo = false) => {
if (!studyTrackStats?.graduationTimes) { if (!studyTrackStats?.graduationTimes) {
@@ -155,11 +156,6 @@ export const StudyTracksAndClassStatisticsTab = ({
} }
} }
// TODO: Replace with section status
if (isLoading || isFetching) {
return <Loader active style={{ marginTop: '10em' }} />
}
return ( return (
<Stack gap={2}> <Stack gap={2}>
<Section> <Section>
@@ -172,7 +168,7 @@ export const StudyTracksAndClassStatisticsTab = ({
<ToggleContainer> <ToggleContainer>
<Toggle <Toggle
cypress="study-right-toggle" cypress="study-right-toggle"
disabled={isError || isFetching || isLoading} disabled={hasErrors || isFetchingOrLoading}
firstLabel="All study rights" firstLabel="All study rights"
infoBoxContent={studyProgrammeToolTips.studyRightToggle} infoBoxContent={studyProgrammeToolTips.studyRightToggle}
secondLabel="Special study rights excluded" secondLabel="Special study rights excluded"
@@ -181,7 +177,7 @@ export const StudyTracksAndClassStatisticsTab = ({
/> />
<Toggle <Toggle
cypress="graduated-toggle" cypress="graduated-toggle"
disabled={isError || isFetching || isLoading} disabled={hasErrors || isFetchingOrLoading}
firstLabel="Graduated included" firstLabel="Graduated included"
infoBoxContent={studyProgrammeToolTips.graduatedToggle} infoBoxContent={studyProgrammeToolTips.graduatedToggle}
secondLabel="Graduated excluded" secondLabel="Graduated excluded"
@@ -198,9 +194,9 @@ export const StudyTracksAndClassStatisticsTab = ({
? studyProgrammeToolTips.studyTrackOverviewCombinedProgramme ? studyProgrammeToolTips.studyTrackOverviewCombinedProgramme
: studyProgrammeToolTips.studyTrackOverview : studyProgrammeToolTips.studyTrackOverview
} }
// TODO: isError={} isError={hasErrors}
// TODO: isLoading={} isLoading={isFetchingOrLoading}
title={`Students of the study ${studyProgrammeMode ? 'programme' : `track ${studyTrack}`} by starting year`} title={`Students of the study ${isStudyProgrammeMode ? 'programme' : `track ${studyTrack}`} by starting year`}
> >
<Stack gap={2}> <Stack gap={2}>
<ToggleContainer> <ToggleContainer>
@@ -231,11 +227,11 @@ export const StudyTracksAndClassStatisticsTab = ({
</Stack> </Stack>
</Section> </Section>
{studyProgrammeMode ? ( {isStudyProgrammeMode ? (
<Section <Section
infoBoxContent={studyProgrammeToolTips.studyTrackProgress} infoBoxContent={studyProgrammeToolTips.studyTrackProgress}
// TODO: isError={} isError={hasErrors}
// TODO: isLoading={} isLoading={isFetchingOrLoading}
title="Progress of students of the study programme by starting year" title="Progress of students of the study programme by starting year"
> >
{studyTrackStats && ( {studyTrackStats && (
@@ -264,15 +260,14 @@ export const StudyTracksAndClassStatisticsTab = ({
? studyProgrammeToolTips.averageGraduationTimesStudyTracksMaster ? studyProgrammeToolTips.averageGraduationTimesStudyTracksMaster
: studyProgrammeToolTips.averageGraduationTimesStudyTracks : studyProgrammeToolTips.averageGraduationTimesStudyTracks
} }
// TODO: isError={} isError={hasErrors}
// TODO: isLoading={} isLoading={isFetchingOrLoading}
title="Average graduation times by starting year" title="Average graduation times by starting year"
> >
<Stack gap={2}> <Stack gap={2}>
<ToggleContainer> <ToggleContainer>
<Toggle <Toggle
cypress="graduation-time-toggle" cypress="graduation-time-toggle"
// TODO: disabled={}
firstLabel="Breakdown" firstLabel="Breakdown"
secondLabel="Median times" secondLabel="Median times"
setValue={setShowMedian} setValue={setShowMedian}