Before I nuke my life
This commit is contained in:
4
Cargo.lock
generated
4
Cargo.lock
generated
@@ -505,7 +505,9 @@ name = "db-frontend"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"common",
|
||||
"diesel",
|
||||
"gloo-net",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"yew",
|
||||
]
|
||||
|
||||
|
||||
@@ -23,4 +23,3 @@ pub struct CommonDriver {
|
||||
pub name: String,
|
||||
pub address: String,
|
||||
}
|
||||
|
||||
|
||||
@@ -8,4 +8,19 @@ edition = "2021"
|
||||
[dependencies]
|
||||
yew = { version = "0.20.0", features = ["csr"] }
|
||||
common = { path = "../common"}
|
||||
diesel = { version = "2.0.0",features = ["postgres","r2d2"] }
|
||||
gloo-net = {version = "0.2"}
|
||||
serde = { version = "1.0.126", features = ["derive"] }
|
||||
serde_json = "1.0.64"
|
||||
wasm-bindgen = "0.2"
|
||||
wasm-bindgen-futures = "0.4"
|
||||
|
||||
[dependencies.web-sys]
|
||||
version = "0.3"
|
||||
features = [
|
||||
"Headers",
|
||||
"Request",
|
||||
"RequestInit",
|
||||
"RequestMode",
|
||||
"Response",
|
||||
"Window",
|
||||
]
|
||||
|
||||
42
frontend/src/fetching.rs
Normal file
42
frontend/src/fetching.rs
Normal file
@@ -0,0 +1,42 @@
|
||||
use common::{CommonAdmin, CommonDriver};
|
||||
use yew::{html, Html};
|
||||
//Trait to handle Future yew HTMLS
|
||||
pub trait UseAble {
|
||||
//Return HTML if didn't fail return error if not
|
||||
fn use_it(self) -> Result<Html, String>;
|
||||
}
|
||||
impl UseAble for CommonDriver {
|
||||
fn use_it(self) -> Result<Html, String> {
|
||||
let name = self.name;
|
||||
let email = self.address;
|
||||
let id = self.id;
|
||||
let html = html! {
|
||||
<div>
|
||||
<h2> { "Driver:" } </h2>
|
||||
<p> { format!("Name: {}", name) } </p>
|
||||
<p> { format!("Email: {}", email) } </p>
|
||||
<p> { format!("ID: {}", id) } </p>
|
||||
</div>
|
||||
};
|
||||
Ok(html)
|
||||
}
|
||||
}
|
||||
impl UseAble for CommonAdmin {
|
||||
fn use_it(self) -> Result<Html, String> {
|
||||
let name = self.name;
|
||||
let email = self.address;
|
||||
let id = self.id;
|
||||
let html = html! {
|
||||
<div>
|
||||
<h2> { "Admin:" } </h2>
|
||||
<p> { format!("Name: {}", name) } </p>
|
||||
<p> { format!("Email: {}", email) } </p>
|
||||
<p> { format!("ID: {}", id) } </p>
|
||||
</div>
|
||||
};
|
||||
Ok(html)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,51 +1,53 @@
|
||||
mod fetching;
|
||||
use common::CommonDriver;
|
||||
use fetching::PrinteAble;
|
||||
use gloo_net::http::Request;
|
||||
use yew::prelude::*;
|
||||
use common::CommonTicket;
|
||||
|
||||
use crate::fetching::UseAble;
|
||||
|
||||
#[function_component]
|
||||
fn App() -> Html {
|
||||
let counter = use_state(|| 0);
|
||||
let onclick = {
|
||||
let counter = counter.clone();
|
||||
move |_| {
|
||||
let value = *counter + 1;
|
||||
counter.set(value);
|
||||
}
|
||||
};
|
||||
|
||||
let stdnts = vec! [
|
||||
Stdnt {
|
||||
id: 1,
|
||||
name: "Hamada".to_string(),
|
||||
email: "Hamada@Gmail.com".to_string(),
|
||||
gpa: 3.4
|
||||
},
|
||||
Stdnt {
|
||||
id: 2,
|
||||
name: "Gamal".to_string(),
|
||||
email: "Gamal@Gmail.com".to_string(),
|
||||
gpa: 4.0
|
||||
},
|
||||
Stdnt {
|
||||
id: 3,
|
||||
name: "Joe".to_string(),
|
||||
email: "joe@proton.mail".to_string(),
|
||||
gpa: 3.8
|
||||
}
|
||||
];
|
||||
let stdnts_comp = stdnts.iter().map(|stdnt| html! {
|
||||
<>
|
||||
<p key={stdnt.id}>{format!("Name: {}", stdnt.name)} </p>
|
||||
<p key={stdnt.id}>{format!("Email: {}", stdnt.email)} </p>
|
||||
<p key={stdnt.id}>{format!("GPA: {}",stdnt.gpa)} </p>
|
||||
<br/>
|
||||
</>
|
||||
}).collect::<Html>();
|
||||
let stdnts = vec![
|
||||
Stdnt {
|
||||
id: 1,
|
||||
name: "Hamada".to_string(),
|
||||
email: "Hamada@Gmail.com".to_string(),
|
||||
gpa: 3.4,
|
||||
},
|
||||
Stdnt {
|
||||
id: 2,
|
||||
name: "Gamal".to_string(),
|
||||
email: "Gamal@Gmail.com".to_string(),
|
||||
gpa: 4.0,
|
||||
},
|
||||
Stdnt {
|
||||
id: 3,
|
||||
name: "Joe".to_string(),
|
||||
email: "joe@proton.mail".to_string(),
|
||||
gpa: 3.8,
|
||||
},
|
||||
];
|
||||
let driver_comp = fetch_person();
|
||||
let stdnts_comp = stdnts
|
||||
.iter()
|
||||
.map(|stdnt| {
|
||||
html! {
|
||||
<>
|
||||
<p key={stdnt.id}>{format!("Name: {}", stdnt.name)} </p>
|
||||
<p key={stdnt.id}>{format!("Email: {}", stdnt.email)} </p>
|
||||
<p key={stdnt.id}>{format!("GPA: {}",stdnt.gpa)} </p>
|
||||
<br/>
|
||||
</>
|
||||
}
|
||||
})
|
||||
.collect::<Html>();
|
||||
|
||||
html! {
|
||||
<div>
|
||||
<button {onclick}>{ "+1" }</button>
|
||||
<p>{ *counter }</p>
|
||||
<h2> { "Students:" } </h2>
|
||||
<p> { stdnts_comp } </p>
|
||||
// <p> { driver_comp } </p>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
@@ -55,6 +57,18 @@ struct Stdnt {
|
||||
gpa: f32,
|
||||
email: String,
|
||||
}
|
||||
//testing this rn
|
||||
//Component that returns HTML from json fetched from Api yes :D
|
||||
async fn fetch_person() -> Html {
|
||||
let resp = Request::get("http://libkyy.cf/api/driver/1234")
|
||||
.send()
|
||||
.await
|
||||
.unwrap();
|
||||
assert_eq!(resp.status(), 200);
|
||||
let driver: CommonDriver = resp.json().await.unwrap();
|
||||
let result = driver.use_it();
|
||||
return result;
|
||||
}
|
||||
|
||||
fn main() {
|
||||
yew::Renderer::<App>::new().render();
|
||||
|
||||
@@ -6,9 +6,7 @@ use actix_web::{
|
||||
use backend::{
|
||||
admin_data::get_admin, driver_data::get_driver, establish_connection, ticket_data::get_ticket,
|
||||
};
|
||||
use common::CommonAdmin;
|
||||
use common::CommonDriver;
|
||||
use common::CommonTicket;
|
||||
use common::{CommonAdmin, CommonDriver, CommonTicket};
|
||||
|
||||
// //Admin Services
|
||||
// #[get("/api/admin/{id}")]
|
||||
|
||||
Reference in New Issue
Block a user