129 lines
No EOL
4.2 KiB
HTML
129 lines
No EOL
4.2 KiB
HTML
{% extends "base.html" %}
|
|
{% load i18n risk_extras %}
|
|
{% block crumbs %}
|
|
<li><a href="{% url 'risks:index' %}">{% trans "Dashboard" %}</a></li>
|
|
{% endblock %}
|
|
{% block content %}
|
|
|
|
<!-- Hero Section -->
|
|
<section class="hero is-small has-background-prosoft">
|
|
<div class="hero-body">
|
|
<div class="container">
|
|
<h2 class="subtitle is-5 has-text-white">
|
|
{% trans "Overview of Risks, Controls and Incidents" %}
|
|
</h2>
|
|
</div>
|
|
</div>
|
|
</section><!-- Hero Section End -->
|
|
|
|
<section class="section">
|
|
<div class="container">
|
|
|
|
<!-- KPI Cards -->
|
|
<div class="columns is-multiline">
|
|
|
|
<!-- Total Risks -->
|
|
<div class="column is-one-quarter">
|
|
<div class="box has-text-centered">
|
|
<p class="heading">{% trans "Total Risks" %}</p>
|
|
<p class="title is-4">{{ risks_total }}</p>
|
|
</div>
|
|
</div><!-- Total Risks End -->
|
|
|
|
<!-- Residual Risks -->
|
|
<div class="column is-one-quarter">
|
|
<div class="box has-text-centered {% if residual_review_required > 0 %}has-background-control-high{% else %}has-background-control-low{% endif %}">
|
|
<p class="heading">{% trans "Residual Risks Needing Review" %}</p>
|
|
<p class="title is-4">{{ residual_review_required }}</p>
|
|
</div>
|
|
</div><!-- Residual Risks End -->
|
|
|
|
<!-- Unread Notifications -->
|
|
<div class="column is-one-quarter">
|
|
<div class="box has-text-centered">
|
|
<p class="heading">{% trans "Unread Notifications" %}</p>
|
|
<p class="title is-4">{{ notifications_unread }}</p>
|
|
</div>
|
|
</div><!-- Unread Notifications End -->
|
|
|
|
</div><!-- KPI Cards End -->
|
|
|
|
<!-- Risks by CIA -->
|
|
<div class="box">
|
|
<h2 class="title is-5">{% trans "Risks by CIA" %}</h2>
|
|
<div class="columns is-multiline">
|
|
<div class="column">
|
|
<div class="notification is-control-verylow has-text-centered">
|
|
<strong>{% trans "Confidentiality" %}</strong><br>
|
|
{{ risks_by_cia.1|default:0 }}
|
|
</div>
|
|
</div>
|
|
<div class="column">
|
|
<div class="notification is-control-mid has-text-centered">
|
|
<strong>{% trans "Integrity" %}</strong><br>
|
|
{{ risks_by_cia.2|default:0 }}
|
|
</div>
|
|
</div>
|
|
<div class="column">
|
|
<div class="notification is-control-high has-text-centered">
|
|
<strong>{% trans "Availability" %}</strong><br>
|
|
{{ risks_by_cia.3|default:0 }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div><!-- Risks by CIA End -->
|
|
|
|
<!-- Controls by Status -->
|
|
<div class="box">
|
|
<h2 class="title is-5">{% trans "Controls by Status" %}</h2>
|
|
<div class="table-container">
|
|
<table class="table is-fullwidth is-narrow is-hoverable">
|
|
<thead>
|
|
<tr>
|
|
<th>{% trans "Status" %}</th>
|
|
<th>{% trans "Count" %}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for row in controls_by_status %}
|
|
<tr>
|
|
<td>{{ row.status|control_status_label }}</td>
|
|
<td>{{ row.count }}</td>
|
|
</tr>
|
|
{% empty %}
|
|
<tr><td colspan="2" class="has-text-grey has-text-centered">{% trans "No data" %}</td></tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div><!-- Controls by Status End -->
|
|
|
|
<!-- Incidents by Status -->
|
|
<div class="box">
|
|
<h2 class="title is-5">{% trans "Incidents by Status" %}</h2>
|
|
<div class="table-container">
|
|
<table class="table is-fullwidth is-narrow is-hoverable">
|
|
<thead>
|
|
<tr>
|
|
<th>{% trans "Status" %}</th>
|
|
<th>{% trans "Count" %}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for row in incidents_status %}
|
|
<tr>
|
|
<td>{{ row.status|incident_status_label }}</td>
|
|
<td>{{ row.count }}</td>
|
|
</tr>
|
|
{% empty %}
|
|
<tr><td colspan="2" class="has-text-grey has-text-centered">{% trans "No data" %}</td></tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div><!-- Incidents by Status End -->
|
|
|
|
</div>
|
|
</section><!-- Dashboard Content End -->
|
|
|
|
{% endblock %} |