Added czech translations. UI tweak on booking form.

main
Josef Rokos 1 year ago
parent 549ec86684
commit 2907aa8ba7

@ -249,8 +249,6 @@ button.list-group-item-primary.active {
transform: translateY(-1px); transform: translateY(-1px);
} }
.btn-check:focus + .btn-outline-primary, .btn-outline-primary:focus { .btn-check:focus + .btn-outline-primary, .btn-outline-primary:focus {
color: #fff;
background-color: #5f61e6;
border-color: #5f61e6; border-color: #5f61e6;
box-shadow: none; box-shadow: none;
transform: translateY(0); transform: translateY(0);

@ -303,6 +303,17 @@ pub enum SlotType {
Day Day
} }
impl Display for SlotType {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", match self {
SlotType::Quarter => {"Quarter an hour"}
SlotType::Half => {"Half an hour"}
SlotType::Hour => {"Hour"}
SlotType::Day => {"Day"}
})
}
}
fn def_true() -> bool { fn def_true() -> bool {
true true
} }

@ -99,7 +99,39 @@ lazy_static! {
("Approved", "Potvrzená"), ("Approved", "Potvrzená"),
("Canceled", "Zrušená"), ("Canceled", "Zrušená"),
("Booking detail", "Detail rezervace"), ("Booking detail", "Detail rezervace"),
("State", "Stav") ("State", "Stav"),
("Date can't be in past", "Datum nesmí být v minulosti"),
("Enter your username", "Zadejte své uživatelské jméno"),
("Hours must be in HH:MM - HH:MM format", "Hodiny musí být zadány ve tvaru HH:MM - HH:MM"),
("Edit profile", "Upravit profil"),
("Get emails", "Dostávat e-maily"),
("Enter username", "Zadejte uživatelské jméno"),
("Verify password", "Ověření hesla"),
("Enter email", "Zadejte e-mail"),
("Old password", "Staré heslo"),
("New password", "Nové heslo"),
("Enter new password", "Zadejte nové heslo"),
("Passwords doesn't match", "Hesla se neshodují"),
("Edit company", "Upravit organizaci"),
("Enter Name", "Zadejte jméno"),
("Enter Street", "Zadejte ulici"),
("Enter House number", "Číslo domu"),
("Enter ZIP code", "Zadejte PSČ"),
("Enter City", "Zadejte město"),
("Street", "Ulice"),
("House number", "Číslo domu"),
("ZIP code", "PSČ"),
("City", "Město"),
("Edit property", "Upravit předmět"),
("Quarter an hour", "Čtvrthodna"),
("Half an hour", "Půlhodina"),
("Hour", "Hodina"),
("Day", "Den"),
("Time slot", "Časový slot"),
("Active", "Aktivní"),
("Are you sure you want to delete property ", "Opravdu chcete smazat předmět "),
("Delete property", "Smazat předmět"),
("Are you sure you want to delete user ", "Opravdu chcete smazat uživatele ")
])), ])),
("sk", HashMap::from( [ ("sk", HashMap::from( [
("Dashboard", "Prehlad"), ("Dashboard", "Prehlad"),

@ -3,6 +3,7 @@ use crate::backend::data::User;
use crate::backend::user::{ChangePwd, get_user}; use crate::backend::user::{ChangePwd, get_user};
use crate::components::data_form::DataForm; use crate::components::data_form::DataForm;
use crate::components::modal_box::DialogOpener; use crate::components::modal_box::DialogOpener;
use crate::locales::trl;
#[component] #[component]
pub fn change_password(user: ReadSignal<User>, opener: DialogOpener) -> impl IntoView { pub fn change_password(user: ReadSignal<User>, opener: DialogOpener) -> impl IntoView {
@ -24,7 +25,7 @@ pub fn change_password(user: ReadSignal<User>, opener: DialogOpener) -> impl Int
Err(_) => "" Err(_) => ""
}}) }})
}}> }}>
<label for="oldPw" class="form-label">"Old password"</label> <label for="oldPw" class="form-label">{trl("Old password")}</label>
<input <input
type="password" type="password"
id="oldPw" id="oldPw"
@ -37,7 +38,7 @@ pub fn change_password(user: ReadSignal<User>, opener: DialogOpener) -> impl Int
</Suspense> </Suspense>
<div class="row"> <div class="row">
<div class="col mb-3"> <div class="col mb-3">
<label for="newPw" class="form-label">"New password"</label> <label for="newPw" class="form-label">{trl("New password")}</label>
<input <input
type="password" type="password"
id="newPw" id="newPw"
@ -49,7 +50,7 @@ pub fn change_password(user: ReadSignal<User>, opener: DialogOpener) -> impl Int
</div> </div>
<div class="row"> <div class="row">
<div class="col mb-3"> <div class="col mb-3">
<label for="verPw" class="form-label">"Verify password"</label> <label for="verPw" class="form-label">{trl("Verify password")}</label>
<input <input
type="password" type="password"
id="verPw" id="verPw"

