From ffbcf04da73ce38ce6ad1174a4cf41d9865303c0 Mon Sep 17 00:00:00 2001 From: Philipp Hofer Date: Sun, 20 Apr 2025 23:03:35 +0200 Subject: [PATCH] use render trait --- src/admin/mod.rs | 9 +-------- src/admin/route/web.rs | 7 +------ src/admin/station/mod.rs | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 14 deletions(-) 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>(