mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-08 19:26:48 +00:00
An accessibility scan with every modal opened found 49 fields without a name: the labels of the instance create forms (custom, template and each flavor's modal), the interface, network, secret and storage pool modals did not point at their fields. Each label now has a for= and its field an id, prefixed per form (and per flavor), so a click on the label focuses the field too. The "Advanced" collapse buttons and the memory and processing bars are named. The VCPU config select had id="vcpu_mode" in each of these forms, nine times on the create page; the unique-ID test did not see it as the test driver reports no CPU modes. The id goes (nothing used it), and the test now renders that branch.
66 lines
4.1 KiB
HTML
66 lines
4.1 KiB
HTML
{% load i18n %}
|
|
{% load bootstrap_icons %}
|
|
<a href="#AddInstance" type="button" class="btn btn-success btn-header float-end" title="{% trans "New Instance" %}" data-bs-toggle="modal">
|
|
<span aria-hidden="true">{% bs_icon 'plus-circle-fill'%} </span>
|
|
</a>
|
|
|
|
<!-- Modal pool -->
|
|
<div class="modal fade" id="AddInstance" tabindex="-1" role="dialog" aria-labelledby="AddInstanceModal" aria-hidden="true">
|
|
<div class="modal-dialog modal-dialog-scrollable modal-lg">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title">{% trans "Choose a compute for new instance" %}</h5>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<form method="post" aria-label="Select compute for instance create form">{% csrf_token %}
|
|
<div class="row">
|
|
<table class="table">
|
|
<thead>
|
|
<tr style="cursor:default;pointer-events:none">
|
|
<th>{% trans "Name" %}</th>
|
|
<th>{% trans "VCPU" %}
|
|
<th>{% trans "CPU Usage" %}</th>
|
|
<th>{% trans "Memory" %}</th>
|
|
<th>{% trans "Mem Usage" %}</th>
|
|
<th>{% trans "Action" %}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for compute in computes %}
|
|
{% if compute.status is True %}
|
|
<tr style="text-decoration: none">
|
|
<td>{{ compute.name }}</td>
|
|
<td>{{ compute.cpu_count }}</td>
|
|
<td class="cpu-usage" data-url="{% url 'compute_graph' compute.id %}">
|
|
<div class="progress">
|
|
<div class="progress-bar bg-primary" role="progressbar" aria-label="{% trans "Mem Usage" %}" style="width: 0%"
|
|
aria-valuemin="0" aria-valuemax="100" aria-label="{% trans "CPU Usage" %}">
|
|
</div>
|
|
</div>
|
|
<small class="cpu-usage-value"></small>
|
|
</td>
|
|
<td>{{ compute.ram_size|filesizeformat }}</td>
|
|
<td>
|
|
<div class="progress">
|
|
<div class="progress-bar bg-primary" role="progressbar" aria-label="{% trans "Mem Usage" %}" style="width: {{ compute.ram_usage }}%"
|
|
aria-valuenow="{{ compute.ram_usage }}" aria-valuemin="0" aria-valuemax="100">{{ compute.ram_usage }}%
|
|
</div>
|
|
</div>
|
|
</td>
|
|
<td class="col-1">
|
|
<button class="btn btn-success btn-sm" type="button" onclick="goto_compute('{{ compute.id }}');">
|
|
{% trans "Choose" %}
|
|
</button>
|
|
</td>
|
|
</tr>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div> <!-- /.modal-content -->
|
|
</div> <!-- /.modal-dialog -->
|
|
</div> <!-- /.modal -->
|