Update column name with logic and possibility to click on any place of text. Broadcast column update
This commit is contained in:
parent
84fc86cec7
commit
b2cbb251d1
@ -114,6 +114,18 @@ pub fn update(msg: Msg, model: &mut model::Model, orders: &mut impl Orders<Msg>)
|
|||||||
Msg::PageChanged(PageChanged::ProjectSettings(ProjectPageChange::EditIssueStatusName(
|
Msg::PageChanged(PageChanged::ProjectSettings(ProjectPageChange::EditIssueStatusName(
|
||||||
id,
|
id,
|
||||||
))) => {
|
))) => {
|
||||||
|
if page.edit_column_id.is_some() && id.is_none() {
|
||||||
|
let old_id = page.edit_column_id.as_ref().cloned();
|
||||||
|
let name = page.name.value.clone();
|
||||||
|
if let Some((id, pos)) = model
|
||||||
|
.issue_statuses
|
||||||
|
.iter()
|
||||||
|
.find(|is| Some(is.id) == old_id)
|
||||||
|
.map(|is| (is.id, is.position))
|
||||||
|
{
|
||||||
|
send_ws_msg(WsMsg::IssueStatusUpdate(id, name.to_string(), pos))
|
||||||
|
}
|
||||||
|
}
|
||||||
page.name.value = model
|
page.name.value = model
|
||||||
.issue_statuses
|
.issue_statuses
|
||||||
.iter()
|
.iter()
|
||||||
@ -259,9 +271,8 @@ pub fn view(model: &model::Model) -> Node<Msg> {
|
|||||||
Msg::PageChanged(PageChanged::ProjectSettings(ProjectPageChange::ColumnDragLeave(id)))
|
Msg::PageChanged(PageChanged::ProjectSettings(ProjectPageChange::ColumnDragLeave(id)))
|
||||||
});
|
});
|
||||||
|
|
||||||
let name = if page.edit_column_id == Some(id) {
|
if page.edit_column_id == Some(id) {
|
||||||
let blur = ev("focusout", |_| {
|
let blur = ev("focusout", |_| {
|
||||||
log!("asdasdasd");
|
|
||||||
Msg::PageChanged(PageChanged::ProjectSettings(ProjectPageChange::EditIssueStatusName(None)))
|
Msg::PageChanged(PageChanged::ProjectSettings(ProjectPageChange::EditIssueStatusName(None)))
|
||||||
});
|
});
|
||||||
let input = StyledInput::build(FieldId::ProjectSettings(ProjectFieldId::IssueStatusName))
|
let input = StyledInput::build(FieldId::ProjectSettings(ProjectFieldId::IssueStatusName))
|
||||||
@ -272,22 +283,24 @@ pub fn view(model: &model::Model) -> Node<Msg> {
|
|||||||
.build()
|
.build()
|
||||||
.into_node();
|
.into_node();
|
||||||
|
|
||||||
|
div![
|
||||||
|
class!["columnPreview"],
|
||||||
div![class!["columnName"], input]
|
div![class!["columnName"], input]
|
||||||
|
]
|
||||||
} else {
|
} else {
|
||||||
let edit = mouse_ev(Ev::Click, move |_| {
|
let edit = mouse_ev(Ev::Click, move |_| {
|
||||||
Msg::PageChanged(PageChanged::ProjectSettings(ProjectPageChange::EditIssueStatusName(Some(id))))
|
Msg::PageChanged(PageChanged::ProjectSettings(ProjectPageChange::EditIssueStatusName(Some(id))))
|
||||||
});
|
});
|
||||||
div![class!["columnName"], span![is.name], edit]
|
div![
|
||||||
};
|
|
||||||
div![
|
|
||||||
class!["columnPreview"],
|
class!["columnPreview"],
|
||||||
attrs![At::Style => column_style.as_str(), At::Draggable => "true", At::DropZone => "true"],
|
attrs![At::Style => column_style.as_str(), At::Draggable => "true", At::DropZone => "true"],
|
||||||
name,
|
div![class!["columnName"], span![is.name], edit],
|
||||||
drag_started,
|
drag_started,
|
||||||
drag_stopped,
|
drag_stopped,
|
||||||
drag_over_handler,
|
drag_over_handler,
|
||||||
drag_out,
|
drag_out,
|
||||||
]
|
]
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
let add_column = StyledIcon::build(Icon::Plus).build().into_node();
|
let add_column = StyledIcon::build(Icon::Plus).build().into_node();
|
||||||
@ -307,6 +320,7 @@ pub fn view(model: &model::Model) -> Node<Msg> {
|
|||||||
.add_class("columnsField")
|
.add_class("columnsField")
|
||||||
.input(columns_section)
|
.input(columns_section)
|
||||||
.label("Columns")
|
.label("Columns")
|
||||||
|
.tip("Double-click on name to change it.")
|
||||||
.build()
|
.build()
|
||||||
.into_node();
|
.into_node();
|
||||||
|
|
||||||
|
@ -88,6 +88,9 @@ impl WsHandler<UpdateIssueStatus> for WebSocketActor {
|
|||||||
Ok(Ok(is)) => Some(WsMsg::IssueStatusUpdated(is)),
|
Ok(Ok(is)) => Some(WsMsg::IssueStatusUpdated(is)),
|
||||||
_ => None,
|
_ => None,
|
||||||
};
|
};
|
||||||
|
if let Some(ws_msg) = msg.as_ref() {
|
||||||
|
self.broadcast(ws_msg)
|
||||||
|
}
|
||||||
Ok(msg)
|
Ok(msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user