From f9c184cc7586adcee5641adae5b84ff8147040c3 Mon Sep 17 00:00:00 2001
From: chme
Date: Sat, 17 Oct 2020 11:42:50 +0200
Subject: [PATCH 01/14] [web-src] Reduce size of empty search result message
---
web-src/src/pages/PageSearch.vue | 51 ++++++++++++++++++-------
web-src/src/pages/SpotifyPageSearch.vue | 35 ++++++++++++-----
web-src/src/templates/ContentText.vue | 20 ++++++++++
3 files changed, 84 insertions(+), 22 deletions(-)
create mode 100644 web-src/src/templates/ContentText.vue
diff --git a/web-src/src/pages/PageSearch.vue b/web-src/src/pages/PageSearch.vue
index 1212f69e..a7d7bf0a 100644
--- a/web-src/src/pages/PageSearch.vue
+++ b/web-src/src/pages/PageSearch.vue
@@ -29,7 +29,7 @@
-
+
Tracks
@@ -42,12 +42,16 @@
Show all {{ tracks.total.toLocaleString() }} tracks
- No results
+
+
+ No tracks found
+
+
-
+
Artists
@@ -60,12 +64,16 @@
Show all {{ artists.total.toLocaleString() }} artists
- No results
+
+
+ No artists found
+
+
-
+
Albums
@@ -78,12 +86,16 @@
Show all {{ albums.total.toLocaleString() }} albums
- No results
+
+
+ No albums found
+
+
-
+
Playlists
@@ -96,12 +108,16 @@
Show all {{ playlists.total.toLocaleString() }} playlists
- No results
+
+
+ No playlists found
+
+
-
+
Podcasts
@@ -114,12 +130,16 @@
Show all {{ podcasts.total.toLocaleString() }} podcasts
- No results
+
+
+ No podcasts found
+
+
-
+
Audiobooks
@@ -132,14 +152,19 @@
Show all {{ audiobooks.total.toLocaleString() }} audiobooks
- No results
+
+
+ No audiobooks found
+
+
+
+
From 99437b3ceb3cd64b7f10479ada7be4f81bcc3688 Mon Sep 17 00:00:00 2001
From: chme
Date: Sat, 17 Oct 2020 12:07:27 +0200
Subject: [PATCH 02/14] [web-src] Add option to artist albums list to sort by
release date
---
web-src/src/lib/Albums.js | 12 +++++++
web-src/src/pages/PageArtist.vue | 36 ++++++++++++++++++--
web-src/src/router/index.js | 2 +-
web-src/src/store/index.js | 4 +++
web-src/src/store/mutation_types.js | 1 +
web-src/src/templates/ContentWithHeading.vue | 2 +-
6 files changed, 52 insertions(+), 5 deletions(-)
diff --git a/web-src/src/lib/Albums.js b/web-src/src/lib/Albums.js
index a0b38c4b..006fa4d7 100644
--- a/web-src/src/lib/Albums.js
+++ b/web-src/src/lib/Albums.js
@@ -21,6 +21,8 @@ export default class Albums {
return album.time_added.substring(0, 4)
} else if (this.options.sort === 'Recently released') {
return album.date_released ? album.date_released.substring(0, 4) : '0000'
+ } else if (this.options.sort === 'Release date') {
+ return album.date_released ? album.date_released.substring(0, 4) : '0000'
}
return album.name_sort.charAt(0).toUpperCase()
}
@@ -57,6 +59,16 @@ export default class Albums {
}
return b.date_released.localeCompare(a.date_released)
})
+ } else if (this.options.sort === 'Release date') {
+ albumsSorted = [...albumsSorted].sort((a, b) => {
+ if (!a.date_released) {
+ return -1
+ }
+ if (!b.date_released) {
+ return 1
+ }
+ return a.date_released.localeCompare(b.date_released)
+ })
}
this.sortedAndFiltered = albumsSorted
}
diff --git a/web-src/src/pages/PageArtist.vue b/web-src/src/pages/PageArtist.vue
index 8056fce7..d048d58b 100644
--- a/web-src/src/pages/PageArtist.vue
+++ b/web-src/src/pages/PageArtist.vue
@@ -1,5 +1,13 @@
+
+
+
{{ artist.name }}
@@ -15,7 +23,7 @@
{{ artist.album_count }} albums | {{ artist.track_count }} tracks
-
+
@@ -26,7 +34,10 @@ import { LoadDataBeforeEnterMixin } from './mixin'
import ContentWithHeading from '@/templates/ContentWithHeading'
import ListAlbums from '@/components/ListAlbums'
import ModalDialogArtist from '@/components/ModalDialogArtist'
+import DropdownMenu from '@/components/DropdownMenu'
import webapi from '@/webapi'
+import * as types from '@/store/mutation_types'
+import Albums from '@/lib/Albums'
const artistData = {
load: function (to) {
@@ -45,17 +56,36 @@ const artistData = {
export default {
name: 'PageArtist',
mixins: [LoadDataBeforeEnterMixin(artistData)],
- components: { ContentWithHeading, ListAlbums, ModalDialogArtist },
+ components: { ContentWithHeading, ListAlbums, ModalDialogArtist, DropdownMenu },
data () {
return {
artist: {},
- albums: {},
+ albums: { items: [] },
+ sort_options: ['Name', 'Release date'],
show_artist_details_modal: false
}
},
+ computed: {
+ albums_list () {
+ return new Albums(this.albums.items, {
+ sort: this.sort,
+ group: false
+ })
+ },
+
+ sort: {
+ get () {
+ return this.$store.state.artist_albums_sort
+ },
+ set (value) {
+ this.$store.commit(types.ARTIST_ALBUMS_SORT, value)
+ }
+ }
+ },
+
methods: {
open_tracks: function () {
this.$router.push({ path: '/music/artists/' + this.artist.id + '/tracks' })
diff --git a/web-src/src/router/index.js b/web-src/src/router/index.js
index b7568b35..80e19d54 100644
--- a/web-src/src/router/index.js
+++ b/web-src/src/router/index.js
@@ -90,7 +90,7 @@ export const router = new VueRouter({
path: '/music/artists/:artist_id',
name: 'Artist',
component: PageArtist,
- meta: { show_progress: true }
+ meta: { show_progress: true, has_index: true }
},
{
path: '/music/artists/:artist_id/tracks',
diff --git a/web-src/src/store/index.js b/web-src/src/store/index.js
index 9bfb8bab..f46fb444 100644
--- a/web-src/src/store/index.js
+++ b/web-src/src/store/index.js
@@ -55,6 +55,7 @@ export default new Vuex.Store({
hide_singles: false,
hide_spotify: false,
artists_sort: 'Name',
+ artist_albums_sort: 'Name',
albums_sort: 'Name',
show_only_next_items: false,
show_burger_menu: false,
@@ -192,6 +193,9 @@ export default new Vuex.Store({
[types.ARTISTS_SORT] (state, sort) {
state.artists_sort = sort
},
+ [types.ARTIST_ALBUMS_SORT] (state, sort) {
+ state.artist_albums_sort = sort
+ },
[types.ALBUMS_SORT] (state, sort) {
state.albums_sort = sort
},
diff --git a/web-src/src/store/mutation_types.js b/web-src/src/store/mutation_types.js
index f3b2beb3..3cb8e822 100644
--- a/web-src/src/store/mutation_types.js
+++ b/web-src/src/store/mutation_types.js
@@ -21,6 +21,7 @@ export const ADD_RECENT_SEARCH = 'ADD_RECENT_SEARCH'
export const HIDE_SINGLES = 'HIDE_SINGLES'
export const HIDE_SPOTIFY = 'HIDE_SPOTIFY'
export const ARTISTS_SORT = 'ARTISTS_SORT'
+export const ARTIST_ALBUMS_SORT = 'ARTIST_ALBUMS_SORT'
export const ALBUMS_SORT = 'ALBUMS_SORT'
export const SHOW_ONLY_NEXT_ITEMS = 'SHOW_ONLY_NEXT_ITEMS'
export const SHOW_BURGER_MENU = 'SHOW_BURGER_MENU'
diff --git a/web-src/src/templates/ContentWithHeading.vue b/web-src/src/templates/ContentWithHeading.vue
index 35090f45..4211694e 100644
--- a/web-src/src/templates/ContentWithHeading.vue
+++ b/web-src/src/templates/ContentWithHeading.vue
@@ -4,7 +4,7 @@
-
+
+
+
+
+
Scan for new, deleted and modified files
+
+
+
+
+
+
Library update in progress ...
+
+
+
+
@@ -77,15 +103,19 @@