Styled maps-related pages...

This commit is contained in:
BurnyLlama 2021-11-05 10:32:06 +01:00
parent 7608a9fcd4
commit c7092393d1
7 changed files with 275 additions and 177 deletions

View File

@ -2,12 +2,6 @@
@use "partials/settings.scss"; @use "partials/settings.scss";
@use "partials/shadows.scss"; @use "partials/shadows.scss";
.maps-container {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-around;
}
.map { .map {
background-color: palette.$grey3; background-color: palette.$grey3;
@ -37,12 +31,17 @@
font-size: 1.2rem; font-size: 1.2rem;
font-weight: bold; font-weight: bold;
margin: .5rem 2rem; margin: 1rem 2rem .5rem 2rem;
} }
.map-info { .map-info {
margin: .25rem 2rem; margin: .25rem 2rem;
td {
padding: .25rem 0;
vertical-align: middle;
}
td:first-child { td:first-child {
width: 9ch; width: 9ch;
} }
@ -65,3 +64,68 @@ a.map-more-info {
background-color: palette.$accent; background-color: palette.$accent;
} }
} }
.map-detailed {
padding-bottom: 1rem;
&:hover {
transform: none;
}
.map-image {
width: 100%;
height: auto;
}
td:first-child {
width: 14ch;
}
}
.leaderboard {
width: max-content;
margin: 2rem;
padding: 1.5rem 2rem;
background-color: palette.$grey3;
border-radius: settings.$border_radius_m;
box-shadow: shadows.$small;
}
.rank {
display: flex;
margin: 1.5rem 0;
.country-image {
height: 1.5rem;
margin: auto .5rem auto 0;
}
.rank-position {
color: palette.$primary;
margin: auto .5rem auto 0;
font-weight: bold;
}
.rank-player {
margin: auto 2rem auto 0;
}
.rank-time {
color: palette.$grey10;
font-family: 'Manrope Light';
margin: auto 0 auto auto;
}
}
.leaderboard-history {
width: min(70ch, 70vw);
margin: 2rem;
padding: 1.5rem 2rem;
background-color: palette.$grey3;
border-radius: settings.$border_radius_m;
box-shadow: shadows.$small;
}

View File

@ -66,6 +66,15 @@ nav {
} }
} }
main.flex-container {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-around;
margin: 0 10vw;
}
// //
// TEXT // TEXT

View File