@ -3,6 +3,7 @@ use crate::backend::company::UpdateCompany;
use crate::components::modal_box::DialogOpener; use crate::components::modal_box::DialogOpener;
use leptos::*; use leptos::*;
use crate::components::data_form::DataForm; use crate::components::data_form::DataForm;
use crate::locales::trl;
#[component] #[component]
pub fn CompanyEdit( pub fn CompanyEdit(
@ -16,12 +17,12 @@ pub fn CompanyEdit(
<input type="hidden" value={move || company.get().id()} name="company[id]"/> <input type="hidden" value={move || company.get().id()} name="company[id]"/>
<div class="row"> <div class="row">
<div class="col mb-3"> <div class="col mb-3">
<label for="nameWithTitle" class="form-label">"Name"</label> <label for="nameWithTitle" class="form-label">{trl("Name")}</label>
<input <input
type="text" type="text"
id="nameWithTitle" id="nameWithTitle"
class="form-control" class="form-control"
placeholder="Enter Name" placeholder={trl("Enter Name")}
prop:value={move || company.get().name} prop:value={move || company.get().name}
name="company[name]" name="company[name]"
/> />
@ -29,23 +30,23 @@ pub fn CompanyEdit(
</div> </div>
<div class="row"> <div class="row">
<div class="col mb-3"> <div class="col mb-3">
<label for="street" class="form-label">"Street"</label> <label for="street" class="form-label">{trl("Street")}</label>
<input <input
type="text" type="text"
id="street" id="street"
class="form-control" class="form-control"
placeholder="Enter Street" placeholder={trl("Enter Street")}
prop:value={move || company.get().street} prop:value={move || company.get().street}
name="company[street]" name="company[street]"
/> />
</div> </div>
<div class="col-4 mb-3"> <div class="col-4 mb-3">
<label for="houseNumber" class="form-label">"House number"</label> <label for="houseNumber" class="form-label">{trl("House number")}</label>
<input <input
type="text" type="text"
id="houseNumber" id="houseNumber"
class="form-control" class="form-control"
placeholder="Enter House number" placeholder={trl("Enter House number")}
prop:value={move || company.get().house_number} prop:value={move || company.get().house_number}
name="company[house_number]" name="company[house_number]"
/> />
@ -53,23 +54,23 @@ pub fn CompanyEdit(
</div> </div>
<div class="row"> <div class="row">
<div class="col-4 mb-3"> <div class="col-4 mb-3">
<label for="zip" class="form-label">"ZIP code"</label> <label for="zip" class="form-label">{trl("ZIP code")}</label>
<input <input
type="text" type="text"
id="zip" id="zip"
class="form-control" class="form-control"
placeholder="Enter ZIP code" placeholder={trl("Enter ZIP code")}
prop:value={move || company.get().zip_code} prop:value={move || company.get().zip_code}
name="company[zip_code]" name="company[zip_code]"
/> />
</div> </div>
<div class="col mb-3"> <div class="col mb-3">
<label for="city" class="form-label">"City"</label> <label for="city" class="form-label">{trl("City")}</label>
<input <input
type="text" type="text"
id="city" id="city"
class="form-control" class="form-control"
placeholder="Enter City" placeholder={trl("Enter City")}
prop:value={move || company.get().city} prop:value={move || company.get().city}
name="company[city]" name="company[city]"
/> />

@ -3,6 +3,7 @@ use crate::backend::data::WeekHours;
use crate::backend::opening_hours::UpdateHours; use crate::backend::opening_hours::UpdateHours;
use crate::components::data_form::DataForm; use crate::components::data_form::DataForm;
use crate::components::modal_box::DialogOpener; use crate::components::modal_box::DialogOpener;
use crate::locales::trl;
#[component] #[component]
pub fn EditHours(opener: DialogOpener, hours: ReadSignal<WeekHours>) -> impl IntoView { pub fn EditHours(opener: DialogOpener, hours: ReadSignal<WeekHours>) -> impl IntoView {
@ -13,7 +14,7 @@ pub fn EditHours(opener: DialogOpener, hours: ReadSignal<WeekHours>) -> impl Int
<input type="hidden" value={move || hours.get().day().to_string()} name="hours[day]"/> <input type="hidden" value={move || hours.get().day().to_string()} name="hours[day]"/>
<div class="row"> <div class="row">
<div class="col mb-3"> <div class="col mb-3">
<label for="hours" class="form-label">"Hours"</label> <label for="hours" class="form-label">{trl("Hours")}</label>
<input <input
type="text" type="text"
id="hours" id="hours"

@ -3,6 +3,7 @@ use crate::backend::data::User;
use crate::backend::user::{get_user, UpdateProfile}; use crate::backend::user::{get_user, UpdateProfile};
use crate::components::data_form::DataForm; use crate::components::data_form::DataForm;
use crate::components::modal_box::DialogOpener; use crate::components::modal_box::DialogOpener;
use crate::locales::trl;
#[component] #[component]
pub fn ProfileEdit(user: ReadSignal<User>, opener: DialogOpener) -> impl IntoView { pub fn ProfileEdit(user: ReadSignal<User>, opener: DialogOpener) -> impl IntoView {
@ -14,12 +15,12 @@ pub fn ProfileEdit(user: ReadSignal<User>, opener: DialogOpener) -> impl IntoVie
<input type="hidden" prop:value={move || user.get().login} name="user[login]"/> <input type="hidden" prop:value={move || user.get().login} name="user[login]"/>
<div class="row"> <div class="row">
<div class="col mb-3"> <div class="col mb-3">
<label for="name" class="form-label">"Full name"</label> <label for="name" class="form-label">{trl("Full name")}</label>
<input <input
type="text" type="text"
id="name" id="name"
class="form-control" class="form-control"
placeholder="Enter Full name" placeholder={trl("Enter full name")}
prop:value={move || user.get().full_name} prop:value={move || user.get().full_name}
name="user[full_name]" name="user[full_name]"
/> />
@ -32,7 +33,7 @@ pub fn ProfileEdit(user: ReadSignal<User>, opener: DialogOpener) -> impl IntoVie
type="text" type="text"
id="name" id="name"
class="form-control" class="form-control"
placeholder="Enter email" placeholder={trl("Enter email")}
prop:value={move || user.get().email.unwrap_or("".to_string())} prop:value={move || user.get().email.unwrap_or("".to_string())}
name="user[email]" name="user[email]"
/> />
@ -48,7 +49,7 @@ pub fn ProfileEdit(user: ReadSignal<User>, opener: DialogOpener) -> impl IntoVie
prop:checked={move || user.get().get_emails} prop:checked={move || user.get().get_emails}
name="user[get_emails]" name="user[get_emails]"
/> />
<label class="form-check-label" for="getMail">"Get emails"</label> <label class="form-check-label" for="getMail">{trl("Get emails")}</label>
</div> </div>
</div> </div>
<Suspense fallback=move || view! {<div></div>}> <Suspense fallback=move || view! {<div></div>}>

@ -3,6 +3,7 @@ use crate::backend::data::ResProperty;
use crate::backend::property::DeleteProperty; use crate::backend::property::DeleteProperty;
use crate::components::data_form::QuestionDialog; use crate::components::data_form::QuestionDialog;
use crate::components::modal_box::DialogOpener; use crate::components::modal_box::DialogOpener;
use crate::locales::trl;
#[component] #[component]
pub fn property_delete(property: ReadSignal<ResProperty>, opener: DialogOpener) -> impl IntoView { pub fn property_delete(property: ReadSignal<ResProperty>, opener: DialogOpener) -> impl IntoView {
@ -11,7 +12,7 @@ pub fn property_delete(property: ReadSignal<ResProperty>, opener: DialogOpener)
view! { view! {
<QuestionDialog opener=opener action=del_property title="Delete property"> <QuestionDialog opener=opener action=del_property title="Delete property">
<input type="hidden" prop:value={move || property.get().id()} name="id"/> <input type="hidden" prop:value={move || property.get().id()} name="id"/>
<div>"Are you sure you want to delete property "{move || property.get().name}"?"</div> <div>{trl("Are you sure you want to delete property ")}{move || property.get().name}"?"</div>
</QuestionDialog> </QuestionDialog>
} }
} }

@ -3,6 +3,7 @@ use crate::backend::data::{ResProperty, SlotType};
use crate::backend::property::{CreateProperty, EditProperty}; use crate::backend::property::{CreateProperty, EditProperty};
use crate::components::data_form::DataForm; use crate::components::data_form::DataForm;
use crate::components::modal_box::DialogOpener; use crate::components::modal_box::DialogOpener;
use crate::locales::trl;
#[component] #[component]
fn form_inner(property: ReadSignal<ResProperty>) -> impl IntoView { fn form_inner(property: ReadSignal<ResProperty>) -> impl IntoView {
@ -11,12 +12,12 @@ fn form_inner(property: ReadSignal<ResProperty>) -> impl IntoView {
<input type="hidden" prop:value={move || property.get().id()} name="property[id]"/> <input type="hidden" prop:value={move || property.get().id()} name="property[id]"/>
<div class="row"> <div class="row">
<div class="col mb-3"> <div class="col mb-3">
<label for="name" class="form-label">"Name"</label> <label for="name" class="form-label">{trl("Name")}</label>
<input <input
type="text" type="text"
id="name" id="name"
class="form-control" class="form-control"
placeholder="Enter name" placeholder={trl("Enter name")}
prop:value={move || property.get().name} prop:value={move || property.get().name}
name="property[name]" name="property[name]"
/> />
@ -24,12 +25,12 @@ fn form_inner(property: ReadSignal<ResProperty>) -> impl IntoView {
</div> </div>
<div class="row"> <div class="row">
<div class="col mb-3"> <div class="col mb-3">
<label for="description" class="form-label">"Description"</label> <label for="description" class="form-label">{trl("Description")}</label>
<input <input
type="text" type="text"
id="name" id="name"
class="form-control" class="form-control"
placeholder="Enter description" placeholder={trl("Enter description")}
prop:value={move || property.get().description} prop:value={move || property.get().description}
name="property[description]" name="property[description]"
/> />
@ -37,7 +38,7 @@ fn form_inner(property: ReadSignal<ResProperty>) -> impl IntoView {
</div> </div>
<div class="row"> <div class="row">
<div class="col mb-3"> <div class="col mb-3">
<label for="price" class="form-label">"Price"</label> <label for="price" class="form-label">{trl("Price")}</label>
<input <input
type="text" type="text"
id="name" id="name"
@ -50,13 +51,13 @@ fn form_inner(property: ReadSignal<ResProperty>) -> impl IntoView {
</div> </div>
<div class="row"> <div class="row">
<div class="col mb-3"> <div class="col mb-3">
<label for="slot" class="form-label">{move || format!("Time slot {:?}", property.get().slot)}</label> <label for="slot" class="form-label">{trl("Time slot")}</label>
<select id="slot" name="property[slot]" class="form-select"> <select id="slot" name="property[slot]" class="form-select">
<option prop:value={move || format!("{:?}", property.get().slot)}>{move || format!("{:?}", property.get().slot)}</option> <option prop:value={move || format!("{:?}", property.get().slot)}>{trl(&property.get().slot.to_string())}</option>
<option value="Quarter" selected=move || property.get().slot == SlotType::Quarter>"Quarter an hour"</option> <option value="Quarter" selected=move || property.get().slot == SlotType::Quarter>{trl("Quarter an hour")}</option>
<option value="Half" selected=move || property.get().slot == SlotType::Half>"Half an hour"</option> <option value="Half" selected=move || property.get().slot == SlotType::Half>{trl("Half an hour")}</option>
<option value="Hour" selected=move || property.get().slot == SlotType::Hour>"Hour"</option> <option value="Hour" selected=move || property.get().slot == SlotType::Hour>{trl("Hour")}</option>
<option value="Day" selected=move || property.get().slot == SlotType::Day>"Day"</option> <option value="Day" selected=move || property.get().slot == SlotType::Day>{trl("Day")}</option>
</select> </select>
</div> </div>
</div> </div>
@ -74,7 +75,7 @@ fn form_inner(property: ReadSignal<ResProperty>) -> impl IntoView {
on:change=move |ev| active_str.set(if event_target_checked(&ev) on:change=move |ev| active_str.set(if event_target_checked(&ev)
{ "true".to_string() } else { "false".to_string() }) { "true".to_string() } else { "false".to_string() })
/> />
<label for="active" class="form-label">"Active"</label> <label for="active" class="form-label">{trl("Active")}</label>
<input type="hidden" prop:value=active_str name="property[active]"/> <input type="hidden" prop:value=active_str name="property[active]"/>
</div> </div>
</div> </div>

@ -3,6 +3,7 @@ use crate::backend::data::User;
use crate::backend::user::DeleteUser; use crate::backend::user::DeleteUser;
use crate::components::data_form::QuestionDialog; use crate::components::data_form::QuestionDialog;
use crate::components::modal_box::DialogOpener; use crate::components::modal_box::DialogOpener;
use crate::locales::trl;
#[component] #[component]
pub fn user_delete(user: ReadSignal<User>, opener: DialogOpener) -> impl IntoView { pub fn user_delete(user: ReadSignal<User>, opener: DialogOpener) -> impl IntoView {
@ -11,7 +12,7 @@ pub fn user_delete(user: ReadSignal<User>, opener: DialogOpener) -> impl IntoVie
view! { view! {
<QuestionDialog opener=opener action=del_user title="Delete user"> <QuestionDialog opener=opener action=del_user title="Delete user">
<input type="hidden" prop:value={move || user.get().id()} name="id"/> <input type="hidden" prop:value={move || user.get().id()} name="id"/>
<div>"Are you sure you want to delete user "{move || user.get().full_name}"?"</div> <div>{trl("Are you sure you want to delete user ")}{move || user.get().full_name}"?"</div>
</QuestionDialog> </QuestionDialog>
} }
} }

@ -2,6 +2,7 @@ use leptos::*;
use crate::backend::user::CreateUser; use crate::backend::user::CreateUser;
use crate::components::data_form::DataForm; use crate::components::data_form::DataForm;
use crate::components::modal_box::DialogOpener; use crate::components::modal_box::DialogOpener;
use crate::locales::trl;
#[component] #[component]
pub fn user_edit(opener: DialogOpener) -> impl IntoView { pub fn user_edit(opener: DialogOpener) -> impl IntoView {
@ -11,12 +12,12 @@ pub fn user_edit(opener: DialogOpener) -> impl IntoView {
//<input type="hidden" value={move || company.get().id()} name="company[id]"/> //<input type="hidden" value={move || company.get().id()} name="company[id]"/>
<div class="row"> <div class="row">
<div class="col mb-3"> <div class="col mb-3">
<label for="username" class="form-label">"Username"</label> <label for="username" class="form-label">{trl("Username")}</label>
<input <input
type="text" type="text"
id="username" id="username"
class="form-control" class="form-control"
placeholder="Enter username" placeholder={trl("Enter username")}
prop:value={move || opener.empty()} prop:value={move || opener.empty()}
name="user[login]" name="user[login]"
/> />
@ -24,7 +25,7 @@ pub fn user_edit(opener: DialogOpener) -> impl IntoView {
</div> </div>
<div class="row"> <div class="row">
<div class="col mb-3"> <div class="col mb-3">
<label for="password" class="form-label">"Password"</label> <label for="password" class="form-label">{trl("Password")}</label>
<input <input
type="password" type="password"
id="password" id="password"
@ -36,7 +37,7 @@ pub fn user_edit(opener: DialogOpener) -> impl IntoView {
</div> </div>
<div class="row"> <div class="row">
<div class="col mb-3"> <div class="col mb-3">
<label for="passwordVer" class="form-label">"Verify password"</label> <label for="passwordVer" class="form-label">{trl("Verify password")}</label>
<input <input
type="password" type="password"
id="passwordVer" id="passwordVer"
@ -48,7 +49,7 @@ pub fn user_edit(opener: DialogOpener) -> impl IntoView {
</div> </div>
<div class="row"> <div class="row">
<div class="col mb-3"> <div class="col mb-3">
<label for="fullName" class="form-label">"Full name"</label> <label for="fullName" class="form-label">{trl("Full name")}</label>
<input <input
type="text" type="text"
id="fullName" id="fullName"
@ -93,7 +94,7 @@ pub fn user_edit(opener: DialogOpener) -> impl IntoView {
prop:checked={move || opener.not_checked()} prop:checked={move || opener.not_checked()}
name="user[get_emails]" name="user[get_emails]"
/> />
<label for="geEmails" class="form-label">"Get emails"</label> <label for="geEmails" class="form-label">{trl("Get emails")}</label>
</div> </div>
</div> </div>
</DataForm> </DataForm>

Loading…
Cancel
Save