aboutsummaryrefslogtreecommitdiffhomepage
path: root/frontend/app/components/Gaming/ScoreBar.tsx
blob: 50a24022ff976a01a5edb12f13dba95da7b562f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
type Props = {
  scoreA: number | null;
  scoreB: number | null;
  bgA: string;
  bgB: string;
};

export default function ScoreBar({ scoreA, scoreB, bgA, bgB }: Props) {
  let scoreRatio;
  if (scoreA === null && scoreB === null) {
    scoreRatio = 50;
  } else if (scoreA === null) {
    scoreRatio = 0;
  } else if (scoreB === null) {
    scoreRatio = 100;
  } else {
    const rawRatio = scoreB / (scoreA + scoreB);
    const k = 3.0;
    const emphasizedRatio =
      Math.pow(rawRatio, k) /
      (Math.pow(rawRatio, k) + Math.pow(1 - rawRatio, k));
    scoreRatio = emphasizedRatio * 100;
  }

  return (
    <div className={`w-full ${bgB}`}>
      <div className={`h-10 ${bgA}`} style={{ width: `${scoreRatio}%` }}></div>
    </div>
  );
}