BuLi-Tipp asyncComputed und Ladeanimation hinzugefügt, Tippen Modal öffnen verbessert, Footer umbenannt

This commit is contained in:
R40fendt
2025-05-05 13:39:42 +02:00
parent 1c1069a7a3
commit dfc0420121
7 changed files with 169 additions and 55 deletions

View File

@@ -1,5 +1,4 @@
<script lang="ts"> <script lang="js">
import RouterLink from "vue-router";
export default { export default {
name: "Navbar", name: "Navbar",
props: { props: {
@@ -11,10 +10,6 @@ export default {
type: String, type: String,
required: false, required: false,
}, },
mainlink: {
type: String,
required: false,
},
}, },
data(){ data(){
return { return {
@@ -24,15 +19,22 @@ export default {
{ link: "/footer", title: "Kontakt" }, { link: "/footer", title: "Kontakt" },
{ link: "/bulitipp", title: "BuLi-Tipp" }, { link: "/bulitipp", title: "BuLi-Tipp" },
], ],
buttontextdata: "Über Ritzenbergen", buttontextdata: "Über Ritzenbergen"
mainlinkdata: "/willkommen"
} }
}, },
created() { created() {
if(this.links) this.datalinks = this.links; if(this.links) this.datalinks = this.links;
if(this.buttontext) this.buttontextdata = this.buttontext; if(this.buttontext) this.buttontextdata = this.buttontext;
if(this.mainlink) this.mainlinkdata = this.mainlink;
}, },
methods: {
clickmain(){
if(this.buttontext){
this.$emit("clickbtn");
}else{
this.$router.push("/willkommen");
}
}
}
}; };
</script> </script>
<template> <template>
@@ -86,8 +88,8 @@ export default {
</li> </li>
</ul> </ul>
<div class="navbar-buttons mbr-section-btn"> <div class="navbar-buttons mbr-section-btn">
<RouterLink class="btn btn-primary display-4" :to="mainlinkdata" <span class="btn btn-primary display-4" @click="clickmain"
>{{ buttontextdata }}</RouterLink >{{ buttontextdata }}</span
> >
</div> </div>
</div> </div>

View File

@@ -0,0 +1,106 @@
<script>
export default {
}
</script>
<template>
<div class="loading-container">
<div class="loading-main">
<h1>Lade...</h1>
<div class="dots-bars-6"></div>
</div>
</div>
</template>
<style scoped>
h1{
margin-bottom: 50px;
}
.loading-container {
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
margin: 0;
background-color: rgba(0, 0, 0, 0.5);
width: 100%;
height: 100%;
z-index: 100;
align-items: center;
justify-content: center;
display: flex;
}
.loading-main{
display: flex;
justify-content: center;
align-items: center;
height: 50%;
width: 50%;
background-color: white;
border-radius: 20px;
flex-direction: column;
}
.dots-bars-6 {
width: 40px;
height: 20px;
--c:radial-gradient(farthest-side,currentColor 93%,#0000);
background:
var(--c) 0 0,
var(--c) 50% 0;
background-size:8px 8px;
background-repeat: no-repeat;
position: relative;
clip-path: inset(-200% -100% 0 0);
animation: db6-0 1.5s linear infinite;
}
.dots-bars-6:before {
content: "";
position: absolute;
width: 8px;
height: 12px;
background:currentColor;
left:-16px;
top:0;
animation:
db6-1 1.5s linear infinite,
db6-2 0.5s cubic-bezier(0,200,.8,200) infinite;
}
.dots-bars-6:after {
content: "";
position: absolute;
inset:0 0 auto auto;
width:8px;
height: 8px;
border-radius: 50%;
background:currentColor;
animation: db6-3 1.5s linear infinite;
}
@keyframes db6-0 {
0%,30% {background-position: 0 0 ,50% 0 }
33% {background-position: 0 100%,50% 0 }
41%,63% {background-position: 0 0 ,50% 0 }
66% {background-position: 0 0 ,50% 100%}
74%,100%{background-position: 0 0 ,50% 0 }
}
@keyframes db6-1 {
90% {transform:translateY(0)}
95% {transform:translateY(15px)}
100% {transform:translateY(15px);left:calc(100% - 8px)}
}
@keyframes db6-2 {
100% {top:-0.1px}
}
@keyframes db6-3 {
0%,80%,100% {transform:translate(0)}
90% {transform:translate(26px)}
}
</style>

View File

@@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import Footer from "../components/Footer.vue"; import MyFooter from "../components/MyFooter.vue"; // Geändert von Footer auf MyFooter
import Navbar from "../components/Navbar.vue"; import Navbar from "../components/Navbar.vue";
import RitzenbergenLib from "../ritzenbergenlib"; import RitzenbergenLib from "../ritzenbergenlib";
import $ from "jquery"; import $ from "jquery";
@@ -7,11 +7,11 @@ import $ from "jquery";
export default { export default {
components: { components: {
Navbar, Navbar,
Footer, MyFooter, // Geändert von Footer auf MyFooter
}, },
data() { data() {
return { return {
bild: this.$route.params.bild, bild: parseInt(<string>this.$route.params.bild),
ev: this.$route.params.ev, ev: this.$route.params.ev,
jahr: this.$route.params.jahr, jahr: this.$route.params.jahr,
RitzenbergenLib, RitzenbergenLib,
@@ -82,7 +82,7 @@ export default {
</form> </form>
</div> </div>
<br /><br /> <br /><br />
<Footer></Footer> <MyFooter></MyFooter>
</template> </template>
<style scoped lang="scss"> <style scoped lang="scss">
@import "../assets/bildschau/style.sass"; @import "../assets/bildschau/style.sass";

View File

@@ -1,29 +1,33 @@
<script lang="ts"> <script lang="js">
import Navbar from "../components/Navbar.vue"; import Navbar from "../components/Navbar.vue";
import Footer from "../components/Footer.vue"; import MyFooter from "../components/MyFooter.vue";
import Modal from "../components/Modal.vue"; import Modal from "../components/Modal.vue";
import Uebersicht from "../components/bulitipp/Uebersicht.vue"; 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"; import RitzenbergenLib from "../ritzenbergenlib.ts";
import Loading from "../components/bulitipp/Loading.vue";
export default { export default {
components: { components: {
Navbar, Navbar,
Footer, MyFooter,
Modal, Modal,
Uebersicht, Uebersicht,
Rangliste, Rangliste,
Paarungsergebnisse, Paarungsergebnisse,
Tabelle, Tabelle,
Loading
}, },
asyncComputed: { asyncComputed: {
async users() { users: {
get(){
return fetch(RitzenbergenLib.api("/bulitipp/get-users.php")) return fetch(RitzenbergenLib.api("/bulitipp/get-users.php"))
.then((response) => response.json()) .then((response) => response.json())
.then((result) => { .then((result) => {
console.log(result);
console.log(this.spieltage);
result.forEach((user, i) => { result.forEach((user, i) => {
let sum = 0; let sum = 0;
this.spieltage.forEach((spieltag) => { this.spieltage.forEach((spieltag) => {
@@ -34,16 +38,23 @@ export default {
}); });
user.points = sum; user.points = sum;
}); });
}) return result;
.catch((error) => console.error("Error:", error)); }).catch((error) => {
return null;
});
}, },
default: [],
watch: ["spieltage"]
},
spieltage: {
get() {
return fetch(RitzenbergenLib.api("/bulitipp/ts.php"))
.then((response) => response.json());
},
default: []
}
}, },
computed: { computed: {
tippenoffen() {
return this.$route.path === "/bulitipp/tippen";
},
sortedUsers() { sortedUsers() {
if(this.users instanceof Array) return [...this.users].sort((a, b) => b.points - a.points); if(this.users instanceof Array) return [...this.users].sort((a, b) => b.points - a.points);
@@ -173,23 +184,13 @@ export default {
}, },
]; ];
}, },
spieltage() { loading(){
let result: number[][] = []; console.log(this.$asyncComputed.users);
$.ajax(RitzenbergenLib.api("/bulitipp/ts.php"), { return this.$asyncComputed.users.updating || this.$asyncComputed.spieltage.updating;
async: false, }
success(data) {
console.log("success");
result = JSON.parse(data);
},
});
return result;
},
}, },
methods: { methods: {
tippenschliessen() { gs(i) {
this.$router.push("/bulitipp");
},
gs(i: number) {
let result = 0; let result = 0;
this.spieltage[i].forEach((element) => { this.spieltage[i].forEach((element) => {
result += element; result += element;
@@ -197,10 +198,16 @@ export default {
return result; return result;
}, },
}, },
data(){
return {
tippenoffen: false
}
}
}; };
</script> </script>
<template> <template>
<Navbar buttontext="Tippen" mainlink="/bulitipp/tippen" /> <Loading v-show="loading"/>
<Navbar buttontext="Tippen" @clickbtn="tippenoffen=true" />
<section <section
class="header16 cid-u6k7q0xIhk bulitipp mbr-fullscreen mbr-parallax-background" class="header16 cid-u6k7q0xIhk bulitipp mbr-fullscreen mbr-parallax-background"
@@ -227,10 +234,9 @@ export default {
</div> </div>
</section> </section>
<Modal v-show="tippenoffen" @closemodal="tippenschliessen"> <Modal v-show="tippenoffen" @closemodal="tippenoffen=false">
<h1>Test</h1> <h1>Test</h1>
</Modal> </Modal>
<Uebersicht :users="users" /> <Uebersicht :users="users" />
<!-- Rangliste --> <!-- Rangliste -->
@@ -248,7 +254,7 @@ export default {
<br /> <br />
<br /> <br />
<Footer /> <MyFooter />
</template> </template>
<style scoped> <style scoped>

View File

@@ -1,15 +1,15 @@
<script lang="ts"> <script lang="js">
import Navbar from "../components/Navbar.vue"; import Navbar from "../components/Navbar.vue";
import Embla from "../components/Embla.vue"; import Embla from "../components/Embla.vue";
import RitzenbergenLib from "../ritzenbergenlib.ts"; import RitzenbergenLib from "../ritzenbergenlib.ts";
import Footer from "../components/Footer.vue"; import MyFooter from "../components/MyFooter.vue"; // Geändert von Footer auf MyFooter
import $ from "jquery"; import $ from "jquery";
export default { export default {
components: { components: {
Navbar, Navbar,
Embla, Embla,
Footer, MyFooter, // Geändert von Footer auf MyFooter
}, },
computed: { computed: {
events() { events() {
@@ -156,6 +156,6 @@ export default {
</div> </div>
<br /><br /><br /> <br /><br /><br />
</section> </section>
<Footer /> <MyFooter />
</template> </template>
<style scoped></style> <style scoped></style>

View File

@@ -1,9 +1,9 @@
<script lang="ts"> <script lang="js">
import Navbar from "../components/Navbar.vue"; import Navbar from "../components/Navbar.vue";
import Modal from "../components/Modal.vue"; import Modal from "../components/Modal.vue";
import Embla from "../components/Embla.vue"; import Embla from "../components/Embla.vue";
import Umgebung from "../components/startseite/Umgebung.vue"; import Umgebung from "../components/startseite/Umgebung.vue";
import Footer from "../components/Footer.vue"; import MyFooter from "../components/MyFooter.vue"; // Geändert von Footer auf MyFooter
import RitzenbergenLib from "../ritzenbergenlib.ts"; import RitzenbergenLib from "../ritzenbergenlib.ts";
import WillkommenText from "../components/startseite/WillkommenText.vue"; import WillkommenText from "../components/startseite/WillkommenText.vue";
import Bilderbuch from "../components/startseite/Bilderbuch.vue"; import Bilderbuch from "../components/startseite/Bilderbuch.vue";
@@ -17,7 +17,7 @@ export default {
Modal, Modal,
Embla, Embla,
Umgebung, Umgebung,
Footer, MyFooter, // Geändert von Footer auf MyFooter
WillkommenText, WillkommenText,
Bilderbuch, Bilderbuch,
Forms, Forms,
@@ -94,7 +94,7 @@ export default {
<Umgebung ref="umgebung" /> <Umgebung ref="umgebung" />
<Footer ref="footer" /> <MyFooter ref="footer" />
</template> </template>