From 0c62a41f70d361e0a1930375d446f6e0c3f03c6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wo=C5=BAniak?= Date: Wed, 6 Jan 2021 23:10:13 +0100 Subject: [PATCH] Fix `use` issues --- actors/database-actor/src/issues.rs | 33 ----- actors/database-actor/src/users.rs | 46 ------- actors/highlight-actor/src/lib.rs | 2 +- actors/highlight-actor/src/load.rs | 32 +---- actors/mail-actor/src/invite.rs | 11 +- actors/mail-actor/src/lib.rs | 15 ++- actors/mail-actor/src/welcome.rs | 11 +- .../src/handlers/issue_statuses.rs | 12 +- .../websocket-actor/src/handlers/messages.rs | 12 +- .../websocket-actor/src/handlers/projects.rs | 12 +- .../src/handlers/user_projects.rs | 12 +- actors/websocket-actor/src/handlers/users.rs | 5 +- actors/websocket-actor/src/server/mod.rs | 10 +- jirs-cli/src/main.rs | 31 +++-- jirs-client/src/modal/mod.rs | 38 +++--- jirs-client/src/modal/time_tracking.rs | 31 +++-- jirs-client/src/modals/debug/mod.rs | 5 + jirs-client/src/modals/debug/model.rs | 0 jirs-client/src/modals/debug/update.rs | 0 .../debug_modal.rs => modals/debug/view.rs} | 14 +- .../src/modals/issue_statuses_delete/mod.rs | 4 +- .../src/modals/issue_statuses_delete/view.rs | 16 +-- jirs-client/src/modals/issues_create/mod.rs | 4 +- .../src/modals/issues_create/update.rs | 8 +- jirs-client/src/modals/issues_create/view.rs | 14 +- jirs-client/src/modals/issues_delete/mod.rs | 5 + jirs-client/src/modals/issues_delete/model.rs | 1 + .../src/modals/issues_delete/update.rs | 1 + .../issues_delete/view.rs} | 13 +- jirs-client/src/modals/issues_edit/mod.rs | 4 +- jirs-client/src/modals/issues_edit/model.rs | 7 +- .../src/modals/issues_edit/view/mod.rs | 4 +- jirs-client/src/modals/mod.rs | 4 + jirs-client/src/modals/time_tracking/mod.rs | 5 + jirs-client/src/modals/time_tracking/model.rs | 0 .../src/modals/time_tracking/update.rs | 0 jirs-client/src/modals/time_tracking/view.rs | 125 ++++++++++++++++++ jirs-client/src/pages/invite_page/mod.rs | 4 +- jirs-client/src/pages/invite_page/update.rs | 25 ++-- jirs-client/src/pages/profile_page/mod.rs | 3 +- jirs-client/src/pages/profile_page/model.rs | 15 ++- jirs-client/src/pages/project_page/mod.rs | 3 +- jirs-client/src/pages/project_page/model.rs | 22 +-- jirs-client/src/pages/project_page/update.rs | 8 +- jirs-client/src/pages/project_page/view.rs | 15 --- .../src/pages/project_settings_page/mod.rs | 4 +- .../src/pages/project_settings_page/model.rs | 19 ++- .../src/pages/project_settings_page/update.rs | 3 +- .../src/pages/project_settings_page/view.rs | 47 +++---- jirs-client/src/pages/reports_page/mod.rs | 3 +- jirs-client/src/pages/reports_page/update.rs | 20 +-- jirs-client/src/pages/reports_page/view.rs | 23 ++-- jirs-client/src/pages/sign_in_page/mod.rs | 3 +- jirs-client/src/pages/sign_in_page/update.rs | 25 ++-- jirs-client/src/pages/sign_in_page/view.rs | 31 ++--- jirs-client/src/pages/sign_up_page/mod.rs | 3 +- jirs-client/src/pages/sign_up_page/update.rs | 18 +-- jirs-client/src/pages/sign_up_page/view.rs | 34 ++--- jirs-client/src/pages/users_page/mod.rs | 3 +- jirs-client/src/pages/users_page/model.rs | 9 +- jirs-client/src/pages/users_page/update.rs | 20 +-- jirs-client/src/pages/users_page/view.rs | 24 ++-- jirs-client/src/shared/mod.rs | 17 ++- jirs-client/src/shared/navbar_left.rs | 29 ++-- jirs-client/src/shared/styled_editor.rs | 9 ++ jirs-client/src/shared/styled_form.rs | 18 ++- jirs-client/src/shared/styled_input.rs | 28 +++- jirs-client/src/shared/tracking_widget.rs | 3 +- jirs-server/src/errors.rs | 7 +- shared/jirs-config/src/amazon.rs | 6 +- shared/jirs-config/src/utils.rs | 8 +- shared/jirs-data/src/lib.rs | 17 ++- shared/jirs-data/src/payloads.rs | 11 +- shared/jirs-data/src/sql.rs | 13 +- 74 files changed, 572 insertions(+), 525 deletions(-) create mode 100644 jirs-client/src/modals/debug/mod.rs create mode 100644 jirs-client/src/modals/debug/model.rs create mode 100644 jirs-client/src/modals/debug/update.rs rename jirs-client/src/{modal/debug_modal.rs => modals/debug/view.rs} (65%) create mode 100644 jirs-client/src/modals/issues_delete/mod.rs create mode 100644 jirs-client/src/modals/issues_delete/model.rs create mode 100644 jirs-client/src/modals/issues_delete/update.rs rename jirs-client/src/{modal/confirm_delete_issue.rs => modals/issues_delete/view.rs} (81%) create mode 100644 jirs-client/src/modals/time_tracking/mod.rs create mode 100644 jirs-client/src/modals/time_tracking/model.rs create mode 100644 jirs-client/src/modals/time_tracking/update.rs create mode 100644 jirs-client/src/modals/time_tracking/view.rs diff --git a/actors/database-actor/src/issues.rs b/actors/database-actor/src/issues.rs index 348e6a3b..cf23cb4a 100644 --- a/actors/database-actor/src/issues.rs +++ b/actors/database-actor/src/issues.rs @@ -193,36 +193,3 @@ db_create_with_conn! { user_ids => Vec, epic_id => Option } - -// impl Handler for DbExecutor { -// type Result = Result; -// -// fn handle(&mut self, msg: CreateIssue, ctx: &mut Self::Context) -> Self::Result { -// use crate::schema::issue_assignees::dsl; -// use crate::schema::issues::dsl::issues; -// -// let mut values = vec![]; -// for user_id in msg.user_ids.iter() { -// values.push(crate::models::CreateIssueAssigneeForm { -// issue_id: issue.id, -// user_id: *user_id, -// }); -// } -// if !msg.user_ids.contains(&msg.reporter_id) { -// values.push(crate::models::CreateIssueAssigneeForm { -// issue_id: issue.id, -// user_id: msg.reporter_id, -// }); -// } -// -// diesel::insert_into(dsl::issue_assignees) -// .values(values) -// .execute(conn) -// .map_err(|e| { -// log::error!("{:?}", e); -// crate::DatabaseError::DatabaseConnectionLost -// })?; -// -// Ok(issue) -// } -// } diff --git a/actors/database-actor/src/users.rs b/actors/database-actor/src/users.rs index 0e253520..c17b45e7 100644 --- a/actors/database-actor/src/users.rs +++ b/actors/database-actor/src/users.rs @@ -64,52 +64,6 @@ db_create! { email => EmailString } -/*impl CreateUser { - pub fn execute(self, conn: &DbPooledConn) -> Result { - use crate::schema::users::dsl::*; - - q!(diesel::insert_into(users) - .values((name.eq(self.name.as_str()), email.eq(self.email.as_str())))) - .get_result(conn) - .map_err(|e| { - log::error!("{:?}", e); - let ws = match e { - Error::InvalidCString(_) => { - crate::DatabaseError::User(UserError::InvalidPair(self.name, self.email)) - } - Error::DatabaseError(diesel::result::DatabaseErrorKind::UniqueViolation, _) => { - crate::DatabaseError::User(UserError::TakenPair(self.name, self.email)) - } - Error::DatabaseError(_, _) => { - crate::DatabaseError::User(UserError::InvalidPair(self.name, self.email)) - } - Error::NotFound => { - crate::DatabaseError::User(UserError::InvalidPair(self.name, self.email)) - } - Error::QueryBuilderError(_) => { - crate::DatabaseError::User(UserError::InvalidPair(self.name, self.email)) - } - Error::DeserializationError(_) => { - crate::DatabaseError::User(UserError::InvalidPair(self.name, self.email)) - } - Error::SerializationError(_) => { - crate::DatabaseError::User(UserError::InvalidPair(self.name, self.email)) - } - Error::RollbackTransaction => { - crate::DatabaseError::User(UserError::InvalidPair(self.name, self.email)) - } - Error::AlreadyInTransaction => { - crate::DatabaseError::User(UserError::InvalidPair(self.name, self.email)) - } - Error::__Nonexhaustive => { - crate::DatabaseError::User(UserError::InvalidPair(self.name, self.email)) - } - }; - crate::DatabaseError::Error(ws) - }) - } -}*/ - db_create_with_conn! { Register, msg => conn => users => { diff --git a/actors/highlight-actor/src/lib.rs b/actors/highlight-actor/src/lib.rs index 56bce415..87deb62d 100644 --- a/actors/highlight-actor/src/lib.rs +++ b/actors/highlight-actor/src/lib.rs @@ -1,6 +1,6 @@ -use jirs_data::HighlightedCode; use { actix::{Actor, Handler, SyncContext}, + jirs_data::HighlightedCode, std::sync::Arc, syntect::{ easy::HighlightLines, diff --git a/actors/highlight-actor/src/load.rs b/actors/highlight-actor/src/load.rs index 7550a689..79c49778 100644 --- a/actors/highlight-actor/src/load.rs +++ b/actors/highlight-actor/src/load.rs @@ -1,15 +1,9 @@ -#![allow(unused_imports)] -#![allow(dead_code)] - -use std::io::BufRead; -use std::{rc::Rc, sync::Arc}; - -use bincode::{deserialize_from, Result}; -use flate2::bufread::ZlibDecoder; -use serde::de::DeserializeOwned; -use syntect::easy::HighlightLines; -use syntect::highlighting::ThemeSet; -use syntect::parsing::SyntaxSet; +use { + bincode::{deserialize_from, Result}, + flate2::bufread::ZlibDecoder, + serde::de::DeserializeOwned, + std::io::BufRead, +}; fn from_reader(input: R) -> Result { let mut decoder = ZlibDecoder::new(input); @@ -29,17 +23,3 @@ pub fn integrated_syntaxset() -> syntect::parsing::SyntaxSet { pub fn integrated_themeset() -> syntect::highlighting::ThemeSet { from_binary(include_bytes!("./themes.bin")) } - -pub fn load() -> (Rc, Rc) { - let theme_set = Rc::new(integrated_themeset()); - let syntax_set = Rc::new(integrated_syntaxset()); - (theme_set, syntax_set) -} - -pub fn arc() -> (Arc, Arc) { - use std::sync::Arc; - - let theme_set = Arc::new(integrated_themeset()); - let syntax_set = Arc::new(integrated_syntaxset()); - (theme_set, syntax_set) -} diff --git a/actors/mail-actor/src/invite.rs b/actors/mail-actor/src/invite.rs index 88b91ae5..4ceae388 100644 --- a/actors/mail-actor/src/invite.rs +++ b/actors/mail-actor/src/invite.rs @@ -1,9 +1,8 @@ -use actix::{Handler, Message}; -// use lettre; -// use lettre_email; -use uuid::Uuid; - -use crate::MailExecutor; +use { + crate::MailExecutor, + actix::{Handler, Message}, + uuid::Uuid, +}; #[derive(Debug)] pub struct Invite { diff --git a/actors/mail-actor/src/lib.rs b/actors/mail-actor/src/lib.rs index cf680776..03a08442 100644 --- a/actors/mail-actor/src/lib.rs +++ b/actors/mail-actor/src/lib.rs @@ -1,7 +1,5 @@ use actix::{Actor, SyncContext}; -// use lettre; - pub mod invite; pub mod welcome; @@ -27,15 +25,18 @@ impl Default for MailExecutor { } fn mail_client(config: &jirs_config::mail::Configuration) -> lettre::SmtpClient { - let mail_user = config.user.as_str(); - let mail_pass = config.pass.as_str(); - let mail_host = config.host.as_str(); + let jirs_config::mail::Configuration { + user: mail_user, + pass: mail_pass, + host: mail_host, + .. + } = &config; lettre::SmtpClient::new_simple(mail_host) .expect("Failed to init SMTP client") .credentials(lettre::smtp::authentication::Credentials::new( - mail_user.to_string(), - mail_pass.to_string(), + mail_user.clone(), + mail_pass.clone(), )) .connection_reuse(lettre::smtp::ConnectionReuseParameters::ReuseUnlimited) .smtp_utf8(true) diff --git a/actors/mail-actor/src/welcome.rs b/actors/mail-actor/src/welcome.rs index 1690f7cb..5eb420f3 100644 --- a/actors/mail-actor/src/welcome.rs +++ b/actors/mail-actor/src/welcome.rs @@ -1,9 +1,8 @@ -use actix::{Handler, Message}; -// use lettre; -// use lettre_email; -use uuid::Uuid; - -use crate::MailExecutor; +use { + crate::MailExecutor, + actix::{Handler, Message}, + uuid::Uuid, +}; #[derive(Debug)] pub struct Welcome { diff --git a/actors/websocket-actor/src/handlers/issue_statuses.rs b/actors/websocket-actor/src/handlers/issue_statuses.rs index afdce6bd..f81d47d0 100644 --- a/actors/websocket-actor/src/handlers/issue_statuses.rs +++ b/actors/websocket-actor/src/handlers/issue_statuses.rs @@ -1,9 +1,9 @@ -use futures::executor::block_on; - -use database_actor::issue_statuses; -use jirs_data::{IssueStatusId, Position, TitleString, WsMsg}; - -use crate::{WebSocketActor, WsHandler, WsResult}; +use { + crate::{WebSocketActor, WsHandler, WsResult}, + database_actor::issue_statuses, + futures::executor::block_on, + jirs_data::{IssueStatusId, Position, TitleString, WsMsg}, +}; pub struct LoadIssueStatuses; diff --git a/actors/websocket-actor/src/handlers/messages.rs b/actors/websocket-actor/src/handlers/messages.rs index e3b8ddaf..abb69b6f 100644 --- a/actors/websocket-actor/src/handlers/messages.rs +++ b/actors/websocket-actor/src/handlers/messages.rs @@ -1,9 +1,9 @@ -use futures::executor::block_on; - -use database_actor::messages; -use jirs_data::{MessageId, WsMsg}; - -use crate::{WebSocketActor, WsHandler, WsResult}; +use { + crate::{WebSocketActor, WsHandler, WsResult}, + database_actor::messages, + futures::executor::block_on, + jirs_data::{MessageId, WsMsg}, +}; pub struct LoadMessages; diff --git a/actors/websocket-actor/src/handlers/projects.rs b/actors/websocket-actor/src/handlers/projects.rs index bf6e3ca8..5248d4bb 100644 --- a/actors/websocket-actor/src/handlers/projects.rs +++ b/actors/websocket-actor/src/handlers/projects.rs @@ -1,9 +1,9 @@ -use futures::executor::block_on; - -use database_actor as db; -use jirs_data::{UpdateProjectPayload, UserProject, WsMsg}; - -use crate::{WebSocketActor, WsHandler, WsResult}; +use { + crate::{WebSocketActor, WsHandler, WsResult}, + database_actor as db, + futures::executor::block_on, + jirs_data::{UpdateProjectPayload, UserProject, WsMsg}, +}; impl WsHandler for WebSocketActor { fn handle_msg(&mut self, msg: UpdateProjectPayload, _ctx: &mut Self::Context) -> WsResult { diff --git a/actors/websocket-actor/src/handlers/user_projects.rs b/actors/websocket-actor/src/handlers/user_projects.rs index c0e10c81..9917d9bc 100644 --- a/actors/websocket-actor/src/handlers/user_projects.rs +++ b/actors/websocket-actor/src/handlers/user_projects.rs @@ -1,9 +1,9 @@ -use futures::executor::block_on; - -use database_actor as db; -use jirs_data::{UserProjectId, WsMsg}; - -use crate::{WebSocketActor, WsHandler, WsResult}; +use { + crate::{WebSocketActor, WsHandler, WsResult}, + database_actor as db, + futures::executor::block_on, + jirs_data::{UserProjectId, WsMsg}, +}; pub struct LoadUserProjects; diff --git a/actors/websocket-actor/src/handlers/users.rs b/actors/websocket-actor/src/handlers/users.rs index 6b8054b6..c818b4fa 100644 --- a/actors/websocket-actor/src/handlers/users.rs +++ b/actors/websocket-actor/src/handlers/users.rs @@ -1,9 +1,8 @@ -use futures::executor::block_on; - -use jirs_data::{UserId, UserProject, UserRole, WsMsg}; use { crate::{handlers::auth::Authenticate, WebSocketActor, WsHandler, WsResult}, database_actor::{self, users::Register as DbRegister}, + futures::executor::block_on, + jirs_data::{UserId, UserProject, UserRole, WsMsg}, }; pub struct LoadProjectUsers; diff --git a/actors/websocket-actor/src/server/mod.rs b/actors/websocket-actor/src/server/mod.rs index ef2da6ee..36276258 100644 --- a/actors/websocket-actor/src/server/mod.rs +++ b/actors/websocket-actor/src/server/mod.rs @@ -1,8 +1,8 @@ -use std::collections::HashMap; - -use actix::{Actor, Context, Recipient}; - -use jirs_data::{ProjectId, UserId, WsMsg}; +use { + actix::{Actor, Context, Recipient}, + jirs_data::{ProjectId, UserId, WsMsg}, + std::collections::HashMap, +}; #[derive(actix::Message, Debug)] #[rtype(result = "()")] diff --git a/jirs-cli/src/main.rs b/jirs-cli/src/main.rs index 89cc9418..31135814 100644 --- a/jirs-cli/src/main.rs +++ b/jirs-cli/src/main.rs @@ -1,16 +1,21 @@ -use std::sync::atomic::{AtomicBool, Ordering}; -use std::sync::{mpsc, Arc}; -use std::time::Duration; -use std::{error::Error, io /*, thread*/}; - -// use termion::input::TermRead; -use termion::{event::Key, input::MouseTerminal, raw::IntoRawMode, screen::AlternateScreen}; -use tui::{ - backend::TermionBackend, - layout::{Constraint, Direction, Layout}, - style::{Color, Style}, - widgets::{Block, Borders, Tabs}, - Terminal, +use { + std::{ + error::Error, + io, + sync::{ + atomic::{AtomicBool, Ordering}, + mpsc, Arc, + }, + time::Duration, + }, + termion::{event::Key, input::MouseTerminal, raw::IntoRawMode, screen::AlternateScreen}, + tui::{ + backend::TermionBackend, + layout::{Constraint, Direction, Layout}, + style::{Color, Style}, + widgets::{Block, Borders, Tabs}, + Terminal, + }, }; #[derive(Debug, Clone, Copy)] diff --git a/jirs-client/src/modal/mod.rs b/jirs-client/src/modal/mod.rs index 3da646c3..35642354 100644 --- a/jirs-client/src/modal/mod.rs +++ b/jirs-client/src/modal/mod.rs @@ -1,24 +1,20 @@ -use seed::{prelude::*, *}; - -use jirs_data::{TimeTracking, WsMsg}; - -use crate::{ - model::{self, ModalType, Model, Page}, - shared::{ - find_issue, go_to_board, - styled_confirm_modal::StyledConfirmModal, - styled_modal::{StyledModal, Variant as ModalVariant}, - ToNode, +use { + crate::{ + model::{self, ModalType, Model, Page}, + shared::{ + find_issue, go_to_board, + styled_confirm_modal::StyledConfirmModal, + styled_modal::{StyledModal, Variant as ModalVariant}, + ToNode, + }, + ws::send_ws_msg, + FieldChange, FieldId, Msg, WebSocketChanged, }, - ws::send_ws_msg, - FieldChange, FieldId, Msg, WebSocketChanged, + jirs_data::{TimeTracking, WsMsg}, + seed::{prelude::*, *}, }; -mod confirm_delete_issue; -#[cfg(debug_assertions)] -mod debug_modal; pub mod issues; -pub mod time_tracking; pub fn update(msg: &Msg, model: &mut model::Model, orders: &mut impl Orders) { match msg { @@ -102,7 +98,7 @@ pub fn view(model: &model::Model) -> Node { empty![] } } - ModalType::DeleteIssueConfirm(_id) => confirm_delete_issue::view(model), + ModalType::DeleteIssueConfirm(_id) => crate::modals::issues_delete::view(model), ModalType::AddIssue(modal) => issues_create::view(model, modal), ModalType::DeleteCommentConfirm(comment_id) => { let comment_id = *comment_id; @@ -114,12 +110,14 @@ pub fn view(model: &model::Model) -> Node { .build() .into_node() } - ModalType::TimeTracking(issue_id) => time_tracking::view(model, *issue_id), + ModalType::TimeTracking(issue_id) => { + crate::modals::time_tracking::view(model, *issue_id) + } ModalType::DeleteIssueStatusModal(delete_issue_modal) => { issue_statuses_delete::view(model, delete_issue_modal.delete_id) } #[cfg(debug_assertions)] - ModalType::DebugModal => debug_modal::view(model), + ModalType::DebugModal => crate::modals::debug::view(model), }) .collect(); section![id!["modals"], modals] diff --git a/jirs-client/src/modal/time_tracking.rs b/jirs-client/src/modal/time_tracking.rs index 357fe225..cec5868a 100644 --- a/jirs-client/src/modal/time_tracking.rs +++ b/jirs-client/src/modal/time_tracking.rs @@ -1,17 +1,23 @@ -use seed::{prelude::*, *}; +use { + crate::{ + model::{ModalType, Model}, + shared::{ + find_issue, + styled_button::StyledButton, + styled_field::StyledField, + styled_input::{StyledInput, StyledInputState}, + styled_modal::StyledModal, + styled_select::{StyledSelect, StyledSelectState}, + tracking_widget::{fibonacci_values, tracking_widget}, + ToChild, ToNode, + }, + EditIssueModalSection, FieldId, Msg, + }, + jirs_data::{IssueFieldId, IssueId, TimeTracking}, + seed::{prelude::*, *}, +}; -use jirs_data::{IssueFieldId, IssueId, TimeTracking}; - -use crate::model::{ModalType, Model}; -use crate::shared::styled_button::StyledButton; -use crate::shared::styled_field::StyledField; -use crate::shared::styled_input::{StyledInput, StyledInputState}; -use crate::shared::styled_modal::StyledModal; -use crate::shared::styled_select::{StyledSelect, StyledSelectState}; -use crate::shared::{find_issue, ToChild, ToNode}; -use crate::{EditIssueModalSection, FieldId, Msg}; // use crate::shared::styled_select_child::*; -use crate::shared::tracking_widget::{fibonacci_values, tracking_widget}; pub fn value_for_time_tracking(v: &Option, time_tracking_type: &TimeTracking) -> String { match (time_tracking_type, v.as_ref()) { @@ -82,6 +88,7 @@ pub fn view(model: &Model, issue_id: IssueId) -> Node { .into_node() } +#[inline] pub fn time_tracking_field( time_tracking_type: TimeTracking, field_id: FieldId, diff --git a/jirs-client/src/modals/debug/mod.rs b/jirs-client/src/modals/debug/mod.rs new file mode 100644 index 00000000..aecce944 --- /dev/null +++ b/jirs-client/src/modals/debug/mod.rs @@ -0,0 +1,5 @@ +pub use {model::*, update::*, view::*}; + +mod model; +mod update; +mod view; diff --git a/jirs-client/src/modals/debug/model.rs b/jirs-client/src/modals/debug/model.rs new file mode 100644 index 00000000..e69de29b diff --git a/jirs-client/src/modals/debug/update.rs b/jirs-client/src/modals/debug/update.rs new file mode 100644 index 00000000..e69de29b diff --git a/jirs-client/src/modal/debug_modal.rs b/jirs-client/src/modals/debug/view.rs similarity index 65% rename from jirs-client/src/modal/debug_modal.rs rename to jirs-client/src/modals/debug/view.rs index 187a191f..5bf480df 100644 --- a/jirs-client/src/modal/debug_modal.rs +++ b/jirs-client/src/modals/debug/view.rs @@ -1,9 +1,11 @@ -use seed::{prelude::*, *}; - -use crate::model::Model; -use crate::shared::styled_modal::StyledModal; -use crate::shared::ToNode; -use crate::Msg; +use { + crate::{ + model::Model, + shared::{styled_modal::StyledModal, ToNode}, + Msg, + }, + seed::{prelude::*, *}, +}; pub fn view(model: &Model) -> Node { let text = format!("{:#?}", model); diff --git a/jirs-client/src/modals/issue_statuses_delete/mod.rs b/jirs-client/src/modals/issue_statuses_delete/mod.rs index bc6b2959..aecce944 100644 --- a/jirs-client/src/modals/issue_statuses_delete/mod.rs +++ b/jirs-client/src/modals/issue_statuses_delete/mod.rs @@ -1,6 +1,4 @@ -pub use model::*; -pub use update::*; -pub use view::*; +pub use {model::*, update::*, view::*}; mod model; mod update; diff --git a/jirs-client/src/modals/issue_statuses_delete/view.rs b/jirs-client/src/modals/issue_statuses_delete/view.rs index a54121ce..5e2d8b2d 100644 --- a/jirs-client/src/modals/issue_statuses_delete/view.rs +++ b/jirs-client/src/modals/issue_statuses_delete/view.rs @@ -1,11 +1,11 @@ -use seed::prelude::*; - -use jirs_data::IssueStatusId; - -use crate::{ - model, - shared::{styled_confirm_modal::StyledConfirmModal, ToNode}, - Msg, +use { + crate::{ + model, + shared::{styled_confirm_modal::StyledConfirmModal, ToNode}, + Msg, + }, + jirs_data::IssueStatusId, + seed::prelude::*, }; pub fn view(_model: &model::Model, issue_status_id: IssueStatusId) -> Node { diff --git a/jirs-client/src/modals/issues_create/mod.rs b/jirs-client/src/modals/issues_create/mod.rs index bc6b2959..aecce944 100644 --- a/jirs-client/src/modals/issues_create/mod.rs +++ b/jirs-client/src/modals/issues_create/mod.rs @@ -1,6 +1,4 @@ -pub use model::*; -pub use update::*; -pub use view::*; +pub use {model::*, update::*, view::*}; mod model; mod update; diff --git a/jirs-client/src/modals/issues_create/update.rs b/jirs-client/src/modals/issues_create/update.rs index b083be91..bead4eb2 100644 --- a/jirs-client/src/modals/issues_create/update.rs +++ b/jirs-client/src/modals/issues_create/update.rs @@ -10,10 +10,10 @@ use { }; pub fn update(msg: &Msg, model: &mut crate::model::Model, orders: &mut impl Orders) { - let modal = model.modals.iter_mut().find(|modal| match modal { - ModalType::AddIssue(..) => true, - _ => false, - }); + let modal = model + .modals + .iter_mut() + .find(|modal| matches!(modal, ModalType::AddIssue(..))); let modal = match modal { Some(ModalType::AddIssue(modal)) => modal, _ => return, diff --git a/jirs-client/src/modals/issues_create/view.rs b/jirs-client/src/modals/issues_create/view.rs index 4caa033b..6c063888 100644 --- a/jirs-client/src/modals/issues_create/view.rs +++ b/jirs-client/src/modals/issues_create/view.rs @@ -15,7 +15,7 @@ use { seed::{prelude::*, *}, }; -pub fn view(model: &Model, modal: &Box) -> Node { +pub fn view(model: &Model, modal: &AddIssueModal) -> Node { let issue_type = modal .type_state .values @@ -64,11 +64,8 @@ pub fn view(model: &Model, modal: &Box) -> Node { let reporter_field = reporter_field(model, modal); let assignees_field = assignees_field(model, modal); let issue_priority_field = issue_priority_field(modal); - let epic_field = epic_field( - model, - modal.as_ref(), - FieldId::AddIssueModal(IssueFieldId::EpicName), - ); + let epic_field = + epic_field(model, modal, FieldId::AddIssueModal(IssueFieldId::EpicName)); form.add_field(short_summary_field) .add_field(description_field) @@ -120,7 +117,7 @@ pub fn view(model: &Model, modal: &Box) -> Node { .into_node() } -fn issue_type_field(modal: &Box) -> Node { +fn issue_type_field(modal: &AddIssueModal) -> Node { let select_type = StyledSelect::build() .name("type") .normal() @@ -148,7 +145,8 @@ fn issue_type_field(modal: &Box) -> Node { .into_node() } -fn short_summary_field(modal: &Box) -> Node { +#[inline] +fn short_summary_field(modal: &AddIssueModal) -> Node { let short_summary = StyledInput::build() .state(&modal.title_state) .build(FieldId::AddIssueModal(IssueFieldId::Title)) diff --git a/jirs-client/src/modals/issues_delete/mod.rs b/jirs-client/src/modals/issues_delete/mod.rs new file mode 100644 index 00000000..aecce944 --- /dev/null +++ b/jirs-client/src/modals/issues_delete/mod.rs @@ -0,0 +1,5 @@ +pub use {model::*, update::*, view::*}; + +mod model; +mod update; +mod view; diff --git a/jirs-client/src/modals/issues_delete/model.rs b/jirs-client/src/modals/issues_delete/model.rs new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/jirs-client/src/modals/issues_delete/model.rs @@ -0,0 +1 @@ + diff --git a/jirs-client/src/modals/issues_delete/update.rs b/jirs-client/src/modals/issues_delete/update.rs new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/jirs-client/src/modals/issues_delete/update.rs @@ -0,0 +1 @@ + diff --git a/jirs-client/src/modal/confirm_delete_issue.rs b/jirs-client/src/modals/issues_delete/view.rs similarity index 81% rename from jirs-client/src/modal/confirm_delete_issue.rs rename to jirs-client/src/modals/issues_delete/view.rs index 07fd48d0..93d02b21 100644 --- a/jirs-client/src/modal/confirm_delete_issue.rs +++ b/jirs-client/src/modals/issues_delete/view.rs @@ -1,9 +1,10 @@ -use seed::{prelude::*, *}; - -use crate::model::ModalType; -use crate::shared::styled_confirm_modal::StyledConfirmModal; -use crate::shared::ToNode; -use crate::{model, Msg}; +use { + crate::{ + model, model::ModalType, shared::styled_confirm_modal::StyledConfirmModal, shared::ToNode, + Msg, + }, + seed::{prelude::*, *}, +}; pub fn view(model: &model::Model) -> Node { let opt_id = model diff --git a/jirs-client/src/modals/issues_edit/mod.rs b/jirs-client/src/modals/issues_edit/mod.rs index bc6b2959..aecce944 100644 --- a/jirs-client/src/modals/issues_edit/mod.rs +++ b/jirs-client/src/modals/issues_edit/mod.rs @@ -1,6 +1,4 @@ -pub use model::*; -pub use update::*; -pub use view::*; +pub use {model::*, update::*, view::*}; mod model; mod update; diff --git a/jirs-client/src/modals/issues_edit/model.rs b/jirs-client/src/modals/issues_edit/model.rs index 821f0fbd..7462210e 100644 --- a/jirs-client/src/modals/issues_edit/model.rs +++ b/jirs-client/src/modals/issues_edit/model.rs @@ -1,10 +1,11 @@ use { crate::{ - modal::time_tracking::value_for_time_tracking, + modals::time_tracking::value_for_time_tracking, model::{CommentForm, IssueModal}, shared::{ styled_date_time_input::StyledDateTimeInputState, styled_editor::Mode, - styled_input::StyledInputState, styled_select::StyledSelectState, + styled_editor::StyledEditorState, styled_input::StyledInputState, + styled_select::StyledSelectState, }, EditIssueModalSection, FieldId, Msg, }, @@ -12,8 +13,6 @@ use { seed::prelude::*, }; -use crate::shared::styled_editor::StyledEditorState; - #[derive(Clone, Debug, PartialOrd, PartialEq)] pub struct Model { pub id: IssueId, diff --git a/jirs-client/src/modals/issues_edit/view/mod.rs b/jirs-client/src/modals/issues_edit/view/mod.rs index a52330b1..37637ece 100644 --- a/jirs-client/src/modals/issues_edit/view/mod.rs +++ b/jirs-client/src/modals/issues_edit/view/mod.rs @@ -1,7 +1,7 @@ use { crate::{ - modal::{issues::epic_field, time_tracking::time_tracking_field}, - modals::issues_edit::Model as EditIssueModal, + modal::issues::epic_field, + modals::{issues_edit::Model as EditIssueModal, time_tracking::time_tracking_field}, model::{ModalType, Model}, shared::{ styled_avatar::StyledAvatar, styled_button::StyledButton, styled_editor::StyledEditor, diff --git a/jirs-client/src/modals/mod.rs b/jirs-client/src/modals/mod.rs index 3384bb02..2f01a2e3 100644 --- a/jirs-client/src/modals/mod.rs +++ b/jirs-client/src/modals/mod.rs @@ -1,3 +1,7 @@ +#[cfg(debug_assertions)] +pub mod debug; pub mod issue_statuses_delete; pub mod issues_create; +pub mod issues_delete; pub mod issues_edit; +pub mod time_tracking; diff --git a/jirs-client/src/modals/time_tracking/mod.rs b/jirs-client/src/modals/time_tracking/mod.rs new file mode 100644 index 00000000..aecce944 --- /dev/null +++ b/jirs-client/src/modals/time_tracking/mod.rs @@ -0,0 +1,5 @@ +pub use {model::*, update::*, view::*}; + +mod model; +mod update; +mod view; diff --git a/jirs-client/src/modals/time_tracking/model.rs b/jirs-client/src/modals/time_tracking/model.rs new file mode 100644 index 00000000..e69de29b diff --git a/jirs-client/src/modals/time_tracking/update.rs b/jirs-client/src/modals/time_tracking/update.rs new file mode 100644 index 00000000..e69de29b diff --git a/jirs-client/src/modals/time_tracking/view.rs b/jirs-client/src/modals/time_tracking/view.rs new file mode 100644 index 00000000..cec5868a --- /dev/null +++ b/jirs-client/src/modals/time_tracking/view.rs @@ -0,0 +1,125 @@ +use { + crate::{ + model::{ModalType, Model}, + shared::{ + find_issue, + styled_button::StyledButton, + styled_field::StyledField, + styled_input::{StyledInput, StyledInputState}, + styled_modal::StyledModal, + styled_select::{StyledSelect, StyledSelectState}, + tracking_widget::{fibonacci_values, tracking_widget}, + ToChild, ToNode, + }, + EditIssueModalSection, FieldId, Msg, + }, + jirs_data::{IssueFieldId, IssueId, TimeTracking}, + seed::{prelude::*, *}, +}; + +// use crate::shared::styled_select_child::*; + +pub fn value_for_time_tracking(v: &Option, time_tracking_type: &TimeTracking) -> String { + match (time_tracking_type, v.as_ref()) { + (TimeTracking::Untracked, _) => "".to_string(), + (TimeTracking::Fibonacci, Some(n)) => n.to_string(), + (TimeTracking::Hourly, Some(n)) => format!("{:.1}", *n as f64 / 10.0f64), + _ => "".to_string(), + } +} + +pub fn view(model: &Model, issue_id: IssueId) -> Node { + let _issue = match find_issue(model, issue_id) { + Some(issue) => issue, + _ => return empty![], + }; + + let edit_issue_modal = match model.modals.get(0) { + Some(ModalType::EditIssue(_, modal)) => modal, + _ => return empty![], + }; + let time_tracking_type = model + .project + .as_ref() + .map(|p| p.time_tracking) + .unwrap_or_else(|| TimeTracking::Untracked); + + let modal_title = div![C!["modalTitle"], "Time tracking"]; + + let tracking = tracking_widget(model, edit_issue_modal); + + let time_spent_field = time_tracking_field( + time_tracking_type, + FieldId::EditIssueModal(EditIssueModalSection::Issue(IssueFieldId::TimeSpent)), + "Time spent", + &edit_issue_modal.time_spent, + &edit_issue_modal.time_spent_select, + ); + let time_remaining_field = time_tracking_field( + time_tracking_type, + FieldId::EditIssueModal(EditIssueModalSection::Issue(IssueFieldId::TimeRemaining)), + "Time remaining", + &edit_issue_modal.time_remaining, + &edit_issue_modal.time_remaining_select, + ); + + let inputs = div![ + C!["inputs"], + div![C!["inputContainer"], time_spent_field], + div![C!["inputContainer"], time_remaining_field] + ]; + + let close = StyledButton::build() + .text("Done") + .on_click(mouse_ev(Ev::Click, |_| Msg::ModalDropped)) + .build() + .into_node(); + + StyledModal::build() + .add_class("timeTrackingModal") + .children(vec![ + modal_title, + tracking, + inputs, + div![C!["actions"], close], + ]) + .width(400) + .build() + .into_node() +} + +#[inline] +pub fn time_tracking_field( + time_tracking_type: TimeTracking, + field_id: FieldId, + label: &str, + input_state: &StyledInputState, + select_state: &StyledSelectState, +) -> Node { + let fibonacci_values = fibonacci_values(); + let input = match time_tracking_type { + TimeTracking::Untracked => empty![], + TimeTracking::Fibonacci => StyledSelect::build() + .selected( + select_state + .values + .iter() + .map(|n| (*n).to_child()) + .collect(), + ) + .state(select_state) + .options(fibonacci_values.iter().map(|v| v.to_child()).collect()) + .build(field_id) + .into_node(), + TimeTracking::Hourly => StyledInput::build() + .state(input_state) + .valid(true) + .build(field_id) + .into_node(), + }; + StyledField::build() + .input(input) + .label(label) + .build() + .into_node() +} diff --git a/jirs-client/src/pages/invite_page/mod.rs b/jirs-client/src/pages/invite_page/mod.rs index bc6b2959..aecce944 100644 --- a/jirs-client/src/pages/invite_page/mod.rs +++ b/jirs-client/src/pages/invite_page/mod.rs @@ -1,6 +1,4 @@ -pub use model::*; -pub use update::*; -pub use view::*; +pub use {model::*, update::*, view::*}; mod model; mod update; diff --git a/jirs-client/src/pages/invite_page/update.rs b/jirs-client/src/pages/invite_page/update.rs index a9b56758..0c064120 100644 --- a/jirs-client/src/pages/invite_page/update.rs +++ b/jirs-client/src/pages/invite_page/update.rs @@ -1,16 +1,15 @@ -use std::str::FromStr; - -use seed::prelude::*; - -use jirs_data::{fields::*, WsMsg}; - -use crate::{ - authorize_or_redirect, - model::{Model, Page, PageContent}, - pages::invite_page::InvitePage, - shared::write_auth_token, - ws::send_ws_msg, - FieldId, InvitationPageChange, Msg, PageChanged, WebSocketChanged, +use { + crate::{ + authorize_or_redirect, + model::{Model, Page, PageContent}, + pages::invite_page::InvitePage, + shared::write_auth_token, + ws::send_ws_msg, + FieldId, InvitationPageChange, Msg, PageChanged, WebSocketChanged, + }, + jirs_data::{fields::*, WsMsg}, + seed::prelude::*, + std::str::FromStr, }; pub fn update(msg: Msg, model: &mut Model, orders: &mut impl Orders) { diff --git a/jirs-client/src/pages/profile_page/mod.rs b/jirs-client/src/pages/profile_page/mod.rs index 334568ff..672d9947 100644 --- a/jirs-client/src/pages/profile_page/mod.rs +++ b/jirs-client/src/pages/profile_page/mod.rs @@ -1,5 +1,4 @@ -pub use update::*; -pub use view::*; +pub use {model::*, update::*, view::*}; pub mod model; pub mod update; diff --git a/jirs-client/src/pages/profile_page/model.rs b/jirs-client/src/pages/profile_page/model.rs index dc89bfab..b0e5b0b9 100644 --- a/jirs-client/src/pages/profile_page/model.rs +++ b/jirs-client/src/pages/profile_page/model.rs @@ -1,11 +1,12 @@ -use jirs_data::{ProjectId, User, UsersFieldId}; - -use crate::{ - shared::{ - styled_image_input::StyledImageInputState, styled_input::StyledInputState, - styled_select::StyledSelectState, +use { + crate::{ + shared::{ + styled_image_input::StyledImageInputState, styled_input::StyledInputState, + styled_select::StyledSelectState, + }, + FieldId, }, - FieldId, + jirs_data::{ProjectId, User, UsersFieldId}, }; #[derive(Debug)] diff --git a/jirs-client/src/pages/project_page/mod.rs b/jirs-client/src/pages/project_page/mod.rs index 334568ff..672d9947 100644 --- a/jirs-client/src/pages/project_page/mod.rs +++ b/jirs-client/src/pages/project_page/mod.rs @@ -1,5 +1,4 @@ -pub use update::*; -pub use view::*; +pub use {model::*, update::*, view::*}; pub mod model; pub mod update; diff --git a/jirs-client/src/pages/project_page/model.rs b/jirs-client/src/pages/project_page/model.rs index c7a45db2..2bc2ceb3 100644 --- a/jirs-client/src/pages/project_page/model.rs +++ b/jirs-client/src/pages/project_page/model.rs @@ -1,8 +1,4 @@ -use std::collections::HashMap; - -use jirs_data::*; - -use crate::shared::drag::DragState; +use {crate::shared::drag::DragState, jirs_data::*, std::collections::HashMap}; #[derive(Default, Debug)] pub struct StatusIssueIds { @@ -17,9 +13,6 @@ pub struct EpicIssuePerStatus { pub per_status_issues: Vec, } -// pub type VisibleIssueMap = -// HashMap>>; - #[derive(Debug, Default)] pub struct ProjectPage { pub text_filter: String, @@ -33,9 +26,9 @@ pub struct ProjectPage { impl ProjectPage { pub fn rebuild_visible( &mut self, - epics: &Vec, - statuses: &Vec, - issues: &Vec, + epics: &[Epic], + statuses: &[IssueStatus], + issues: &[Issue], user: &Option, ) { let mut map = vec![]; @@ -66,7 +59,7 @@ impl ProjectPage { let mut per_epic_map = EpicIssuePerStatus::default(); per_epic_map.epic_name = epic.map(|(_, name)| name).unwrap_or_default().to_string(); - for (current_status_id, issue_status_name) in statuses.clone() { + for (current_status_id, issue_status_name) in statuses.to_owned() { let mut per_status_map = StatusIssueIds::default(); per_status_map.status_id = current_status_id; per_status_map.status_name = issue_status_name.to_string(); @@ -111,8 +104,3 @@ fn issue_filter_with_only_my(issue: &Issue, only_my: bool, user: &Option) let my_id = user.as_ref().map(|u| u.id).unwrap_or_default(); !only_my || issue.user_ids.contains(&my_id) } - -// #[inline] -// fn issue_filter_with_only_recent(issue: &Issue, ids: &[IssueId]) -> bool { -// ids.is_empty() || ids.contains(&issue.id) -// } diff --git a/jirs-client/src/pages/project_page/update.rs b/jirs-client/src/pages/project_page/update.rs index 0589f43a..4c4e673f 100644 --- a/jirs-client/src/pages/project_page/update.rs +++ b/jirs-client/src/pages/project_page/update.rs @@ -4,14 +4,13 @@ use { pages::project_page::model::ProjectPage, shared::styled_select::StyledSelectChanged, ws::{board_load, send_ws_msg}, - BoardPageChange, EditIssueModalSection, FieldId, Msg, PageChanged, WebSocketChanged, + BoardPageChange, EditIssueModalSection, FieldId, Msg, OperationKind, PageChanged, + ResourceKind, }, jirs_data::*, seed::prelude::Orders, }; -use crate::{OperationKind, ResourceKind}; - pub fn update(msg: Msg, model: &mut crate::model::Model, orders: &mut impl Orders) { if model.user.is_none() { return; @@ -32,8 +31,7 @@ pub fn update(msg: Msg, model: &mut crate::model::Model, orders: &mut impl Order }; match msg { - Msg::WebSocketChange(WebSocketChanged::WsMsg(WsMsg::AuthorizeLoaded(..))) - | Msg::UserChanged(..) + Msg::UserChanged(..) | Msg::ProjectChanged(Some(..)) | Msg::ChangePage(Page::Project) | Msg::ChangePage(Page::AddIssue) diff --git a/jirs-client/src/pages/project_page/view.rs b/jirs-client/src/pages/project_page/view.rs index f1125221..f71cb1fa 100644 --- a/jirs-client/src/pages/project_page/view.rs +++ b/jirs-client/src/pages/project_page/view.rs @@ -236,21 +236,6 @@ fn project_issue(model: &Model, issue: &Issue) -> Node { .into_node() }) .collect(); - // let avatars: Vec> = model - // .users - // .iter() - // .enumerate() - // .filter(|(_, user)| issue.user_ids.contains(&user.id)) - // .map(|(idx, user)| { - // StyledAvatar::build() - // .size(24) - // .name(user.name.as_str()) - // .avatar_url(user.avatar_url.as_deref().unwrap_or_default()) - // .user_index(idx) - // .build() - // .into_node() - // }) - // .collect(); let issue_type_icon = StyledIcon::build(issue.issue_type.clone().into()) .with_color(issue.issue_type.to_str()) diff --git a/jirs-client/src/pages/project_settings_page/mod.rs b/jirs-client/src/pages/project_settings_page/mod.rs index bc6b2959..aecce944 100644 --- a/jirs-client/src/pages/project_settings_page/mod.rs +++ b/jirs-client/src/pages/project_settings_page/mod.rs @@ -1,6 +1,4 @@ -pub use model::*; -pub use update::*; -pub use view::*; +pub use {model::*, update::*, view::*}; mod model; mod update; diff --git a/jirs-client/src/pages/project_settings_page/model.rs b/jirs-client/src/pages/project_settings_page/model.rs index 50b2f248..4fa0a3f6 100644 --- a/jirs-client/src/pages/project_settings_page/model.rs +++ b/jirs-client/src/pages/project_settings_page/model.rs @@ -1,11 +1,12 @@ -use jirs_data::{IssueStatusId, Project, ProjectFieldId, UpdateProjectPayload}; - -use crate::{ - shared::{ - drag::DragState, styled_checkbox::StyledCheckboxState, styled_input::StyledInputState, - styled_select::StyledSelectState, +use { + crate::{ + shared::{ + drag::DragState, styled_checkbox::StyledCheckboxState, styled_input::StyledInputState, + styled_select::StyledSelectState, + }, + FieldId, }, - FieldId, + jirs_data::{IssueStatusId, Project, ProjectFieldId, UpdateProjectPayload}, }; #[derive(Debug)] @@ -18,7 +19,6 @@ pub struct ProjectSettingsPage { pub edit_column_id: Option, pub creating_issue_status: bool, pub name: StyledInputState, - // pub description_rte: StyledRteState, } impl ProjectSettingsPage { @@ -58,9 +58,6 @@ impl ProjectSettingsPage { FieldId::ProjectSettings(ProjectFieldId::IssueStatusName), "", ), - // description_rte: StyledRteState::new(FieldId::ProjectSettings( - // ProjectFieldId::Description, - // )), } } diff --git a/jirs-client/src/pages/project_settings_page/update.rs b/jirs-client/src/pages/project_settings_page/update.rs index 89aa7d3a..894eb0f0 100644 --- a/jirs-client/src/pages/project_settings_page/update.rs +++ b/jirs-client/src/pages/project_settings_page/update.rs @@ -1,6 +1,7 @@ use { crate::{ model::{Model, Page, PageContent}, + pages::project_settings_page::ProjectSettingsPage, shared::styled_select::StyledSelectChanged, ws::{board_load, send_ws_msg}, FieldChange::TabChanged, @@ -11,8 +12,6 @@ use { std::collections::HashSet, }; -use crate::pages::project_settings_page::ProjectSettingsPage; - pub fn update(msg: Msg, model: &mut Model, orders: &mut impl Orders) { if model.page != Page::ProjectSettings { return; diff --git a/jirs-client/src/pages/project_settings_page/view.rs b/jirs-client/src/pages/project_settings_page/view.rs index 68b54cf5..d1999694 100644 --- a/jirs-client/src/pages/project_settings_page/view.rs +++ b/jirs-client/src/pages/project_settings_page/view.rs @@ -1,27 +1,26 @@ -use std::collections::HashMap; - -use seed::{prelude::*, *}; - -use jirs_data::{IssueStatus, ProjectCategory, TimeTracking, ToVec}; - -use crate::{ - modals::issue_statuses_delete::Model as DeleteIssueStatusModal, - model::{self, ModalType, Model, PageContent}, - pages::project_settings_page::ProjectSettingsPage, - shared::{ - inner_layout, - styled_button::StyledButton, - styled_checkbox::StyledCheckbox, - styled_editor::StyledEditor, - styled_field::StyledField, - styled_form::StyledForm, - styled_icon::{Icon, StyledIcon}, - styled_input::StyledInput, - styled_select::StyledSelect, - styled_textarea::StyledTextarea, - ToChild, ToNode, +use { + crate::{ + modals::issue_statuses_delete::Model as DeleteIssueStatusModal, + model::{self, ModalType, Model, PageContent}, + pages::project_settings_page::ProjectSettingsPage, + shared::{ + inner_layout, + styled_button::StyledButton, + styled_checkbox::StyledCheckbox, + styled_editor::StyledEditor, + styled_field::StyledField, + styled_form::StyledForm, + styled_icon::{Icon, StyledIcon}, + styled_input::StyledInput, + styled_select::StyledSelect, + styled_textarea::StyledTextarea, + ToChild, ToNode, + }, + FieldId, Msg, PageChanged, ProjectFieldId, ProjectPageChange, }, - FieldId, Msg, PageChanged, ProjectFieldId, ProjectPageChange, + jirs_data::{IssueStatus, ProjectCategory, TimeTracking, ToVec}, + seed::{prelude::*, *}, + std::collections::HashMap, }; // use crate::shared::styled_rte::StyledRte; @@ -225,6 +224,7 @@ fn columns_section(model: &Model, page: &ProjectSettingsPage) -> Node { .into_node() } +#[inline] fn add_column(page: &ProjectSettingsPage, column_style: &str) -> Node { let on_click = mouse_ev(Ev::Click, move |_| { Msg::PageChanged(PageChanged::ProjectSettings( @@ -268,6 +268,7 @@ fn add_column(page: &ProjectSettingsPage, column_style: &str) -> Node { } } +#[inline] fn column_preview( is: &IssueStatus, page: &ProjectSettingsPage, diff --git a/jirs-client/src/pages/reports_page/mod.rs b/jirs-client/src/pages/reports_page/mod.rs index 334568ff..672d9947 100644 --- a/jirs-client/src/pages/reports_page/mod.rs +++ b/jirs-client/src/pages/reports_page/mod.rs @@ -1,5 +1,4 @@ -pub use update::*; -pub use view::*; +pub use {model::*, update::*, view::*}; pub mod model; pub mod update; diff --git a/jirs-client/src/pages/reports_page/update.rs b/jirs-client/src/pages/reports_page/update.rs index 66dee9d9..cc8d8c4a 100644 --- a/jirs-client/src/pages/reports_page/update.rs +++ b/jirs-client/src/pages/reports_page/update.rs @@ -1,13 +1,13 @@ -use seed::prelude::*; - -use jirs_data::WsMsg; - -use crate::pages::reports_page::model::ReportsPage; -use crate::{ - changes::{PageChanged, ReportsPageChange}, - model::{Model, Page, PageContent}, - ws::board_load, - Msg, WebSocketChanged, +use { + crate::{ + changes::{PageChanged, ReportsPageChange}, + model::{Model, Page, PageContent}, + pages::reports_page::model::ReportsPage, + ws::board_load, + Msg, WebSocketChanged, + }, + jirs_data::WsMsg, + seed::prelude::*, }; pub fn update(msg: Msg, model: &mut crate::model::Model, orders: &mut impl Orders) { diff --git a/jirs-client/src/pages/reports_page/view.rs b/jirs-client/src/pages/reports_page/view.rs index bac2056f..b136df1e 100644 --- a/jirs-client/src/pages/reports_page/view.rs +++ b/jirs-client/src/pages/reports_page/view.rs @@ -1,15 +1,14 @@ -use std::collections::HashMap; - -use chrono::Datelike; -use seed::{prelude::*, *}; - -use jirs_data::Issue; - -use crate::pages::reports_page::model::ReportsPage; -use crate::{ - model::{Model, PageContent}, - shared::{inner_layout, styled_icon::StyledIcon, ToNode}, - Msg, PageChanged, ReportsPageChange, +use { + crate::{ + model::{Model, PageContent}, + pages::reports_page::model::ReportsPage, + shared::{inner_layout, styled_icon::StyledIcon, ToNode}, + Msg, PageChanged, ReportsPageChange, + }, + chrono::Datelike, + jirs_data::Issue, + seed::{prelude::*, *}, + std::collections::HashMap, }; const SVG_MARGIN_X: u32 = 10; diff --git a/jirs-client/src/pages/sign_in_page/mod.rs b/jirs-client/src/pages/sign_in_page/mod.rs index 334568ff..672d9947 100644 --- a/jirs-client/src/pages/sign_in_page/mod.rs +++ b/jirs-client/src/pages/sign_in_page/mod.rs @@ -1,5 +1,4 @@ -pub use update::*; -pub use view::*; +pub use {model::*, update::*, view::*}; pub mod model; pub mod update; diff --git a/jirs-client/src/pages/sign_in_page/update.rs b/jirs-client/src/pages/sign_in_page/update.rs index ae91d063..e4577de0 100644 --- a/jirs-client/src/pages/sign_in_page/update.rs +++ b/jirs-client/src/pages/sign_in_page/update.rs @@ -1,16 +1,15 @@ -use std::str::FromStr; - -use seed::{prelude::*, *}; -use uuid::Uuid; - -use jirs_data::{SignInFieldId, WsMsg}; - -use crate::pages::sign_in_page::model::SignInPage; -use crate::{ - model::{self, Model, Page, PageContent}, - shared::write_auth_token, - ws::send_ws_msg, - FieldId, Msg, WebSocketChanged, +use { + crate::{ + model::{self, Model, Page, PageContent}, + pages::sign_in_page::model::SignInPage, + shared::write_auth_token, + ws::send_ws_msg, + FieldId, Msg, WebSocketChanged, + }, + jirs_data::{SignInFieldId, WsMsg}, + seed::{prelude::*, *}, + std::str::FromStr, + uuid::Uuid, }; pub fn update(msg: Msg, model: &mut model::Model, orders: &mut impl Orders) { diff --git a/jirs-client/src/pages/sign_in_page/view.rs b/jirs-client/src/pages/sign_in_page/view.rs index 76662921..b671e7ec 100644 --- a/jirs-client/src/pages/sign_in_page/view.rs +++ b/jirs-client/src/pages/sign_in_page/view.rs @@ -1,19 +1,20 @@ -use seed::{prelude::*, *}; - -use crate::{ - model::{self, PageContent}, - shared::{ - outer_layout, - styled_button::StyledButton, - styled_field::StyledField, - styled_form::StyledForm, - styled_icon::{Icon, StyledIcon}, - styled_input::StyledInput, - styled_link::StyledLink, - ToNode, +use { + crate::{ + model::{self, PageContent}, + shared::{ + outer_layout, + styled_button::StyledButton, + styled_field::StyledField, + styled_form::StyledForm, + styled_icon::{Icon, StyledIcon}, + styled_input::StyledInput, + styled_link::StyledLink, + ToNode, + }, + validations::{is_email, is_token}, + FieldId, Msg, SignInFieldId, }, - validations::{is_email, is_token}, - FieldId, Msg, SignInFieldId, + seed::{prelude::*, *}, }; pub fn view(model: &model::Model) -> Node { diff --git a/jirs-client/src/pages/sign_up_page/mod.rs b/jirs-client/src/pages/sign_up_page/mod.rs index 334568ff..672d9947 100644 --- a/jirs-client/src/pages/sign_up_page/mod.rs +++ b/jirs-client/src/pages/sign_up_page/mod.rs @@ -1,5 +1,4 @@ -pub use update::*; -pub use view::*; +pub use {model::*, update::*, view::*}; pub mod model; pub mod update; diff --git a/jirs-client/src/pages/sign_up_page/update.rs b/jirs-client/src/pages/sign_up_page/update.rs index f747fbef..a27ea6c1 100644 --- a/jirs-client/src/pages/sign_up_page/update.rs +++ b/jirs-client/src/pages/sign_up_page/update.rs @@ -1,12 +1,12 @@ -use seed::prelude::*; - -use jirs_data::{SignUpFieldId, WsMsg}; - -use crate::pages::sign_up_page::model::SignUpPage; -use crate::{ - model::{self, Model, Page, PageContent}, - ws::send_ws_msg, - FieldId, Msg, WebSocketChanged, +use { + crate::{ + model::{self, Model, Page, PageContent}, + pages::sign_up_page::model::SignUpPage, + ws::send_ws_msg, + FieldId, Msg, WebSocketChanged, + }, + jirs_data::{SignUpFieldId, WsMsg}, + seed::prelude::*, }; pub fn update(msg: Msg, model: &mut model::Model, orders: &mut impl Orders) { diff --git a/jirs-client/src/pages/sign_up_page/view.rs b/jirs-client/src/pages/sign_up_page/view.rs index a13a5554..ffcc5755 100644 --- a/jirs-client/src/pages/sign_up_page/view.rs +++ b/jirs-client/src/pages/sign_up_page/view.rs @@ -1,21 +1,21 @@ -use seed::{prelude::*, *}; - -use jirs_data::SignUpFieldId; - -use crate::{ - model::{self, PageContent}, - shared::{ - outer_layout, - styled_button::StyledButton, - styled_field::StyledField, - styled_form::StyledForm, - styled_icon::{Icon, StyledIcon}, - styled_input::StyledInput, - styled_link::StyledLink, - ToNode, +use { + crate::{ + model::{self, PageContent}, + shared::{ + outer_layout, + styled_button::StyledButton, + styled_field::StyledField, + styled_form::StyledForm, + styled_icon::{Icon, StyledIcon}, + styled_input::StyledInput, + styled_link::StyledLink, + ToNode, + }, + validations::is_email, + FieldId, Msg, }, - validations::is_email, - FieldId, Msg, + jirs_data::SignUpFieldId, + seed::{prelude::*, *}, }; pub fn view(model: &model::Model) -> Node { diff --git a/jirs-client/src/pages/users_page/mod.rs b/jirs-client/src/pages/users_page/mod.rs index 334568ff..672d9947 100644 --- a/jirs-client/src/pages/users_page/mod.rs +++ b/jirs-client/src/pages/users_page/mod.rs @@ -1,5 +1,4 @@ -pub use update::*; -pub use view::*; +pub use {model::*, update::*, view::*}; pub mod model; pub mod update; diff --git a/jirs-client/src/pages/users_page/model.rs b/jirs-client/src/pages/users_page/model.rs index a08a8632..c975e1b9 100644 --- a/jirs-client/src/pages/users_page/model.rs +++ b/jirs-client/src/pages/users_page/model.rs @@ -1,8 +1,7 @@ -use jirs_data::{Invitation, User, UserRole, UsersFieldId}; - -use crate::model::InvitationFormState; -use crate::shared::styled_select::StyledSelectState; -use crate::FieldId; +use { + crate::{model::InvitationFormState, shared::styled_select::StyledSelectState, FieldId}, + jirs_data::{Invitation, User, UserRole, UsersFieldId}, +}; #[derive(Debug)] pub struct UsersPage { diff --git a/jirs-client/src/pages/users_page/update.rs b/jirs-client/src/pages/users_page/update.rs index 1d2911f5..1f3d60f7 100644 --- a/jirs-client/src/pages/users_page/update.rs +++ b/jirs-client/src/pages/users_page/update.rs @@ -1,13 +1,13 @@ -use seed::prelude::Orders; - -use jirs_data::{InvitationState, UserRole, UsersFieldId, WsMsg}; - -use crate::pages::users_page::model::UsersPage; -use crate::{ - model::{InvitationFormState, Model, Page, PageContent}, - shared::styled_select::StyledSelectChanged, - ws::{invitation_load, send_ws_msg}, - FieldId, Msg, PageChanged, UsersPageChange, WebSocketChanged, +use { + crate::{ + model::{InvitationFormState, Model, Page, PageContent}, + pages::users_page::model::UsersPage, + shared::styled_select::StyledSelectChanged, + ws::{invitation_load, send_ws_msg}, + FieldId, Msg, PageChanged, UsersPageChange, WebSocketChanged, + }, + jirs_data::{InvitationState, UserRole, UsersFieldId, WsMsg}, + seed::prelude::Orders, }; pub fn update(msg: Msg, model: &mut Model, orders: &mut impl Orders) { diff --git a/jirs-client/src/pages/users_page/view.rs b/jirs-client/src/pages/users_page/view.rs index ecf23c42..547c193c 100644 --- a/jirs-client/src/pages/users_page/view.rs +++ b/jirs-client/src/pages/users_page/view.rs @@ -1,16 +1,16 @@ -use seed::{prelude::*, *}; - -use jirs_data::{InvitationState, ToVec, UserRole, UsersFieldId}; - -use crate::{ - model::{InvitationFormState, Model, PageContent}, - shared::{ - inner_layout, styled_button::StyledButton, styled_field::StyledField, - styled_form::StyledForm, styled_input::StyledInput, styled_select::StyledSelect, ToChild, - ToNode, +use { + crate::{ + model::{InvitationFormState, Model, PageContent}, + shared::{ + inner_layout, styled_button::StyledButton, styled_field::StyledField, + styled_form::StyledForm, styled_input::StyledInput, styled_select::StyledSelect, + ToChild, ToNode, + }, + validations::is_email, + FieldId, Msg, PageChanged, UsersPageChange, }, - validations::is_email, - FieldId, Msg, PageChanged, UsersPageChange, + jirs_data::{InvitationState, ToVec, UserRole, UsersFieldId}, + seed::{prelude::*, *}, }; pub fn view(model: &Model) -> Node { diff --git a/jirs-client/src/shared/mod.rs b/jirs-client/src/shared/mod.rs index 4a55ca29..574ac5c6 100644 --- a/jirs-client/src/shared/mod.rs +++ b/jirs-client/src/shared/mod.rs @@ -1,10 +1,10 @@ -use seed::{prelude::*, *}; - -use jirs_data::*; - -use crate::{ - model::{Model, Page}, - resolve_page, Msg, +use { + crate::{ + model::{Model, Page}, + resolve_page, Msg, + }, + jirs_data::*, + seed::{prelude::*, *}, }; pub mod aside; @@ -65,10 +65,12 @@ pub trait ToNode { fn into_node(self) -> Node; } +#[inline] pub fn divider() -> Node { div![C!["divider"], ""] } +#[inline] pub fn inner_layout(model: &Model, page_name: &str, children: Vec>) -> Node { let modal_node = crate::modal::view(model); article![ @@ -81,6 +83,7 @@ pub fn inner_layout(model: &Model, page_name: &str, children: Vec>) -> ] } +#[inline] pub fn outer_layout(model: &Model, page_name: &str, children: Vec>) -> Node { let modal = crate::modal::view(model); article![ diff --git a/jirs-client/src/shared/navbar_left.rs b/jirs-client/src/shared/navbar_left.rs index 72dcb85f..964971e4 100644 --- a/jirs-client/src/shared/navbar_left.rs +++ b/jirs-client/src/shared/navbar_left.rs @@ -1,18 +1,18 @@ -use seed::{prelude::*, *}; - -use jirs_data::{InvitationToken, Message, MessageType, WsMsg}; - -use crate::{ - model::Model, - shared::{ - divider, - styled_avatar::StyledAvatar, - styled_button::StyledButton, - styled_icon::{Icon, StyledIcon}, - styled_tooltip, ToNode, +use { + crate::{ + model::Model, + shared::{ + divider, + styled_avatar::StyledAvatar, + styled_button::StyledButton, + styled_icon::{Icon, StyledIcon}, + styled_tooltip, ToNode, + }, + ws::send_ws_msg, + Msg, Page, }, - ws::send_ws_msg, - Msg, Page, + jirs_data::{InvitationToken, Message, MessageType, WsMsg}, + seed::{prelude::*, *}, }; trait IntoNavItemIcon { @@ -45,7 +45,6 @@ pub fn render(model: &Model) -> Vec> { let logo_svg = img![ attrs![At::Src => "/logo2.svg"; At::Style => "background: rgba(244,244,244,.8); border-radius: 24px;"] ]; - // let logo_svg = Node::from_html(include_str!("../../static/logo.svg")); let user_icon = match model.user.as_ref() { Some(user) => i![ diff --git a/jirs-client/src/shared/styled_editor.rs b/jirs-client/src/shared/styled_editor.rs index e5d157d9..0a57c1e6 100644 --- a/jirs-client/src/shared/styled_editor.rs +++ b/jirs-client/src/shared/styled_editor.rs @@ -38,6 +38,7 @@ pub struct StyledEditor { } impl StyledEditor { + #[inline] pub fn build(id: FieldId) -> StyledEditorBuilder { StyledEditorBuilder { id, @@ -61,6 +62,7 @@ pub struct StyledEditorBuilder { } impl StyledEditorBuilder { + #[inline] pub fn text(mut self, text: S) -> Self where S: Into, @@ -69,6 +71,7 @@ impl StyledEditorBuilder { self } + #[inline] pub fn initial_text(mut self, text: S) -> Self where S: Into, @@ -77,6 +80,7 @@ impl StyledEditorBuilder { self } + #[inline] pub fn html(mut self, text: S) -> Self where S: Into, @@ -85,11 +89,13 @@ impl StyledEditorBuilder { self } + #[inline] pub fn mode(mut self, mode: Mode) -> Self { self.mode = mode; self } + #[inline] pub fn build(self) -> StyledEditor { StyledEditor { id: self.id, @@ -101,6 +107,7 @@ impl StyledEditorBuilder { } } + #[inline] pub fn update_on(mut self, ev: Ev) -> Self { self.update_event = Some(ev); self @@ -108,11 +115,13 @@ impl StyledEditorBuilder { } impl ToNode for StyledEditor { + #[inline] fn into_node(self) -> Node { render(self) } } +#[inline] pub fn render(values: StyledEditor) -> Node { let StyledEditor { id, diff --git a/jirs-client/src/shared/styled_form.rs b/jirs-client/src/shared/styled_form.rs index 894a78cd..c6f06ca0 100644 --- a/jirs-client/src/shared/styled_form.rs +++ b/jirs-client/src/shared/styled_form.rs @@ -1,7 +1,7 @@ -use seed::{prelude::*, *}; - -use crate::shared::ToNode; -use crate::Msg; +use { + crate::{shared::ToNode, Msg}, + seed::{prelude::*, *}, +}; #[derive(Debug, Clone)] pub struct StyledForm<'l> { @@ -11,12 +11,14 @@ pub struct StyledForm<'l> { } impl<'l> StyledForm<'l> { + #[inline] pub fn build() -> StyledFormBuilder<'l> { StyledFormBuilder::default() } } impl<'l> ToNode for StyledForm<'l> { + #[inline] fn into_node(self) -> Node { render(self) } @@ -30,11 +32,13 @@ pub struct StyledFormBuilder<'l> { } impl<'l> StyledFormBuilder<'l> { + #[inline] pub fn add_field(mut self, node: Node) -> Self { self.fields.push(node); self } + #[inline] pub fn try_field(mut self, node: Option>) -> Self { if let Some(n) = node { self.fields.push(n); @@ -42,16 +46,19 @@ impl<'l> StyledFormBuilder<'l> { self } + #[inline] pub fn heading(mut self, heading: &'l str) -> Self { self.heading = heading; self } + #[inline] pub fn on_submit(mut self, on_submit: EventHandler) -> Self { self.on_submit = Some(on_submit); self } + #[inline] pub fn build(self) -> StyledForm<'l> { StyledForm { heading: self.heading, @@ -61,6 +68,7 @@ impl<'l> StyledFormBuilder<'l> { } } +#[inline] pub fn render(values: StyledForm) -> Node { let StyledForm { heading, @@ -73,7 +81,7 @@ pub fn render(values: StyledForm) -> Node { }; seed::form![ handlers, - attrs![At::Class => "styledForm"], + C!["styledForm"], div![C!["formElement"], div![C!["formHeading"], heading], fields], ] } diff --git a/jirs-client/src/shared/styled_input.rs b/jirs-client/src/shared/styled_input.rs index e7b6ecbe..c5c68581 100644 --- a/jirs-client/src/shared/styled_input.rs +++ b/jirs-client/src/shared/styled_input.rs @@ -11,6 +11,7 @@ pub enum Variant { } impl Variant { + #[inline] pub fn to_str<'l>(&self) -> &'l str { match self { Variant::Normal => "normal", @@ -20,6 +21,7 @@ impl Variant { } impl ToString for Variant { + #[inline] fn to_string(&self) -> String { self.to_str().to_string() } @@ -33,6 +35,7 @@ pub struct StyledInputState { } impl StyledInputState { + #[inline] pub fn new(id: FieldId, value: S) -> Self where S: Into, @@ -44,18 +47,22 @@ impl StyledInputState { } } + #[inline] pub fn to_i32(&self) -> Option { self.value.parse::().ok() } + #[inline] pub fn to_f64(&self) -> Option { self.value.parse::().ok() } + #[inline] pub fn represent_f64_as_i32(&self) -> Option { self.to_f64().map(|f| (f * 10.0f64) as i32) } + #[inline] pub fn update(&mut self, msg: &Msg) { match msg { Msg::StrInputChanged(field_id, s) if field_id == &self.id => { @@ -66,6 +73,7 @@ impl StyledInputState { } } + #[inline] pub fn reset(&mut self) { self.value.clear(); } @@ -86,6 +94,7 @@ pub struct StyledInput<'l> { } impl<'l> StyledInput<'l> { + #[inline] pub fn build() -> StyledInputBuilder<'l> { StyledInputBuilder { icon: None, @@ -115,16 +124,19 @@ pub struct StyledInputBuilder<'l> { } impl<'l> StyledInputBuilder<'l> { + #[inline] pub fn icon(mut self, icon: Icon) -> Self { self.icon = Some(icon); self } + #[inline] pub fn valid(mut self, valid: bool) -> Self { self.valid = Some(valid); self } + #[inline] pub fn value(mut self, v: S) -> Self where S: Into, @@ -133,36 +145,43 @@ impl<'l> StyledInputBuilder<'l> { self } + #[inline] pub fn state(self, state: &StyledInputState) -> Self { self.value(state.value.as_str()) .valid(!state.touched || !state.value.is_empty()) } + #[inline] pub fn add_input_class(mut self, name: &'l str) -> Self { self.input_class_list.push(name); self } + #[inline] pub fn add_wrapper_class(mut self, name: &'l str) -> Self { self.wrapper_class_list.push(name); self } + #[inline] pub fn primary(mut self) -> Self { self.variant = Variant::Primary; self } + #[inline] pub fn auto_focus(mut self) -> Self { self.auto_focus = true; self } + #[inline] pub fn on_input_ev(mut self, handler: EventHandler) -> Self { self.input_handlers.push(handler); self } + #[inline] pub fn build(self, id: FieldId) -> StyledInput<'l> { StyledInput { id, @@ -180,6 +199,7 @@ impl<'l> StyledInputBuilder<'l> { } impl<'l> ToNode for StyledInput<'l> { + #[inline] fn into_node(self) -> Node { render(self) } @@ -209,10 +229,10 @@ pub fn render(values: StyledInput) -> Node { input_class_list.push("withIcon"); } - let icon = match icon { - Some(icon) => StyledIcon::build(icon).build().into_node(), - _ => empty![], - }; + let icon = icon + .map(|icon| StyledIcon::build(icon).build().into_node()) + .unwrap_or(Node::Empty); + let on_input = { let field_id = id.clone(); ev(Ev::Input, move |event| { diff --git a/jirs-client/src/shared/tracking_widget.rs b/jirs-client/src/shared/tracking_widget.rs index c04f406a..802ca88f 100644 --- a/jirs-client/src/shared/tracking_widget.rs +++ b/jirs-client/src/shared/tracking_widget.rs @@ -1,7 +1,6 @@ use { crate::{ - modal::time_tracking::value_for_time_tracking, - modals::issues_edit::Model as EditIssueModal, + modals::{issues_edit::Model as EditIssueModal, time_tracking::value_for_time_tracking}, model::{ModalType, Model}, shared::{ styled_icon::{Icon, StyledIcon}, diff --git a/jirs-server/src/errors.rs b/jirs-server/src/errors.rs index e51ef382..806095c3 100644 --- a/jirs-server/src/errors.rs +++ b/jirs-server/src/errors.rs @@ -1,6 +1,7 @@ -use actix_web::HttpResponse; - -use jirs_data::{msg::WsError, ErrorResponse}; +use { + actix_web::HttpResponse, + jirs_data::{msg::WsError, ErrorResponse}, +}; const TOKEN_NOT_FOUND: &str = "Token not found"; const DATABASE_CONNECTION_FAILED: &str = "Database connection failed"; diff --git a/shared/jirs-config/src/amazon.rs b/shared/jirs-config/src/amazon.rs index 43ef6030..20cfd3e2 100644 --- a/shared/jirs-config/src/amazon.rs +++ b/shared/jirs-config/src/amazon.rs @@ -1,5 +1,7 @@ -use rusoto_signature::Region; -use serde::{Deserialize, Serialize}; +use { + rusoto_signature::Region, + serde::{Deserialize, Serialize}, +}; #[derive(Serialize, Deserialize, Debug)] pub struct Configuration { diff --git a/shared/jirs-config/src/utils.rs b/shared/jirs-config/src/utils.rs index b0aa1465..a72948da 100644 --- a/shared/jirs-config/src/utils.rs +++ b/shared/jirs-config/src/utils.rs @@ -1,7 +1,7 @@ -use std::fs::{read_to_string, write}; - -use serde::export::PhantomData; -use serde::{de::DeserializeOwned, Serialize}; +use { + serde::{de::DeserializeOwned, export::PhantomData, Serialize}, + std::fs::{read_to_string, write}, +}; pub struct Reader { __phantom: PhantomData, diff --git a/shared/jirs-data/src/lib.rs b/shared/jirs-data/src/lib.rs index 288c3bfd..aec013d0 100644 --- a/shared/jirs-data/src/lib.rs +++ b/shared/jirs-data/src/lib.rs @@ -1,17 +1,16 @@ -use std::cmp::Ordering; -use std::str::FromStr; - -use chrono::NaiveDateTime; #[cfg(feature = "backend")] use diesel::*; -use serde::{Deserialize, Serialize}; -use uuid::Uuid; -pub use fields::*; -pub use msg::WsMsg; -pub use payloads::*; #[cfg(feature = "backend")] pub use sql::*; +use { + chrono::NaiveDateTime, + serde::{Deserialize, Serialize}, + std::cmp::Ordering, + std::str::FromStr, + uuid::Uuid, +}; +pub use {fields::*, msg::WsMsg, payloads::*}; pub mod fields; pub mod msg; diff --git a/shared/jirs-data/src/payloads.rs b/shared/jirs-data/src/payloads.rs index 3c78cea1..5005147b 100644 --- a/shared/jirs-data/src/payloads.rs +++ b/shared/jirs-data/src/payloads.rs @@ -1,8 +1,9 @@ -use serde::{Deserialize, Serialize}; - -use crate::{ - CommentId, EpicId, Issue, IssueId, IssuePriority, IssueStatusId, IssueType, ProjectCategory, - ProjectId, TimeTracking, UserId, +use { + crate::{ + CommentId, EpicId, Issue, IssueId, IssuePriority, IssueStatusId, IssueType, + ProjectCategory, ProjectId, TimeTracking, UserId, + }, + serde::{Deserialize, Serialize}, }; #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] diff --git a/shared/jirs-data/src/sql.rs b/shared/jirs-data/src/sql.rs index 5b3da0e3..5aafaee0 100644 --- a/shared/jirs-data/src/sql.rs +++ b/shared/jirs-data/src/sql.rs @@ -1,9 +1,10 @@ -use std::io::Write; - -use diesel::{deserialize::*, pg::*, serialize::*, *}; - -use crate::{ - InvitationState, IssuePriority, IssueType, MessageType, ProjectCategory, TimeTracking, UserRole, +use { + crate::{ + InvitationState, IssuePriority, IssueType, MessageType, ProjectCategory, TimeTracking, + UserRole, + }, + diesel::{deserialize::*, pg::*, serialize::*, *}, + std::io::Write, }; #[derive(SqlType)]