From 77274b9a2af62124293b5a8a0ec0e430fa046de8 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 12 Jun 2023 23:51:20 +0200 Subject: flat view --- server/src/routes/ui/browser.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 server/src/routes/ui/browser.rs (limited to 'server/src/routes/ui/browser.rs') 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) -> Result, 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() + }) +} -- cgit v1.2.3-70-g09d2