Compare commits

..

3 Commits

Author SHA1 Message Date
8def52fbf2
feat: make entire logo clickable 2025-01-29 17:29:00 +01:00
16a6814d69
feat: open automatically 2025-01-29 17:28:17 +01:00
bb7f795175
useEffect -> useMemo 2025-01-29 17:19:30 +01:00
2 changed files with 48 additions and 42 deletions

View File

@ -8,8 +8,8 @@ function App() {
<div className="logo"> <div className="logo">
<a href={baseUrl}> <a href={baseUrl}>
<img alt="logo" height="66%" src="logo.svg" /> <img alt="logo" height="66%" src="logo.svg" />
<h3 className="centered">cutt</h3>
</a> </a>
<h3 className="centered">cutt</h3>
<span className="grey">cool ultimate team tool</span> <span className="grey">cool ultimate team tool</span>
</div> </div>
<Rankings /> <Rankings />

View File

@ -1,4 +1,4 @@
import { Dispatch, SetStateAction, useEffect, useState } from "react"; import { Dispatch, SetStateAction, useEffect, useMemo, useState } from "react";
import { ReactSortable, ReactSortableProps } from "react-sortablejs"; import { ReactSortable, ReactSortableProps } from "react-sortablejs";
import api, { baseUrl } from "./api"; import api, { baseUrl } from "./api";
@ -268,33 +268,10 @@ export function MVP({ user, players }: PlayerInfoProps) {
); );
} }
function openPage(pageName: string, color: string) {
// Hide all elements with class="tabcontent" by default */
var i, tabcontent, tablinks;
tabcontent = document.getElementsByClassName("tabcontent");
for (i = 0; i < tabcontent.length; i++) {
(tabcontent[i] as HTMLElement).style.display = "none";
}
// Remove the background color of all tablinks/buttons
tablinks = document.getElementsByClassName("tablink");
for (i = 0; i < tablinks.length; i++) {
let button = tablinks[i] as HTMLElement;
button.style.opacity = "50%";
}
// Show the specific tab content
(document.getElementById(pageName) as HTMLElement).style.display = "block";
// Add the specific color to the button used to open the tab content
let activeButton = document.getElementById(
pageName + "Button"
) as HTMLElement;
activeButton.style.fontWeight = "bold";
activeButton.style.opacity = "100%";
document.body.style.backgroundColor = color;
}
export default function Rankings() { export default function Rankings() {
const [user, setUser] = useState<Player[]>([]); const [user, setUser] = useState<Player[]>([]);
const [players, setPlayers] = useState<Player[]>([]); const [players, setPlayers] = useState<Player[]>([]);
const [openTab, setOpenTab] = useState("Chemistry");
async function loadPlayers() { async function loadPlayers() {
const response = await fetch(`${baseUrl}player/list`, { const response = await fetch(`${baseUrl}player/list`, {
@ -304,31 +281,60 @@ export default function Rankings() {
setPlayers(data as Player[]); setPlayers(data as Player[]);
} }
useEffect(() => { useMemo(() => {
loadPlayers(); loadPlayers();
}, []); }, []);
useEffect(() => {
user.length === 1 && openPage(openTab, "aliceblue");
}, [user]);
function openPage(pageName: string, color: string) {
// Hide all elements with class="tabcontent" by default */
var i, tabcontent, tablinks;
tabcontent = document.getElementsByClassName("tabcontent");
for (i = 0; i < tabcontent.length; i++) {
(tabcontent[i] as HTMLElement).style.display = "none";
}
// Remove the background color of all tablinks/buttons
tablinks = document.getElementsByClassName("tablink");
for (i = 0; i < tablinks.length; i++) {
let button = tablinks[i] as HTMLElement;
button.style.opacity = "50%";
}
// Show the specific tab content
(document.getElementById(pageName) as HTMLElement).style.display = "block";
// Add the specific color to the button used to open the tab content
let activeButton = document.getElementById(
pageName + "Button"
) as HTMLElement;
activeButton.style.fontWeight = "bold";
activeButton.style.opacity = "100%";
document.body.style.backgroundColor = color;
setOpenTab(pageName);
}
return ( return (
<> <>
<SelectUser {...{ user, setUser, players, setPlayers }} /> <SelectUser {...{ user, setUser, players, setPlayers }} />
{user.length === 1 && ( {user.length === 1 && (
<> <>
<div className="container navbar"> <div className="container navbar">
<button <button
className="tablink" className="tablink"
id="ChemistryButton" id="ChemistryButton"
onClick={() => openPage("Chemistry", "aliceblue")} onClick={() => openPage("Chemistry", "aliceblue")}
> >
🧪 Chemistry 🧪 Chemistry
</button> </button>
<button <button
className="tablink" className="tablink"
id="MVPButton" id="MVPButton"
onClick={() => openPage("MVP", "aliceblue")} onClick={() => openPage("MVP", "aliceblue")}
> >
🏆 MVP 🏆 MVP
</button> </button>
</div> </div>
<div id="Chemistry" className="tabcontent"> <div id="Chemistry" className="tabcontent">
<Chemistry {...{ user, players }} /> <Chemistry {...{ user, players }} />