diff --git a/front/src/components/audio/ChannelEntries.vue b/front/src/components/audio/ChannelEntries.vue index 1e176ac36cfccee80bd6301ad4f7490925d65d01..f067b5a7540ba089999d55645d30c4e679994528 100644 --- a/front/src/components/audio/ChannelEntries.vue +++ b/front/src/components/audio/ChannelEntries.vue @@ -7,6 +7,7 @@ </div> <podcast-table v-if="isPodcast" + :default-cover="defaultCover" :is-podcast="isPodcast" :show-art="true" :show-position="false" @@ -20,6 +21,7 @@ :paginate-by="limit"></podcast-table> <track-table v-else + :default-cover="defaultCover" :is-podcast="isPodcast" :show-art="true" :show-position="false" diff --git a/front/src/components/audio/podcast/Row.vue b/front/src/components/audio/podcast/Row.vue index 3e6155b67ea56e26f9f913674331547e0ea6af85..4fc194e2397936d596acc8d16f1342b692c859d8 100644 --- a/front/src/components/audio/podcast/Row.vue +++ b/front/src/components/audio/podcast/Row.vue @@ -18,18 +18,6 @@ alt="" class="ui artist-track mini image" v-if=" - track.album && track.album.cover && track.album.cover.urls.original - " - v-lazy=" - $store.getters['instance/absoluteUrl']( - track.album.cover.urls.medium_square_crop - ) - " - /> - <img - alt="" - class="ui artist-track mini image" - v-else-if=" track.cover && track.cover.urls.original " v-lazy=" @@ -42,11 +30,11 @@ alt="" class="ui artist-track mini image" v-else-if=" - track.artist && track.artist.cover && track.album.cover.urls.original + defaultCover " v-lazy=" $store.getters['instance/absoluteUrl']( - track.cover.urls.medium_square_crop + defaultCover.cover.urls.medium_square_crop ) " /> @@ -58,7 +46,9 @@ /> </div> <div tabindex=0 class="content left floated column"> - <p class="podcast-episode-title ellipsis">{{ track.title }}</p> + <a + class="podcast-episode-title ellipsis" + @click.prevent.exact="activateTrack(track, index)">{{ track.title }}</a> <p class="podcast-episode-meta"> An episode description, with all its twists and turns! This episode focuses on something I'm sure, but nobody really knows what it's focusing on.</p> @@ -84,8 +74,10 @@ import PlayIndicator from "@/components/audio/track/PlayIndicator"; import { mapActions, mapGetters } from "vuex"; import PlayButton from "@/components/audio/PlayButton"; +import PlayOptions from "@/components/mixins/PlayOptions"; export default { + mixins: [PlayOptions], props: { tracks: Array, showAlbum: { type: Boolean, required: false, default: true }, @@ -99,6 +91,7 @@ export default { showDuration: { type: Boolean, required: false, default: true }, index: { type: Number, required: true }, track: { type: Object, required: true }, + defaultCover: { type: Object, required: false }, }, data() { diff --git a/front/src/components/audio/podcast/Table.vue b/front/src/components/audio/podcast/Table.vue index 134a2432364103e6c5560e89f51e595723d6309b..c8e948467929bcea1919ac30d27e7dba92f735a1 100644 --- a/front/src/components/audio/podcast/Table.vue +++ b/front/src/components/audio/podcast/Table.vue @@ -13,6 +13,7 @@ <!-- For each item, build a row --> <podcast-row v-for="(track, index) in tracks" + :default-cover="defaultCover" :track="track" :key="track.id" :index="index" @@ -42,11 +43,11 @@ <!-- For each item, build a row --> <track-mobile-row - v-for="(track, index) in allTracks" + v-for="(track, index) in tracks" :track="track" :key="track.id" :index="index" - :tracks="allTracks" + :tracks="tracks" :show-position="showPosition" :show-art="showArt" :show-duration="showDuration" @@ -99,6 +100,7 @@ export default { page: {type: Number, required: false, default: 1}, paginateBy: {type: Number, required: false, default: 25}, isPodcast: {type: Boolean, required: true}, + defaultCover: {type: Object, required: false}, }, data() { diff --git a/front/src/components/audio/track/Row.vue b/front/src/components/audio/track/Row.vue index 2dbae9435fcd582efc9e1edef9299f33836dc152..b2c7fd025cde756a67bfa15abda97e08154285e0 100644 --- a/front/src/components/audio/track/Row.vue +++ b/front/src/components/audio/track/Row.vue @@ -165,7 +165,7 @@ import PlayIndicator from "@/components/audio/track/PlayIndicator"; import { mapActions, mapGetters } from "vuex"; import TrackFavoriteIcon from "@/components/favorites/TrackFavoriteIcon"; import PlayButton from "@/components/audio/PlayButton"; -import PlayOptions from "@/components/mixins/PlayOptions" +import PlayOptions from "@/components/mixins/PlayOptions"; export default { mixins: [PlayOptions], diff --git a/front/src/components/mixins/PlayOptions.vue b/front/src/components/mixins/PlayOptions.vue index 1d3124058e3a66381ab5dc2797abdd30ad6793f3..2a9ed4345b65b3c9094f4e4d14df5e2823314f63 100644 --- a/front/src/components/mixins/PlayOptions.vue +++ b/front/src/components/mixins/PlayOptions.vue @@ -1,4 +1,6 @@ <script> +import axios from 'axios' + export default { computed: { playable () { diff --git a/front/src/style/components/_track_table.scss b/front/src/style/components/_track_table.scss index 7dfde12462a0e1c25e6f9f2586c9e707ff812ef4..1cb210467dd912c452ff4e6146ca98f8bf40f6d0 100644 --- a/front/src/style/components/_track_table.scss +++ b/front/src/style/components/_track_table.scss @@ -238,6 +238,11 @@ .podcast-episode-title { font-weight: bold; font-size: medium; + display: block; + margin-block-start: 1em; + margin-block-end: 1em; + margin-inline-start: 0px; + margin-inline-end: 0px; } } } \ No newline at end of file diff --git a/front/src/views/channels/DetailEpisodes.vue b/front/src/views/channels/DetailEpisodes.vue index 385e58a672f7b73d946f63393b1fd4d3b6fbd925..09de17f9038192c2422a45110c07b96426d1d908 100644 --- a/front/src/views/channels/DetailEpisodes.vue +++ b/front/src/views/channels/DetailEpisodes.vue @@ -1,6 +1,6 @@ <template> <section> - <channel-entries :limit="25" :filters="{channel: object.uuid, ordering: 'creation_date'}"> + <channel-entries :default-cover="object.artist.cover" :is-podcast="object.artist.content_category === 'podcast'" :limit="25" :filters="{channel: object.uuid, ordering: 'creation_date'}"> </channel-entries> </section> </template>