diff --git a/src/app/controllers/dash.js b/src/app/controllers/dash.js index ef4916f625f..f631550c3d9 100644 --- a/src/app/controllers/dash.js +++ b/src/app/controllers/dash.js @@ -31,7 +31,7 @@ function (angular, $, config, _) { var module = angular.module('kibana.controllers'); module.controller('DashCtrl', function( - $scope, $rootScope, dashboardKeybindings, filterSrv, dashboard, panelMoveSrv) { + $scope, $rootScope, dashboardKeybindings, filterSrv, dashboard, panelMoveSrv, alertSrv) { $scope.editor = { index: 0 }; @@ -39,6 +39,9 @@ function (angular, $, config, _) { $scope.reset_row(); dashboardKeybindings.shortcuts(); + // Clear existing alerts + alertSrv.clearAll(); + $scope.onAppEvent('setup-dashboard', $scope.setupDashboard, $scope); }; diff --git a/src/app/controllers/grafanaCtrl.js b/src/app/controllers/grafanaCtrl.js index 68b3aa2bb7a..0c452c0aae6 100644 --- a/src/app/controllers/grafanaCtrl.js +++ b/src/app/controllers/grafanaCtrl.js @@ -15,9 +15,6 @@ function (angular, config, _) { $scope.init = function() { $scope._ = _; $scope.dashAlerts = alertSrv; - - // Clear existing alerts - alertSrv.clearAll(); }; $scope.onAppEvent = function(name, callback, scope) { diff --git a/src/app/routes/dashboard-from-es.js b/src/app/routes/dashboard-from-es.js index 5d1165b8687..2e62b3576c1 100644 --- a/src/app/routes/dashboard-from-es.js +++ b/src/app/routes/dashboard-from-es.js @@ -14,10 +14,6 @@ function (angular, $, config, _) { .when('/dashboard/elasticsearch/:id', { templateUrl: 'app/partials/dashboard.html', controller : 'DashFromElasticProvider', - }) - .when('/dashboard/file/:jsonFile', { - templateUrl: 'app/partials/dashboard.html', - controller : 'DashFromFileProvider', }); }); @@ -30,8 +26,12 @@ function (angular, $, config, _) { url: url +'?' + new Date().getTime(), method: "GET", transformResponse: function(response) { - var dashJson = angular.fromJson(response)._source.dashboard; - return angular.fromJson(dashJson); + var esResponse = angular.fromJson(response); + if (esResponse._source && esResponse._source.dashboard) { + return angular.fromJson(esResponse._source.dashboard); + } else { + return false; + } } }; @@ -60,61 +60,4 @@ function (angular, $, config, _) { }); - module.controller('DashFromFileProvider', function( - $scope, $rootScope, $http, $routeParams, alertSrv, dashboard, filterSrv, panelMoveSrv) { - - $scope.init = function() { - - file_load($routeParams.jsonFile).then(function(data) { - $scope.dashboard = dashboard.create(data); - $scope.filter = filterSrv; - $scope.filter.init($scope.dashboard); - - var panelMove = panelMoveSrv.create($scope.dashboard); - // For moving stuff around the dashboard. - $scope.panelMoveDrop = panelMove.onDrop; - $scope.panelMoveStart = panelMove.onStart; - $scope.panelMoveStop = panelMove.onStop; - $scope.panelMoveOver = panelMove.onOver; - $scope.panelMoveOut = panelMove.onOut; - - $rootScope.$emit("dashboard-loaded", $scope.dashboard); - }); - }; - - var renderTemplate = function(json,params) { - var _r; - _.templateSettings = {interpolate : /\{\{(.+?)\}\}/g}; - var template = _.template(json); - var rendered = template({ARGS:params}); - try { - _r = angular.fromJson(rendered); - } catch(e) { - _r = false; - } - return _r; - }; - - var file_load = function(file) { - return $http({ - url: "app/dashboards/"+file.replace(/\.(?!json)/,"/")+'?' + new Date().getTime(), - method: "GET", - transformResponse: function(response) { - return renderTemplate(response,$routeParams); - } - }).then(function(result) { - if(!result) { - return false; - } - return result.data; - },function() { - alertSrv.set('Error',"Could not load dashboards/"+file+". Please make sure it exists" ,'error'); - return false; - }); - }; - - $scope.init(); - - }); - }); diff --git a/src/app/services/dashboard.js b/src/app/services/dashboard.js index 7905f4446dc..d00e2961396 100644 --- a/src/app/services/dashboard.js +++ b/src/app/services/dashboard.js @@ -16,6 +16,10 @@ function (angular, $, kbn, _) { module.service('dashboard', function(timer, $rootScope, $timeout) { function DashboardModel (data) { + if (!data) { + data = {}; + }; + this.title = data.title; this.tags = data.tags || []; this.style = data.style || "dark"; @@ -25,7 +29,7 @@ function (angular, $, kbn, _) { this.pulldowns = data.pulldowns || []; this.nav = data.nav || []; this.services = data.services || {}; - this.loader = data.loader; + this.loader = data.loader || {}; _.defaults(this.loader, { save_gist: false, diff --git a/src/app/services/filterSrv.js b/src/app/services/filterSrv.js index 6e13eec0ce7..f92c7b90a01 100644 --- a/src/app/services/filterSrv.js +++ b/src/app/services/filterSrv.js @@ -94,14 +94,22 @@ define([ this.dashboard = dashboard; this.templateSettings = { interpolate : /\[\[([\s\S]+?)\]\]/g }; - if(dashboard.services && dashboard.services.filter) { - this.time = dashboard.services.filter.time; - this.templateParameters = dashboard.services.filter.list || []; - this.updateTemplateData(true); +/* if (!this.dashboard.services.filter) { + this.dashboard.services.filter = { + list: [], + time: { + from: '1h', + to: 'now' + } + }; } - +*/ + this.time = dashboard.services.filter.time; + this.templateParameters = dashboard.services.filter.list || []; + this.updateTemplateData(true); } }; + return result; });