feat: завершить миграцию фронтенда на React (этапы 1-5)
Админка, настройки, логин, кабинеты преподавателя и студента полностью переведены на 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
This commit is contained in:
83
frontend/react/admin/testing/render-admin.jsx
Normal file
83
frontend/react/admin/testing/render-admin.jsx
Normal file
@@ -0,0 +1,83 @@
|
||||
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));
|
||||
}
|
||||
Reference in New Issue
Block a user