From dfe21506e62f03f916c2820d7a4c9f74e03b96b6 Mon Sep 17 00:00:00 2001 From: Azat Ismagilov Date: Fri, 2 Aug 2024 23:46:29 +0100 Subject: [PATCH] chore: Update consts.js to use array of arrays for places This commit updates the consts.js file to use an array of arrays for the places constant instead of an object. This change improves the readability and maintainability of the code. --- data/consts.js | 54 +++++++++---------- dataACPC/consts.js | 12 ++--- dataAE/consts.js | 12 ++--- dataAP/consts.js | 12 ++--- dataAW/consts.js | 12 ++--- dataEU/consts.js | 12 ++--- dataLAC/consts.js | 14 ++--- dataNAC/consts.js | 45 +++++++--------- dataNERC/consts.js | 47 +++++++--------- package-lock.json | 12 ++--- src/Util/PhotoLoader.js | 14 +++-- src/components/Body/PhotoGridByYear.jsx | 16 +++++- .../Body/PhotoInfo/PhotoInfoDetails.jsx | 6 +-- src/components/Header/Filters.jsx | 10 ++-- src/components/Header/MobileYearWrapper.jsx | 8 +-- src/components/Header/Selector.jsx | 5 +- src/components/TableOfContents.jsx | 10 ++-- src/consts.js | 4 +- 18 files changed, 136 insertions(+), 169 deletions(-) diff --git a/data/consts.js b/data/consts.js index 1c5fff4..6ca6192 100644 --- a/data/consts.js +++ b/data/consts.js @@ -1,33 +1,28 @@ -export const years = [ - "2023", "2022", "2021", "2020", "2019", "2018", "2017", "2016", "2015", "2014", "2013", "2012", "2011", "2010", "2009", "2008", "2007", "2006", "2005", "2004", "2003", "2002", "2001" +export const places = [ + ["2023", "Luxor, Egypt, 47th", "World Finals"], + ["2022", "Luxor, Egypt, 46th", "World Finals"], + ["2021", "Dhaka, Bangladesh", "World Finals"], + ["2020", "Moscow, Russia", "World Finals"], + ["2019", "Porto, Portugal", "World Finals"], + ["2018", "Beijing, China", "World Finals"], + ["2017", "Rapid City, SD, USA", "World Finals"], + ["2016", "Phuket, Thailand", "World Finals"], + ["2015", "Marrakesh, Morocco", "World Finals"], + ["2014", "Ekaterinburg, Russia", "World Finals"], + ["2013", "Saint Petersburg, Russia", "World Finals"], + ["2012", "Warsaw, Poland", "World Finals"], + ["2011", "Orlando FL, USA", "World Finals"], + ["2010", "Harbin, China", "World Finals"], + ["2009", "Stockholm, Sweden", "World Finals"], + ["2008", "Banff, Canada", "World Finals"], + ["2007", "Tokyo, Japan", "World Finals"], + ["2006", "San Antonio, TX, USA", "World Finals"], + ["2005", "Shanghai, China", "World Finals"], + ["2004", "Prague, Czech Republic", "World Finals"], + ["2003", "Beverly Hills, CA, USA", "World Finals"], + ["2002", "Honolulu, Hawaii, USA", "World Finals"], + ["2001", "Vancouver, Canada", "World Finals"] ]; -export const places = - { - "2023": "Luxor, Egypt, 47th", - "2022": "Luxor, Egypt, 46th", - "2021": "Dhaka, Bangladesh", - "2020": "Moscow, Russia", - "2019": "Porto, Portugal", - "2018": "Beijing, China", - "2017": "Rapid City, SD, USA", - "2016": "Phuket, Thailand", - "2015": "Marrakesh, Morocco", - "2014": "Ekaterinburg, Russia", - "2013": "Saint Petersburg, Russia", - "2012": "Warsaw, Poland", - "2011": "Orlando FL, USA", - "2010": "Harbin, China", - "2009": "Stockholm, Sweden", - "2008": "Banff, Canada", - "2007": "Tokyo, Japan", - "2006": "San Antonio, TX, USA", - "2005": "Shanghai, China", - "2004": "Prague, Czech Republic", - "2003": "Beverly Hills, CA, USA", - "2002": "Honolulu, Hawaii, USA", - "2001": "Vancouver, Canada", - } -; export const api_key = "d30033b3d833adaace90f8487da70bba"; @@ -49,5 +44,4 @@ export const SVG_HEIGHT = 60; export const PER_PAGE = 25; export const LAST_YEAR = "2023"; -export const CONTEST_NAME = "World Finals"; export const DEFAULT_EVENT = "Photo Tour"; diff --git a/dataACPC/consts.js b/dataACPC/consts.js index 4183316..f8b5fe1 100644 --- a/dataACPC/consts.js +++ b/dataACPC/consts.js @@ -1,12 +1,7 @@ -export const years = [ - "RC 2023-2024", "2023" +export const places = [ + ["RC 2023-2024", "Regional Contests", ""], + ["2023", "", ""] ]; -export const places = - { - "RC 2023-2024": "Regional Contests", - "2023": "" - } -; export const api_key = "d30033b3d833adaace90f8487da70bba"; @@ -28,5 +23,4 @@ export const SVG_HEIGHT = 60; export const PER_PAGE = 25; export const LAST_YEAR = "2023"; -export const CONTEST_NAME = ""; export const DEFAULT_EVENT = "Photo Tour"; diff --git a/dataAE/consts.js b/dataAE/consts.js index b04368b..166d002 100644 --- a/dataAE/consts.js +++ b/dataAE/consts.js @@ -1,12 +1,7 @@ -export const years = [ - "RC 2023-2024", "2023" +export const places = [ + ["RC 2023-2024", "Regional Contests", ""], + ["2023", "", ""] ]; -export const places = - { - "RC 2023-2024": "Regional Contests", - "2023": "" - } -; export const api_key = "d30033b3d833adaace90f8487da70bba"; @@ -28,5 +23,4 @@ export const SVG_HEIGHT = 60; export const PER_PAGE = 25; export const LAST_YEAR = "2023"; -export const CONTEST_NAME = ""; export const DEFAULT_EVENT = "Photo Tour"; diff --git a/dataAP/consts.js b/dataAP/consts.js index 1bf462f..5b3eef1 100644 --- a/dataAP/consts.js +++ b/dataAP/consts.js @@ -1,12 +1,7 @@ -export const years = [ - "2024", "RC 2023-2024" +export const places = [ + ["2024", "", ""], + ["RC 2023-2024", "Regional Contests", ""] ]; -export const places = - { - "2024": "", - "RC 2023-2024": "Regional Contests" - } -; export const api_key = "d30033b3d833adaace90f8487da70bba"; @@ -28,5 +23,4 @@ export const SVG_HEIGHT = 60; export const PER_PAGE = 25; export const LAST_YEAR = "2024"; -export const CONTEST_NAME = ""; export const DEFAULT_EVENT = "Photo Tour"; diff --git a/dataAW/consts.js b/dataAW/consts.js index aae3a86..ad119b6 100644 --- a/dataAW/consts.js +++ b/dataAW/consts.js @@ -1,12 +1,7 @@ -export const years = [ - "RC 2023-2024", "2023" +export const places = [ + ["RC 2023-2024", "Regional Contests", ""], + ["2023", "", ""] ]; -export const places = - { - "RC 2023-2024": "Regional Contests", - "2023": "" - } -; export const api_key = "d30033b3d833adaace90f8487da70bba"; @@ -28,5 +23,4 @@ export const SVG_HEIGHT = 60; export const PER_PAGE = 25; export const LAST_YEAR = "2023"; -export const CONTEST_NAME = ""; export const DEFAULT_EVENT = "Photo Tour"; diff --git a/dataEU/consts.js b/dataEU/consts.js index ca19e9a..742bb17 100644 --- a/dataEU/consts.js +++ b/dataEU/consts.js @@ -1,12 +1,7 @@ -export const years = [ - "2024", "RC 2023-2024" +export const places = [ + ["2024", "EUC, Prague", ""], + ["RC 2023-2024", "Regional Contests", ""] ]; -export const places = - { - "2024": "EUC, Prague", - "RC 2023-2024": "Regional Contests" - } -; export const api_key = "d30033b3d833adaace90f8487da70bba"; @@ -28,5 +23,4 @@ export const SVG_HEIGHT = 60; export const PER_PAGE = 25; export const LAST_YEAR = "2024"; -export const CONTEST_NAME = ""; export const DEFAULT_EVENT = "Photo Tour"; diff --git a/dataLAC/consts.js b/dataLAC/consts.js index b68a11e..7d09f33 100644 --- a/dataLAC/consts.js +++ b/dataLAC/consts.js @@ -1,12 +1,9 @@ -export const years = [ - "RC 2023-2024", "2023" -]; + export const places = - { - "RC 2023-2024": "Regional Contests", - "2023": "" - } -; + [ + ["RC 2023-2024", "Regional Contests", ""], + ["2023", "", ""] + ]; export const api_key = "d30033b3d833adaace90f8487da70bba"; @@ -28,5 +25,4 @@ export const SVG_HEIGHT = 60; export const PER_PAGE = 25; export const LAST_YEAR = "2023"; -export const CONTEST_NAME = ""; export const DEFAULT_EVENT = "Photo Tour"; diff --git a/dataNAC/consts.js b/dataNAC/consts.js index 9d85bed..e2e9794 100644 --- a/dataNAC/consts.js +++ b/dataNAC/consts.js @@ -1,28 +1,24 @@ -export const years = [ - "2024", "RC 2023-2024","2023","RC 2022-2023","2022", "RC 2021-2022", "2021", "2020", "RC 2019-2020", "RC 2018-2019", "RC 2016-2017", "RC 2015-2016","RC 2014-2015", "2014", "RC 2013-2014", "2013", "RC 2012-2013","RC 2011-2012" + +export const places = [ + ["2024", "NAC, Orlando, FL", ""], + ["RC 2023-2024", "Regional Contests", ""], + ["2023", "NAC, Orlando, FL", ""], + ["RC 2022-2023", "Regional Contests", ""], + ["2022", "NAC, Orlando, FL", ""], + ["RC 2021-2022", "Regional Contests", ""], + ["2021", "NAC, Online", ""], + ["2020", "NAC, Atlanta, GA", ""], + ["RC 2019-2020", "Contests", ""], + ["RC 2018-2019", "Contests", ""], + ["RC 2016-2017", "Contests", ""], + ["RC 2015-2016", "Contests", ""], + ["RC 2014-2015", "Contests", ""], + ["2014", "NAIPC", ""], + ["RC 2013-2014", "Contests", ""], + ["2013", "UCIPC", ""], + ["RC 2012-2013", "Contests", ""], + ["RC 2011-2012", "Contests", ""] ]; -export const places = - { - "2024": "NAC, Orlando, FL", - "RC 2023-2024": "Regional Contests", - "2023": "NAC, Orlando, FL", - "RC 2022-2023": "Regional Contests", - "2022": "NAC, Orlando, FL", - "RC 2021-2022": "Regional Contests", - "2021": "NAC, Online", - "2020": "NAC, Atlanta, GA", - "RC 2019-2020": "Contests", - "RC 2018-2019": "Contests", - "RC 2016-2017": "Contests", - "RC 2015-2016": "Contests", - "RC 2014-2015": "Contests", - "2014": "NAIPC", - "RC 2013-2014": "Contests", - "2013": "UCIPC", - "RC 2012-2013": "Contests", - "RC 2011-2012": "Contests" - } -; export const api_key = "d30033b3d833adaace90f8487da70bba"; @@ -44,5 +40,4 @@ export const SVG_HEIGHT = 60; export const PER_PAGE = 25; export const LAST_YEAR = "2024"; -export const CONTEST_NAME = ""; export const DEFAULT_EVENT = "Photo Tour"; diff --git a/dataNERC/consts.js b/dataNERC/consts.js index 0b7d402..e7f6946 100644 --- a/dataNERC/consts.js +++ b/dataNERC/consts.js @@ -1,30 +1,24 @@ -export const years = [ - "2023", "RC 2023-2024", "2022", "RC 2022-2023", "2021", "2020", "2019", "2018", "2017", "2016", "2015", "2014", "2013", "2012", "2011", "2004", "2003", "2001", "2000" +export const places = [ + ["2023", "SPb, Novosibirsk, Astana, Kutaisi", ""], + ["RC 2023-2024", "Regional Contests", ""], + ["2022", "SPb, Tinkoff Arena", ""], + ["RC 2022-2023", "Regional Contests", ""], + ["2021", "SPb, Tinkoff Arena", ""], + ["2020", "SPb, My history park", ""], + ["2019", "SPb, My history park", ""], + ["2018", "SPb, ITMO University", ""], + ["2017", "SPb, ITMO University", ""], + ["2016", "SPb, ITMO University", ""], + ["2015", "SPb, ITMO University", ""], + ["2014", "SPb, ITMO University", ""], + ["2013", "SPb, ITMO University", ""], + ["2012", "SPb, ITMO University", ""], + ["2011", "SPb, ITMO University", ""], + ["2004", "SPb, Palace of Youth Creativity", ""], + ["2003", "SPb, Palace of Youth Creativity", ""], + ["2001", "SPb, Palace of Youth Creativity", ""], + ["2000", "SPb, Palace of Youth Creativity", ""] ]; -export const places = - { - "2023": "SPb, Novosibirsk, Astana, Kutaisi", - "RC 2023-2024": "Regional Contests", - "2022": "SPb, Tinkoff Arena", - "RC 2022-2023": "Regional Contests", - "2021": "SPb, Tinkoff Arena", - "2020": "SPb, My history park", - "2019": "SPb, My history park", - "2018": "SPb, ITMO University", - "2017": "SPb, ITMO University", - "2016": "SPb, ITMO University", - "2015": "SPb, ITMO University", - "2014": "SPb, ITMO University", - "2013": "SPb, ITMO University", - "2012": "SPb, ITMO University", - "2011": "SPb, ITMO University", - "2004": "SPb, Palace of Youth Creativity", - "2003": "SPb, Palace of Youth Creativity", - "2001": "SPb, Palace of Youth Creativity", - "2000": "SPb, Palace of Youth Creativity" - } -; - export const api_key = "d30033b3d833adaace90f8487da70bba"; export const user_id = "141939107@N06"; @@ -46,5 +40,4 @@ export const SVG_HEIGHT = 60; export const PER_PAGE = 25; export const LAST_YEAR = "2023"; -export const CONTEST_NAME = ""; export const DEFAULT_EVENT = "Photo Tour"; diff --git a/package-lock.json b/package-lock.json index 4cc253a..f457a5e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2065,9 +2065,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001576", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz", - "integrity": "sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==", + "version": "1.0.30001646", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001646.tgz", + "integrity": "sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw==", "funding": [ { "type": "opencollective", @@ -6479,9 +6479,9 @@ "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==" }, "caniuse-lite": { - "version": "1.0.30001576", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz", - "integrity": "sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==" + "version": "1.0.30001646", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001646.tgz", + "integrity": "sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw==" }, "chalk": { "version": "2.4.2", diff --git a/src/Util/PhotoLoader.js b/src/Util/PhotoLoader.js index 5a7a14a..cbe8581 100644 --- a/src/Util/PhotoLoader.js +++ b/src/Util/PhotoLoader.js @@ -1,8 +1,7 @@ import { useEffect, useMemo, useState } from "react"; -import axios from "axios"; import { useAppContext } from "../components/AppContext"; -import { TAG_ALBUM } from "../consts"; +import { places, TAG_ALBUM } from "../consts"; import PhotoService from "./PhotoService"; import UniqueList from "./UniqueList"; @@ -39,7 +38,7 @@ const usePhotoLoader = () => { setAxiosCancelController(new AbortController()); }, [data.year, data.event, data.text, data.team, data.person]); - + function appendPhotos(photosByEvent, event, photos) { const appendedEventPhotos = [...(photosByEvent.get(event) || []), ...photos]; return new Map(photosByEvent.set(event, UniqueList(appendedEventPhotos, photo => photo.id))); @@ -59,9 +58,14 @@ const usePhotoLoader = () => { const albumTag = TAG_ALBUM.toLowerCase(); const tag = tags.split(" ").find(tag => tag.startsWith(albumTag)); if (tag === undefined) { - return null; + return "Unknown"; + } + const targetTag = tag.replaceAll(albumTag, ""); + const found_tag = places.map(({ year }) => year).find((year) => (year.toLowerCase().replace(/[-_\s]/g, "") === targetTag)); + if (found_tag === undefined) { + return "Unknown"; } - return tag.replaceAll(albumTag, ""); + return found_tag; } /** diff --git a/src/components/Body/PhotoGridByYear.jsx b/src/components/Body/PhotoGridByYear.jsx index bbb3bd9..d175923 100644 --- a/src/components/Body/PhotoGridByYear.jsx +++ b/src/components/Body/PhotoGridByYear.jsx @@ -1,5 +1,7 @@ import { useMemo } from "react"; +import { places } from "../../consts"; + import PhotoGrid from "./PhotoGrid"; const PhotoGridByYear = ({ photos, handleClick }) => { @@ -19,9 +21,21 @@ const PhotoGridByYear = ({ photos, handleClick }) => { return ; } + + const compareYears = (a, b) => { + const yearA = a[0]; + const yearB = b[0]; + const yearIndex = (targetYear) => places.findIndex(({ year }) => year === targetYear); + const indexDiff = yearIndex(yearA) - yearIndex(yearB); + if (indexDiff !== 0) { + return indexDiff; + } + return yearA.localeCompare(yearB); + }; + return (
- {Object.entries(photosByYear).sort().reverse().map(([year, photos]) => ( + {Object.entries(photosByYear).sort(compareYears).reverse().map(([year, photos]) => (

{year}

diff --git a/src/components/Body/PhotoInfo/PhotoInfoDetails.jsx b/src/components/Body/PhotoInfo/PhotoInfoDetails.jsx index 7c84fcf..1e06d2b 100644 --- a/src/components/Body/PhotoInfo/PhotoInfoDetails.jsx +++ b/src/components/Body/PhotoInfo/PhotoInfoDetails.jsx @@ -1,6 +1,6 @@ import { Autocomplete, TextField } from "@mui/material"; -import { years } from "../../../consts"; +import { places } from "../../../consts"; import { useAppContext } from "../../AppContext"; import { usePhotoInfo } from "./PhotoInfoContext"; @@ -94,7 +94,7 @@ const AlbumEdit = () => { year)} value={photoInfo.album} onChange={(event, newValue) => { setAlbum(newValue); @@ -262,4 +262,4 @@ const PersonEdit = () => { ); }; -export { AlbumEdit, AlbumInfo, EventEdit, EventInfo, PersonEdit,PersonInfo, PhotographerEdit, PhotographerInfo, TeamEdit, TeamInfo }; +export { AlbumEdit, AlbumInfo, EventEdit, EventInfo, PersonEdit, PersonInfo, PhotographerEdit, PhotographerInfo, TeamEdit, TeamInfo }; diff --git a/src/components/Header/Filters.jsx b/src/components/Header/Filters.jsx index d6b3697..0d2b979 100644 --- a/src/components/Header/Filters.jsx +++ b/src/components/Header/Filters.jsx @@ -1,6 +1,6 @@ import { Stack } from "@mui/material"; -import { places, years } from "../../consts"; +import { places } from "../../consts"; import calendarIcon from "../../images/calender.svg"; import eventIcon from "../../images/event.svg"; import personIcon from "../../images/person.svg"; @@ -20,8 +20,8 @@ const Filters = () => { } function formatYearOption(a) { - return a.map(x => { - return { data: x, label: x + " " + places[x] }; + return a.map(({ year, place }) => { + return { data: year, label: year + " " + place }; }); } @@ -36,10 +36,10 @@ const Filters = () => { return ( {!desktop && - { + { const year = selectedItem.data; setYear(year); - }} value={data.year} />} + }} value={data.year} disableClearable />} { selectItem(selectedItem, setEvent); }} value={data.event} /> diff --git a/src/components/Header/MobileYearWrapper.jsx b/src/components/Header/MobileYearWrapper.jsx index bf74789..f326de4 100644 --- a/src/components/Header/MobileYearWrapper.jsx +++ b/src/components/Header/MobileYearWrapper.jsx @@ -1,6 +1,6 @@ import { Box, Typography } from "@mui/material"; -import { CONTEST_NAME, places } from "../../consts"; +import { places } from "../../consts"; import { useAppContext } from "../AppContext"; @@ -17,10 +17,12 @@ const MobileYearWrapper = () => { ; } + const place = places.find(({ year }) => year === data.year); + return ( - {CONTEST_NAME} {data.year} - {places[data.year]} + {place?.contestName} {place?.year} + {place?.place} ); }; diff --git a/src/components/Header/Selector.jsx b/src/components/Header/Selector.jsx index 4c94a50..04a591b 100644 --- a/src/components/Header/Selector.jsx +++ b/src/components/Header/Selector.jsx @@ -13,7 +13,7 @@ const TextFieldWithIcon = styled(TextField)(() => ({ const filterOptions = createFilterOptions({ limit: 200 }); -const Selector = ({ leftIcon, onChange, name, value, options }) => { +const Selector = ({ leftIcon, onChange, name, value, options, disableClearable = false }) => { return ( { }} /> } - popupIcon={< ExpandMoreIcon />} + popupIcon={} + disableClearable={disableClearable} /> ); diff --git a/src/components/TableOfContents.jsx b/src/components/TableOfContents.jsx index 46e0da1..4045491 100644 --- a/src/components/TableOfContents.jsx +++ b/src/components/TableOfContents.jsx @@ -1,4 +1,4 @@ -import { CONTEST_NAME, places, years } from "../consts"; +import { places } from "../consts"; import { useAppContext } from "./AppContext"; @@ -17,16 +17,16 @@ const TableOfContents = () => { return (