mirror of
https://github.com/anatolykopyl/vk-bingo.git
synced 2026-03-26 12:54:25 +00:00
Compare commits
2 Commits
fc6ae4e245
...
d6f1e9ef71
| Author | SHA1 | Date | |
|---|---|---|---|
| d6f1e9ef71 | |||
| 08a77c48bf |
@@ -1,5 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
presets: [
|
|
||||||
'@vue/cli-plugin-babel/preset'
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -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%",
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -5,14 +5,14 @@
|
|||||||
<div class="auth">
|
<div class="auth">
|
||||||
<p>{{ question }}</p>
|
<p>{{ question }}</p>
|
||||||
<input
|
<input
|
||||||
placeholder="Ответ"
|
|
||||||
v-model="answer"
|
v-model="answer"
|
||||||
|
placeholder="Ответ"
|
||||||
class="input"
|
class="input"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
v-if="mode === 'player'"
|
v-if="mode === 'player'"
|
||||||
placeholder="Ваше имя"
|
|
||||||
v-model="username"
|
v-model="username"
|
||||||
|
placeholder="Ваше имя"
|
||||||
class="input"
|
class="input"
|
||||||
>
|
>
|
||||||
|
|
||||||
@@ -32,8 +32,8 @@
|
|||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
@click="switchMode"
|
|
||||||
class="switchMode"
|
class="switchMode"
|
||||||
|
@click="switchMode"
|
||||||
>
|
>
|
||||||
Я не {{ mode === 'player' ? 'игрок' : 'большой экран' }}!
|
Я не {{ mode === 'player' ? 'игрок' : 'большой экран' }}!
|
||||||
</button>
|
</button>
|
||||||
@@ -160,8 +160,9 @@ async function loginScreen() {
|
|||||||
|
|
||||||
@media only screen and (max-width: 520px) {
|
@media only screen and (max-width: 520px) {
|
||||||
.authCard {
|
.authCard {
|
||||||
width: 100%;
|
width: calc(100% - 90px);
|
||||||
padding: 40px 0;
|
margin: auto;
|
||||||
|
padding: 40px 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -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"
|
||||||
>
|
>
|
||||||
{{ user.name }}
|
<span>
|
||||||
|
{{ 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
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
{{ user.name }}
|
<span>
|
||||||
|
{{ 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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user