From d15b0bf4c47cdecfe9def64db476280ed5c12c64 Mon Sep 17 00:00:00 2001 From: bergquist Date: Fri, 8 Jan 2016 13:57:00 +0100 Subject: [PATCH] fix(playlist): move backend code to ctrl data loading should be done in the ctrl --- .../features/playlist/playlist_edit_ctrl.js | 56 +++++++++++-------- .../app/features/playlist/playlist_routes.js | 24 +------- .../app/features/playlist/playlists_ctrl.js | 5 +- 3 files changed, 38 insertions(+), 47 deletions(-) diff --git a/public/app/features/playlist/playlist_edit_ctrl.js b/public/app/features/playlist/playlist_edit_ctrl.js index c4d21892d0c..feb7ac4cee2 100644 --- a/public/app/features/playlist/playlist_edit_ctrl.js +++ b/public/app/features/playlist/playlist_edit_ctrl.js @@ -8,14 +8,29 @@ function (angular, config, _) { var module = angular.module('grafana.controllers'); - module.controller('PlaylistEditCtrl', function( - playlist, - dashboards, - $scope, - playlistSrv, - backendSrv, - $location - ) { + module.controller('PlaylistEditCtrl', function($scope, playlistSrv, backendSrv, $location, $route) { + $scope.timespan = config.playlist_timespan; + $scope.filteredDashboards = []; + $scope.foundDashboards = []; + $scope.searchQuery = ''; + $scope.loading = false; + $scope.playlist = {}; + $scope.dashboards = []; + + if ($route.current.params.id) { + var playlistId = $route.current.params.id; + + backendSrv.get('/api/playlists/' + playlistId) + .then(function(result) { + $scope.playlist = result; + }); + + backendSrv.get('/api/playlists/' + playlistId + '/dashboards') + .then(function(result) { + $scope.dashboards = result; + }); + } + $scope.search = function() { var query = {starred: true, limit: 10}; @@ -38,19 +53,19 @@ function (angular, config, _) { $scope.filterFoundDashboards = function() { $scope.filteredDashboards = _.reject($scope.foundDashboards, function(dashboard) { - return _.findWhere(dashboards, function(listDashboard) { + return _.findWhere($scope.dashboards, function(listDashboard) { return listDashboard.id === dashboard.id; }); }); }; $scope.addDashboard = function(dashboard) { - dashboards.push(dashboard); + $scope.dashboards.push(dashboard); $scope.filterFoundDashboards(); }; $scope.removeDashboard = function(dashboard) { - _.remove(dashboards, function(listedDashboard) { + _.remove($scope.dashboards, function(listedDashboard) { return dashboard === listedDashboard; }); $scope.filterFoundDashboards(); @@ -80,7 +95,7 @@ function (angular, config, _) { }; $scope.isNew = function() { - return !playlist.id; + return !$scope.playlist.id; }; $scope.startPlaylist = function(playlist, dashboards) { @@ -88,7 +103,7 @@ function (angular, config, _) { }; $scope.isPlaylistEmpty = function() { - return !dashboards.length; + return !$scope.dashboards.length; }; $scope.isSearchResultsEmpty = function() { @@ -108,12 +123,12 @@ function (angular, config, _) { }; $scope.moveDashboard = function(dashboard, offset) { - var currentPosition = dashboards.indexOf(dashboard); + var currentPosition = $scope.dashboards.indexOf(dashboard); var newPosition = currentPosition + offset; - if (newPosition >= 0 && newPosition < dashboards.length) { - dashboards.splice(currentPosition, 1); - dashboards.splice(newPosition, 0, dashboard); + if (newPosition >= 0 && newPosition < $scope.dashboards.length) { + $scope.dashboards.splice(currentPosition, 1); + $scope.dashboards.splice(newPosition, 0, dashboard); } }; @@ -125,13 +140,6 @@ function (angular, config, _) { $scope.moveDashboard(dashboard, 1); }; - $scope.playlist = playlist; - $scope.dashboards = dashboards; - $scope.timespan = config.playlist_timespan; - $scope.filteredDashboards = []; - $scope.foundDashboards = []; - $scope.searchQuery = ''; - $scope.loading = false; $scope.search(); }); }); diff --git a/public/app/features/playlist/playlist_routes.js b/public/app/features/playlist/playlist_routes.js index cd19a20d686..289a985c4ee 100644 --- a/public/app/features/playlist/playlist_routes.js +++ b/public/app/features/playlist/playlist_routes.js @@ -16,31 +16,11 @@ function (angular, config, _) { }) .when('/playlists/create', { templateUrl: 'app/features/playlist/partials/playlist.html', - controller : 'PlaylistEditCtrl', - resolve: { - playlist: function() { - return {}; - }, - dashboards: function() { - return []; - } - } + controller : 'PlaylistEditCtrl' }) .when('/playlists/edit/:id', { templateUrl: 'app/features/playlist/partials/playlist.html', - controller : 'PlaylistEditCtrl', - resolve: { - playlist: function(backendSrv, $route) { - var playlistId = $route.current.params.id; - - return backendSrv.get('/api/playlists/' + playlistId); - }, - dashboards: function(backendSrv, $route) { - var playlistId = $route.current.params.id; - - return backendSrv.get('/api/playlists/' + playlistId + '/dashboards'); - } - } + controller : 'PlaylistEditCtrl' }) .when('/playlists/play/:id', { templateUrl: 'app/partials/dashboard.html', diff --git a/public/app/features/playlist/playlists_ctrl.js b/public/app/features/playlist/playlists_ctrl.js index f9aa62f59ef..092bb00f56c 100644 --- a/public/app/features/playlist/playlists_ctrl.js +++ b/public/app/features/playlist/playlists_ctrl.js @@ -12,7 +12,10 @@ function (angular, _) { $location, backendSrv ) { - $scope.playlists = backendSrv.get('/api/playlists'); + backendSrv.get('/api/playlists') + .then(function(result) { + $scope.playlists = result; + }); $scope.playlistUrl = function(playlist) { return '/playlists/play/' + playlist.id;