51 lines
1016 B
TypeScript
51 lines
1016 B
TypeScript
import { Task, TaskID } from './task';
|
|
import { Params, defaults } from "./params";
|
|
import { uuidV4 } from "../util/uuid";
|
|
|
|
export type ProjectID = string;
|
|
|
|
export interface Project {
|
|
id: ProjectID
|
|
label: string
|
|
description: string
|
|
tasks: Tasks
|
|
params: Params
|
|
createdAt: Date
|
|
updatedAt: Date
|
|
ordering: TaskID[]
|
|
}
|
|
|
|
export interface Tasks {
|
|
[id: string]: Task
|
|
}
|
|
|
|
export function newProject(id?: string): Project {
|
|
return {
|
|
id: id ? id : uuidV4(),
|
|
label: "",
|
|
description: "",
|
|
tasks: {},
|
|
params: {
|
|
...defaults
|
|
},
|
|
createdAt: new Date(),
|
|
updatedAt: new Date(),
|
|
ordering: [],
|
|
};
|
|
}
|
|
|
|
export function sanitize(project: Project): Project {
|
|
if (!Array.isArray(project.ordering)) {
|
|
project.ordering = Object.keys(project.tasks)
|
|
}
|
|
|
|
if (typeof project.updatedAt === 'string') {
|
|
project.updatedAt = new Date(project.updatedAt)
|
|
}
|
|
|
|
if (typeof project.createdAt === 'string') {
|
|
project.createdAt = new Date(project.createdAt)
|
|
}
|
|
|
|
return project
|
|
} |