{% extends "base.html" %} {% block title %}Class Timetable{% endblock %} {% block page_title %}Class Timetable{% endblock %} {% set active = "timetable" %} {% block topbar_actions %} {% if selected_class %} Export PDF {% endif %} {% endblock %} {% block content %}
{% for cls in classes %} {{ cls.grade }}-{{ cls.section }} {% endfor %}
{% if not cfg %}
📅

No Timetable Configuration

Complete school setup first, then click "Generate Timetable".

Go to Setup
{% elif not classes %}
🏫

No Classes Added

Add classes before generating a timetable.

Add Classes
{% elif not grid %}

Timetable Not Generated

Set up your requirements and click Generate Timetable.

{% else %} {% if clashes %}
⚠ {{ clashes|length }} clash(es) detected. Click a highlighted cell to fix it.
{% endif %}
{% for p in periods %} {% if p in break_periods %} {% else %} {% endif %} {% endfor %} {% for day in days %} {% for p in periods %} {% set cell = grid.get((day, p), {}) %} {% if cell.get('is_break') %} {% else %} {% set is_clash = (day, p, cell.get('teacher_id')) in clash_slots and cell.get('teacher_id') %} {% endif %} {% endfor %} {% endfor %}
DayBreakP{{ p }}
{{ day }} {% if cell.get('subject_id') %}
{{ cell.get('subj_name', '') }}
{{ cell.get('teacher_name', '') }}
{% if cell.get('subject_type') in ['lab', 'PT'] %}
{{ cell.subject_type }}
{% endif %}
{% elif cell.get('is_free') or not cell %}
Free
{% endif %}
{% endif %} {% endblock %} {% block extra_js %} {% endblock %}