diff --git a/src/app/controllers/dashLoader.js b/src/app/controllers/dashLoader.js index c4f96f8c4ff..55cb8fc6cfa 100644 --- a/src/app/controllers/dashLoader.js +++ b/src/app/controllers/dashLoader.js @@ -8,7 +8,7 @@ function (angular, _, moment) { var module = angular.module('kibana.controllers'); - module.controller('dashLoader', function($scope, $rootScope, $http, alertSrv, $location, playlistSrv) { + module.controller('dashLoader', function($scope, $rootScope, $http, alertSrv, $location, playlistSrv, elastic) { $scope.init = function() { $scope.gist_pattern = /(^\d{5,}$)|(^[a-z0-9]{10,}$)|(gist.github.com(\/*.*)\/[a-z0-9]{5,}\/*$)/; @@ -64,20 +64,22 @@ function (angular, _, moment) { } }; - $scope.elasticsearch_save = function(type,ttl) { - $scope.dashboard.elasticsearch_save(type, $scope.dashboard.title, ttl) + $scope.elasticsearch_save = function(type, ttl) { + elastic.saveDashboard($scope.dashboard, $scope.dashboard.title) .then(function(result) { - if(_.isUndefined(result._id)) { - alertSrv.set('Save failed','Dashboard could not be saved to Elasticsearch','error',5000); - return; - } + alertSrv.set('Dashboard Saved', 'Dashboard has been saved to Elasticsearch as "' + result.title + '"','success', 5000); - alertSrv.set('Dashboard Saved', 'Dashboard has been saved to Elasticsearch as "' + result._id + '"','success', 5000); if(type === 'temp') { - $scope.share = $scope.dashboard.share_link($scope.dashboard.title,'temp',result._id); + $scope.share = $scope.dashboard.share_link($scope.dashboard.title, 'temp', result.title); + } + else { + $location.path(result.url); } $rootScope.$emit('dashboard-saved', $scope.dashboard); + + }, function(err) { + alertSrv.set('Save failed', err, 'error',5000); }); }; @@ -150,11 +152,11 @@ function (angular, _, moment) { }; $scope.openSaveDropdown = function() { - $scope.isFavorite = playlistSrv.isCurrentFavorite(); + $scope.isFavorite = playlistSrv.isCurrentFavorite($scope.dashboard); }; $scope.markAsFavorite = function() { - playlistSrv.markAsFavorite(); + playlistSrv.markAsFavorite($scope.dashboard); $scope.isFavorite = true; }; diff --git a/src/app/services/all.js b/src/app/services/all.js index 53a4f521ac6..6b98c6647c6 100644 --- a/src/app/services/all.js +++ b/src/app/services/all.js @@ -9,5 +9,6 @@ define([ './annotationsSrv', './playlistSrv', './unsavedChangesSrv', + './elasticsearch/es-client2', ], function () {}); \ No newline at end of file diff --git a/src/app/services/elasticsearch/es-client2.js b/src/app/services/elasticsearch/es-client2.js new file mode 100644 index 00000000000..1a19fa06e1d --- /dev/null +++ b/src/app/services/elasticsearch/es-client2.js @@ -0,0 +1,46 @@ +define([ + 'angular', + 'config' +], +function(angular, config) { + "use strict"; + + var module = angular.module('kibana.services'); + + module.service('elastic', function($http) { + + this.put = function(url, data) { + url = config.elasticsearch + '/' + config.grafana_index + url; + + var options = { + url: url, + method: 'PUT', + data: data + }; + + return $http(options); + }; + + this.saveDashboard = function(dashboard, title, ttl) { + var dashboardClone = angular.copy(dashboard); + title = dashboardClone.title = title ? title : dashboard.title; + + var data = { + user: 'guest', + group: 'guest', + title: title, + tags: dashboardClone.tags, + dashboard: angular.toJson(dashboardClone) + }; + + return this.put('/dashboard/' + encodeURIComponent(title), data) + .then(function() { + return { title: title, url: '/dashboard/elasticsearch/' + title }; + }, function(err) { + throw 'Failed to save to elasticsearch ' + err.data; + }); + }; + + }); + +}); diff --git a/src/app/services/playlistSrv.js b/src/app/services/playlistSrv.js index ee3a85855bc..ae1b1b3ee28 100644 --- a/src/app/services/playlistSrv.js +++ b/src/app/services/playlistSrv.js @@ -8,7 +8,7 @@ function (angular, _, kbn) { var module = angular.module('kibana.services'); - module.service('playlistSrv', function(dashboard, $location, $rootScope) { + module.service('playlistSrv', function($location, $rootScope) { var timerInstance; var favorites = { dashboards: [] }; @@ -33,17 +33,17 @@ function (angular, _, kbn) { } }; - this.isCurrentFavorite = function() { - return this._find(dashboard.current.title) ? true : false; + this.isCurrentFavorite = function(dashboard) { + return this._find(dashboard.title) ? true : false; }; - this.markAsFavorite = function() { - var existing = this._find(dashboard.current.title); + this.markAsFavorite = function(dashboard) { + var existing = this._find(dashboard.title); this._remove(existing); favorites.dashboards.push({ url: $location.path(), - title: dashboard.current.title + title: dashboard.title }); this._save();