Files
peakskills/lib/score-utils.ts
Julien Froidefond 5c76ec0549 feat: enhance team overview and skills tabs with improved skill distribution and UI
- Updated team overview tab to calculate and display skill distribution by individual skill levels.
- Refactored skill tab layout for better responsiveness and readability, including adjustments to grid and text sizes.
- Added a new utility function to calculate skill level distribution for cleaner code and reusability.
- Improved visual elements for better user interaction and clarity in skill metrics.
2025-08-22 13:59:51 +02:00

69 lines
1.8 KiB
TypeScript

// Fonction pour déterminer la couleur du badge selon le niveau moyen
export function getScoreColors(score: number) {
if (score >= 2.5) {
// Expert/Maîtrise (violet)
return {
bg: "bg-violet-500/20",
border: "border-violet-500/30",
text: "text-violet-400",
gradient: "from-violet-500 to-violet-400",
};
} else if (score >= 1.5) {
// Autonome (vert)
return {
bg: "bg-green-500/20",
border: "border-green-500/30",
text: "text-green-400",
gradient: "from-green-500 to-green-400",
};
} else if (score >= 0.5) {
// Non autonome (orange/amber)
return {
bg: "bg-amber-500/20",
border: "border-amber-500/30",
text: "text-amber-400",
gradient: "from-amber-500 to-amber-400",
};
} else {
// Jamais pratiqué (rouge)
return {
bg: "bg-red-500/20",
border: "border-red-500/30",
text: "text-red-400",
gradient: "from-red-500 to-red-400",
};
}
}
export function getSkillLevelLabel(level: string): string {
switch (level) {
case "never":
return "Jamais utilisé";
case "not-autonomous":
return "Non autonome";
case "autonomous":
return "Autonome";
case "expert":
return "Expert";
default:
return "";
}
}
/**
* Calcule la répartition des niveaux par compétence individuelle
*/
export function calculateSkillLevelDistribution(
members: Array<{ skills: Array<{ level: number }> }>
) {
const allSkills = members.flatMap((m) => m.skills);
return {
expert: allSkills.filter((s) => s.level === 3).length,
autonomous: allSkills.filter((s) => s.level === 2).length,
notAutonomous: allSkills.filter((s) => s.level === 1).length,
never: allSkills.filter((s) => s.level === 0).length,
total: allSkills.length,
};
}