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 maud::{html, Markup, Render};
use std::fmt::{Debug, Formatter};
pub struct DemoList<'a> {
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<'_> {
fn render(&self) -> Markup {
html! {

View file

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

View file

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

View file

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

View file

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