Compare commits
No commits in common. "62ba89c599f169b1fef90c477c38d5b7188deb81" and "105b3778e1fe8a37b7b3115787965dde99653d89" have entirely different histories.
62ba89c599
...
105b3778e1
@ -38,7 +38,6 @@ class Team(SQLModel, table=True):
|
||||
name: str
|
||||
location: str | None
|
||||
country: str | None
|
||||
mixed: bool = False
|
||||
players: list["Player"] | None = Relationship(
|
||||
back_populates="teams", link_model=PlayerTeamLink
|
||||
)
|
||||
|
14
src/App.css
14
src/App.css
@ -515,6 +515,12 @@ button {
|
||||
&.disable-player {
|
||||
background-color: #e338;
|
||||
}
|
||||
&.mmp {
|
||||
background-color: lightskyblue;
|
||||
}
|
||||
&.fmp {
|
||||
background-color: salmon;
|
||||
}
|
||||
}
|
||||
|
||||
.new-player-inputs {
|
||||
@ -545,14 +551,6 @@ button {
|
||||
}
|
||||
}
|
||||
|
||||
.mmp {
|
||||
background-color: lightskyblue;
|
||||
}
|
||||
|
||||
.fmp {
|
||||
background-color: salmon;
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
0% {
|
||||
background-color: #8888;
|
||||
|
@ -7,11 +7,9 @@ import TabController from "./TabController";
|
||||
|
||||
type PlayerListProps = Partial<ReactSortableProps<any>> & {
|
||||
orderedList?: boolean;
|
||||
gender?: boolean;
|
||||
};
|
||||
|
||||
function PlayerList(props: PlayerListProps) {
|
||||
const fmps = props.list?.filter((item) => item.gender === "fmp").length;
|
||||
return (
|
||||
<ReactSortable
|
||||
{...props}
|
||||
@ -19,20 +17,10 @@ function PlayerList(props: PlayerListProps) {
|
||||
swapThreshold={0.2}
|
||||
style={{ minHeight: props.list && props.list?.length < 1 ? 64 : 32 }}
|
||||
>
|
||||
{props.list &&
|
||||
props.list.map((item, index) => (
|
||||
<div
|
||||
key={item.id}
|
||||
className={"item " + (props.gender ? item.gender : "")}
|
||||
>
|
||||
{props.list?.map((item, index) => (
|
||||
<div key={item.id} className="item">
|
||||
{props.orderedList
|
||||
? props.gender
|
||||
? index +
|
||||
1 -
|
||||
(item.gender !== "fmp" ? fmps! : 0) +
|
||||
". " +
|
||||
item.display_name
|
||||
: index + 1 + ". " + item.display_name
|
||||
? index + 1 + ". " + item.display_name
|
||||
: item.display_name}
|
||||
</div>
|
||||
))}
|
||||
@ -337,11 +325,8 @@ function MVPDnD({ user, teams, players }: PlayerInfoProps) {
|
||||
const [availablePlayers, setAvailablePlayers] = useState<User[]>(players);
|
||||
const [rankedPlayers, setRankedPlayers] = useState<User[]>([]);
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [mixed, setMixed] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
const activeTeam = teams.teams.find((team) => team.id == teams.activeTeam);
|
||||
activeTeam && setMixed(activeTeam.mixed);
|
||||
handleGet();
|
||||
}, [players]);
|
||||
|
||||
@ -397,9 +382,11 @@ function MVPDnD({ user, teams, players }: PlayerInfoProps) {
|
||||
setList={setAvailablePlayers}
|
||||
group={{
|
||||
name: "mvp-shared",
|
||||
pull: function (to) {
|
||||
return to.el.classList.contains("putclone") ? "clone" : true;
|
||||
},
|
||||
}}
|
||||
className="dragbox"
|
||||
gender={mixed}
|
||||
/>
|
||||
</div>
|
||||
<div className="box two">
|
||||
@ -412,23 +399,15 @@ function MVPDnD({ user, teams, players }: PlayerInfoProps) {
|
||||
)}
|
||||
<PlayerList
|
||||
list={rankedPlayers}
|
||||
setList={(newList) =>
|
||||
mixed
|
||||
? setRankedPlayers(
|
||||
newList.sort((a, b) =>
|
||||
a.gender && b.gender
|
||||
? a.gender.localeCompare(b.gender)
|
||||
: -1
|
||||
)
|
||||
)
|
||||
: setRankedPlayers(newList)
|
||||
}
|
||||
setList={setRankedPlayers}
|
||||
group={{
|
||||
name: "mvp-shared",
|
||||
pull: function (to) {
|
||||
return to.el.classList.contains("putclone") ? "clone" : true;
|
||||
},
|
||||
}}
|
||||
className="dragbox"
|
||||
orderedList
|
||||
gender={mixed}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { jwtDecode, JwtPayload } from "jwt-decode";
|
||||
import { ReactNode, useEffect, useState } from "react";
|
||||
import { apiAuth, baseUrl, Gender, User } from "./api";
|
||||
import { apiAuth, baseUrl, User } from "./api";
|
||||
import { useNavigate } from "react-router";
|
||||
import { Eye, EyeSlash } from "./Icons";
|
||||
import { useSession } from "./Session";
|
||||
@ -237,21 +237,6 @@ export const SetPassword = () => {
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label>gender</label>
|
||||
<select
|
||||
name="gender"
|
||||
required
|
||||
value={player.gender}
|
||||
onChange={(e) => {
|
||||
setPlayer({ ...player, gender: e.target.value as Gender });
|
||||
}}
|
||||
>
|
||||
<option value={undefined}></option>
|
||||
<option value="fmp">FMP</option>
|
||||
<option value="mmp">MMP</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label>number (optional)</label>
|
||||
<input
|
||||
|
@ -155,6 +155,7 @@ const TeamPanel = () => {
|
||||
<label>gender</label>
|
||||
<select
|
||||
name="gender"
|
||||
required
|
||||
value={player.gender}
|
||||
onChange={(e) => {
|
||||
setPlayer({ ...player, gender: e.target.value as Gender });
|
||||
|
@ -46,7 +46,6 @@ export interface Team {
|
||||
name: string;
|
||||
location: string;
|
||||
country: string;
|
||||
mixed: boolean;
|
||||
}
|
||||
|
||||
export type ErrorState = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user