From f55ce1829d0e2967765d15aab5ea2fc492bf5f62 Mon Sep 17 00:00:00 2001 From: Philipp Hofer Date: Mon, 14 Apr 2025 14:13:31 +0200 Subject: [PATCH] group teams by routes, sort by last inserted; Fixes #36 --- src/admin/team/mod.rs | 2 +- src/admin/team/web.rs | 87 +++++++++++++++++++++++-------------------- 2 files changed, 47 insertions(+), 42 deletions(-) diff --git a/src/admin/team/mod.rs b/src/admin/team/mod.rs index 15aa2b4..a547e6c 100644 --- a/src/admin/team/mod.rs +++ b/src/admin/team/mod.rs @@ -87,7 +87,7 @@ impl Team { pub(crate) async fn all_with_route(db: &SqlitePool, route: &Route) -> Vec { sqlx::query_as!( Team, - "select id, name, notes, amount_people, first_station_id, route_id from team where route_id = ?;", + "SELECT id, name, notes, amount_people, first_station_id, route_id FROM team WHERE route_id = ?;", route.id ) .fetch_all(db) diff --git a/src/admin/team/web.rs b/src/admin/team/web.rs index 606fe9a..f735119 100644 --- a/src/admin/team/web.rs +++ b/src/admin/team/web.rs @@ -528,24 +528,34 @@ async fn index(State(db): State>, session: Session) -> Markup { a href="/admin/route" { "Route" } " sie zugewiesen sind." } - ol { - @for team in &teams{ - li { - a href=(format!("/admin/team/{}", team.id)){ - (team.name) - } - a href=(format!("/admin/team/{}/delete", team.id)) - onclick="return confirm('Bist du sicher, dass das Team gelöscht werden soll? Das kann _NICHT_ mehr rückgängig gemacht werden.');" { - "🗑️" - } + article { + h2 { "Neues Team" } + @if routes.is_empty() { + article class="error" { + (PreEscaped("Bevor du ein Team erstellen kannst, musst du zumindest eine Route erstellen, die das Team gehen kann → ")) + a role="button" href="/admin/route" { + "Team erstellen" + } } - } - } - @if teams.is_empty() { - article class="warning" { - "Es gibt noch keine Teams. " - @if !routes.is_empty() { - "Das kannst du hier ändern ⤵️" + } @else { + form action="/admin/team" method="post" { + @if routes.len() == 1 { + fieldset role="group" { + input type="text" name="name" placeholder="Teamnamen" required; + input type="hidden" name="route_id" value=(routes[0].id) ; + input type="submit" value="Neues Team"; + } + } @else { + input type="text" name="name" placeholder="Teamnamen" required; + select name="route_id" aria-label="Route auswählen" required { + @for route in &routes { + option value=(route.id) { + (route.name) + } + } + } + input type="submit" value="Neues Team"; + } } } } @@ -554,32 +564,27 @@ async fn index(State(db): State>, session: Session) -> Markup { "Hab ich eine Gruppe verloren? 😳" } } - h2 { "Neues Team" } - @if routes.is_empty() { - article class="error" { - (PreEscaped("Bevor du ein Team erstellen kannst, musst du zumindest eine Route erstellen, die das Team gehen kann → ")) - a role="button" href="/admin/route" { - "Team erstellen" + @for route in &routes { + h2 { (route.name) } + ol { + @for team in &route.teams(&db).await{ + li { + a href=(format!("/admin/team/{}", team.id)){ + (team.name) + } + a href=(format!("/admin/team/{}/delete", team.id)) + onclick="return confirm('Bist du sicher, dass das Team gelöscht werden soll? Das kann _NICHT_ mehr rückgängig gemacht werden.');" { + "🗑️" + } + } } } - } @else { - form action="/admin/team" method="post" { - @if routes.len() == 1 { - fieldset role="group" { - input type="text" name="name" placeholder="Teamnamen" required; - input type="hidden" name="route_id" value=(routes[0].id) ; - input type="submit" value="Neues Team"; - } - } @else { - input type="text" name="name" placeholder="Teamnamen" required; - select name="route_id" aria-label="Route auswählen" required { - @for route in &routes { - option value=(route.id) { - (route.name) - } - } - } - input type="submit" value="Neues Team"; + } + @if teams.is_empty() { + article class="warning" { + "Es gibt noch keine Teams. " + @if !routes.is_empty() { + "Das kannst du hier ändern ⤵️" } } }