mirror of
https://github.com/Xevion/the-office.git
synced 2025-12-16 10:13:35 -06:00
Change SeasonListItem to handle null episode data with Skeleton, change key to use index-based key
This commit is contained in:
@@ -16,7 +16,7 @@
|
|||||||
<template v-for="(episode, index) in seasons[season.season_id - 1].episodes">
|
<template v-for="(episode, index) in seasons[season.season_id - 1].episodes">
|
||||||
<template v-if="isPreloaded">
|
<template v-if="isPreloaded">
|
||||||
<SeasonListItem
|
<SeasonListItem
|
||||||
:key="`rl-${episode.episodeNumber}`"
|
:key="`rl-${index}`"
|
||||||
:episode-number="episode.episodeNumber"
|
:episode-number="episode.episodeNumber"
|
||||||
:season-number="episode.seasonNumber"
|
:season-number="episode.seasonNumber"
|
||||||
:title="episode.title"
|
:title="episode.title"
|
||||||
|
|||||||
@@ -1,29 +1,44 @@
|
|||||||
<template>
|
<template>
|
||||||
<b-list-group-item
|
<b-list-group-item
|
||||||
|
v-if="dataAvailable"
|
||||||
:id="`s-${seasonNumber}-ep-${episodeNumber}`"
|
:id="`s-${seasonNumber}-ep-${episodeNumber}`"
|
||||||
:to="{name: 'Episode', params: { season: seasonNumber, episode: episodeNumber }, }"
|
:to="{name: 'Episode', params: { season: seasonNumber, episode: episodeNumber }, }"
|
||||||
class="no-link episode-item"
|
class="no-link episode-item" @mouseover="hoverOn"
|
||||||
@mouseover="hoverOn" @mouseleave="hoverOff"
|
@mouseleave="hoverOff"
|
||||||
>
|
>
|
||||||
Episode {{ episodeNumber }} - "{{ title }}"
|
Episode {{ episodeNumber }} - "{{ title }}"
|
||||||
</b-list-group-item>
|
</b-list-group-item>
|
||||||
|
<b-list-group-item v-else>
|
||||||
|
<Skeleton style="width: 90%" />
|
||||||
|
</b-list-group-item>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {types} from "@/mutation_types";
|
import {types} from "@/mutation_types";
|
||||||
|
import Skeleton from "@/components/Skeleton";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "SeasonListItem",
|
name: "SeasonListItem",
|
||||||
|
components: {
|
||||||
|
Skeleton
|
||||||
|
},
|
||||||
props: {
|
props: {
|
||||||
episodeNumber: {type: Number, default: null, required: true},
|
episodeNumber: {type: Number, default: null, required: false},
|
||||||
seasonNumber: {type: Number, default: null, required: true},
|
seasonNumber: {type: Number, default: null, required: false},
|
||||||
title: {type: String, default: null, required: true}
|
title: {type: String, default: null, required: false}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
timeoutID: null
|
timeoutID: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
dataAvailable() {
|
||||||
|
return this.episodeNumber !== null &&
|
||||||
|
this.seasonNumber !== null &&
|
||||||
|
this.title !== null;
|
||||||
|
}
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
hoverFetch() {
|
hoverFetch() {
|
||||||
this.$store.dispatch(types.FETCH_EPISODE, {season: this.seasonNumber, episode: this.episodeNumber})
|
this.$store.dispatch(types.FETCH_EPISODE, {season: this.seasonNumber, episode: this.episodeNumber})
|
||||||
|
|||||||
Reference in New Issue
Block a user