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"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"common",
|
"common",
|
||||||
"diesel",
|
"gloo-net",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
"yew",
|
"yew",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -23,4 +23,3 @@ pub struct CommonDriver {
|
|||||||
pub name: String,
|
pub name: String,
|
||||||
pub address: String,
|
pub address: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,4 +8,19 @@ edition = "2021"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
yew = { version = "0.20.0", features = ["csr"] }
|
yew = { version = "0.20.0", features = ["csr"] }
|
||||||
common = { path = "../common"}
|
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 yew::prelude::*;
|
||||||
use common::CommonTicket;
|
|
||||||
|
use crate::fetching::UseAble;
|
||||||
|
|
||||||
#[function_component]
|
#[function_component]
|
||||||
fn App() -> Html {
|
fn App() -> Html {
|
||||||
let counter = use_state(|| 0);
|
let stdnts = vec![
|
||||||
let onclick = {
|
Stdnt {
|
||||||
let counter = counter.clone();
|
id: 1,
|
||||||
move |_| {
|
name: "Hamada".to_string(),
|
||||||
let value = *counter + 1;
|
email: "Hamada@Gmail.com".to_string(),
|
||||||
counter.set(value);
|
gpa: 3.4,
|
||||||
}
|
},
|
||||||
};
|
Stdnt {
|
||||||
|
id: 2,
|
||||||
let stdnts = vec! [
|
name: "Gamal".to_string(),
|
||||||
Stdnt {
|
email: "Gamal@Gmail.com".to_string(),
|
||||||
id: 1,
|
gpa: 4.0,
|
||||||
name: "Hamada".to_string(),
|
},
|
||||||
email: "Hamada@Gmail.com".to_string(),
|
Stdnt {
|
||||||
gpa: 3.4
|
id: 3,
|
||||||
},
|
name: "Joe".to_string(),
|
||||||
Stdnt {
|
email: "joe@proton.mail".to_string(),
|
||||||
id: 2,
|
gpa: 3.8,
|
||||||
name: "Gamal".to_string(),
|
},
|
||||||
email: "Gamal@Gmail.com".to_string(),
|
];
|
||||||
gpa: 4.0
|
let driver_comp = fetch_person();
|
||||||
},
|
let stdnts_comp = stdnts
|
||||||
Stdnt {
|
.iter()
|
||||||
id: 3,
|
.map(|stdnt| {
|
||||||
name: "Joe".to_string(),
|
html! {
|
||||||
email: "joe@proton.mail".to_string(),
|
<>
|
||||||
gpa: 3.8
|
<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>
|
||||||
let stdnts_comp = stdnts.iter().map(|stdnt| html! {
|
<br/>
|
||||||
<>
|
</>
|
||||||
<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>
|
.collect::<Html>();
|
||||||
<br/>
|
|
||||||
</>
|
|
||||||
}).collect::<Html>();
|
|
||||||
|
|
||||||
html! {
|
html! {
|
||||||
<div>
|
<div>
|
||||||
<button {onclick}>{ "+1" }</button>
|
|
||||||
<p>{ *counter }</p>
|
|
||||||
<h2> { "Students:" } </h2>
|
<h2> { "Students:" } </h2>
|
||||||
<p> { stdnts_comp } </p>
|
<p> { stdnts_comp } </p>
|
||||||
|
// <p> { driver_comp } </p>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -55,6 +57,18 @@ struct Stdnt {
|
|||||||
gpa: f32,
|
gpa: f32,
|
||||||
email: String,
|
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() {
|
fn main() {
|
||||||
yew::Renderer::<App>::new().render();
|
yew::Renderer::<App>::new().render();
|
||||||
|
|||||||
@@ -6,9 +6,7 @@ use actix_web::{
|
|||||||
use backend::{
|
use backend::{
|
||||||
admin_data::get_admin, driver_data::get_driver, establish_connection, ticket_data::get_ticket,
|
admin_data::get_admin, driver_data::get_driver, establish_connection, ticket_data::get_ticket,
|
||||||
};
|
};
|
||||||
use common::CommonAdmin;
|
use common::{CommonAdmin, CommonDriver, CommonTicket};
|
||||||
use common::CommonDriver;
|
|
||||||
use common::CommonTicket;
|
|
||||||
|
|
||||||
// //Admin Services
|
// //Admin Services
|
||||||
// #[get("/api/admin/{id}")]
|
// #[get("/api/admin/{id}")]
|
||||||
|
|||||||
Reference in New Issue
Block a user