| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- ///<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 {
- filteredDashboards: any = [];
- filteredTags: any = [];
- searchQuery: string = '';
- loading: boolean = false;
- playlist: any = {
- interval: '5m',
- };
- playlistItems: any = [];
- dashboardresult: any = [];
- tagresult: 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;
- });
- }
- }
- filterFoundPlaylistItems() {
- this.filteredDashboards = _.reject(this.dashboardresult, (playlistItem) => {
- return _.findWhere(this.playlistItems, (listPlaylistItem) => {
- return parseInt(listPlaylistItem.value) === playlistItem.id;
- });
- });
- this.filteredTags = _.reject(this.tagresult, (tag) => {
- return _.findWhere(this.playlistItems, (listPlaylistItem) => {
- return listPlaylistItem.value === tag.term;
- });
- });
- }
- addPlaylistItem(playlistItem) {
- playlistItem.value = playlistItem.id.toString();
- playlistItem.type = 'dashboard_by_id';
- playlistItem.order = this.playlistItems.length + 1;
- this.playlistItems.push(playlistItem);
- this.filterFoundPlaylistItems();
- }
- addTagPlaylistItem(tag) {
- var playlistItem: any = {
- value: tag.term,
- type: 'dashboard_by_tag',
- order: this.playlistItems.length + 1,
- title: tag.term
- };
- 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;
- }
- backToList() {
- this.$location.path('/playlists');
- }
- searchStarted(promise) {
- promise.then((data) => {
- this.dashboardresult = data.dashboardResult;
- this.tagresult = data.tagResult;
- this.filterFoundPlaylistItems();
- });
- }
- 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);
|