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! {