diff --git a/frontend/src/pages/ticket.rs b/frontend/src/pages/ticket.rs index 4dc9e9a..1031df4 100644 --- a/frontend/src/pages/ticket.rs +++ b/frontend/src/pages/ticket.rs @@ -170,10 +170,25 @@ pub fn submit_ticket_component() -> Html { let valid_rooms: HashSet = VALID_ROOMS.iter().copied().collect(); { - let message = "Bevor sie zum Support weitergeleitet werden prüfen sie ob: \r\n - Ob das Problem durch Neustarten gelößt wird \r\n - Ob sie die richtigen Anmeldedaten genutzt habem \r\n - Alle notwendigen Kabel eingesteckt sind".to_string(); + let message = "Bevor sie zum Support weitergeleitet werden prüfen sie ob: +- Ob das Problem durch Neustarten gelößt wird +- Ob sie die richtigen Anmeldedaten genutzt habem +- Alle notwendigen Kabel eingesteckt sind + +Wenn es funktioniert hat klicken sie bitte \"Abbrechen\"" + .to_string(); use_effect(move || { if let Some(win) = web_sys::window() { - let _ = win.alert_with_message(&message); + let _ = if win.confirm_with_message(&message).unwrap() { + } else { + spawn_local(async move { + let _ = Request::post("/api/count") + .credentials(web_sys::RequestCredentials::Include) + .send() + .await; + }); + let _ = win.location().set_href("/"); + }; } || () }); diff --git a/frontend/src/pages/utilities.rs b/frontend/src/pages/utilities.rs index 968f840..c6ff17d 100644 --- a/frontend/src/pages/utilities.rs +++ b/frontend/src/pages/utilities.rs @@ -17,6 +17,11 @@ use crate::pages::ticket::{ActiveUser, Ticket}; /// # Fields /// - `date`: The creation date and time of the ticket in UTC. /// - `room`: The room number associated with the ticket. +#[derive(Deserialize)] +struct CountResponse { + value: i64, +} + #[derive(Debug, Deserialize, Clone, PartialEq)] struct TicketPartial { date: DateTime, @@ -186,6 +191,7 @@ pub fn diagnostics_component() -> Html { html! {
+
} @@ -575,3 +581,45 @@ fn user_total_component(props: &UserTotalProps) -> Html { } } + +#[component(EasyFixCount)] +fn easy_fix_component() -> Html { + let count = use_state(|| 0); + let error = use_state(|| None::); + + { + let count = count.clone(); + let error = error.clone(); + + use_effect_with((), move |_| { + spawn_local(async move { + match Request::get("/api/count").send().await { + Ok(resp) if resp.status() == 200 => match resp.json::().await { + Ok(r) => count.set(r.value), + Err(e) => error.set(Some(format!("parse error: {}", e))), + }, + Ok(resp) => error.set(Some( + resp.text() + .await + .unwrap_or_else(|_| format!("status {}", resp.status())), + )), + Err(e) => error.set(Some(format!("Network error: {}", e))), + } + }); + || () + }); + } + html! { +
+

{ "Probleme ohne Ticket gelößt" }

+

{ *count }

+ { + if let Some(e) = &*error { + html!{

{ e.clone() }

} + } else { + html!{} + } + } +
+ } +}