Commit 98769abe by Johannes Edmeier

Ignore the statusInfo when filtering the application list

Since the healthIndicator for Hystrix lists all discovered services, it looks like the filtering is broken. So we need to ignore the status information when filtering the application list. fixes #438
parent a8355c92
......@@ -16,7 +16,7 @@
'use strict';
var angular = require('angular');
module.exports = function ($rootScope, $scope, $state, NotificationFilters) {
module.exports = function ($rootScope, $scope, $state, NotificationFilters, $filter) {
'ngInject';
$scope.notificationFilters = null;
$scope.notificationFiltersSupported = false;
......@@ -62,4 +62,14 @@ module.exports = function ($rootScope, $scope, $state, NotificationFilters) {
});
};
$scope.loadFilters();
$scope.doFilter = function (value) {
if (!$scope.searchFilter) {
return true;
}
var projection = angular.copy(value);
delete projection.statusInfo;
delete projection.group;
return $filter('filter')([projection], $scope.searchFilter).length > 0;
};
};
<div class="container-fluid">
<h3>Spring Boot applications</h3>
<div>
<input placeholder="Filter" class="input-xxlarge" type="search" ng-model="searchFilter" />
</div>
<table class="table application-list">
<thead>
<tr>
<th class="group-column" title="{{expandAll ? 'collapse' : 'expand'}} all" ng-click="toggleExpandAll()"><i class="fa" ng-class="{'fa-plus': !expandAll, 'fa-minus': expandAll}"></i></th>
<th class="name-column"><span class="sortable" ng-class="orderByCssClass('name')" ng-click="orderBy('name')">Application</span> / <span class="sortable"
ng-class="orderByCssClass('healthUrl')" ng-click="orderBy('healthUrl')">URL</span></th>
<th class="version-column"><span class="sortable" ng-class="orderByCssClass('info.build.version')" ng-click="orderBy('info.build.version')">Version</span></th>
<th class="info-column">Info</th>
<th class="status-column">Status</th>
</tr>
</thead>
<tbody>
<tr ng-repeat-start="application in filteredApps = (applicationGroups.applications|orderBy:order.column:order.descending|orderBy:'group.status':false|filter:searchFilter) track by application.id"
ng-show="application.group.applicationCount > 1 &amp;&amp; (application.group.collapsed || application.group.collapsed == undefined) &amp;&amp; ($first || filteredApps[$index - 1].group.name != application.group.name) &amp;&amp; (searchFilter == '' || searchFilter == undefined)">
<td class="group-column" ng-click="application.group.collapsed = false"><i class="fa fa-plus"></i></td>
<td class="name-column" ng-bind="application.group.name"></td>
<td class="version-column"><span ng-bind="application.group.version"></span></td>
<td colspan="2">
<span ng-repeat-start="(status, count) in application.group.statusCounter track by status" class="status-{{status}}" ng-bind="count + ' ' + status"></span>
<span ng-repeat-end ng-hide="$last"> / </span>
</td>
</tr>
<tr ng-repeat-end ng-show="(!application.group.collapsed &amp;&amp; application.group.collapsed != undefined ) || application.group.applicationCount == 1 || (searchFilter != '' &amp;&amp; searchFilter != undefined)">
<td class="group-column" ng-class="{'hidden': !($first || filteredApps[$index - 1].group.name != application.group.name) &amp;&amp; (searchFilter == '' || searchFilter == undefined) }"
rowspan="{{ (searchFilter != '' &amp;&amp; searchFilter != undefined) ? 1 : application.group.applicationCount }}"
ng-click="application.group.collapsed = application.group.applicationCount > 1"><i ng-show="application.group.applicationCount > 1 &amp;&amp; (searchFilter == '' || searchFilter == undefined)"
class="fa fa-minus"></i></td>
<td class="name-column">{{ application.name }} ({{ application.id }})<br/>
<span class="muted" ng-bind="application.serviceUrl || application.managementUrl || application.healthUrl"></span></td>
<td class="version-column" ng-bind="application.info.build.version || application.info.version"></td>
<td class="info-column scroll">
<sba-limited-text max-lines="3" bind-html="application.info | yaml | linkify:60"></sba-limited-text>
</td>
<td class="status-column">
<div>
<sba-status-info status-info="application.statusInfo"></sba-status-info>
<span ng-show="application.refreshing"><i class="fa fa-spinner fa-pulse fa-lg"></i></span>
</div>
<div>
<sba-notification-settings ng-show="notificationFilters" application="application" filters="notificationFilters" refresh-callback="loadFilters()"></sba-notification-settings>
<sba-btn-detail-views details-for="application"></sba-btn-detail-views>
<div class="btn-group" title="remove" ng-show="application.source == 'http-api'">
<a class="btn btn-danger" ng-click="remove(application)"><i class="fa fa-times"></i></a>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<h3>Spring Boot applications</h3>
<div>
<input placeholder="Filter" class="input-xxlarge" type="search" ng-model="searchFilter"/>
</div>
<table class="table application-list">
<thead>
<tr>
<th class="group-column" title="{{expandAll ? 'collapse' : 'expand'}} all" ng-click="toggleExpandAll()"><i
class="fa" ng-class="{'fa-plus': !expandAll, 'fa-minus': expandAll}"></i></th>
<th class="name-column"><span class="sortable" ng-class="orderByCssClass('name')"
ng-click="orderBy('name')">Application</span> / <span class="sortable"
ng-class="orderByCssClass('healthUrl')"
ng-click="orderBy('healthUrl')">URL</span>
</th>
<th class="version-column"><span class="sortable" ng-class="orderByCssClass('info.build.version')"
ng-click="orderBy('info.build.version')">Version</span></th>
<th class="info-column">Info</th>
<th class="status-column">Status</th>
</tr>
</thead>
<tbody>
<tr ng-repeat-start="application in filteredApps = (applicationGroups.applications|orderBy:order.column:order.descending|orderBy:'group.status':false|filter:doFilter) track by application.id"
ng-show="application.group.applicationCount > 1 &amp;&amp; (application.group.collapsed || application.group.collapsed == undefined) &amp;&amp; ($first || filteredApps[$index - 1].group.name != application.group.name) &amp;&amp; (searchFilter == '' || searchFilter == undefined)">
<td class="group-column" ng-click="application.group.collapsed = false"><i class="fa fa-plus"></i></td>
<td class="name-column" ng-bind="application.group.name"></td>
<td class="version-column"><span ng-bind="application.group.version"></span></td>
<td colspan="2">
<span ng-repeat-start="(status, count) in application.group.statusCounter track by status"
class="status-{{status}}" ng-bind="count + ' ' + status"></span>
<span ng-repeat-end ng-hide="$last"> / </span>
</td>
</tr>
<tr ng-repeat-end
ng-show="(!application.group.collapsed &amp;&amp; application.group.collapsed != undefined ) || application.group.applicationCount == 1 || (searchFilter != '' &amp;&amp; searchFilter != undefined)">
<td class="group-column"
ng-class="{'hidden': !($first || filteredApps[$index - 1].group.name != application.group.name) &amp;&amp; (searchFilter == '' || searchFilter == undefined) }"
rowspan="{{ (searchFilter != '' &amp;&amp; searchFilter != undefined) ? 1 : application.group.applicationCount }}"
ng-click="application.group.collapsed = application.group.applicationCount > 1"><i
ng-show="application.group.applicationCount > 1 &amp;&amp; (searchFilter == '' || searchFilter == undefined)"
class="fa fa-minus"></i></td>
<td class="name-column">{{ application.name }} ({{ application.id }})<br/>
<span class="muted"
ng-bind="application.serviceUrl || application.managementUrl || application.healthUrl"></span>
</td>
<td class="version-column" ng-bind="application.info.build.version || application.info.version"></td>
<td class="info-column scroll">
<sba-limited-text max-lines="3" bind-html="application.info | yaml | linkify:60"></sba-limited-text>
</td>
<td class="status-column">
<div>
<sba-status-info status-info="application.statusInfo"></sba-status-info>
<span ng-show="application.refreshing"><i class="fa fa-spinner fa-pulse fa-lg"></i></span>
</div>
<div>
<sba-notification-settings ng-show="notificationFilters" application="application"
filters="notificationFilters"
refresh-callback="loadFilters()"></sba-notification-settings>
<sba-btn-detail-views details-for="application"></sba-btn-detail-views>
<div class="btn-group" title="remove" ng-show="application.source == 'http-api'">
<a class="btn btn-danger" ng-click="remove(application)"><i class="fa fa-times"></i></a>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment