mirror of
https://github.com/koel/koel
synced 2024-12-30 14:33:06 +00:00
51 lines
1.1 KiB
JavaScript
51 lines
1.1 KiB
JavaScript
/**
|
|
* Add necessary functionalities into a view that contains a song-list component.
|
|
*/
|
|
|
|
import { assignIn } from 'lodash'
|
|
import isMobile from 'ismobilejs'
|
|
|
|
import { playback } from '@/services'
|
|
import songList from '@/components/shared/song-list.vue'
|
|
import songListControls from '@/components/shared/song-list-controls.vue'
|
|
import controlsToggler from '@/components/shared/song-list-controls-toggler.vue'
|
|
|
|
export default {
|
|
components: { songList, songListControls, controlsToggler },
|
|
|
|
data () {
|
|
return {
|
|
state: null,
|
|
meta: {
|
|
songCount: 0,
|
|
totalLength: '00:00'
|
|
},
|
|
selectedSongs: [],
|
|
showingControls: false,
|
|
songListControlConfig: {},
|
|
isPhone: isMobile.phone
|
|
}
|
|
},
|
|
|
|
methods: {
|
|
setSelectedSongs (songs) {
|
|
this.selectedSongs = songs
|
|
},
|
|
|
|
updateMeta (meta) {
|
|
assignIn(this.meta, meta)
|
|
},
|
|
|
|
shuffleAll () {
|
|
playback.queueAndPlay(this.state.songs, true)
|
|
},
|
|
|
|
shuffleSelected () {
|
|
playback.queueAndPlay(this.selectedSongs, true)
|
|
},
|
|
|
|
toggleControls () {
|
|
this.showingControls = !this.showingControls
|
|
}
|
|
}
|
|
}
|