38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
export type GraphBuilder=
|
|
<
|
|
Users extends Record<string, string>,
|
|
Roles extends Record<string, [ name:string, ...users:Array<keyof Users>]>,
|
|
Parts extends Record<string, string>,
|
|
Desks extends Record<string, [ name:string, roles:Array<keyof Roles>, mode:"all"|"one", need:Partial<Record<keyof Parts, number>>, ...make:Array<keyof Parts>]>,
|
|
Pass extends Record<
|
|
string,
|
|
[
|
|
name:string,
|
|
user:Partial<Record<
|
|
keyof Users,
|
|
Partial<Record<
|
|
keyof Parts,
|
|
Array<[time:number, data:string]>
|
|
>>
|
|
>>
|
|
]
|
|
>
|
|
>
|
|
(
|
|
params:{
|
|
users:Users,
|
|
roles:Roles,
|
|
parts:Parts,
|
|
desks:Desks,
|
|
passes:Pass,
|
|
}
|
|
)
|
|
=>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, time:number, data:string];
|
|
export type Pass = {name:string, path:string};
|
|
export type Part = {name:string, pass:Map<Pass, {time:number, work:Work[]}>, need:Desk[], make:Desk[]}; |