Skip to content
Snippets Groups Projects
Commit f840a6bb authored by Planoetscher Daniel (Student Com20)'s avatar Planoetscher Daniel (Student Com20)
Browse files

tasks are now creatable

parent 899b98b6
No related branches found
No related tags found
No related merge requests found
import { Priority, Task } from 'adapters/task';
import { Priority, Task, TaskAssignment, TaskRequirement } from 'adapters/task';
import { FormEvent, useCallback, useEffect, useState } from 'react';
import './task-form.scss';
import Callout from 'components/ui/Callout';
......@@ -6,13 +6,14 @@ import TextInput from 'components/ui/TextInput';
import Picker from 'emoji-picker-react';
import { getProjectTasks, Project } from 'adapters/project';
import CheckboxGroup from 'components/ui/CheckboxGroup';
import { getTeam, getTeamMembers, getTeamRoles, TeamMember } from 'adapters/team';
import { getTeam, getTeamMembers, getTeamRoles } from 'adapters/team';
import RequirementsForm from './RequirementsForm';
import AssgineesForm from './AssigneesForm';
import Button from 'components/ui/Button';
interface Props {
task?: Task;
onSubmit: (name: string, text: string, icon: string, priority: string) => void;
onSubmit: (name: string, text: string, icon: string, priority: Priority, dependencies: string[], requirements: TaskRequirement[], assignees: TaskAssignment[]) => void;
project: Project;
}
......@@ -101,16 +102,18 @@ export default function TaskForm({ task, onSubmit, project }: Props) {
const handleSubmit = useCallback(async (e: FormEvent) => {
e.preventDefault();
console.log(priority);
if (validateName(name ?? '') === null &&
validateText(text ?? '') === null &&
validateIcon(icon ?? '') === null &&
validatePriority(priority ?? '') === null
) {
onSubmit?.(name ?? '', text ?? '', icon ?? '', priority ?? '');
onSubmit?.(name ?? '', text ?? '', icon ?? '', priority ?? Priority.LOW, tasks ?? [], requirements, assignees);
} else {
setError('Please fill in the mandatory fields.');
}
}, [onSubmit, setError, name, text, priority, icon]);
}, [onSubmit, setError, name, text, priority, icon, tasks, assignees, requirements]);
return (
<form className="task-form" onSubmit={handleSubmit}>
......@@ -159,7 +162,9 @@ export default function TaskForm({ task, onSubmit, project }: Props) {
<AssgineesForm members={allMembers} setAssignees={setAssignees} assignees={assignees} />
)
}
<Button type="submit">
Create Task
</Button>
</form>
)
......
import { useHistory, useParams } from "react-router";
import TaskForm from 'components/forms/TaskForm';
import { useCallback, useEffect, useState } from "react";
import { createTask } from "adapters/task";
import { createTask, Priority, TaskAssignment, TaskRequirement } from "adapters/task";
import Callout from "components/ui/Callout";
import { getProject, Project } from "adapters/project";
......@@ -19,13 +19,13 @@ export default function TaskCreate() {
getProject(projectId).then((project) => setProject(project));
}, []);
const handleSubmit = useCallback(async (name: string, text: string, icon: string, priority: string) => {
const handleSubmit = useCallback(async (name: string, text: string, icon: string, priority: Priority, dependencies: string[], requirements: TaskRequirement[], assignees: TaskAssignment[]) => {
try {
//if (await createTask({ project: projectId name, text, icon, priority })) {
if (await createTask({ project: projectId, name, text, icon, priority, dependencies, requirements, assigned: assignees })) {
history.push('/projects/' + projectId);
//} else {
} else {
setError('There was an error with creating your project. Please try again!');
//}
}
} catch (e) { }
}, [history, projectId]);
return (
......
......@@ -390,7 +390,7 @@ interface AddTaskBody {
text: string;
icon: string;
priority: string;
dependentcies: Array<string>;
dependencies: Array<string>;
requirements: Array<TaskRequirement>;
assigned: Array<TaskAssignment>;
token: Token;
......@@ -399,11 +399,11 @@ interface AddTaskBody {
task.post('/', async (req, res) => {
if (isOfType<AddTaskBody>(req.body, [
['project', 'string'], ['name', 'string'], ['text', 'string'], ['icon', 'string'],
['priority', 'string'], ['dependentcies', 'object'], ['requirements', 'object'],
['priority', 'string'], ['dependencies', 'object'], ['requirements', 'object'],
])) {
try {
const project_id = req.body.project;
const dependentcy_ids = req.body.dependentcies;
const dependentcy_ids = req.body.dependencies;
const assigned = req.body.assigned;
const assigned_ids = assigned.map(asg => asg.user);
const requirements = req.body.requirements;
......@@ -500,7 +500,7 @@ interface UpdateTaskBody {
remove_dependentcies?: Array<string>;
remove_requirements?: Array<string>;
remove_assigned?: Array<string>;
add_dependentcies?: Array<string>;
add_dependencies?: Array<string>;
add_requirements?: Array<TaskRequirement>;
add_assigned?: Array<TaskAssignment>;
token: Token;
......@@ -513,7 +513,7 @@ task.put('/:uuid', async (req, res) => {
const remove_dependentcy_ids = req.body.remove_dependentcies ?? [];
const remove_assigned_ids = req.body.remove_assigned ?? [];
const remove_requirement_ids = req.body.remove_requirements ?? [];
const add_dependentcy_ids = req.body.add_dependentcies ?? [];
const add_dependentcy_ids = req.body.add_dependencies ?? [];
const add_assigned = req.body.add_assigned ?? [];
const add_assigned_ids = add_assigned.map(asg => asg.user);
const add_requirements = req.body.add_requirements ?? [];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment