feat: stages module, mobility frontend, theme toggle, employeeOnly access control
- Add stages module with full CRUD API and admin overview island - Add mobility overview island (Liste, Kanban, Detail CRUD views) - Add contract PDF upload/download endpoints for mobilites - Add light/dark theme toggle in header - Add employeeOnly flag to hide entire modules from students (admin, students, stages) - Add read-only GET endpoints for modules/ues/ue-modules in notes module - Add [slug].tsx catch-all routes for direct URL navigation - Replace old mobility table with mobilites + stages schema (migration 0004) - Allow students to create mobilites and upload contracts - Redirect authenticated users from / to /apps catalog
This commit is contained in:
@@ -9,7 +9,9 @@ for (const file of ["FISE-INFO-2025.xlsx", "FISA-INFO-2025.xlsx"]) {
|
||||
for (const sheetName of wb.SheetNames) {
|
||||
console.log(`\n--- Sheet: ${sheetName} ---`);
|
||||
const sheet = wb.Sheets[sheetName];
|
||||
const rows = XLSX.utils.sheet_to_json<(string | number | null)[]>(sheet, { header: 1 });
|
||||
const rows = XLSX.utils.sheet_to_json<(string | number | null)[]>(sheet, {
|
||||
header: 1,
|
||||
});
|
||||
// Print first 5 cols of each row, mark rows that look like year/semester headers
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
const row = rows[i];
|
||||
@@ -17,7 +19,9 @@ for (const file of ["FISE-INFO-2025.xlsx", "FISA-INFO-2025.xlsx"]) {
|
||||
const col0 = row[0] != null ? String(row[0]).trim() : "";
|
||||
// Show rows that are structural (year, semester, UE headers)
|
||||
if (col0 || (row[1] != null && String(row[1]).trim())) {
|
||||
const preview = row.slice(0, 6).map(c => c != null ? String(c).substring(0, 25) : "").join(" | ");
|
||||
const preview = row.slice(0, 6).map((c) =>
|
||||
c != null ? String(c).substring(0, 25) : ""
|
||||
).join(" | ");
|
||||
console.log(` [${i}] ${preview}`);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user