From c1e3e73b37e5a35ee30bb029d58ac2438f971842 Mon Sep 17 00:00:00 2001 From: vapormusic Date: Thu, 10 Feb 2022 12:58:20 +0700 Subject: [PATCH] sort songs by date added by yours truly --- src/i18n/en_US.jsonc | 1 + src/i18n/vi_VN.jsonc | 1 + src/renderer/index.js | 24 ++++++++++++++++-------- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/i18n/en_US.jsonc b/src/i18n/en_US.jsonc index b4369a35..b5bb9035 100644 --- a/src/i18n/en_US.jsonc +++ b/src/i18n/en_US.jsonc @@ -72,6 +72,7 @@ "term.sortBy.genre": "Genre", "term.sortBy.releaseDate": "Release Date", "term.sortBy.duration": "Duration", + "term.sortBy.dateAdded": "Date Added", "term.sortOrder": "A-Z", "term.sortOrder.ascending": "Ascending", "term.sortOrder.descending": "Descending", diff --git a/src/i18n/vi_VN.jsonc b/src/i18n/vi_VN.jsonc index 9d6aba8c..09c1c6fb 100644 --- a/src/i18n/vi_VN.jsonc +++ b/src/i18n/vi_VN.jsonc @@ -72,6 +72,7 @@ "term.sortBy.genre": "Dòng nhạc", "term.sortBy.releaseDate": "Ngày ra mắt", "term.sortBy.duration": "Thời lượng", + "term.sortBy.dateAdded": "Ngày thêm vào", "term.sortOrder": "A-Z", "term.sortOrder.ascending": "Tăng dần", "term.sortOrder.descending": "Giảm dần", diff --git a/src/renderer/index.js b/src/renderer/index.js index b1ca06d5..34397998 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -113,7 +113,8 @@ const app = new Vue({ "name": "0", "genre": "0", "releaseDate": "0", - "durationInMillis": "0" + "durationInMillis": "0", + "dateAdded": "0" }, sorting: "name", sortOrder: "asc", @@ -334,7 +335,8 @@ const app = new Vue({ "name": app.getLz('term.sortBy.name'), "genre": app.getLz('term.sortBy.genre'), "releaseDate": app.getLz('term.sortBy.releaseDate'), - "durationInMillis": app.getLz('term.sortBy.duration') + "durationInMillis": app.getLz('term.sortBy.duration'), + "dateAdded": app.getLz('term.sortBy.dateAdded') } app.$data.library.albums.sortingOptions = { @@ -1333,7 +1335,7 @@ const app = new Vue({ } }, async getNowPlayingItemDetailed(target) { - let u = await app.mkapi(app.mk.nowPlayingItem.playParams.kind, (app.mk.nowPlayingItem.songId == -1), (app.mk.nowPlayingItem.songId != -1) ? app.mk.nowPlayingItem.songId : app.mk.nowPlayingItem["id"], {"include[songs]": "albums,artists", l : this.mklang}); + let u = await app.mkapi(app.mk.nowPlayingItem.playParams.kind, (app.mk.nowPlayingItem.songId == -1), (app.mk.nowPlayingItem.songId != -1) ? app.mk.nowPlayingItem.songId : app.mk.nowPlayingItem["id"], {"include[songs]": "albums,artists", l : app.mklang}); app.searchAndNavigate(u.data.data[0], target) }, async searchAndNavigate(item, target) { @@ -1567,17 +1569,23 @@ const app = new Vue({ searchLibrarySongs() { let self = this let prefs = this.cfg.libraryPrefs.songs - + let albumAdded = self.library?.albums?.listing?.map(function(i){return {[i.id]: i.attributes?.dateAdded}}) function sortSongs() { // sort this.library.songs.displayListing by song.attributes[self.library.songs.sorting] in descending or ascending order based on alphabetical order and numeric order // check if song.attributes[self.library.songs.sorting] is a number and if so, sort by number if not, sort by alphabetical order ignoring case self.library.songs.displayListing.sort((a, b) => { let aa = a.attributes[prefs.sort] let bb = b.attributes[prefs.sort] - if (self.library.songs.sorting == "genre") { + if (prefs.sort == "genre") { aa = a.attributes.genreNames[0] bb = b.attributes.genreNames[0] } + if (prefs.sort == "dateAdded"){ + let albumida = a.relationships?.albums?.data[0]?.id ?? '1970-01-01T00:01:01Z' + let albumidb = b.relationships?.albums?.data[0]?.id ?? '1970-01-01T00:01:01Z' + aa = new Date(((albumAdded.find(i => i[albumida]))?? [])[albumida] ?? '1970-01-01T00:01:01Z').getTime() + bb = new Date(((albumAdded.find(i => i[albumidb]))?? [])[albumidb] ?? '1970-01-01T00:01:01Z').getTime() + } if (aa == null) { aa = "" } @@ -1829,7 +1837,7 @@ const app = new Vue({ "fields[catalog]": "artistUrl,albumUrl", "fields[songs]": "artistName,artistUrl,artwork,contentRating,editorialArtwork,name,playParams,releaseDate,url", limit: 100, - l: this.mklang + l: self.mklang } const safeparams = { "platform": "web", @@ -1933,7 +1941,7 @@ const app = new Vue({ "fields[catalog]": "artistUrl,albumUrl", "fields[albums]": "artistName,artistUrl,artwork,contentRating,editorialArtwork,name,playParams,releaseDate,url", limit: 100, - l: this.mklang + l: self.mklang } const safeparams = { platform: "web", @@ -2043,7 +2051,7 @@ const app = new Vue({ // "fields[catalog]": "artistUrl,albumUrl", // "fields[artists]": "artistName,artistUrl,artwork,contentRating,editorialArtwork,name,playParams,releaseDate,url", limit: 100, - l: this.mklang + l: self.mklang } const safeparams = { include: "catalog",