BuLi-Tipp Tabelle, Punkterechnung, Rangliste weiter programmiert

This commit is contained in:
R40fendt
2025-05-03 22:48:27 +02:00
parent 6bc82f96a2
commit 1c1069a7a3
6 changed files with 76 additions and 65 deletions

10
package-lock.json generated
View File

@@ -17,6 +17,7 @@
"sloc": "^0.3.2", "sloc": "^0.3.2",
"striptags": "^3.2.0", "striptags": "^3.2.0",
"vue": "^3.5.13", "vue": "^3.5.13",
"vue-async-computed": "^4.0.1",
"vue-router": "^4.5.0" "vue-router": "^4.5.0"
}, },
"devDependencies": { "devDependencies": {
@@ -2278,6 +2279,15 @@
} }
} }
}, },
"node_modules/vue-async-computed": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/vue-async-computed/-/vue-async-computed-4.0.1.tgz",
"integrity": "sha512-INDaMHK7MSkfSLdIDSxmeFCeW+JO+Hj7wO+tVNE4u+W7ixSEPfGi4hlwBnv2pk/NmyDCTqSnmcfgxYZpofE5eQ==",
"license": "MIT",
"peerDependencies": {
"vue": "~3"
}
},
"node_modules/vue-router": { "node_modules/vue-router": {
"version": "4.5.0", "version": "4.5.0",
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz",

View File

@@ -21,6 +21,7 @@
"sloc": "^0.3.2", "sloc": "^0.3.2",
"striptags": "^3.2.0", "striptags": "^3.2.0",
"vue": "^3.5.13", "vue": "^3.5.13",
"vue-async-computed": "^4.0.1",
"vue-router": "^4.5.0" "vue-router": "^4.5.0"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -21,7 +21,7 @@
<td>Punkte</td> <td>Punkte</td>
</tr> </tr>
<tr v-for="(user, i) in users"> <tr v-for="(user, i) in users">
<td>{{ i }}</td> <td>{{ i+1 }}</td>
<td> <td>
<!-- <iframe class="iframeRanglisteDetailansicht" <!-- <iframe class="iframeRanglisteDetailansicht"
data-src="">Detailansicht User 1</iframe> --> data-src="">Detailansicht User 1</iframe> -->

View File

@@ -1,26 +1,20 @@
<script lang="ts"> <script lang="ts">
export default { export default {
props: { props: {
users: { users: {
type: Array, type: Array<any>,
required: true,
},
spieltage: {
type: null,
required: true, required: true,
}, },
}, },
computed: { computed: {
spieltage() {
let result=[
[5,10,15,20,25,30],
[5,10,15,20,25,30],
[5,10,15,20,25,30]
];
return result;
},
}, },
methods: { methods: {
tagessumme(spieltag:number, user:number){
return 5;
}
} }
}; };
</script> </script>
@@ -29,22 +23,22 @@ export default {
<br /><br /> <br /><br />
<h2>Punktetabelle</h2> <h2>Punktetabelle</h2>
<div id="load-table-btn-container"> <!--<div id="load-table-btn-container">
<button id="load-table-btn">Punkte ausrechnen</button> <button id="load-table-btn">Punkte ausrechnen</button>
</div> </div>-->
<table> <table>
<tbody> <tbody>
<tr> <tr>
<td>Tag</td> <td>Tag</td>
<td v-for="user in users">{{ user.name }}</td> <td v-for="spieltag in spieltage[0]">{{ spieltag.user.name }}</td>
</tr> </tr>
<tr v-for="spieltag,i in spieltage"> <tr v-for="spieltag, i in spieltage">
<td>{{ i+1 }}</td> <td>{{ i+1 }}</td>
<!-- Modal --> <!-- Modal -->
<!-- Open BTN --> <!-- Open BTN -->
<td class="as-link" v-for="userpoints in spieltag">{{ userpoints }}</td> <td class="as-link" v-for="userpoints in spieltag">{{ userpoints.points }}</td>
</tr> </tr>
<tr> <tr>

View File

@@ -1,7 +1,9 @@
import { createApp } from "vue"; import { createApp } from "vue";
import App from "./App.vue"; import App from "./App.vue";
import router from "./router"; import router from "./router";
import AsyncComputed from "vue-async-computed";
createApp(App) createApp(App)
.use(router) .use(router)
.use(AsyncComputed)
.mount("#app"); .mount("#app");

View File

@@ -6,6 +6,8 @@ import Uebersicht from "../components/bulitipp/Uebersicht.vue";
import Rangliste from "../components/bulitipp/Rangliste.vue"; import Rangliste from "../components/bulitipp/Rangliste.vue";
import Paarungsergebnisse from "../components/bulitipp/Paarungsergebnisse.vue"; import Paarungsergebnisse from "../components/bulitipp/Paarungsergebnisse.vue";
import Tabelle from "../components/bulitipp/Tabelle.vue"; import Tabelle from "../components/bulitipp/Tabelle.vue";
import $ from "jquery";
import RitzenbergenLib from "../ritzenbergenlib.ts";
export default { export default {
components: { components: {
@@ -15,51 +17,36 @@ export default {
Uebersicht, Uebersicht,
Rangliste, Rangliste,
Paarungsergebnisse, Paarungsergebnisse,
Tabelle Tabelle,
},
asyncComputed: {
async users() {
return fetch(RitzenbergenLib.api("/bulitipp/get-users.php"))
.then((response) => response.json())
.then((result) => {
result.forEach((user, i) => {
let sum = 0;
this.spieltage.forEach((spieltag) => {
let points = spieltag.find((element) => {
return element.user.id === user.id;
});
sum += points.points;
});
user.points = sum;
});
})
.catch((error) => console.error("Error:", error));
},
}, },
computed: { computed: {
tippenoffen() { tippenoffen() {
return this.$route.path === "/bulitipp/tippen"; return this.$route.path === "/bulitipp/tippen";
}, },
users() {
return [ sortedUsers() {
{ if(this.users instanceof Array) return [...this.users].sort((a, b) => b.points - a.points);
id: 1,
name: "User 1",
points: 10,
kuerzel: "U1",
},
{
id: 2,
name: "User 2",
points: 20,
kuerzel: "U2",
},
{
id: 3,
name: "User 3",
points: 10,
kuerzel: "U3",
},
{
id: 4,
name: "User 4",
points: 20,
kuerzel: "U4",
},
{
id: 5,
name: "User 5",
points: 10,
kuerzel: "U5",
},
{
id: 6,
name: "User 6",
points: 20,
kuerzel: "U6",
},
].sort((a, b) => b.points - a.points);
}, },
teams() { teams() {
return { return {
@@ -186,11 +173,29 @@ export default {
}, },
]; ];
}, },
spieltage() {
let result: number[][] = [];
$.ajax(RitzenbergenLib.api("/bulitipp/ts.php"), {
async: false,
success(data) {
console.log("success");
result = JSON.parse(data);
},
});
return result;
},
}, },
methods: { methods: {
tippenschliessen() { tippenschliessen() {
this.$router.push("/bulitipp"); this.$router.push("/bulitipp");
}, },
gs(i: number) {
let result = 0;
this.spieltage[i].forEach((element) => {
result += element;
});
return result;
},
}, },
}; };
</script> </script>
@@ -226,30 +231,29 @@ export default {
<h1>Test</h1> <h1>Test</h1>
</Modal> </Modal>
<Uebersicht :users="users" /> <Uebersicht :users="users" />
<!-- Rangliste --> <!-- Rangliste -->
<Rangliste :users="users"/> <Rangliste :users="sortedUsers" />
<!-- Paarungsergebnisse --> <!-- Paarungsergebnisse -->
<Paarungsergebnisse :paarungen="paarungen" :teams="teams"/> <Paarungsergebnisse :paarungen="paarungen" :teams="teams" />
<!-- Punktetabelle --> <!-- Punktetabelle -->
<Tabelle :users="users"/> <Tabelle :users="users" :spieltage="spieltage" />
<br /> <br />
<br /> <br />
<br /> <br />
<Footer /> <Footer />
</template> </template>
<style scoped> <style scoped>
@import "../assets/css/bulitipp2.css"; @import "../assets/css/bulitipp2.css";
#hero-17-u6k7q0xIhk{ #hero-17-u6k7q0xIhk {
margin-bottom: 100px; margin-bottom: 100px;
} }
</style> </style>