bugfix: fix typing for Round.Selections
This commit is contained in:
parent
1361d98570
commit
cd475288f6
@ -2,9 +2,9 @@
|
|||||||
<div class="playground__container">
|
<div class="playground__container">
|
||||||
<div class="playground__area">
|
<div class="playground__area">
|
||||||
<div class="playground__sources" :class="{ 'playground__sources__show': showSources }">
|
<div class="playground__sources" :class="{ 'playground__sources__show': showSources }">
|
||||||
<SourceCard v-for="source in sources" :key="source.id" :source="source" :selectable="selectable"
|
<SourceCard v-for="(source, index) in sources" :key="source.id" :source="source" :selectable="selectable"
|
||||||
:selected="selection == source.id" @click="selectSource(source)" :badge="badgeMap[source.id]"
|
:selected="selection == source.id" @click="selectSource(source)" :badge="badgeMap[source.id]"
|
||||||
:disabled="disabledMap[source.id]" />
|
:disabled="disabledMap[source.id]" :index="index" />
|
||||||
</div>
|
</div>
|
||||||
<div class="playground__spacer" />
|
<div class="playground__spacer" />
|
||||||
<div class="playground__quote" :class="{ 'playground__quote__show': showQuote}">
|
<div class="playground__quote" :class="{ 'playground__quote__show': showQuote}">
|
||||||
@ -36,7 +36,8 @@ const sources = round.sources as Sources
|
|||||||
|
|
||||||
const { saveSelection } = useEngine()
|
const { saveSelection } = useEngine()
|
||||||
const selection = ref('')
|
const selection = ref('')
|
||||||
const selectable = computed(() => game.phase === 'select-quote' && !selection.value && !round.selections[useUserinfoStore().id])
|
const { id } = useUserinfoStore()
|
||||||
|
const selectable = computed(() => game.phase === 'select-quote' && !selection.value && !round.selections[id])
|
||||||
const selectSource = async (source: Source): Promise<void> => {
|
const selectSource = async (source: Source): Promise<void> => {
|
||||||
if (selectable.value) {
|
if (selectable.value) {
|
||||||
await saveSelection(source.id)
|
await saveSelection(source.id)
|
||||||
@ -50,7 +51,7 @@ const showSources = computed(() => ['select-quote', 'reveal-show-count', 'reveal
|
|||||||
const showQuote = showSources
|
const showQuote = showSources
|
||||||
const showSkipButton = computed(() => game.phase === 'select-quote')
|
const showSkipButton = computed(() => game.phase === 'select-quote')
|
||||||
const badgeMap = computed(() => {
|
const badgeMap = computed(() => {
|
||||||
const badgeMap = {}
|
const badgeMap = {} as { [key: string]: number}
|
||||||
if (game.phase === 'reveal-show-count') {
|
if (game.phase === 'reveal-show-count') {
|
||||||
for (const id in round.revelation.votes) {
|
for (const id in round.revelation.votes) {
|
||||||
badgeMap[id] = round.revelation.votes[id].length
|
badgeMap[id] = round.revelation.votes[id].length
|
||||||
@ -60,7 +61,7 @@ const badgeMap = computed(() => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const disabledMap = computed(() => {
|
const disabledMap = computed(() => {
|
||||||
const disabledMap = {}
|
const disabledMap = {} as { [key: string]: boolean}
|
||||||
if (game.phase === 'reveal-source') {
|
if (game.phase === 'reveal-source') {
|
||||||
for (const id in round.revelation.sources) {
|
for (const id in round.revelation.sources) {
|
||||||
disabledMap[id] = !round.revelation.sources[id]
|
disabledMap[id] = !round.revelation.sources[id]
|
||||||
|
@ -15,6 +15,7 @@ import type { Source } from '@/composables/engine.d'
|
|||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
source: Source,
|
source: Source,
|
||||||
|
index: number,
|
||||||
selectable?: boolean,
|
selectable?: boolean,
|
||||||
selected?: boolean,
|
selected?: boolean,
|
||||||
badge?: number,
|
badge?: number,
|
||||||
|
6
client/src/composables/engine.d.ts
vendored
6
client/src/composables/engine.d.ts
vendored
@ -35,12 +35,10 @@ export type Source = {
|
|||||||
|
|
||||||
export type Sources = Array<Source>
|
export type Sources = Array<Source>
|
||||||
|
|
||||||
export type Selection = {
|
export type Selections = {
|
||||||
id: string
|
[key: string]: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export type Selections = Array<Selection>
|
|
||||||
|
|
||||||
export type RevelationVotes = {
|
export type RevelationVotes = {
|
||||||
[key: string]: Array<string>
|
[key: string]: Array<string>
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ export const useRoundStore = defineStore('RoundStore', {
|
|||||||
round: {
|
round: {
|
||||||
quote: '',
|
quote: '',
|
||||||
sources: [] as Sources,
|
sources: [] as Sources,
|
||||||
selections: [] as Selections,
|
selections: {} as Selections,
|
||||||
revelation: {
|
revelation: {
|
||||||
votes: {} as RevelationVotes,
|
votes: {} as RevelationVotes,
|
||||||
sources: {} as RevelationSources,
|
sources: {} as RevelationSources,
|
||||||
@ -20,7 +20,7 @@ export const useRoundStore = defineStore('RoundStore', {
|
|||||||
round = round || {} as Round
|
round = round || {} as Round
|
||||||
this.round.quote = round.quote || ''
|
this.round.quote = round.quote || ''
|
||||||
this.round.sources = round.sources || [] as Sources
|
this.round.sources = round.sources || [] as Sources
|
||||||
this.round.selections = round.selections || [] as Selections
|
this.round.selections = round.selections || {} as Selections
|
||||||
this.round.revelation.votes = round.revelation?.votes || {} as RevelationVotes
|
this.round.revelation.votes = round.revelation?.votes || {} as RevelationVotes
|
||||||
this.round.revelation.sources = round.revelation?.sources || {} as RevelationSources
|
this.round.revelation.sources = round.revelation?.sources || {} as RevelationSources
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user