[ProgrammeCourses] Make stats query respect selected years

This commit is contained in:
Aaro Koivukangas
2026-07-24 15:13:46 +03:00
parent c6b598de25
commit c41f091869
2 changed files with 22 additions and 8 deletions
@@ -10,6 +10,7 @@ import { Section } from '@/components/Section'
import { CourseYearFilter } from '@/pages/StudyProgramme/ProgrammeCoursesTab/ByCreditTypeTab/CourseYearFilter'
import { OverallStatsTable } from '@/pages/StudyProgramme/ProgrammeCoursesTab/ByCreditTypeTab/OverallStatsTable'
import { useGetProgrammeCoursesStatsQuery } from '@/redux/studyProgramme'
import { yearToYearCode } from '@oodikone/shared/util'
type YearOption = {
key: number
@@ -28,17 +29,22 @@ export const ByCreditTypeTab = ({
studyProgramme: string
setAcademicYear: (value: boolean) => void
}) => {
const { data, isError, isLoading } = useGetProgrammeCoursesStatsQuery({
id: studyProgramme,
combinedProgramme,
yearType: academicYear ? 'ACADEMIC_YEAR' : 'CALENDAR_YEAR',
})
const [minFromYear, setMinFromYear] = useState<number>(1950)
const [maxToYear, setMaxToYear] = useState<number>(new Date().getFullYear())
const [fromYear, setFromYear] = useState<number | null>(null)
const [toYear, setToYear] = useState<number | null>(null)
const [years, setYears] = useState<{ academic: YearOption[]; calendar: YearOption[] } | null>(null)
const [showStudents, setShowStudents] = useState(true)
const { data, isError, isLoading } = useGetProgrammeCoursesStatsQuery({
id: studyProgramme,
combinedProgramme,
yearType: academicYear ? 'ACADEMIC_YEAR' : 'CALENDAR_YEAR',
fromYearCode: yearToYearCode(fromYear ?? minFromYear),
toYearCode: yearToYearCode(toYear ?? maxToYear),
})
useEffect(() => {
if (!data) {
return
@@ -48,9 +54,11 @@ export const ByCreditTypeTab = ({
const initToYear = Number(max(yearCodes))
if (!fromYear) {
setFromYear(initFromYear)
setMinFromYear(initFromYear)
}
if (!toYear) {
setToYear(initToYear)
setMaxToYear(initToYear)
}
const academic: YearOption[] = []
const calendar: YearOption[] = []
@@ -53,10 +53,16 @@ const studyProgrammeApi = RTKApi.injectEndpoints({
}),
getProgrammeCoursesStats: builder.query<
StudyProgrammeCourse[],
{ id: string; yearType: YearType; combinedProgramme: string }
{
id: string
yearType: YearType
combinedProgramme: string
fromYearCode: string | number
toYearCode: string | number
}
>({
query: ({ id, yearType, combinedProgramme }) =>
`/studyprogrammes/${id}/coursestats?yearType=${yearType}&combinedProgramme=${combinedProgramme}`,
query: ({ id, yearType, combinedProgramme, fromYearCode, toYearCode }) =>
`/studyprogrammes/${id}/coursestats?yearType=${yearType}&combinedProgramme=${combinedProgramme}&fromYearCode=${fromYearCode}&toYearCode=${toYearCode}`,
}),
getStudyTracks: builder.query<Record<string, Name | string>, { id: string }>({
query: ({ id }) => `/studyprogrammes/${id}/studytracks`,