diff --git a/users/tazjin/predlozhnik/.gitignore b/users/tazjin/predlozhnik/.gitignore index eccd7b4ab..58eaf3e32 100644 --- a/users/tazjin/predlozhnik/.gitignore +++ b/users/tazjin/predlozhnik/.gitignore @@ -1,2 +1,3 @@ /target/ **/*.rs.bk +dist/ diff --git a/users/tazjin/predlozhnik/index.css b/users/tazjin/predlozhnik/index.css new file mode 100644 index 000000000..3529574c4 --- /dev/null +++ b/users/tazjin/predlozhnik/index.css @@ -0,0 +1,29 @@ +body { + max-width: 800px; + margin: 40px auto; +} + +#header { + display: flex; + flex-direction: column; +} + +.btn.btn-ghost:disabled { + border-color: #9f9f9f; + color: #9f9f9f; +} + +#predlogi,#padezhi { + display: flex; + flex-direction: row; + flex-wrap: wrap; +} + +.btn { + margin: 3px; + flex-grow: 1; +} + +.footer { + text-align: right; +} diff --git a/users/tazjin/predlozhnik/index.html b/users/tazjin/predlozhnik/index.html index a5b112ea3..631cf4f6d 100644 --- a/users/tazjin/predlozhnik/index.html +++ b/users/tazjin/predlozhnik/index.html @@ -2,6 +2,10 @@ + + + Предложник diff --git a/users/tazjin/predlozhnik/src/main.rs b/users/tazjin/predlozhnik/src/main.rs index 98d5703c7..1d864a37b 100644 --- a/users/tazjin/predlozhnik/src/main.rs +++ b/users/tazjin/predlozhnik/src/main.rs @@ -5,7 +5,6 @@ use lazy_static::lazy_static; use maplit::hashmap; use std::collections::BTreeSet; use std::collections::HashMap; -use std::fmt::Write; #[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] enum Падеж { @@ -110,19 +109,6 @@ lazy_static! { }; } -fn example_output() -> String { - let mut out = String::new(); - - for (пд, пги) in &*ПО_ПАДЕЖУ { - write!(out, "Падеж: {:?}\n", пд).ok(); - for п in пги { - write!(out, "\t{}\n", п).ok(); - } - } - - out -} - enum Сообщение { ВыбралПадеж(Option<Падеж>), ВыбралПредлог(Option<&'static str>), @@ -140,9 +126,13 @@ struct Вывод { объяснение: Option, } -fn объяснить(падеж: Падеж, предлог: &str) -> Html { +fn объясни(падеж: Падеж, предлог: &str) -> Html { html! { - {format!("{} {}", предлог, падеж.вопрос())} +
+
+

{"Пример:"}

+ {format!("{} {}", предлог, падеж.вопрос())} +
} } @@ -151,7 +141,7 @@ fn ограничить(м: &Модель) -> Вывод { (Some(пж), Some(пл)) => Вывод { доступные_падежи: BTreeSet::from([пж]), доступные_предлоги: BTreeSet::from([*пл]), - объяснение: Some(объяснить(пж, пл)), + объяснение: Some(объясни(пж, пл)), }, (Some(пж), None) => Вывод { @@ -174,6 +164,16 @@ fn ограничить(м: &Модель) -> Вывод { } } +fn класс_кнопки(выбран: bool, доступен: bool) -> String { + let класс = "btn ".to_string(); + класс + + match (выбран, доступен) { + (true, _) => "btn-primary", + (false, true) => "btn-ghost btn-primary", + (false, false) => "btn-ghost btn-default", + } +} + fn покажи_предлог( link: &Scope<Модель>, м: &Модель, @@ -182,13 +182,7 @@ fn покажи_предлог( ) -> Html { let выбран = м.предлог == Some(п); let доступен = вв.доступные_предлоги.contains(п); - - let mut класс = "btn btn-ghost ".to_string(); - класс += match (выбран, доступен) { - (true, _) => "btn-error", - (false, true) => "btn-primary", - (false, false) => "btn-default", - }; + let класс = класс_кнопки(выбран, доступен); html! {