feat: load Chemisty and MVP with fetched players and selected user

This commit is contained in:
julius 2025-01-26 17:52:31 +01:00
parent 58e4a14147
commit dcbb507174
Signed by: julius
GPG Key ID: C80A63E6A5FD7092
2 changed files with 18 additions and 55 deletions

View File

@ -1,5 +1,5 @@
body { body {
background-color: ghostwhite; background-color: aliceblue;
position: relative; position: relative;
z-index: 0; z-index: 0;
color: black; color: black;

View File

@ -24,7 +24,7 @@ function PlayerList(props: PlayerListProps) {
); );
} }
interface PlayerStateProps { interface SelectUserProps {
user: Player[]; user: Player[];
setUser: Dispatch<SetStateAction<Player[]>>; setUser: Dispatch<SetStateAction<Player[]>>;
players: Player[]; players: Player[];
@ -36,7 +36,7 @@ export function SelectUser({
setUser, setUser,
players, players,
setPlayers, setPlayers,
}: PlayerStateProps) { }: SelectUserProps) {
return ( return (
<> <>
<div className="box user"> <div className="box user">
@ -76,7 +76,7 @@ export function SelectUser({
<ReactSortable <ReactSortable
list={players} list={players}
setList={setPlayers} setList={setPlayers}
group={"user-shared"} group={{ name: "user-shared", pull: "clone" }}
className="dragbox reservoir" className="dragbox reservoir"
animation={200} animation={200}
> >
@ -94,9 +94,17 @@ export function SelectUser({
); );
} }
export function Chemistry() { interface PlayerInfoProps {
user: Player[];
players: Player[];
}
export function Chemistry({ user, players }: PlayerInfoProps) {
const index = players.indexOf(user[0]);
var otherPlayers = players.slice();
otherPlayers.splice(index, 1);
const [playersLeft, setPlayersLeft] = useState<Player[]>([]); const [playersLeft, setPlayersLeft] = useState<Player[]>([]);
const [playersMiddle, setPlayersMiddle] = useState<Player[]>([]); const [playersMiddle, setPlayersMiddle] = useState<Player[]>(otherPlayers);
const [playersRight, setPlayersRight] = useState<Player[]>([]); const [playersRight, setPlayersRight] = useState<Player[]>([]);
const [dialog, setDialog] = useState("dialog"); const [dialog, setDialog] = useState("dialog");
@ -176,25 +184,12 @@ export function Chemistry() {
); );
} }
export function MVP() { export function MVP({ user, players }: PlayerInfoProps) {
const [user, setUser] = useState<Player[]>([]); const [availablePlayers, setAvailablePlayers] = useState<Player[]>(players);
const [availablePlayers, setAvailablePlayers] = useState<Player[]>([]);
const [rankedPlayers, setRankedPlayers] = useState<Player[]>([]); const [rankedPlayers, setRankedPlayers] = useState<Player[]>([]);
const [dialog, setDialog] = useState("dialog"); const [dialog, setDialog] = useState("dialog");
async function loadPlayers() {
const response = await fetch(`${baseUrl}player/list`, {
method: "GET",
});
const data = await response.json();
setAvailablePlayers(data as Player[]);
}
useEffect(() => {
loadPlayers();
}, []);
async function handleSubmit() { async function handleSubmit() {
const dialog = document.querySelector("dialog[id='MVPDialog']"); const dialog = document.querySelector("dialog[id='MVPDialog']");
(dialog as HTMLDialogElement).showModal(); (dialog as HTMLDialogElement).showModal();
@ -212,38 +207,6 @@ export function MVP() {
return ( return (
<> <>
<div className="box user">
<span>your name?</span>
{user.length < 1 ? (
<>
<br /> <span className="grey hint">drag your name here</span>
</>
) : (
<>
<span
className="renew"
onClick={() => {
setUser([]);
}}
>
{" ✕"}
</span>
<br />
</>
)}
<PlayerList
list={user}
setList={setUser}
group={{
name: "mvp-shared",
put: function (to) {
return to.el.children.length < 1;
},
pull: false,
}}
className="dragbox putclone"
/>
</div>
<div className="container"> <div className="container">
<div className="box two"> <div className="box two">
<h2>🥏🏃</h2> <h2>🥏🏃</h2>
@ -366,10 +329,10 @@ export default function Rankings() {
</div> </div>
<div id="Chemistry" className="tabcontent"> <div id="Chemistry" className="tabcontent">
<Chemistry /> <Chemistry {...{ user, players }} />
</div> </div>
<div id="MVP" className="tabcontent"> <div id="MVP" className="tabcontent">
<MVP /> <MVP {...{ user, players }} />
</div> </div>
</> </>
)} )}