Newer
Older
import { executeApiGet, executeApiPost, executeApiPut } from './util';
import { Comment } from './comment';
import { Work } from './work';
export interface TaskRequirement {
role: string;
time: number;
}
export interface TaskAssignment {
user: string;
time: number;
finished: boolean;
}
export interface Task {
id: string;
project: string;
name: string;
text: string;
icon: string;
priority: 'low' | 'medium' | 'high' | 'urgent';
status: 'open' | 'closed' | 'suspended';
dependentcies: Array<string>;
requirements: Array<TaskRequirement>;
assigned: Array<TaskAssignment>;
created: Date;
edited: Date;
}
export function getTasks(): Promise<Task[]> {
return executeApiGet(`task`, ({ tasks }) => tasks.map((task: any) => ({
...task,
edited: new Date(task.edited),
created: new Date(task.created),
})), "Failed to get tasks");
export function getTasksWithStatus(status: 'open' | 'closed' | 'suspended'): Promise<Task[]> {
return executeApiGet(`task/${status}`, ({ tasks }) => tasks.map((task: any) => ({
...task,
edited: new Date(task.edited),
created: new Date(task.created),
})), "Failed to get tasks with status");
export function getPossibleTasks(): Promise<Task[]> {
return executeApiGet(`task/possible`, ({ tasks }) => tasks.map((task: any) => ({
...task,
edited: new Date(task.edited),
created: new Date(task.created),
})), "Failed to get possible tasks");
export function getTask(uuid: string): Promise<Task> {
return executeApiGet(`task/${uuid}`, ({ task }) => ({
...task,
edited: new Date(task.edited),
created: new Date(task.created),
}), "Failed to get task");
export function getTaskComments(uuid: string): Promise<Comment[]> {
return executeApiGet(`task/${uuid}/comments`, ({ comments }) => comments.map((comment: any) => ({
...comment,
edited: new Date(comment.edited),
created: new Date(comment.created),
})), "Failed to get task comments");
export function getTaskWork(uuid: string): Promise<Work[]> {
return executeApiGet(`task/${uuid}/work`, ({ work }) => work.map((work: any) => ({
...work,
started: new Date(work.started),
finished: work.finished ? new Date(work.finished) : undefined,
})), "Failed to get task work");
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
interface AddTaskBody {
project: string;
name: string;
text: string;
icon: string;
priority: string;
dependentcies: Array<string>;
requirements: Array<TaskRequirement>;
assigned: Array<TaskAssignment>;
}
export function createTask(task: AddTaskBody): Promise<string> {
return executeApiPost(`task`, task, ({ id }) => id, "Failed to create task");
}
interface UpdateTaskBody {
name?: string;
text?: string;
icon?: string;
priority?: string;
status?: string;
remove_dependentcies?: Array<string>;
remove_requirements?: Array<string>;
remove_assigned?: Array<string>;
add_dependentcies?: Array<string>;
add_requirements?: Array<TaskRequirement>;
add_assigned?: Array<TaskAssignment>;
}
export function updateTask(uuid: string, task: UpdateTaskBody) {
return executeApiPut(`task/${uuid}`, task, () => {}, "Failed to update task");
}