mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
Mute table on stale rows, add master indication
This commit is contained in:
parent
ce01f7d5d0
commit
ee0f58239b
3 changed files with 38 additions and 11 deletions
|
@ -5,7 +5,7 @@ module.exports = function (grunt) {
|
|||
var config = {
|
||||
pkg: grunt.file.readJSON('package.json'),
|
||||
kibanaCheckoutDir: './kibana/vendor/kibana',
|
||||
kibanaRevision: 'marvel',
|
||||
kibanaRevision: 'master',
|
||||
agentDir: 'agent',
|
||||
buildDir: 'build',
|
||||
packageDir: 'build/packages',
|
||||
|
|
|
@ -32,6 +32,9 @@
|
|||
height: 10px;
|
||||
width: 50px;
|
||||
}
|
||||
.marvel-muted .mutable {
|
||||
opacity: 0.3;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="pull-left marvel-header marvel-table" ng-show="rows.length > 0 || panel.rowFilter">
|
||||
|
@ -58,17 +61,21 @@
|
|||
<i ng-show='metric.field == panel.sort[0]' class="pointer link" ng-class="{'icon-chevron-up': panel.sort[1] == 'asc','icon-chevron-down': panel.sort[1] == 'desc'}"></i>
|
||||
</th>
|
||||
</thead>
|
||||
<tr ng-repeat="row in rows" >
|
||||
<tr ng-repeat="row in rows" ng-class="{'marvel-muted':!row.alive}">
|
||||
<td>
|
||||
<div>
|
||||
<label class="checkbox" ng-class="{'text-warning':!row.alive}">
|
||||
<input type="checkbox" ng-model="row.selected" ng-checked="row.selected">
|
||||
<span class="pointer" ng-click="rowClick(row)">{{row.display_name}} <i bs-tooltip="'No report has been received for more than '+staleSeconds+' seconds'" ng-show="!row.alive" class="icon-exclamation-sign"></i></span>
|
||||
<span class="pointer" ng-click="rowClick(row)">
|
||||
{{row.display_name}}
|
||||
<i bs-tooltip="'No report has been received for more than '+staleSeconds+' seconds'" ng-show="!row.alive" class="icon-exclamation-sign"></i>
|
||||
<i bs-tooltip="'This node is master'" ng-show="row.master" class="icon-star"></i>
|
||||
</span>
|
||||
<div class="marvel-persistent-name pointer" ng-hide="row.id == row.display_name" ng-click="rowClick(row)">{{row.id}}</div>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
<td ng-repeat="metric in panel.metrics" ng-class="alertClass(row[metric.field].alert_level)">
|
||||
<td ng-repeat="metric in panel.metrics" class="mutable" ng-class="alertClass(row[metric.field].alert_level)">
|
||||
<div class="marvel-mean pointer" ng-click="rowClick(row,metric)">
|
||||
<span bo-text="(_.isNull(row[metric.field].mean)?'n/a':row[metric.field].mean) | metric_format:metric"></span>
|
||||
<br>
|
||||
|
@ -97,16 +104,18 @@
|
|||
<i ng-show='metric.field == panel.sort[0]' class="pointer link" ng-class="{'icon-chevron-up': panel.sort[1] == 'asc','icon-chevron-down': panel.sort[1] == 'desc'}"></i>
|
||||
</th>
|
||||
</thead>
|
||||
<tr ng-repeat="row in rows">
|
||||
<tr ng-repeat="row in rows" ng-class="{'marvel-muted':!row.alive}">
|
||||
<td>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" ng-model="row.selected" ng-checked="row.selected">
|
||||
</label>
|
||||
<span class="pointer" ng-click="rowClick(row)">{{ row.id }}</span>
|
||||
<i bs-tooltip="'No report has been received for more than '+staleSeconds+' seconds'" ng-show="!row.alive" class="icon-exclamation-sign"></i>
|
||||
<i bs-tooltip="'This node is master'" ng-show="row.master" class="icon-star"></i>
|
||||
</div>
|
||||
</td>
|
||||
<td ng-repeat="metric in panel.metrics" ng-class="alertClass(row[metric.field].alert_level)">
|
||||
<td ng-repeat="metric in panel.metrics" ng-class="alertClass(row[metric.field].alert_level)" class="mutable">
|
||||
<div class="pointer" ng-click="rowClick(row,metric)">
|
||||
<span bo-text="(_.isNull(row[metric.field].mean)?'n/a':row[metric.field].mean) | metric_format:metric"></span>
|
||||
|
||||
|
|
|
@ -349,17 +349,15 @@ define([
|
|||
|
||||
filter.must($scope.get_mode_filter()).must($scope.ejs.RangeFilter('@timestamp').from(to + "-10m/m").to(to + "/m"));
|
||||
|
||||
request = $scope.ejs.Request().indices(dashboard.indices).size(0).searchType("count");
|
||||
request = $scope.ejs.Request().indices(dashboard.indices).size(10);
|
||||
request.query($scope.ejs.FilteredQuery($scope.ejs.MatchAllQuery(), filter));
|
||||
|
||||
|
||||
// timestamp facet to give us the proper time ranges for each node
|
||||
request.facet($scope.ejs.TermStatsFacet("timestamp")
|
||||
.keyField($scope.panel.persistent_field).valueField("@timestamp")
|
||||
.order('term')
|
||||
.size(2000));
|
||||
|
||||
|
||||
_.each($scope.panel.metrics, function (m) {
|
||||
request.facet($scope.ejs.TermStatsFacet(m.field)
|
||||
.keyField($scope.panel.persistent_field).valueField(m.field)
|
||||
|
@ -469,17 +467,23 @@ define([
|
|||
$scope.ejs.TermQuery($scope.panel.persistent_field, s.id)
|
||||
)
|
||||
);
|
||||
rowRequest.size(1).fields(_.unique([ stripRaw($scope.panel.display_field), stripRaw($scope.panel.persistent_field)]));
|
||||
rowRequest.size(1).fields(_.unique(
|
||||
[ stripRaw($scope.panel.display_field), stripRaw($scope.panel.persistent_field),'node.master']
|
||||
));
|
||||
|
||||
rowRequest.sort("@timestamp", "desc");
|
||||
|
||||
mrequest.requests(rowRequest);
|
||||
});
|
||||
|
||||
mrequest.doSearch(function (r) {
|
||||
|
||||
esVersion.is('>=1.0.0.RC1').then(function(version) {
|
||||
var
|
||||
hit,
|
||||
display_name,
|
||||
persistent_name;
|
||||
persistent_name,
|
||||
master;
|
||||
|
||||
_.each(r.responses, function (response) {
|
||||
if (response.hits.hits.length === 0) {
|
||||
|
@ -490,22 +494,36 @@ define([
|
|||
if (version) {
|
||||
display_name = (hit.fields[stripRaw($scope.panel.display_field)] || [ undefined ])[0];
|
||||
persistent_name = (hit.fields[stripRaw($scope.panel.persistent_field)] || [ undefined] )[0];
|
||||
master = (hit.fields['node.master'] || [ undefined ])[0];
|
||||
}
|
||||
else {
|
||||
display_name = hit.fields[stripRaw($scope.panel.display_field)];
|
||||
persistent_name = hit.fields[stripRaw($scope.panel.persistent_field)];
|
||||
master = hit.fields['node.master'];
|
||||
}
|
||||
(newData[persistent_name] || {}).display_name = display_name;
|
||||
newData[persistent_name].master = master;
|
||||
});
|
||||
$scope._register_data_end();
|
||||
$scope.select_display_data_and_enrich(newData);
|
||||
});
|
||||
|
||||
/*
|
||||
newData.marvelMeta = {
|
||||
masterCount: _.filter(newData,'master').length
|
||||
};
|
||||
*/
|
||||
|
||||
}, $scope._register_data_end);
|
||||
}, $scope._register_data_end);
|
||||
|
||||
};
|
||||
|
||||
function applyNewData(rows, data) {
|
||||
$scope.meta = {
|
||||
masterCount: _.filter(data,'master').length
|
||||
};
|
||||
|
||||
$scope.rows = rows;
|
||||
$scope.data = data;
|
||||
$scope.updateUIFeaturesBasedOnData();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue