Added settings for company info. Added code for entity validation.

This commit is contained in:
2023-09-08 11:53:08 +02:00
parent 44b8b21426
commit 9dd0993204
18 changed files with 488 additions and 20 deletions
+119
View File
@@ -0,0 +1,119 @@
use crate::backend::data::Company;
use crate::backend::company::UpdateCompany;
use crate::components::modal_box::{
DialogOpener, DlgNotLoaded, ModalBody, ModalDialog, ModalFooter,
};
use crate::components::server_err::ServerErr;
use crate::locales::trl;
use crate::validator::Validator;
use leptos::*;
use leptos_router::*;
use crate::components::validation_err::ValidationErr;
#[component]
pub fn CompanyEdit(
cx: Scope,
company: ReadSignal<Option<Company>>,
opener: DialogOpener,
) -> impl IntoView {
view! {cx,
{move ||
if let Some(c) = company.get() {
let update_company = create_server_action::<UpdateCompany>(cx);
let upd_val = update_company.value();
let validator = Validator::new(cx);
view! {cx,
<ActionForm
on:submit=move |ev| {
let act = UpdateCompany::from_event(&ev);
if !act.is_err() {
validator.check(&act.unwrap().company, &ev);
}
}
action=update_company>
<ModalDialog opener=opener title="Edit company">
<ModalBody>
<ServerErr result={upd_val} opener=opener/>
<ValidationErr validator=validator />
<input type="hidden" value=c.id() name="company[id]"/>
<div class="row">
<div class="col mb-3">
<label for="nameWithTitle" class="form-label">"Name"</label>
<input
type="text"
id="nameWithTitle"
class="form-control"
placeholder="Enter Name"
value=c.name
name="company[name]"
/>
</div>
</div>
<div class="row">
<div class="col mb-3">
<label for="street" class="form-label">"Street"</label>
<input
type="text"
id="street"
class="form-control"
placeholder="Enter Street"
value=c.street
name="company[street]"
/>
</div>
<div class="col-4 mb-3">
<label for="houseNumber" class="form-label">"House number"</label>
<input
type="text"
id="houseNumber"
class="form-control"
placeholder="Enter House number"
value=c.house_number
name="company[house_number]"
/>
</div>
</div>
<div class="row">
<div class="col-4 mb-3">
<label for="zip" class="form-label">"ZIP code"</label>
<input
type="text"
id="zip"
class="form-control"
placeholder="Enter ZIP code"
value=c.zip_code
name="company[zip_code]"
/>
</div>
<div class="col mb-3">
<label for="city" class="form-label">"City"</label>
<input
type="text"
id="city"
class="form-control"
placeholder="Enter City"
value=c.city
name="company[city]"
/>
</div>
</div>
</ModalBody>
<ModalFooter>
<button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal" on:click=move |_| opener.hide()>
{trl(cx, "Close")}
</button>
<button type="submit" class="btn btn-primary">
{trl(cx, "Save changes")}
</button>
</ModalFooter>
</ModalDialog>
</ActionForm>
}
} else {
view! {cx,
<DlgNotLoaded opener=opener title="Edit company" />
}
}
}
}
}