Show edit modal on start
This commit is contained in:
parent
f2081c9974
commit
767d247647
@ -1,9 +1,10 @@
|
|||||||
use seed::{prelude::*, *};
|
use seed::{prelude::*, *};
|
||||||
|
|
||||||
use jirs_data::UpdateIssuePayload;
|
use jirs_data::UpdateIssuePayload;
|
||||||
|
use jirs_data::*;
|
||||||
|
|
||||||
use crate::api::send_ws_msg;
|
use crate::api::send_ws_msg;
|
||||||
use crate::model::{AddIssueModal, EditIssueModal, ModalType, Page};
|
use crate::model::{AddIssueModal, EditIssueModal, ModalType, Model, Page};
|
||||||
use crate::shared::styled_editor::Mode;
|
use crate::shared::styled_editor::Mode;
|
||||||
use crate::shared::styled_modal::{StyledModal, Variant as ModalVariant};
|
use crate::shared::styled_modal::{StyledModal, Variant as ModalVariant};
|
||||||
use crate::shared::styled_select::StyledSelectState;
|
use crate::shared::styled_select::StyledSelectState;
|
||||||
@ -36,43 +37,17 @@ pub fn update(msg: &Msg, model: &mut model::Model, orders: &mut impl Orders<Msg>
|
|||||||
model.modals.push(modal_type.clone());
|
model.modals.push(modal_type.clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
Msg::ChangePage(Page::EditIssue(issue_id)) => {
|
Msg::WsMsg(jirs_data::WsMsg::ProjectIssuesLoaded(issues)) => match model.page.clone() {
|
||||||
let modal = {
|
Page::EditIssue(issue_id) if model.modals.is_empty() => {
|
||||||
let issue = match find_issue(model, *issue_id) {
|
push_edit_modal(&issue_id, model)
|
||||||
Some(issue) => issue,
|
|
||||||
_ => return,
|
|
||||||
};
|
|
||||||
ModalType::EditIssue(
|
|
||||||
*issue_id,
|
|
||||||
EditIssueModal {
|
|
||||||
id: *issue_id,
|
|
||||||
link_copied: false,
|
|
||||||
payload: UpdateIssuePayload {
|
|
||||||
title: issue.title.clone(),
|
|
||||||
issue_type: issue.issue_type.clone(),
|
|
||||||
status: issue.status.clone(),
|
|
||||||
priority: issue.priority.clone(),
|
|
||||||
list_position: issue.list_position.clone(),
|
|
||||||
description: issue.description.clone(),
|
|
||||||
description_text: issue.description_text.clone(),
|
|
||||||
estimate: issue.estimate.clone(),
|
|
||||||
time_spent: issue.time_spent.clone(),
|
|
||||||
time_remaining: issue.time_remaining.clone(),
|
|
||||||
project_id: issue.project_id.clone(),
|
|
||||||
reporter_id: issue.reporter_id.clone(),
|
|
||||||
user_ids: issue.user_ids.clone(),
|
|
||||||
},
|
|
||||||
top_type_state: StyledSelectState::new(FieldId::IssueTypeEditModalTop),
|
|
||||||
status_state: StyledSelectState::new(FieldId::StatusIssueEditModal),
|
|
||||||
reporter_state: StyledSelectState::new(FieldId::ReporterIssueEditModal),
|
|
||||||
assignees_state: StyledSelectState::new(FieldId::AssigneesIssueEditModal),
|
|
||||||
priority_state: StyledSelectState::new(FieldId::PriorityIssueEditModal),
|
|
||||||
description_editor_mode: Mode::Editor,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
};
|
|
||||||
model.modals.push(modal);
|
|
||||||
}
|
}
|
||||||
|
_ => (),
|
||||||
|
},
|
||||||
|
|
||||||
|
Msg::ChangePage(Page::EditIssue(issue_id)) => {
|
||||||
|
push_edit_modal(issue_id, model);
|
||||||
|
}
|
||||||
|
|
||||||
Msg::ChangePage(Page::AddIssue) => {
|
Msg::ChangePage(Page::AddIssue) => {
|
||||||
let mut modal = AddIssueModal::default();
|
let mut modal = AddIssueModal::default();
|
||||||
modal.project_id = model.project.as_ref().map(|p| p.id);
|
modal.project_id = model.project.as_ref().map(|p| p.id);
|
||||||
@ -109,3 +84,41 @@ pub fn view(model: &model::Model) -> Node<Msg> {
|
|||||||
.collect();
|
.collect();
|
||||||
section![id!["modals"], modals]
|
section![id!["modals"], modals]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn push_edit_modal(issue_id: &i32, model: &mut Model) {
|
||||||
|
let modal = {
|
||||||
|
let issue = match find_issue(model, *issue_id) {
|
||||||
|
Some(issue) => issue,
|
||||||
|
_ => return,
|
||||||
|
};
|
||||||
|
ModalType::EditIssue(
|
||||||
|
*issue_id,
|
||||||
|
EditIssueModal {
|
||||||
|
id: *issue_id,
|
||||||
|
link_copied: false,
|
||||||
|
payload: UpdateIssuePayload {
|
||||||
|
title: issue.title.clone(),
|
||||||
|
issue_type: issue.issue_type.clone(),
|
||||||
|
status: issue.status.clone(),
|
||||||
|
priority: issue.priority.clone(),
|
||||||
|
list_position: issue.list_position.clone(),
|
||||||
|
description: issue.description.clone(),
|
||||||
|
description_text: issue.description_text.clone(),
|
||||||
|
estimate: issue.estimate.clone(),
|
||||||
|
time_spent: issue.time_spent.clone(),
|
||||||
|
time_remaining: issue.time_remaining.clone(),
|
||||||
|
project_id: issue.project_id.clone(),
|
||||||
|
reporter_id: issue.reporter_id.clone(),
|
||||||
|
user_ids: issue.user_ids.clone(),
|
||||||
|
},
|
||||||
|
top_type_state: StyledSelectState::new(FieldId::IssueTypeEditModalTop),
|
||||||
|
status_state: StyledSelectState::new(FieldId::StatusIssueEditModal),
|
||||||
|
reporter_state: StyledSelectState::new(FieldId::ReporterIssueEditModal),
|
||||||
|
assignees_state: StyledSelectState::new(FieldId::AssigneesIssueEditModal),
|
||||||
|
priority_state: StyledSelectState::new(FieldId::PriorityIssueEditModal),
|
||||||
|
description_editor_mode: Mode::Editor,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
};
|
||||||
|
model.modals.push(modal);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user