Implemented issue create modal, further polish

This commit is contained in:
ireic
2019-12-23 00:30:00 +01:00
parent 6809ec494a
commit 4941261251
67 changed files with 684 additions and 237 deletions

View File

@@ -19,7 +19,8 @@ router.get(
router.post(
'/issues',
catchErrors(async (req, res) => {
const issue = await createEntity(Issue, req.body);
const listPosition = await calculateListPosition(req.body);
const issue = await createEntity(Issue, { ...req.body, listPosition });
res.respond({ issue });
}),
);
@@ -40,4 +41,15 @@ router.delete(
}),
);
const calculateListPosition = async (newIssue: Issue): Promise<number> => {
const issues = await Issue.find({
where: { projectId: newIssue.projectId, status: newIssue.status },
});
const listPositions = issues.map(({ listPosition }) => listPosition);
if (listPositions.length > 0) {
return Math.min(...listPositions) - 1;
}
return 1;
};
export default router;

View File

@@ -23,6 +23,7 @@ class Issue extends BaseEntity {
type: [is.required(), is.oneOf(Object.values(IssueType))],
status: [is.required(), is.oneOf(Object.values(IssueStatus))],
priority: [is.required(), is.oneOf(Object.values(IssuePriority))],
listPosition: is.required(),
reporterId: is.required(),
};
@@ -71,6 +72,9 @@ class Issue extends BaseEntity {
)
project: Project;
@Column('integer')
projectId: number;
@OneToMany(
() => Comment,
comment => comment.issue,