Added debug panel (not by default), added inspector link to pie and table
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
<div class="row-fluid" ng-controller="debug">
|
||||
<div class="row-fluid">
|
||||
<div class="span3">
|
||||
<h5>Length</h5>
|
||||
<input type="number" class="input-mini" ng-model="panel.size">
|
||||
</div>
|
||||
<div class="span3"><h6>Font Size</h6>
|
||||
<select class="input-small" ng-model="panel.style['font-size']" ng-options="f for f in ['6pt','7pt','8pt','9pt','10pt','12pt','14pt','16pt','18pt','20pt','24pt','28pt','32pt','36pt','42pt','48pt','52pt','60pt','72pt']"></select></span>
|
||||
</div>
|
||||
@@ -0,0 +1,27 @@
|
||||
<kibana-panel ng-controller='debug' ng-init='init()'>
|
||||
<table class="table-hover table table-condensed" ng-style="panel.style" style="height:{{panel.height || row.height}};overflow-y:auto;overflow-x:auto">
|
||||
<thead>
|
||||
<th style="white-space:nowrap" ng-repeat="th in ['timestamp','from','to','type']">
|
||||
{{th}}
|
||||
</th>
|
||||
</thead>
|
||||
<tbody ng-repeat="event in events" ng-class-odd="'odd'">
|
||||
<tr ng-click="toggle_details(event)">
|
||||
<td>{{event.header.time}}</td>
|
||||
<td>{{event.header.from}}</td>
|
||||
<td>{{event.header.to}}</td>
|
||||
<td>{{event.header.type}}</td>
|
||||
</tr>
|
||||
<tr ng-show="event.details">
|
||||
<td>
|
||||
<h6>Event header</h6>
|
||||
<pre ng-style="panel.style">{{event.header | json}}</pre>
|
||||
</td>
|
||||
<td colspan=1000>
|
||||
<h6>Event payload</h6>
|
||||
<pre ng-style="panel.style">{{event.data | json}}</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</kibana-panel>
|
||||
@@ -0,0 +1,34 @@
|
||||
angular.module('kibana.debug', [])
|
||||
.controller('debug', function($scope, eventBus) {
|
||||
|
||||
// Set and populate defaults
|
||||
var _d = {
|
||||
group : "ALL",
|
||||
style : {'font-size':'9pt'},
|
||||
size : 20
|
||||
}
|
||||
_.defaults($scope.panel,_d)
|
||||
|
||||
$scope.init = function () {
|
||||
|
||||
$scope.set_listeners($scope.panel.group)
|
||||
// Now that we're all setup, request the time from our group
|
||||
eventBus.broadcast($scope.$id,$scope.panel.group,"get_time")
|
||||
|
||||
$scope.events = []
|
||||
}
|
||||
|
||||
$scope.toggle_details = function(event) {
|
||||
event.details = event.details ? false : true;
|
||||
}
|
||||
|
||||
$scope.set_listeners = function(group) {
|
||||
eventBus.register($scope,'$kibana_debug',function(event,data,header) {
|
||||
if($scope.events.length >= $scope.panel.size)
|
||||
$scope.events = $scope.events.slice(0,$scope.panel.size-1)
|
||||
|
||||
$scope.events.unshift({header:header,data:data})
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
@@ -1,3 +1,7 @@
|
||||
<kibana-panel ng-controller='pie' ng-init="init()">
|
||||
<span style="position:absolute;right:0px;top:0px" class='panelextra pointer'>
|
||||
<i bs-modal="'partials/modal.html'" class="icon-eye-open"></i>
|
||||
</span>
|
||||
|
||||
<div pie params="{{panel}}" style="height:{{panel.height || row.height}};position:relative"></div>
|
||||
</kibana-panel>
|
||||
+22
-3
@@ -98,6 +98,7 @@ angular.module('kibana.pie', [])
|
||||
.facetFilter(ejs.QueryFilter(v))
|
||||
)
|
||||
})
|
||||
$scope.populate_modal(request);
|
||||
var results = request.doSearch();
|
||||
|
||||
// Populate scope when we have results
|
||||
@@ -118,7 +119,7 @@ angular.module('kibana.pie', [])
|
||||
});
|
||||
// If we don't have an array, assume its a term facet.
|
||||
} else if ($scope.panel.mode == "terms") {
|
||||
var results = request
|
||||
request = request
|
||||
.facet(ejs.TermsFacet('pie')
|
||||
.field($scope.panel.query.field || $scope.panel.default_field)
|
||||
.size($scope.panel['size'])
|
||||
@@ -131,7 +132,10 @@ angular.module('kibana.pie', [])
|
||||
.to($scope.time.to)
|
||||
.cache(false)
|
||||
)))).size(0)
|
||||
.doSearch();
|
||||
|
||||
$scope.populate_modal(request);
|
||||
|
||||
var results = request.doSearch();
|
||||
|
||||
// Populate scope when we have results
|
||||
results.then(function(results) {
|
||||
@@ -153,7 +157,7 @@ angular.module('kibana.pie', [])
|
||||
$scope.$emit('render');
|
||||
});
|
||||
} else {
|
||||
var results = request
|
||||
request = request
|
||||
.query(ejs.QueryStringQuery($scope.panel.query.query || '*'))
|
||||
.filter(ejs.RangeFilter($scope.time.field)
|
||||
.from($scope.time.from)
|
||||
@@ -161,6 +165,11 @@ angular.module('kibana.pie', [])
|
||||
.cache(false))
|
||||
.size(0)
|
||||
.doSearch();
|
||||
|
||||
$scope.populate_modal(request);
|
||||
|
||||
var results = request.doSearch();
|
||||
|
||||
results.then(function(results) {
|
||||
$scope.panel.loading = false;
|
||||
var complete = results.hits.total;
|
||||
@@ -173,6 +182,16 @@ angular.module('kibana.pie', [])
|
||||
}
|
||||
}
|
||||
|
||||
$scope.populate_modal = function(request) {
|
||||
$scope.modal = {
|
||||
title: "Pie Inspector",
|
||||
body : "<h5>Last Elasticsearch Query</h5><pre>"+
|
||||
'curl -XGET '+config.elasticsearch+'/'+$scope.panel.index+"/_search?pretty -d'\n"+
|
||||
angular.toJson(JSON.parse(request.toString()),true)+
|
||||
"'</pre>",
|
||||
}
|
||||
}
|
||||
|
||||
function set_time(time) {
|
||||
$scope.time = time;
|
||||
$scope.panel.index = _.isUndefined(time.index) ? $scope.panel.index : time.index
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
<kibana-panel ng-controller='table' ng-init='init()'>
|
||||
|
||||
<span style="position:absolute;right:0px;top:0px" class='panelextra pointer'>
|
||||
<i bs-modal="'partials/modal.html'" class="icon-eye-open"></i>
|
||||
</span>
|
||||
|
||||
<div style="height:{{panel.height || row.height}};overflow-y:auto;overflow-x:auto">
|
||||
<div class="row-fluid">
|
||||
<div class="span1 offset3" style="text-align:right">
|
||||
@@ -62,4 +67,4 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</kibana-panel>
|
||||
</kibana-panel>
|
||||
+16
-4
@@ -78,9 +78,8 @@ angular.module('kibana.table', [])
|
||||
return
|
||||
|
||||
$scope.panel.loading = true;
|
||||
var request = $scope.ejs.Request().indices($scope.panel.index);
|
||||
|
||||
var results = request
|
||||
var request = $scope.ejs.Request().indices($scope.panel.index)
|
||||
.query(ejs.FilteredQuery(
|
||||
ejs.QueryStringQuery($scope.panel.query || '*'),
|
||||
ejs.RangeFilter($scope.time.field)
|
||||
@@ -90,8 +89,11 @@ angular.module('kibana.table', [])
|
||||
)
|
||||
.size($scope.panel.size)
|
||||
.from($scope.panel.offset)
|
||||
.sort($scope.panel.sort[0],$scope.panel.sort[1])
|
||||
.doSearch();
|
||||
.sort($scope.panel.sort[0],$scope.panel.sort[1]);
|
||||
|
||||
$scope.populate_modal(request)
|
||||
|
||||
var results = request.doSearch();
|
||||
|
||||
// Populate scope when we have results
|
||||
results.then(function(results) {
|
||||
@@ -112,6 +114,16 @@ angular.module('kibana.table', [])
|
||||
});
|
||||
}
|
||||
|
||||
$scope.populate_modal = function(request) {
|
||||
$scope.modal = {
|
||||
title: "Table Inspector",
|
||||
body : "<h5>Last Elasticsearch Query</h5><pre>"+
|
||||
'curl -XGET '+config.elasticsearch+'/'+$scope.panel.index+"/_search?pretty -d'\n"+
|
||||
angular.toJson(JSON.parse(request.toString()),true)+
|
||||
"'</pre>",
|
||||
}
|
||||
}
|
||||
|
||||
$scope.without_kibana = function (row) {
|
||||
row = _.clone(row)
|
||||
delete row.kibana
|
||||
|
||||
Reference in New Issue
Block a user