add school year model
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
import { useEffect, useState } from 'react'
|
||||
import { Link, useParams } from 'react-router-dom'
|
||||
import { Link, useParams, useSearchParams } from 'react-router-dom'
|
||||
import {
|
||||
fetchTeacherDashboard,
|
||||
isTeacherDashboardApiEnabled,
|
||||
type TeacherDashboardPayload,
|
||||
} from '../../api/teacherSession'
|
||||
import { useSchoolYearOptions } from '../../hooks/useSchoolYearOptions'
|
||||
import { TeacherShell } from './TeacherShell'
|
||||
import { useTeacherResource } from './useTeacherResource'
|
||||
|
||||
@@ -18,6 +19,16 @@ type SentPayload = { sentMessages?: MsgRow[] }
|
||||
|
||||
type TeacherMessagePayload = { message?: Record<string, unknown>; thread?: unknown[] }
|
||||
|
||||
function appendSchoolYearParam(path: string, schoolYear: string): string {
|
||||
if (!schoolYear) return path
|
||||
const [base, hash = ''] = path.split('#', 2)
|
||||
const [pathname, query = ''] = base.split('?', 2)
|
||||
const params = new URLSearchParams(query)
|
||||
if (!params.get('school_year')) params.set('school_year', schoolYear)
|
||||
const next = `${pathname}?${params.toString()}`
|
||||
return hash ? `${next}#${hash}` : next
|
||||
}
|
||||
|
||||
/** Every `/app/teacher/*` route so nothing is hidden behind the slim top nav alone. */
|
||||
const TEACHER_PAGE_GROUPS = [
|
||||
{
|
||||
@@ -204,14 +215,20 @@ export function TeacherNoClassesPage() {
|
||||
|
||||
/** `teacher/select_semester.php` */
|
||||
export function TeacherSelectSemesterPage() {
|
||||
const [searchParams] = useSearchParams()
|
||||
const { data, loading, error } = useTeacherResource<{
|
||||
invalidChoice?: string
|
||||
fallPath?: string
|
||||
springPath?: string
|
||||
}>('/select-semester')
|
||||
const requestedSchoolYear = searchParams.get('school_year')?.trim() ?? ''
|
||||
const { selectedYear } = useSchoolYearOptions({
|
||||
preferredYear: requestedSchoolYear,
|
||||
})
|
||||
const activeSchoolYear = requestedSchoolYear || selectedYear
|
||||
|
||||
const fallTo = data?.fallPath ?? '/app/teacher/scores?semester=Fall'
|
||||
const springTo = data?.springPath ?? '/app/teacher/scores?semester=Spring'
|
||||
const fallTo = appendSchoolYearParam(data?.fallPath ?? '/app/teacher/scores?semester=Fall', activeSchoolYear)
|
||||
const springTo = appendSchoolYearParam(data?.springPath ?? '/app/teacher/scores?semester=Spring', activeSchoolYear)
|
||||
|
||||
return (
|
||||
<TeacherShell title="Choose a semester" loading={loading} error={error}>
|
||||
|
||||
Reference in New Issue
Block a user