[web] Add page to control outputs #1450

This commit is contained in:
Alain Nussbaumer 2025-08-20 11:07:02 +10:00
parent 2ddaba6e77
commit 65b9323488
8 changed files with 68 additions and 5 deletions

View File

@ -128,6 +128,7 @@ export default {
}, },
{ separator: true }, { separator: true },
{ key: 'navigation.settings', name: 'settings-webinterface' }, { key: 'navigation.settings', name: 'settings-webinterface' },
{ key: 'navigation.outputs', name: 'outputs' },
{ action: this.openUpdateDialog, key: 'navigation.update-library' }, { action: this.openUpdateDialog, key: 'navigation.update-library' },
{ key: 'navigation.about', name: 'about' } { key: 'navigation.about', name: 'about' }
] ]

View File

@ -130,6 +130,7 @@
"files": "Dateien", "files": "Dateien",
"genres": "Genres", "genres": "Genres",
"music": "Musik", "music": "Musik",
"outputs": "Ausgänge",
"playlists": "Playlisten", "playlists": "Playlisten",
"podcasts": "Podcasts", "podcasts": "Podcasts",
"radio": "Radio", "radio": "Radio",
@ -137,7 +138,6 @@
"settings": "Einstellungen", "settings": "Einstellungen",
"spotify": "Spotify", "spotify": "Spotify",
"stream": "HTTP-stream", "stream": "HTTP-stream",
"stream-error": "HTTP-stream-Fehler: Stream kann nicht geladen werden oder wurde wg. Netzwerkfehler gestopt",
"update-library": "Bibliothek neu einlesen", "update-library": "Bibliothek neu einlesen",
"volume": "Lautstärke" "volume": "Lautstärke"
}, },
@ -213,6 +213,9 @@
"spotify": "Spotify" "spotify": "Spotify"
} }
}, },
"outputs": {
"title": "Ausgänge"
},
"player": { "player": {
"info": "Tracks durch Auswählen aus der Bibliothek anfügen", "info": "Tracks durch Auswählen aus der Bibliothek anfügen",
"time": "Live|{time}|{time}", "time": "Live|{time}|{time}",

View File

@ -130,6 +130,7 @@
"files": "Files", "files": "Files",
"genres": "Genres", "genres": "Genres",
"music": "Music", "music": "Music",
"outputs": "Outputs",
"playlists": "Playlists", "playlists": "Playlists",
"podcasts": "Podcasts", "podcasts": "Podcasts",
"radio": "Radio", "radio": "Radio",
@ -137,7 +138,6 @@
"settings": "Settings", "settings": "Settings",
"spotify": "Spotify", "spotify": "Spotify",
"stream": "HTTP stream", "stream": "HTTP stream",
"stream-error": "HTTP stream error: failed to load stream or stopped loading due to network problem",
"update-library": "Update Library", "update-library": "Update Library",
"volume": "Volume" "volume": "Volume"
}, },
@ -213,6 +213,9 @@
"spotify": "Spotify" "spotify": "Spotify"
} }
}, },
"outputs": {
"title": "Outputs"
},
"player": { "player": {
"info": "Add some tracks by browsing your library", "info": "Add some tracks by browsing your library",
"time": "Live|{time}|{time}", "time": "Live|{time}|{time}",

View File

@ -130,6 +130,7 @@
"files": "Fichiers", "files": "Fichiers",
"genres": "Genres", "genres": "Genres",
"music": "Musique", "music": "Musique",
"outputs": "Sorties",
"playlists": "Listes de lecture", "playlists": "Listes de lecture",
"podcasts": "Podcasts", "podcasts": "Podcasts",
"radio": "Radio", "radio": "Radio",
@ -137,7 +138,6 @@
"settings": "Réglages", "settings": "Réglages",
"spotify": "Spotify", "spotify": "Spotify",
"stream": "Flux HTTP", "stream": "Flux HTTP",
"stream-error": "Erreur du flux HTTP : échec du chargement du flux ou arrêt du chargement en raison dun problème réseau",
"update-library": "Actualiser la bibliothèque", "update-library": "Actualiser la bibliothèque",
"volume": "Volume" "volume": "Volume"
}, },
@ -213,6 +213,9 @@
"spotify": "Spotify" "spotify": "Spotify"
} }
}, },
"outputs": {
"title": "Sorties"
},
"player": { "player": {
"info": "Ajoutez des pistes en parcourant votre bibliothèque", "info": "Ajoutez des pistes en parcourant votre bibliothèque",
"time": "En direct|{time}|{time}", "time": "En direct|{time}|{time}",

View File

@ -130,6 +130,7 @@
"files": "文件", "files": "文件",
"genres": "流派", "genres": "流派",
"music": "音乐", "music": "音乐",
"outputs": "输出",
"playlists": "播放列表", "playlists": "播放列表",
"podcasts": "播客", "podcasts": "播客",
"radio": "广播电台", "radio": "广播电台",
@ -137,7 +138,6 @@
"settings": "设置", "settings": "设置",
"spotify": "Spotify", "spotify": "Spotify",
"stream": "HTTP流", "stream": "HTTP流",
"stream-error": "HTTP流错误流载入失败或者由于网络原因无法载入",
"update-library": "更新资料库", "update-library": "更新资料库",
"volume": "音量" "volume": "音量"
}, },
@ -213,6 +213,9 @@
"spotify": "Spotify" "spotify": "Spotify"
} }
}, },
"outputs": {
"title": "输出"
},
"player": { "player": {
"info": "浏览资料库添加曲目", "info": "浏览资料库添加曲目",
"time": "直播|{time}|{time}", "time": "直播|{time}|{time}",

View File

@ -130,6 +130,7 @@
"files": "文件", "files": "文件",
"genres": "音樂類型", "genres": "音樂類型",
"music": "音樂", "music": "音樂",
"outputs": "輸出",
"playlists": "播放列表", "playlists": "播放列表",
"podcasts": "Podcast", "podcasts": "Podcast",
"radio": "電台", "radio": "電台",
@ -137,7 +138,6 @@
"settings": "設定", "settings": "設定",
"spotify": "Spotify", "spotify": "Spotify",
"stream": "HTTP串流", "stream": "HTTP串流",
"stream-error": "HTTP串流錯誤串流載入失敗或者由於網絡原因無法載入",
"update-library": "更新資料庫", "update-library": "更新資料庫",
"volume": "音量" "volume": "音量"
}, },
@ -213,6 +213,9 @@
"spotify": "Spotify" "spotify": "Spotify"
} }
}, },
"outputs": {
"title": "輸出"
},
"player": { "player": {
"info": "瀏覽資料庫新增曲目", "info": "瀏覽資料庫新增曲目",
"time": "直播|{time}|{time}", "time": "直播|{time}|{time}",

View File

@ -0,0 +1,41 @@
<template>
<content-with-heading>
<template #heading>
<pane-title :content="{ title: $t('page.outputs.title') }" />
</template>
<template #content>
<control-main-volume />
<control-output-volume
v-for="output in outputsStore.outputs"
:key="output.id"
:output="output"
/>
<control-stream-volume />
</template>
</content-with-heading>
</template>
<script>
import ContentWithHeading from '@/templates/ContentWithHeading.vue'
import ControlMainVolume from '@/components/ControlMainVolume.vue'
import ControlOutputVolume from '@/components/ControlOutputVolume.vue'
import ControlStreamVolume from '@/components/ControlStreamVolume.vue'
import PaneTitle from '@/components/PaneTitle.vue'
import { useOutputsStore } from '@/stores/outputs'
export default {
name: 'PageOutputs',
components: {
ContentWithHeading,
ControlMainVolume,
ControlOutputVolume,
ControlStreamVolume,
PaneTitle
},
setup() {
return {
outputsStore: useOutputsStore()
}
}
}
</script>

View File

@ -26,6 +26,7 @@ import PageMusicSpotify from '@/pages/PageMusicSpotify.vue'
import PageMusicSpotifyFeaturedPlaylists from '@/pages/PageMusicSpotifyFeaturedPlaylists.vue' import PageMusicSpotifyFeaturedPlaylists from '@/pages/PageMusicSpotifyFeaturedPlaylists.vue'
import PageMusicSpotifyFollowedArtists from '@/pages/PageMusicSpotifyFollowedArtists.vue' import PageMusicSpotifyFollowedArtists from '@/pages/PageMusicSpotifyFollowedArtists.vue'
import PageMusicSpotifyNewReleases from '@/pages/PageMusicSpotifyNewReleases.vue' import PageMusicSpotifyNewReleases from '@/pages/PageMusicSpotifyNewReleases.vue'
import PageOutputs from '@/pages/PageOutputs.vue'
import PagePlayer from '@/pages/PagePlayer.vue' import PagePlayer from '@/pages/PagePlayer.vue'
import PagePlaylistFolder from '@/pages/PagePlaylistFolder.vue' import PagePlaylistFolder from '@/pages/PagePlaylistFolder.vue'
import PagePlaylistTracks from '@/pages/PagePlaylistTracks.vue' import PagePlaylistTracks from '@/pages/PagePlaylistTracks.vue'
@ -109,6 +110,11 @@ export const router = createRouter({
path: '/audiobooks', path: '/audiobooks',
redirect: { name: 'audiobook-artists' } redirect: { name: 'audiobook-artists' }
}, },
{
component: PageOutputs,
name: 'outputs',
path: '/outputs'
},
{ {
name: 'music', name: 'music',
path: '/music', path: '/music',