Skip to content

Commit f3ba370

Browse files
committed
feat((panel): fade un-aired episodes & seasons in show panel
1 parent 89fb194 commit f3ba370

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed

src/components/common/buttons/ButtonLink.vue

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ defineProps({
2828
:quaternary="!isActive"
2929
class="button-link"
3030
:class="$attrs.class"
31+
:style="$attrs.style"
3132
round
3233
size="small"
3334
:href="href"

src/components/views/panel/ShowPanelPicker.vue

+26-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<script lang="ts" setup>
22
import { NFlex, NSkeleton } from 'naive-ui';
33
4-
import { computed, type PropType, toRefs } from 'vue';
4+
import { computed, type ComputedRef, type PropType, toRefs } from 'vue';
55
6-
import { RouterLink, useRoute } from 'vue-router';
6+
import { type RouteLocationRaw, RouterLink, useRoute } from 'vue-router';
77
88
import type { TraktEpisodeShort } from '@dvcol/trakt-http-client/models';
99
import type { ShowProgress } from '~/models/list-scroll.model';
@@ -43,7 +43,14 @@ const { meta } = useRoute();
4343
const showLink = computed(() => ({ name: `${meta.base}-show` }));
4444
const seasonLink = computed(() => ({ name: `${meta.base}-season` }));
4545
46-
const seasonsLinks = computed(() => {
46+
type SeasonLink = {
47+
number: number;
48+
link: RouteLocationRaw;
49+
finished?: boolean;
50+
collected?: boolean;
51+
aired?: boolean;
52+
};
53+
const seasonsLinks: ComputedRef<SeasonLink[] | undefined> = computed(() => {
4754
if (!seasons?.value) return;
4855
return Object.entries(seasons.value).map(([_number, _season]) => {
4956
const number = Number(_number);
@@ -52,11 +59,21 @@ const seasonsLinks = computed(() => {
5259
link: { name: `${meta.base}-season`, params: { seasonNumber: _number } },
5360
finished: progress?.value?.seasons?.find(s => s.number === number)?.finished,
5461
collected: collection?.value?.seasons?.find(s => s.number === number)?.finished,
62+
aired: _season?.first_aired
63+
? new Date(_season.first_aired) < new Date()
64+
: undefined,
5565
};
5666
});
5767
});
5868
59-
const episodeLinks = computed(() => {
69+
type EpisodeLink = {
70+
number: number;
71+
link: RouteLocationRaw;
72+
finished?: boolean;
73+
collected?: boolean;
74+
aired?: boolean;
75+
};
76+
const episodeLinks: ComputedRef<EpisodeLink[] | undefined> = computed(() => {
6077
if (!episodes?.value) return;
6178
if (!episodes?.value?.length) return [];
6279
return episodes.value.map((_episode, i) => ({
@@ -71,6 +88,7 @@ const episodeLinks = computed(() => {
7188
collected: collection?.value?.seasons
7289
?.find(s => s.number === _episode.season)
7390
?.episodes?.find(e => e.number === _episode.number)?.completed,
91+
aired: (seasons?.value?.[_episode.season]?.aired_episodes ?? 0) >= _episode.number,
7492
}));
7593
});
7694
@@ -87,10 +105,11 @@ const i18n = useI18n('panel', 'picker');
87105
<NFlex class="numbers" size="small">
88106
<template v-if="seasonsLinks?.length">
89107
<ButtonLink
90-
v-for="{ link, number, finished, collected } in seasonsLinks"
108+
v-for="{ link, number, finished, collected, aired } in seasonsLinks"
91109
:key="`season-${number}`"
92110
:link="{ to: link }"
93111
:button="{ type: finished ? 'primary' : collected ? 'info' : undefined }"
112+
:style="{ opacity: aired ? 1 : 0.75 }"
94113
>
95114
{{ number }}
96115
</ButtonLink>
@@ -108,11 +127,12 @@ const i18n = useI18n('panel', 'picker');
108127
<NFlex class="numbers episodes" size="small">
109128
<template v-if="episodeLinks?.length">
110129
<ButtonLink
111-
v-for="{ link, number, finished, collected } in episodeLinks"
130+
v-for="{ link, number, finished, collected, aired } in episodeLinks"
112131
:key="`episode-${ number }`"
113132
v-slot="{ isActive }"
114133
:link="{ to: link }"
115134
:button="{ type: finished ? 'primary' : collected ? 'info' : undefined }"
135+
:style="{ opacity: aired ? 1 : 0.75 }"
116136
>
117137
<span class="label" :class="{ active: isActive }">{{ number }}</span>
118138
</ButtonLink>

0 commit comments

Comments
 (0)