| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- ///<reference path="../../headers/common.d.ts" />
- import angular from 'angular';
- import _ from 'lodash';
- import coreModule from '../../core/core_module';
- import config from 'app/core/config';
- export class PlaylistEditCtrl {
- filteredPlaylistItems: any = [];
- foundPlaylistItems: any = [];
- searchQuery: string = '';
- loading: boolean = false;
- playlist: any = {
- interval: '10m',
- };
- playlistItems: any = [];
- /** @ngInject */
- constructor(private $scope, private playlistSrv, private backendSrv, private $location, private $route) {
- if ($route.current.params.id) {
- var playlistId = $route.current.params.id;
- backendSrv.get('/api/playlists/' + playlistId)
- .then((result) => {
- this.playlist = result;
- });
- backendSrv.get('/api/playlists/' + playlistId + '/items')
- .then((result) => {
- this.playlistItems = result;
- });
- }
- this.search();
- }
- search() {
- var query: any = {limit: 10};
- if (this.searchQuery) {
- query.query = this.searchQuery;
- }
- this.loading = true;
- this.backendSrv.search(query)
- .then((results) => {
- this.foundPlaylistItems = results;
- this.filterFoundPlaylistItems();
- })
- .finally(() => {
- this.loading = false;
- });
- };
- filterFoundPlaylistItems() {
- this.filteredPlaylistItems = _.reject(this.foundPlaylistItems, (playlistItem) => {
- return _.findWhere(this.playlistItems, (listPlaylistItem) => {
- return parseInt(listPlaylistItem.value) === playlistItem.id;
- });
- });
- };
- addPlaylistItem(playlistItem) {
- playlistItem.value = playlistItem.id.toString();
- playlistItem.type = 'dashboard_by_id';
- playlistItem.order = this.playlistItems.length + 1;
- this.playlistItems.push(playlistItem);
- this.filterFoundPlaylistItems();
- };
- removePlaylistItem(playlistItem) {
- _.remove(this.playlistItems, (listedPlaylistItem) => {
- return playlistItem === listedPlaylistItem;
- });
- this.filterFoundPlaylistItems();
- };
- savePlaylist(playlist, playlistItems) {
- var savePromise;
- playlist.items = playlistItems;
- savePromise = playlist.id
- ? this.backendSrv.put('/api/playlists/' + playlist.id, playlist)
- : this.backendSrv.post('/api/playlists', playlist);
- savePromise
- .then(() => {
- this.$scope.appEvent('alert-success', ['Playlist saved', '']);
- this.$location.path('/playlists');
- }, () => {
- this.$scope.appEvent('alert-error', ['Unable to save playlist', '']);
- });
- };
- isNew() {
- return !this.playlist.id;
- };
- isPlaylistEmpty() {
- return !this.playlistItems.length;
- };
- isSearchResultsEmpty() {
- return !this.foundPlaylistItems.length;
- };
- isSearchQueryEmpty() {
- return this.searchQuery === '';
- };
- backToList() {
- this.$location.path('/playlists');
- };
- isLoading() {
- return this.loading;
- };
- movePlaylistItem(playlistItem, offset) {
- var currentPosition = this.playlistItems.indexOf(playlistItem);
- var newPosition = currentPosition + offset;
- if (newPosition >= 0 && newPosition < this.playlistItems.length) {
- this.playlistItems.splice(currentPosition, 1);
- this.playlistItems.splice(newPosition, 0, playlistItem);
- }
- };
- movePlaylistItemUp(playlistItem) {
- this.movePlaylistItem(playlistItem, -1);
- };
- movePlaylistItemDown(playlistItem) {
- this.movePlaylistItem(playlistItem, 1);
- };
- }
- coreModule.controller('PlaylistEditCtrl', PlaylistEditCtrl);
|