Compare commits

...

11 Commits

Author SHA1 Message Date
e8c788832c
feat: order players by name 2025-01-29 15:11:43 +01:00
2d760cda16
feat: revamp a little 2025-01-29 15:04:07 +01:00
2256fbfdf9
feat: make chemistry and MVP buttons more button-like 2025-01-29 12:06:31 +01:00
d5e684eb98
make buttons/clickables round 2025-01-28 18:31:38 +01:00
da9c3be1cd
remove "your name?" once chosen 2025-01-28 18:28:23 +01:00
970a06cf9c
wider on mobile 2025-01-28 18:24:19 +01:00
39258f37fc
feat: floating button 2025-01-28 18:24:03 +01:00
2ae9a04aae
some more visual improvements 2025-01-28 18:14:04 +01:00
91938efe35
feat: test floating button 2025-01-28 17:21:53 +01:00
b8e17331cc
feat: add multiple players 2025-01-28 17:01:57 +01:00
a41c6717c8
feat: text on logo 2025-01-28 15:40:23 +01:00
4 changed files with 128 additions and 79 deletions

View File

@ -46,7 +46,7 @@ def add_players(players: list[Player]):
def list_players():
with Session(engine) as session:
statement = select(Player)
statement = select(Player).order_by(Player.name)
return session.exec(statement).fetchall()

View File

