|
@@ -1,19 +1,25 @@
|
|
|
+import iso from "iso-3166-1";
|
|
|
import flagLookup from "../../../../domain/flagLookup";
|
|
|
import styles from "./ScoreBoard.module.css";
|
|
|
|
|
|
// since everyone wants to use giant names...
|
|
|
-const nameLineWidthGuess = 25;
|
|
|
+const bigNameMin = 30;
|
|
|
+const medNameMin = 20;
|
|
|
+
|
|
|
+const getNameClass = name => {
|
|
|
+ if (name.length >= bigNameMin) {
|
|
|
+ return styles.longname;
|
|
|
+ }
|
|
|
+ if (name.length >= medNameMin) {
|
|
|
+ return styles.medname;
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+};
|
|
|
|
|
|
export const PlayerScoreTile = ({ name, guesses, totalScore, winner }) => (
|
|
|
<div className={styles.tile}>
|
|
|
<div className={styles.header}>
|
|
|
- <span
|
|
|
- className={`${styles.name} ${
|
|
|
- name.length > nameLineWidthGuess ? styles.longname : ""
|
|
|
- }`}
|
|
|
- >
|
|
|
- {name}
|
|
|
- </span>
|
|
|
+ <span className={`${styles.name} ${getNameClass(name)}`}>{name}</span>
|
|
|
<span className={styles.total}>
|
|
|
{winner && "🏆"} {totalScore}
|
|
|
</span>
|
|
@@ -28,7 +34,12 @@ export const PlayerScoreTile = ({ name, guesses, totalScore, winner }) => (
|
|
|
<span className={styles.score}>
|
|
|
Round {num}: {score ?? 0}
|
|
|
</span>
|
|
|
- <span className={styles.flag}>{flagLookup(country)}</span>
|
|
|
+ <span
|
|
|
+ className={styles.flag}
|
|
|
+ title={country && iso.whereAlpha2(country).country}
|
|
|
+ >
|
|
|
+ {flagLookup(country)}
|
|
|
+ </span>
|
|
|
</div>
|
|
|
) : null
|
|
|
)}
|
|
@@ -44,12 +55,12 @@ const ScoreBoard = ({ players }) => (
|
|
|
// eslint-disable-next-line no-nested-ternary
|
|
|
p1 > p2 ? -1 : p1 < p2 ? 1 : 0
|
|
|
)
|
|
|
- .map(({ name, guesses, totalScore, winner }, i) => (
|
|
|
+ .map(({ name, guesses, totalScore }, i) => (
|
|
|
<PlayerScoreTile
|
|
|
key={name}
|
|
|
// TODO gracefully handle ties...
|
|
|
winner={i === 0}
|
|
|
- {...{ name, guesses, totalScore, winner }}
|
|
|
+ {...{ name, guesses, totalScore }}
|
|
|
/>
|
|
|
))}
|
|
|
</div>
|