First release

This commit is contained in:
Adrian Woźniak 2020-06-08 21:13:16 +02:00
parent 10f416cef5
commit 711a21f2b6
4 changed files with 69 additions and 15 deletions

View File

@ -19,6 +19,29 @@ https://git.sr.ht/~tsumanu/jirs
* Comment issue
* Add people to project
## Known bugs
* Bad sorting when dragging up and down
## Roadmap
##### Version 1.0
* Basic issue management
* Basic columns management
* Basic user management
##### Version 1.1
* Add Epic
* Add grouping by Epic
* Add backend maximal per seconds request or die
* Add fibonacci tracked issue reports
* Add hourly tracked issue reports
* Add Rich Text Editor
* Add personal settings to choose MDE (Markdown Editor) or RTE
* Add issues and filters
## How to run it
### Config files

View File

@ -11,16 +11,16 @@
#reports > .top > .issueList {
display: block;
margin-top: 15px;
}
#reports > .top > .issueList > .issueListHeader {
margin-bottom: 15px;
}
#reports > .top > .issueList > .issue {
display: flex;
justify-content: space-between;
justify-items: flex-start;
}
#reports > .top > .issueList > .issue > * {
width: 25%;
display: grid;
grid-template-columns: 32px 32px 240px auto 120px;
}
#reports > .top > .issueList > .issue.selected {

View File

@ -6,7 +6,8 @@ use seed::{prelude::*, *};
use jirs_data::Issue;
use crate::model::{Model, PageContent, ReportsPage};
use crate::shared::inner_layout;
use crate::shared::styled_icon::StyledIcon;
use crate::shared::{inner_layout, ToNode};
use crate::{Msg, PageChanged, ReportsPageChange};
const SVG_MARGIN_X: u32 = 10;
@ -100,11 +101,22 @@ fn this_month_graph(page: &Box<ReportsPage>, this_month_updated: &Vec<&Issue>) -
ReportsPageChange::DayHovered(None),
)))
});
let selected = page.selected_day.clone();
let current_date = day.clone();
let on_click: EventHandler<Msg> = mouse_ev(Ev::MouseLeave, move |_| {
Some(Msg::PageChanged(PageChanged::Reports(
ReportsPageChange::DaySelected(match selected {
Some(_) => None,
None => Some(current_date),
}),
)))
});
svg_parts.push(seed::g![
seed::rect![
on_hover,
on_blur,
on_click,
attrs![
At::X => x,
At::Y => SVG_DRAWABLE_HEIGHT as f64 - height, // reverse draw origin
@ -150,20 +162,34 @@ fn issue_list(page: &Box<ReportsPage>, this_month_updated: &Vec<&Issue>) -> Node
title,
issue_type,
priority,
description: _,
description,
issue_status_id: _,
..
} = issue;
let type_icon = StyledIcon::build(issue_type.clone().into())
.build()
.into_node();
let priority_icon = StyledIcon::build(priority.clone().into())
.build()
.into_node();
children.push(li![
class!["issue"],
class![active_class],
span![title.as_str()],
span![format!("{}", issue_type)],
span![format!("{}", priority)],
span![day.as_str()]
span![class!["priority"], priority_icon],
span![class!["type"], type_icon],
span![class!["name"], title.as_str()],
span![
class!["desc"],
description.as_ref().cloned().unwrap_or_default()
],
span![class!["updatedAt"], day.as_str()],
]);
}
div![class!["issueList"], children]
div![
class!["issueList"],
h5![class!["issueListHeader"], "Issues this month"],
children
]
}
fn this_month_updated<'a>(model: &'a Model, page: &Box<ReportsPage>) -> Vec<&'a Issue> {

View File

@ -242,8 +242,13 @@ pub fn render(values: StyledInput) -> Node<Msg> {
At::Class => input_class_list.join(" "),
At::Value => value.unwrap_or_default(),
At::Type => input_type.unwrap_or_else(|| "text".to_string()),
At::AutoFocus => auto_focus,
],
if auto_focus {
vec![attrs![At::AutoFocus => true]]
} else {
vec![]
},
input_handlers,
],
]