From 42714801e9b2e9a518d267f952cbb4ca40c46b9b Mon Sep 17 00:00:00 2001 From: VIktorGrev <viktog2210@gmail.com> Date: Wed, 17 Apr 2024 16:01:17 +0200 Subject: [PATCH] feat: Adding leaderboard and google icons --- src/App.vue | 2 + src/assets/Sparesti-logo.png | Bin 19365 -> 14932 bytes src/assets/icons/feedback.svg | 1 + src/assets/icons/leaderboard.svg | 1 + src/assets/icons/logout.svg | 1 + src/assets/icons/newsletter.svg | 1 + src/assets/icons/person.svg | 1 + src/assets/icons/saving.svg | 1 + src/assets/icons/settings.svg | 1 + src/assets/icons/storefront.svg | 1 + src/components/BaseComponents/Footer.vue | 4 +- src/components/BaseComponents/Menu.vue | 174 ++++++++++++------ .../LeaderboardComponents/Leaderboard.vue | 161 ++++++++++++++++ src/views/LeaderboardView.vue | 48 +++++ 14 files changed, 341 insertions(+), 56 deletions(-) create mode 100644 src/assets/icons/feedback.svg create mode 100644 src/assets/icons/leaderboard.svg create mode 100644 src/assets/icons/logout.svg create mode 100644 src/assets/icons/newsletter.svg create mode 100644 src/assets/icons/person.svg create mode 100644 src/assets/icons/saving.svg create mode 100644 src/assets/icons/settings.svg create mode 100644 src/assets/icons/storefront.svg create mode 100644 src/components/LeaderboardComponents/Leaderboard.vue create mode 100644 src/views/LeaderboardView.vue diff --git a/src/App.vue b/src/App.vue index 1a140ee..12ad03a 100644 --- a/src/App.vue +++ b/src/App.vue @@ -14,5 +14,7 @@ import ErrorBoundaryCatcher from '@/components/Exceptions/ErrorBoundaryCatcher.v <style> main { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + font-weight: 600; + } </style> \ No newline at end of file diff --git a/src/assets/Sparesti-logo.png b/src/assets/Sparesti-logo.png index 22c480c6044969c4c3352cd33f20a3a0334441b9..edbd70f919853607975310bd02e62da2bbc7d53d 100644 GIT binary patch literal 14932 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 literal 19365 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 diff --git a/src/assets/icons/feedback.svg b/src/assets/icons/feedback.svg new file mode 100644 index 0000000..796e434 --- /dev/null +++ b/src/assets/icons/feedback.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 -960 960 960" width="48"><path d="M240-399h313v-60H240v60Zm0-130h480v-60H240v60Zm0-130h480v-60H240v60ZM80-80v-740q0-24 18-42t42-18h680q24 0 42 18t18 42v520q0 24-18 42t-42 18H240L80-80Zm134-220h606v-520H140v600l74-80Zm-74 0v-520 520Z" fill="#ffffff"/></svg> \ No newline at end of file diff --git a/src/assets/icons/leaderboard.svg b/src/assets/icons/leaderboard.svg new file mode 100644 index 0000000..a585925 --- /dev/null +++ b/src/assets/icons/leaderboard.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 -960 960 960" width="48"><path d="M140-180h187v-360H140v360Zm247 0h186v-600H387v600Zm246 0h187v-280H633v280ZM80-120v-480h247v-240h306v320h247v400H80Z" fill="#ffffff"/></svg> \ No newline at end of file diff --git a/src/assets/icons/logout.svg b/src/assets/icons/logout.svg new file mode 100644 index 0000000..1c5e27e --- /dev/null +++ b/src/assets/icons/logout.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 -960 960 960" width="48"><path d="M180-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h299v60H180v600h299v60H180Zm486-185-43-43 102-102H360v-60h363L621-612l43-43 176 176-174 174Z" fill="#ffffff"/></svg> \ No newline at end of file diff --git a/src/assets/icons/newsletter.svg b/src/assets/icons/newsletter.svg new file mode 100644 index 0000000..e9b493b --- /dev/null +++ b/src/assets/icons/newsletter.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 -960 960 960" width="48"><path d="M140-120q-24 0-42-18t-18-42v-600q0-24 18-42t42-18h680q24 0 42 18t18 42v600q0 24-18 42t-42 18H140Zm0-60h680v-600H140v600Zm109-106h462v-60H249v60Zm0-166h155v-222H249v222Zm259 0h203v-60H508v60Zm0-162h203v-60H508v60ZM140-180v-600 600Z" fill="#ffffff"/></svg> \ No newline at end of file diff --git a/src/assets/icons/person.svg b/src/assets/icons/person.svg new file mode 100644 index 0000000..ef3c9d4 --- /dev/null +++ b/src/assets/icons/person.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 -960 960 960" width="48"><path d="M480-481q-66 0-108-42t-42-108q0-66 42-108t108-42q66 0 108 42t42 108q0 66-42 108t-108 42ZM160-160v-94q0-38 19-65t49-41q67-30 128.5-45T480-420q62 0 123 15.5t127.921 44.694q31.301 14.126 50.19 40.966Q800-292 800-254v94H160Zm60-60h520v-34q0-16-9.5-30.5T707-306q-64-31-117-42.5T480-360q-57 0-111 11.5T252-306q-14 7-23 21.5t-9 30.5v34Zm260-321q39 0 64.5-25.5T570-631q0-39-25.5-64.5T480-721q-39 0-64.5 25.5T390-631q0 39 25.5 64.5T480-541Zm0-90Zm0 411Z" fill="#ffffff"/></svg> \ No newline at end of file diff --git a/src/assets/icons/saving.svg b/src/assets/icons/saving.svg new file mode 100644 index 0000000..d90502d --- /dev/null +++ b/src/assets/icons/saving.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 -960 960 960" width="48"><path d="M640-520q17 0 28.5-11.5T680-560q0-17-11.5-28.5T640-600q-17 0-28.5 11.5T600-560q0 17 11.5 28.5T640-520ZM320-620h200v-60H320v60ZM180-120q-34-114-67-227.5T80-580q0-92 64-156t156-64h200q29-38 70.5-59t89.5-21q25 0 42.5 17.5T720-820q0 6-1.5 12t-3.5 11q-4 11-7.5 22.5T702-751l91 91h87v279l-113 37-67 224H480v-80h-80v80H180Zm45-60h115v-80h200v80h115l63-210 102-35v-175h-52L640-728q1-25 6.5-48.5T658-824q-38 10-72 29.5T534-740H300q-66.286 0-113.143 46.857T140-580q0 103.158 29 201.579T225-180Zm255-322Z" fill="#ffffff"/></svg> \ No newline at end of file diff --git a/src/assets/icons/settings.svg b/src/assets/icons/settings.svg new file mode 100644 index 0000000..542fa09 --- /dev/null +++ b/src/assets/icons/settings.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 -960 960 960" width="48"><path d="m388-80-20-126q-19-7-40-19t-37-25l-118 54-93-164 108-79q-2-9-2.5-20.5T185-480q0-9 .5-20.5T188-521L80-600l93-164 118 54q16-13 37-25t40-18l20-127h184l20 126q19 7 40.5 18.5T669-710l118-54 93 164-108 77q2 10 2.5 21.5t.5 21.5q0 10-.5 21t-2.5 21l108 78-93 164-118-54q-16 13-36.5 25.5T592-206L572-80H388Zm48-60h88l14-112q33-8 62.5-25t53.5-41l106 46 40-72-94-69q4-17 6.5-33.5T715-480q0-17-2-33.5t-7-33.5l94-69-40-72-106 46q-23-26-52-43.5T538-708l-14-112h-88l-14 112q-34 7-63.5 24T306-642l-106-46-40 72 94 69q-4 17-6.5 33.5T245-480q0 17 2.5 33.5T254-413l-94 69 40 72 106-46q24 24 53.5 41t62.5 25l14 112Zm44-210q54 0 92-38t38-92q0-54-38-92t-92-38q-54 0-92 38t-38 92q0 54 38 92t92 38Zm0-130Z" fill="#ffffff"/></svg> \ No newline at end of file diff --git a/src/assets/icons/storefront.svg b/src/assets/icons/storefront.svg new file mode 100644 index 0000000..e259d83 --- /dev/null +++ b/src/assets/icons/storefront.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 -960 960 960" width="48"><path d="M840-519v339q0 24-18 42t-42 18H179q-24 0-42-18t-18-42v-339q-28-24-37-59t2-70l43-135q8-27 28-42t46-15h553q28 0 49 15.5t29 41.5l44 135q11 35 1.5 70T840-519Zm-270-31q29 0 49-19t16-46l-25-165H510v165q0 26 17 45.5t43 19.5Zm-187 0q28 0 47.5-19t19.5-46v-165H350l-25 165q-4 26 14 45.5t44 19.5Zm-182 0q24 0 41.5-16.5T263-607l26-173H189l-46 146q-10 31 8 57.5t50 26.5Zm557 0q32 0 50.5-26t8.5-58l-46-146H671l26 173q3 24 20.5 40.5T758-550ZM179-180h601v-311q1 1-6.5 1H758q-25 0-47.5-10.5T666-533q-16 20-40 31.5T573-490q-30 0-51.5-8.5T480-527q-15 18-38 27.5t-52 9.5q-31 0-55-11t-41-32q-24 21-47 32t-46 11h-13.5q-6.5 0-8.5-1v311Zm601 0H179h601Z" fill="#ffffff"/></svg> \ No newline at end of file diff --git a/src/components/BaseComponents/Footer.vue b/src/components/BaseComponents/Footer.vue index 4df3ae5..7fddbaa 100644 --- a/src/components/BaseComponents/Footer.vue +++ b/src/components/BaseComponents/Footer.vue @@ -1,9 +1,11 @@ <template> <div> - <footer class="text-center text-white bg-danger-subtle" style="width: 100%"> + <footer id = "footer" class="text-center text-white" style="width: 100%"> <div class="text-center p-3"> © 2024 Copyright: Anders Høvik, Andreas Svendsrud, Henrik Dybdal, Henrik Sandok, Jens Aanestad, Victor Kaste, Viktor Grevskott </div> </footer> </div> </template> + +<style scoped> #footer {background-color: #0A58CA;}</style> diff --git a/src/components/BaseComponents/Menu.vue b/src/components/BaseComponents/Menu.vue index 1b5a85f..a46ebcc 100644 --- a/src/components/BaseComponents/Menu.vue +++ b/src/components/BaseComponents/Menu.vue @@ -1,8 +1,9 @@ <template> - <nav class="navbar navbar-expand-lg bg-success"> - <div class="container-fluid" > + <nav id="navBar" class="navbar navbar-expand-xl"> + <div class="container-fluid"> <a class="navbar-brand" href="/" @click="toHome"> - <img src="/src/assets/Sparesti-logo.png" alt="Sparesti-logo" width="60"> + <img id="logoImg" src="/src/assets/Sparesti-logo.png" alt="Sparesti-logo" width="60"> + <span id="logo" class="text-white">Sparesti</span> </a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" @@ -12,95 +13,158 @@ <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav ms-auto mb-2 mb-lg-0 ui-menu"> <li class="nav-item"> - <a class="nav-link text-white" href="/news" @click="toSavingGoals">Saving goals</a> + <a class="nav-link text-white" href="#" @click="toSavingGoals"><img + src="@/assets/icons/saving.svg">Saving goals</a> </li> <li class="nav-item"> - <a class="nav-link text-white" href="/news" @click="toLeaderboard">Leaderboard</a> + <a class="nav-link text-white" href="#" @click="toLeaderboard"><img + src="@/assets/icons/leaderboard.svg">Leaderboard</a> + </li> + <li class="nav-item"> + <a class="nav-link text-white" href="#" @click="toNews"><img + src="@/assets/icons/newsletter.svg">News</a> + </li> + <li class="nav-item"> + <a class="nav-link text-white" href="#" @click="toStore"><img + src="@/assets/icons/storefront.svg">Store</a> + </li> + <li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle username-text text-white " href="#" role="button" + data-bs-toggle="dropdown" aria-expanded="false"> + <img src="@/assets/icons/person.svg">Username + </a> + <ul class="dropdown-menu dropdown-username-content"> + <li><a class="dropdown-item text-white dropdown-username-link" href="#" + @click="toUserProfile"><img src="@/assets/icons/person.svg">User Profile</a></li> + <li><a class="dropdown-item text-white dropdown-username-link" href="#" + @click="toSetting"><img src="@/assets/icons/settings.svg">Setting</a></li> + <li><a class="dropdown-item text-white dropdown-username-link" href="#" + @click="toFeedback"><img src="@/assets/icons/feedback.svg">Feedback</a></li> + <li><a class="dropdown-item text-white dropdown-username-link" href="#" + @click="toFeedback"><img src="@/assets/icons/logout.svg">Log out</a></li> + </ul> </li> - <li class="nav-item"> - <a class="nav-link text-white" href="/news" @click="toNews">News</a> - </li> - <li class="nav-item"> - <a class="nav-link text-white" href="/news" @click="toStore">Store</a> - </li> - </ul> - <nav class="navbar bg-success"> - <div class="container-fluid"> - <a class="nav-link dropdown-toggle username-text text-white " href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> - <img src="/src/assets/userprofile.png" alt="Userprofile" width="30" height="30" class="d-inline-block align-text-top"> - Username - </a> - <ul class="dropdown-menu bg-success dropdown-username-content"> - <li><a class="dropdown-item text-white dropdown-username-link" href="/news" @click="toUserProfile">User Profile</a></li> - <li><a class="dropdown-item text-white dropdown-username-link" href="/news" @click="toSetting">Setting</a></li> - <li><a class="dropdown-item text-white dropdown-username-link" href="/news" @click="toFeedback">Feedback</a></li> </ul> - </div> - </nav> + </div> </div> </nav> </template> <script setup lang="ts"> - - -/** - * May need to change from a-links to routerlinks to avoid complications with href. - */ - -import {useRouter} from "vue-router"; +import { useRouter } from "vue-router"; const router = useRouter(); -function toHome(){ - router.push('/') +function toHome() { + router.push('/') } -function toSavingGoals(){ - router.push('/news') +function toSavingGoals() { + router.push('/news') } -function toLeaderboard(){ - router.push('/news') +function toLeaderboard() { + router.push('/news') } -function toNews(){ - router.push('/news') +function toNews() { + router.push('/news') } -function toStore(){ - router.push('/news') +function toStore() { + router.push('/news') } -function toSetting(){ - router.push('/news') +function toSetting() { + router.push('/news') } -function toFeedback(){ - router.push('/news') +function toFeedback() { + router.push('/news') } -function toUserProfile(){ - router.push('/news') +function toUserProfile() { + router.push('/news') } </script> <style scoped> -.ui-menu{ - font-size: 150%; +.navbar-brand { + display: flex; + align-items: center; +} + +.navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(255, 255, 255)' stroke-width='2' stroke-linecap='round' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"); +} + +.nav-item { + padding: 0.3rem 0.6rem; + font-size: 1.7rem; +} + +.nav-item:hover { + background-color: #2b6ac7; } -.username-text{ - font-size: 150%; +.nav-item .dropdown { + display: flex; + justify-content: center; +} + +.nav-link { + display: flex; + align-items: center; + justify-content: center; +} + +.dropdown-item { + width: 100%; + display: flex; + justify-content: center; +} + +.dropdown-menu { + background-color: #0A58CA; +} + +.dropdown-username-link { + font-size: 1.7rem; + display: flex; + justify-self: center; +} + +.dropdown-username-link:hover { + background-color: #2b6ac7; +} + +#navBar { + background-color: #0A58CA; +} + +.navbar { + display: flex; + align-items: center; +} + +.container-fluid { + font-size: 1.7rem; +} +#logo { + font-size: 2.5rem; + height: 100%; } -.dropdown-username-content{ - font-size: 150%; +.nav-link img { + margin-right: 5px; } -.dropdown-username-link:hover{ - background-color: #538d53 +#logoImg { + margin-right: 0.3rem; + width: 75px; + height: auto; + aspect-ratio: 1.3/1; } </style> \ No newline at end of file diff --git a/src/components/LeaderboardComponents/Leaderboard.vue b/src/components/LeaderboardComponents/Leaderboard.vue new file mode 100644 index 0000000..4831780 --- /dev/null +++ b/src/components/LeaderboardComponents/Leaderboard.vue @@ -0,0 +1,161 @@ +<template> + <div id="leaderboard"> + <div class="ribbon"></div> + <table> + <tr v-for="(entry, index) in leaderboard" :key="entry.user.id"> + <td class="number">{{ index + 1 }}</td> + <td class="name" @click="navigateToUserProfile(entry.user.id)">{{ entry.user.username }}</td> + <td class="points" v-if="index === 0"> + {{ entry.score }} + <div class = "medal"> + <img class="gold-medal" src="https://github.com/malunaridev/Challenges-iCodeThis/blob/master/4-leaderboard/assets/gold-medal.png?raw=true" alt="gold medal" /> + </div> + </td> + <td v-else class="points">{{ entry.score }}</td> + </tr> + </table> + </div> + </template> + + <script setup lang="ts"> + import { ref } from 'vue'; + import { useRouter } from 'vue-router'; + + const router = useRouter(); + + const props = defineProps({ + leaderboard: { + type: Array, + required: true + } + }); + + const navigateToUserProfile = () => { + router.push({ name: 'news' }); + }; + </script> + + <style scoped> + #leaderboard { + width: 100%; + position: relative; + } + + table { + width: 100%; + border-collapse: collapse; + table-layout: fixed; + color: #141a39; + cursor: default; + } + + tr { + transition: all 0.2s ease-in-out; + border-radius: 0.2rem; + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; + } + + tr:not(:first-child):hover { + background-color: #fff; + transform: scale(1.1); + -webkit-box-shadow: 0px 5px 15px 8px #e4e7fb; + box-shadow: 0px 5px 15px 8px #e4e7fb; + } + + tr:nth-child(even) { + background-color: #f9f9f9; + } + + tr:nth-child(1) { + color: #fff; + } + + td { + height: 2rem; + font-family: "Rubik", sans-serif; + font-size: 1.4rem; + padding: 1rem 2rem; + position: relative; + } + + .number { + width: 1rem; + font-size: 2.2rem; + font-weight: bold; + text-align: left; + display: flex; + align-items: center; + } + + .name { + font-size: 1.3rem; + cursor: pointer; + display: flex; + align-items: center; + } + + .points { + font-weight: bold; + font-size: 1.3rem; + display: flex; + justify-content: flex-end; + align-items: center; + } + + @media (max-width: 1000px) { + .number .name .points { + font-size: 0.5rem; + } + + td { + padding: 0.2rem 0.5rem; + } + } + + + .points:first-child { + width: 10rem; + } + + .gold-medal { + height: 3rem; + margin-left: 1.5rem; + } + + .ribbon { + width: 100%; + height: 4.5rem; + top: -0.5rem; + background-color: #0A58CA; + position: absolute; + left: -1rem; + box-shadow: 0px 15px 11px -6px #7a7a7d; + } + + .ribbon::before { + content: ""; + height: 1.5rem; + width: 1.5rem; + bottom: -0.8rem; + left: 0.35rem; + transform: rotate(45deg); + background-color: #0A58CA; + position: absolute; + z-index: -1; + } + + .ribbon::after { + content: ""; + height: 1.5rem; + width: 1.5rem; + bottom: -0.8rem; + right: 0.35rem; + transform: rotate(45deg); + background-color: #0A58CA; + position: absolute; + z-index: -1; + } + </style> \ No newline at end of file diff --git a/src/views/LeaderboardView.vue b/src/views/LeaderboardView.vue new file mode 100644 index 0000000..7f58d17 --- /dev/null +++ b/src/views/LeaderboardView.vue @@ -0,0 +1,48 @@ +<template> + <main> + <div id="leaderboard"> + <h1>Ranking</h1> + <Leaderboard :leaderboard="leaderboardData" @navigateToUserProfile="navigateToUserProfile" /> + </div> + </main> +</template> + +<script setup lang="ts"> +import { ref } from 'vue'; +import { useRoute, useRouter } from 'vue-router'; +import Leaderboard from '@/components/LeaderboardComponents/Leaderboard.vue'; + +let leaderboardData = ref([]); + +const router = useRouter(); + +async function fetchQuizData() { + /*leaderboard(quizId).then((response) => { + leaderboardData.value = response.data.slice(0, 10); + }).catch((error) => { + console.error("Failed to fetch leaderboard data:", error); + });*/ +} + +const navigateToUserProfile = (userId: number) => { + router.push({ name: 'user', params: { id: userId } }); +}; +</script> + +<style scoped> +main { + width: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +#leaderboard { + width: 60%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + margin-bottom: 3rem; +} +</style> \ No newline at end of file -- GitLab