@ -1,5 +1,5 @@
* {
border-radius: 8px;
border-radius: 16px;
}
body {
@ -7,15 +7,19 @@ body {
position: relative;
z-index: 0;
color: black;
text-align: center;
overflow-wrap: anywhere;
height: 100%;
}
footer {
font-size: x-small;
}
#root {
max-width: 1280px;
margin: 0 auto;
padding: 8px;
text-align: center;
}
.grey {
@ -25,6 +29,7 @@ body {
.hint {
position: absolute;
font-size: 80%;
padding: 8px;
top: auto;
left: 4px;
bottom: auto;
@ -33,16 +38,17 @@ body {
}
h1,
h2 {
h2,
h3 {
margin-top: 0px;
margin-bottom: 0px;
padding: 8px 16px;
}
.container {
display: flex;
flex-wrap: nowrap;
justify-content: space-evenly;
min-width: min(80vw, 800px);
width: min(96vw, 900px);
}
.dragbox {
@ -52,6 +58,19 @@ h2 {
height: 92%;
}
.box {
position: relative;
flex: 1;
&.one {
max-width: min(96%, 768px);
margin: 4px auto;
}
padding: 4px;
margin: 4px 0.5%;
border-style: solid;
border-color: black;
}
.reservoir {
flex-direction: unset;
flex-wrap: wrap;
@ -59,28 +78,9 @@ h2 {
width: 100%;
}
.box {
position: relative;
&.one {
max-width: min(80vw, 500px);
}
&.two {
min-width: 43%;
max-width: 20vw;
}
&.three {
min-width: 27%;
max-width: 10vw;
}
padding: 4px;
margin: 4px auto;
border-style: solid;
border-color: black;
}
.user {
max-width: 400px;
min-width: 200px;
max-width: 240px;
min-width: 100px;
margin: 4px auto;
.item {
font-weight: bold;
@ -92,27 +92,38 @@ h2 {
cursor: pointer;
font-size: small;
border: 3px dashed black;
border-radius: 4px;
border-radius: 1.2em;
margin: 8px auto;
padding: 4px 8px;
padding: 4px 16px;
}
.extra-margin {
padding: 0px 8px;
margin: auto;
}
button {
font-weight: bold;
color: ghostwhite;
font-size: large;
color: aliceblue;
background-color: black;
border: 4px solid black;
position: relative;
border-radius: 1.2em;
z-index: 1;
&:focus {
outline: black;
}
@media only screen and (max-width: 768px) {
.submit_text {
display: none;
}
&:hover {
border-color: black;
.submit {
position: fixed;
right: 16px;
bottom: 16px;
padding: 0px;
background-color: unset;
font-size: xx-large;
margin-bottom: 20px;
margin-right: 20px;
}
}
@ -128,15 +139,23 @@ button {
}
.tablink {
background-color: unset;
font-weight: unset;
color: black;
border: 2px solid black;
border-radius: unset;
outline: black;
color: white;
cursor: pointer;
padding: 8px 16px;
width: 50%;
flex: 1;
margin: 4px auto;
}
.navbar {
button {
font-size: medium;
margin: 4px 0.5%;
padding-top: 4px;
padding-bottom: 4px;
opacity: 50%;
&:hover {
opacity: 75%;
}
}
}
/* Style the tab content (and add height:100% for full page content) */
@ -154,6 +173,29 @@ button {
font-size: 150%;
}
.logo {
position: relative;
text-align: center;
height: 160px;
img {
display: block;
margin: auto;
}
h3 {
position: absolute;
width: 200px;
top: 33%;
left: 50%;
transform: translate(-50%, -50%);
color: aliceblue;
background-color: black;
border-radius: unset;
letter-spacing: 8px;
padding: 0px 40px;
font-family: monospace;
}
}
.loader {
display: block;
position: relative;

View File

@ -5,15 +5,24 @@ import Rankings from "./Rankings";
function App() {
return (
<>
<a href={baseUrl}>
<img alt="logo" height="128px" src="logo.svg" />
</a>
<h1>cutt</h1>
<span className="grey">cool ultimate team tool</span>
<div className="logo">
<a href={baseUrl}>
<img alt="logo" height="66%" src="logo.svg" />
</a>
<h3 className="centered">cutt</h3>
<span className="grey">cool ultimate team tool</span>
</div>
<Rankings />
<footer>
<p className="grey">
something not working? message <a href="https://t.me/x0124816">me</a>.
something not working?
<br />
message <a href="https://t.me/x0124816">me</a>.
<br />
or fix it here:{" "}
<a href="https://git.0124816.xyz/julius/cutt" key="gitea">
<img src="gitea.svg" alt="gitea" height="16" />
</a>
</p>
</footer>
</>

View File

@ -40,9 +40,9 @@ export function SelectUser({
return (
<>
<div className="box user">
<span>your name?</span>
{user.length < 1 ? (
<>
<span>your name?</span>
<br /> <span className="grey hint">drag your name here</span>
</>
) : (
@ -55,7 +55,6 @@ export function SelectUser({
>
{" ✕"}
</span>
<br />
</>
)}
<PlayerList
@ -175,7 +174,9 @@ export function Chemistry({ user, players }: PlayerInfoProps) {
</div>
</div>
<button onClick={() => handleSubmit()}>submit</button>
<button className="submit" onClick={() => handleSubmit()}>
💾 <span className="submit_text">submit</span>
</button>
<dialog
id="ChemistryDialog"
onClick={(event) => {
@ -233,8 +234,8 @@ export function MVP({ user, players }: PlayerInfoProps) {
<h1>🏆</h1>
{rankedPlayers.length < 1 && (
<span className="grey hint">
carefully place the <i>Most Valuable Player</i> (according to your
humble opinion) in this box
carefully place as many of the <i>Most Valuable Players</i>{" "}
(according to your humble opinion) in this box
</span>
)}
<PlayerList
@ -252,7 +253,9 @@ export function MVP({ user, players }: PlayerInfoProps) {
</div>
</div>
<button onClick={() => handleSubmit()}>submit</button>
<button className="submit" onClick={() => handleSubmit()}>
💾 <span className="submit_text">submit</span>
</button>
<dialog
id="MVPDialog"
onClick={(event) => {
@ -276,10 +279,7 @@ function openPage(pageName: string, color: string) {
tablinks = document.getElementsByClassName("tablink");
for (i = 0; i < tablinks.length; i++) {
let button = tablinks[i] as HTMLElement;
button.style.backgroundColor = "unset";
button.style.textDecoration = "unset";
button.style.fontWeight = "unset";
button.style.color = "unset";
button.style.opacity = "50%";
}
// Show the specific tab content
(document.getElementById(pageName) as HTMLElement).style.display = "block";
@ -287,10 +287,8 @@ function openPage(pageName: string, color: string) {
let activeButton = document.getElementById(
pageName + "Button"
) as HTMLElement;
activeButton.style.textDecoration = "underline";
activeButton.style.fontWeight = "bold";
activeButton.style.backgroundColor = "#3366cc";
activeButton.style.color = "white";
activeButton.style.opacity = "100%";
document.body.style.backgroundColor = color;
}
@ -315,22 +313,22 @@ export default function Rankings() {
<SelectUser {...{ user, setUser, players, setPlayers }} />
{user.length === 1 && (
<>
<div className="container">
<button
className="tablink"
id="ChemistryButton"
onClick={() => openPage("Chemistry", "aliceblue")}
>
Chemistry
</button>
<button
className="tablink"
id="MVPButton"
onClick={() => openPage("MVP", "aliceblue")}
>
MVP
</button>
</div>
<div className="container navbar">
<button
className="tablink"
id="ChemistryButton"
onClick={() => openPage("Chemistry", "aliceblue")}
>
🧪 Chemistry
</button>
<button
className="tablink"
id="MVPButton"
onClick={() => openPage("MVP", "aliceblue")}
>
🏆 MVP
</button>
</div>
<div id="Chemistry" className="tabcontent">
<Chemistry {...{ user, players }} />