From 9a9f92ed95255bde10200a2fde0f02ebcd33169e Mon Sep 17 00:00:00 2001 From: Dmitry Date: Thu, 13 Nov 2025 14:25:51 +0300 Subject: [PATCH] frontend: create_config: use InputValue + more params --- .../src/components/pages/create_config.rs | 71 ++++++++++++++++--- 1 file changed, 63 insertions(+), 8 deletions(-) diff --git a/frontend/src/components/pages/create_config.rs b/frontend/src/components/pages/create_config.rs index 042a22c..70f0d0c 100644 --- a/frontend/src/components/pages/create_config.rs +++ b/frontend/src/components/pages/create_config.rs @@ -2,16 +2,23 @@ use gloo::net::http::Request; use serde::{Deserialize, Serialize}; use wasm_bindgen_futures::spawn_local; use yew::prelude::*; +use yewlish_checkbox::*; use crate::{ api::APIEndpoints, - components::{alerts::ErrorAlert, pages::config::Config}, + components::{alerts::ErrorAlert, input_value::InputValue, pages::config::Config}, }; #[derive(Serialize, Deserialize, Clone, Debug)] struct GenerationRequest { directory: String, common_name: String, + #[serde(default)] + email: String, + #[serde(default)] + days: u32, + #[serde(default)] + use_openssl: Option, } #[derive(Properties, PartialEq)] @@ -23,6 +30,10 @@ pub struct GenerateProps { pub fn create_config(props: &GenerateProps) -> Html { let dir_name = props.dir.clone(); let config_name = use_state(|| "".to_string()); + let email = use_state(|| "".to_string()); + let days: UseStateHandle = use_state(|| 0); + let use_openssl: UseStateHandle> = use_state(|| None); + let result = use_state(|| "".to_string()); let error = use_state(|| "".to_string()); let done = use_state(|| false); @@ -30,6 +41,10 @@ pub fn create_config(props: &GenerateProps) -> Html { let generate_config_request = { let dir_name = dir_name.clone(); let config_name = config_name.clone(); + let email = email.clone(); + let days = days.clone(); + let use_openssl = use_openssl.clone(); + let done = done.clone(); let result = result.clone(); let error = error.clone(); @@ -37,6 +52,9 @@ pub fn create_config(props: &GenerateProps) -> Html { let request_body = GenerationRequest { directory: dir_name.clone().to_string(), common_name: config_name.clone().to_string(), + email: email.clone().to_string(), + days: *days.clone(), + use_openssl: *use_openssl.clone(), }; let json_payload = serde_json::to_string(&request_body).unwrap(); let result = result.clone(); @@ -69,21 +87,58 @@ pub fn create_config(props: &GenerateProps) -> Html { <> if !*done.clone() {
-
-
+
{format!("Создание конфигурации для {}:", props.dir.clone())}
-
- - ().unwrap(); config_name.set(input.value()); } - })} /> + }) + } /> + ().unwrap(); + email.set(input.value()); + } + }) + } /> + ().unwrap(); + days.set(input.value().parse().unwrap_or_default()); + } + }) + } /> + +
+
+