48 lines
1.1 KiB
HTML
48 lines
1.1 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html>
|
||
|
<head>
|
||
|
<meta charset="UTF-8">
|
||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
|
<script src="/static/htmx.min.js"></script>
|
||
|
<script src="/static/Sortable.min.js"></script>
|
||
|
<link rel="stylesheet" href="/static/style.css">
|
||
|
</head>
|
||
|
<body>
|
||
|
<table class="matrix">
|
||
|
<tr>
|
||
|
<th></th>
|
||
|
{% for c in candidates.values() %}
|
||
|
<th>
|
||
|
{{ c.display or c.time }}
|
||
|
</th>
|
||
|
{% endfor %}
|
||
|
</tr>
|
||
|
{% for v in voters.values() %}
|
||
|
<tr>
|
||
|
<th>
|
||
|
{{ v.short or v.email }}
|
||
|
</th>
|
||
|
{% for c in candidates.values() %}
|
||
|
<td>
|
||
|
{{ preference[c.id][v.email] }}
|
||
|
</td>
|
||
|
{% endfor %}
|
||
|
<td>
|
||
|
{{ voter_max[v.email] }}
|
||
|
</td>
|
||
|
</tr>
|
||
|
{% endfor %}
|
||
|
<tr>
|
||
|
<th></th>
|
||
|
{% for c in candidates.values() %}
|
||
|
<td>
|
||
|
{{ candidate_sum[c.id] }}
|
||
|
</td>
|
||
|
{% endfor %}
|
||
|
</tr>
|
||
|
|
||
|
</table>
|
||
|
</body>
|
||
|
</html>
|
||
|
|