BuLi-Tipp asyncComputed und Ladeanimation hinzugefügt, Tippen Modal öffnen verbessert, Footer umbenannt
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
106
src/components/bulitipp/Loading.vue
Normal file
106
src/components/bulitipp/Loading.vue
Normal 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>
|
||||||
@@ -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";
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user