From 46396e2520085cdb91dfcfbe16270e1a30df0b41 Mon Sep 17 00:00:00 2001 From: Vinod J M Date: Sat, 14 Jan 2023 23:48:39 +0530 Subject: [PATCH] Backend and frontend fixes --- backend/api/src/lib.rs | 9 +++++---- frontend/Cargo.toml | 2 +- frontend/src/main.rs | 40 ++++++++++++++++++++++++++++++---------- 3 files changed, 36 insertions(+), 15 deletions(-) diff --git a/backend/api/src/lib.rs b/backend/api/src/lib.rs index 35981a1..949f811 100644 --- a/backend/api/src/lib.rs +++ b/backend/api/src/lib.rs @@ -723,7 +723,7 @@ async fn refresh_meili_index( dotenvy::dotenv().ok(); let userid = user.id; - let page: usize = 0; + let page: usize = 1; let sort: String = "desc".to_string(); let per_page: usize = 12; @@ -731,9 +731,10 @@ async fn refresh_meili_index( .await .expect("could not list books"); - let num_pages = books.1; - for pg_idx in 0..num_pages { - let books = QueryCore::find_books_plus_meta_in_page(conn, pg_idx.try_into().unwrap(), per_page, userid, sort.clone()) + let num_pages: usize = (books.1 as usize) + 1; + for pg_idx in 1..num_pages { + //println!("DEBUGG {} {} {} {}",pg_idx, per_page, userid, sort.clone()); + let books = QueryCore::find_books_plus_meta_in_page(conn, pg_idx, per_page, userid, sort.clone()) .await .expect("could not list books"); diff --git a/frontend/Cargo.toml b/frontend/Cargo.toml index 59f5eef..0ca9218 100644 --- a/frontend/Cargo.toml +++ b/frontend/Cargo.toml @@ -31,5 +31,5 @@ wasm-bindgen = "0.2.79" #yew-router = "0.16.0" [dependencies.web-sys] -features = ["InputEvent", "EventTarget", "MouseEvent", "KeyboardEvent", "Location", "Storage", "Element"] +features = ["InputEvent", "EventTarget", "MouseEvent", "KeyboardEvent", "Location", "Storage", "Element", "Window", "Document"] version = "0.3.56" diff --git a/frontend/src/main.rs b/frontend/src/main.rs index 5758024..b203718 100644 --- a/frontend/src/main.rs +++ b/frontend/src/main.rs @@ -139,7 +139,14 @@ async fn list_users() -> Result, reqwasm::Error> { } Ok(res) } - +/* +async fn refresh_index() -> Result { + let backend_url: &'static str = dotenv!("BACKEND_URL"); + let url = format!("{}/api/refresh_search_index", backend_url); + let resp = Request::get(&url).send().await?; + Ok(resp) +} +*/ async fn authentication_check() -> Result { let backend_url: &'static str = dotenv!("BACKEND_URL"); let url = format!("{}/api/authentication_check", backend_url); @@ -408,7 +415,7 @@ pub fn Header(cx: Scope) -> View { div(class="w-4/5 md:w-4/5 flex mb-2"){ - div(class="hidden md:inline-flex"){ + div(class="hidden md:flex md:w-full"){ div(class="w-1/5 flex"){ (if *app_state.editmode.get() == false { @@ -473,9 +480,9 @@ pub fn Header(cx: Scope) -> View { view!{cx, (if *app_state.userid.get() != 0 { view!{ cx, - div(class="w-2/5 flex"){ + div(class="w-4/5 flex"){ button(on:click=click_listall, class="bg-gray-300 hover:bg-gray-200 text-gray-800 font-bold py-2 px-4 rounded inline-flex items-center") { i(class="fa-solid fa-layer-group") span(class="inline-block"){"All" }} - div(class="min-w-40 inline-flex"){ + div(class="min-w-100 inline-flex"){ input(ref=input_ref2, class = "inline-flex h-full m-0 p-1 w-full", placeholder="🔍 Search", @@ -490,7 +497,7 @@ pub fn Header(cx: Scope) -> View { } }) } - div(class="inline-flex md:hidden w-full"){ + div(class="inline-flex w-full md:hidden md:w-0"){ button(on:click=click_menu_expand, class="bg-gray-300 hover:bg-gray-200 text-gray-800 font-bold py-2 px-4 rounded inline-flex items-center") { i(class="fa-solid fa-bars") } } } @@ -850,17 +857,20 @@ async fn ListDB(cx: Scope<'_>) -> View { } }; + let window = web_sys::window().expect("Failed to get window"); + let window_cl = window.clone(); let callback: Closure = Closure::new(move || { //let csignal = csignal.clone(); //csignal.set(true); let app_state2 = app_state2.clone(); if *app_state2.scrolling.get() == false { - app_state2.scrollevent.set(true); + if window_cl.inner_height().unwrap().as_f64().unwrap() + window_cl.scroll_y().unwrap() >= window_cl.document().unwrap().body().unwrap().offset_height().into() { + app_state2.scrollevent.set(true); + } } info!("Got scroll event"); }); - let window = web_sys::window().expect("Failed to get window"); window .add_event_listener_with_callback_and_bool( "scroll", @@ -1013,7 +1023,7 @@ pub fn BookDB(cx: Scope, bookitem: BookUIProp) -> View { app_state.displayingbook.set(bookdisplay_div.clone()); }; view! { cx, - div(class="column px-4 py-4 bg-gray-200 border-2 border-gray-400 rounded m-3"){ + div(class="column px-4 py-4 bg-gray-200 border-2 border-gray-400 rounded m-3 hover:scale-110"){ div(class="card-buttons flex gap-x-3"){ button( class="bg-gray-300 hover:bg-gray-400 text-gray-800 font-bold py-2 px-4 border-black-500 rounded inline-flex items-center", on:click=handle_display){ i(class="fa-solid fa-circle-info") } @@ -1085,7 +1095,7 @@ pub fn BookDB_View(cx: Scope, bookitem: BookUIProp) -> View { app_state.displayingbook.set(bookdisplay_div.clone()); }; view! { cx, - div(class="col-span-1 px-4 py-4 bg-gray-200 border-2 border-gray-400 rounded m-3", on:click=handle_display_div){ + div(class="col-span-1 px-4 py-4 bg-gray-200 border-2 border-gray-400 rounded m-3 hover:scale-110", on:click=handle_display_div){ div(class="card-buttons"){ @@ -1185,7 +1195,7 @@ pub fn BookOL(cx: Scope, bookitem: BookUIProp) -> View { app_state.addingbook.set(book_div.clone()); }; view! { cx, - div(class="column px-4 py-4 bg-gray-200 border-2 border-gray-400 rounded m-3",on:click=handle_add_div){ + div(class="column px-4 py-4 bg-gray-200 border-2 border-gray-400 rounded m-3 hover:scale-110",on:click=handle_add_div){ button( class="bg-gray-300 hover:bg-gray-400 text-gray-800 font-bold py-2 px-4 border-black-500 rounded inline-flex items-center", on:click=handle_add){ i(class="fa-solid fa-plus") } div(class="card-main"){ @@ -1991,7 +2001,17 @@ async fn PageBar(cx: Scope<'_>) -> View { } } }; + + /* + let handle_refresh = move |_| { + spawn_local(async move { + refresh_index().await.expect("Couldn't refresh index"); + }); + };*/ + view! {cx, + //button( class="bg-gray-300 hover:bg-gray-200 text-gray-800 font-bold px-4 rounded inline-flex items-center", on:click=handle_refresh) {"REFRESH"} + (if (*app_state.openlibrary.get() == false || *app_state.internalsearch.get() == true) && !app_state.books.get().is_empty() { view!{ cx, div(class="bg-gray-300 text-gray-800 font-bold px-1 rounded inline-flex items-center w-max"){