File size: 2,698 Bytes
e9ee222
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
{% extends "base.html" %} {% block content %}
<div class="container py-4">
  <h1 class="h2 mb-4">Admin Dashboard</h1>

  <!-- Stat Cards Row -->
  <div class="row">
    <div class="col-xl-4 col-md-6 mb-4">
      <div class="card stat-card border-left-primary">
        <div class="card-body">
          <div>
            <div class="text-xs text-primary text-uppercase">
              Total Registered Users
            </div>
            <div class="h5 mb-0">{{ user_count }}</div>
          </div>
          <div class="card-icon"><i class="fas fa-users"></i></div>
        </div>
      </div>
    </div>
    <div class="col-xl-4 col-md-6 mb-4">
      <div class="card stat-card border-left-success">
        <div class="card-body">
          <div>
            <div class="text-xs text-success text-uppercase">
              Total Tests Submitted
            </div>
            <div class="h5 mb-0">{{ report_count }}</div>
          </div>
          <div class="card-icon"><i class="fas fa-clipboard-list"></i></div>
        </div>
      </div>
    </div>
  </div>

  <!-- Chart Row -->
  <div class="row">
    <div class="col-lg-8">
      <div class="card shadow-sm chart-card mb-4">
        <div class="card-header py-3">
          <h6 class="m-0 fw-bold text-primary">Test Results Breakdown</h6>
        </div>
        <div class="card-body">
          {% if chart_data %}
          <div class="chart-pie pt-4"><canvas id="myPieChart"></canvas></div>
          <div class="mt-4 text-center small">
            {% for label in chart_labels %}
            <span class="me-3">
              <i class="fas fa-circle color-{{ loop.index }}"></i> {{ label }}
            </span>
            {% endfor %}
          </div>
          {% else %}
          <p class="text-center text-muted p-5">
            No test data available to generate a chart.
          </p>
          {% endif %}
        </div>
      </div>
    </div>
  </div>

  <a
    href="{{ url_for('main.admin_users') }}"
    class="btn btn-info"
    >Manage Users</a
  >
</div>
{% endblock %} {% block scripts %} {# Only include scripts if there is data to
draw #} {% if chart_data %}
<!-- 1. Load the Chart.js library FIRST -->
<script src="https://cdn.jsdelivr.net/npm/chart.js@3.9.1/dist/chart.min.js"></script>

<!-- 2. Create global JS variables with our data from Python. This avoids parsing errors. -->
<script>
  var chartLabels = {{ chart_labels|tojson|safe }};
  var chartData = {{ chart_data|tojson|safe }};
</script>

<!-- 3. Load OUR script LAST, with 'defer' to ensure it runs after the page is ready -->
<script
  src="{{ url_for('static', filename='js/admin-charts.js') }}"
  defer
></script>
{% endif %} {% endblock %}