Round 15: Timetable, Resource Library, Advanced Analytics, Accessibility
This commit is contained in:
1 parent
0a7cfae311
commit
a94f900ae0
15 files changed
+4580
-1079
No files matched your search
@@ -1175,6 +1175,56 @@ export interface AnalyticsAtRiskStudent {
|
||||
latestEntryDate: string;
|
||||
}
|
||||
|
||||
export interface AnalyticsSubjectMasteryPoint {
|
||||
categoryId: string;
|
||||
categoryName: string;
|
||||
avgMastery: number;
|
||||
entryCount: number;
|
||||
}
|
||||
|
||||
export interface AnalyticsTeacherPerformancePoint {
|
||||
teacherId: string;
|
||||
teacherName: string;
|
||||
assessmentCount: number;
|
||||
progressCount: number;
|
||||
improvementRate: number;
|
||||
notebookCount: number;
|
||||
}
|
||||
|
||||
export interface AnalyticsSelfVsTeacherAgg {
|
||||
avgSelfLevel: number;
|
||||
avgTeacherLevel: number;
|
||||
avgGap: number;
|
||||
totalComparisons: number;
|
||||
}
|
||||
|
||||
export interface AnalyticsGapAnalysisPoint {
|
||||
studentId: string;
|
||||
studentName: string;
|
||||
competencyId: string;
|
||||
selfLevel: number;
|
||||
teacherLevel: number;
|
||||
gap: number;
|
||||
}
|
||||
|
||||
export interface AnalyticsExcellingStudent {
|
||||
studentId: string;
|
||||
studentName: string;
|
||||
className: string;
|
||||
latestMastery: number;
|
||||
improvement: number;
|
||||
}
|
||||
|
||||
export interface AnalyticsClassRadarPoint {
|
||||
classId: string;
|
||||
className: string;
|
||||
mastery: number;
|
||||
attendance: number;
|
||||
engagement: number;
|
||||
progress: number;
|
||||
behavior: number;
|
||||
}
|
||||
|
||||
export interface AnalyticsData {
|
||||
masteryTrend: AnalyticsMasteryTrendPoint[];
|
||||
classComparison: AnalyticsClassComparisonPoint[];
|
||||
@@ -1187,6 +1237,17 @@ export interface AnalyticsData {
|
||||
totalEntries: number;
|
||||
totalStudents: number;
|
||||
overallAvgMastery: number;
|
||||
// New fields
|
||||
totalClasses: number;
|
||||
totalTeachers: number;
|
||||
totalCompetencies: number;
|
||||
competencyCoveragePct: number;
|
||||
subjectMasteryAvg: AnalyticsSubjectMasteryPoint[];
|
||||
teacherPerformance: AnalyticsTeacherPerformancePoint[];
|
||||
selfVsTeacherAgg: AnalyticsSelfVsTeacherAgg | null;
|
||||
gapAnalysis: AnalyticsGapAnalysisPoint[];
|
||||
excellingStudents: AnalyticsExcellingStudent[];
|
||||
classRadarData: AnalyticsClassRadarPoint[];
|
||||
}
|
||||
|
||||
export function fetchAnalytics(params: {
|
||||
|
||||
+278
@@ -2591,6 +2591,8 @@ const de: TranslationDict = {
|
||||
'portfolio.all_types': 'Alle Arten',
|
||||
'portfolio.add_new': 'Neuer Eintrag',
|
||||
'nav.portfolio': 'Portfolio',
|
||||
'nav.timetable': 'Stundenplan',
|
||||
'nav.resources': 'Mediathek',
|
||||
|
||||
// Navigation - Homework
|
||||
'nav.homework': 'Hausaufgaben',
|
||||
@@ -2703,6 +2705,143 @@ const de: TranslationDict = {
|
||||
'announcement.target_parents': 'Eltern',
|
||||
'announcement.no_announcements': 'Keine Ankündigungen vorhanden',
|
||||
'announcement.dismiss': 'Ausblenden',
|
||||
|
||||
// ─── Advanced Analytics ──────────────────────────────────────────
|
||||
'analytics.school_overview': 'Schulübersicht',
|
||||
'analytics.student_performance': 'Schülerleistung',
|
||||
'analytics.teacher_performance': 'Lehrerleistung',
|
||||
'analytics.predictive': 'Prognose',
|
||||
'analytics.at_risk': 'Gefährdet',
|
||||
'analytics.excelling': 'Hervorragend',
|
||||
'analytics.needs_attention': 'Aufmerksamkeit erforderlich',
|
||||
'analytics.export_chart': 'Diagramm exportieren',
|
||||
'analytics.export_csv': 'CSV exportieren',
|
||||
'analytics.print_report': 'Bericht drucken',
|
||||
'analytics.student_teacher_ratio': 'Schüler-Lehrer-Ratio',
|
||||
'analytics.competency_coverage': 'Kompetenzabdeckung',
|
||||
'analytics.avg_mastery_subject': 'Ø Kompetenz je Fach',
|
||||
'analytics.attendance_trend': 'Anwesenheitsverlauf',
|
||||
'analytics.behavior_trend': 'Verhaltensverlauf',
|
||||
'analytics.mastery_histogram': 'Kompetenzverteilung (Histogram)',
|
||||
'analytics.progress_over_time': 'Verlauf über Zeit',
|
||||
'analytics.subject_comparison': 'Fachvergleich',
|
||||
'analytics.assessment_distribution': 'Bewertungsverteilung',
|
||||
'analytics.self_vs_teacher': 'Selbst- vs. Lehrerbewertung',
|
||||
'analytics.gap_analysis': 'Gap-Analyse',
|
||||
'analytics.self_assessment': 'Selbstbewertung',
|
||||
'analytics.teacher_assessment': 'Lehrerbewertung',
|
||||
'analytics.radar_comparison': 'Radarvergleich',
|
||||
'analytics.heatmap_coverage': 'Kompetenzabdeckung (Heatmap)',
|
||||
'analytics.ranking_table': 'Ranking-Tabelle',
|
||||
'analytics.assessments_per_teacher': 'Bewertungen pro Lehrkraft',
|
||||
'analytics.progress_per_teacher': 'Fortschritt pro Lehrkraft',
|
||||
'analytics.improvement_rate': 'Verbesserungsrate',
|
||||
'analytics.notebook_usage': 'Notizbuchnutzung',
|
||||
'analytics.students_at_risk': 'Gefährdete Schüler:innen',
|
||||
'analytics.students_excelling': 'Hervorragende Schüler:innen',
|
||||
'analytics.areas_needing_attention': 'Bereiche mit Förderbedarf',
|
||||
'analytics.risk_trend': 'Risikoentwicklung',
|
||||
'analytics.excelling_trend': 'Entwicklung hervorragender Schüler:innen',
|
||||
'analytics.attendance_rate': 'Anwesenheitsrate',
|
||||
'analytics.behavior_incidents': 'Verhaltensvorfälle',
|
||||
'analytics.total_classes': 'Klassen',
|
||||
'analytics.total_teachers': 'Lehrkräfte',
|
||||
'analytics.total_competencies': 'Kompetenzen',
|
||||
'analytics.coverage_pct': 'Abgedeckt',
|
||||
'analytics.uncovered_pct': 'Offen',
|
||||
'analytics.score': 'Punktzahl',
|
||||
'analytics.gap': 'Differenz',
|
||||
'analytics.rank': 'Rang',
|
||||
'analytics.entries': 'Einträge',
|
||||
'analytics.improvement': 'Verbesserung',
|
||||
'analytics.export_png': 'PNG exportieren',
|
||||
'analytics.no_export_data': 'Keine Daten zum Exportieren',
|
||||
'analytics.class_dim_mastery': 'Kompetenz',
|
||||
'analytics.class_dim_attendance': 'Anwesenheit',
|
||||
'analytics.class_dim_engagement': 'Engagement',
|
||||
'analytics.class_dim_progress': 'Fortschritt',
|
||||
'analytics.class_dim_behavior': 'Verhalten',
|
||||
'analytics.self_level': 'Selbstniveau',
|
||||
'analytics.teacher_level': 'Lehrerniveau',
|
||||
'analytics.section_school': 'Schulübersicht',
|
||||
'analytics.section_performance': 'Leistung',
|
||||
'analytics.section_class': 'Klassen',
|
||||
'analytics.section_teacher': 'Lehrkräfte',
|
||||
'analytics.section_predictive': 'Prognose',
|
||||
'analytics.section_export': 'Export',
|
||||
|
||||
// ─── Accessibility ───────────────────────────────────────────────
|
||||
'accessibility.skip_to_content': 'Zum Inhalt springen',
|
||||
'accessibility.high_contrast': 'Hoher Kontrast',
|
||||
'accessibility.reduced_motion': 'Reduzierte Bewegung',
|
||||
'accessibility.keyboard_shortcuts': 'Tastaturkurzbefehle',
|
||||
'accessibility.shortcut_desc': 'Tastaturkurzbefehle für die Navigation',
|
||||
|
||||
// Timetable
|
||||
'timetable.title': 'Stundenplan',
|
||||
'timetable.monday': 'Montag',
|
||||
'timetable.tuesday': 'Dienstag',
|
||||
'timetable.wednesday': 'Mittwoch',
|
||||
'timetable.thursday': 'Donnerstag',
|
||||
'timetable.friday': 'Freitag',
|
||||
'timetable.period': 'Stunde',
|
||||
'timetable.break': 'Pause',
|
||||
'timetable.add_slot': 'Stunde hinzufügen',
|
||||
'timetable.edit_slot': 'Stunde bearbeiten',
|
||||
'timetable.no_subject': 'Kein Fach',
|
||||
'timetable.print': 'Stundenplan drucken',
|
||||
'timetable.class_view': 'Klassensicht',
|
||||
'timetable.room': 'Raum',
|
||||
'timetable.start_time': 'Beginn',
|
||||
'timetable.end_time': 'Ende',
|
||||
'timetable.subject': 'Fach',
|
||||
'timetable.teacher': 'Lehrkraft',
|
||||
'timetable.day': 'Tag',
|
||||
'timetable.period_num': 'Stunde {n}',
|
||||
'timetable.no_slots': 'Keine Stunden vorhanden',
|
||||
'timetable.select_class': 'Klasse auswählen',
|
||||
'timetable.batch_create': 'Stundenplan erstellen',
|
||||
'timetable.delete_slot': 'Stunde löschen',
|
||||
'timetable.break_period': 'Pause',
|
||||
'timetable.drag_hint': 'Ziehen zum Verschieben',
|
||||
|
||||
// Resources
|
||||
'resources.title': 'Ressourcen',
|
||||
'resources.library': 'Mediathek',
|
||||
'resources.upload': 'Hochladen',
|
||||
'resources.type': 'Typ',
|
||||
'resources.document': 'Dokument',
|
||||
'resources.worksheet': 'Arbeitsblatt',
|
||||
'resources.presentation': 'Präsentation',
|
||||
'resources.video': 'Video',
|
||||
'resources.link': 'Link',
|
||||
'resources.image': 'Bild',
|
||||
'resources.audio': 'Audio',
|
||||
'resources.download': 'Herunterladen',
|
||||
'resources.downloads': 'Downloads',
|
||||
'resources.preview': 'Vorschau',
|
||||
'resources.favorite': 'Favorit',
|
||||
'resources.create': 'Ressource erstellen',
|
||||
'resources.edit': 'Ressource bearbeiten',
|
||||
'resources.search': 'Ressourcen suchen',
|
||||
'resources.filter_type': 'Nach Typ filtern',
|
||||
'resources.filter_subject': 'Nach Fach filtern',
|
||||
'resources.all_types': 'Alle Typen',
|
||||
'resources.all_subjects': 'Alle Fächer',
|
||||
'resources.public': 'Öffentlich',
|
||||
'resources.private': 'Privat',
|
||||
'resources.toggle_public': 'Öffentlich/Privat',
|
||||
'resources.no_resources': 'Keine Ressourcen vorhanden',
|
||||
'resources.title_field': 'Titel',
|
||||
'resources.description_field': 'Beschreibung',
|
||||
'resources.url_field': 'URL',
|
||||
'resources.content_field': 'Inhalt',
|
||||
'resources.subject_field': 'Fach',
|
||||
'resources.class_field': 'Klasse',
|
||||
'resources.grade_field': 'Klassenstufe',
|
||||
'resources.tags_field': 'Schlagwörter',
|
||||
'resources.add_tag': 'Schlagwort hinzufügen',
|
||||
'resources.delete_confirm': 'Ressource wirklich löschen?',
|
||||
};
|
||||
|
||||
const en: TranslationDict = {
|
||||
@@ -5293,6 +5432,8 @@ const en: TranslationDict = {
|
||||
'portfolio.all_types': 'All Types',
|
||||
'portfolio.add_new': 'New Entry',
|
||||
'nav.portfolio': 'Portfolio',
|
||||
'nav.timetable': 'Timetable',
|
||||
'nav.resources': 'Resources',
|
||||
|
||||
// Navigation - Homework
|
||||
'nav.homework': 'Homework',
|
||||
@@ -5405,6 +5546,143 @@ const en: TranslationDict = {
|
||||
'announcement.target_parents': 'Parents',
|
||||
'announcement.no_announcements': 'No announcements available',
|
||||
'announcement.dismiss': 'Dismiss',
|
||||
|
||||
// ─── Advanced Analytics ──────────────────────────────────────────
|
||||
'analytics.school_overview': 'School Overview',
|
||||
'analytics.student_performance': 'Student Performance',
|
||||
'analytics.teacher_performance': 'Teacher Performance',
|
||||
'analytics.predictive': 'Predictive',
|
||||
'analytics.at_risk': 'At Risk',
|
||||
'analytics.excelling': 'Excelling',
|
||||
'analytics.needs_attention': 'Needs Attention',
|
||||
'analytics.export_chart': 'Export Chart',
|
||||
'analytics.export_csv': 'Export CSV',
|
||||
'analytics.print_report': 'Print Report',
|
||||
'analytics.student_teacher_ratio': 'Student-to-Teacher Ratio',
|
||||
'analytics.competency_coverage': 'Competency Coverage',
|
||||
'analytics.avg_mastery_subject': 'Avg Mastery per Subject',
|
||||
'analytics.attendance_trend': 'Attendance Trend',
|
||||
'analytics.behavior_trend': 'Behavior Trend',
|
||||
'analytics.mastery_histogram': 'Mastery Distribution (Histogram)',
|
||||
'analytics.progress_over_time': 'Progress Over Time',
|
||||
'analytics.subject_comparison': 'Subject Comparison',
|
||||
'analytics.assessment_distribution': 'Assessment Score Distribution',
|
||||
'analytics.self_vs_teacher': 'Self-Assessment vs Teacher Assessment',
|
||||
'analytics.gap_analysis': 'Gap Analysis',
|
||||
'analytics.self_assessment': 'Self-Assessment',
|
||||
'analytics.teacher_assessment': 'Teacher Assessment',
|
||||
'analytics.radar_comparison': 'Radar Comparison',
|
||||
'analytics.heatmap_coverage': 'Competency Coverage (Heatmap)',
|
||||
'analytics.ranking_table': 'Ranking Table',
|
||||
'analytics.assessments_per_teacher': 'Assessments per Teacher',
|
||||
'analytics.progress_per_teacher': 'Progress per Teacher',
|
||||
'analytics.improvement_rate': 'Improvement Rate',
|
||||
'analytics.notebook_usage': 'Notebook Usage',
|
||||
'analytics.students_at_risk': 'Students at Risk',
|
||||
'analytics.students_excelling': 'Students Excelling',
|
||||
'analytics.areas_needing_attention': 'Areas Needing Attention',
|
||||
'analytics.risk_trend': 'Risk Trend',
|
||||
'analytics.excelling_trend': 'Excelling Students Trend',
|
||||
'analytics.attendance_rate': 'Attendance Rate',
|
||||
'analytics.behavior_incidents': 'Behavior Incidents',
|
||||
'analytics.total_classes': 'Classes',
|
||||
'analytics.total_teachers': 'Teachers',
|
||||
'analytics.total_competencies': 'Competencies',
|
||||
'analytics.coverage_pct': 'Covered',
|
||||
'analytics.uncovered_pct': 'Uncovered',
|
||||
'analytics.score': 'Score',
|
||||
'analytics.gap': 'Gap',
|
||||
'analytics.rank': 'Rank',
|
||||
'analytics.entries': 'Entries',
|
||||
'analytics.improvement': 'Improvement',
|
||||
'analytics.export_png': 'Export PNG',
|
||||
'analytics.no_export_data': 'No data to export',
|
||||
'analytics.class_dim_mastery': 'Mastery',
|
||||
'analytics.class_dim_attendance': 'Attendance',
|
||||
'analytics.class_dim_engagement': 'Engagement',
|
||||
'analytics.class_dim_progress': 'Progress',
|
||||
'analytics.class_dim_behavior': 'Behavior',
|
||||
'analytics.self_level': 'Self Level',
|
||||
'analytics.teacher_level': 'Teacher Level',
|
||||
'analytics.section_school': 'School Overview',
|
||||
'analytics.section_performance': 'Performance',
|
||||
'analytics.section_class': 'Classes',
|
||||
'analytics.section_teacher': 'Teachers',
|
||||
'analytics.section_predictive': 'Predictive',
|
||||
'analytics.section_export': 'Export',
|
||||
|
||||
// ─── Accessibility ───────────────────────────────────────────────
|
||||
'accessibility.skip_to_content': 'Skip to content',
|
||||
'accessibility.high_contrast': 'High Contrast',
|
||||
'accessibility.reduced_motion': 'Reduced Motion',
|
||||
'accessibility.keyboard_shortcuts': 'Keyboard Shortcuts',
|
||||
'accessibility.shortcut_desc': 'Keyboard shortcuts for navigation',
|
||||
|
||||
// Timetable
|
||||
'timetable.title': 'Timetable',
|
||||
'timetable.monday': 'Monday',
|
||||
'timetable.tuesday': 'Tuesday',
|
||||
'timetable.wednesday': 'Wednesday',
|
||||
'timetable.thursday': 'Thursday',
|
||||
'timetable.friday': 'Friday',
|
||||
'timetable.period': 'Period',
|
||||
'timetable.break': 'Break',
|
||||
'timetable.add_slot': 'Add Slot',
|
||||
'timetable.edit_slot': 'Edit Slot',
|
||||
'timetable.no_subject': 'No Subject',
|
||||
'timetable.print': 'Print Timetable',
|
||||
'timetable.class_view': 'Class View',
|
||||
'timetable.room': 'Room',
|
||||
'timetable.start_time': 'Start Time',
|
||||
'timetable.end_time': 'End Time',
|
||||
'timetable.subject': 'Subject',
|
||||
'timetable.teacher': 'Teacher',
|
||||
'timetable.day': 'Day',
|
||||
'timetable.period_num': 'Period {n}',
|
||||
'timetable.no_slots': 'No slots available',
|
||||
'timetable.select_class': 'Select Class',
|
||||
'timetable.batch_create': 'Create Timetable',
|
||||
'timetable.delete_slot': 'Delete Slot',
|
||||
'timetable.break_period': 'Break',
|
||||
'timetable.drag_hint': 'Drag to move',
|
||||
|
||||
// Resources
|
||||
'resources.title': 'Resources',
|
||||
'resources.library': 'Resource Library',
|
||||
'resources.upload': 'Upload',
|
||||
'resources.type': 'Type',
|
||||
'resources.document': 'Document',
|
||||
'resources.worksheet': 'Worksheet',
|
||||
'resources.presentation': 'Presentation',
|
||||
'resources.video': 'Video',
|
||||
'resources.link': 'Link',
|
||||
'resources.image': 'Image',
|
||||
'resources.audio': 'Audio',
|
||||
'resources.download': 'Download',
|
||||
'resources.downloads': 'Downloads',
|
||||
'resources.preview': 'Preview',
|
||||
'resources.favorite': 'Favorite',
|
||||
'resources.create': 'Create Resource',
|
||||
'resources.edit': 'Edit Resource',
|
||||
'resources.search': 'Search Resources',
|
||||
'resources.filter_type': 'Filter by Type',
|
||||
'resources.filter_subject': 'Filter by Subject',
|
||||
'resources.all_types': 'All Types',
|
||||
'resources.all_subjects': 'All Subjects',
|
||||
'resources.public': 'Public',
|
||||
'resources.private': 'Private',
|
||||
'resources.toggle_public': 'Public/Private',
|
||||
'resources.no_resources': 'No resources available',
|
||||
'resources.title_field': 'Title',
|
||||
'resources.description_field': 'Description',
|
||||
'resources.url_field': 'URL',
|
||||
'resources.content_field': 'Content',
|
||||
'resources.subject_field': 'Subject',
|
||||
'resources.class_field': 'Class',
|
||||
'resources.grade_field': 'Grade Level',
|
||||
'resources.tags_field': 'Tags',
|
||||
'resources.add_tag': 'Add Tag',
|
||||
'resources.delete_confirm': 'Are you sure you want to delete this resource?',
|
||||
};
|
||||
|
||||
const translations: Record<string, TranslationDict> = { de, en };
|
||||
|
||||
+3
-1
@@ -26,7 +26,9 @@ export type ViewName =
|
||||
| 'notebooks'
|
||||
| 'drawing'
|
||||
| 'homework'
|
||||
| 'portfolio';
|
||||
| 'portfolio'
|
||||
| 'timetable'
|
||||
| 'resources';
|
||||
|
||||
export interface CurrentUser {
|
||||
id: string;
|
||||
|
||||
Reference in new issue
Block a user