add school year model
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
import { Link } from 'react-router-dom'
|
||||
import { useEffect, useMemo, useRef, useState, type FormEvent, type ReactNode } from 'react'
|
||||
import { useSchoolYearOptions } from '../hooks/useSchoolYearOptions'
|
||||
import type { LegacySchoolYearValue } from '../lib/schoolYearOptions'
|
||||
|
||||
export type CiFlashMessage = {
|
||||
id?: string
|
||||
@@ -61,19 +63,22 @@ export function CiAcademicFilter({
|
||||
classSectionId,
|
||||
onApply,
|
||||
}: {
|
||||
schoolYears?: Array<string | { school_year: string }>
|
||||
schoolYears?: LegacySchoolYearValue[]
|
||||
selectedYear?: string | null
|
||||
selectedSemester?: string | null
|
||||
classSectionId?: string | number | null
|
||||
onApply?: (values: { schoolYear: string; semester: string; classSectionId?: string }) => void
|
||||
}) {
|
||||
const years = (schoolYears ?? []).map((year) => (typeof year === 'string' ? year : year.school_year))
|
||||
const [schoolYear, setSchoolYear] = useState(selectedYear ?? years[0] ?? '')
|
||||
const { options, selectedYear: defaultYear } = useSchoolYearOptions({
|
||||
legacyYears: schoolYears,
|
||||
preferredYear: selectedYear,
|
||||
})
|
||||
const [schoolYear, setSchoolYear] = useState(selectedYear ?? defaultYear)
|
||||
const [semester, setSemester] = useState(selectedSemester ?? '')
|
||||
|
||||
useEffect(() => {
|
||||
setSchoolYear(selectedYear ?? years[0] ?? '')
|
||||
}, [selectedYear, years.join('|')])
|
||||
setSchoolYear(selectedYear ?? defaultYear)
|
||||
}, [defaultYear, selectedYear])
|
||||
|
||||
useEffect(() => {
|
||||
setSemester(selectedSemester ?? '')
|
||||
@@ -104,10 +109,10 @@ export function CiAcademicFilter({
|
||||
value={schoolYear}
|
||||
onChange={(event) => setSchoolYear(event.target.value)}
|
||||
>
|
||||
{years.length > 0 ? (
|
||||
years.map((year) => (
|
||||
<option key={year} value={year}>
|
||||
{year}
|
||||
{options.length > 0 ? (
|
||||
options.map((year) => (
|
||||
<option key={year.value} value={year.value}>
|
||||
{year.label}
|
||||
</option>
|
||||
))
|
||||
) : (
|
||||
@@ -143,9 +148,9 @@ export function CiAcademicFilter({
|
||||
type="button"
|
||||
className="btn btn-outline-secondary btn-sm"
|
||||
onClick={() => {
|
||||
setSchoolYear(years[0] ?? '')
|
||||
setSchoolYear(defaultYear)
|
||||
setSemester('')
|
||||
onApply?.({ schoolYear: years[0] ?? '', semester: '', classSectionId: undefined })
|
||||
onApply?.({ schoolYear: defaultYear, semester: '', classSectionId: undefined })
|
||||
}}
|
||||
>
|
||||
Reset
|
||||
|
||||
Reference in New Issue
Block a user