Files
platform/calculator/util.ts
T
2025-09-15 20:58:58 -04:00

81 lines
2.3 KiB
TypeScript

import { Metrics } from "./calc";
// -------------------------------------------------------------------------------------------------
// DATA MODELS
// -------------------------------------------------------------------------------------------------
export interface Player {
metrics: Metrics;
}
export enum Attribute {
Strength = "Strength",
Power = "Power",
Endurance = "Endurance",
Agility = "Agility",
}
export enum Activity {
BackSquat = "BackSquat",
Deadlift = "Deadlift",
BenchPress = "BenchPress",
Run = "Run",
BroadJump = "BroadJump",
ConeDrill = "ConeDrill",
}
export interface ActivityPerformance {
activity: Activity;
performance: number;
}
export enum Gender {
Male = "Male",
Female = "Female"
}
// -------------------------------------------------------------------------------------------------
// Conversion utilities
// -------------------------------------------------------------------------------------------------
export const lbToKg = (lb: number | string): number => +lb * 0.453592;
export const kgToLb = (kg: number | string): number => +kg * 2.20462;
export const minToMs = (min) => min * 60000;
export const secToMs = (sec) => sec * 1000;
export const feetToCm = (feet) => feet * 30.48;
export const inchesToCm = (inches) => inches * 2.54;
export const mphToMtrsPerMs = (mph: number): number => (mph * 0.44704) / 1000;
export const timeToMs = (time: string): number => {
const [main, decimal = "0"] = time.split(".");
const milliseconds = Number(decimal.padEnd(3, "0").slice(0, 3));
const parts = main.split(":").map(Number);
let minutes = 0,
seconds = 0;
if (parts.length === 1) {
seconds = parts[0];
} else if (parts.length === 2) {
[minutes, seconds] = parts as [number, number];
} else {
throw new Error("Invalid time format");
}
return (minutes * 60 + seconds) * 1000 + milliseconds;
};
export const msToTime = (ms: number, includeMs = false): string => {
const minutes = Math.floor(ms / 60000);
const seconds = Math.floor((ms % 60000) / 1000);
const milliseconds = Math.floor(ms % 1000);
let formattedTime = `${minutes}:${seconds.toString().padStart(2, "0")}`;
if (includeMs) {
formattedTime += `.${milliseconds.toString().padStart(3, "0")}`;
}
return formattedTime;
};