mirror of
https://github.com/koel/koel
synced 2024-12-30 06:23:05 +00:00
63 lines
1.5 KiB
JavaScript
63 lines
1.5 KiB
JavaScript
|
/**
|
||
|
* Add necessary functionalities into a view that contains a song-list component.
|
||
|
*/
|
||
|
|
||
|
import _ from 'lodash';
|
||
|
|
||
|
import playback from '../services/playback';
|
||
|
import addToMenu from '../components/shared/add-to-menu.vue';
|
||
|
import songList from '../components/shared/song-list.vue';
|
||
|
|
||
|
export default {
|
||
|
components: { addToMenu, songList },
|
||
|
|
||
|
data() {
|
||
|
return {
|
||
|
/**
|
||
|
* Whether or not to show the "Add To" button in the header.
|
||
|
*
|
||
|
* @type {Boolean}
|
||
|
*/
|
||
|
showingAddToMenu: false,
|
||
|
|
||
|
/**
|
||
|
* An array of selected songs in the list.
|
||
|
*
|
||
|
* @type {Array}
|
||
|
*/
|
||
|
selectedSongs: [],
|
||
|
|
||
|
meta: {
|
||
|
songCount: 0,
|
||
|
totalLength: '00:00',
|
||
|
},
|
||
|
};
|
||
|
},
|
||
|
|
||
|
methods: {
|
||
|
/**
|
||
|
* Shuffles the currently selected songs.
|
||
|
*/
|
||
|
shuffleSelected() {
|
||
|
if (this.selectedSongs.length < 2) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
playback.queueAndPlay(this.selectedSongs, true);
|
||
|
},
|
||
|
},
|
||
|
|
||
|
events: {
|
||
|
/**
|
||
|
* Listen to add-to-menu:close event to set showingAddToMenu to false (and subsequently close the menu).
|
||
|
*/
|
||
|
'add-to-menu:close': function () {
|
||
|
this.showingAddToMenu = false;
|
||
|
},
|
||
|
|
||
|
'songlist:changed': function (meta) {
|
||
|
this.meta = _.assign(this.meta, meta);
|
||
|
},
|
||
|
},
|
||
|
};
|