optimize demo list debug output

This commit is contained in:
Robin Appelman 2024-01-20 15:48:12 +01:00
commit 68b6421b9b
5 changed files with 27 additions and 33 deletions

View file

@ -1,10 +1,25 @@
use crate::data::demo::ListDemo; use crate::data::demo::ListDemo;
use maud::{html, Markup, Render}; use maud::{html, Markup, Render};
use std::fmt::{Debug, Formatter};
pub struct DemoList<'a> { pub struct DemoList<'a> {
pub demos: &'a [ListDemo], pub demos: &'a [ListDemo],
} }
impl<'a> DemoList<'a> {
pub fn new(demos: &'a [ListDemo]) -> Self {
DemoList { demos }
}
}
impl Debug for DemoList<'_> {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
f.debug_list()
.entries(self.demos.iter().map(|d| d.id))
.finish()
}
}
impl Render for DemoList<'_> { impl Render for DemoList<'_> {
fn render(&self) -> Markup { fn render(&self) -> Markup {
html! { html! {

View file

@ -245,7 +245,7 @@ async fn index(
let demos = ListDemo::list(&app.connection, filter).await?; let demos = ListDemo::list(&app.connection, filter).await?;
Ok(render( Ok(render(
Index { Index {
demos: &demos, demos: DemoList::new(&demos),
maps: &app.map_list, maps: &app.map_list,
api: &app.api, api: &app.api,
}, },
@ -405,7 +405,7 @@ async fn uploads(
Ok(render( Ok(render(
Uploads { Uploads {
user, user,
demos: &demos, demos: DemoList::new(&demos),
maps: &app.map_list, maps: &app.map_list,
api: &app.api, api: &app.api,
}, },
@ -430,7 +430,7 @@ async fn profiles(
Ok(render( Ok(render(
Profile { Profile {
user, user,
demos: &demos, demos: DemoList::new(&demos),
maps: &app.map_list, maps: &app.map_list,
api: &app.api, api: &app.api,
}, },

View file

@ -1,14 +1,13 @@
use crate::data::demo::ListDemo;
use crate::data::maps::MapList; use crate::data::maps::MapList;
use crate::fragments::demo_list::DemoList; use crate::fragments::demo_list::DemoList;
use crate::pages::Page; use crate::pages::Page;
use demostf_build::Asset; use demostf_build::Asset;
use maud::{html, Markup, Render}; use maud::{html, Markup};
use std::borrow::Cow; use std::borrow::Cow;
#[derive(Debug)] #[derive(Debug)]
pub struct Index<'a> { pub struct Index<'a> {
pub demos: &'a [ListDemo], pub demos: DemoList<'a>,
pub maps: &'a MapList, pub maps: &'a MapList,
pub api: &'a str, pub api: &'a str,
} }
@ -17,12 +16,6 @@ pub struct Index<'a> {
#[asset(source = "script/demo_list.js", url = "/demo_list.js")] #[asset(source = "script/demo_list.js", url = "/demo_list.js")]
pub struct DemoListScript; pub struct DemoListScript;
impl<'a> Index<'a> {
fn demo_list(&self) -> impl Render + 'a {
DemoList { demos: self.demos }
}
}
impl Page for Index<'_> { impl Page for Index<'_> {
fn title(&self) -> Cow<'static, str> { fn title(&self) -> Cow<'static, str> {
"Demos - demos.tf".into() "Demos - demos.tf".into()
@ -44,7 +37,7 @@ impl Page for Index<'_> {
} }
} }
tbody { tbody {
(self.demo_list()) (self.demos)
} }
} }
button #load-more { "Load more.." } button #load-more { "Load more.." }

View file

@ -1,27 +1,20 @@
use crate::data::demo::ListDemo;
use crate::data::maps::MapList; use crate::data::maps::MapList;
use crate::data::user::User; use crate::data::user::User;
use crate::fragments::demo_list::DemoList; use crate::fragments::demo_list::DemoList;
use crate::pages::index::DemoListScript; use crate::pages::index::DemoListScript;
use crate::pages::Page; use crate::pages::Page;
use demostf_build::Asset; use demostf_build::Asset;
use maud::{html, Markup, Render}; use maud::{html, Markup};
use std::borrow::Cow; use std::borrow::Cow;
#[derive(Debug)] #[derive(Debug)]
pub struct Profile<'a> { pub struct Profile<'a> {
pub user: User, pub user: User,
pub demos: &'a [ListDemo], pub demos: DemoList<'a>,
pub maps: &'a MapList, pub maps: &'a MapList,
pub api: &'a str, pub api: &'a str,
} }
impl<'a> Profile<'a> {
fn demo_list(&self) -> impl Render + 'a {
DemoList { demos: self.demos }
}
}
impl Page for Profile<'_> { impl Page for Profile<'_> {
fn title(&self) -> Cow<'static, str> { fn title(&self) -> Cow<'static, str> {
format!("Demos with {} - demos.tf", self.user.name).into() format!("Demos with {} - demos.tf", self.user.name).into()
@ -46,7 +39,7 @@ impl Page for Profile<'_> {
} }
} }
tbody { tbody {
(self.demo_list()) (self.demos)
} }
} }
button #load-more { "Load more.." } button #load-more { "Load more.." }

View file

@ -1,27 +1,20 @@
use crate::data::demo::ListDemo;
use crate::data::maps::MapList; use crate::data::maps::MapList;
use crate::data::user::User; use crate::data::user::User;
use crate::fragments::demo_list::DemoList; use crate::fragments::demo_list::DemoList;
use crate::pages::index::DemoListScript; use crate::pages::index::DemoListScript;
use crate::pages::Page; use crate::pages::Page;
use demostf_build::Asset; use demostf_build::Asset;
use maud::{html, Markup, Render}; use maud::{html, Markup};
use std::borrow::Cow; use std::borrow::Cow;
#[derive(Debug)] #[derive(Debug)]
pub struct Uploads<'a> { pub struct Uploads<'a> {
pub user: User, pub user: User,
pub demos: &'a [ListDemo], pub demos: DemoList<'a>,
pub maps: &'a MapList, pub maps: &'a MapList,
pub api: &'a str, pub api: &'a str,
} }
impl<'a> Uploads<'a> {
fn demo_list(&self) -> impl Render + 'a {
DemoList { demos: self.demos }
}
}
impl Page for Uploads<'_> { impl Page for Uploads<'_> {
fn title(&self) -> Cow<'static, str> { fn title(&self) -> Cow<'static, str> {
format!("Uploads by {} - demos.tf", self.user.name).into() format!("Uploads by {} - demos.tf", self.user.name).into()
@ -46,7 +39,7 @@ impl Page for Uploads<'_> {
} }
} }
tbody { tbody {
(self.demo_list()) (self.demos)
} }
} }
button #load-more { "Load more.." } button #load-more { "Load more.." }