mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Refactored panel communication to use an angular service, started work on panel editing interface
This commit is contained in:
parent
085b688850
commit
ee65f81a2b
@ -51,4 +51,11 @@
|
|||||||
|
|
||||||
.tiny {
|
.tiny {
|
||||||
font-size: 50%;
|
font-size: 50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.remove:hover {
|
||||||
|
color: #A60000;
|
||||||
|
text-decoration: line-through;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typeahead { z-index: 1051; }
|
@ -45,7 +45,7 @@ var dashboards =
|
|||||||
index : "\"shakespeare\"",
|
index : "\"shakespeare\"",
|
||||||
refresh : {
|
refresh : {
|
||||||
enable : true,
|
enable : true,
|
||||||
interval: 30,
|
interval: 3,
|
||||||
min : 10
|
min : 10
|
||||||
},
|
},
|
||||||
timefield: '@timestamp',
|
timefield: '@timestamp',
|
||||||
@ -70,7 +70,7 @@ var dashboards =
|
|||||||
index : "\"shakespeare\"",
|
index : "\"shakespeare\"",
|
||||||
refresh : {
|
refresh : {
|
||||||
enable : true,
|
enable : true,
|
||||||
interval: 30,
|
interval: 3,
|
||||||
min : 10
|
min : 10
|
||||||
},
|
},
|
||||||
timefield: '@timestamp',
|
timefield: '@timestamp',
|
||||||
@ -208,6 +208,7 @@ var dashboards =
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
title : "Newest Lines",
|
title : "Newest Lines",
|
||||||
|
editable: true,
|
||||||
type : "table",
|
type : "table",
|
||||||
span : 6,
|
span : 6,
|
||||||
query : "*",
|
query : "*",
|
||||||
@ -221,6 +222,7 @@ var dashboards =
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: "Monkey Monitoring",
|
title: "Monkey Monitoring",
|
||||||
collapse: false,
|
collapse: false,
|
||||||
@ -260,5 +262,6 @@ var dashboards =
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
@ -12,9 +12,9 @@
|
|||||||
<title>Kibana Dashboard</title>
|
<title>Kibana Dashboard</title>
|
||||||
|
|
||||||
<link rel="stylesheet" href="common/css/normalize.min.css">
|
<link rel="stylesheet" href="common/css/normalize.min.css">
|
||||||
<link rel="stylesheet" href="common/css/main.css">
|
|
||||||
<link rel="stylesheet" href="common/css/bootstrap.min.css">
|
<link rel="stylesheet" href="common/css/bootstrap.min.css">
|
||||||
<link rel="stylesheet" href="common/css/bootstrap-responsive.min.css">
|
<link rel="stylesheet" href="common/css/bootstrap-responsive.min.css">
|
||||||
|
<link rel="stylesheet" href="common/css/main.css">
|
||||||
<link rel="stylesheet" href="common/css/elasticjs.css">
|
<link rel="stylesheet" href="common/css/elasticjs.css">
|
||||||
<link rel="stylesheet" href="common/css/timepicker.css">
|
<link rel="stylesheet" href="common/css/timepicker.css">
|
||||||
|
|
||||||
|
@ -4,9 +4,9 @@
|
|||||||
|
|
||||||
// Base modules
|
// Base modules
|
||||||
var modules = [
|
var modules = [
|
||||||
|
'kibana.services',
|
||||||
'kibana.controllers',
|
'kibana.controllers',
|
||||||
'kibana.filters',
|
'kibana.filters',
|
||||||
'kibana.services',
|
|
||||||
'kibana.directives',
|
'kibana.directives',
|
||||||
'elasticjs.service',
|
'elasticjs.service',
|
||||||
'$strap.directives',
|
'$strap.directives',
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
angular.module('kibana.controllers', [])
|
angular.module('kibana.controllers', [])
|
||||||
.controller('DashCtrl', function($scope, ejsResource) {
|
.controller('DashCtrl', function($scope, $rootScope, ejsResource) {
|
||||||
|
|
||||||
$scope.config = config;
|
$scope.config = config;
|
||||||
$scope.dashboards = dashboards
|
$scope.dashboards = dashboards
|
||||||
@ -14,7 +14,7 @@ angular.module('kibana.controllers', [])
|
|||||||
$scope.$broadcast('toggle_row',row)
|
$scope.$broadcast('toggle_row',row)
|
||||||
row.collapse = row.collapse ? false : true;
|
row.collapse = row.collapse ? false : true;
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,13 +12,35 @@ angular.module('kibana.directives', [])
|
|||||||
return (attrs.panel && scope.index) ? true : false;
|
return (attrs.panel && scope.index) ? true : false;
|
||||||
}, function (ready) {
|
}, function (ready) {
|
||||||
if (ready) {
|
if (ready) {
|
||||||
element.html($compile("<div "+attrs.panel+" params={{panel}} style='height:{{row.height}}'></div>")(scope))
|
element.html($compile("<div "+attrs.panel+" params={{panel}} "+
|
||||||
|
"style='height:{{row.height}}'></div>")(scope))
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
.directive('arrayJoin', function() {
|
||||||
|
return {
|
||||||
|
restrict: 'A',
|
||||||
|
require: 'ngModel',
|
||||||
|
link: function(scope, element, attr, ngModel) {
|
||||||
|
|
||||||
|
function split_array(text) {
|
||||||
|
return (text || '').split(',');
|
||||||
|
}
|
||||||
|
|
||||||
|
function join_array(text) {
|
||||||
|
if(_.isArray(text))
|
||||||
|
return (text || '').join(',');
|
||||||
|
else
|
||||||
|
return text
|
||||||
|
}
|
||||||
|
ngModel.$parsers.push(split_array);
|
||||||
|
ngModel.$formatters.push(join_array);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
})
|
||||||
.directive('upload', function(){
|
.directive('upload', function(){
|
||||||
return {
|
return {
|
||||||
restrict: 'A',
|
restrict: 'A',
|
||||||
|
@ -2,4 +2,38 @@
|
|||||||
/*global angular:true */
|
/*global angular:true */
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
angular.module('kibana.services', []);
|
angular.module('kibana.services', [])
|
||||||
|
.service('eventBus', function($rootScope) {
|
||||||
|
|
||||||
|
this.broadcast = function(from,to,type,data) {
|
||||||
|
if(_.isUndefined(data))
|
||||||
|
var data = from
|
||||||
|
|
||||||
|
$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) {
|
||||||
|
scope.$on(type,function(event,packet){
|
||||||
|
var _id = scope.$id;
|
||||||
|
var _to = packet.to;
|
||||||
|
var _from = packet.from;
|
||||||
|
|
||||||
|
if(!(_.isArray(_to)))
|
||||||
|
_to = [_to];
|
||||||
|
if(!(_.isArray(scope.panel.group)))
|
||||||
|
scope.panel.group = [scope.panel.group];
|
||||||
|
|
||||||
|
if(_.intersection(_to,scope.panel.group).length > 0 || _.indexOf(_to,_id) > -1) {
|
||||||
|
fn(event,packet.data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
angular.module('kibana.fields', [])
|
angular.module('kibana.fields', [])
|
||||||
.controller('fields', function($scope, $rootScope) {
|
.controller('fields', function($scope, eventBus) {
|
||||||
|
|
||||||
var _id = _.uniqueId();
|
var _id = _.uniqueId();
|
||||||
|
|
||||||
@ -12,7 +12,7 @@ angular.module('kibana.fields', [])
|
|||||||
|
|
||||||
$scope.init = function() {
|
$scope.init = function() {
|
||||||
$scope.fields = [];
|
$scope.fields = [];
|
||||||
$scope.$on($scope.panel.group+"-fields", function(event, fields) {
|
eventBus.register($scope,'fields', function(event, fields) {
|
||||||
$scope.panel.sort = _.clone(fields.sort);
|
$scope.panel.sort = _.clone(fields.sort);
|
||||||
$scope.fields = _.union(fields.all,$scope.fields);
|
$scope.fields = _.union(fields.all,$scope.fields);
|
||||||
$scope.active = _.clone(fields.active);
|
$scope.active = _.clone(fields.active);
|
||||||
@ -28,7 +28,8 @@ angular.module('kibana.fields', [])
|
|||||||
$scope.active = _.without($scope.active,field)
|
$scope.active = _.without($scope.active,field)
|
||||||
else
|
else
|
||||||
$scope.active.push(field)
|
$scope.active.push(field)
|
||||||
$rootScope.$broadcast($scope.panel.group+"-selected_fields",$scope.active)
|
|
||||||
|
eventBus.broadcast($scope.$id,$scope.panel.group,"selected_fields",$scope.active)
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.is_active = function(field) {
|
$scope.is_active = function(field) {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
angular.module('kibana.histogram', [])
|
angular.module('kibana.histogram', [])
|
||||||
.controller('histogram', function($scope, $rootScope) {
|
.controller('histogram', function($scope, eventBus) {
|
||||||
|
|
||||||
var _id = _.uniqueId();
|
var _id = _.uniqueId();
|
||||||
|
|
||||||
@ -15,14 +15,13 @@ angular.module('kibana.histogram', [])
|
|||||||
_.defaults($scope.panel,_d)
|
_.defaults($scope.panel,_d)
|
||||||
|
|
||||||
$scope.init = function() {
|
$scope.init = function() {
|
||||||
$scope.$on(_id+"-time", function(event,time){set_time(time)});
|
eventBus.register($scope,'time', function(event,time){set_time(time)});
|
||||||
$scope.$on($scope.panel.group+"-time", function(event,time){set_time(time)});
|
eventBus.register($scope,'query', function(event, query) {
|
||||||
$scope.$on($scope.panel.group+"-query", function(event, query) {
|
|
||||||
$scope.panel.query[0].query = query;
|
$scope.panel.query[0].query = query;
|
||||||
$scope.get_data();
|
$scope.get_data();
|
||||||
});
|
});
|
||||||
// Now that we're all setup, request the time from our group
|
// Now that we're all setup, request the time from our group
|
||||||
$rootScope.$broadcast($scope.panel.group+"-get_time",_id)
|
eventBus.broadcast($scope.$id,$scope.panel.group,'get_time')
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.get_data = function() {
|
$scope.get_data = function() {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
angular.module('kibana.hits', [])
|
angular.module('kibana.hits', [])
|
||||||
.controller('hits', function($scope, $rootScope, $location) {
|
.controller('hits', function($scope, eventBus) {
|
||||||
|
|
||||||
var _id = _.uniqueId();
|
var _id = _.uniqueId();
|
||||||
|
|
||||||
@ -12,15 +12,13 @@ angular.module('kibana.hits', [])
|
|||||||
_.defaults($scope.panel,_d)
|
_.defaults($scope.panel,_d)
|
||||||
|
|
||||||
$scope.init = function () {
|
$scope.init = function () {
|
||||||
$scope.$on(_id+"-time", function(event,time){set_time(time)});
|
eventBus.register($scope,'time', function(event,time){set_time(time)});
|
||||||
$scope.$on($scope.panel.group+"-time", function(event,time){set_time(time)});
|
eventBus.register($scope,'query', function(event, query) {
|
||||||
$scope.$on($scope.panel.group+"-query", function(event, query) {
|
|
||||||
$scope.panel.query = query;
|
$scope.panel.query = query;
|
||||||
$scope.get_data();
|
$scope.get_data();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Now that we're all setup, request the time from our group
|
// Now that we're all setup, request the time from our group
|
||||||
$rootScope.$broadcast($scope.panel.group+"-get_time",_id)
|
eventBus.broadcast($scope.$id,$scope.panel.group,'get_time')
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.get_data = function() {
|
$scope.get_data = function() {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
angular.module('kibana.map', [])
|
angular.module('kibana.map', [])
|
||||||
.controller('map', function($scope, $rootScope) {
|
.controller('map', function($scope, eventBus) {
|
||||||
|
|
||||||
var _id = _.uniqueId();
|
var _id = _.uniqueId();
|
||||||
|
|
||||||
@ -15,14 +15,13 @@ angular.module('kibana.map', [])
|
|||||||
_.defaults($scope.panel,_d)
|
_.defaults($scope.panel,_d)
|
||||||
|
|
||||||
$scope.init = function() {
|
$scope.init = function() {
|
||||||
$scope.$on(_id+"-time", function(event,time){set_time(time)});
|
eventBus.register($scope,'time', function(event,time){set_time(time)});
|
||||||
$scope.$on($scope.panel.group+"-time", function(event,time){set_time(time)});
|
eventBus.register($scope,'query', function(event, query) {
|
||||||
$scope.$on($scope.panel.group+"-query", function(event, query) {
|
|
||||||
$scope.panel.query = query;
|
$scope.panel.query = query;
|
||||||
$scope.get_data();
|
$scope.get_data();
|
||||||
});
|
});
|
||||||
// Now that we're all setup, request the time from our group
|
// Now that we're all setup, request the time from our group
|
||||||
$rootScope.$broadcast($scope.panel.group+"-get_time",_id)
|
eventBus.broadcast($scope.$id,$scope.panel.group,'get_time')
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.get_data = function() {
|
$scope.get_data = function() {
|
||||||
|
@ -2,7 +2,7 @@ labjs = labjs.script("common/lib/panels/jquery.flot.js")
|
|||||||
.script("common/lib/panels/jquery.flot.pie.js")
|
.script("common/lib/panels/jquery.flot.pie.js")
|
||||||
|
|
||||||
angular.module('kibana.pie', [])
|
angular.module('kibana.pie', [])
|
||||||
.controller('pie', function($scope, $rootScope) {
|
.controller('pie', function($scope, eventBus) {
|
||||||
|
|
||||||
var _id = _.uniqueId();
|
var _id = _.uniqueId();
|
||||||
|
|
||||||
@ -20,16 +20,15 @@ angular.module('kibana.pie', [])
|
|||||||
_.defaults($scope.panel,_d)
|
_.defaults($scope.panel,_d)
|
||||||
|
|
||||||
$scope.init = function() {
|
$scope.init = function() {
|
||||||
$scope.$on(_id+"-time", function(event,time){set_time(time)});
|
eventBus.register($scope,'time', function(event,time){set_time(time)});
|
||||||
$scope.$on($scope.panel.group+"-time", function(event,time){set_time(time)});
|
|
||||||
if(!(_.isArray($scope.panel.query))) {
|
if(!(_.isArray($scope.panel.query))) {
|
||||||
$scope.$on($scope.panel.group+"-query", function(event, query) {
|
eventBus.register($scope,'query', function(event, query) {
|
||||||
$scope.panel.query.query = query;
|
$scope.panel.query.query = query;
|
||||||
$scope.get_data();
|
$scope.get_data();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// Now that we're all setup, request the time from our group
|
// Now that we're all setup, request the time from our group
|
||||||
$rootScope.$broadcast($scope.panel.group+"-get_time",_id)
|
eventBus.broadcast($scope.$id,$scope.panel.group,'get_time')
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.get_data = function() {
|
$scope.get_data = function() {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
angular.module('kibana.sort', [])
|
angular.module('kibana.sort', [])
|
||||||
.controller('sort', function($scope, $rootScope) {
|
.controller('sort', function($scope, eventBus) {
|
||||||
|
|
||||||
var _id = _.uniqueId();
|
var _id = _.uniqueId();
|
||||||
|
|
||||||
@ -15,19 +15,21 @@ angular.module('kibana.sort', [])
|
|||||||
|
|
||||||
$scope.init = function() {
|
$scope.init = function() {
|
||||||
$scope.fields = [];
|
$scope.fields = [];
|
||||||
$scope.$on($scope.panel.group+"-fields", function(event, fields) {
|
eventBus.register($scope,'fields',function(event, fields) {
|
||||||
$scope.panel.sort = _.clone(fields.sort);
|
$scope.panel.sort = _.clone(fields.sort);
|
||||||
$scope.fields = _.union(fields.all,$scope.fields);
|
$scope.fields = _.union(fields.all,$scope.fields);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.set_sort = function() {
|
$scope.set_sort = function() {
|
||||||
$rootScope.$broadcast($scope.panel.group+"-sort",$scope.panel.sort)
|
console.log($scope)
|
||||||
|
eventBus.broadcast($scope.$id,$scope.panel.group,"sort",$scope.panel.sort)
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.toggle_sort = function() {
|
$scope.toggle_sort = function() {
|
||||||
$scope.panel.sort[1] = $scope.panel.sort[1] == 'asc' ? 'desc' : 'asc';
|
$scope.panel.sort[1] = $scope.panel.sort[1] == 'asc' ? 'desc' : 'asc';
|
||||||
$rootScope.$broadcast($scope.panel.group+"-sort",$scope.panel.sort)
|
$scope.set_sort();
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.init();
|
$scope.init();
|
||||||
})
|
})
|
@ -1,5 +1,5 @@
|
|||||||
angular.module('kibana.stringquery', [])
|
angular.module('kibana.stringquery', [])
|
||||||
.controller('stringquery', function($scope, $rootScope) {
|
.controller('stringquery', function($scope, eventBus) {
|
||||||
|
|
||||||
var _id = _.uniqueId();
|
var _id = _.uniqueId();
|
||||||
|
|
||||||
@ -18,9 +18,7 @@ angular.module('kibana.stringquery', [])
|
|||||||
|
|
||||||
$scope.init = function() {
|
$scope.init = function() {
|
||||||
$scope.send_query = function(query) {
|
$scope.send_query = function(query) {
|
||||||
_.each(_groups,function(group) {
|
eventBus.broadcast($scope.$id,$scope.panel.group,'query',query)
|
||||||
$rootScope.$broadcast(group+"-query", query)
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$scope.init();
|
$scope.init();
|
||||||
|
30
panels/table/editor.html
Normal file
30
panels/table/editor.html
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
|
<h3>{{panel.title}}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<h4>Panel Settings</h4>
|
||||||
|
<form class="form-inline">
|
||||||
|
<label>Span</label> <input type="number" class="input-mini" ng-model="panel.span"><br>
|
||||||
|
<label class="checkbox"> Editable <input type="checkbox" ng-model="panel.editable" ng-checked="panel.editable"></label>
|
||||||
|
</form>
|
||||||
|
<label>Group(s)</label><input array-join type="text" class="input-large" ng-model='panel.group'></input> <small>Comma seperated</small>
|
||||||
|
<div class="row-fluid">
|
||||||
|
|
||||||
|
<div class="span4">
|
||||||
|
<form class="input-append">
|
||||||
|
<h4>Add field</h4>
|
||||||
|
<input bs-typeahead="all_fields" 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>
|
||||||
|
<div class="span8">
|
||||||
|
<h4>Selected fields <small>Click to a field to remove it</small></h4>
|
||||||
|
<span ng-click="toggle_field(field)" ng-repeat="field in panel.fields" class="remove pointer">{{field}} </span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn" ng-click="dismiss()">Close</button>
|
||||||
|
<button class="btn btn-primary" ng-click="dismiss()">Save changes</button>
|
||||||
|
</div>
|
@ -1,5 +1,5 @@
|
|||||||
<div ng-controller='table'>
|
<div ng-controller='table'>
|
||||||
<h4>{{panel.title}}</h4>
|
<h4>{{panel.title}} <small class="pointer" bs-modal="'panels/table/editor.html'" ng-hide="!panel.editable"><i class="icon-edit"></i></small></h4>
|
||||||
<div style="height:{{row.height}};overflow-y:auto;overflow-x:auto">
|
<div style="height:{{row.height}};overflow-y:auto;overflow-x:auto">
|
||||||
<table class="table table-condensed table-striped" ng-style="panel.style">
|
<table class="table table-condensed table-striped" ng-style="panel.style">
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
angular.module('kibana.table', [])
|
angular.module('kibana.table', [])
|
||||||
.controller('table', function($scope, $rootScope, $location) {
|
.controller('table', function($scope, eventBus) {
|
||||||
|
|
||||||
var _id = _.uniqueId();
|
var _id = _.uniqueId();
|
||||||
|
|
||||||
@ -15,25 +15,29 @@ angular.module('kibana.table', [])
|
|||||||
_.defaults($scope.panel,_d)
|
_.defaults($scope.panel,_d)
|
||||||
|
|
||||||
$scope.init = function () {
|
$scope.init = function () {
|
||||||
$scope.$on(_id+"-time", function(event,time){set_time(time)});
|
|
||||||
$scope.$on($scope.panel.group+"-time", function(event,time){set_time(time)});
|
|
||||||
$scope.$on($scope.panel.group+"-query", function(event, query) {
|
|
||||||
console.log($scope.panel)
|
|
||||||
$scope.panel.query = query;
|
|
||||||
$scope.get_data();
|
|
||||||
});
|
|
||||||
$scope.$on($scope.panel.group+"-sort", function(event,sort){
|
|
||||||
$scope.panel.sort = _.clone(sort);
|
|
||||||
});
|
|
||||||
$scope.$on($scope.panel.group+"-selected_fields", function(event, fields) {
|
|
||||||
$scope.panel.fields = _.clone(fields)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
$scope.set_listeners($scope.panel.group)
|
||||||
$scope.$watch(function() {
|
$scope.$watch(function() {
|
||||||
return angular.toJson($scope.panel.sort)
|
return angular.toJson($scope.panel.sort)
|
||||||
}, function(){$scope.get_data()});
|
}, function(){$scope.get_data()});
|
||||||
// Now that we're all setup, request the time from our group
|
// Now that we're all setup, request the time from our group
|
||||||
$rootScope.$broadcast($scope.panel.group+"-get_time",_id)
|
eventBus.broadcast($scope.$id,$scope.panel.group,"get_time")
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.set_listeners = function(group) {
|
||||||
|
eventBus.register($scope,'time',function(event,time) {
|
||||||
|
set_time(time)
|
||||||
|
});
|
||||||
|
eventBus.register($scope,'query',function(event,query) {
|
||||||
|
$scope.panel.query = query;
|
||||||
|
$scope.get_data();
|
||||||
|
});
|
||||||
|
eventBus.register($scope,'sort', function(event,sort){
|
||||||
|
$scope.panel.sort = _.clone(sort);
|
||||||
|
});
|
||||||
|
eventBus.register($scope,'selected_fields', function(event, fields) {
|
||||||
|
$scope.panel.fields = _.clone(fields)
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.set_sort = function(field) {
|
$scope.set_sort = function(field) {
|
||||||
@ -43,6 +47,14 @@ angular.module('kibana.table', [])
|
|||||||
$scope.panel.sort[0] = field;
|
$scope.panel.sort[0] = field;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$scope.toggle_field = function(field) {
|
||||||
|
if (_.indexOf($scope.panel.fields,field) > -1)
|
||||||
|
$scope.panel.fields = _.without($scope.panel.fields,field)
|
||||||
|
else
|
||||||
|
$scope.panel.fields.push(field)
|
||||||
|
broadcast_fields();
|
||||||
|
}
|
||||||
|
|
||||||
$scope.get_data = function() {
|
$scope.get_data = function() {
|
||||||
// Make sure we have everything for the request to complete
|
// Make sure we have everything for the request to complete
|
||||||
if(_.isUndefined($scope.panel.index) || _.isUndefined($scope.panel.time))
|
if(_.isUndefined($scope.panel.index) || _.isUndefined($scope.panel.time))
|
||||||
@ -71,17 +83,9 @@ angular.module('kibana.table', [])
|
|||||||
$scope.panel.error = false;
|
$scope.panel.error = false;
|
||||||
$scope.hits = results.hits.total;
|
$scope.hits = results.hits.total;
|
||||||
$scope.data = results.hits.hits;
|
$scope.data = results.hits.hits;
|
||||||
|
$scope.all_fields = get_all_fields(results);
|
||||||
|
|
||||||
// Broadcast a list of all fields. Note that receivers of field array
|
broadcast_fields();
|
||||||
// events should be able to receive from multiple sources, merge, dedupe
|
|
||||||
// and sort on the fly.
|
|
||||||
if (!(_.isUndefined($scope.panel.group)))
|
|
||||||
$rootScope.$broadcast(
|
|
||||||
$scope.panel.group+"-fields", {
|
|
||||||
all : get_all_fields(results),
|
|
||||||
sort : $scope.panel.sort,
|
|
||||||
active: $scope.panel.fields
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,6 +93,17 @@ angular.module('kibana.table', [])
|
|||||||
console.log(field,dir)
|
console.log(field,dir)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Broadcast a list of all fields. Note that receivers of field array
|
||||||
|
// events should be able to receive from multiple sources, merge, dedupe
|
||||||
|
// and sort on the fly if needed.
|
||||||
|
function broadcast_fields() {
|
||||||
|
eventBus.broadcast($scope.$id,$scope.panel.group,"fields", {
|
||||||
|
all : $scope.all_fields,
|
||||||
|
sort : $scope.panel.sort,
|
||||||
|
active: $scope.panel.fields
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function set_time(time) {
|
function set_time(time) {
|
||||||
$scope.panel.time = time;
|
$scope.panel.time = time;
|
||||||
$scope.panel.index = _.isUndefined(time.index) ? $scope.panel.index : time.index
|
$scope.panel.index = _.isUndefined(time.index) ? $scope.panel.index : time.index
|
||||||
|
@ -24,7 +24,7 @@ a pattern
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
angular.module('kibana.timepicker', [])
|
angular.module('kibana.timepicker', [])
|
||||||
.controller('timepicker', function($scope, $rootScope, $timeout, $http) {
|
.controller('timepicker', function($scope, eventBus, $timeout, $http) {
|
||||||
|
|
||||||
var _id = _.uniqueId();
|
var _id = _.uniqueId();
|
||||||
|
|
||||||
@ -78,10 +78,8 @@ angular.module('kibana.timepicker', [])
|
|||||||
// In the case that a panel is not ready to receive a time event, it may
|
// In the case that a panel is not ready to receive a time event, it may
|
||||||
// request one be sent by broadcasting a 'get_time' with its _id to its group
|
// request one be sent by broadcasting a 'get_time' with its _id to its group
|
||||||
// This panel can handle multiple groups
|
// This panel can handle multiple groups
|
||||||
_.each(_groups,function(group){
|
eventBus.register($scope,"get_time", function(event,id) {
|
||||||
$scope.$on(group+"-get_time", function(event,id) {
|
eventBus.broadcast($scope.$id,id,'time',$scope.time)
|
||||||
$rootScope.$broadcast(id+"-time", $scope.time)
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$scope.$watch('panel.refresh.enable', function() {$scope.refresh()});
|
$scope.$watch('panel.refresh.enable', function() {$scope.refresh()});
|
||||||
@ -175,9 +173,7 @@ angular.module('kibana.timepicker', [])
|
|||||||
indices($scope.time.from,$scope.time.to).then(function (p) {
|
indices($scope.time.from,$scope.time.to).then(function (p) {
|
||||||
$scope.time.index = p.join();
|
$scope.time.index = p.join();
|
||||||
// Broadcast time
|
// Broadcast time
|
||||||
_.each(_groups,function(group){
|
eventBus.broadcast($scope.$id,$scope.panel.group,'time',$scope.time)
|
||||||
$rootScope.$broadcast(group+"-time", $scope.time)
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Update panel's string representation of the time object
|
// Update panel's string representation of the time object
|
||||||
|
Loading…
Reference in New Issue
Block a user