setup update 3

This commit is contained in:
Alejandro Vazquez
2026-03-26 20:14:35 -03:00
parent 9fb21c4a29
commit 192d1dd41c
12 changed files with 1928 additions and 595 deletions
+128 -111
View File
@@ -3,124 +3,130 @@
{% block title %}Classrooms - Edu-Space Admin{% endblock %}
{% block content %}
<div class="row mb-4">
<div class="container-fluid pt-5 mt-4">
<div class="row">
<div class="col-12">
<h1 class="h3 mb-0">
<i class="bi bi-door-open text-primary"></i> Classrooms
<small class="text-muted ms-2">Management</small>
</h1>
</div>
</div>
<!-- Search and Filter -->
<div class="card border-0 shadow-sm mb-4">
<div class="card-body">
<form method="GET" class="row g-3">
<div class="col-md-4">
<input type="text" class="form-control" name="search"
placeholder="Search classrooms..." value="{{ search }}">
</div>
<div class="col-md-3">
<select class="form-select" name="campus">
<option value="">All Campuses</option>
<option value="Main Campus" {% if campus == 'Main Campus' %}selected{% endif %}>Main Campus</option>
<option value="North Campus" {% if campus == 'North Campus' %}selected{% endif %}>North Campus</option>
<option value="Science & Technology Campus" {% if campus == 'Science & Technology Campus' %}selected{% endif %}>Science & Technology Campus</option>
<option value="Downtown Campus" {% if campus == 'Downtown Campus' %}selected{% endif %}>Downtown Campus</option>
</select>
</div>
<div class="col-md-3">
<button type="submit" class="btn btn-primary">
<i class="bi bi-search"></i> Search
</button>
<a href="{{ url_for('classrooms.list_classrooms') }}" class="btn btn-outline-secondary">
<i class="bi bi-arrow-clockwise"></i> Reset
</a>
</div>
<div class="col-md-2 text-end">
<a href="{{ url_for('classrooms.add_classroom') }}" class="btn btn-success">
<div class="d-flex justify-content-between align-items-center mb-4">
<h1 class="h3">
<i class="bi bi-door-open text-primary"></i> Classrooms
</h1>
<div>
<a href="{{ url_for('classrooms.add_classroom') }}" class="btn btn-primary">
<i class="bi bi-plus-circle"></i> Add Classroom
</a>
</div>
</form>
</div>
</div>
</div>
<!-- Filters -->
<div class="row">
<div class="col-12">
<div class="card border-0 shadow-sm">
<div class="card-body">
<form method="GET" class="row g-3">
<div class="col-md-4">
<input type="text" name="search" class="form-control"
placeholder="Search by building, room, description..."
value="{{ search }}">
</div>
<div class="col-md-3">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="active_only"
id="activeOnly" {% if active_only %}checked{% endif %}>
<label class="form-check-label" for="activeOnly">
Show active classrooms only
</label>
</div>
</div>
<div class="col-md-3">
<button type="submit" class="btn btn-outline-primary">
<i class="bi bi-search"></i> Search
</button>
<a href="{{ url_for('classrooms.list_classrooms') }}" class="btn btn-outline-secondary">
<i class="bi bi-x-circle"></i> Clear
</a>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- Classrooms Grid -->
<div class="row">
{% if classrooms and classrooms.items %}
<div class="row mt-4">
{% for classroom in classrooms.items %}
<div class="col-md-6 col-lg-4 mb-4">
<div class="col-lg-4 col-md-6 mb-4">
<div class="card border-0 shadow-sm h-100">
<div class="card-header bg-white border-0">
<div class="d-flex justify-content-between align-items-start">
<div>
<h5 class="card-title mb-1">{{ classroom.code }}</h5>
<p class="text-muted small mb-0">{{ classroom.name }}</p>
</div>
<div class="dropdown">
<button class="btn btn-sm btn-outline-secondary" data-bs-toggle="dropdown">
<i class="bi bi-three-dots-vertical"></i>
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="{{ url_for('classrooms.view_classroom', Id=classroom.id) }}">
<i class="bi bi-eye"></i> View Details
</a></li>
<li><a class="dropdown-item" href="{{ url_for('classrooms.edit_classroom', Id=classroom.id) }}">
<i class="bi bi-pencil"></i> Edit
</a></li>
<li><a class="dropdown-item text-danger" href="{{ url_for('classrooms.delete_classroom', Id=classroom.id) }}">
<i class="bi bi-trash"></i> Delete
</a></li>
</ul>
</div>
</div>
</div>
<div class="card-body">
<div class="row g-2">
<div class="d-flex justify-content-between align-items-start mb-3">
<div>
<h5 class="card-title mb-1">
{{ classroom.code }}
</h5>
<p class="text-muted small mb-2">
<i class="bi bi-geo-alt"></i> {{ classroom.get_full_location() }}
</p>
</div>
<span class="badge {% if classroom.is_active %}bg-success{% else %}bg-secondary{% endif %}">
{% if classroom.is_active %}Active{% else %}Inactive{% endif %}
</span>
</div>
<div class="row small">
<div class="col-6">
<div class="d-flex align-items-center">
<i class="bi bi-building text-primary me-2"></i>
<span class="small">{{ classroom.building }}</span>
</div>
<span class="text-muted">Capacity:</span>
<strong>{{ classroom.capacity }}</strong>
</div>
<div class="col-6">
<div class="d-flex align-items-center">
<i class="bi bi-layers text-info me-2"></i>
<span class="small">Floor {{ classroom.floor }}</span>
</div>
</div>
<div class="col-6">
<div class="d-flex align-items-center">
<i class="bi bi-people text-success me-2"></i>
<span class="small">{{ classroom.capacity }} seats</span>
</div>
</div>
<div class="col-6">
<div class="d-flex align-items-center">
<i class="bi bi-geo-alt text-warning me-2"></i>
<span class="small">{{ classroom.campus_location }}</span>
</div>
<span class="text-muted">Building:</span>
<strong>{{ classroom.building }}</strong>
</div>
</div>
{% if classroom.description %}
<div class="mt-3">
<p class="small text-muted">{{ classroom.description[:100] }}{% if classroom.description|length > 100 %}...{% endif %}</p>
</div>
<p class="card-text small text-muted mt-2">
{{ classroom.description[:100] }}{% if classroom.description|length > 100 %}...{% endif %}
</p>
{% endif %}
<div class="mt-3">
<span class="badge bg-success">
<i class="bi bi-check-circle"></i> Active
</span>
<!-- Resources indicator -->
<div class="mt-2">
<small class="text-muted">
<i class="bi bi-tools"></i>
{% if classroom.resources %}
{{ classroom.resources|length }} resources
{% else %}
No resources registered
{% endif %}
</small>
</div>
</div>
<div class="card-footer bg-white border-0">
<div class="d-grid">
<a href="{{ url_for('classrooms.view_classroom', Id=classroom.id) }}"
class="btn btn-outline-primary btn-sm">
<i class="bi bi-eye"></i> View Details
</a>
<div class="d-flex justify-content-between">
<div>
<a href="{{ url_for('classrooms.view_classroom', id=classroom.id) }}"
class="btn btn-sm btn-outline-primary">
<i class="bi bi-eye"></i> View
</a>
<a href="{{ url_for('classrooms.edit_classroom', id=classroom.id) }}"
class="btn btn-sm btn-outline-secondary">
<i class="bi bi-pencil"></i> Edit
</a>
</div>
<form method="POST" action="{{ url_for('classrooms.toggle_classroom', id=classroom.id) }}"
class="d-inline">
<button type="submit" class="btn btn-sm
{% if classroom.is_active %}btn-outline-warning{% else %}btn-outline-success{% endif %}">
{% if classroom.is_active %}
<i class="bi bi-pause-circle"></i> Deactivate
{% else %}
<i class="bi bi-play-circle"></i> Activate
{% endif %}
</button>
</form>
</div>
</div>
</div>
@@ -130,12 +136,12 @@
<!-- Pagination -->
{% if classrooms.pages > 1 %}
<nav aria-label="Classrooms pagination">
<nav aria-label="Classroom pagination">
<ul class="pagination justify-content-center">
{% if classrooms.has_prev %}
<li class="page-item">
<a class="page-link" href="{{ url_for('classrooms.list_classrooms', page=classrooms.prev_num, search=search, campus=campus) }}">
<i class="bi bi-chevron-left"></i>
<a class="page-link" href="{{ url_for('classrooms.list_classrooms', page=classrooms.prev_num, search=search, active_only=active_only) }}">
Previous
</a>
</li>
{% endif %}
@@ -144,7 +150,7 @@
{% if page_num %}
{% if page_num != classrooms.page %}
<li class="page-item">
<a class="page-link" href="{{ url_for('classrooms.list_classrooms', page=page_num, search=search, campus=campus) }}">
<a class="page-link" href="{{ url_for('classrooms.list_classrooms', page=page_num, search=search, active_only=active_only) }}">
{{ page_num }}
</a>
</li>
@@ -155,15 +161,15 @@
{% endif %}
{% else %}
<li class="page-item disabled">
<span class="page-link">...</span>
<span class="page-link">…</span>
</li>
{% endif %}
{% endfor %}
{% if classrooms.has_next %}
<li class="page-item">
<a class="page-link" href="{{ url_for('classrooms.list_classrooms', page=classrooms.next_num, search=search, campus=campus) }}">
<i class="bi bi-chevron-right"></i>
<a class="page-link" href="{{ url_for('classrooms.list_classrooms', page=classrooms.next_num, search=search, active_only=active_only) }}">
Next
</a>
</li>
{% endif %}
@@ -171,14 +177,25 @@
</nav>
{% endif %}
{% if not classrooms.items %}
<div class="text-center py-5">
<i class="bi bi-x-circle text-muted" style="font-size: 3rem;"></i>
<h4 class="text-muted mt-3">No classrooms found</h4>
<p class="text-muted">Try adjusting your search criteria or add a new classroom.</p>
<a href="{{ url_for('classrooms.add_classroom') }}" class="btn btn-primary">
<i class="bi bi-plus-circle"></i> Add First Classroom
</a>
{% else %}
<div class="row mt-4">
<div class="col-12">
<div class="text-center py-5">
<i class="bi bi-door-open text-muted" style="font-size: 4rem;"></i>
<h4 class="mt-3 text-muted">No classrooms found</h4>
<p class="text-muted">
{% if search %}
No classrooms match your search criteria.
{% else %}
No classrooms have been registered yet.
{% endif %}
</p>
<a href="{{ url_for('classrooms.add_classroom') }}" class="btn btn-primary">
<i class="bi bi-plus-circle"></i> Add First Classroom
</a>
</div>
</div>
</div>
{% endif %}
</div>
{% endblock %}