work-graph-simple/types.ts

26 lines
871 B
TypeScript

type PartBlueprint = string
type UserBlueprint = string
export type GraphBuilder=
<
Users extends Record<string, UserBlueprint>,
Roles extends Record<string, [ name:string, ...users:Array<keyof Users>]>,
Parts extends Record<string, PartBlueprint>,
Desks extends Record<string, [ name:string, roles:Array<keyof Roles>, mode:"all"|"one", need:Partial<Record<keyof Parts, number>>, ...make:Array<keyof Parts>]>
>
(
params:{users:Users,
roles:Roles,
parts:Parts,
desks:Desks}
)
=>void
export type User = {name:string, desk:Set<Desk>};
export type Role = {name:string, user:User[]};
export type Desk = {name:string, need:Part[], time:number[], make:Part[], mode:string, role:Role[]};
export type Work = [user:User, part:Part, time:number, data:string];
export type Part = {name:string, time:number, work:Work[], need:Desk[], make:Desk[]};