|
|
<!DOCTYPE html> |
|
|
<html lang="vi"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>{% block title %}Student Feedback Analysis{% endblock %}</title> |
|
|
|
|
|
|
|
|
<link rel="icon" type="image/svg+xml" |
|
|
href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -16 544 544' fill='%236B7280'%3E%3Cpath d='M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6 .14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z'/%3E%3C/svg%3E"> |
|
|
|
|
|
<link rel="alternate icon" |
|
|
href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -16 544 544' fill='%236B7280'%3E%3Cpath d='M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6 .14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z'/%3E%3C/svg%3E"> |
|
|
|
|
|
|
|
|
|
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"> |
|
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet"> |
|
|
<link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet"> |
|
|
|
|
|
{% block extra_head %}{% endblock %} |
|
|
</head> |
|
|
<body> |
|
|
<div class="container-fluid{% block container_class %}{% endblock %}"> |
|
|
|
|
|
{% block header %} |
|
|
<header> |
|
|
<div class="d-flex justify-content-between align-items-center"> |
|
|
<h1 class="display-4 fw-bold text-primary mb-0"> |
|
|
<i class="fas fa-graduation-cap me-1" style="margin-left: 10px !important;"></i> |
|
|
{% block page_title %}Student Feedback Analysis{% endblock %} |
|
|
</h1> |
|
|
<div class="d-flex align-items-center justify-content-end" style="margin-right: 20px; gap: 16px;"> |
|
|
{% if current_user.is_authenticated %} |
|
|
<span class="text-white fw-semibold d-flex align-items-center"> |
|
|
<i class="fas fa-user me-2"></i> |
|
|
{{ current_user.username }} |
|
|
</span> |
|
|
|
|
|
{% block navigation_buttons %} |
|
|
{% if current_user.is_admin %} |
|
|
<a href="{{ url_for('view_database') }}" class="btn-glass"> |
|
|
<i class="fas fa-database"></i> |
|
|
<span>Database</span> |
|
|
</a> |
|
|
{% else %} |
|
|
<a href="{{ url_for('my_statistics') }}" class="btn-glass"> |
|
|
<i class="fas fa-chart-bar"></i> |
|
|
<span>Thống kê của tôi</span> |
|
|
</a> |
|
|
{% endif %} |
|
|
<a href="{{ url_for('home') }}" class="btn-glass"> |
|
|
<i class="fas fa-chart-line"></i> |
|
|
<span>Trang Phân Tích</span> |
|
|
</a> |
|
|
<a href="{{ url_for('logout') }}" class="btn-glass"> |
|
|
<i class="fas fa-sign-out-alt"></i> |
|
|
<span>Đăng xuất</span> |
|
|
</a> |
|
|
{% endblock %} |
|
|
{% endif %} |
|
|
</div> |
|
|
</div> |
|
|
</header> |
|
|
{% endblock %} |
|
|
|
|
|
|
|
|
{% block flash_messages %} |
|
|
{% with messages = get_flashed_messages(with_categories=true) %} |
|
|
{% if messages %} |
|
|
<div class="row justify-content-center mb-2"> |
|
|
<div class="col-lg-8 col-md-10"> |
|
|
{% for category, message in messages %} |
|
|
<div class="alert alert-{{ 'danger' if category == 'error' else category }} alert-dismissible fade show" role="alert"> |
|
|
<div class="alert-content"> |
|
|
<i class="fas fa-{{ 'exclamation-triangle' if category == 'error' else 'info-circle' if category == 'info' else 'check-circle' if category == 'success' else 'exclamation-triangle' }}"></i> |
|
|
{{ message }} |
|
|
</div> |
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert"></button> |
|
|
</div> |
|
|
{% endfor %} |
|
|
</div> |
|
|
</div> |
|
|
{% endif %} |
|
|
{% endwith %} |
|
|
{% endblock %} |
|
|
|
|
|
|
|
|
{% block content %}{% endblock %} |
|
|
|
|
|
|
|
|
{% block footer %} |
|
|
<footer class="text-center py-4 mt-5"> |
|
|
<p class="text-muted mb-0"> |
|
|
<i class="fas fa-robot me-2"></i> |
|
|
Powered by Tư _ Đức _ Nghĩa _ Hà |
|
|
</p> |
|
|
</footer> |
|
|
{% endblock %} |
|
|
</div> |
|
|
|
|
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script> |
|
|
{% block extra_scripts %}{% endblock %} |
|
|
|
|
|
|
|
|
<script> |
|
|
document.addEventListener('DOMContentLoaded', function() { |
|
|
const alerts = document.querySelectorAll('.alert'); |
|
|
alerts.forEach(function(alert) { |
|
|
setTimeout(function() { |
|
|
alert.classList.add('fade-out'); |
|
|
setTimeout(function() { |
|
|
alert.remove(); |
|
|
}, 500); |
|
|
}, 2000); |
|
|
}); |
|
|
}); |
|
|
</script> |
|
|
</body> |
|
|
</html> |
|
|
|