add real db
This commit is contained in:
@@ -13,15 +13,17 @@ pub fn App() -> impl IntoView {
|
||||
|
||||
<Title text="Welcome to Leptos"/>
|
||||
|
||||
<div class="dark:bg-slate-950 dark:text-white h-screen flex flex-col">
|
||||
<div class="dark:bg-black dark:text-lime-500 dark:hover:text-lime-400 h-screen flex flex-col">
|
||||
<Router>
|
||||
<nav class="flex gap-5 px-2 py-1 ">
|
||||
<a href="/">Home</a>
|
||||
<A href="/liens">Liens</A>
|
||||
<a href="/formulaire">Formulaire</a>
|
||||
</nav>
|
||||
<main class="flex-1">
|
||||
<Routes>
|
||||
<Route path="/" view=move || view! { <Home/> }/>
|
||||
<Route path="/liens" view=move || view! { <Links/> }/>
|
||||
<Route path="/formulaire" view=move || view! { <FormValues/> }/>
|
||||
//<Route path="/*any" view=move || view! { <NotFound/> }/>
|
||||
</Routes>
|
||||
|
||||
8
src/models/link.rs
Normal file
8
src/models/link.rs
Normal file
@@ -0,0 +1,8 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct Link {
|
||||
id: u16,
|
||||
link: String,
|
||||
name: String,
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
mod link;
|
||||
mod value;
|
||||
pub use value::Value;
|
||||
pub use value::OPTIONS;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
use chrono::prelude::*;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Debug)]
|
||||
@@ -62,7 +61,7 @@ impl Value {
|
||||
};
|
||||
|
||||
sqlx::query!(
|
||||
"INSERT INTO data(service, device, type, data, date_data) VALUES (?, ?, ?, ?, NOW())",
|
||||
"INSERT INTO donnees(service, capteur, type, donnee, date_donnee) VALUES (?, ?, ?, ?, NOW())",
|
||||
option.service,
|
||||
option.device,
|
||||
option.r_type,
|
||||
|
||||
22
src/routes/link.rs
Normal file
22
src/routes/link.rs
Normal file
@@ -0,0 +1,22 @@
|
||||
use leptos::*;
|
||||
//use leptos_meta::*;
|
||||
use leptos_router::*;
|
||||
|
||||
#[component]
|
||||
pub fn Links() -> impl IntoView {
|
||||
view! {
|
||||
<ul class="flex gap-5 mt-5 justify-center">
|
||||
<Link link="aa".to_string() name="Mon Lien".to_string() />
|
||||
<Link link="aa".to_string() name="mon lien 2".to_string() />
|
||||
</ul>
|
||||
}
|
||||
}
|
||||
|
||||
#[component]
|
||||
fn Link(link: String, name: String) -> impl IntoView {
|
||||
view! {
|
||||
<li>
|
||||
<a class="border border-lime-500 bg-lime-500 hover:bg-lime-400 text-black px-3 py-2 inline-block" href=link>{name}</a>
|
||||
</li>
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
pub use value::*;
|
||||
|
||||
mod link;
|
||||
mod value;
|
||||
|
||||
pub use link::*;
|
||||
pub use value::*;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use leptos::*;
|
||||
use leptos_meta::*;
|
||||
//use leptos_meta::*;
|
||||
use leptos_router::*;
|
||||
|
||||
use crate::models::OPTIONS;
|
||||
@@ -19,31 +19,29 @@ pub async fn add_value(device: String, value: String) -> Result<(), ServerFnErro
|
||||
#[component]
|
||||
pub fn FormValues() -> impl IntoView {
|
||||
let value_action = create_server_action::<ValueAction>();
|
||||
let result = value_action.version();
|
||||
let reset_value = create_rw_signal("");
|
||||
//let add_value = ServerAction::<AddValue>::new();
|
||||
//let value = add_value.value();
|
||||
//let has_error = move || value.with(|val| matches!(val, Some(Err(_))));
|
||||
let value = value_action.value();
|
||||
let has_error = move || value.with(|val| matches!(val, Some(Err(_))));
|
||||
|
||||
view! {
|
||||
<div class="my-0 mx-auto max-w-3xl text-center">
|
||||
<div class="my-0 mx-auto w-72 text-center">
|
||||
<h2 class="p-6 text-4xl">"Formulaire"</h2>
|
||||
|
||||
<ActionForm action=value_action attr:class="border">
|
||||
<ActionForm action=value_action attr:class="border border-lime-500">
|
||||
<div>
|
||||
<label class="block">Capteur</label>
|
||||
<select name="device" class="dark:bg-slate-800 px-2 py-1">
|
||||
<label class="block mt-5 mb-1">Capteur</label>
|
||||
<select name="device" class="w-60 dark:bg-slate-800 px-2 py-2">
|
||||
{OPTIONS.into_iter()
|
||||
.map(|option| view! { <option value={option.value}>{option.name}</option>})
|
||||
.map(|option| view! { <option value={option.value} class="px-2 py-1">{option.name}</option>})
|
||||
.collect::<Vec<_>>()}
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block">Valeur</label>
|
||||
<input type="text" name="value" prop:value=move || reset_value.get() class="text-center dark:bg-slate-800 dark:text-white px-2 py-1" />
|
||||
<label class="block mt-3 mb-1">Valeur</label>
|
||||
<input type="text" name="value" type="number"
|
||||
class="text-center dark:bg-slate-800 focus:border-lime-500 dark:text-white px-2 py-2 w-60" />
|
||||
</div>
|
||||
<div>
|
||||
<button type="submit" class="bg-slate-600 px-2 py-1 w-48 mt-3">Valider</button>
|
||||
<button type="submit" class="bg-lime-500 hover:bg-lime-400 text-black px-2 py-1 w-60 my-5">Valider</button>
|
||||
</div>
|
||||
</ActionForm>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user