diff --git a/src/admin/mod.rs b/src/admin/mod.rs index 3578d83..1be58a2 100644 --- a/src/admin/mod.rs +++ b/src/admin/mod.rs @@ -43,14 +43,7 @@ async fn highscore(State(db): State>, session: Session) -> Marku td { "Team" } @for station in route.stations(&db).await { td { - a href=(format!("/admin/station/{}", station.id)){ - (station.name) - @if station.crewless() { - em data-tooltip="Station ohne Stationsbetreuer" data-placement="bottom" { - small { "🤖" } - } - } - } + (station) } } td { "Gesamtpunkte" } diff --git a/src/admin/route/web.rs b/src/admin/route/web.rs index f0ae9ed..69f6b21 100644 --- a/src/admin/route/web.rs +++ b/src/admin/route/web.rs @@ -161,12 +161,7 @@ async fn view( ol { @for (idx, station) in cur_stations.into_iter().enumerate() { li { - (station.name) - @if station.crewless() { - em data-tooltip="Station ohne Stationsbetreuer" { - small { "🤖" } - } - } + (station) @if idx > 0 { a href=(format!("/admin/route/{}/move-station-higher/{}", route.id, station.id)){ em data-tooltip=(format!("{} nach vor reihen", station.name)) { diff --git a/src/admin/station/mod.rs b/src/admin/station/mod.rs index 2ae5e54..e9328bb 100644 --- a/src/admin/station/mod.rs +++ b/src/admin/station/mod.rs @@ -6,6 +6,7 @@ use crate::{ }; use axum::Router; use chrono::{DateTime, Local, NaiveDateTime, Utc}; +use maud::{html, Markup, Render}; use serde::{Deserialize, Serialize}; use sqlx::{FromRow, SqlitePool}; @@ -24,6 +25,21 @@ pub(crate) struct Station { pub(crate) lng: Option, } +impl Render for Station { + fn render(&self) -> Markup { + html! { + a href=(format!("/admin/station/{}", self.id)){ + (self.name) + } + @if self.crewless() { + em data-tooltip="Station ohne Stationsbetreuer" data-placement="bottom" { + small { "🤖" } + } + } + } + } +} + impl Station { pub(crate) async fn all(db: &SqlitePool) -> Vec { sqlx::query_as::<_, Self>(