diff options
author | metamuffin <metamuffin@disroot.org> | 2023-06-12 23:51:20 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-06-12 23:51:20 +0200 |
commit | 77274b9a2af62124293b5a8a0ec0e430fa046de8 (patch) | |
tree | 15f176d57b4ea4d96f85eb9ba24bc94ab1b1660f /server/src/routes/ui/browser.rs | |
parent | 161693f372ea01d945b111501c6c1af4182c283d (diff) | |
download | jellything-77274b9a2af62124293b5a8a0ec0e430fa046de8.tar jellything-77274b9a2af62124293b5a8a0ec0e430fa046de8.tar.bz2 jellything-77274b9a2af62124293b5a8a0ec0e430fa046de8.tar.zst |
flat view
Diffstat (limited to 'server/src/routes/ui/browser.rs')
-rw-r--r-- | server/src/routes/ui/browser.rs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/server/src/routes/ui/browser.rs b/server/src/routes/ui/browser.rs new file mode 100644 index 0000000..04d9b7c --- /dev/null +++ b/server/src/routes/ui/browser.rs @@ -0,0 +1,30 @@ +use super::{account::session::Session, error::MyError, layout::DynLayoutPage, node::ItemCard}; +use crate::library::{Library, Node}; +use rocket::{get, State}; +use std::collections::VecDeque; + +#[get("/items")] +pub fn r_all_items(_sess: Session, library: &State<Library>) -> Result<DynLayoutPage<'_>, MyError> { + let mut dirs = VecDeque::from_iter(Some(library.root.get_directory().unwrap())); + let mut items = Vec::new(); + while let Some(d) = dirs.pop_front() { + for e in &d.children { + match e.as_ref() { + Node::Directory(d) => dirs.push_back(d.clone()), + Node::Item(i) => items.push(i.clone()), + } + } + } + Ok(super::layout::LayoutPage { + title: "All Items".to_owned(), + content: markup::new! { + .page.dir { + h1 { "All Items" } + ul.directorylisting { @for item in &items { + li { @ItemCard { item: &item } } + }} + } + }, + ..Default::default() + }) +} |