From bcc1b1e72e2875c60fb32dcf110fb2cd098162c9 Mon Sep 17 00:00:00 2001 From: Vidocq <949867756@qq.com> Date: Fri, 19 Feb 2021 21:40:43 +0800 Subject: [PATCH 1/6] add search in playlist --- src/views/playlist.vue | 111 +++++++++++++++++++++++++++++++---------- 1 file changed, 85 insertions(+), 26 deletions(-) diff --git a/src/views/playlist.vue b/src/views/playlist.vue index 611cd5e..1d854a3 100644 --- a/src/views/playlist.vue +++ b/src/views/playlist.vue @@ -135,8 +135,22 @@ + + + song.name.toLowerCase().includes(this.playlistKeyword.toLowerCase()) || + song.al.name.toLowerCase().includes(this.playlistKeyword.toLowerCase()) || + song.ar.find(artist => artist.name.toLowerCase().includes(this.playlistKeyword.toLowerCase())) + ); + }, }, methods: { ...mapMutations(["appendTrackToPlayerList"]), @@ -374,6 +397,7 @@ export default { this.lastLoadedTrackIndex = data.playlist.tracks.length - 1; if (this.playlist.trackCount > this.tracks.length) { window.addEventListener("scroll", this.handleScroll, true); + window.addEventListener("input", this.handleSearch, this.playlistKeyword); } return data; }) @@ -384,11 +408,11 @@ export default { } }); }, - loadMore() { + loadMore(loadNum = 50) { let trackIDs = this.playlist.trackIds.filter((t, index) => { if ( index > this.lastLoadedTrackIndex && - index <= this.lastLoadedTrackIndex + 50 + index <= this.lastLoadedTrackIndex + loadNum ) return t; }); @@ -415,6 +439,15 @@ export default { this.loadMore(); } }, + handleSearch() { + if ( + this.lastLoadedTrackIndex + 1 === this.playlist.trackIds.length || + this.loadingMore + ) + return; + this.loadingMore = true; + this.loadMore(this.playlist.trackIds.length - this.lastLoadedTrackIndex); + }, openMenu(e) { this.$refs.playlistMenu.openMenu(e); }, @@ -452,7 +485,7 @@ export default {