Skip to content

Commit eab985c

Browse files
committed
Update overview to use toast notifications
1 parent c8e8103 commit eab985c

File tree

4 files changed

+437
-418
lines changed

4 files changed

+437
-418
lines changed

app/scripts/controllers/overview.js

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ angular.module('openshiftConsole').controller('OverviewController', [
1919
'Logger',
2020
'MetricsService',
2121
'Navigate',
22+
'NotificationsService',
2223
'OwnerReferencesService',
2324
'PodsService',
2425
'ProjectsService',
@@ -45,6 +46,7 @@ function OverviewController($scope,
4546
Logger,
4647
MetricsService,
4748
Navigate,
49+
NotificationsService,
4850
OwnerReferencesService,
4951
PodsService,
5052
ProjectsService,
@@ -1087,16 +1089,36 @@ function OverviewController($scope,
10871089
$scope.$evalAsync(updateFilter);
10881090
});
10891091

1090-
overview.startBuild = function(buildConfig) {
1092+
// This is used by the overview empty state message and also the list row,
1093+
// which is why it's assigned to the `state` object.
1094+
overview.startBuild = state.startBuild = function(buildConfig) {
1095+
var buildType = isJenkinsPipelineStrategy(buildConfig) ? 'pipeline' : 'build';
10911096
BuildsService
10921097
.startBuild(buildConfig.metadata.name, { namespace: buildConfig.metadata.namespace })
1093-
.then(_.noop, function(result) {
1094-
var buildType = isJenkinsPipelineStrategy(buildConfig) ? 'pipeline' : 'build';
1095-
state.alerts["start-build"] = {
1098+
.then(function(build) {
1099+
var buildName;
1100+
var buildNumber = annotation(build, 'buildNumber');
1101+
var buildURL = Navigate.resourceURL(build);
1102+
if (buildNumber) {
1103+
buildName = buildConfig.metadata.name + " #" + buildNumber;
1104+
} else {
1105+
buildName = build.metadata.name;
1106+
}
1107+
1108+
NotificationsService.addNotification({
1109+
type: "success",
1110+
message: _.capitalize(buildType) + " " + buildName + " successfully created.",
1111+
links: [{
1112+
href: buildURL,
1113+
label: 'View ' + _.capitalize(buildType)
1114+
}]
1115+
});
1116+
}, function(result) {
1117+
NotificationsService.addNotification({
10961118
type: "error",
10971119
message: "An error occurred while starting the " + buildType + ".",
10981120
details: getErrorDetails(result)
1099-
};
1121+
});
11001122
});
11011123
};
11021124

app/scripts/directives/overview/listRow.js

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88
'APIService',
99
'BuildsService',
1010
'DeploymentsService',
11-
'Navigate',
1211
'ListRowUtils',
12+
'Navigate',
13+
'NotificationsService',
1314
OverviewListRow
1415
],
1516
controllerAs: 'row',
@@ -29,17 +30,16 @@
2930
APIService,
3031
BuildsService,
3132
DeploymentsService,
33+
ListRowUtils,
3234
Navigate,
33-
rowMethods) {
35+
NotificationsService) {
3436
var row = this;
3537

36-
_.extend(row, rowMethods.ui);
38+
_.extend(row, ListRowUtils.ui);
3739

3840
var canI = $filter('canI');
3941
var deploymentIsInProgress = $filter('deploymentIsInProgress');
40-
var getErrorDetails = $filter('getErrorDetails');
4142
var isBinaryBuild = $filter('isBinaryBuild');
42-
var isJenkinsPipelineStrategy = $filter('isJenkinsPipelineStrategy');
4343

4444
var updateTriggers = function(apiObject) {
4545
var triggers = _.get(apiObject, 'spec.triggers');
@@ -95,7 +95,7 @@
9595

9696
row.$doCheck = function() {
9797
// Update notifications.
98-
row.notifications = rowMethods.getNotifications(row.apiObject, row.state);
98+
row.notifications = ListRowUtils.getNotifications(row.apiObject, row.state);
9999

100100
// Update HPA.
101101
row.hpa = getHPA(row.apiObject);
@@ -213,18 +213,8 @@
213213
return canI('buildconfigs/instantiate', 'create') && _.size(row.pipelines) === 1;
214214
};
215215

216-
row.startBuild = function(buildConfig) {
217-
BuildsService
218-
.startBuild(buildConfig.metadata.name, { namespace: buildConfig.metadata.namespace })
219-
.then(_.noop, function(result) {
220-
var buildType = isJenkinsPipelineStrategy(buildConfig) ? 'pipeline' : 'build';
221-
row.state.alerts["start-build"] = {
222-
type: "error",
223-
message: "An error occurred while starting the " + buildType + ".",
224-
details: getErrorDetails(result)
225-
};
226-
});
227-
};
216+
// Resuse the function from the overview controller.
217+
row.startBuild = row.state.startBuild;
228218

229219
row.canDeploy = function() {
230220
if (!row.apiObject) {
@@ -291,10 +281,10 @@
291281

292282
modalInstance.result.then(function() {
293283
if (replicationController.metadata.uid !== row.current.metadata.uid) {
294-
row.state.alerts["cancel-deployment"] = {
284+
NotificationsService.addNotification({
295285
type: "error",
296286
message: "Deployment #" + latestVersion + " is no longer the latest."
297-
};
287+
});
298288
return;
299289
}
300290

@@ -303,10 +293,10 @@
303293

304294
// Make sure it's still running.
305295
if (!deploymentIsInProgress(replicationController)) {
306-
row.state.alerts["cancel-deployment"] = {
296+
NotificationsService.addNotification({
307297
type: "error",
308298
message: "Deployment " + rcName + " is no longer in progress."
309-
};
299+
});
310300
return;
311301
}
312302

app/scripts/directives/overview/serviceInstanceRow.js

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
angular.module('openshiftConsole').component('serviceInstanceRow', {
55
controller: [
66
'$filter',
7+
'$uibModal',
78
'DataService',
89
'ListRowUtils',
9-
'$uibModal',
10+
'NotificationsService',
1011
ServiceInstanceRow
1112
],
1213
controllerAs: 'row',
@@ -18,9 +19,13 @@
1819
templateUrl: 'views/overview/_service-instance-row.html'
1920
});
2021

21-
function ServiceInstanceRow($filter, DataService, rowMethods, $uibModal) {
22+
function ServiceInstanceRow($filter,
23+
$uibModal,
24+
DataService,
25+
ListRowUtils,
26+
NotificationsService) {
2227
var row = this;
23-
_.extend(row, rowMethods.ui);
28+
_.extend(row, ListRowUtils.ui);
2429

2530
var getErrorDetails = $filter('getErrorDetails');
2631

@@ -37,7 +42,7 @@
3742
};
3843

3944
row.$doCheck = function() {
40-
row.notifications = rowMethods.getNotifications(row.apiObject, row.state);
45+
row.notifications = ListRowUtils.getNotifications(row.apiObject, row.state);
4146
row.displayName = getDisplayName();
4247
row.description = getDescription();
4348
};
@@ -83,23 +88,25 @@
8388
}
8489
})
8590
.result.then(function() {
91+
NotificationsService.hideNotification("deprovision-service-error");
8692
DataService.delete({
8793
group: 'servicecatalog.k8s.io',
8894
resource: 'instances'
8995
},
9096
row.apiObject.metadata.name,
9197
{ namespace: row.apiObject.metadata.namespace })
9298
.then(function() {
93-
row.state.alerts["start-build"] = {
99+
NotificationsService.addNotification({
94100
type: "success",
95-
message: "Successfully deprovisioned " + row.apiObject.metadata.name
96-
};
101+
message: "Successfully deprovisioned " + row.apiObject.metadata.name + "."
102+
});
97103
}, function(err) {
98-
row.state.alerts["start-build"] = {
104+
NotificationsService.addNotification({
105+
id: "deprovision-service-error",
99106
type: "error",
100-
message: "An error occurred while deprovisioning " + row.apiObject.metadata.name,
101-
details: "Reason: " + getErrorDetails(err)
102-
};
107+
message: "An error occurred while deprovisioning " + row.apiObject.metadata.name + ".",
108+
details: getErrorDetails(err)
109+
});
103110
});
104111
});
105112
};

0 commit comments

Comments
 (0)