Added scores

This commit is contained in:
2023-06-18 16:57:33 +03:00
parent fc6ae4e245
commit 08a77c48bf
4 changed files with 67 additions and 17 deletions

View File

@@ -1,5 +0,0 @@
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}

View File

@@ -34,10 +34,9 @@
"plugin:vue/vue3-recommended", "plugin:vue/vue3-recommended",
"eslint:recommended" "eslint:recommended"
], ],
"parserOptions": { "rules": {
"parser": "babel-eslint" "vue/multi-word-component-names": 0
}, }
"rules": {}
}, },
"browserslist": [ "browserslist": [
"> 1%", "> 1%",

View File

@@ -3,13 +3,13 @@
class="answers" class="answers"
> >
<span <span
class="option"
v-for="name in options" v-for="name in options"
:key="name" :key="name"
@click="selectAnswer(name)" class="option"
:class="{ :class="{
'-selected': selection === name '-selected': selection === name
}" }"
@click="selectAnswer(name)"
> >
{{ name }} {{ name }}
</span> </span>

View File

@@ -10,31 +10,55 @@
<div class="answersState"> <div class="answersState">
<div class="users -unanwsered"> <div class="users -unanwsered">
<h2 class="usersTitle">Не ответили</h2> <h2 class="usersTitle">
Не ответили
</h2>
<ul> <ul>
<li <li
class="user"
v-for="user in unansweredPlayers" v-for="user in unansweredPlayers"
:key="user.name" :key="user.name"
class="user"
> >
<span>
{{ user.name }} {{ user.name }}
</span>
<span
class="score"
:class="{
'-leader': leader === user.name
}"
>
{{ score[user.name] }}
</span>
</li> </li>
</ul> </ul>
</div> </div>
<div class="users"> <div class="users">
<h2 class="usersTitle">Ответили</h2> <h2 class="usersTitle">
Ответили
</h2>
<ul> <ul>
<li <li
class="user"
v-for="user in answeredPlayers" v-for="user in answeredPlayers"
:key="user.name" :key="user.name"
class="user"
:class="{ :class="{
'-wrong': correctAnswer && user.selected !== correctAnswer, '-wrong': correctAnswer && user.selected !== correctAnswer,
'-correct': correctAnswer && user.selected === correctAnswer '-correct': correctAnswer && user.selected === correctAnswer
}" }"
> >
<span>
{{ user.name }} {{ user.name }}
</span>
<span
class="score"
:class="{
'-leader': leader === user.name
}"
>
{{ score[user.name] }}
</span>
</li> </li>
</ul> </ul>
</div> </div>
@@ -67,6 +91,7 @@ const card = ref()
const users = ref([]) const users = ref([])
const correctAnswer = ref() const correctAnswer = ref()
const loading = ref() const loading = ref()
const score = ref({})
async function getCard() { async function getCard() {
loading.value = true loading.value = true
@@ -93,6 +118,12 @@ const unansweredPlayers = computed(() => {
return users.value.filter((user) => !user.selected) return users.value.filter((user) => !user.selected)
}) })
const leader = computed(() => {
return Object.keys(score.value).sort((a, b) => {
return score.value[a] - score.value[b]
})[0]
})
addAnswerListener((data) => { addAnswerListener((data) => {
users.value = users.value.map((user) => { users.value = users.value.map((user) => {
if (user.name === data.username) { if (user.name === data.username) {
@@ -117,6 +148,7 @@ addUserlistListener((data) => {
addRevealListener((data) => { addRevealListener((data) => {
correctAnswer.value = data.correctAnswer correctAnswer.value = data.correctAnswer
score.value = data.score
setTimeout(() => { setTimeout(() => {
getCard() getCard()
@@ -191,6 +223,12 @@ onMounted(() => {
border-right: 1px dashed var(--clr-text); border-right: 1px dashed var(--clr-text);
} }
.user {
display: flex;
align-items: center;
gap: 8px;
}
.user.-correct { .user.-correct {
color: green; color: green;
} }
@@ -199,6 +237,24 @@ onMounted(() => {
color: red; color: red;
} }
.score {
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 12px;
width: 16px;
height: 16px;
border-radius: 64px;
border: 2px solid var(--clr-text);
background: var(--clr-bg);
color: var(--clr-text);
&.-leader {
background: var(--clr-accent);
}
}
.usersTitle { .usersTitle {
margin: 0; margin: 0;
} }