Skip to content

Commit bdf0142

Browse files
committed
fix(progress): fix percentages and hide tooltips when no aired episodes
1 parent 1608983 commit bdf0142

File tree

2 files changed

+28
-9
lines changed

2 files changed

+28
-9
lines changed

src/components/views/panel/ShowPanelButtons.vue

+22-2
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,16 @@ const watchedPercentage = computed(() => {
112112
return watched.value ? 100 : 0;
113113
});
114114
115+
const hadAiredWatched = computed(() => {
116+
const _progress = watchedProgress?.value;
117+
if (!_progress) return false;
118+
return 'aired' in _progress && _progress.aired > 0;
119+
});
120+
121+
const disableWatchedTooltip = computed(() => {
122+
return !['show', 'season'].includes(mode.value) || !hadAiredWatched.value;
123+
});
124+
115125
const collected = computed(() => {
116126
const _progress = collectionProgress?.value;
117127
if (_progress === undefined) return;
@@ -125,6 +135,16 @@ const collectionPercentage = computed(() => {
125135
return collected.value ? 100 : 0;
126136
});
127137
138+
const hadAiredCollection = computed(() => {
139+
const _progress = collectionProgress?.value;
140+
if (!_progress) return false;
141+
return 'aired' in _progress && _progress.aired > 0;
142+
});
143+
144+
const disableCollectionTooltip = computed(() => {
145+
return !['show', 'season'].includes(mode.value) || !hadAiredCollection.value;
146+
});
147+
128148
const i18n = useI18n('panel', 'buttons');
129149
130150
const root = ref<HTMLDivElement>();
@@ -222,7 +242,7 @@ onMounted(() => {
222242
options: collectionOptions,
223243
}"
224244
:tooltip="{
225-
disabled: !['show', 'season'].includes(mode),
245+
disabled: disableCollectionTooltip,
226246
type: 'collection',
227247
}"
228248
:icon="collected ? IconGrid : IconGridEmpty"
@@ -244,7 +264,7 @@ onMounted(() => {
244264
options: watchedOptions,
245265
}"
246266
:tooltip="{
247-
disabled: !['show', 'season'].includes(mode),
267+
disabled: disableWatchedTooltip,
248268
}"
249269
:icon="watched ? IconPlayFilled : IconPlay"
250270
:progress="watchedProgress"

src/stores/data/show.store.ts

+6-7
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,13 @@ const watchProgressToListProgress = (progress: TraktWatchedProgress | TraktColle
3838
date: new Date('last_watched_at' in progress ? progress.last_watched_at : progress.last_collected_at),
3939
seasons: progress.seasons.map(season => {
4040
if (season.number > 0) {
41-
completed += season.completed;
42-
aired += season.aired;
41+
if (season.completed) completed += season.completed;
42+
if (season.aired) aired += season.aired;
4343
}
44-
4544
return {
4645
...season,
47-
percentage: (season.completed / season.aired) * 100,
48-
finished: season.completed === season.aired,
46+
percentage: season.aired ? ((season.completed ?? 0) / season.aired) * 100 : 0,
47+
finished: !!season.aired && season.completed === season.aired,
4948
episodes: season.episodes.map(episode => ({
5049
...episode,
5150
date: new Date('last_watched_at' in episode ? episode.last_watched_at : episode.collected_at),
@@ -57,8 +56,8 @@ const watchProgressToListProgress = (progress: TraktWatchedProgress | TraktColle
5756
...result,
5857
completed,
5958
aired,
60-
percentage: (completed / aired) * 100,
61-
finished: completed === aired,
59+
percentage: aired ? ((completed ?? 0) / aired) * 100 : 0,
60+
finished: !!aired && completed === aired,
6261
};
6362
};
6463

0 commit comments

Comments
 (0)