diff --git a/public/locales/en/index.js b/public/locales/en/index.js index e6fa9c2..5375e5c 100644 --- a/public/locales/en/index.js +++ b/public/locales/en/index.js @@ -22,7 +22,7 @@ const en = { that compete in various categories, such as:`, categories: [ 'Small Size League', - 'Very Small Size League', + 'Very Small Size Soccer', '2D Simulation', 'Drone', ], @@ -45,9 +45,9 @@ const en = { table_header: 'Small Size League - Results', }, { - title: 'Very Small Size League', + title: 'Very Small Size Soccer', competitions: 'LARC | IronCup', - description: `The Very Small Size Soccer (VSS) competition + description: `The Very Small Size Soccer (VSSS) competition is a multifaceted challenge that necessitates excellence in key domains within RobôCIn. This includes advanced computer vision techniques for extracting critical game-related @@ -74,7 +74,7 @@ const en = { executed by our players.`, }, ], - table_header: 'Very Small Size League - Results', + table_header: 'Very Small Size Soccer - Results', }, { title: '2D Simulation', @@ -266,7 +266,7 @@ const en = { recent: 'Most recent', }, publication_card: { - url_label: 'Paper', + url_label: 'Read', }, filter_results: { fallback: 'Oops! No publications were found for this year.', diff --git a/public/locales/pt-BR/index.js b/public/locales/pt-BR/index.js index 88da728..fcab696 100644 --- a/public/locales/pt-BR/index.js +++ b/public/locales/pt-BR/index.js @@ -22,7 +22,7 @@ const ptBR = { disputam títulos em várias categorias de competições, como:`, categories: [ 'Small Size League', - 'Very Small Size League', + 'Very Small Size Soccer', '2D Simulation', 'Drone', ], @@ -44,9 +44,9 @@ const ptBR = { table_header: 'Small Size League - Resultados', }, { - title: 'Very Small Size League', + title: 'Very Small Size Soccer', competitions: 'LARC | IronCup', - description: `Very Small Size Soccer (VSS) é uma competição + description: `Very Small Size Soccer (VSSS) é uma competição que requer desenvolvimento nas principais áreas do RobôCIn, visão computacional para detectar informações sobre a situação do jogo; inteligência artificial para planejar todos os @@ -69,7 +69,7 @@ const ptBR = { estratégia e decisões que nossos jogadores fazem.`, }, ], - table_header: 'Very Small Size League - Resultados', + table_header: 'Very Small Size Soccer - Resultados', }, { title: '2D Simulation', @@ -281,7 +281,7 @@ const ptBR = { recent: 'Mais recentes', }, publication_card: { - url_label: 'Paper', + url_label: 'Leia', }, filter_results: { fallback: 'Oops! Nenhuma publicação foi encontrada para esse ano.', diff --git a/src/assets/index.ts b/src/assets/index.ts index 87bad29..e9d92c4 100644 --- a/src/assets/index.ts +++ b/src/assets/index.ts @@ -18,6 +18,8 @@ import TwoDimensionSim from './2d-sim.jpg' import RobotModel from './robot-model.jpg' +import Lab from './robocin-lab-2.jpg' + export { LogoWithLabel, LogoWithLabelBright, @@ -33,4 +35,5 @@ export { TwoDimensionSim, RobotModel, AltGroupPhoto, + Lab, } diff --git a/src/assets/robocin-lab-2.jpg b/src/assets/robocin-lab-2.jpg new file mode 100644 index 0000000..4da2596 Binary files /dev/null and b/src/assets/robocin-lab-2.jpg differ diff --git a/src/components/CategoriesPage/components/Category/Category.tsx b/src/components/CategoriesPage/components/Category/Category.tsx index 23d3db3..771c1be 100644 --- a/src/components/CategoriesPage/components/Category/Category.tsx +++ b/src/components/CategoriesPage/components/Category/Category.tsx @@ -13,7 +13,7 @@ type ResultTableKey = 'vssl' | 'ssl' | 'simulation' | 'drone' const titleMap: Record = { 'Small Size League': 'ssl', - 'Very Small Size League': 'vssl', + 'Very Small Size Soccer': 'vssl', '2D Simulation': 'simulation', Drone: 'drone', } diff --git a/src/components/CategoriesPage/components/Header/CategoriesHeader.styles.ts b/src/components/CategoriesPage/components/Header/CategoriesHeader.styles.ts index d3fd3a0..e4459d7 100644 --- a/src/components/CategoriesPage/components/Header/CategoriesHeader.styles.ts +++ b/src/components/CategoriesPage/components/Header/CategoriesHeader.styles.ts @@ -64,7 +64,7 @@ export const GategorySmallCard = styled.div` color: white; text-transform: uppercase; - font-size: ${styles.fontSizes.md}; + font-size: ${styles.fontSizes.sm}; font-weight: ${styles.fontWeights.bold}; text-align: center; diff --git a/src/components/Publications/PublicationCardV2/PublicationCard.styles.ts b/src/components/Publications/PublicationCardV2/PublicationCard.styles.ts new file mode 100644 index 0000000..cad4a50 --- /dev/null +++ b/src/components/Publications/PublicationCardV2/PublicationCard.styles.ts @@ -0,0 +1,50 @@ +import styled from 'styled-components' +import styles from '@/styles/styles' + +export const Container = styled.div` + width: 80%; + min-height: 200px; + height: fit-content; + + display: flex; + justify-content: space-between; + align-items: center; + padding: 16px; + + border-radius: 24px; + border: 2px solid ${styles.colors.secondary}; + box-shadow: 10px 0 ${styles.colors.secondary}; + + background-color: white; + + @media (max-width: 768px) { + width: 100%; + border-left: 2px solid ${styles.colors.secondary}; + height: fit-content; + } +` + +export const Wrapper = styled.div` + width: 100%; +` + +export const Date = styled.p` + font-size: ${styles.fontSizes.sm}; + font-weight: ${styles.fontWeights.thin}; +` + +export const Title = styled.p` + font-size: ${styles.fontSizes.lg}; + font-weight: ${styles.fontWeights.bold}; +` + +export const Authors = styled.p` + font-size: ${styles.fontSizes.md}; + margin-top: 20px; +` + +export const AnchorText = styled.p` + font-size: ${styles.fontSizes.xs}; + text-align: right; + color: ${styles.colors.primary}; +` diff --git a/src/components/Publications/PublicationCardV2/PublicationCard.tsx b/src/components/Publications/PublicationCardV2/PublicationCard.tsx new file mode 100644 index 0000000..6372577 --- /dev/null +++ b/src/components/Publications/PublicationCardV2/PublicationCard.tsx @@ -0,0 +1,22 @@ +import React from 'react' + +import { PublicationCardDefaultProps as PublicationCardProps } from './interfaces' + +import * as S from './PublicationCard.styles' + +const PublicationCard = ({ publication, translate }: PublicationCardProps) => { + return ( + + + {publication?.year} + {publication?.title} + {publication?.description} + + {translate?.url_label} + + + + ) +} + +export default PublicationCard diff --git a/src/components/Publications/PublicationCardV2/index.tsx b/src/components/Publications/PublicationCardV2/index.tsx new file mode 100644 index 0000000..86de2bb --- /dev/null +++ b/src/components/Publications/PublicationCardV2/index.tsx @@ -0,0 +1,14 @@ +import React from 'react' + +import { PublicationCardDefaultProps } from './interfaces' + +import Main from './PublicationCard' + +const PublicationCard = ({ + publication, + translate, +}: PublicationCardDefaultProps) => { + return
+} + +export default PublicationCard diff --git a/src/components/Publications/PublicationCardV2/interfaces.ts b/src/components/Publications/PublicationCardV2/interfaces.ts new file mode 100644 index 0000000..f05f160 --- /dev/null +++ b/src/components/Publications/PublicationCardV2/interfaces.ts @@ -0,0 +1,4 @@ +export interface PublicationCardDefaultProps { + translate: any + publication: any +} diff --git a/src/components/Publications/PublicationsList/PublicationsList.tsx b/src/components/Publications/PublicationsList/PublicationsList.tsx index 84f1bae..e2704a6 100644 --- a/src/components/Publications/PublicationsList/PublicationsList.tsx +++ b/src/components/Publications/PublicationsList/PublicationsList.tsx @@ -1,6 +1,6 @@ import React from 'react' -import PublicationCard from '../PublicationCard' +import PublicationCard from '../PublicationCardV2' import * as S from './PublicationsList.styles' @@ -41,11 +41,8 @@ const PublicationsList = ({ publications?.map((publication, index) => ( )) )} diff --git a/src/components/Publications/PublicationsList/index.tsx b/src/components/Publications/PublicationsList/index.tsx index 9b932f5..1946e52 100644 --- a/src/components/Publications/PublicationsList/index.tsx +++ b/src/components/Publications/PublicationsList/index.tsx @@ -1,34 +1,28 @@ import React, { useState, useMemo, useEffect } from 'react' -import publications from '@/data/publications' +import { scientificPublications } from '@/data/publications' import Main from './PublicationsList' import { PublicationsListDefaultProps } from './interfaces' import { useRouter } from 'next/router' -const PublicationsList = ({ - translate, -}: // publications, -PublicationsListDefaultProps) => { +const PublicationsList = ({ translate }: PublicationsListDefaultProps) => { const router = useRouter() const { locale } = router const language = locale === 'en' ? 'en' : 'ptBR' const [lang, setLang] = useState(language) const [filteredPublications, setFilteredPublications] = useState( - publications[lang] + scientificPublications ) - // const currentDate = new Date() - // const currentYear = currentDate.getFullYear() - const currentYear = 2020 - const yearFilterOptions = useMemo(() => { - const startYear = 2016 - const yearOptionsRange = Array(currentYear - startYear + 1) + const initialYear = 2020 + const finalYear = 2023 + const yearOptionsRange = Array(finalYear - initialYear + 1) .fill(undefined) .map((_, index) => { - const year = currentYear - index + const year = finalYear - index return { label: year.toString(), value: year.toString(), @@ -53,11 +47,11 @@ PublicationsListDefaultProps) => { const { value: filterValue } = e.target if (filterValue === 'all') { - setFilteredPublications(publications[lang]) + setFilteredPublications(scientificPublications) return } - const filteredData = publications[lang].filter( + const filteredData = scientificPublications.filter( (publication) => publication.year === filterValue ) setFilteredPublications(filteredData) @@ -68,7 +62,7 @@ PublicationsListDefaultProps) => { }, [locale]) useEffect(() => { - setFilteredPublications(publications[lang]) + setFilteredPublications(scientificPublications) }, [lang]) return ( diff --git a/src/components/Publications/TDPSection/TDPSection.tsx b/src/components/Publications/TDPSection/TDPSection.tsx index fcc63f8..0d92252 100644 --- a/src/components/Publications/TDPSection/TDPSection.tsx +++ b/src/components/Publications/TDPSection/TDPSection.tsx @@ -1,6 +1,6 @@ import React from 'react' -import { AltGroupPhoto, OpenInNewIcon } from '@/assets' +import { Lab, OpenInNewIcon } from '@/assets' import * as S from './TDPSection.styles' @@ -10,7 +10,7 @@ const TDPSection = ({ translate, tdpsUrl }: TDPSectionProps) => { return ( <> - + {translate.title} {translate.description} diff --git a/src/data/publications/index.tsx b/src/data/publications/index.tsx index 8b98db6..7231933 100644 --- a/src/data/publications/index.tsx +++ b/src/data/publications/index.tsx @@ -107,7 +107,7 @@ const publications: Publications = { title: 'LARC VSSS - Deep RobôCIn Team Description Paper', description: `This Team Description Paper (TDP) presents the proposal developed by RoboCIn AI from the Center for Informatics at UFPE to - participate in the IEEE Very Small Size Soccer (VSS) category. This + participate in the IEEE Very Small Size Soccer (VSSS) category. This TDP describes the modules used in the control and planning of the robots' actions, as well as their mechanical and electronic specifications. In this team, all decision-making processes of the robots have been @@ -194,7 +194,7 @@ const publications: Publications = { title: 'LARC VSSS - Deep RobôCIn Team Description Paper', description: `This Team Description Paper (TDP) presents the proposal developed by RoboCIn AI from the Center for Informatics at UFPE to - participate in the IEEE Very Small Size Soccer (VSS) category. This + participate in the IEEE Very Small Size Soccer (VSSS) category. This TDP describes the modules used in the control and planning of the robots' actions, as well as their mechanical and electronic specifications. In this team, all decision-making processes of the robots have been @@ -367,7 +367,7 @@ const publications: Publications = { description: `Este Team Description Paper (TDP) aprensenta a proposta desenvolvida por RoboCIn IA do Centro de Informática da UFPE para participar na categoria IEEE Very Small Size - Soccer (VSS). Este TDP descreve os módulos utilizados no + Soccer (VSSS). Este TDP descreve os módulos utilizados no controle e planejamento das ações dos robôs, assim como suas especificações mecânicas e eletrônicas. Nesta equipe todas as tomadas de decisões dos robôs foram aprendidas através de @@ -463,7 +463,7 @@ const publications: Publications = { description: `Este Team Description Paper (TDP) aprensenta a proposta desenvolvida por RoboCIn IA do Centro de Informática da UFPE para participar na categoria IEEE Very Small - Size Soccer (VSS). Este TDP descreve os módulos utilizados + Size Soccer (VSSS). Este TDP descreve os módulos utilizados no controle e planejamento das ações dos robôs, assim como suas especificações mecânicas e eletrônicas. Nesta equipe todas as tomadas de decisões dos robôs foram aprendidas através @@ -541,4 +541,93 @@ const publications: Publications = { ], } +const scientificPublications = [ + // Uncomment this when URL is found! + // { + // title: `Improving Inertial Odometry through + // Particle Swarm Optimization in the RoboCup Small + // Size League`, + // description: `Lucas Cavalcanti, João Guilherme Oliveira + // Carvalho de Melo, Riei Joaquim and Edna + // Barros`, + // url: ``, + // year: `2023`, + // }, + { + title: `Dataset and Baseline Experiments for + Self-Localization and Tracking in the RoboCup + Small Size League`, + description: `João G. Melo, Lucas Cavalcanti,  + Riei Joaquim, Victor Araújo, Edna Barros`, + url: `https://ieeexplore.ieee.org/document/10333068`, + year: `2023`, + }, + { + title: `A Model-based Approach to the Development and + Verification of Robotic Systems for Competitions`, + description: `Marcus Santos, Madiel Conserva Filho, Augusto Sampaio`, + url: `https://ieeexplore.ieee.org/document/10333030`, + year: `2023`, + }, + { + title: `Towards an Autonomous RoboCup Small Size League Robot`, + description: `João G. Melo, Felipe Martins, Lucas Cavalcanti,  + Roberto Fernandes, Victor Araújo, Riei Joaquim, João G. Monteiro.`, + url: `https://ieeexplore.ieee.org/document/9996004`, + year: `2022`, + }, + { + title: `Web Soccer Monitor: An Open-Source 2D Soccer + Simulation Monitor for the Web and the Foundation + for a New Ecosystem`, + description: `Mateus FB Soares, Tsang I Ren, + Paulo SG de Mattos Neto, Edna NS Barros`, + url: `https://link.springer.com/chapter/10.1007/978-3-031-28469-4_16`, + year: `2022`, + }, + { + title: `A Library and Web Platform for RoboCup Soccer Matches Data Analysis`, + description: `Felipe NA Pereira, Mateus FB Soares, + Olavo R Conceição, Tales T Alves, Tiago HRP Gonçalves, + José R da Silva, Tsang I Ren, Paulo SG de Mattos Neto, + Edna NS Barros`, + url: `https://link.springer.com/chapter/10.1007/978-3-031-28469-4_15`, + year: `2022`, + }, + { + title: `Optimized Wireless Control and Telemetry + Network for Mobile Soccer Robots`, + description: `Lucas Cavalcanti, Riei Joaquim, Edna Barros`, + url: `https://link.springer.com/chapter/10.1007/978-3-030-98682-7_15`, + year: `2021`, + }, + { + title: `Mechanical and Dynamic Analysis for Design + and Development of a RoboCup SSL Dribbling Mechanism`, + description: `Victor Araújo, Edgleyson Silva, João Guilherme Monteiro,  + Rebecca Sousa, Cecilia Silva, Pedro Henrique Santana`, + url: `https://ieeexplore.ieee.org/document/9605377`, + year: `2021`, + }, + { + title: `An Analysis of Reinforcement Learning Applied + to Coach Task in IEEE Very Small Size Soccer`, + description: `Carlos H. C. Pena, Mateus G. Machado, + Mariana S. Barros, José D.P. Silva, Lucas D. Macie, + Tsang Ing Ren, Edna N.S. Barros, Pedro H.M. Braga, + Hansenclever F. Bassani`, + url: ``, + year: `2020`, + }, + { + title: `A Data Analysis Graphical user Interface + for RoboCup 2D Soccer Simulation League`, + description: `Felipe N. A. Pereira, + Mateus F. B. Soares, Edna N. S. Barros`, + url: `https://ieeexplore.ieee.org/abstract/document/9307104`, + year: `2020`, + }, +] + +export { scientificPublications } export default publications diff --git a/src/data/tables/index.ts b/src/data/tables/index.ts index 9b26468..d3618be 100644 --- a/src/data/tables/index.ts +++ b/src/data/tables/index.ts @@ -1,9 +1,11 @@ export const resultsTables = { en: { vssl: { - label: 'VSS - Results', + label: 'VSSS - Results', th: ['Year', 'LARC', 'IRONCup'], trs: [ + ['2023', 'N/A', '2nd'], + ['2022', '1st', '3rd'], ['2021', '1º 3v3 RL', '1º'], ['2020', '4º DET, 5º RL', '3º RL, 5º DET'], ['2019', '4º DET, 5º RL', '3º RL'], @@ -62,9 +64,11 @@ export const resultsTables = { }, ptBR: { vssl: { - label: 'VSSL - Resultados', + label: 'VSSS - Resultados', th: ['Ano', 'LARC', 'IRONCup'], trs: [ + ['2023', 'N/A', '2º'], + ['2022', '1º', '3º'], ['2021', '1º 3v3 RL', '1º'], ['2020', '4º DET, 5º RL', '3º RL, 5º DET'], ['2019', '4º DET, 5º RL', '3º RL'], @@ -80,21 +84,21 @@ export const resultsTables = { [ '2023', 'N/A', - '1st Div B, 1st Desafio de Ball Placement, 5th Desafio de Chip Pass', + '1º Div B, 1º Desafio de Ball Placement, 5º Desafio de Chip Pass', ], [ '2022', - '1st', - '1st Div B, 1st Desafio de Ball Placement, 2nd Vision Blackout, 3rd Desafio de Dribles', + '1º', + '1º Div B, 1º Desafio de Ball Placement, 2º Vision Blackout, 3º Desafio de Dribbling', ], [ '2021', - '1st', - '3rd Div A/B, 1st Desafio de Ball Placement, 5th Desafio de Hardware', + '1º', + '3º Div A/B, 1º Desafio de Ball Placement, 5º Desafio de Hardware', ], - ['2020', '1st', 'Adiado'], - ['2019', '5th', '3rd/4th Div B'], - ['2018', '5th', 'N/A'], + ['2020', '1º', 'Adiado'], + ['2019', '5º', '3º/4º Div B'], + ['2018', '5º', 'N/A'], ], }, simulation: {