enhance(reversi): 準備中の自分の対局も一覧に表示するように
This commit is contained in:
parent
443d1b2f5c
commit
cc420c245f
@ -43,7 +43,6 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
|||||||
) {
|
) {
|
||||||
super(meta, paramDef, async (ps, me) => {
|
super(meta, paramDef, async (ps, me) => {
|
||||||
const query = this.queryService.makePaginationQuery(this.reversiGamesRepository.createQueryBuilder('game'), ps.sinceId, ps.untilId)
|
const query = this.queryService.makePaginationQuery(this.reversiGamesRepository.createQueryBuilder('game'), ps.sinceId, ps.untilId)
|
||||||
.andWhere('game.isStarted = TRUE')
|
|
||||||
.innerJoinAndSelect('game.user1', 'user1')
|
.innerJoinAndSelect('game.user1', 'user1')
|
||||||
.innerJoinAndSelect('game.user2', 'user2');
|
.innerJoinAndSelect('game.user2', 'user2');
|
||||||
|
|
||||||
@ -53,6 +52,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
|||||||
.where('game.user1Id = :userId', { userId: me.id })
|
.where('game.user1Id = :userId', { userId: me.id })
|
||||||
.orWhere('game.user2Id = :userId', { userId: me.id });
|
.orWhere('game.user2Id = :userId', { userId: me.id });
|
||||||
}));
|
}));
|
||||||
|
} else {
|
||||||
|
query.andWhere('game.isStarted = TRUE');
|
||||||
}
|
}
|
||||||
|
|
||||||
const games = await query.take(ps.limit).getMany();
|
const games = await query.take(ps.limit).getMany();
|
||||||
|
@ -34,7 +34,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||||||
<MkPagination :pagination="myGamesPagination" :disableAutoLoad="true">
|
<MkPagination :pagination="myGamesPagination" :disableAutoLoad="true">
|
||||||
<template #default="{ items }">
|
<template #default="{ items }">
|
||||||
<div :class="$style.gamePreviews">
|
<div :class="$style.gamePreviews">
|
||||||
<MkA v-for="g in items" :key="g.id" v-panel :class="[$style.gamePreview, !g.isEnded && $style.gamePreviewActive]" tabindex="-1" :to="`/reversi/g/${g.id}`">
|
<MkA v-for="g in items" :key="g.id" v-panel :class="[$style.gamePreview, !g.isStarted && !g.isEnded && $style.gamePreviewWaiting, g.isStarted && !g.isEnded && $style.gamePreviewActive]" tabindex="-1" :to="`/reversi/g/${g.id}`">
|
||||||
<div :class="$style.gamePreviewPlayers">
|
<div :class="$style.gamePreviewPlayers">
|
||||||
<span v-if="g.winnerId === g.user1Id" style="margin-right: 0.75em; color: var(--accent); font-weight: bold;"><i class="ti ti-trophy"></i></span>
|
<span v-if="g.winnerId === g.user1Id" style="margin-right: 0.75em; color: var(--accent); font-weight: bold;"><i class="ti ti-trophy"></i></span>
|
||||||
<span v-if="g.winnerId === g.user2Id" style="margin-right: 0.75em; visibility: hidden;"><i class="ti ti-x"></i></span>
|
<span v-if="g.winnerId === g.user2Id" style="margin-right: 0.75em; visibility: hidden;"><i class="ti ti-x"></i></span>
|
||||||
@ -45,7 +45,8 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||||||
<span v-if="g.winnerId === g.user2Id" style="margin-left: 0.75em; color: var(--accent); font-weight: bold;"><i class="ti ti-trophy"></i></span>
|
<span v-if="g.winnerId === g.user2Id" style="margin-left: 0.75em; color: var(--accent); font-weight: bold;"><i class="ti ti-trophy"></i></span>
|
||||||
</div>
|
</div>
|
||||||
<div :class="$style.gamePreviewFooter">
|
<div :class="$style.gamePreviewFooter">
|
||||||
<span v-if="!g.isEnded" :class="$style.gamePreviewStatusActive">{{ i18n.ts._reversi.playing }}</span>
|
<span v-if="g.isStarted" :class="$style.gamePreviewStatusActive">{{ i18n.ts._reversi.playing }}</span>
|
||||||
|
<span v-else-if="!g.isEnded" :class="$style.gamePreviewStatusWaiting"><MkEllipsis/></span>
|
||||||
<span v-else>{{ i18n.ts._reversi.ended }}</span>
|
<span v-else>{{ i18n.ts._reversi.ended }}</span>
|
||||||
<MkTime style="margin-left: auto; opacity: 0.7;" :time="g.createdAt"/>
|
<MkTime style="margin-left: auto; opacity: 0.7;" :time="g.createdAt"/>
|
||||||
</div>
|
</div>
|
||||||
@ -60,7 +61,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||||||
<MkPagination :pagination="gamesPagination" :disableAutoLoad="true">
|
<MkPagination :pagination="gamesPagination" :disableAutoLoad="true">
|
||||||
<template #default="{ items }">
|
<template #default="{ items }">
|
||||||
<div :class="$style.gamePreviews">
|
<div :class="$style.gamePreviews">
|
||||||
<MkA v-for="g in items" :key="g.id" v-panel :class="[$style.gamePreview, !g.isEnded && $style.gamePreviewActive]" tabindex="-1" :to="`/reversi/g/${g.id}`">
|
<MkA v-for="g in items" :key="g.id" v-panel :class="[$style.gamePreview, !g.isStarted && !g.isEnded && $style.gamePreviewWaiting, g.isStarted && !g.isEnded && $style.gamePreviewActive]" tabindex="-1" :to="`/reversi/g/${g.id}`">
|
||||||
<div :class="$style.gamePreviewPlayers">
|
<div :class="$style.gamePreviewPlayers">
|
||||||
<span v-if="g.winnerId === g.user1Id" style="margin-right: 0.75em; color: var(--accent); font-weight: bold;"><i class="ti ti-trophy"></i></span>
|
<span v-if="g.winnerId === g.user1Id" style="margin-right: 0.75em; color: var(--accent); font-weight: bold;"><i class="ti ti-trophy"></i></span>
|
||||||
<span v-if="g.winnerId === g.user2Id" style="margin-right: 0.75em; visibility: hidden;"><i class="ti ti-x"></i></span>
|
<span v-if="g.winnerId === g.user2Id" style="margin-right: 0.75em; visibility: hidden;"><i class="ti ti-x"></i></span>
|
||||||
@ -71,7 +72,8 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||||||
<span v-if="g.winnerId === g.user2Id" style="margin-left: 0.75em; color: var(--accent); font-weight: bold;"><i class="ti ti-trophy"></i></span>
|
<span v-if="g.winnerId === g.user2Id" style="margin-left: 0.75em; color: var(--accent); font-weight: bold;"><i class="ti ti-trophy"></i></span>
|
||||||
</div>
|
</div>
|
||||||
<div :class="$style.gamePreviewFooter">
|
<div :class="$style.gamePreviewFooter">
|
||||||
<span v-if="!g.isEnded" :class="$style.gamePreviewStatusActive">{{ i18n.ts._reversi.playing }}</span>
|
<span v-if="g.isStarted" :class="$style.gamePreviewStatusActive">{{ i18n.ts._reversi.playing }}</span>
|
||||||
|
<span v-else-if="!g.isEnded" :class="$style.gamePreviewStatusWaiting"><MkEllipsis/></span>
|
||||||
<span v-else>{{ i18n.ts._reversi.ended }}</span>
|
<span v-else>{{ i18n.ts._reversi.ended }}</span>
|
||||||
<MkTime style="margin-left: auto; opacity: 0.7;" :time="g.createdAt"/>
|
<MkTime style="margin-left: auto; opacity: 0.7;" :time="g.createdAt"/>
|
||||||
</div>
|
</div>
|
||||||
@ -273,6 +275,10 @@ definePageMetadata(computed(() => ({
|
|||||||
box-shadow: inset 0 0 8px 0px var(--accent);
|
box-shadow: inset 0 0 8px 0px var(--accent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.gamePreviewWaiting {
|
||||||
|
box-shadow: inset 0 0 8px 0px var(--warn);
|
||||||
|
}
|
||||||
|
|
||||||
.gamePreviewPlayers {
|
.gamePreviewPlayers {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding: 16px;
|
padding: 16px;
|
||||||
@ -306,6 +312,12 @@ definePageMetadata(computed(() => ({
|
|||||||
animation: blink 2s infinite;
|
animation: blink 2s infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.gamePreviewStatusWaiting {
|
||||||
|
color: var(--warn);
|
||||||
|
font-weight: bold;
|
||||||
|
animation: blink 2s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
.waitingScreen {
|
.waitingScreen {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user