diff options
| author | Maksymilian Jopek <maks@jopek.eu> | 2023-11-15 19:29:24 +0100 |
|---|---|---|
| committer | Maksymilian Jopek <maks@jopek.eu> | 2023-11-15 19:34:12 +0100 |
| commit | 857c528369473a66518407dee6f6cac89bbc538c (patch) | |
| tree | cccf02a369ee6cafb2a89750ee222ebba69d2269 /src/Search.tsx | |
| download | listeya-xelata-nobele-master.tar.gz listeya-xelata-nobele-master.tar.zst listeya-xelata-nobele-master.zip | |
Diffstat (limited to 'src/Search.tsx')
| -rw-r--r-- | src/Search.tsx | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/Search.tsx b/src/Search.tsx new file mode 100644 index 0000000..cca6e42 --- /dev/null +++ b/src/Search.tsx @@ -0,0 +1,54 @@ +import { useEffect, useState } from "react"; +import { nobelPrizes } from "./data"; + +export default function Search({ setPath }: { setPath: (a: string) => void }) { + const languages = { Angielski: "en", Norweski: "no", Szwedzki: "se" }; + const languagesFlags = { Angielski: "🇬🇧", Norweski: "🇳🇴", Szwedzki: "🇸🇪" }; + const langs = Object.keys(languages) as (keyof typeof languages)[]; + + const [language, setLanguage] = useState(langs[0]); + const [years, setYears] = useState<number[]>([]); + const [year, setYear] = useState<null | number>(null); + + function changeLanguage() { + let i = langs.findIndex((l) => language === l) + 1; + if (i >= langs.length) i = 0; + setLanguage(langs[i]); + } + + useEffect(() => { + setYears([...new Set(nobelPrizes.map((np) => parseInt(np.awardYear)))]); + }, []); + + return ( + <> + <h2>Wybierz z którego roku nagrody Nobla chcesz zobaczyć</h2> + <select + className="year-select" + onChange={(e) => + setYear(e.target.value ? parseInt(e.target.value) : null) + } + > + <option value="">Wybierz rok</option> + {years.map((y) => ( + <option value={y} key={y}> + {y} + </option> + ))} + </select> + <br /> + <br /> + <button + disabled={year === null} + onClick={() => setPath(`nagrody/${languages[language]}/${year}`)} + > + Wyszukaj nagrody + </button> + <div style={{ position: "absolute", top: 10, right: 10 }}> + <span onClick={changeLanguage}> + Język: {language} {languagesFlags[language]} + </span> + </div> + </> + ); +} |
