v0.14-popupV1
This commit is contained in:
@@ -154,25 +154,6 @@ impl Books {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn set_all_descriptions(&mut self) {
|
|
||||||
for book in self.docs.iter_mut() {
|
|
||||||
let query = format!("https://openlibrary.org/{}.json", book.key);
|
|
||||||
let res = reqwest::get(query).await.expect("Unable to request");
|
|
||||||
let resjson = res.json::<BookPageOL>().await.expect("Unable to return value");
|
|
||||||
let description = resjson.description;
|
|
||||||
|
|
||||||
if !description.is_none() {
|
|
||||||
if let DescriptionOL::DescriptionString(desc_string) = description.clone().unwrap() {
|
|
||||||
book.description = Some(desc_string);
|
|
||||||
}
|
|
||||||
if let DescriptionOL::DescriptionValueString(desc_val) = description.clone().unwrap() {
|
|
||||||
book.description = Some(desc_val.value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl BookUI {
|
impl BookUI {
|
||||||
@@ -503,7 +484,7 @@ async fn search_openlibrary(
|
|||||||
let mut resjson = res.json::<Books>().await.expect("Unable to return value");
|
let mut resjson = res.json::<Books>().await.expect("Unable to return value");
|
||||||
resjson.docs.truncate(12);
|
resjson.docs.truncate(12);
|
||||||
resjson.set_all_cover_urls();
|
resjson.set_all_cover_urls();
|
||||||
resjson.set_all_descriptions().await;
|
//resjson.set_all_descriptions().await;
|
||||||
print!("Search token {:?}\n", search);
|
print!("Search token {:?}\n", search);
|
||||||
let mut vec = Vec::with_capacity(12);
|
let mut vec = Vec::with_capacity(12);
|
||||||
for i in 0..12 as usize {
|
for i in 0..12 as usize {
|
||||||
@@ -667,24 +648,31 @@ return Json(res);
|
|||||||
async fn create_book(
|
async fn create_book(
|
||||||
Extension(ref conn): Extension<DatabaseConnection>,
|
Extension(ref conn): Extension<DatabaseConnection>,
|
||||||
Extension(ref meili_client): Extension<Client>,
|
Extension(ref meili_client): Extension<Client>,
|
||||||
Json(doc_sent): Json<BookUI>,
|
Json(doc_sent_orig): Json<BookUI>,
|
||||||
) -> impl IntoResponse {
|
) -> impl IntoResponse {
|
||||||
println!("Creating book");
|
println!("Creating book");
|
||||||
|
|
||||||
dotenvy::dotenv().ok();
|
dotenvy::dotenv().ok();
|
||||||
let images_dir = env::var("IMAGES_DIR").expect("IMAGES_DIR is not set in .env file");
|
let images_dir = env::var("IMAGES_DIR").expect("IMAGES_DIR is not set in .env file");
|
||||||
|
let mut doc_sent = doc_sent_orig.clone();
|
||||||
let mut cover = doc_sent.cover.clone();
|
let mut cover = doc_sent.cover.clone();
|
||||||
|
if doc_sent_orig.description.is_none() {
|
||||||
|
doc_sent.set_descriptions().await;
|
||||||
|
} else {
|
||||||
|
if doc_sent_orig.description.unwrap() == "".to_string() {
|
||||||
|
doc_sent.set_descriptions().await;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if !doc_sent.cover.is_none() {
|
if !doc_sent.cover.is_none() {
|
||||||
let img_bytes = reqwest::get(cover.unwrap()).await.unwrap().bytes().await.unwrap();
|
let img_bytes = reqwest::get(cover.unwrap()).await.unwrap().bytes().await.unwrap();
|
||||||
//.expect("Could not fetch image");
|
|
||||||
//let img_bytes = img_resp.unwrap().bytes();
|
|
||||||
let image = image::load_from_memory(&img_bytes).unwrap();
|
let image = image::load_from_memory(&img_bytes).unwrap();
|
||||||
let temp_cover = doc_sent.cover.clone().unwrap();
|
let temp_cover = doc_sent.cover.clone().unwrap();
|
||||||
let img_id = temp_cover.split("/").last().unwrap();
|
let img_id = temp_cover.split("/").last().unwrap();
|
||||||
image.save(format!("{}/{}",images_dir,img_id)).expect("Failed to save image");
|
image.save(format!("{}/{}",images_dir,img_id)).expect("Failed to save image");
|
||||||
cover = Some(img_id.to_string());
|
cover = Some(img_id.to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
let book: book::Model = book::Model{
|
let book: book::Model = book::Model{
|
||||||
open_library_key: doc_sent.open_library_key.to_owned(),
|
open_library_key: doc_sent.open_library_key.to_owned(),
|
||||||
title: (doc_sent.title.to_owned()),
|
title: (doc_sent.title.to_owned()),
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
use log::info;
|
use log::info;
|
||||||
//use log::Level;
|
//use log::Level;
|
||||||
use std::env;
|
|
||||||
|
|
||||||
use reqwasm::http::Request;
|
use reqwasm::http::Request;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use serde_json;
|
use serde_json;
|
||||||
@@ -72,7 +70,8 @@ enum AppRoutes {
|
|||||||
|
|
||||||
async fn fetch_books(search: String) -> Result<Vec<BookUI>, reqwasm::Error> {
|
async fn fetch_books(search: String) -> Result<Vec<BookUI>, reqwasm::Error> {
|
||||||
dotenvy::dotenv().ok();
|
dotenvy::dotenv().ok();
|
||||||
let backend_url = env::var("BACKEND_URL").expect("BACKEND_URL is not set in .env file");
|
let backend_url = "http://localhost:8081";
|
||||||
|
//env::var("BACKEND_URL").expect("BACKEND_URL is not set in .env file");
|
||||||
let url = format!("{}/api/search_openlibrary?search={}", backend_url, search);
|
let url = format!("{}/api/search_openlibrary?search={}", backend_url, search);
|
||||||
let resp = Request::get(&url).send().await?;
|
let resp = Request::get(&url).send().await?;
|
||||||
println!("Fetching books\n");
|
println!("Fetching books\n");
|
||||||
@@ -82,7 +81,8 @@ async fn fetch_books(search: String) -> Result<Vec<BookUI>, reqwasm::Error> {
|
|||||||
|
|
||||||
async fn search_books(search: String, page: u32) -> Result<PaginatedBookUIList, reqwasm::Error> {
|
async fn search_books(search: String, page: u32) -> Result<PaginatedBookUIList, reqwasm::Error> {
|
||||||
dotenvy::dotenv().ok();
|
dotenvy::dotenv().ok();
|
||||||
let backend_url = env::var("BACKEND_URL").expect("BACKEND_URL is not set in .env file");
|
let backend_url = "http://localhost:8081";
|
||||||
|
//env::var("BACKEND_URL").expect("BACKEND_URL is not set in .env file");
|
||||||
let url = format!("{}/api/list_search?search={}&page={}",backend_url, search, page);
|
let url = format!("{}/api/list_search?search={}&page={}",backend_url, search, page);
|
||||||
let resp = Request::get(&url).send().await?;
|
let resp = Request::get(&url).send().await?;
|
||||||
println!("Fetching books\n");
|
println!("Fetching books\n");
|
||||||
@@ -92,7 +92,8 @@ async fn search_books(search: String, page: u32) -> Result<PaginatedBookUIList,
|
|||||||
|
|
||||||
async fn add_book(record: BookUI) -> Result<reqwasm::http::Response, reqwasm::Error> {
|
async fn add_book(record: BookUI) -> Result<reqwasm::http::Response, reqwasm::Error> {
|
||||||
dotenvy::dotenv().ok();
|
dotenvy::dotenv().ok();
|
||||||
let backend_url = env::var("BACKEND_URL").expect("BACKEND_URL is not set in .env file");
|
let backend_url = "http://localhost:8081";
|
||||||
|
//env::var("BACKEND_URL").expect("BACKEND_URL is not set in .env file");
|
||||||
let url = format!("{}/api/create", backend_url);
|
let url = format!("{}/api/create", backend_url);
|
||||||
let resp = Request::post(&url).body(serde_wasm_bindgen::to_value(&serde_json::to_string(&record).unwrap()).unwrap()).header("content-type","application/json").send().await?;
|
let resp = Request::post(&url).body(serde_wasm_bindgen::to_value(&serde_json::to_string(&record).unwrap()).unwrap()).header("content-type","application/json").send().await?;
|
||||||
Ok(resp)
|
Ok(resp)
|
||||||
@@ -100,7 +101,8 @@ async fn add_book(record: BookUI) -> Result<reqwasm::http::Response, reqwasm::Er
|
|||||||
|
|
||||||
async fn add_books_isbns(isbns: String) -> Result<reqwasm::http::Response, reqwasm::Error> {
|
async fn add_books_isbns(isbns: String) -> Result<reqwasm::http::Response, reqwasm::Error> {
|
||||||
dotenvy::dotenv().ok();
|
dotenvy::dotenv().ok();
|
||||||
let backend_url = env::var("BACKEND_URL").expect("BACKEND_URL is not set in .env file");
|
let backend_url = "http://localhost:8081";
|
||||||
|
//env::var("BACKEND_URL").expect("BACKEND_URL is not set in .env file");
|
||||||
let url = format!("{}/api/create_by_isbn?isbns={}", backend_url, isbns);
|
let url = format!("{}/api/create_by_isbn?isbns={}", backend_url, isbns);
|
||||||
let resp = Request::get(&url).send().await?;
|
let resp = Request::get(&url).send().await?;
|
||||||
println!("Adding multiple books\n");
|
println!("Adding multiple books\n");
|
||||||
@@ -110,7 +112,8 @@ async fn add_books_isbns(isbns: String) -> Result<reqwasm::http::Response, reqw
|
|||||||
|
|
||||||
async fn update_book(record: BookUI) -> Result<reqwasm::http::Response, reqwasm::Error> {
|
async fn update_book(record: BookUI) -> Result<reqwasm::http::Response, reqwasm::Error> {
|
||||||
dotenvy::dotenv().ok();
|
dotenvy::dotenv().ok();
|
||||||
let backend_url = env::var("BACKEND_URL").expect("BACKEND_URL is not set in .env file");
|
let backend_url = "http://localhost:8081";
|
||||||
|
//env::var("BACKEND_URL").expect("BACKEND_URL is not set in .env file");
|
||||||
let url = format!("{}/api/update", backend_url);
|
let url = format!("{}/api/update", backend_url);
|
||||||
let resp = Request::post(&url).body(serde_wasm_bindgen::to_value(&serde_json::to_string(&record).unwrap()).unwrap()).header("content-type","application/json").send().await?;
|
let resp = Request::post(&url).body(serde_wasm_bindgen::to_value(&serde_json::to_string(&record).unwrap()).unwrap()).header("content-type","application/json").send().await?;
|
||||||
Ok(resp)
|
Ok(resp)
|
||||||
@@ -118,7 +121,8 @@ async fn update_book(record: BookUI) -> Result<reqwasm::http::Response, reqwasm:
|
|||||||
|
|
||||||
async fn delete_book(id: i32) -> Result<reqwasm::http::Response, reqwasm::Error> {
|
async fn delete_book(id: i32) -> Result<reqwasm::http::Response, reqwasm::Error> {
|
||||||
dotenvy::dotenv().ok();
|
dotenvy::dotenv().ok();
|
||||||
let backend_url = env::var("BACKEND_URL").expect("BACKEND_URL is not set in .env file");
|
let backend_url = "http://localhost:8081";
|
||||||
|
//env::var("BACKEND_URL").expect("BACKEND_URL is not set in .env file");
|
||||||
let url = format!("{}/api/delete/{}", backend_url, id);
|
let url = format!("{}/api/delete/{}", backend_url, id);
|
||||||
let resp = Request::get(&url).send().await?;
|
let resp = Request::get(&url).send().await?;
|
||||||
Ok(resp)
|
Ok(resp)
|
||||||
@@ -126,7 +130,8 @@ async fn delete_book(id: i32) -> Result<reqwasm::http::Response, reqwasm::Error>
|
|||||||
|
|
||||||
async fn list_books(page: u32) -> Result<PaginatedBookUIList, reqwasm::Error> {
|
async fn list_books(page: u32) -> Result<PaginatedBookUIList, reqwasm::Error> {
|
||||||
dotenvy::dotenv().ok();
|
dotenvy::dotenv().ok();
|
||||||
let backend_url = env::var("BACKEND_URL").expect("BACKEND_URL is not set in .env file");
|
let backend_url = "http://localhost:8081";
|
||||||
|
//env::var("BACKEND_URL").expect("BACKEND_URL is not set in .env file");
|
||||||
let url = format!("{}/api/list?page={}", backend_url, page);
|
let url = format!("{}/api/list?page={}", backend_url, page);
|
||||||
let resp = Request::get(&url).send().await?;
|
let resp = Request::get(&url).send().await?;
|
||||||
println!("Fetching books\n");
|
println!("Fetching books\n");
|
||||||
@@ -155,11 +160,11 @@ pub fn Header<G: Html>(cx: Scope) -> View<G> {
|
|||||||
task = task.trim().to_string();
|
task = task.trim().to_string();
|
||||||
|
|
||||||
if !task.is_empty() {
|
if !task.is_empty() {
|
||||||
app_state.search.set(task);
|
app_state.search.set(task.clone());
|
||||||
app_state.openlibrary.set(true);
|
app_state.openlibrary.set(true);
|
||||||
app_state.internalsearch.set(false);
|
app_state.internalsearch.set(false);
|
||||||
|
|
||||||
info!("Fetching search\n");
|
info!("Fetching search {}\n", task.clone());
|
||||||
value.set("".to_string());
|
value.set("".to_string());
|
||||||
input_ref
|
input_ref
|
||||||
.get::<DomNode>()
|
.get::<DomNode>()
|
||||||
@@ -182,7 +187,7 @@ pub fn Header<G: Html>(cx: Scope) -> View<G> {
|
|||||||
app_state.openlibrary.set(false);
|
app_state.openlibrary.set(false);
|
||||||
app_state.internalsearch.set(true);
|
app_state.internalsearch.set(true);
|
||||||
|
|
||||||
info!("Fetching search\n");
|
info!("Fetching search 2\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -255,7 +260,6 @@ pub fn Header<G: Html>(cx: Scope) -> View<G> {
|
|||||||
view! { cx,
|
view! { cx,
|
||||||
header(class="header") {
|
header(class="header") {
|
||||||
div(class="header-column"){
|
div(class="header-column"){
|
||||||
h1 { "Search OpenLibrary" }
|
|
||||||
input(ref=input_ref,
|
input(ref=input_ref,
|
||||||
class="new-todo",
|
class="new-todo",
|
||||||
placeholder="Search openlibrary",
|
placeholder="Search openlibrary",
|
||||||
@@ -264,10 +268,9 @@ pub fn Header<G: Html>(cx: Scope) -> View<G> {
|
|||||||
)
|
)
|
||||||
button(on:click=click_searchOL) { "Search OpenLibrary" }
|
button(on:click=click_searchOL) { "Search OpenLibrary" }
|
||||||
}
|
}
|
||||||
button(on:click=click_listall) { "List All DB" }
|
|
||||||
|
|
||||||
div(class="header-column"){
|
div(class="header-column"){
|
||||||
|
button(on:click=click_listall) { "List All DB" }
|
||||||
input(ref=input_ref2,
|
input(ref=input_ref2,
|
||||||
class="new-todo",
|
class="new-todo",
|
||||||
placeholder="Search internal DB",
|
placeholder="Search internal DB",
|
||||||
@@ -294,10 +297,18 @@ pub fn Header<G: Html>(cx: Scope) -> View<G> {
|
|||||||
#[component]
|
#[component]
|
||||||
async fn ListDB<G: Html>(cx: Scope<'_>) -> View<G> {
|
async fn ListDB<G: Html>(cx: Scope<'_>) -> View<G> {
|
||||||
let app_state = use_context::<AppState>(cx);
|
let app_state = use_context::<AppState>(cx);
|
||||||
|
|
||||||
create_effect(cx, || {
|
create_effect(cx, || {
|
||||||
let app_state = app_state.clone();
|
let app_state = app_state.clone();
|
||||||
app_state.search.track();
|
app_state.search.track();
|
||||||
app_state.pagenum.track();
|
app_state.pagenum.track();
|
||||||
|
app_state.openlibrary.track();
|
||||||
|
app_state.internalsearch.track();
|
||||||
|
|
||||||
|
info!(
|
||||||
|
"The state changed. New value: {}",
|
||||||
|
app_state.search.get(),
|
||||||
|
);
|
||||||
|
|
||||||
if *app_state.openlibrary.get() == false {
|
if *app_state.openlibrary.get() == false {
|
||||||
if *app_state.internalsearch.get() == false {
|
if *app_state.internalsearch.get() == false {
|
||||||
@@ -316,10 +327,19 @@ async fn ListDB<G: Html>(cx: Scope<'_>) -> View<G> {
|
|||||||
.unwrap().books)
|
.unwrap().books)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
spawn_local(async move {
|
||||||
|
if *app_state.search.get() != "" {
|
||||||
|
if *app_state.openlibrary.get() == true {
|
||||||
|
app_state.books.set(
|
||||||
|
fetch_books(app_state.search.get().to_string() )
|
||||||
|
.await
|
||||||
|
.unwrap(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
let docs = create_memo(cx, || app_state.books.get().iter().cloned().collect::<Vec<_>>());
|
let docs = create_memo(cx, || app_state.books.get().iter().cloned().collect::<Vec<_>>());
|
||||||
@@ -355,7 +375,7 @@ pub fn BookDB<G: Html>(cx: Scope, bookitem: BookUIProp) -> View<G> {
|
|||||||
let locdesc = bookitem.bookitem.clone().description.unwrap_or("".to_string());
|
let locdesc = bookitem.bookitem.clone().description.unwrap_or("".to_string());
|
||||||
|
|
||||||
|
|
||||||
let coverurl = bookdisplay.clone().cover.clone().unwrap();
|
let coverurl = bookdisplay.clone().cover.clone().unwrap_or("None".to_string());
|
||||||
let handle_delete = move |_| {
|
let handle_delete = move |_| {
|
||||||
spawn_local(async move {
|
spawn_local(async move {
|
||||||
let temp = delete_book(bookdelete.id).await.unwrap();
|
let temp = delete_book(bookdelete.id).await.unwrap();
|
||||||
@@ -399,25 +419,14 @@ pub fn BookDB<G: Html>(cx: Scope, bookitem: BookUIProp) -> View<G> {
|
|||||||
#[component]
|
#[component]
|
||||||
async fn ListOL<G: Html>(cx: Scope<'_>) -> View<G> {
|
async fn ListOL<G: Html>(cx: Scope<'_>) -> View<G> {
|
||||||
let app_state = use_context::<AppState>(cx);
|
let app_state = use_context::<AppState>(cx);
|
||||||
|
|
||||||
create_effect(cx, || {
|
create_effect(cx, || {
|
||||||
//info!(
|
|
||||||
// "The state changed. New value: {} {}",
|
|
||||||
// app_state.search.get(),
|
|
||||||
//);
|
|
||||||
let app_state = app_state.clone();
|
|
||||||
app_state.search.track();
|
app_state.search.track();
|
||||||
|
|
||||||
spawn_local(async move {
|
info!(
|
||||||
if *app_state.search.get() != "" {
|
"The state changed B. New value: {}",
|
||||||
if *app_state.openlibrary.get() == true {
|
app_state.search.get(),
|
||||||
app_state.books.set(
|
);
|
||||||
fetch_books(app_state.search.get().to_string() )
|
|
||||||
.await
|
|
||||||
.unwrap(),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
let docs = create_memo(cx, || app_state.books.get().iter().cloned().collect::<Vec<_>>());
|
let docs = create_memo(cx, || app_state.books.get().iter().cloned().collect::<Vec<_>>());
|
||||||
@@ -448,9 +457,9 @@ pub fn BookOL<G: Html>(cx: Scope, bookitem: BookUIProp) -> View<G> {
|
|||||||
let book = bookitem.bookitem.clone();
|
let book = bookitem.bookitem.clone();
|
||||||
let bookdisp=book.clone();
|
let bookdisp=book.clone();
|
||||||
let loctitle = bookitem.bookitem.clone().title.clone();
|
let loctitle = bookitem.bookitem.clone().title.clone();
|
||||||
let locauthors = bookitem.bookitem.clone().author_name.clone().unwrap().join(", ");
|
let locauthors = bookitem.bookitem.clone().author_name.clone().unwrap_or(vec!["".to_string()]).join(", ");
|
||||||
let locdesc = bookitem.bookitem.clone().description.unwrap_or("".to_string());
|
let locdesc = bookitem.bookitem.clone().description.unwrap_or("".to_string());
|
||||||
let coverurl = bookdisp.cover.clone().unwrap();
|
let coverurl = bookdisp.cover.clone().unwrap_or("NONE".to_string());
|
||||||
let app_state = use_context::<AppState>(cx);
|
let app_state = use_context::<AppState>(cx);
|
||||||
let handle_add = move |_| {
|
let handle_add = move |_| {
|
||||||
app_state.adding.set(true);
|
app_state.adding.set(true);
|
||||||
@@ -524,8 +533,11 @@ inp_author.set((*app_state.addingbook.get()).clone().author_name.unwrap_or(vec![
|
|||||||
app_state.updating.set(false);
|
app_state.updating.set(false);
|
||||||
app_state.adding.set(false);
|
app_state.adding.set(false);
|
||||||
|
|
||||||
let dom_node = node_ref.get::<DomNode>();
|
let jsval = wasm_bindgen::JsValue::from_str("none");
|
||||||
dom_node.set_attribute("display","none");
|
let dom_node = node_ref.try_get::<DomNode>();
|
||||||
|
if dom_node.is_some() {
|
||||||
|
dom_node.unwrap().set_property("display", &jsval.clone());
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -581,19 +593,28 @@ info!("Adding book");
|
|||||||
|
|
||||||
create_effect(cx, || {
|
create_effect(cx, || {
|
||||||
if *app_state.updating.get() == true || *app_state.adding.get() == true {
|
if *app_state.updating.get() == true || *app_state.adding.get() == true {
|
||||||
let dom_node = node_ref.get::<DomNode>();
|
|
||||||
dom_node.remove_attribute("display");
|
let jsval = wasm_bindgen::JsValue::from_str("flex");
|
||||||
|
|
||||||
|
let dom_node = node_ref.try_get::<DomNode>();
|
||||||
|
if dom_node.is_some() {
|
||||||
|
dom_node.unwrap().set_property("display",&jsval);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
let dom_node = node_ref.get::<DomNode>();
|
let jsval = wasm_bindgen::JsValue::from_str("none");
|
||||||
dom_node.set_attribute("display","none");
|
|
||||||
|
let dom_node = node_ref.try_get::<DomNode>();
|
||||||
|
if dom_node.is_some() {
|
||||||
|
dom_node.unwrap().set_property("display",&jsval);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
view! {cx,
|
view! {cx,
|
||||||
|
div(class="modal-box",ref=node_ref){
|
||||||
|
|
||||||
(if *app_state.adding.get() == true || *app_state.updating.get() == true {
|
(if *app_state.adding.get() == true || *app_state.updating.get() == true {
|
||||||
view!{ cx,
|
view!{ cx,
|
||||||
div(class="modal-box",ref=node_ref){
|
|
||||||
div(class="modal-content"){
|
div(class="modal-content"){
|
||||||
|
|
||||||
p {
|
p {
|
||||||
@@ -620,7 +641,6 @@ info!("Adding book");
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -630,36 +650,54 @@ info!("Adding book");
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#[component]
|
#[component]
|
||||||
async fn SelectedUI<G: Html>(cx: Scope<'_>) -> View<G> {
|
async fn SelectedUI<G: Html>(cx: Scope<'_>) -> View<G> {
|
||||||
let app_state = use_context::<AppState>(cx);
|
let app_state = use_context::<AppState>(cx);
|
||||||
let displ_book = create_signal(cx, (*app_state.displayingbook.get()).clone());
|
let displ_book = create_signal(cx, (*app_state.displayingbook.get()).clone());
|
||||||
let coverurl = create_signal(cx, app_state.displayingbook.get().clone().cover.clone().unwrap().to_string().clone());
|
let coverurl = create_signal(cx, app_state.displayingbook.get().clone().cover.clone().unwrap_or("NONE".to_string()).to_string().clone());
|
||||||
let node_ref = create_node_ref(cx);
|
let node_ref = create_node_ref(cx);
|
||||||
|
//on_mount(cx, || {
|
||||||
|
// let dom_node = node_ref.get::<DomNode>();
|
||||||
|
//});
|
||||||
|
|
||||||
let handle_close = move |_| {
|
let handle_close = move |_| {
|
||||||
app_state.displaying.set(false);
|
app_state.displaying.set(false);
|
||||||
let dom_node = node_ref.get::<DomNode>();
|
let jsval = wasm_bindgen::JsValue::from_str("none");
|
||||||
dom_node.set_attribute("display","none");
|
|
||||||
|
let dom_node = node_ref.try_get::<DomNode>();
|
||||||
|
if dom_node.is_some() {
|
||||||
|
dom_node.unwrap().set_property("display",&jsval);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
create_effect(cx, || {
|
create_effect(cx, || {
|
||||||
if *app_state.displaying.get() == true {
|
if *app_state.displaying.get() == true {
|
||||||
let dom_node = node_ref.get::<DomNode>();
|
let jsval = wasm_bindgen::JsValue::from_str("flex");
|
||||||
dom_node.remove_attribute("display");
|
let dom_node = node_ref.try_get::<DomNode>();
|
||||||
|
if dom_node.is_some() {
|
||||||
|
dom_node.unwrap().set_property("display",&jsval);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
let dom_node = node_ref.get::<DomNode>();
|
let jsval = wasm_bindgen::JsValue::from_str("none");
|
||||||
dom_node.set_attribute("display","none");
|
|
||||||
|
let dom_node = node_ref.try_get::<DomNode>();
|
||||||
|
if dom_node.is_some() {
|
||||||
|
dom_node.unwrap().set_property("display",&jsval);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
view! {cx,
|
view! {cx,
|
||||||
|
div(class="modal-box", ref=node_ref){
|
||||||
|
|
||||||
(if *app_state.displaying.get() == true {
|
(if *app_state.displaying.get() == true {
|
||||||
view!{ cx,
|
view!{ cx,
|
||||||
|
|
||||||
div(class="modal-box", ref=node_ref){
|
|
||||||
div(class="modal-content"){
|
div(class="modal-content"){
|
||||||
p{
|
p{
|
||||||
div(class="select-book"){
|
div(class="select-book"){
|
||||||
@@ -669,14 +707,15 @@ async fn SelectedUI<G: Html>(cx: Scope<'_>) -> View<G> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}}
|
||||||
}
|
else {
|
||||||
} else {
|
|
||||||
view!{cx,""}
|
view!{cx,""}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#[component]
|
#[component]
|
||||||
async fn PageBar<G: Html>(cx: Scope<'_>) -> View<G> {
|
async fn PageBar<G: Html>(cx: Scope<'_>) -> View<G> {
|
||||||
@@ -691,7 +730,7 @@ async fn PageBar<G: Html>(cx: Scope<'_>) -> View<G> {
|
|||||||
};
|
};
|
||||||
view! {cx,
|
view! {cx,
|
||||||
p {
|
p {
|
||||||
(if *app_state.openlibrary.get() == true || *app_state.internalsearch.get() == true {
|
(if *app_state.openlibrary.get() == false || *app_state.internalsearch.get() == true {
|
||||||
view!{ cx,
|
view!{ cx,
|
||||||
|
|
||||||
button(class="page", on:click=handle_sub){ "Page -" }
|
button(class="page", on:click=handle_sub){ "Page -" }
|
||||||
|
|||||||
Reference in New Issue
Block a user