Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

removed eventBus completely, fix field list auto complete #286

Merged
merged 1 commit into from
Jul 27, 2013
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion js/controllers.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
'use strict';

angular.module('kibana.controllers', [])
.controller('DashCtrl', function($scope, $rootScope, $http, $timeout, $route, ejsResource, eventBus,
.controller('DashCtrl', function($scope, $rootScope, $http, $timeout, $route, ejsResource,
fields, dashboard) {

var _d = {
Expand Down
81 changes: 6 additions & 75 deletions js/services.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,86 +4,17 @@
'use strict';

angular.module('kibana.services', [])
.service('eventBus', function($rootScope) {
.service('fields', function() {

// An array of registed types
var _types = [];

this.broadcast = function(from,to,type,data) {
if(_.isUndefined(data)) {
data = from;
}

var packet = {
time: new Date(),
type: type,
from: from,
to: to,
data: data
};

if(_.contains(_types,'$kibana_debug')) {
$rootScope.$broadcast('$kibana_debug',packet);
}

$rootScope.$broadcast(type,{
from: from,
to: to,
data: data
});
};

// This sets up an $on listener that checks to see if the event (packet) is
// addressed to the scope in question and runs the registered function if it
// is.
this.register = function(scope,type,fn) {

_types = _.union(_types,[type]);

scope.$on(type,function(event,packet){
var _id = scope.$id;
var _to = packet.to;
var _from = packet.from;
var _type = packet.type;
var _time = packet.time;
var _group = (!(_.isUndefined(scope.panel))) ? scope.panel.group : ["NONE"];
// Save a reference to this
var self = this;

if(!(_.isArray(_to))) {
_to = [_to];
}
if(!(_.isArray(_group))) {
_group = [_group];
}
this.list = [];

// Transmit event only if the sender is not the receiver AND one of the following:
// 1) Receiver has group in _to 2) Receiver's $id is in _to
// 3) Event is addressed to ALL 4) Receiver is in ALL group
if((_.intersection(_to,_group).length > 0 ||
_.indexOf(_to,_id) > -1 ||
_.indexOf(_group,'ALL') > -1 ||
_.indexOf(_to,'ALL') > -1) &&
_from !== _id
) {
fn(event,packet.data,{time:_time,to:_to,from:_from,type:_type});
}
});
};
})
/*
Service: fields
Provides a global list of all seen fields for use in editor panels
*/
.factory('fields', function($rootScope) {
var fields = {
list : []
this.add_fields = function(f) {
self.list = _.union(f,self.list);
};

$rootScope.$on('fields', function(event,f) {
fields.list = _.union(f.data.all,fields.list);
});

return fields;

})
.service('kbnIndex',function($http) {

Expand Down
81 changes: 2 additions & 79 deletions panels/fields/module.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,12 @@

## Fields (DEPRECATED)


### Parameters
* style :: a hash containing css styles
* arrange :: the layout pf the panel 'horizontal' or 'vertical'
* micropanel_position :: where to place the micropanel in relation to the field

### Group Events
#### Recieves
* table_documents :: An object containing the documents in the table panel
#### Sends
* fields :: an object containing the sort order, existing fields and selected fields

*/

'use strict';

angular.module('kibana.fields', [])
.controller('fields', function($scope, eventBus, $timeout, dashboard, filterSrv) {
.controller('fields', function($scope, $timeout, dashboard, filterSrv) {

$scope.panelMeta = {
status : "Deprecated",
Expand All @@ -41,72 +29,7 @@ angular.module('kibana.fields', [])
_.defaults($scope.panel,_d);

$scope.init = function() {
$scope.Math = Math;
$scope.fields = [];
eventBus.register($scope,'fields', function(event, fields) {
$scope.panel.sort = _.clone(fields.sort);
$scope.fields = fields.all;
$scope.active = _.clone(fields.active);
});
eventBus.register($scope,'table_documents', function(event, docs) {
$scope.panel.query = docs.query;
$scope.docs = docs.docs;
$scope.index = docs.index;
});
eventBus.register($scope,"get_fields", function(event,id) {
eventBus.broadcast($scope.$id,$scope.panel.group,"selected_fields",$scope.active);
});
};

$scope.reload_list = function () {
var temp = _.clone($scope.fields);
$scope.fields = [];
$timeout(function(){
$scope.fields = temp;
},10);

};

$scope.toggle_micropanel = function(field) {
$scope.micropanel = {
field: field,
values : kbn.top_field_values($scope.docs,field,10),
related : kbn.get_related_fields($scope.docs,field),
count: _.countBy($scope.docs,function(doc){return _.contains(_.keys(doc),field);})['true']
};
};

$scope.toggle_sort = function() {
$scope.panel.sort[1] = $scope.panel.sort[1] === 'asc' ? 'desc' : 'asc';
};

$scope.toggle_field = function(field) {
if (_.indexOf($scope.active,field) > -1) {
$scope.active = _.without($scope.active,field);
} else {
$scope.active.push(field);
}
eventBus.broadcast($scope.$id,$scope.panel.group,"selected_fields",$scope.active);
};

$scope.build_search = function(field,value,mandate) {
var query;
if(_.isArray(value)) {
query = field+":(" + _.map(value,function(v){return "\""+v+"\"";}).join(",") + ")";
} else {
query = field+":"+angular.toJson(value);
}
filterSrv.set({type:'querystring',query:query,mandate:mandate});
dashboard.refresh();
};

$scope.fieldExists = function(field,mandate) {
filterSrv.set({type:'exists',field:field,mandate:mandate});
dashboard.refresh();
};

$scope.is_active = function(field) {
return _.indexOf($scope.active,field) > -1 ? ['label','label-info'] : '';
// Place holder until I remove this
};

});
4 changes: 2 additions & 2 deletions panels/histogram/module.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
'use strict';

angular.module('kibana.histogram', [])
.controller('histogram', function($scope, eventBus, querySrv, dashboard, filterSrv) {
.controller('histogram', function($scope, querySrv, dashboard, filterSrv) {

$scope.panelMeta = {
status : "Stable",
Expand Down Expand Up @@ -263,7 +263,7 @@ angular.module('kibana.histogram', [])
};

})
.directive('histogramChart', function(dashboard, eventBus, filterSrv, $rootScope) {
.directive('histogramChart', function(dashboard, filterSrv, $rootScope) {
return {
restrict: 'A',
template: '<div></div>',
Expand Down
12 changes: 4 additions & 8 deletions panels/table/module.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,13 @@
to fit the table, or if the table will scroll to fit the row (height)
* sortable :: Allow sorting?
* spyable :: Show the 'eye' icon that reveals the last ES query for this panel
### Group Events
#### Sends
* table_documents :: An array containing all of the documents in the table.
Only used by the fields panel so far.
#### Receives
* selected_fields :: An array of fields to show

*/

'use strict';

angular.module('kibana.table', [])
.controller('table', function($rootScope, $scope, eventBus, fields, querySrv, dashboard, filterSrv) {
.controller('table', function($rootScope, $scope, fields, querySrv, dashboard, filterSrv) {

$scope.panelMeta = {
status: "Stable",
Expand Down Expand Up @@ -214,8 +209,9 @@ angular.module('kibana.table', [])
return;
}

// This breaks, use $scope.data for this
$scope.all_fields = kbn.get_all_fields(_.pluck($scope.data,'_source'));
fields.add_fields($scope.all_fields);
console.log(fields);

// If we're not sorting in reverse chrono order, query every index for
// size*pages results
Expand Down