- 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.
69 lines
1.8 KiB
TypeScript
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,
|
|
};
|
|
}
|