aboutsummaryrefslogtreecommitdiffstats
path: root/src/Search.tsx
diff options
context:
space:
mode:
authorMaksymilian Jopek <maks@jopek.eu>2023-11-15 19:29:24 +0100
committerMaksymilian Jopek <maks@jopek.eu>2023-11-15 19:34:12 +0100
commit857c528369473a66518407dee6f6cac89bbc538c (patch)
treecccf02a369ee6cafb2a89750ee222ebba69d2269 /src/Search.tsx
downloadlisteya-xelata-nobele-857c528369473a66518407dee6f6cac89bbc538c.tar.gz
listeya-xelata-nobele-857c528369473a66518407dee6f6cac89bbc538c.tar.zst
listeya-xelata-nobele-857c528369473a66518407dee6f6cac89bbc538c.zip
Initial commit, v1.0.0HEADmaster
Diffstat (limited to 'src/Search.tsx')
-rw-r--r--src/Search.tsx54
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>
+ </>
+ );
+}