brass/web/templates/index.html
2025-05-11 22:31:27 +02:00

261 lines
9.1 KiB
HTML

{% extends "nav.html" %}
{% block content %}
<div hx-indicator="#progress">
<section class="section">
<div class="container">
<div class="level">
<div class="level-left">
<a hx-boost="true" class="button is-link level-item"
href="/?date={{ date.pred() }}{{ selected_area|show_area_query(false) }}">
<svg class="icon">
<use href="/static/feather-sprite.svg#arrow-left" />
</svg>
</a>
</div>
<div class="control level-item is-flex-grow-0">
<input class="input" type="date" name="date" value="{{ date }}" hx-target="closest body"
hx-get="/{{ selected_area|show_area_query(true) }}" hx-push-url="true">
{% if user.role == Role::Admin %}
<div class="select ml-2">
<select hx-get="/?date={{ date }}" hx-target="closest body" hx-push-url="true" name="area">
{% for area in areas %}
{% if (user.area_id == area.id && selected_area.is_none()) || selected_area.is_some() &&
selected_area.unwrap() == area.id %}
<option selected value="{{ area.id }}">{{ area.name }}</option>
{% else %}
<option value="{{ area.id }}">{{ area.name }}</option>
{% endif %}
{% endfor %}
</select>
</div>
{% endif %}
</div>
<div class="level-right">
<a hx-boost="true" class="button is-link level-item"
href="/?date={{ date.succ() }}{{ selected_area|show_area_query(false) }}">
<svg class="icon">
<use href="/static/feather-sprite.svg#arrow-right" />
</svg>
</a>
</div>
</div>
<progress id="progress" class="progress is-small is-link is-light htmx-indicator" max="100" />
</div>
</section>
<section id="progress" class="section">
<div class="container">
<div class="level">
<div class="level-left">
<h3 class="title is-3">
Events am {{ date|date_d }}
</h3>
</div>
{% if user.role == Role::Admin || user.role == Role::AreaManager && (selected_area.is_none() ||
selected_area.unwrap() == user.area_id) %}
<div class="level-right">
<a class="button is-link is-light" hx-boost="true" href="/events/new?date={{ date }}">
<svg class="icon">
<use href="/static/feather-sprite.svg#plus-circle" />
</svg>
<span>Neues Event für diesen Tag</span>
</a>
</div>
{% endif %}
</div>
{% if events_and_assignments.len() == 0 %}
<div class="box">
<h5 class="subtitle is-5">keine Events geplant</h5>
</div>
{% else %}
{% for (event, posten, fuehrungsassistent, wachhabender, vehicle) in events_and_assignments %}
<div class="box">
<div class="fixed-grid has-1-cols-mobile">
<div class="grid content">
<div class="cell">
<h5 class="title is-5">{{ event.name }}</h5>
</div>
{% if user.role == Role::AreaManager || user.role == Role::Admin %}
<div class="cell is-narrow buttons is-justify-content-end mb-0">
<a href="/events/{{ event.id }}/plan" hx-boost="true" class="button is-link is-light">
<svg class="icon">
<use href="/static/feather-sprite.svg#book-open" />
</svg>
<span>Planen</span>
</a>
<a href="/events/{{ event.id }}/edit" hx-boost="true" class="button is-primary is-light">
<svg class="icon">
<use href="/static/feather-sprite.svg#edit" />
</svg>
<span>Bearbeiten</span>
</a>
</div>
{% endif %}
{% if event.canceled %}
<div class="cell is-col-span-2 notification is-warning is-light">
<b>Veranstaltung abgesagt!</b>
</div>
{% endif %}
<div class="cell">
<p><b>Uhrzeit:</b> {{ event.start|dt_t }} Uhr - {{ event.end|dt_ff }} Uhr</p>
</div>
<div class="cell">
<p><b>Veranstaltungsort:</b> {{ event.location.as_ref().unwrap().name }}</p>
</div>
<div class="cell">
<p><b>Wachhabender:</b> {% if event.voluntary_wachhabender %}FF{% else %}BF{% endif %}</p>
</div>
<div class="cell">
<p><b>Führungsassistent:</b> {% if event.voluntary_fuehrungsassistent %}FF{% else %}keiner{% endif %}</p>
</div>
<div class="cell is-col-span-2">
<p><b>Anzahl der Posten:</b> {{ event.amount_of_posten }}</p>
</div>
<div class="cell is-col-span-2">
<p><b>Anzugsordnung:</b> {{ event.clothing }}</p>
</div>
{% if let Some(note) = event.note %}
<div class="cell is-col-span-2">
<p><b>Anmerkungen:</b> {{ note }}</p>
</div>
{% endif %}
{% if wachhabender.is_some() || fuehrungsassistent.is_some() || posten.len() > 0 || vehicle.len() > 0 %}
<div class="cell is-col-span-2">
<hr class="my-1">
</div>
{% endif %}
{% if let Some(wh) = wachhabender %}
<div class="cell">
<p><b>Wachhabender geplant:</b> {{ wh }}</p>
</div>
{% endif %}
{% if let Some(fa) = fuehrungsassistent %}
<div class="cell">
<p><b>Führungsassistent geplant:</b> {{ fa }}</p>
</div>
{% endif %}
{% if posten.len() > 0 %}
<div class="cell is-col-span-2">
<p><b>Posten:</b> {{ posten.join(", ")}}</p>
</div>
{% endif %}
{% if vehicle.len() > 0 %}
<div class="cell is-col-span-2">
<b>Fahrzeuge:</b>
{% for v in vehicle %}
<span class="tag is-link"> {{ v.radio_call_name }} - {{ v.station }}</span>
{% endfor %}
</div>
{% endif %}
</div>
</div>
</div>
{% endfor %}
{% endif %}
</div>
</section>
<section id="progress" class="section">
<div class="container">
<div class="level">
<div class="level-left">
<h3 class="title is-3">
Verfügbarkeiten am {{ date|date_d }}
</h3>
</div>
{% if selected_area.is_none() || selected_area.unwrap() == user.area_id %}
<div class="level-right">
{% let btn_disabled = !user_can_create_availabillity %}
<button class="button is-link is-light" hx-get="/availabillity/new?date={{ date }}" {{
btn_disabled|cond_show("disabled") }} hx-target="closest body">
<svg class="icon">
<use href="/static/feather-sprite.svg#plus-circle" />
</svg>
<span>Neue Verfügbarkeit für diesen Tag</span>
</button>
</div>
{% endif %}
</div>
{% if availabillities.len() == 0 %}
<div class="box">
<h5 class="subtitle is-5">keine Verfügbarkeiten eingetragen</h5>
</div>
{% else %}
<div class="box">
<table class="table is-fullwidth">
<thead>
<tr>
<th>Name</th>
<th>Funktion</th>
<th>Zeitraum</th>
<th>Kommentar</th>
<th></th>
</tr>
</thead>
<tbody>
{% for availabillity in availabillities %}
{% let u = availabillity.user.as_ref().unwrap() %}
<tr>
<td>{{ u.name }}</td>
<td>
{{ u.function|show_tree|safe }}
</td>
<td>
{{ availabillity.start|dt_t }} Uhr bis {{ availabillity.end|dt_ff }} Uhr
</td>
<td>
{{ availabillity.comment.as_deref().unwrap_or("") }}
</td>
<td>
{% if availabillity.user_id == user.id %}
<div class="buttons is-right">
<a class="button is-primary is-light" hx-boost="true"
href="/availabillity/edit/{{ availabillity.id }}">
<svg class="icon">
<use href="/static/feather-sprite.svg#edit" />
</svg>
<span>Bearbeiten</span>
</a>
<button class="button is-danger is-light" hx-delete="/availabillity/delete/{{ availabillity.id }}"
hx-target="closest tr" hx-swap="delete" hx-trigger="confirmed">
<svg class="icon">
<use href="/static/feather-sprite.svg#x-circle" />
</svg>
<span>Löschen</span>
</button>
</div>
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endif %}
</div>
</section>
</div>
{% endblock %}