%PDF- %PDF-
| Direktori : /www/varak.cloud/jamstash.varak.cloud/app/common/ |
| Current File : //www/varak.cloud/jamstash.varak.cloud/app/common/selectedsongs-service.js |
/**
* jamstash.selectedsongs Module
*
* Manages the list of selected songs accross the app to avoid duplicating
* those functions both in Subsonic and Archive.org contexts
*/
angular.module('jamstash.selectedsongs', ['ngLodash'])
.service('SelectedSongs', SelectedSongs);
SelectedSongs.$inject = ['lodash'];
function SelectedSongs(_) {
'use strict';
var self = this;
_.extend(self, {
add : add,
addSongs: addSongs,
get : get,
remove : remove,
reset : reset,
toggle : toggle
});
var selectedSongs = [];
function add(song) {
song.selected = true;
selectedSongs.push(song);
selectedSongs = _.uniq(selectedSongs);
return self;
}
function addSongs(songs) {
_.forEach(songs, function (song) {
song.selected = true;
});
selectedSongs = _.union(selectedSongs, songs);
return self;
}
function get() {
return selectedSongs;
}
function remove(song) {
var removedSong = _(selectedSongs).remove(function (selectedSong) {
return selectedSong === song;
}).first();
_.set(removedSong, 'selected', false);
return self;
}
function toggle(song) {
if (song.selected) {
self.remove(song);
} else {
self.add(song);
}
return self;
}
function reset() {
_.forEach(selectedSongs, function (song) {
song.selected = false;
});
selectedSongs = [];
return self;
}
}