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 { FormEvent, useCallback, useEffect, useState } from 'react';
import './task-form.scss'; import './task-form.scss';
import Callout from 'components/ui/Callout'; import Callout from 'components/ui/Callout';
...@@ -6,13 +6,14 @@ import TextInput from 'components/ui/TextInput'; ...@@ -6,13 +6,14 @@ import TextInput from 'components/ui/TextInput';
import Picker from 'emoji-picker-react'; import Picker from 'emoji-picker-react';
import { getProjectTasks, Project } from 'adapters/project'; import { getProjectTasks, Project } from 'adapters/project';
import CheckboxGroup from 'components/ui/CheckboxGroup'; 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 RequirementsForm from './RequirementsForm';
import AssgineesForm from './AssigneesForm'; import AssgineesForm from './AssigneesForm';
import Button from 'components/ui/Button';
interface Props { interface Props {
task?: Task; 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; project: Project;
} }
...@@ -101,16 +102,18 @@ export default function TaskForm({ task, onSubmit, project }: Props) { ...@@ -101,16 +102,18 @@ export default function TaskForm({ task, onSubmit, project }: Props) {
const handleSubmit = useCallback(async (e: FormEvent) => { const handleSubmit = useCallback(async (e: FormEvent) => {
e.preventDefault(); e.preventDefault();
console.log(priority);
if (validateName(name ?? '') === null && if (validateName(name ?? '') === null &&
validateText(text ?? '') === null && validateText(text ?? '') === null &&
validateIcon(icon ?? '') === null && validateIcon(icon ?? '') === null &&
validatePriority(priority ?? '') === null validatePriority(priority ?? '') === null
) { ) {
onSubmit?.(name ?? '', text ?? '', icon ?? '', priority ?? ''); onSubmit?.(name ?? '', text ?? '', icon ?? '', priority ?? Priority.LOW, tasks ?? [], requirements, assignees);
} else { } else {
setError('Please fill in the mandatory fields.'); setError('Please fill in the mandatory fields.');
} }
}, [onSubmit, setError, name, text, priority, icon]); }, [onSubmit, setError, name, text, priority, icon, tasks, assignees, requirements]);
return ( return (
<form className="task-form" onSubmit={handleSubmit}> <form className="task-form" onSubmit={handleSubmit}>
...@@ -159,7 +162,9 @@ export default function TaskForm({ task, onSubmit, project }: Props) { ...@@ -159,7 +162,9 @@ export default function TaskForm({ task, onSubmit, project }: Props) {
<AssgineesForm members={allMembers} setAssignees={setAssignees} assignees={assignees} /> <AssgineesForm members={allMembers} setAssignees={setAssignees} assignees={assignees} />
) )
} }
<Button type="submit">
Create Task
</Button>
</form> </form>
) )
......
import { useHistory, useParams } from "react-router"; import { useHistory, useParams } from "react-router";
import TaskForm from 'components/forms/TaskForm'; import TaskForm from 'components/forms/TaskForm';
import { useCallback, useEffect, useState } from "react"; 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 Callout from "components/ui/Callout";
import { getProject, Project } from "adapters/project"; import { getProject, Project } from "adapters/project";
...@@ -19,13 +19,13 @@ export default function TaskCreate() { ...@@ -19,13 +19,13 @@ export default function TaskCreate() {
getProject(projectId).then((project) => setProject(project)); 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 { 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); history.push('/projects/' + projectId);
//} else { } else {
setError('There was an error with creating your project. Please try again!'); setError('There was an error with creating your project. Please try again!');
//} }
} catch (e) { } } catch (e) { }
}, [history, projectId]); }, [history, projectId]);
return ( return (
......
...@@ -390,7 +390,7 @@ interface AddTaskBody { ...@@ -390,7 +390,7 @@ interface AddTaskBody {
text: string; text: string;
icon: string; icon: string;
priority: string; priority: string;
dependentcies: Array<string>; dependencies: Array<string>;
requirements: Array<TaskRequirement>; requirements: Array<TaskRequirement>;
assigned: Array<TaskAssignment>; assigned: Array<TaskAssignment>;
token: Token; token: Token;
...@@ -399,11 +399,11 @@ interface AddTaskBody { ...@@ -399,11 +399,11 @@ interface AddTaskBody {
task.post('/', async (req, res) => { task.post('/', async (req, res) => {
if (isOfType<AddTaskBody>(req.body, [ if (isOfType<AddTaskBody>(req.body, [
['project', 'string'], ['name', 'string'], ['text', 'string'], ['icon', 'string'], ['project', 'string'], ['name', 'string'], ['text', 'string'], ['icon', 'string'],
['priority', 'string'], ['dependentcies', 'object'], ['requirements', 'object'], ['priority', 'string'], ['dependencies', 'object'], ['requirements', 'object'],
])) { ])) {
try { try {
const project_id = req.body.project; 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 = req.body.assigned;
const assigned_ids = assigned.map(asg => asg.user); const assigned_ids = assigned.map(asg => asg.user);
const requirements = req.body.requirements; const requirements = req.body.requirements;
...@@ -500,7 +500,7 @@ interface UpdateTaskBody { ...@@ -500,7 +500,7 @@ interface UpdateTaskBody {
remove_dependentcies?: Array<string>; remove_dependentcies?: Array<string>;
remove_requirements?: Array<string>; remove_requirements?: Array<string>;
remove_assigned?: Array<string>; remove_assigned?: Array<string>;
add_dependentcies?: Array<string>; add_dependencies?: Array<string>;
add_requirements?: Array<TaskRequirement>; add_requirements?: Array<TaskRequirement>;
add_assigned?: Array<TaskAssignment>; add_assigned?: Array<TaskAssignment>;
token: Token; token: Token;
...@@ -513,7 +513,7 @@ task.put('/:uuid', async (req, res) => { ...@@ -513,7 +513,7 @@ task.put('/:uuid', async (req, res) => {
const remove_dependentcy_ids = req.body.remove_dependentcies ?? []; const remove_dependentcy_ids = req.body.remove_dependentcies ?? [];
const remove_assigned_ids = req.body.remove_assigned ?? []; const remove_assigned_ids = req.body.remove_assigned ?? [];
const remove_requirement_ids = req.body.remove_requirements ?? []; 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 = req.body.add_assigned ?? [];
const add_assigned_ids = add_assigned.map(asg => asg.user); const add_assigned_ids = add_assigned.map(asg => asg.user);
const add_requirements = req.body.add_requirements ?? []; 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