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 {