{% import "includes/macros" as macros %} {% extends "base" %} {% block content %} <div class="max-w-screen-xl w-full grid sm:grid-cols-2 lg:grid-cols-3 gap-4"> {% if flash %} {{ macros::alert(message=flash.1, type=flash.0, class="sm:col-span-2 lg:col-span-3") }} {% endif %} <h1 class="h1 sm:col-span-2 lg:col-span-3">Ausfahrten</h1> {% if loggedin_user.is_cox %} <div class="sm:col-span-2 lg:col-span-3 grid md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 gap-3"> <button type="button" title="Toggle View" class="group btn btn-primary" id="filterdays-js" aria-pressed="false"> {% include "includes/funnel-icon" %} Tage mit Ausfahrten </button> <button type="button" title="Toggle View" class="group btn btn-primary" id="filtertrips-js" aria-pressed="false"> {% include "includes/funnel-icon" %} Steuerleute gesucht </button> <button type="button" title="Toggle View" class="group btn btn-primary" id="filtermonth-js" aria-pressed="false" data-month="{{ now() | date(format='%m') }}"> {% include "includes/funnel-icon" %} Aktuellen Monat anzeigen </button> </div> {% endif %} {% for day in days %} {% set amount_trips = day.planned_events | length + day.trips | length %} <div class="bg-white p-3 rounded-md flex justify-between flex-col shadow" style="min-height: 10rem;" data-trips="{{ amount_trips }}" data-month="{{ day.day| date(format='%m') }}"> <div> <h2 class="font-bold uppercase tracking-wide text-center text-primary-950 text-lg">{{ day.day| date(format="%d.%m.%Y") }} <small class="inline-block ml-1 text-xs text-gray-400">{{ day.day | date(format="%A", locale="de_AT") }}</small> </h2> {# --- START Events --- #} {% if day.planned_events | length > 0 %} <div class="grid grid-cols-1 gap-3 divide-y mb-3"> {% for planned_event in day.planned_events %} <div class="pt-2" data-coxneeded="{{ planned_event.cox_needed }}"> <div class="flex justify-between items-center"> <div> <strong class="text-primary-900">{{ planned_event.planned_starting_time }} Uhr</strong> <small class="text-gray-600">({{ planned_event.name }})</small><br /> <a href="#" data-sidebar="true" data-trigger="sidebar" data-header="<strong>{{ planned_event.planned_starting_time }} Uhr</strong> ({{ planned_event.name }}){% if planned_event.notes %}<small class='block'>{{ planned_event.notes }}</small>{% endif %}" data-body="#event{{ planned_event.trip_details_id }}" class="inline-block link-primary mr-3"> Details </a> </div> <div class="text-right grid gap-2"> {# --- START Row Buttons --- #} {% set_global cur_user_participates = false %} {% for rower in planned_event.rower%} {% if rower.name == loggedin_user.name %} {% set_global cur_user_participates = true %} {% endif %} {% endfor %} {% if cur_user_participates %} <a href="/remove/{{ planned_event.trip_details_id }}" class="btn btn-attention btn-fw">Abmelden</a> {% endif %} {% if planned_event.max_people > planned_event.rower | length %} {% if cur_user_participates == false %} <a href="/join/{{ planned_event.trip_details_id }}" class="btn btn-primary btn-fw">Mitrudern</a> {% endif %} {% endif %} {# --- END Row Buttons --- #} {# --- START Cox Buttons --- #} {% if loggedin_user.is_cox %} {% set_global cur_user_participates = false %} {% for cox in planned_event.cox %} {% if cox.name == loggedin_user.name %} {% set_global cur_user_participates = true %} {% endif %} {% endfor %} {% if cur_user_participates %} <a href="/cox/remove/{{ planned_event.id }}" class="block btn btn-attention btn-fw"> {% include "includes/cox-icon" %} Abmelden </a> {% else %} <a href="/cox/join/{{ planned_event.id }}" class="block btn btn-dark btn-fw"> {% include "includes/cox-icon" %} Steuern </a> {% endif %} {% endif %} {# --- END Cox Buttons --- #} </div> </div> {# --- START Sidebar Content --- #} <div class="hidden"> <div id="event{{ planned_event.trip_details_id }}"> {# --- START List Coxes --- #} {% if planned_event.planned_amount_cox > 0 %} {% set amount_cur_cox = planned_event.cox | length %} {{ macros::box(participants=planned_event.cox, empty_seats=planned_event.planned_amount_cox - amount_cur_cox, header='Steuerleute werden benötigt', text='Keine Steuerleute angemeldet') }} {% endif %} {# --- END List Coxes --- #} {# --- START List Rowers --- #} {% if planned_event.max_people > 0 %} {% set amount_cur_rower = planned_event.rower | length %} {{ macros::box(participants=planned_event.rower, empty_seats=planned_event.max_people - amount_cur_rower, bg='primary-100', color='black') }} {% endif %} {# --- END List Rowers --- #} {% if planned_event.allow_guests %} <div class="text-primary-900 bg-primary-50 text-center p-1 mb-4">Gäste sind erlaubt</div> {% endif %} {# --- START Delete Btn --- #} {% if loggedin_user.is_admin %} <div class="text-right"> <a href="/admin/planned-event/{{ planned_event.id }}/delete" class="inline-block btn btn-alert"> {% include "includes/delete-icon" %} Termin löschen </a> </div> {% endif %} {# --- END Delete Btn --- #} </div> </div> {# --- END Sidebar Content --- #} </div> {% endfor %} </div> {% endif %} {# --- END Events --- #} {# --- START Trips --- #} {% if day.trips | length > 0 %} <div class="grid grid-cols-1 gap-3 divide-y mb-3"> {% for trip in day.trips %} <div class="pt-2" data-coxneeded="false"> <div class="flex justify-between items-center"> <div> <strong class="text-primary-900">{{ trip.planned_starting_time }} Uhr</strong> <small class="text-gray-600">({{ trip.cox_name }})</small><br /> <a href="#" data-sidebar="true" data-trigger="sidebar" data-header="<strong>{{ trip.planned_starting_time }} Uhr</strong> ({{ trip.cox_name }}){% if trip.notes %}<small class='block'>{{ trip.notes }}</small>{% endif %}" data-body="#trip{{ trip.trip_details_id }}" class="inline-block link-primary mr-3"> Details </a> </div> <div> {% set_global cur_user_participates = false %} {% for rower in trip.rower %} {% if rower.name == loggedin_user.name %} {% set_global cur_user_participates = true %} {% endif %} {% endfor %} {% if cur_user_participates %} <a href="/remove/{{ trip.trip_details_id }}" class="btn btn-attention btn-fw">Abmelden</a> {% endif %} {% if trip.max_people > trip.rower | length and trip.cox_id != loggedin_user.id and cur_user_participates == false%} <a href="/join/{{ trip.trip_details_id }}" class="btn btn-primary btn-fw">Mitrudern</a> {% endif %} </div> </div> </div> {# --- START Sidebar Content --- #} <div class="hidden"> <div id="trip{{ trip.trip_details_id }}"> {% if trip.max_people > 0 %} {% set amount_cur_rower = trip.rower | length %} {{ macros::box(participants=trip.rower, empty_seats=trip.max_people - amount_cur_rower, bg='primary-100', color='black') }} {# --- START Edit Form --- #} {% if trip.cox_id == loggedin_user.id %} <div class="bg-gray-100 p-3 mt-4 rounded-md"> <h3 class="text-primary-950 font-bold uppercase tracking-wide mb-2">Ausfahrt bearbeiten</h3> <form action="/cox/trip/{{ trip.id }}" method="post" class="grid gap-3"> {{ macros::input(label='Anzahl Ruderer', name='max_people', type='number', required=true, value=trip.max_people) }} {{ macros::input(label='Anmerkungen', name='notes', type='input', required=true, value=trip.notes) }} <input value="Bearbeiten" class="btn btn-primary" type="submit" /> </form> </div> {% if trip.rower | length == 0 %} <div class="text-right mt-6"> <a href="/cox/remove/trip/{{ trip.id }}" class="inline-block btn btn-alert"> {% include "includes/delete-icon" %} Termin löschen </a> </div> {% endif %} {% endif %} {# --- END Edit Form --- #} {% endif %} </div> </div> {# --- END Sidebar Content --- #} {% endfor %} </div> {% endif %} {# --- END Trips --- #} </div> {# --- START Add Buttons --- #} {% if loggedin_user.is_admin or loggedin_user.is_cox %} <div class="-mb-3 -mx-3 grid {% if loggedin_user.is_admin %} grid-cols-2 {% endif %} text-center"> {% if loggedin_user.is_admin %} <a href="#" data-sidebar="true" data-trigger="sidebar" data-header="<strong>Event</strong> am {{ day.day| date(format='%d.%m.%Y') }} erstellen" data-day="{{ day.day }}" data-body="#addEventForm" class="relative inline-block w-full bg-primary-900 hover:bg-primary-950 focus:bg-primary-950 text-white py-2 rounded-bl-md text-sm font-semibold"> <span class="absolute inset-y-0 left-0 flex items-center pl-3"> {% include "includes/plus-icon" %} </span> Event </a> {% endif %} {% if loggedin_user.is_cox%} <a href="#" data-sidebar="true" data-trigger="sidebar" data-header="<strong>Ausfahrt</strong> am {{ day.day| date(format='%d.%m.%Y') }} erstellen" data-day="{{ day.day }}" data-body="#sidebarForm" class="relative inline-block w-full py-2 text-primary-900 hover:text-primary-950 focus:text-primary-950 text-sm font-semibold bg-gray-100 hover:bg-gray-200 focus:bg-gray-200 {% if loggedin_user.is_admin %} rounded-br-md {% else %} rounded-b-md {% endif %}"> <span class="absolute inset-y-0 left-0 flex items-center pl-3"> {% include "includes/plus-icon" %} </span> Ausfahrt </a> {% endif %} </div> {% endif %} {# --- END Add Buttons --- #} </div> {% endfor %} </div> </div> {# --- START Add Trip Sidebar --- #} <div class="sidebar slide-in from-right" id="sidebar" aria-modal="false"> <div class="bg-primary-900 text-white px-2 py-3 flex justify-between sidebar-header"> <div> <span class="ps-1 header-js"> Überschrift (wird ersetzt) </span> </div> <button type="button" title="Ausfahrt erstellen schließen" class="sidebar-close border-0 bg-primary-100 focus:bg-primary-50 text-black flex items-center justify-center transform rotate-45" data-trigger="sidebar"> {% include "includes/plus-icon" %} </button> </div> <div class="body-js px-2 pt-2" style="margin-top: 63px; margin-bottom: 157px"> Formular wird ersetzt </div> </div> <div class="sidebar-overlay" data-trigger="sidebar"></div> {# --- END Add Trip Sidebar --- #} {# --- START Form Add Trip --- #} <div class="hidden"> <form action="/cox/trip" method="post" class="grid gap-3" id="sidebarForm"> <input class="day-js" type="hidden" name="day" value="" /> {{ macros::input(label='Startzeit', name='planned_starting_time', type='input', required=true) }} {{ macros::input(label='Anzahl Ruderer', name='max_people', type='number', required=true) }} {{ macros::input(label='Anmerkungen', name='notes', type='input') }} <input value="Erstellen" class="w-full btn btn-primary" type="submit" /> </form> </div> {# --- END Form Add Trip --- #} {# --- START Form Add Event --- #} <div class="hidden"> <form action="/admin/planned-event" method="post" class="grid gap-3" id="addEventForm"> <input class="day-js" type="hidden" name="day" value="" /> {{ macros::input(label='Titel (z.B. Firmenrudern)', name='name', type='input', required=true) }} {{ macros::input(label='Startzeit', name='planned_starting_time', type='input', required=true) }} {{ macros::input(label='Anzahl Steuerleute', name='planned_amount_cox', type='number', required=true) }} {{ macros::input(label='Anzahl Ruderer', name='max_people', type='number', required=true) }} {{ macros::checkbox(label='Gäste erlauben', name='max_allow_guestspeople') }} {{ macros::input(label='Anmerkungen', name='notes', type='input') }} <input value="Erstellen" class="w-full btn btn-primary" type="submit" /> </form> </div> {# --- END Form Add Event --- #} {% endblock content %}