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

Added global field list service for use in panel editor type ahead

Rashid Khan 12 лет назад
Родитель
Сommit
68b765789a
6 измененных файлов с 24 добавлено и 6 удалено
  1. 5 1
      js/controllers.js
  2. 15 0
      js/services.js
  3. 1 1
      panels/map/editor.html
  4. 1 1
      panels/pie/editor.html
  5. 1 1
      panels/table/editor.html
  6. 1 2
      panels/table/module.js

+ 5 - 1
js/controllers.js

@@ -3,7 +3,7 @@
 'use strict';
 
 angular.module('kibana.controllers', [])
-.controller('DashCtrl', function($scope, $rootScope, $http, $timeout, ejsResource, eventBus) {
+.controller('DashCtrl', function($scope, $rootScope, $http, $timeout, ejsResource, eventBus, fields) {
 
   var _d = {
     title: "",
@@ -14,7 +14,11 @@ angular.module('kibana.controllers', [])
   $scope.init = function() {
 
     $scope.config = config;
+    // Make underscore.js available to views
     $scope._ = _;
+
+    // Provide a global list of all see fields
+    $scope.fields = fields
     $scope.reset_row();
     $scope.clear_all_alerts();
 

+ 15 - 0
js/services.js

@@ -67,6 +67,21 @@ angular.module('kibana.services', [])
     });
   }
 
+})
+/* Service: fields
+   Provides a global list of all seen fields for use in editor panels
+*/
+.factory('fields', function($rootScope) {
+  var fields = {
+    list : []
+  }
+
+  $rootScope.$on('fields', function(event,f) {
+    fields.list = _.union(f.data.all,fields.list)
+  })
+
+  return fields;
+
 })
 .service('timer', function($timeout) {
   // This service really just tracks a list of $timeout promises to give us a

+ 1 - 1
panels/map/editor.html

@@ -8,7 +8,7 @@
     <div class="span3">
       <form>
         <h6>Field</h6>
-        <input type="text" class="input-small" ng-model="panel.field">
+        <input  bs-typeahead="fields.list" type="text" class="input-small" ng-model="panel.field">
       </form>
     </div>
     <div class="span6">

+ 1 - 1
panels/pie/editor.html

@@ -4,7 +4,7 @@
       <div class="span4">
         <form style="margin-bottom: 0px">
           <h6> Field</h6>
-          <input type="text" style="width:90%" ng-model="panel.query.field">
+          <input type="text" style="width:90%" bs-typeahead="fields.list" ng-model="panel.query.field">
         </form>
       </div>
       <div class="span8">

+ 1 - 1
panels/table/editor.html

@@ -11,7 +11,7 @@
     <div class="span4">
       <form class="input-append">
         <h6>Add field</h6>
-        <input bs-typeahead="all_fields" type="text" class="input-small" ng-model='newfield'>
+        <input bs-typeahead="fields.list" type="text" class="input-small" ng-model='newfield'>
         <button class="btn" ng-click="toggle_field(newfield);newfield=''"><i class="icon-plus"></i></button>
       </form>
     </div>

+ 1 - 2
panels/table/module.js

@@ -1,5 +1,5 @@
 angular.module('kibana.table', [])
-.controller('table', function($scope, eventBus) {
+.controller('table', function($scope, eventBus, fields) {
 
   // Set and populate defaults
   var _d = {
@@ -142,7 +142,6 @@ angular.module('kibana.table', [])
       
       // This breaks, use $scope.data for this
       $scope.all_fields = get_all_fields($scope.data);
-
       broadcast_results();
 
       // If we're not sorting in reverse chrono order, query every index for