Fix redirect after deleting from details page

On apache environments, when WEBROOT is "/dashboard/" and not "/",
redirection after deleting from Angular details page is broken. If
we go to image/key pair/server group/etc details page, and delete
it from this page, redirect url is "/dashboard/dashboard/project/..."
instead of "/dashboard/project/..."

This patch switches from using WEBROOT depentent panel navigation to
getting default index url directly from details view controller.
It also cleans up a work around that was implemented for some pages.

Change-Id: I6bd06ea479f473a319f8100cbf8d168424b62461
This commit is contained in:
Tatiana Ovchinnikova 2022-09-13 12:23:04 -05:00
parent 0b1dd3d89e
commit 1011d4237e
6 changed files with 9 additions and 35 deletions

View File

@ -113,7 +113,7 @@
function loadIndexView() {
spinnerService.hideModalSpinner();
ctrl.showDetails = false;
var url = navigationsService.getActivePanelUrl();
var url = ctrl.resourceType.getDefaultIndexUrl();
$location.url(url);
}
@ -124,8 +124,8 @@
// That return includes the id and type of each created, updated, deleted
// and failed item.
// Currently just refreshes the display each time.
if (result.failed && result.deleted &&
result.failed.length === 0 && result.deleted.length > 0) {
if ((angular.isUndefined(result)) || (result.failed && result.deleted &&
result.failed.length === 0 && result.deleted.length > 0)) {
loadIndexView();
} else if (result) {
spinnerService.showModalSpinner(gettext('Please Wait'));

View File

@ -162,23 +162,23 @@
it('handles deleted results and redirect back to index view', function() {
spyOn(actionResultService, 'getIdsOfType').and.returnValue([1, 2, 3]);
spyOn(navigationsService, 'getActivePanelUrl');
spyOn(ctrl.resourceType, 'getDefaultIndexUrl');
var result = $q.defer();
result.resolve({created: [], updated: [], deleted: ['image1'], failed: []});
ctrl.resultHandler(result.promise);
$timeout.flush();
expect(ctrl.showDetails).toBe(false);
expect(navigationsService.getActivePanelUrl).toHaveBeenCalled();
expect(ctrl.resourceType.getDefaultIndexUrl).toHaveBeenCalled();
});
it('handles general results and do not redirect back to index view', function() {
spyOn(navigationsService, 'getActivePanelUrl');
spyOn(ctrl.resourceType, 'getDefaultIndexUrl');
var result = $q.defer();
result.resolve({created: [], updated: ['image1'], deleted: [], failed: []});
ctrl.resultHandler(result.promise);
$timeout.flush();
expect(ctrl.showDetails).toBe(false);
expect(navigationsService.getActivePanelUrl).not.toHaveBeenCalled();
expect(ctrl.resourceType.getDefaultIndexUrl).not.toHaveBeenCalled();
});
});

View File

@ -81,14 +81,6 @@
deleteModalResult.fail.forEach(function markFailed(item) {
actionResult.failed(resourceType, item.context.id);
});
var path = '/project/key_pairs';
if ($location.url() !== path && actionResult.result.failed.length === 0 &&
actionResult.result.deleted.length > 0) {
$location.path(path);
} else {
return actionResult.result;
}
}
function labelize(count) {

View File

@ -79,13 +79,6 @@
deleteModalResult.fail.forEach(function markFailed(item) {
actionResult.failed(serverGroupResourceType, item.context.id);
});
var path = '/project/server_groups';
if ($location.url() !== path && actionResult.result.failed.length === 0 &&
actionResult.result.deleted.length > 0) {
$location.path(path);
} else {
return actionResult.result;
}
}
function labelize(count) {

View File

@ -135,7 +135,8 @@
function testDeleteResult() {
$location.path("ngdetails/OS::Nova::ServerGroup/1");
$httpBackend.expectGET('/static/app/core/server_groups/panel.html').respond({});
$httpBackend.expectGET('/static/framework/widgets/details/routed-details-view.html')
.respond({});
var servergroup = {id: 1, name: 'sg1'};
deferredModal.resolve({fail: [], pass:[{data:{"data": "", "status": "204"},
context:servergroup}]});
@ -147,7 +148,6 @@
var deleteFunction = contextArg.deleteEntity;
deleteFunction(servergroup.id);
expect(novaAPI.deleteServerGroup).toHaveBeenCalledWith(servergroup.id, true);
expect($location.path()).toEqual("/project/server_groups");
}
}); // end of delete modal

View File

@ -82,17 +82,6 @@
result.fail.forEach(function markFailed(item) {
actionResult.failed(resourceType, item.context.id);
});
var path = "admin/trunks";
if ($location.url().indexOf("admin") === -1) {
path = "project/trunks";
}
if ($location.url() !== path && actionResult.result.failed.length === 0 &&
actionResult.result.deleted.length > 0) {
$location.path(path);
} else {
return actionResult.result;
}
}
}