use leptos::*; use leptos::wasm_bindgen::JsCast; #[component] pub fn Sidebar() -> impl IntoView { let store = use_context::().expect("store not provided"); let total_count = move || store.torrents.get().len(); let downloading_count = move || store.torrents.get().iter().filter(|t| t.status == shared::TorrentStatus::Downloading).count(); let seeding_count = move || store.torrents.get().iter().filter(|t| t.status == shared::TorrentStatus::Seeding).count(); let completed_count = move || store.torrents.get().iter().filter(|t| t.status == shared::TorrentStatus::Seeding || t.status == shared::TorrentStatus::Paused).count(); let inactive_count = move || store.torrents.get().iter().filter(|t| t.status == shared::TorrentStatus::Paused || t.status == shared::TorrentStatus::Error).count(); let close_drawer = move || { if let Some(element) = document().get_element_by_id("my-drawer") { if let Ok(input) = element.dyn_into::() { input.set_checked(false); } } }; let set_filter = move |f: crate::store::FilterStatus| { store.filter.set(f); close_drawer(); }; let filter_class = move |f: crate::store::FilterStatus| { if store.filter.get() == f { "active" } else { "" } }; view! {
} }