@ -1 +1 @@
.maps-container{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-around}.map{background-color:#20203f;border-radius:1rem;box-shadow:.25rem 0 2rem #00001f;display:flex;flex-direction:column;justify-content:center;margin:2rem 1rem;transition:transform .3s,box-shadow .3s}.map:hover{transform:scale(1.05);box-shadow:.5rem 0 4rem #00001f}.map-image{border-radius:1rem 1rem 0 0;width:360px;height:225px}.map-name{font-size:1.2rem;font-weight:bold;margin:.5rem 2rem}.map-info{margin:.25rem 2rem}.map-info td:first-child{width:9ch}a.map-more-info{margin:.75rem auto 1.25rem auto;padding:.15rem .5rem;border:.1rem solid #fba7c6;border-radius:.5rem;color:#fba7c6;text-decoration:none transparent;transition:color .3s,background-color .3s}a.map-more-info:hover{color:#10102f;background-color:#fba7c6} .map{background-color:#20203f;border-radius:1rem;box-shadow:.25rem 0 2rem #00001f;display:flex;flex-direction:column;justify-content:center;margin:2rem 1rem;transition:transform .3s,box-shadow .3s}.map:hover{transform:scale(1.05);box-shadow:.5rem 0 4rem #00001f}.map-image{border-radius:1rem 1rem 0 0;width:360px;height:225px}.map-name{font-size:1.2rem;font-weight:bold;margin:1rem 2rem .5rem 2rem}.map-info{margin:.25rem 2rem}.map-info td{padding:.25rem 0;vertical-align:middle}.map-info td:first-child{width:9ch}a.map-more-info{margin:.75rem auto 1.25rem auto;padding:.15rem .5rem;border:.1rem solid #fba7c6;border-radius:.5rem;color:#fba7c6;text-decoration:none transparent;transition:color .3s,background-color .3s}a.map-more-info:hover{color:#10102f;background-color:#fba7c6}.map-detailed{padding-bottom:1rem}.map-detailed:hover{transform:none}.map-detailed .map-image{width:100%;height:auto}.map-detailed td:first-child{width:14ch}.leaderboard{width:max-content;margin:2rem;padding:1.5rem 2rem;background-color:#20203f;border-radius:1rem;box-shadow:.25rem 0 2rem #00001f}.rank{display:flex;margin:1.5rem 0}.rank .country-image{height:1.5rem;margin:auto .5rem auto 0}.rank .rank-position{color:#ee588f;margin:auto .5rem auto 0;font-weight:bold}.rank .rank-player{margin:auto 2rem auto 0}.rank .rank-time{color:#9090af;font-family:"Manrope Light";margin:auto 0 auto auto}.leaderboard-history{width:min(70ch,70vw);margin:2rem;padding:1.5rem 2rem;background-color:#20203f;border-radius:1rem;box-shadow:.25rem 0 2rem #00001f}

View File

@ -1 +1 @@
*{margin:0;padding:0;border:0 none transparent;box-sizing:border-box;scroll-behavior:smooth;font-family:"Manrope Regular",sans-serif;font-size:1rem;line-height:1.5}html,body{color:#e0e0ff;background-color:#10102f;height:100%}nav{display:flex;align-items:center;background-color:#20203f;border-radius:0 0 2rem 2rem;box-shadow:.5rem 0 4rem #00001f;margin:0 0 2rem 0;padding:1rem 2rem}nav .logo{width:3rem;height:3rem;margin-right:2rem;border-radius:100%;background-color:#ee588f}nav a{color:#fba7c6;border-bottom:.1rem solid transparent;margin:.25rem 1rem .5rem 1rem;padding:.15rem .5rem .25rem .5rem;font-size:1.25rem;text-decoration:none transparent;transition:border .3s}nav a:hover{border-bottom:.1rem solid #fba7c6}nav a.current{color:#ee588f}nav a.current:hover{border-bottom:.1rem solid #ee588f}header,h1,h2,h3,h4,h5,h6{color:#fba7c6}header{font-size:4rem}h1{font-size:1.5rem;font-weight:normal}h2{font-size:1.35rem;font-weight:normal}h3{font-size:1.2rem;font-weight:normal}h4{font-size:1.05rem;font-weight:normal}h5{font-size:.9rem;font-weight:normal}a{color:#a3cefa}form{display:flex;flex-direction:column;justify-content:center;align-items:center}input{color:#e0e0ff;background-color:#20203f;margin:1em 0;padding:.75em 1.25em;width:min(80ch,80vw);outline:0 none transparent;border:.2rem solid transparent;border-radius:.5rem;box-shadow:.25rem 0 2rem #00001f;transition:border .3s,background-color .5s,border-radius .5s}input:hover{background-color:#30304f;border-radius:1rem}input:active,input:focus{border:.2rem solid #ee588f}footer{display:flex;flex-direction:column;align-items:center;margin:5vh 2rem}footer a{color:#74b6fb;font-size:.8rem} *{margin:0;padding:0;border:0 none transparent;box-sizing:border-box;scroll-behavior:smooth;font-family:"Manrope Regular",sans-serif;font-size:1rem;line-height:1.5}html,body{color:#e0e0ff;background-color:#10102f;height:100%}nav{display:flex;align-items:center;background-color:#20203f;border-radius:0 0 2rem 2rem;box-shadow:.5rem 0 4rem #00001f;margin:0 0 2rem 0;padding:1rem 2rem}nav .logo{width:3rem;height:3rem;margin-right:2rem;border-radius:100%;background-color:#ee588f}nav a{color:#fba7c6;border-bottom:.1rem solid transparent;margin:.25rem 1rem .5rem 1rem;padding:.15rem .5rem .25rem .5rem;font-size:1.25rem;text-decoration:none transparent;transition:border .3s}nav a:hover{border-bottom:.1rem solid #fba7c6}nav a.current{color:#ee588f}nav a.current:hover{border-bottom:.1rem solid #ee588f}main.flex-container{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-around;margin:0 10vw}header,h1,h2,h3,h4,h5,h6{color:#fba7c6}header{font-size:4rem}h1{font-size:1.5rem;font-weight:normal}h2{font-size:1.35rem;font-weight:normal}h3{font-size:1.2rem;font-weight:normal}h4{font-size:1.05rem;font-weight:normal}h5{font-size:.9rem;font-weight:normal}a{color:#a3cefa}form{display:flex;flex-direction:column;justify-content:center;align-items:center}input{color:#e0e0ff;background-color:#20203f;margin:1em 0;padding:.75em 1.25em;width:min(80ch,80vw);outline:0 none transparent;border:.2rem solid transparent;border-radius:.5rem;box-shadow:.25rem 0 2rem #00001f;transition:border .3s,background-color .5s,border-radius .5s}input:hover{background-color:#30304f;border-radius:1rem}input:active,input:focus{border:.2rem solid #ee588f}footer{display:flex;flex-direction:column;align-items:center;margin:5vh 2rem}footer a{color:#74b6fb;font-size:.8rem}

View File

@ -13,7 +13,8 @@
{% endblock %} {% endblock %}
{% block body %} {% block body %}
<main> <main class="flex-container">
<div class="map map-detailed">
<img class="map-image" src="https://ddnet.tw/ranks/maps/{{ map.map | replace(r/[À-ž]/g, "__") | replace(r/[^a-zA-Z0-9]/g, "_") }}.png"> <img class="map-image" src="https://ddnet.tw/ranks/maps/{{ map.map | replace(r/[À-ž]/g, "__") | replace(r/[^a-zA-Z0-9]/g, "_") }}.png">
<h1 class="map-name">{{ map.map }}</h1> <h1 class="map-name">{{ map.map }}</h1>
<table class="map-info"> <table class="map-info">
@ -80,7 +81,7 @@
</tr> </tr>
<tr> <tr>
<td> <td>
Unique finishes Unique finishes:
</td> </td>
<td> <td>
{{ map.finishes.unique }} {{ map.finishes.unique }}
@ -103,42 +104,57 @@
</td> </td>
</tr> </tr>
</table> </table>
</div>
<div class="leaderboard">
<h2> Records! </h2> <h2> Records! </h2>
{% for record in raceLeaderboard %} {% for record in raceLeaderboard %}
<img class="country-image" src="https://ddnet.tw/countryflags/{{ record.server }}.png"> <div class="rank">
{{ record.rank }} - <img class="country-image" data-src="https://ddnet.tw/countryflags/{{ record.server }}.png">
<p class="rank-position">{{ record.rank }}.</p>
<p class="rank-player">{{ record.player }}</p>
<p class="rank-time">
{{ (record.time - (record.time % 60)) / 60 }}: {{ (record.time - (record.time % 60)) / 60 }}:
{%- if record.time | round % 60 > 9 %} {%- if record.time | round % 60 > 9 %}
{{- record.time | round % 60 }} {{- record.time | round % 60 }}
{%- else %} {%- else -%}
0{{- record.time | round % 60 }} 0{{- record.time | round % 60 }}
{% endif %} {%- endif %}
{{ record.player }} <br> </p>
</div>
{% endfor %} {% endfor %}
</div>
<div class="leaderboard">
<h2> Team records! </h2> <h2> Team records! </h2>
{% for record in teamLeaderboard %} {% for record in teamLeaderboard %}
<img class="country-image" src="https://ddnet.tw/countryflags/{{ record.server }}.png"> <div class="rank">
{{ record.teamrank }} - <img class="country-image" data-src="https://ddnet.tw/countryflags/{{ record.server }}.png">
<p class="rank-position">{{ record.teamrank }}.</p>
<p class="rank-player">{{ record.players.join(", ") }}</p>
<p class="rank-time">
{{ (record.time - (record.time % 60)) / 60 }}: {{ (record.time - (record.time % 60)) / 60 }}:
{%- if record.time | round % 60 > 9 %} {%- if record.time | round % 60 > 9 %}
{{- record.time | round % 60 }} {{- record.time | round % 60 }}
{%- else %} {%- else -%}
0{{- record.time | round % 60 }} 0{{- record.time | round % 60 }}
{% endif %} {%- endif %}
{{ record.players.join(", ") }} <br> </p>
</div>
{% endfor %} {% endfor %}
</div>
<div class="leaderboard-history">
<h1> Record over time </h1> <h1> Record over time </h1>
<div class="container"> <div class="container">
<canvas id="chart"></canvas> <canvas id="chart"></canvas>
</div> </div>
<script> <script>
var ctx = document.getElementById("chart").getContext("2d"); const ctx = document.getElementById("chart").getContext("2d");
const graph = {{ data.graphMap | dump | safe }} const graph = {{ data.graphMap | dump | safe }}
var myChart = new Chart(ctx, { const myChart = new Chart(ctx, {
type: 'line', type: 'line',
options: { options: {
tooltips: { tooltips: {
@ -165,7 +181,7 @@
}, },
elements: { elements: {
point: { point: {
radius: 10 radius: 6
}, },
line: { line: {
fill: false fill: false
@ -176,14 +192,20 @@
datasets: [{ datasets: [{
label: '{{ map.map }}', label: '{{ map.map }}',
data: graph, data: graph,
color: [
'#EE588F'
],
backgroundColor: [
'rgba(0, 0, 0, 0)'
],
borderColor: [ borderColor: [
'rgba(255,99,132,1)' '#FBA7C6'
], ],
borderWidth: 3 borderWidth: 3
}]
} }
]} })
});
</script> </script>
</div>
</main> </main>
{% endblock %} {% endblock %}

View File

@ -4,11 +4,10 @@
{% block head %} {% block head %}
<title>DDStats - Maps!</title> <title>DDStats - Maps!</title>
<link rel="stylesheet" type="text/css" href="/assets/css/maps.css"> <link rel="stylesheet" type="text/css" href="/assets/css/maps.css">
<script src="/assets/scripts/lazyLoadImages.js" defer></script>
{% endblock %} {% endblock %}
{% block body %} {% block body %}
<main class="maps-container"> <main class="flex-container">
{% for map in data.maps %} {% for map in data.maps %}
{{ mapComponent.card(map) }} {{ mapComponent.card(map) }}
{% endfor %} {% endfor %}

View File

@ -3,9 +3,13 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/assets/css/theme.css"> <link rel="stylesheet" href="/assets/css/theme.css">
<link rel="stylesheet" href="/assets/css/fonts.css"> <link rel="stylesheet" href="/assets/css/fonts.css">
<link rel="stylesheet" href="/assets/css/theme.css"> <link rel="stylesheet" href="/assets/css/theme.css">
<script src="/assets/scripts/lazyLoadImages.js" defer></script>
{% block head %} {% block head %}
<title>DDStats</title> <title>DDStats</title>
{% endblock %} {% endblock %}