more beautiful

This commit is contained in:
Flatlogic Bot 2025-12-06 21:17:41 +00:00
parent 8253af4f12
commit 56e210d2e4
2 changed files with 46 additions and 22 deletions

View File

@ -14,23 +14,29 @@ function get_timeslots($pdo) {
return $pdo->query("SELECT * FROM timeslots ORDER BY start_time")->fetchAll(PDO::FETCH_ASSOC); return $pdo->query("SELECT * FROM timeslots ORDER BY start_time")->fetchAll(PDO::FETCH_ASSOC);
} }
function get_teacher_schedule($pdo, $teacher_id, $school_id) { function get_teacher_schedule($pdo, $teacher_id) {
$stmt = $pdo->prepare(" $sql = "
SELECT SELECT
s.id, s.id,
s.day_of_week, s.day_of_week,
s.timeslot_id, s.timeslot_id,
s.lesson_display_name, s.lesson_display_name,
c.name as class_name, c.name as class_name,
s.is_double, sub.name as subject_name, -- The specific subject for the teacher
s.is_elective, s.is_double,
s.is_horizontal_elective s.is_elective
FROM schedules s FROM schedules s
JOIN classes c ON s.class_id = c.id JOIN schedule_teachers st ON s.id = st.schedule_id
JOIN schedule_teachers st ON s.id = st.schedule_id LEFT JOIN classes c ON s.class_id = c.id
WHERE st.teacher_id = :teacher_id AND c.school_id = :school_id -- Find the specific subject this teacher teaches to this class from workloads
"); LEFT JOIN workloads w ON st.teacher_id = w.teacher_id AND s.class_id = w.class_id
$stmt->execute([':teacher_id' => $teacher_id, ':school_id' => $school_id]); LEFT JOIN subjects sub ON w.subject_id = sub.id
WHERE st.teacher_id = :teacher_id
ORDER BY s.day_of_week, s.timeslot_id
";
$stmt = $pdo->prepare($sql);
$stmt->execute([':teacher_id' => $teacher_id]);
return $stmt->fetchAll(PDO::FETCH_ASSOC); return $stmt->fetchAll(PDO::FETCH_ASSOC);
} }
@ -72,7 +78,7 @@ if ($selected_teacher_id) {
break; break;
} }
} }
$teacher_schedule_raw = get_teacher_schedule($pdoconn, $selected_teacher_id, $school_id); $teacher_schedule_raw = get_teacher_schedule($pdoconn, $selected_teacher_id);
// Gemini: Log the data for debugging // Gemini: Log the data for debugging
error_log("--- Teacher Timetable Debug ---"); error_log("--- Teacher Timetable Debug ---");
@ -254,8 +260,13 @@ error_log("Final teacher_timetable_by_period structure: " . print_r($teacher_tim
$lessons_to_display = is_array($lesson) && !isset($lesson['id']) ? $lesson : [$lesson]; $lessons_to_display = is_array($lesson) && !isset($lesson['id']) ? $lesson : [$lesson];
foreach ($lessons_to_display as $single_lesson) { foreach ($lessons_to_display as $single_lesson) {
if ($single_lesson) { // Check not null if ($single_lesson) { // Check not null
$display_name = $single_lesson['lesson_display_name'];
// For electives, the teacher should see their specific subject.
if (!empty($single_lesson['is_elective']) && !empty($single_lesson['subject_name'])) {
$display_name = $single_lesson['subject_name'];
}
echo '<div class="lesson p-1 mb-1">'; echo '<div class="lesson p-1 mb-1">';
echo '<strong>' . htmlspecialchars($single_lesson['lesson_display_name']) . '</strong><br>'; echo '<strong>' . htmlspecialchars($display_name) . '</strong><br>';
echo '<small>' . htmlspecialchars($single_lesson['class_name']) . '</small>'; echo '<small>' . htmlspecialchars($single_lesson['class_name']) . '</small>';
echo '</div>'; echo '</div>';
} }

View File

@ -173,7 +173,7 @@ function generate_timetable($data, $days_of_week) {
'subject_name' => $comp_lesson['subject_name'], 'subject_name' => $comp_lesson['subject_name'],
'teacher_name' => $comp_lesson['teacher_name'], 'teacher_name' => $comp_lesson['teacher_name'],
'subject_id' => $comp_lesson['subject_id'], 'subject_id' => $comp_lesson['subject_id'],
'teacher_ids' => [$teacher_id], // Specific teacher for this part 'teacher_ids' => $lesson['teacher_ids'], // All teachers in the elective group
'is_double' => $lesson['is_double'], 'is_double' => $lesson['is_double'],
'is_elective' => true, 'is_elective' => true,
'group_name' => $lesson['display_name'] 'group_name' => $lesson['display_name']
@ -642,8 +642,21 @@ $class_timetables = get_timetable_from_db($pdoconn, $classes, $timeslots, $days_
if (!empty($lesson['is_double'])) $css_class .= ' is-double'; if (!empty($lesson['is_double'])) $css_class .= ' is-double';
?> ?>
<div class="<?php echo $css_class; ?>" data-lesson-id="<?php echo $lesson['id'] ?? ''; ?>"> <div class="<?php echo $css_class; ?>" data-lesson-id="<?php echo $lesson['id'] ?? ''; ?>">
<strong><?php echo htmlspecialchars($lesson['subject_name']); ?></strong><br> <?php
<small><?php echo htmlspecialchars($lesson['teacher_name']); ?></small> $display_subject = $lesson['subject_name'];
$display_teacher = $lesson['teacher_name'];
if (!empty($lesson['is_elective'])) {
// For electives, subject_name can be "Group / Subject". We want to show only the group name.
$parts = explode(' / ', $lesson['subject_name'], 2);
$display_subject = $parts[0]; // The group name
$display_teacher = ''; // Don't show any specific teacher in the class view
}
?>
<strong><?php echo htmlspecialchars($display_subject); ?></strong><br>
<?php if (!empty($display_teacher)) : ?>
<small><?php echo htmlspecialchars($display_teacher); ?></small>
<?php endif; ?>
</div> </div>
<?php endif; ?> <?php endif; ?>
</td> </td>