[web] Simplify pages

This commit is contained in:
Alain Nussbaumer 2025-03-18 21:54:27 +01:00
parent 15e8854349
commit be44c0ce9f
38 changed files with 1353 additions and 1457 deletions

View File

@ -20,22 +20,14 @@
<slot name="actions" /> <slot name="actions" />
</div> </div>
</div> </div>
<template v-for="item in items" :key="item.path"> <list-item
<div v-for="item in items"
class="media is-align-items-center is-clickable mb-0" :key="item.path"
@click="open(item)" icon="folder"
> :lines="[item.name]"
<mdicon class="media-left icon" name="folder" /> @open="open(item)"
<div class="media-content"> @open-details="openDetails(item)"
<div class="is-size-6 has-text-weight-bold" v-text="item.name" /> />
</div>
<div class="media-right">
<a @click.prevent.stop="openDetails(item)">
<mdicon class="icon has-text-grey" name="dots-vertical" size="16" />
</a>
</div>
</div>
</template>
<modal-dialog-directory <modal-dialog-directory
:item="selectedItem" :item="selectedItem"
:show="showDetailsModal" :show="showDetailsModal"
@ -44,17 +36,16 @@
</template> </template>
<script> <script>
import ListItem from '@/components/ListItem.vue'
import ModalDialogDirectory from '@/components/ModalDialogDirectory.vue' import ModalDialogDirectory from '@/components/ModalDialogDirectory.vue'
export default { export default {
name: 'ListDirectories', name: 'ListDirectories',
components: { ModalDialogDirectory }, components: { ListItem, ModalDialogDirectory },
props: { items: { required: true, type: Array } }, props: { items: { required: true, type: Array } },
data() { data() {
return { selectedItem: '', showDetailsModal: false } return { selectedItem: '', showDetailsModal: false }
}, },
computed: { computed: {
directories() { directories() {
const directories = [] const directories = []
@ -69,7 +60,6 @@ export default {
return directories return directories
} }
}, },
methods: { methods: {
open(item) { open(item) {
const route = { name: 'files' } const route = { name: 'files' }

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
<heading-title :content="{ title: $t('page.about.library') }" /> <heading-title :content="{ title: $t('page.about.library') }" />
@ -79,7 +78,6 @@
</i18n-t> </i18n-t>
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-hero> <content-with-hero>
<template #heading> <template #heading>
<heading-hero :content="heading" /> <heading-hero :content="heading" />
@ -14,14 +13,13 @@
</template> </template>
<template #content> <template #content>
<list-tracks :items="tracks" :uris="album.uri" /> <list-tracks :items="tracks" :uris="album.uri" />
</template>
</content-with-hero>
<modal-dialog-album <modal-dialog-album
:item="album" :item="album"
:show="showDetailsModal" :show="showDetailsModal"
@close="showDetailsModal = false" @close="showDetailsModal = false"
/> />
</template>
</content-with-hero>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-hero> <content-with-hero>
<template #heading> <template #heading>
<heading-hero :content="heading" /> <heading-hero :content="heading" />
@ -14,14 +13,13 @@
</template> </template>
<template #content> <template #content>
<list-tracks-spotify :items="tracks" :context_uri="album.uri" /> <list-tracks-spotify :items="tracks" :context_uri="album.uri" />
</template>
</content-with-hero>
<modal-dialog-album-spotify <modal-dialog-album-spotify
:item="album" :item="album"
:show="showDetailsModal" :show="showDetailsModal"
@close="showDetailsModal = false" @close="showDetailsModal = false"
/> />
</template>
</content-with-hero>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<tabs-music /> <tabs-music />
<content-with-heading> <content-with-heading>
<template #options> <template #options>
@ -41,7 +40,6 @@
<list-albums :items="albums" /> <list-albums :items="albums" />
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-heading> <content-with-heading>
<template #options> <template #options>
<list-options> <list-options>
@ -37,14 +36,13 @@
</template> </template>
<template #content> <template #content>
<list-albums :items="albums" /> <list-albums :items="albums" />
</template>
</content-with-heading>
<modal-dialog-artist <modal-dialog-artist
:item="artist" :item="artist"
:show="showDetailsModal" :show="showDetailsModal"
@close="showDetailsModal = false" @close="showDetailsModal = false"
/> />
</template>
</content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
<heading-title :content="heading" /> <heading-title :content="heading" />
@ -29,14 +28,13 @@
<br /> <br />
</template> </template>
</vue-eternal-loading> </vue-eternal-loading>
</template>
</content-with-heading>
<modal-dialog-artist-spotify <modal-dialog-artist-spotify
:item="artist" :item="artist"
:show="showDetailsModal" :show="showDetailsModal"
@close="showDetailsModal = false" @close="showDetailsModal = false"
/> />
</template>
</content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-heading> <content-with-heading>
<template #options> <template #options>
<index-button-list :indices="tracks.indices" /> <index-button-list :indices="tracks.indices" />
@ -38,14 +37,13 @@
</template> </template>
<template #content> <template #content>
<list-tracks :items="tracks" :uris="trackUris" /> <list-tracks :items="tracks" :uris="trackUris" />
</template>
</content-with-heading>
<modal-dialog-artist <modal-dialog-artist
:item="artist" :item="artist"
:show="showDetailsModal" :show="showDetailsModal"
@close="showDetailsModal = false" @close="showDetailsModal = false"
/> />
</template>
</content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<tabs-music /> <tabs-music />
<content-with-heading> <content-with-heading>
<template #options> <template #options>
@ -41,7 +40,6 @@
<list-artists :items="artists" /> <list-artists :items="artists" />
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-hero> <content-with-hero>
<template #heading> <template #heading>
<heading-hero :content="heading" /> <heading-hero :content="heading" />
@ -14,15 +13,14 @@
</template> </template>
<template #content> <template #content>
<list-tracks :items="tracks" :show-progress="true" :uris="album.uri" /> <list-tracks :items="tracks" :show-progress="true" :uris="album.uri" />
</template>
</content-with-hero>
<modal-dialog-album <modal-dialog-album
:item="album" :item="album"
:show="showDetailsModal" :show="showDetailsModal"
:media_kind="'audiobook'" :media_kind="'audiobook'"
@close="showDetailsModal = false" @close="showDetailsModal = false"
/> />
</template>
</content-with-hero>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<tabs-audiobooks /> <tabs-audiobooks />
<content-with-heading> <content-with-heading>
<template #options> <template #options>
@ -12,7 +11,6 @@
<list-albums :items="albums" /> <list-albums :items="albums" />
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
<heading-title :content="heading" /> <heading-title :content="heading" />
@ -14,14 +13,13 @@
</template> </template>
<template #content> <template #content>
<list-albums :items="albums" /> <list-albums :items="albums" />
</template>
</content-with-heading>
<modal-dialog-artist <modal-dialog-artist
:item="artist" :item="artist"
:show="showDetailsModal" :show="showDetailsModal"
@close="showDetailsModal = false" @close="showDetailsModal = false"
/> />
</template>
</content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<tabs-audiobooks /> <tabs-audiobooks />
<content-with-heading> <content-with-heading>
<template #options> <template #options>
@ -12,7 +11,6 @@
<list-artists :items="artists" /> <list-artists :items="artists" />
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<tabs-audiobooks /> <tabs-audiobooks />
<content-with-heading> <content-with-heading>
<template #options> <template #options>
@ -12,7 +11,6 @@
<list-genres :items="genres" :media_kind="'audiobook'" /> <list-genres :items="genres" :media_kind="'audiobook'" />
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
<heading-title :content="heading" /> <heading-title :content="heading" />
@ -14,14 +13,13 @@
</template> </template>
<template #content> <template #content>
<list-albums :items="albums" /> <list-albums :items="albums" />
</template>
</content-with-heading>
<modal-dialog-composer <modal-dialog-composer
:item="composer" :item="composer"
:show="showDetailsModal" :show="showDetailsModal"
@close="showDetailsModal = false" @close="showDetailsModal = false"
/> />
</template>
</content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-heading> <content-with-heading>
<template #options> <template #options>
<index-button-list :indices="tracks.indices" /> <index-button-list :indices="tracks.indices" />
@ -25,14 +24,13 @@
</template> </template>
<template #content> <template #content>
<list-tracks :items="tracks" :expression="expression" /> <list-tracks :items="tracks" :expression="expression" />
</template>
</content-with-heading>
<modal-dialog-composer <modal-dialog-composer
:item="composer" :item="composer"
:show="showDetailsModal" :show="showDetailsModal"
@close="showDetailsModal = false" @close="showDetailsModal = false"
/> />
</template>
</content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<tabs-music /> <tabs-music />
<content-with-heading> <content-with-heading>
<template #options> <template #options>
@ -12,7 +11,6 @@
<list-composers :items="composers" /> <list-composers :items="composers" />
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
<heading-title :content="{ title: name }" /> <heading-title :content="{ title: name }" />
@ -15,14 +14,9 @@
<template #content> <template #content>
<list-directories :items="directories" /> <list-directories :items="directories" />
<list-playlists :items="playlists" /> <list-playlists :items="playlists" />
<list-tracks <list-tracks :items="tracks" icon="file-music-outline" />
:expression="expression"
:items="tracks"
icon="file-music-outline"
/>
</template> </template>
</content-with-heading> </content-with-heading>
</div>
<modal-dialog-playable <modal-dialog-playable
:item="playable" :item="playable"
:show="showDetailsModal" :show="showDetailsModal"
@ -109,9 +103,6 @@ export default {
current() { current() {
return this.$route.query?.directory || '/' return this.$route.query?.directory || '/'
}, },
expression() {
return `path starts with "${this.current}" order by path asc`
},
name() { name() {
if (this.current !== '/') { if (this.current !== '/') {
return this.current?.slice(this.current.lastIndexOf('/') + 1) return this.current?.slice(this.current.lastIndexOf('/') + 1)

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-heading> <content-with-heading>
<template #options> <template #options>
<index-button-list :indices="albums.indices" /> <index-button-list :indices="albums.indices" />
@ -17,15 +16,14 @@
</template> </template>
<template #content> <template #content>
<list-albums :items="albums" /> <list-albums :items="albums" />
</template>
</content-with-heading>
<modal-dialog-genre <modal-dialog-genre
:item="genre" :item="genre"
:media_kind="media_kind" :media_kind="media_kind"
:show="showDetailsModal" :show="showDetailsModal"
@close="showDetailsModal = false" @close="showDetailsModal = false"
/> />
</template>
</content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-heading> <content-with-heading>
<template #options> <template #options>
<index-button-list :indices="tracks.indices" /> <index-button-list :indices="tracks.indices" />
@ -25,15 +24,14 @@
</template> </template>
<template #content> <template #content>
<list-tracks :items="tracks" :expression="expression" /> <list-tracks :items="tracks" :expression="expression" />
</template>
</content-with-heading>
<modal-dialog-genre <modal-dialog-genre
:item="genre" :item="genre"
:media_kind="media_kind" :media_kind="media_kind"
:show="showDetailsModal" :show="showDetailsModal"
@close="showDetailsModal = false" @close="showDetailsModal = false"
/> />
</template>
</content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<tabs-music /> <tabs-music />
<content-with-heading> <content-with-heading>
<template #options> <template #options>
@ -12,7 +11,6 @@
<list-genres :items="genres" :media_kind="'music'" /> <list-genres :items="genres" :media_kind="'music'" />
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<tabs-music /> <tabs-music />
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
@ -37,7 +36,6 @@
</router-link> </router-link>
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<tabs-music /> <tabs-music />
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
@ -11,7 +10,6 @@
<list-albums :items="albums" /> <list-albums :items="albums" />
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<tabs-music /> <tabs-music />
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
@ -11,7 +10,6 @@
<list-tracks :items="tracks" /> <list-tracks :items="tracks" />
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<tabs-music /> <tabs-music />
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
@ -37,7 +36,6 @@
</router-link> </router-link>
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<tabs-music /> <tabs-music />
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
@ -9,7 +8,6 @@
<list-playlists-spotify :items="playlists" /> <list-playlists-spotify :items="playlists" />
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<tabs-music /> <tabs-music />
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
@ -9,7 +8,6 @@
<list-albums-spotify :items="albums" /> <list-albums-spotify :items="albums" />
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
<heading-title :content="heading" /> <heading-title :content="heading" />
@ -8,7 +7,6 @@
<list-playlists :items="playlists" /> <list-playlists :items="playlists" />
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
<heading-title :content="heading" /> <heading-title :content="heading" />
@ -19,15 +18,14 @@
</template> </template>
<template #content> <template #content>
<list-tracks :items="tracks" :uris="uris" /> <list-tracks :items="tracks" :uris="uris" />
</template>
</content-with-heading>
<modal-dialog-playlist <modal-dialog-playlist
:item="playlist" :item="playlist"
:show="showDetailsModal" :show="showDetailsModal"
:uris="uris" :uris="uris"
@close="showDetailsModal = false" @close="showDetailsModal = false"
/> />
</template>
</content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
<heading-title :content="heading" /> <heading-title :content="heading" />
@ -31,14 +30,13 @@
<br /> <br />
</template> </template>
</vue-eternal-loading> </vue-eternal-loading>
</template>
</content-with-heading>
<modal-dialog-playlist-spotify <modal-dialog-playlist-spotify
:item="playlist" :item="playlist"
:show="showDetailsModal" :show="showDetailsModal"
@close="showDetailsModal = false" @close="showDetailsModal = false"
/> />
</template>
</content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-hero> <content-with-hero>
<template #heading> <template #heading>
<heading-hero :content="heading" /> <heading-hero :content="heading" />
@ -46,7 +45,6 @@
</modal-dialog> </modal-dialog>
</template> </template>
</content-with-hero> </content-with-hero>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-heading v-if="tracks.items.length > 0"> <content-with-heading v-if="tracks.items.length > 0">
<template #heading> <template #heading>
<heading-title :content="{ title: $t('page.podcasts.new-episodes') }" /> <heading-title :content="{ title: $t('page.podcasts.new-episodes') }" />
@ -48,14 +47,13 @@
@play-count-changed="reloadNewEpisodes()" @play-count-changed="reloadNewEpisodes()"
@podcast-deleted="reloadPodcasts()" @podcast-deleted="reloadPodcasts()"
/> />
</template>
</content-with-heading>
<modal-dialog-add-rss <modal-dialog-add-rss
:show="showAddPodcastModal" :show="showAddPodcastModal"
@close="showAddPodcastModal = false" @close="showAddPodcastModal = false"
@podcast-added="reloadPodcasts()" @podcast-added="reloadPodcasts()"
/> />
</template>
</content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
<heading-title :content="heading" /> <heading-title :content="heading" />
@ -75,6 +74,8 @@
</list-item-queue-item> </list-item-queue-item>
</template> </template>
</draggable> </draggable>
</template>
</content-with-heading>
<modal-dialog-queue-item <modal-dialog-queue-item
:show="showDetailsModal" :show="showDetailsModal"
:item="selectedItem" :item="selectedItem"
@ -89,9 +90,6 @@
:show="showSaveModal" :show="showSaveModal"
@close="showSaveModal = false" @close="showSaveModal = false"
/> />
</template>
</content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
<heading-title :content="heading" /> <heading-title :content="heading" />
@ -8,7 +7,6 @@
<list-tracks :items="tracks" /> <list-tracks :items="tracks" />
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,17 +1,11 @@
<template> <template>
<div>
<tabs-settings /> <tabs-settings />
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
<heading-title <heading-title :content="{ title: $t('page.settings.artwork.title') }" />
:content="{ title: $t('page.settings.artwork.title') }"
/>
</template> </template>
<template #content> <template #content>
<div <div class="content" v-text="$t('page.settings.artwork.explanation-1')" />
class="content"
v-text="$t('page.settings.artwork.explanation-1')"
/>
<div class="content"> <div class="content">
<control-setting-switch category="artwork" name="streamurl_ignore"> <control-setting-switch category="artwork" name="streamurl_ignore">
<template #label> <template #label>
@ -27,10 +21,7 @@
</template> </template>
</control-setting-switch> </control-setting-switch>
</div> </div>
<div <div class="content" v-text="$t('page.settings.artwork.explanation-2')" />
class="content"
v-text="$t('page.settings.artwork.explanation-2')"
/>
<div class="content"> <div class="content">
<control-setting-switch <control-setting-switch
v-if="servicesStore.spotify_logged_in" v-if="servicesStore.spotify_logged_in"
@ -75,7 +66,6 @@
</div> </div>
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<tabs-settings /> <tabs-settings />
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
@ -79,10 +78,7 @@
type="text" type="text"
:placeholder="$t('page.settings.services.username')" :placeholder="$t('page.settings.services.username')"
/> />
<div <div class="help is-danger" v-text="lastfm_login.errors.user" />
class="help is-danger"
v-text="lastfm_login.errors.user"
/>
</div> </div>
<div class="control"> <div class="control">
<input <input
@ -118,7 +114,6 @@
<div v-else v-text="$t('page.settings.services.lastfm.no-support')" /> <div v-else v-text="$t('page.settings.services.lastfm.no-support')" />
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<tabs-settings /> <tabs-settings />
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
@ -84,7 +83,6 @@
</div> </div>
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<tabs-settings /> <tabs-settings />
<content-with-heading> <content-with-heading>
<template #heading> <template #heading>
@ -147,14 +146,11 @@
name="recently_added_limit" name="recently_added_limit"
> >
<template #label> <template #label>
<span <span v-text="$t('page.settings.general.recently-added-page-info')" />
v-text="$t('page.settings.general.recently-added-page-info')"
/>
</template> </template>
</control-setting-integer-field> </control-setting-integer-field>
</template> </template>
</content-with-heading> </content-with-heading>
</div>
</template> </template>
<script> <script>