Просмотр исходного кода

elasticsearch saving does now work, still have to do ttl and temp dashboard

Torkel Ödegaard 11 лет назад
Родитель
Сommit
0a3d4a5ab0

+ 13 - 11
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;
     };
 

+ 1 - 0
src/app/services/all.js

@@ -9,5 +9,6 @@ define([
   './annotationsSrv',
   './playlistSrv',
   './unsavedChangesSrv',
+  './elasticsearch/es-client2',
 ],
 function () {});

+ 46 - 0
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;
+        });
+    };
+
+  });
+
+});

+ 6 - 6
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();