add real db

This commit is contained in:
Romulus21
2024-10-04 13:58:26 +02:00
parent 72b65063be
commit c931845899
10 changed files with 147 additions and 30 deletions

View File

@@ -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
View 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,
}

View File

@@ -1,3 +1,4 @@
mod link;
mod value;
pub use value::Value;
pub use value::OPTIONS;

View File

@@ -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
View 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>
}
}

View File

@@ -1,3 +1,5 @@
pub use value::*;
mod link;
mod value;
pub use link::*;
pub use value::*;

View File

@@ -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>