generateur_v3/frontend/src/types/room.type.ts

108 lines
2.1 KiB
TypeScript

export type Room = {
public: boolean;
global_results: boolean;
name: string,
id_code: string,
members: (Member | Waiter)[]
parcours: Parcours[]
};
export type Waiting = {
waiter_id: string,
username: string,
room: { name: string, id_code: string }
}
export type Parcours = {
name: string,
best_note: number,
id_code: string,
validated: boolean
}
export type Member = {
username: string,
reconnect_code: string,
isUser: boolean,
id_code: string,
isAdmin: string,
online: boolean,
clientId: string
}
export type Waiter = {
username: string,
waiter_id: string
}
export type ExoInfos = {
name: string,
consigne: string,
id_code: string
}
export type ParcoursInfos = {
name: string,
id_code: string,
time: number,
max_mistakes: number
}
export type Input = {
value: string;
index: number;
correction?: string | null;
valid?: boolean | null;
};
export type Calcul = {
calcul: string,
inputs: Input[]
}
export type Challenge = {
exo: ExoInfos,
data: Calcul[]
}
export type Note = {
value: number,
total: number,
temporary: boolean
}
export type ExoSelect = {
quantity: number | string,
exercice_id: string,
name: string,
}
export type ChallengeInfo = {
challenger: { name: string, id_code: string },
challenges: {id_code: string, mistakes: number, time: number, isCorriged: boolean, canCorrige: boolean, validated: boolean}[]
}
export type Exercices = {
exercice_id: string,
quantity: number,
name: string;
examples: { type: string; data: { calcul: string; correction: string }[] };
};
export type ParcoursRead = {
name: string,
time: number,
max_mistakes: number,
id_code: string,
rank: number | null,
memberRank: number | null,
validated: boolean,
challenges: { [id: string]: ChallengeInfo }
exercices: Exercices[],
ranking: { name: string, id_code: string, avg: number }[],
tops: { challenger: { name: string, id_code: string }, mistakes: number, time: number }[],
pb: { mistakes: number, time: number },
avg: number | null
}