diff --git a/pages/archive.tsx b/pages/archive.tsx index d4c64aa..95da0bd 100644 --- a/pages/archive.tsx +++ b/pages/archive.tsx @@ -15,350 +15,86 @@ interface PerformerCard extends Performer { showDesc: boolean; } +const dataByYear: Record = { + 2025: PerformersData2025, + 2024: PerformersData2024, + 2023: PerformersData2023, + 2022: PerformersData2022, + 2021: PerformersData2021, +}; + +const sortedYears = Object.keys(dataByYear).map(Number).sort((a, b) => b - a); + const Archive = () => { - const [performers2021, setPerformers2021] = useState([]); - const [performers2022, setPerformers2022] = useState([]); - const [performers2023, setPerformers2023] = useState([]); - const [performers2024, setPerformers2024] = useState([]); - const [performers2025, setPerformers2025] = useState([]); + const [performersByYear, setPerformersByYear] = useState>({}); useEffect(() => { - let cards: PerformerCard[] = []; - - PerformersData2021.map((p) => { - let newCard = { ...p, showDesc: false }; - cards.push(newCard); - }); - - setPerformers2021(cards); + const initial: Record = {}; + for (const year of sortedYears) { + initial[year] = dataByYear[year].map((p) => ({ ...p, showDesc: false })); + } + setPerformersByYear(initial); }, []); - useEffect(() => { - let cards: PerformerCard[] = []; - - PerformersData2022.map((p) => { - let newCard = { ...p, showDesc: false }; - cards.push(newCard); - }); - - setPerformers2022(cards); - }, []); - - useEffect(() => { - let cards: PerformerCard[] = []; - - PerformersData2023.map((p) => { - let newCard = { ...p, showDesc: false }; - cards.push(newCard); - }); - - setPerformers2023(cards); - }, []); - - useEffect(() => { - let cards: PerformerCard[] = []; - - PerformersData2024.map((p) => { - let newCard = { ...p, showDesc: false }; - cards.push(newCard); - }); - - setPerformers2024(cards); - }, []); - - useEffect(() => { - let cards: PerformerCard[] = []; - - PerformersData2025.map((p) => { - let newCard = { ...p, showDesc: false }; - cards.push(newCard); - }); - - setPerformers2025(cards); - }, []); - - const togglePerformerDesc2021 = (id: string) => { - let updated: PerformerCard[]; - updated = performers2021.map((p) => { - if (p.id === id) { - p.showDesc = !p.showDesc; - } - return p; - }); - - setPerformers2021(updated); + const togglePerformerDesc = (year: number, id: string) => { + setPerformersByYear((prev) => ({ + ...prev, + [year]: prev[year].map((p) => + p.id === id ? { ...p, showDesc: !p.showDesc } : p + ), + })); }; - const togglePerformerDesc2022 = (id: string) => { - let updated: PerformerCard[]; - updated = performers2022.map((p) => { - if (p.id === id) { - p.showDesc = !p.showDesc; - } - return p; - }); - - setPerformers2022(updated); - }; - - const togglePerformerDesc2023 = (id: string) => { - let updated: PerformerCard[]; - updated = performers2023.map((p) => { - if (p.id === id) { - p.showDesc = !p.showDesc; - } - return p; - }); - - setPerformers2023(updated); - }; - - const togglePerformerDesc2024 = (id: string) => { - let updated: PerformerCard[]; - updated = performers2024.map((p) => { - if (p.id === id) { - p.showDesc = !p.showDesc; - } - return p; - }); - - setPerformers2024(updated); - }; - - const togglePerformerDesc2025 = (id: string) => { - let updated: PerformerCard[]; - updated = performers2025.map((p) => { - if (p.id === id) { - p.showDesc = !p.showDesc; - } - return p; - }); - - setPerformers2025(updated); - } - return (

Arkisto

-

2025

- {performers2025.map((p) => ( -
- {p.name} -
-
togglePerformerDesc2025(p.id)} - > -

{p.name}

- -
- - {p.showDesc ? ( -
- {p.paragraphs.map((parag, index) => ( -

{parag.toString()}

- ))} + {sortedYears.map((year) => ( + +

{year}

+ {(performersByYear[year] ?? []).map((p) => ( +
+ {p.name} +
+
togglePerformerDesc(year, p.id)} + > +

{p.name}

+
- ) : ( - - )} - -
-
-
- ))} -

2024

- {performers2024.map((p) => ( -
- {p.name} -
-
togglePerformerDesc2024(p.id)} - > -

{p.name}

- + + {p.showDesc ? ( +
+ {p.paragraphs.map((parag, index) => ( +

{parag.toString()}

+ ))} +
+ ) : ( + + )} +
+
+
- - {p.showDesc ? ( -
- {p.paragraphs.map((parag, index) => ( -

{parag.toString()}

- ))} -
- ) : ( - - )} -
-
-
-
- ))} -

2023

- {performers2023.map((p) => ( -
- {p.name} -
-
togglePerformerDesc2023(p.id)} - > -

{p.name}

- -
- - {p.showDesc ? ( -
- {p.paragraphs.map((parag, index) => ( -

{parag.toString()}

- ))} -
- ) : ( - - )} -
-
-
-
- ))} -

2022

- {performers2022.map((p) => ( -
- {p.name} -
-
togglePerformerDesc2022(p.id)} - > -

{p.name}

- -
- - {p.showDesc ? ( -
- {p.paragraphs.map((parag, index) => ( -

{parag.toString()}

- ))} -
- ) : ( - - )} -
-
-
-
- ))} -

2021

- {performers2021.map((p) => ( -
- {p.name} -
-
togglePerformerDesc2021(p.id)} - > -

{p.name}

- -
- - {p.showDesc ? ( -
- {p.paragraphs.map((parag, index) => ( -

{parag.toString()}

- ))} -
- ) : ( - - )} -
-
-
-
+ ))} + ))}
);