Админка, настройки, логин, кабинеты преподавателя и студента полностью переведены на React 19 (модель strangler, docs/REACT_MIGRATION.md). - 15 вкладок админки: lazy-загрузка, общий error boundary, сервисный слой - Удалены legacy-views и переходный слой LegacyTabView (45 файлов) - Сборка esbuild (frontend/scripts/build-react.mjs) с бюджетами gzip на чанки - CSP-хэши, кэширование: chunk'и immutable, CSS/HTML no-cache (react-cache.conf) - Фиксы: lazy-импорт именованных экспортов (краш после авторизации), растяжение #admin-root/#settings-root на всю ширину, возврат subjects/lessonTypes из справочников (краш просмотра расписаний), отказ от заведомо широкого поиска расписания без выбранной цели, центрирование карточки логина - Тесты: 237/237 (npm run check), регрессионные на lazy-вкладки и ширину - Документация: REACT_MIGRATION.md, REACT_MIGRATION_RESULT.md, FRONTEND.md
84 lines
2.9 KiB
JavaScript
84 lines
2.9 KiB
JavaScript
import { createElement } from 'react';
|
|
import { renderToStaticMarkup } from 'react-dom/server';
|
|
|
|
import { AdminWorkspace } from '../AdminApp.jsx';
|
|
import { AcademicCalendarTab } from '../tabs/AcademicCalendarTab.jsx';
|
|
import { AuditoriumWorkloadTab } from '../tabs/AuditoriumWorkloadTab.jsx';
|
|
import { ClassroomsTab } from '../tabs/ClassroomsTab.jsx';
|
|
import { DashboardTab } from '../tabs/DashboardTab.jsx';
|
|
import { DepartmentWorkspaceTab } from '../tabs/DepartmentWorkspaceTab.jsx';
|
|
import { GroupsTab } from '../tabs/GroupsTab.jsx';
|
|
import { ScheduleQualityTab } from '../tabs/ScheduleQualityTab.jsx';
|
|
import { ScheduleTab } from '../tabs/ScheduleTab.jsx';
|
|
import { ScheduleVersionsTab } from '../tabs/ScheduleVersionsTab.jsx';
|
|
import { ScheduleViewTab } from '../tabs/ScheduleViewTab.jsx';
|
|
import { TeacherAbsencesTab } from '../tabs/TeacherAbsencesTab.jsx';
|
|
import { SubjectsTab } from '../tabs/SubjectsTab.jsx';
|
|
import { TeacherRequestsTab } from '../tabs/TeacherRequestsTab.jsx';
|
|
import { UniversityStructureTab } from '../tabs/UniversityStructureTab.jsx';
|
|
import { UsersTab } from '../tabs/UsersTab.jsx';
|
|
|
|
export function renderAdminWorkspace({ role } = {}) {
|
|
return renderToStaticMarkup(createElement(AdminWorkspace, { role: role || 'ADMIN' }));
|
|
}
|
|
|
|
export function renderClassroomsTab() {
|
|
return renderToStaticMarkup(createElement(ClassroomsTab));
|
|
}
|
|
|
|
export function renderSubjectsTab() {
|
|
return renderToStaticMarkup(createElement(SubjectsTab));
|
|
}
|
|
|
|
export function renderDashboardTab() {
|
|
return renderToStaticMarkup(createElement(DashboardTab));
|
|
}
|
|
|
|
export function renderUsersTab() {
|
|
return renderToStaticMarkup(createElement(UsersTab));
|
|
}
|
|
|
|
export function renderGroupsTab() {
|
|
return renderToStaticMarkup(createElement(GroupsTab));
|
|
}
|
|
|
|
export function renderUniversityStructureTab() {
|
|
return renderToStaticMarkup(createElement(UniversityStructureTab));
|
|
}
|
|
|
|
export function renderTeacherRequestsTab() {
|
|
return renderToStaticMarkup(createElement(TeacherRequestsTab));
|
|
}
|
|
|
|
export function renderDepartmentWorkspaceTab() {
|
|
return renderToStaticMarkup(createElement(DepartmentWorkspaceTab));
|
|
}
|
|
|
|
export function renderAuditoriumWorkloadTab() {
|
|
return renderToStaticMarkup(createElement(AuditoriumWorkloadTab));
|
|
}
|
|
|
|
export function renderAcademicCalendarTab() {
|
|
return renderToStaticMarkup(createElement(AcademicCalendarTab));
|
|
}
|
|
|
|
export function renderScheduleViewTab() {
|
|
return renderToStaticMarkup(createElement(ScheduleViewTab));
|
|
}
|
|
|
|
export function renderScheduleTab() {
|
|
return renderToStaticMarkup(createElement(ScheduleTab));
|
|
}
|
|
|
|
export function renderScheduleVersionsTab() {
|
|
return renderToStaticMarkup(createElement(ScheduleVersionsTab));
|
|
}
|
|
|
|
export function renderScheduleQualityTab() {
|
|
return renderToStaticMarkup(createElement(ScheduleQualityTab));
|
|
}
|
|
|
|
export function renderTeacherAbsencesTab() {
|
|
return renderToStaticMarkup(createElement(TeacherAbsencesTab));
|
|
}
|