Files
vinlottis/frontend/ui/Highscore.vue
KevinMidboe de664b3a29 Crazy breakpoints to always show filles rows.
Hides elements so we always show filled filled rows. The wine compoennt
does not load images before they are in the viewport, so it should not
decrease performance.
2021-02-18 23:26:05 +01:00

169 lines
2.9 KiB
Vue

<template>
<div class="highscores" v-if="highscore.length > 0">
<section class="heading">
<h3>
Topp vinnere
</h3>
<router-link to="highscore" class="">
<span class="vin-link">Se alle vinnere</span>
</router-link>
</section>
<ol class="winner-list-container">
<li v-for="(person, index) in highscore" :key="person._id">
<router-link :to="`/highscore/${person.name}`" class="single-winner">
<span class="placement">{{ index + 1 }}.</span>
<i class="icon icon--medal"></i>
<p class="winner-name">{{ person.name }}</p>
</router-link>
</li>
</ol>
</div>
</template>
<script>
import { highscoreStatistics } from "@/api";
export default {
data() {
return {
highscore: [],
limit: 22
};
},
async mounted() {
return fetch(`/api/history/by-wins?limit=${limit}`)
.then(resp => resp.json())
.then(response => {
this.highscore = response.winners;
});
}
};
</script>
<style lang="scss" scoped>
@import "@/styles/variables.scss";
.heading {
display: flex;
justify-content: space-between;
align-items: center;
}
a {
text-decoration: none;
color: #333333;
&:focus,
&:active,
&:visited {
text-decoration: none;
color: #333333;
}
}
ol {
list-style-type: none;
margin-left: 0;
padding: 0;
}
.winner-list-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(12em, 1fr));
gap: 2rem;
.single-winner {
box-sizing: border-box;
width: 100%;
background: $primary;
display: grid;
grid-template-columns: 1fr 1fr 1fr;
align-items: center;
padding: 1em;
i {
font-size: 3em;
width: max-content;
justify-self: end;
}
.placement {
grid-row: 1;
grid-column: 1 / 3;
font-size: 3em;
}
.winner-name {
grid-row: 2;
grid-column: 1 / -1;
}
.winner-count {
grid-row: 3;
grid-column: 1 / -1;
margin: 0;
}
.winner-icon {
grid-row: 1;
grid-column: 3;
}
}
// I'm sorry mama
@media (max-width: 550px) {
*:nth-child(n + 7) {
display: none;
}
}
@media (max-width: 1295px) {
*:nth-child(n + 7) {
display: none;
}
}
@media (max-width: 1630px) {
*:nth-child(n + 9) {
display: none;
}
}
@media (max-width: 1968px) {
*:nth-child(n + 11) {
display: none;
}
}
@media (max-width: 2300px) {
*:nth-child(n + 13) {
display: none;
}
}
@media (max-width: 2645px) {
*:nth-child(n + 15) {
display: none;
}
}
@media (max-width: 2975px) {
*:nth-child(n + 17) {
display: none;
}
}
@media (max-width: 3311px) {
*:nth-child(n + 19) {
display: none;
}
}
@media (max-width: 3647px) {
*:nth-child(n + 21) {
display: none;
}
}
}
</style>