diff --git a/Cargo.lock b/Cargo.lock index 7be172b..8800297 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -29,6 +29,15 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + [[package]] name = "allocator-api2" version = "0.2.21" @@ -1574,6 +1583,15 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", +] + [[package]] name = "matchit" version = "0.8.4" @@ -1649,6 +1667,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys 0.61.2", +] + [[package]] name = "num-bigint-dig" version = "0.8.6" @@ -2093,6 +2120,23 @@ dependencies = [ "bitflags", ] +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" + [[package]] name = "reqwest" version = "0.12.28" @@ -2376,6 +2420,15 @@ dependencies = [ "digest", ] +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + [[package]] name = "shlex" version = "1.3.0" @@ -2724,6 +2777,15 @@ dependencies = [ "syn", ] +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + [[package]] name = "time" version = "0.3.47" @@ -3012,6 +3074,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", ] [[package]] @@ -3113,6 +3205,12 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + [[package]] name = "vcpkg" version = "0.2.15" @@ -3255,7 +3353,7 @@ dependencies = [ [[package]] name = "web-petting" -version = "0.1.8" +version = "0.1.9" dependencies = [ "chrono", "chrono-tz", @@ -3268,6 +3366,8 @@ dependencies = [ "serde_html_form", "serde_json", "tokio", + "tracing", + "tracing-subscriber", "uuid", ] diff --git a/Cargo.toml b/Cargo.toml index 7b2ed43..9b80dbe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "web-petting" -version = "0.1.9" +version = "0.1.10" edition = "2024" [dependencies] @@ -17,3 +17,4 @@ futures = "0.3" tokio = { version = "1", features = ["fs"] } uuid = { version = "1", features = ["v4"] } tracing = "0.1" +tracing-subscriber = { version = "0.3", features = ["env-filter"] } diff --git a/src/admin.rs b/src/admin.rs index 05f0878..62f3b75 100644 --- a/src/admin.rs +++ b/src/admin.rs @@ -274,6 +274,7 @@ struct ScheduleNewTemplate<'a> { clients: Vec, users: Vec, current_user_id: i64, + timezone: String, } #[derive(Debug, Template)] @@ -1110,6 +1111,7 @@ async fn schedule_new_page( let current_user_id = get_admin_id(&session).await.unwrap_or(0); let clients = query!(Client, $status == "active").all(&db).await?; let users = query!(User, $status == "active").all(&db).await?; + let tz = crate::tz::load_tz(&db).await; let body = ScheduleNewTemplate { t: lang.t(), lang, @@ -1117,6 +1119,7 @@ async fn schedule_new_page( clients, users, current_user_id, + timezone: tz.to_string(), } .render()?; html_response(body, lang) diff --git a/src/i18n.rs b/src/i18n.rs index c930fbc..1e99fa3 100644 --- a/src/i18n.rs +++ b/src/i18n.rs @@ -400,7 +400,7 @@ static RU: Translations = Translations { schedule_new_title: "Запланировать визиты", schedule_client: "Клиент", schedule_admin: "Исполнитель", - schedule_default_time: "Время по умолчанию", + schedule_default_time: "Время", schedule_time_start: "С", schedule_time_end: "До", schedule_pick_dates: "Добавить дату", @@ -603,7 +603,7 @@ static EN: Translations = Translations { schedule_new_title: "Plan Visits", schedule_client: "Client", schedule_admin: "Assigned to", - schedule_default_time: "Default Time", + schedule_default_time: "Time", schedule_time_start: "From", schedule_time_end: "To", schedule_pick_dates: "Add date", diff --git a/src/main.rs b/src/main.rs index 663c6dd..47d2083 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,6 +6,8 @@ mod public; mod telegram; mod tz; +use tracing_subscriber; + use cot::cli::CliMetadata; use cot::config::{ DatabaseConfig, MiddlewareConfig, ProjectConfig, SessionMiddlewareConfig, SessionStoreConfig, @@ -97,5 +99,10 @@ impl Project for PettingProject { #[cot::main] fn main() -> impl Project { + let filter = tracing_subscriber::EnvFilter::try_from_default_env() + .unwrap_or_else(|_| tracing_subscriber::EnvFilter::new("info")); + let _ = tracing_subscriber::fmt() + .with_env_filter(filter) + .try_init(); PettingProject } diff --git a/templates/admin/schedule_new.html b/templates/admin/schedule_new.html index 65d44e5..395f483 100644 --- a/templates/admin/schedule_new.html +++ b/templates/admin/schedule_new.html @@ -9,238 +9,421 @@
-
- -
- -
-
- -
+ + + +
+ +
+
+
+
- -
- -
-
- -
+ +
+ +
+
+
+
- -
- -
-
-
- -
-
-
-
- -
-
+ +
+ +
+
+ {{ t.schedule_time_start }} + +
+
+
+ {{ t.schedule_time_end }} +
+
- -
- -
-
-
- -
-
-
- -
-
+ +
+
+ +
- -
- -
-
- -
-
- -
-
- -
+
+
+ + +
+
+
- -
- -
-

{{ t.schedule_no_days }}

-
+ + + + +
+ +
+
+
- -
- -
- -
-
+ + - - - - - +
{% endblock %}