Tipp-Formular hinzugefügt

This commit is contained in:
R40fendt
2025-08-18 21:47:10 +02:00
parent 661f523793
commit 928f50a55e
4 changed files with 122 additions and 43 deletions

View File

@@ -14,3 +14,4 @@ TODO:
- Klönkasten ungelesen Punkt (localStorage) - Klönkasten ungelesen Punkt (localStorage)
- Deadline ist gesetzt, als nächstes Tippen - Deadline ist gesetzt, als nächstes Tippen
- Login Formular flexibleres Backend - Login Formular flexibleres Backend
- Modal Close Button fixen

View File

@@ -131,8 +131,8 @@ tr:hover{
span.vs{ span.vs{
width: 20px; width: 20px;
/* margin-left: 10%; margin-left: 10px;
margin-right: 10%; */ margin-right: 10px;
height: 3px; height: 3px;
background-color: black; background-color: black;
} }
@@ -161,12 +161,12 @@ h2 {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
width: 100vw; width: 100%;
} }
.paarung { .paarung {
margin: 10px 0; margin: 10px 0;
width: 100vw; width: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;

View File

@@ -1,12 +1,29 @@
<script lang="ts"> <script lang="ts">
import ritzenbergenlib from "../../ritzenbergenlib"; import ritzenbergenlib from "../../ritzenbergenlib";
import "../../assets/css/bulitipp2.css";
export default { export default {
props: ["token"], props: {
token: {
type: String,
required: false,
},
},
data() { data() {
return { return {
spieltag: "", spieltag: "",
vmodelspieltag: "", vmodelspieltag: "",
tipps: [
new ritzenbergenlib.Tipp(null, null, null),
new ritzenbergenlib.Tipp(null, null, null),
new ritzenbergenlib.Tipp(null, null, null),
new ritzenbergenlib.Tipp(null, null, null),
new ritzenbergenlib.Tipp(null, null, null),
new ritzenbergenlib.Tipp(null, null, null),
new ritzenbergenlib.Tipp(null, null, null),
new ritzenbergenlib.Tipp(null, null, null),
new ritzenbergenlib.Tipp(null, null, null)
]
}; };
}, },
asyncComputed: { asyncComputed: {
@@ -26,52 +43,100 @@ export default {
}, },
default: null, default: null,
}, },
paarungen: {
get() {
if (this.spieltag == null) return null;
return fetch(
ritzenbergenlib.RitzenbergenLib.api(
"/bulitipp/paarungen.php?spieltag=" + this.spieltag
)
)
.then((response) => response.json())
.then((response) => response.data)
.then((response) =>
response.map((el) => {
return new ritzenbergenlib.Paarung(el[0], el[1], el[2]);
})
);
},
default: null,
},
},
emits: ["logout"],
methods: {
getTeamImage(team: string) {
return ritzenbergenlib.RitzenbergenLib.api(
"/bulitipp/get-image.php?team=" + team
);
},
async tippen(){
this.tipps.forEach((tipp, i) => {
tipp.paarung = this.paarungen[i];
});
const params = new URLSearchParams({
spieltag: this.spieltag.toString(),
tipps: JSON.stringify(this.tipps)
});
let result=await fetch(
ritzenbergenlib.RitzenbergenLib.api("/bulitipp/tippeintragen.php?"+params.toString()),
{
method: "GET",
headers: {
Authorization: "Bearer " + this.token,
},
}
);
console.log(result);
}
}, },
emits: ["logout"]
}; };
</script> </script>
<template> <template>
<div> <div>
<div v-if="(spieltag == '' || spieltag == null) && userinfo != null">
<div v-if="(spieltag == '' || spieltag == null) && userinfo != null"> <h1>Moin {{ userinfo.username }}!</h1>
<h1>Moin {{ userinfo.username }}!</h1> <br /><br />
<br /><br /> <form @submit.prevent="spieltag = parseInt(vmodelspieltag)">
<form @submit.prevent="spieltag = parseInt(vmodelspieltag)"> <input
<input type="text"
type="text" v-model="vmodelspieltag"
v-model="vmodelspieltag" placeholder="Spieltag"
placeholder="Spieltag" required
required />
/> <input type="submit" value="Tippen" />
<input type="submit" value="Tippen" /> <br /><br />
<br><br> <input type="button" value="Ausloggen" @click="$emit('logout')" />
<input type="button" value="Ausloggen" @click="$emit('logout')" /> </form>
</form> </div>
</div> <div class="tippenEintragen" v-else>
<div class="tippenEintragen" v-else> <form @submit.prevent="tippen" id="mainform">
<form @submit.prevent="" id="mainform"> <span class="paarung" v-for="(paarung,i) in paarungen" :key="paarung.id">
<span class="paarung"> <img :src="getTeamImage(paarung.heim)" alt="" />
<img src="./get-buli-image.php?team=Bremen" alt="" /> <span class="team-name">{{ paarung.heim }}</span>
<span class="team-name">Heim</span>
<input type="number" min="0" class="score" required /> <input v-model="tipps[i].heim" type="number" min="0" class="score" required />
<span class="vs"></span> <span class="vs"></span>
<input type="number" min="0" class="score" required /> <input v-model="tipps[i].gast" type="number" min="0" class="score" required />
<span class="team-name">Gast</span <span class="team-name">{{ paarung.gast }}</span>
><img src="./get-buli-image.php?team=Bremen" alt="" /><br /> <img :src="getTeamImage(paarung.gast)" alt="" /><br />
</span> </span>
<!--<h1>Deadline überschritten!</h1> <!--<h1>Deadline überschritten!</h1>
<h1> <h1>
BuLi-Tipp ist noch nicht für diesen Spieltag vorbereitet worden... BuLi-Tipp ist noch nicht für diesen Spieltag vorbereitet worden...
Versuch es wannanders nochmal! Versuch es wannanders nochmal!
</h1>--> </h1>-->
<input type="submit" value="Tippen" />
<br><br>
<input type="button" value="Abbrechen" @click="spieltag=''" />
</form>
</div>
<input type="submit" value="Tippen" />
<br /><br />
<input type="button" value="Abbrechen" @click="spieltag = ''" />
</form>
</div> </div>
</div>
</template> </template>
<style>
img {
width: 30px;
}
</style>

View File

@@ -64,10 +64,23 @@ class Ergebnis {
} }
} }
class Tipp{
heim: number|null;
gast: number|null;
paarung: Paarung|null;
constructor (paarung: Paarung|null, heim: number|null, gast: number|null) {
this.heim = heim;
this.gast = gast;
this.paarung = paarung;
}
}
export default { export default {
RitzenbergenLib, RitzenbergenLib,
User, User,
SpieltagSumme, SpieltagSumme,
Paarung, Paarung,
Ergebnis Ergebnis,
Tipp
} }