From ef9a275c78206907b79a7f2569bdf4667a685c14 Mon Sep 17 00:00:00 2001 From: whatdoineed2do/Ray Date: Fri, 26 Oct 2018 16:17:18 +0100 Subject: [PATCH] [webui] add genre tab mirroring album/artist functionality --- web-src/src/components/ListItemGenre.vue | 101 +++++++++++++++++++++++ web-src/src/components/TabsMusic.vue | 6 ++ web-src/src/pages/PageGenre.vue | 83 +++++++++++++++++++ web-src/src/pages/PageGenres.vue | 51 ++++++++++++ web-src/src/router/index.js | 14 ++++ web-src/src/webapi/index.js | 15 ++++ 6 files changed, 270 insertions(+) create mode 100644 web-src/src/components/ListItemGenre.vue create mode 100644 web-src/src/pages/PageGenre.vue create mode 100644 web-src/src/pages/PageGenres.vue diff --git a/web-src/src/components/ListItemGenre.vue b/web-src/src/components/ListItemGenre.vue new file mode 100644 index 00000000..09190ff6 --- /dev/null +++ b/web-src/src/components/ListItemGenre.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/web-src/src/components/TabsMusic.vue b/web-src/src/components/TabsMusic.vue index a21db4df..fe47b9ab 100644 --- a/web-src/src/components/TabsMusic.vue +++ b/web-src/src/components/TabsMusic.vue @@ -23,6 +23,12 @@ Albums + + + + Genres + + diff --git a/web-src/src/pages/PageGenre.vue b/web-src/src/pages/PageGenre.vue new file mode 100644 index 00000000..4335518f --- /dev/null +++ b/web-src/src/pages/PageGenre.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/web-src/src/pages/PageGenres.vue b/web-src/src/pages/PageGenres.vue new file mode 100644 index 00000000..9f7397a4 --- /dev/null +++ b/web-src/src/pages/PageGenres.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/web-src/src/router/index.js b/web-src/src/router/index.js index 0cbeb257..53c61904 100644 --- a/web-src/src/router/index.js +++ b/web-src/src/router/index.js @@ -11,6 +11,8 @@ import PageArtists from '@/pages/PageArtists' import PageArtist from '@/pages/PageArtist' import PageAlbums from '@/pages/PageAlbums' import PageAlbum from '@/pages/PageAlbum' +import PageGenres from '@/pages/PageGenres' +import PageGenre from '@/pages/PageGenre' import PagePodcasts from '@/pages/PagePodcasts' import PagePodcast from '@/pages/PagePodcast' import PageAudiobooks from '@/pages/PageAudiobooks' @@ -92,6 +94,18 @@ export const router = new VueRouter({ component: PageAlbum, meta: { show_progress: true } }, + { + path: '/music/genres', + name: 'Genres', + component: PageGenres, + meta: { show_progress: true } + }, + { + path: '/music/genres/:genre', + name: 'Genre', + component: PageGenre, + meta: { show_progress: true } + }, { path: '/podcasts', name: 'Podcasts', diff --git a/web-src/src/webapi/index.js b/web-src/src/webapi/index.js index efbbaa8d..236b7ddf 100644 --- a/web-src/src/webapi/index.js +++ b/web-src/src/webapi/index.js @@ -138,6 +138,21 @@ export default { return axios.get('/api/library/albums/' + albumId + '/tracks') }, + library_genres () { + return axios.get('/api/library/genres') + }, + + library_genre (genre) { + var genreParams = { + 'type': 'albums', + 'media_kind': 'music', + 'expression': 'genre is "' + genre + '"' + } + return axios.get('/api/search', { + params: genreParams + }) + }, + library_podcasts () { return axios.get('/api/library/albums?media_kind=podcast') },