aboutsummaryrefslogtreecommitdiff
path: root/server/src/routes/ui/browser.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-06-12 23:51:20 +0200
committermetamuffin <metamuffin@disroot.org>2023-06-12 23:51:20 +0200
commit77274b9a2af62124293b5a8a0ec0e430fa046de8 (patch)
tree15f176d57b4ea4d96f85eb9ba24bc94ab1b1660f /server/src/routes/ui/browser.rs
parent161693f372ea01d945b111501c6c1af4182c283d (diff)
downloadjellything-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.rs30
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()
+ })
+}