40 lines
941 B
TypeScript
Executable File
40 lines
941 B
TypeScript
Executable File
interface calculateExerciseResult {
|
|
periodLength: number;
|
|
trainingDays: number;
|
|
success: boolean;
|
|
rating: number;
|
|
ratingDescription: string;
|
|
target: number;
|
|
average: number;
|
|
}
|
|
export const calculateExercise = (
|
|
dailyExecise: number[],
|
|
target: number
|
|
): calculateExerciseResult => {
|
|
const average =
|
|
dailyExecise.reduce((prev, cur) => prev + cur) / (dailyExecise.length + 1);
|
|
const success = average >= target ? true : false;
|
|
|
|
let rating: number, ratingDescription: string;
|
|
if (average > target) {
|
|
rating = 3;
|
|
ratingDescription = "Good job";
|
|
} else if (average > target * 0.7) {
|
|
rating = 2;
|
|
ratingDescription = "Could be better";
|
|
} else {
|
|
rating = 1;
|
|
ratingDescription = "Very Bad";
|
|
}
|
|
|
|
return {
|
|
periodLength: dailyExecise.length + 1,
|
|
trainingDays: dailyExecise.filter((el) => el > 0).length,
|
|
average,
|
|
target,
|
|
success,
|
|
rating,
|
|
ratingDescription,
|
|
};
|
|
};
|