Skip to content

Commit a8e0cf5

Browse files
rhamiltof0x11
authored andcommittedMar 26, 2018
Replacing empty tables with empty state message
Fixes openshift#109 Replaces openshift#497 HACK DAY!
1 parent d50f33e commit a8e0cf5

25 files changed

+860
-449
lines changed
 

Diff for: ‎app/scripts/controllers/builds.js

+3-13
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ angular.module('openshiftConsole')
4444
var isPipeline = $filter('isJenkinsPipelineStrategy');
4545

4646
watches.push(DataService.watch(buildsVersion, context, function(builds) {
47+
$scope.buildsLoaded = true;
4748
// Filter out pipeline builds, which have a separate page.
4849
$scope.builds = _.omitBy(builds.by("metadata.name"), isPipeline);
49-
$scope.emptyMessage = "No builds to show";
5050
associateBuildsToBuildConfig();
5151
LabelFilter.addLabelSuggestionsFromResources($scope.builds, $scope.labelSuggestions);
5252

@@ -114,19 +114,9 @@ angular.module('openshiftConsole')
114114
});
115115
}
116116

117-
function updateFilterWarning() {
117+
function updateFilterMessage() {
118118
var visibleBuilds = _.omitBy($scope.latestByConfig, _.isNull);
119-
if (!LabelFilter.getLabelSelector().isEmpty() &&
120-
_.isEmpty($scope.buildConfigs) &&
121-
_.isEmpty(visibleBuilds)) {
122-
$scope.alerts["builds"] = {
123-
type: "warning",
124-
details: "The active filters are hiding all builds."
125-
};
126-
}
127-
else {
128-
delete $scope.alerts["builds"];
129-
}
119+
$scope.filterWithZeroResults = !LabelFilter.getLabelSelector().isEmpty() && _.isEmpty($scope.buildConfigs) && _.isEmpty(visibleBuilds);
130120
}
131121

132122
LabelFilter.onActiveFiltersChanged(function(labelSelector) {

Diff for: ‎app/scripts/controllers/configMaps.js

+3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ angular.module('openshiftConsole')
1919
$scope.loaded = false;
2020
$scope.labelSuggestions = {};
2121
$scope.configMapsVersion = APIService.getPreferredVersion('configmaps');
22+
$scope.clearFilter = function () {
23+
LabelFilter.clear();
24+
};
2225
var watches = [];
2326
var configMaps;
2427

Diff for: ‎app/scripts/controllers/images.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,14 @@ angular.module('openshiftConsole')
2929

3030
var imageStreamsVersion = APIService.getPreferredVersion('imagestreams');
3131

32-
var imageStreamsVersion = APIService.getPreferredVersion('imagestreams');
33-
3432
var watches = [];
3533

3634
ProjectsService
3735
.get($routeParams.project)
3836
.then(_.spread(function(project, context) {
3937
$scope.project = project;
4038
watches.push(DataService.watch(imageStreamsVersion, context, function(imageStreams) {
39+
$scope.imageStreamsLoaded = true;
4140
$scope.unfilteredImageStreams = imageStreams.by("metadata.name");
4241
LabelFilter.addLabelSuggestionsFromResources($scope.unfilteredImageStreams, $scope.labelSuggestions);
4342
LabelFilter.setLabelSuggestions($scope.labelSuggestions);

Diff for: ‎app/scripts/controllers/secrets.js

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ angular.module('openshiftConsole')
1111
.controller('SecretsController', function ($routeParams, $scope, DataService, ProjectsService) {
1212
$scope.projectName = $routeParams.project;
1313
$scope.secretsByType = {};
14-
var watches = [];
1514

1615
ProjectsService
1716
.get($routeParams.project)

Diff for: ‎app/scripts/controllers/serviceInstances.js

+8-15
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,15 @@ angular.module('openshiftConsole')
1111
LabelFilter,
1212
Logger,
1313
ProjectsService) {
14-
$scope.alerts = {};
1514
$scope.bindingsByInstanceRef = {};
16-
$scope.emptyMessage = "Loading...";
1715
$scope.labelSuggestions = {};
1816
$scope.projectName = $routeParams.project;
1917
$scope.serviceClasses = {};
2018
$scope.serviceInstances = {};
2119
$scope.unfilteredServiceInstances = {};
20+
$scope.clearFilter = function() {
21+
LabelFilter.clear();
22+
};
2223

2324
var watches = [];
2425

@@ -49,12 +50,12 @@ angular.module('openshiftConsole')
4950

5051
var serviceInstancesVersion = APIService.getPreferredVersion('serviceinstances');
5152
watches.push(DataService.watch(serviceInstancesVersion, context, function(serviceInstances) {
52-
$scope.emptyMessage = "No provisioned services to show";
53+
$scope.serviceInstancesLoaded = true;
5354
$scope.unfilteredServiceInstances = serviceInstances.by('metadata.name');
5455

5556
sortServiceInstances();
5657
updateFilter();
57-
updateFilterWarning();
58+
updateFilterMessage();
5859

5960
LabelFilter.addLabelSuggestionsFromResources($scope.unfilteredServiceInstances, $scope.labelSuggestions);
6061
LabelFilter.setLabelSuggestions($scope.labelSuggestions);
@@ -69,23 +70,15 @@ angular.module('openshiftConsole')
6970
updateFilter();
7071
});
7172

72-
function updateFilterWarning() {
73-
if (!LabelFilter.getLabelSelector().isEmpty() && _.isEmpty($scope.serviceInstances) && !_.isEmpty($scope.unfilteredServiceInstances)) {
74-
$scope.alerts["all-instances-filtered"] = {
75-
type: "warning",
76-
details: "The active filters are hiding all provisioned services."
77-
};
78-
}
79-
else {
80-
delete $scope.alerts["all-instances-filtered"];
81-
}
73+
function updateFilterMessage() {
74+
$scope.filterWithZeroResults = !LabelFilter.getLabelSelector().isEmpty() && _.isEmpty($scope.serviceInstances) && !_.isEmpty($scope.unfilteredServiceInstances);
8275
}
8376

8477
LabelFilter.onActiveFiltersChanged(function(labelSelector) {
8578
// trigger a digest loop
8679
$scope.$evalAsync(function() {
8780
$scope.serviceInstances = labelSelector.select($scope.unfilteredServiceInstances);
88-
updateFilterWarning();
81+
updateFilterMessage();
8982
});
9083
});
9184

Diff for: ‎app/scripts/controllers/storage.js

+11-4
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@ angular.module('openshiftConsole')
1515
$scope.labelSuggestions = {};
1616
$scope.alerts = $scope.alerts || {};
1717
$scope.outOfClaims = false;
18-
$scope.clearFilter = function() {
19-
LabelFilter.clear();
20-
};
2118

2219
var setOutOfClaimsWarning = function() {
2320
var isHidden = AlertMessageService.isAlertPermanentlyHidden("storage-quota-limit-reached", $scope.projectName);
@@ -67,7 +64,17 @@ angular.module('openshiftConsole')
6764
}));
6865

6966
function updateFilterWarning() {
70-
$scope.filterWithZeroResults = !LabelFilter.getLabelSelector().isEmpty() && $.isEmptyObject($scope.pvcs) && !$.isEmptyObject($scope.unfilteredPVCs);
67+
if (!LabelFilter.getLabelSelector().isEmpty() && $.isEmptyObject($scope.pvcs) && !$.isEmptyObject($scope.unfilteredPVCs)) {
68+
$scope.alerts["storage"] = {
69+
type: "warning",
70+
details: "The active filters are hiding all persistent volume claims."
71+
};
72+
$scope.filterWithZeroResults = true;
73+
}
74+
else {
75+
delete $scope.alerts["storage"];
76+
$scope.filterWithZeroResults = false;
77+
}
7178
}
7279

7380
LabelFilter.onActiveFiltersChanged(function(labelSelector) {

Diff for: ‎app/styles/_layouts.less

-4
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@
22
// Layouts (substructure)
33
// ------------------------------------
44

5-
.header-toolbar {
6-
background-color: @panel-light;
7-
border-bottom: 1px solid @page-header-border-color;
8-
}
95
.layout-pf.layout-pf-fixed {
106
height: 1px;
117
body {

Diff for: ‎app/styles/_overview.less

+1
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,7 @@
470470
margin-bottom: 30px;
471471
}
472472
.toolbar-container {
473+
border-bottom: 1px solid @page-header-border-color;
473474
padding-bottom: 13px;
474475
padding-top: 13px;
475476
.surface-shaded();

Diff for: ‎app/views/browse/config-maps.html

+44-34
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<div class="middle-header header-toolbar">
33
<div class="container-fluid">
44
<div class="page-header page-header-bleed-right page-header-bleed-left">
5-
<div class="pull-right" ng-if="project && (configMapsVersion | canI : 'create')">
5+
<div class="pull-right" ng-if="project && (configMapsVersion | canI : 'create') && ((configMaps | hashSize) > 0 || filterWithZeroResults)">
66
<a ng-href="project/{{project.metadata.name}}/create-config-map" class="btn btn-default" translate>Create Config Map</a>
77
</div>
88
<h1>
@@ -14,7 +14,7 @@ <h1>
1414
</span>
1515
</h1>
1616
</div>
17-
<div ng-if="!renderOptions.showGetStarted" class="data-toolbar">
17+
<div ng-if="(configMaps | hashSize) > 0 || filterWithZeroResults" class="data-toolbar">
1818
<div class="data-toolbar-filter">
1919
<project-filter></project-filter>
2020
</div>
@@ -23,41 +23,51 @@ <h1>
2323
</div><!-- /middle-header-->
2424
<div class="middle-content">
2525
<div class="container-fluid">
26-
<alerts alerts="alerts"></alerts>
2726
<div class="row">
2827
<div class="col-md-12">
29-
<div ng-if="!loaded" translate>Loading...</div>
30-
<div ng-if="loaded">
31-
<table class="table table-bordered table-mobile table-layout-fixed">
32-
<colgroup>
33-
<col class="col-sm-5">
34-
</colgroup>
35-
<thead>
36-
<tr>
37-
<th translate>Name</th>
38-
<th translate>Created</th>
39-
<th translate>Labels</th>
40-
</tr>
41-
</thead>
42-
<tbody ng-if="(configMaps | hashSize) == 0">
43-
<tr><td colspan="3"><em translate>No config maps to show</em></td></tr>
44-
</tbody>
45-
<tbody ng-if="(configMaps | hashSize) > 0">
46-
<tr ng-repeat="configMap in configMaps">
47-
<td data-title="Name">
48-
<a href="{{configMap | navigateResourceURL}}">{{configMap.metadata.name}}</a>
49-
</td>
50-
<td data-title="Created">
51-
<span am-time-ago="configMap.metadata.creationTimestamp"></span>
52-
</td>
53-
<td data-title="Labels">
54-
<em ng-if="(configMap.metadata.labels | hashSize) === 0">none</em>
55-
<labels labels="configMap.metadata.labels" clickable="true" kind="Config Map" project-name="{{configMap.metadata.namespace}}" limit="3" filter-current-page="true"></labels>
56-
</td>
57-
</tr>
58-
</tbody>
59-
</table>
28+
<div ng-if="(configMaps | hashSize) == 0">
29+
<p ng-if="!loaded" translate>
30+
Loading...
31+
</p>
32+
<div ng-if="loaded" class="empty-state-message text-center">
33+
<div ng-if="!filterWithZeroResults">
34+
<h2 translate>No config maps.</h2>
35+
<p>No config maps have been added to project {{projectName}}.</p>
36+
<p ng-if="project && (configMapsVersion | canI : 'create')">
37+
<a ng-href="project/{{project.metadata.name}}/create-config-map" class="btn btn-primary btn-lg" translate>Create Config Map</a>
38+
</p>
39+
</div>
40+
<div ng-if="filterWithZeroResults">
41+
<h2><translate>The filter is hiding all config maps.</translate> <a href="" ng-click="clearFilter()" translate>Clear Filter</a></h2>
42+
</div>
43+
</div>
6044
</div>
45+
<table ng-if="(configMaps | hashSize) > 0" class="table table-bordered table-mobile table-layout-fixed">
46+
<colgroup>
47+
<col class="col-sm-5">
48+
</colgroup>
49+
<thead>
50+
<tr>
51+
<th translate>Name</th>
52+
<th translate>Created</th>
53+
<th translate>Labels</th>
54+
</tr>
55+
</thead>
56+
<tbody>
57+
<tr ng-repeat="configMap in configMaps">
58+
<td data-title="Name">
59+
<a href="{{configMap | navigateResourceURL}}">{{configMap.metadata.name}}</a>
60+
</td>
61+
<td data-title="Created">
62+
<span am-time-ago="configMap.metadata.creationTimestamp"></span>
63+
</td>
64+
<td data-title="Labels">
65+
<em ng-if="(configMap.metadata.labels | hashSize) === 0">none</em>
66+
<labels labels="configMap.metadata.labels" clickable="true" kind="Config Map" project-name="{{configMap.metadata.namespace}}" limit="3" filter-current-page="true"></labels>
67+
</td>
68+
</tr>
69+
</tbody>
70+
</table>
6171
</div><!-- /col-* -->
6272
</div>
6373
</div>

Diff for: ‎app/views/browse/routes.html

+21-8
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<div class="middle-header header-toolbar">
33
<div class="container-fluid">
44
<div class="page-header page-header-bleed-right page-header-bleed-left">
5-
<div class="pull-right" ng-if="project && ('routes' | canI : 'create')">
5+
<div class="pull-right" ng-if="project && ('routes' | canI : 'create') && ((routes | hashSize) > 0 || filterWithZeroResults)">
66
<a ng-href="project/{{project.metadata.name}}/create-route" class="btn btn-default" translate>Create Route</a>
77
</div>
88
<h1>
@@ -14,7 +14,7 @@ <h1>
1414
</span>
1515
</h1>
1616
</div>
17-
<div ng-if="!renderOptions.showGetStarted" class="data-toolbar">
17+
<div ng-if="(routes | hashSize) > 0 || filterWithZeroResults" class="data-toolbar">
1818
<div class="data-toolbar-filter">
1919
<project-filter></project-filter>
2020
</div>
@@ -23,10 +23,26 @@ <h1>
2323
</div><!-- /middle-header-->
2424
<div class="middle-content">
2525
<div class="container-fluid">
26-
<alerts alerts="alerts"></alerts>
2726
<div class="row">
2827
<div class="col-md-12">
29-
<table class="table table-bordered table-mobile table-layout-fixed">
28+
<div ng-if="(routes | hashSize) == 0">
29+
<p ng-if="!routesLoaded">
30+
Loading...
31+
</p>
32+
<div ng-if="routesLoaded" class="empty-state-message text-center">
33+
<div ng-if="!filterWithZeroResults">
34+
<h2>No routes.</h2>
35+
<p>No routes have been added to project {{projectName}}.</p>
36+
<p ng-if="project && ('routes' | canI : 'create') && !filterWithZeroResults">
37+
<a ng-href="project/{{project.metadata.name}}/create-route" class="btn btn-primary btn-lg">Create Route</a>
38+
</p>
39+
</div>
40+
<div ng-if="filterWithZeroResults">
41+
<h2>The filter is hiding all routes. <a href="" ng-click="clearFilter()">Clear Filter</a></h2>
42+
</div>
43+
</div>
44+
</div>
45+
<table ng-if="(routes | hashSize) > 0" class="table table-bordered table-mobile table-layout-fixed">
3046
<colgroup>
3147
<col class="col-sm-3">
3248
<col class="col-sm-3">
@@ -47,10 +63,7 @@ <h1>
4763
<th translate>TLS Termination</th>
4864
</tr>
4965
</thead>
50-
<tbody ng-if="(routes | hashSize) == 0">
51-
<tr><td colspan="5"><em>{{emptyMessage}}</em></td></tr>
52-
</tbody>
53-
<tbody ng-if="(routes | hashSize) > 0">
66+
<tbody>
5467
<tr ng-repeat="route in routes | orderObjectsByDate : true">
5568
<td data-title="{{ customNameHeader || 'Name' }}">
5669
<a href="{{route | navigateResourceURL}}">{{route.metadata.name}}</a>

Diff for: ‎app/views/browse/stateful-sets.html

+16-9
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ <h1 translate>
1515
-->
1616
</h1>
1717
</div>
18-
<div ng-if="!renderOptions.showGetStarted" class="data-toolbar">
18+
<div ng-if="((statefulSets | hashSize) > 0) || filterWithZeroResults" class="data-toolbar">
1919
<div class="data-toolbar-filter">
2020
<project-filter></project-filter>
2121
</div>
@@ -24,11 +24,23 @@ <h1 translate>
2424
</div>
2525
<div class="middle-content" persist-tab-state>
2626
<div class="container-fluid">
27-
<alerts alerts="alerts"></alerts>
28-
<div ng-if="!loaded" translate>Loading...</div>
2927
<div class="row" ng-if="loaded">
3028
<div class="col-md-12">
31-
<table class="table table-bordered table-mobile table-layout-fixed">
29+
<div ng-if="(statefulSets | hashSize) == 0">
30+
<p ng-if="!loaded" translate>
31+
Loading...
32+
</p>
33+
<div ng-if="loaded" class="empty-state-message text-center">
34+
<div ng-if="!filterWithZeroResults">
35+
<h2 translate>No stateful sets.</h2>
36+
<p>No stateful sets have been added to project {{projectName}}.</p>
37+
</div>
38+
<div ng-if="filterWithZeroResults">
39+
<h2><translate>The filter is hiding all stateful sets.</translate> <a href="" ng-click="clearFilter()" translate>Clear Filter</a></h2>
40+
</div>
41+
</div>
42+
</div>
43+
<table ng-if="(statefulSets | hashSize) > 0" class="table table-bordered table-mobile table-layout-fixed">
3244
<colgroup>
3345
<col class="col-sm-5">
3446
</colgroup>
@@ -39,11 +51,6 @@ <h1 translate>
3951
<th translate>Created</th>
4052
</tr>
4153
</thead>
42-
<tbody ng-if="(statefulSets | hashSize) == 0">
43-
<tr>
44-
<td colspan="3"><em>No stateful sets to show</em></td>
45-
</tr>
46-
</tbody>
4754
<tbody ng-repeat="(statefulSetName, statefulSet) in statefulSets">
4855
<tr>
4956
<td data-title="Name">

Diff for: ‎app/views/builds.html

+17-7
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ <h1>
1111
</span>
1212
</h1>
1313
</div>
14-
<div ng-if="!renderOptions.showGetStarted" class="data-toolbar">
14+
<div ng-if="(((latestByConfig | hashSize) || (buildsNoConfig | hashSize)) || filterWithZeroResults)" class="data-toolbar">
1515
<div class="data-toolbar-filter">
1616
<project-filter></project-filter>
1717
</div>
@@ -20,10 +20,23 @@ <h1>
2020
</div><!-- /middle-header-->
2121
<div class="middle-content">
2222
<div class="container-fluid">
23-
<alerts alerts="alerts"></alerts>
2423
<div class="row">
2524
<div class="col-md-12">
26-
<table class="table table-bordered table-mobile table-layout-fixed">
25+
<div ng-if="!(latestByConfig | hashSize) && !(buildsNoConfig | hashSize)">
26+
<p ng-if="!buildsLoaded">
27+
Loading...
28+
</p>
29+
<div ng-if="buildsLoaded" class="empty-state-message text-center">
30+
<div ng-if="!filterWithZeroResults">
31+
<h2>No builds.</h2>
32+
<p>No builds have been added to project {{projectName}}.</p>
33+
</div>
34+
<div ng-if="filterWithZeroResults">
35+
<h2>The filter is hiding all builds. <a href="" ng-click="clearFilter()">Clear Filter</a></h2>
36+
</div>
37+
</div>
38+
</div>
39+
<table class="table table-bordered table-mobile table-layout-fixed" ng-if="(latestByConfig | hashSize) || (buildsNoConfig | hashSize)">
2740
<colgroup>
2841
<col class="col-sm-2">
2942
<col class="col-sm-1">
@@ -44,10 +57,7 @@ <h1>
4457
<th ng-class="{'hidden-sm' : (latestByConfig | hashSize)}" translate>Source</th>
4558
</tr>
4659
</thead>
47-
<tbody ng-if="!(latestByConfig | hashSize) && !(buildsNoConfig | hashSize)">
48-
<tr><td colspan="7"><em>{{emptyMessage}}</em></td></tr>
49-
</tbody>
50-
<tbody ng-if="(latestByConfig | hashSize) || (buildsNoConfig | hashSize)">
60+
<tbody>
5161
<tr ng-repeat="(buildConfigName, latestBuild) in latestByConfig" ng-if="buildConfigName !== ''">
5262
<!-- Build config with no builds-->
5363
<td ng-if-start="!latestBuild" data-title="Name">

Diff for: ‎app/views/deployments.html

+171-166
Large diffs are not rendered by default.

Diff for: ‎app/views/images.html

+17-7
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ <h1>
1111
</span>
1212
</h1>
1313
</div>
14-
<div class="data-toolbar">
14+
<div ng-if="(imageStreams | hashSize) > 0 || filterWithZeroResults" class="data-toolbar">
1515
<div class="data-toolbar-filter">
1616
<project-filter></project-filter>
1717
</div>
@@ -20,10 +20,23 @@ <h1>
2020
</div><!-- /middle-header-->
2121
<div class="middle-content">
2222
<div class="container-fluid">
23-
<alerts alerts="alerts"></alerts>
2423
<div class="row">
2524
<div class="col-md-12">
26-
<table class="table table-bordered table-mobile table-layout-fixed">
25+
<div ng-if="(imageStreams | hashSize) == 0">
26+
<p ng-if="!imageStreamsLoaded">
27+
Loading...
28+
</p>
29+
<div ng-if="imageStreamsLoaded" class="empty-state-message text-center">
30+
<div ng-if="!filterWithZeroResults">
31+
<h2>No image streams.</h2>
32+
<p>No image streams have been added to project {{projectName}}.</p>
33+
</div>
34+
<div ng-if="filterWithZeroResults">
35+
<h2>The filter is hiding all image streams. <a href="" ng-click="clearFilter()">Clear Filter</a></h2>
36+
</div>
37+
</div>
38+
</div>
39+
<table ng-if="(imageStreams | hashSize) > 0" class="table table-bordered table-mobile table-layout-fixed">
2740
<colgroup>
2841
<col class="col-sm-3">
2942
<col class="col-sm-5">
@@ -38,10 +51,7 @@ <h1>
3851
<th translate>Updated</th>
3952
</tr>
4053
</thead>
41-
<tbody ng-if="(imageStreams | hashSize) == 0">
42-
<tr><td colspan="4"><em>{{emptyMessage}}</em></td></tr>
43-
</tbody>
44-
<tbody ng-if="(imageStreams | hashSize) > 0">
54+
<tbody>
4555
<tr ng-repeat="imageStream in imageStreams | orderObjectsByDate : true">
4656
<td data-title="Name"><a href="{{imageStream | navigateResourceURL}}">{{imageStream.metadata.name}}</a></td>
4757
<td data-title="Docker Repo">

Diff for: ‎app/views/other-resources.html

+18-7
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,25 @@ <h1 translate>Other Resources</h1>
2121
</div><!-- /middle-header-->
2222
<div class="middle-content">
2323
<div class="container-fluid">
24-
<alerts alerts="alerts"></alerts>
2524
<div class="row">
2625
<div class="col-md-12">
27-
<table class="table table-bordered table-mobile table-layout-fixed" ng-class="{ 'table-empty': (resources | hashSize) === 0 }">
26+
<div ng-if="(resources | hashSize) == 0">
27+
<p ng-if="!kindSelector.selected">
28+
<em>Select a resource from the list above...</em>
29+
</p>
30+
<div ng-if="kindSelector.selected" class="empty-state-message text-center">
31+
<div ng-if="!filterWithZeroResults">
32+
<h2>No {{resourceName}}.</h2>
33+
<p>
34+
No {{resourceName}} have been added to project {{projectName}}.
35+
</p>
36+
</div>
37+
<div ng-if="filterWithZeroResults">
38+
<h2>The filter is hiding all {{resourceName}}. <a href="" ng-click="clearFilter()">Clear Filter</a></h2>
39+
</div>
40+
</div>
41+
</div>
42+
<table ng-if="(resources | hashSize) > 0" class="table table-bordered table-mobile table-layout-fixed">
2843
<colgroup>
2944
<col class="col-sm-3">
3045
<col class="col-sm-2">
@@ -39,10 +54,7 @@ <h1 translate>Other Resources</h1>
3954
<th><span class="sr-only" translate>Actions</span></th>
4055
</tr>
4156
</thead>
42-
<tbody ng-if="(resources | hashSize) == 0">
43-
<tr><td colspan="4"><em>{{emptyMessage}}</em></td></tr>
44-
</tbody>
45-
<tbody ng-if="(resources | hashSize) > 0">
57+
<tbody>
4658
<tr ng-repeat="resource in resources | orderObjectsByDate : true">
4759
<td data-title="Name">{{resource.metadata.name}}</td>
4860
<td data-title="Created"><span am-time-ago="resource.metadata.creationTimestamp"></span></td>
@@ -65,7 +77,6 @@ <h1 translate>Other Resources</h1>
6577
group="{{kindSelector.selected.group}}"
6678
resource-name="{{resource.metadata.name}}"
6779
project-name="{{resource.metadata.namespace}}"
68-
alerts="alerts"
6980
stay-on-current-page="true"
7081
success="loadKind">
7182
</delete-link>

Diff for: ‎app/views/overview.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ <h2 translate>Welcome to project {{projectName}}.</h2>
3030
Loading...
3131
</div>
3232
<div ng-if="!overview.showGetStarted && !overview.showLoading">
33-
<div class="middle-header header-toolbar">
33+
<div class="middle-header">
3434
<div class="container-fluid toolbar-container">
3535
<div class="data-toolbar" role="toolbar" aria-label="Filter Toolbar">
3636
<div class="data-toolbar-filter" role="group">

Diff for: ‎app/views/pipelines.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ <h2 translate>No pipelines.</h2>
3434
<a ng-href="{{ 'pipeline-plugin' | helpLink}}" target="_blank" translate>OpenShift Pipeline Plugin</a>.
3535
</p>
3636
<p ng-if="(project.metadata.name | canIAddToProject) && createSampleURL">
37-
<a ng-href="{{createSampleURL}}" class="btn btn-lg btn-primary" translate>
37+
<a ng-href="{{createSampleURL}}" class="btn btn-primary btn-lg" translate>
3838
Create Sample Pipeline
3939
</a>
4040
</p>

Diff for: ‎app/views/pods.html

+16-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ <h1>
1111
</span>
1212
</h1>
1313
</div>
14-
<div ng-if="!renderOptions.showGetStarted" class="data-toolbar">
14+
<div ng-if="((pods | hashSize) > 0) || filterWithZeroResults" class="data-toolbar">
1515
<div class="data-toolbar-filter">
1616
<project-filter></project-filter>
1717
</div>
@@ -20,10 +20,23 @@ <h1>
2020
</div><!-- /middle-header-->
2121
<div class="middle-content">
2222
<div class="container-fluid">
23-
<alerts alerts="alerts"></alerts>
2423
<div class="row">
2524
<div class="col-md-12">
26-
<pods-table pods="pods" empty-message="emptyMessage"></pods-table>
25+
<div ng-if="(pods | hashSize) == 0">
26+
<p ng-if="!podsLoaded">
27+
Loading...
28+
</p>
29+
<div ng-if="podsLoaded" class="empty-state-message text-center">
30+
<div ng-if="!filterWithZeroResults">
31+
<h2>No pods.</h2>
32+
<p>No pods have been added to project {{projectName}}.</p>
33+
</div>
34+
<div ng-if="filterWithZeroResults">
35+
<h2>The filter is hiding all pods. <a href="" ng-click="clearFilter()">Clear Filter</a></h2>
36+
</div>
37+
</div>
38+
</div>
39+
<pods-table ng-if="(pods | hashSize) > 0" pods="pods"></pods-table>
2740
</div><!-- /col-* -->
2841
</div>
2942
</div>

Diff for: ‎app/views/secrets.html

+17-9
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<div class="middle-header">
33
<div class="container-fluid">
44
<div class="page-header page-header-bleed-right page-header-bleed-left">
5-
<div class="pull-right" ng-if="project && ('secrets' | canI : 'create')">
5+
<div class="pull-right" ng-if="project && ('secrets' | canI : 'create') && secrets.length">
66
<a ng-href="project/{{project.metadata.name}}/create-secret" class="btn btn-default" translate>Create Secret</a>
77
</div>
88
<h1>
@@ -18,11 +18,24 @@ <h1>
1818
</div><!-- /middle-header-->
1919
<div class="middle-content">
2020
<div class="container-fluid">
21-
<alerts alerts="alerts"></alerts>
2221
<div ng-if="!loaded" class="mar-top-xl" translate>Loading...</div>
2322
<div ng-if="loaded" class="row">
2423
<div class="col-md-12">
25-
<table class="table table-bordered table-mobile secrets-table table-layout-fixed">
24+
<div ng-if="!secrets.length">
25+
<p ng-if="!loaded" translate>
26+
Loading...
27+
</p>
28+
<div ng-if="loaded" class="empty-state-message text-center">
29+
<h2 translate>No secrets.</h2>
30+
<p translate>
31+
No secrets have been added to project {{projectName}}.
32+
</p>
33+
<p ng-if="project && ('secrets' | canI : 'create') && !secrets.length">
34+
<a ng-href="project/{{project.metadata.name}}/create-secret" class="btn btn-primary" translate>Create Secret</a>
35+
</p>
36+
</div>
37+
</div>
38+
<table ng-if="secrets.length" class="table table-bordered table-mobile secrets-table table-layout-fixed">
2639
<colgroup>
2740
<col class="col-sm-5">
2841
<col class="col-sm-5">
@@ -34,12 +47,7 @@ <h1>
3447
<th translate>Created</th>
3548
</tr>
3649
</thead>
37-
<!-- message doesnt show right when there are both dcs and rcs and they are all filtered -->
38-
<tbody ng-if="!secrets.length">
39-
<!-- If there are no deployment configs and no replication controllers owned by a deployment config -->
40-
<tr><td colspan="3"><em translate>No secrets</em></td></tr>
41-
</tbody>
42-
<tbody ng-if="secrets.length">
50+
<tbody>
4351
<tr ng-repeat="secret in secrets track by (secret | uid)">
4452
<td data-title="Name">
4553
<a ng-href="{{secret | navigateResourceURL}}">{{secret.metadata.name}}</a>

Diff for: ‎app/views/service-instances.html

+16-8
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ <h1 translate>
1111
Provisioned Services
1212
</h1>
1313
</div>
14-
<div class="data-toolbar">
14+
<div ng-if="(serviceInstances | size) > 0 || filterWithZeroResults" class="data-toolbar">
1515
<div class="data-toolbar-filter">
1616
<project-filter></project-filter>
1717
</div>
@@ -20,10 +20,23 @@ <h1 translate>
2020
</div><!-- /middle-header-->
2121
<div class="middle-content">
2222
<div class="container-fluid">
23-
<alerts alerts="alerts"></alerts>
2423
<div class="row">
2524
<div class="col-md-12">
26-
<table class="table table-bordered table-mobile table-layout-fixed">
25+
<div ng-if="(serviceInstances | hashSize) == 0">
26+
<p ng-if="!serviceInstancesLoaded">
27+
Loading...
28+
</p>
29+
<div ng-if="serviceInstancesLoaded" class="empty-state-message text-center">
30+
<div ng-if="!filterWithZeroResults">
31+
<h2>No provisioned services.</h2>
32+
<p>No provisioned services have been added to project {{projectName}}.</p>
33+
</div>
34+
<div ng-if="filterWithZeroResults">
35+
<h2>The filter is hiding all provisioned services. <a href="" ng-click="clearFilter()">Clear Filter</a></h2>
36+
</div>
37+
</div>
38+
</div>
39+
<table ng-if="(serviceInstances | size) > 0" class="table table-bordered table-mobile table-layout-fixed">
2740
<colgroup>
2841
<col class="col-sm-3">
2942
</colgroup>
@@ -36,11 +49,6 @@ <h1 translate>
3649
<th translate>Bindings</th>
3750
</tr>
3851
</thead>
39-
<tbody ng-if="(serviceInstances | size) === 0">
40-
<tr>
41-
<td colspan="4"><em>{{emptyMessage}}</em></td>
42-
</tr>
43-
</tbody>
4452
<tbody ng-if="(serviceInstances | size) > 0">
4553
<tr ng-repeat="serviceInstance in serviceInstances track by (serviceInstance | uid)">
4654
<td data-title="Name">

Diff for: ‎app/views/services.html

+17-7
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ <h1>
1111
</span>
1212
</h1>
1313
</div>
14-
<div class="data-toolbar">
14+
<div ng-if="(services | hashSize) > 0 || filterWithZeroResults" class="data-toolbar">
1515
<div class="data-toolbar-filter">
1616
<project-filter></project-filter>
1717
</div>
@@ -20,10 +20,23 @@ <h1>
2020
</div><!-- /middle-header-->
2121
<div class="middle-content">
2222
<div class="container-fluid">
23-
<alerts alerts="alerts"></alerts>
2423
<div class="row">
2524
<div class="col-md-12">
26-
<table class="table table-bordered table-mobile table-layout-fixed">
25+
<div ng-if="(services | hashSize) == 0">
26+
<p ng-if="!servicesLoaded">
27+
Loading...
28+
</p>
29+
<div ng-if="servicesLoaded" class="empty-state-message text-center">
30+
<div ng-if="!filterWithZeroResults">
31+
<h2>No services.</h2>
32+
<p>No services have been added to project {{projectName}}.</p>
33+
</div>
34+
<div ng-if="filterWithZeroResults">
35+
<h2>The filter is hiding all services. <a href="" ng-click="clearFilter()">Clear Filter</a></h2>
36+
</div>
37+
</div>
38+
</div>
39+
<table ng-if="(services | hashSize) > 0" class="table table-bordered table-mobile table-layout-fixed">
2740
<colgroup>
2841
<col class="col-sm-3">
2942
</colgroup>
@@ -37,10 +50,7 @@ <h1>
3750
<th translate>Age</th>
3851
</tr>
3952
</thead>
40-
<tbody ng-if="(services | hashSize) == 0">
41-
<tr><td colspan="6"><em>{{emptyMessage}}</em></td></tr>
42-
</tbody>
43-
<tbody ng-if="(services | hashSize) > 0">
53+
<tbody>
4454
<tr ng-repeat="service in services | orderObjectsByDate : true">
4555
<td data-title="Name"><a href="{{service | navigateResourceURL}}">{{service.metadata.name}}</a></td>
4656
<td data-title="Cluster IP">{{service.spec.clusterIP}}</td>

Diff for: ‎app/views/storage.html

+20-15
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
<div class="middle-header header-toolbar">
33
<div class="container-fluid">
44
<div class="page-header page-header-bleed-right page-header-bleed-left">
5+
<div class="pull-right" ng-if="project && ('persistentvolumeclaims' | canI : 'create') && ((pvcs | hashSize) > 0 || filterWithZeroResults)">
6+
<a ng-if="!outOfClaims" ng-href="project/{{project.metadata.name}}/create-pvc" class="btn btn-default">Create Storage</a>
7+
<a ng-if="outOfClaims" href="" class="btn btn-default disabled" aria-disabled="true">Create Storage</a>
8+
</div>
59
<h1>
610
<translate>Storage</translate>
711
<span class="page-header-link">
@@ -11,7 +15,7 @@ <h1>
1115
</span>
1216
</h1>
1317
</div>
14-
<div ng-if="!renderOptions.showGetStarted" class="data-toolbar">
18+
<div ng-if="(pvcs | hashSize) > 0 || filterWithZeroResults" class="data-toolbar">
1519
<div class="data-toolbar-filter">
1620
<project-filter></project-filter>
1721
</div>
@@ -23,18 +27,22 @@ <h1>
2327
<alerts alerts="alerts"></alerts>
2428
<div class="row">
2529
<div class="col-md-12">
26-
<div class="section-header page-header-bleed-right page-header-bleed-left">
27-
<div class="hidden-xs pull-right" ng-if="project && ('persistentvolumeclaims' | canI : 'create')">
28-
<a ng-if="!outOfClaims" ng-href="project/{{project.metadata.name}}/create-pvc" class="btn btn-default" translate>Create Storage</a>
29-
<a ng-if="outOfClaims" href="" class="btn btn-default disabled" aria-disabled="true" translate>Create Storage</a>
30-
</div>
31-
<h2 translate>Persistent Volume Claims</h2>
32-
<div class="visible-xs-block mar-bottom-sm" ng-if="project && ('persistentvolumeclaims' | canI : 'create')">
33-
<a ng-if="!outOfClaims" ng-href="project/{{project.metadata.name}}/create-pvc" class="btn btn-default" translate>Create Storage</a>
34-
<a ng-if="outOfClaims" href="" class="btn btn-default disabled" aria-disabled="true" translate>Create Storage</a>
30+
<div ng-if="(pvcs | hashSize) === 0">
31+
<p ng-if="!pvcsLoaded" translate>
32+
Loading...
33+
</p>
34+
<div ng-if="pvcsLoaded" class="empty-state-message text-center">
35+
<h2 translate>No persistent volume claims.</h2>
36+
<p ng-if="!filterWithZeroResults" translate>
37+
No persistent volume claims have been added to project {{projectName}}.
38+
</p>
39+
<p ng-if="project && ('persistentvolumeclaims' | canI : 'create') && !filterWithZeroResults">
40+
<a ng-if="!outOfClaims" ng-href="project/{{project.metadata.name}}/create-pvc" class="btn btn-primary" translate>Create Storage</a>
41+
<a ng-if="outOfClaims" href="" class="btn btn-primary disabled" aria-disabled="true" translate>Create Storage</a>
42+
</p>
3543
</div>
3644
</div>
37-
<table class="table table-bordered table-mobile table-layout-fixed" ng-class="{ 'table-empty': (pvcs | hashSize) === 0 }">
45+
<table ng-if="(pvcs | hashSize) > 0" class="table table-bordered table-mobile table-layout-fixed">
3846
<colgroup>
3947
<col class="col-sm-5">
4048
</colgroup>
@@ -47,10 +55,7 @@ <h2 translate>Persistent Volume Claims</h2>
4755
<th translate>Age</th>
4856
</tr>
4957
</thead>
50-
<tbody ng-if="(pvcs | hashSize) === 0">
51-
<tr><td colspan="5"><em>{{emptyMessage}}</em></td></tr>
52-
</tbody>
53-
<tbody ng-if="(pvcs | hashSize) > 0">
58+
<tbody>
5459
<tr ng-repeat="pvc in pvcs | orderObjectsByDate : true">
5560
<td data-title="Name"><a ng-href="{{pvc | navigateResourceURL}}">{{pvc.metadata.name}}</a>
5661
<span ng-if="pvc | storageClass" class="text-muted" translate> using storage class {{pvc | storageClass}}</span>

Diff for: ‎dist/scripts/scripts.js

+179-123
Large diffs are not rendered by default.

Diff for: ‎dist/scripts/templates.js

+255-5
Large diffs are not rendered by default.

Diff for: ‎dist/styles/main.css

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)
Please sign in to comment.