servers on backend

This commit is contained in:
2025-07-13 23:09:05 +02:00
parent cc0a181f3f
commit 9ec2b535b8
5 changed files with 64 additions and 45 deletions
Generated
+1
View File
@@ -3643,6 +3643,7 @@ dependencies = [
"dioxus", "dioxus",
"js-sys", "js-sys",
"lucide-dioxus", "lucide-dioxus",
"serde",
"wasm-bindgen", "wasm-bindgen",
"web-sys", "web-sys",
] ]
+1
View File
@@ -12,6 +12,7 @@ js-sys = "0.3.77"
lucide-dioxus = { version = "2.15.0", features = ["all-icons"] } lucide-dioxus = { version = "2.15.0", features = ["all-icons"] }
wasm-bindgen = "0.2.100" wasm-bindgen = "0.2.100"
web-sys = "0.3.77" web-sys = "0.3.77"
serde = { version = "1.0.61", features = ["derive"]}
[features] [features]
default = ["web"] default = ["web"]
+44
View File
@@ -1,6 +1,50 @@
use dioxus::prelude::*; use dioxus::prelude::*;
use crate::components::server::Server;
#[server] #[server]
pub async fn log_in(username: String, password: String) -> Result<String, ServerFnError> { pub async fn log_in(username: String, password: String) -> Result<String, ServerFnError> {
Ok(format!("{username}@{password}")) Ok(format!("{username}@{password}"))
} }
#[server]
pub async fn get_servers() -> Result<Vec<Server>, ServerFnError> {
Ok(vec![
Server {
name: "Main Server".to_string(),
status: crate::components::server::Status::Online,
ip: "10.0.0.5".to_string(),
cpu: 95,
memory: 60,
storage: 43,
network: 88,
},
Server {
name: "Cache Node".to_string(),
status: crate::components::server::Status::Warning,
ip: "192.168.1.12".to_string(),
cpu: 47,
memory: 72,
storage: 81,
network: 34,
},
Server {
name: "Database".to_string(),
status: crate::components::server::Status::Offline,
ip: "172.16.254.3".to_string(),
cpu: 12,
memory: 90,
storage: 22,
network: 10,
},
Server {
name: "Backup Node".to_string(),
status: crate::components::server::Status::Maintenance,
ip: "192.168.100.22".to_string(),
cpu: 83,
memory: 41,
storage: 96,
network: 70,
},
])
}
+2 -2
View File
@@ -3,7 +3,7 @@ use dioxus::prelude::*;
const SERVER_CSS: Asset = asset!("/assets/styles/server.css"); const SERVER_CSS: Asset = asset!("/assets/styles/server.css");
#[derive(Debug, Clone, PartialEq, Eq)] #[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum Status { pub enum Status {
Online, Online,
Offline, Offline,
@@ -11,7 +11,7 @@ pub enum Status {
Maintenance, Maintenance,
} }
#[derive(Debug, Clone, PartialEq, Eq)] #[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct Server { pub struct Server {
pub name: String, pub name: String,
pub status: Status, pub status: Status,
+16 -43
View File
@@ -1,9 +1,8 @@
use dioxus::prelude::*; use dioxus::prelude::*;
use crate::components::{ use crate::{
server::{Server, ServerComponent}, backend,
sidebar::SideBar, components::{server::ServerComponent, sidebar::SideBar, LineChart, ProgressBar},
LineChart, ProgressBar,
}; };
use lucide_dioxus; use lucide_dioxus;
@@ -11,6 +10,14 @@ const DASHBOARD_CSS: Asset = asset!("/assets/styles/dashboard.css");
#[component] #[component]
pub fn Dashboard() -> Element { pub fn Dashboard() -> Element {
let servers = use_resource(move || async move {
if let Ok(v) = backend::get_servers().await {
v
} else {
Vec::new()
}
});
rsx! { rsx! {
document::Link { rel: "stylesheet", href: DASHBOARD_CSS } document::Link { rel: "stylesheet", href: DASHBOARD_CSS }
@@ -104,45 +111,11 @@ pub fn Dashboard() -> Element {
} }
div { class: "server-container", div { class: "server-container",
ServerComponent { server: Server { if let Some(ss) = servers.read().clone() {
name: "Main Server".to_string(), for s in ss {
status: crate::components::server::Status::Online, ServerComponent { server: s }
ip: "10.0.0.5".to_string(), }
cpu: 95, }
memory: 60,
storage: 43,
network: 88,
} }
ServerComponent { server: Server {
name: "Cache Node".to_string(),
status: crate::components::server::Status::Warning,
ip: "192.168.1.12".to_string(),
cpu: 47,
memory: 72,
storage: 81,
network: 34,
} }
ServerComponent { server: Server {
name: "Database".to_string(),
status: crate::components::server::Status::Offline,
ip: "172.16.254.3".to_string(),
cpu: 12,
memory: 90,
storage: 22,
network: 10,
} }
ServerComponent { server: Server {
name: "Backup Node".to_string(),
status: crate::components::server::Status::Maintenance,
ip: "192.168.100.22".to_string(),
cpu: 83,
memory: 41,
storage: 96,
network: 70,
} }
} }
} }
} }