mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
dashboards: fix batch dashboard/folder delete response
Use message returned from backend and use that as alert success response to user
This commit is contained in:
parent
0135178645
commit
3f3175972e
@ -167,8 +167,10 @@ func DeleteDashboard(c *middleware.Context) Response {
|
|||||||
return ApiError(500, "Failed to delete dashboard", err)
|
return ApiError(500, "Failed to delete dashboard", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var resp = map[string]interface{}{"title": dash.Title}
|
return Json(200, util.DynMap{
|
||||||
return Json(200, resp)
|
"title": dash.Title,
|
||||||
|
"message": fmt.Sprintf("Dashboard %s deleted", dash.Title),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func DeleteDashboardByUid(c *middleware.Context) Response {
|
func DeleteDashboardByUid(c *middleware.Context) Response {
|
||||||
@ -187,8 +189,10 @@ func DeleteDashboardByUid(c *middleware.Context) Response {
|
|||||||
return ApiError(500, "Failed to delete dashboard", err)
|
return ApiError(500, "Failed to delete dashboard", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var resp = map[string]interface{}{"title": dash.Title}
|
return Json(200, util.DynMap{
|
||||||
return Json(200, resp)
|
"title": dash.Title,
|
||||||
|
"message": fmt.Sprintf("Dashboard %s deleted", dash.Title),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func PostDashboard(c *middleware.Context, cmd m.SaveDashboardCommand) Response {
|
func PostDashboard(c *middleware.Context, cmd m.SaveDashboardCommand) Response {
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"github.com/grafana/grafana/pkg/api/dtos"
|
"github.com/grafana/grafana/pkg/api/dtos"
|
||||||
"github.com/grafana/grafana/pkg/middleware"
|
"github.com/grafana/grafana/pkg/middleware"
|
||||||
m "github.com/grafana/grafana/pkg/models"
|
m "github.com/grafana/grafana/pkg/models"
|
||||||
@ -82,8 +84,10 @@ func DeleteFolder(c *middleware.Context) Response {
|
|||||||
return toFolderError(err)
|
return toFolderError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var resp = map[string]interface{}{"title": f.Title}
|
return Json(200, util.DynMap{
|
||||||
return Json(200, resp)
|
"title": f.Title,
|
||||||
|
"message": fmt.Sprintf("Folder %s deleted", f.Title),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func toFolderDto(g guardian.DashboardGuardian, folder *m.Folder) dtos.Folder {
|
func toFolderDto(g guardian.DashboardGuardian, folder *m.Folder) dtos.Folder {
|
||||||
|
@ -179,41 +179,7 @@ export class ManageDashboardsCtrl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private deleteFoldersAndDashboards(folderUids, dashboardUids) {
|
private deleteFoldersAndDashboards(folderUids, dashboardUids) {
|
||||||
this.backendSrv.deleteFoldersAndDashboards(folderUids, dashboardUids).then(result => {
|
this.backendSrv.deleteFoldersAndDashboards(folderUids, dashboardUids).then(() => {
|
||||||
const folders = _.filter(result, dash => !dash.dashboard);
|
|
||||||
const folderCount = folders.length;
|
|
||||||
const dashboards = _.filter(result, dash => dash.dashboard);
|
|
||||||
const dashCount = dashboards.length;
|
|
||||||
|
|
||||||
if (result.length > 0) {
|
|
||||||
let header;
|
|
||||||
let msg;
|
|
||||||
|
|
||||||
if (folderCount > 0 && dashCount > 0) {
|
|
||||||
header = `Folder${folderCount === 1 ? '' : 's'} And Dashboard${dashCount === 1 ? '' : 's'} Deleted`;
|
|
||||||
msg = `${folderCount} folder${folderCount === 1 ? '' : 's'} `;
|
|
||||||
msg += `and ${dashCount} dashboard${dashCount === 1 ? '' : 's'} has been deleted`;
|
|
||||||
} else if (folderCount > 0) {
|
|
||||||
header = `Folder${folderCount === 1 ? '' : 's'} Deleted`;
|
|
||||||
|
|
||||||
if (folderCount === 1) {
|
|
||||||
msg = `${folders[0].title} has been deleted`;
|
|
||||||
} else {
|
|
||||||
msg = `${folderCount} folder${folderCount === 1 ? '' : 's'} has been deleted`;
|
|
||||||
}
|
|
||||||
} else if (dashCount > 0) {
|
|
||||||
header = `Dashboard${dashCount === 1 ? '' : 's'} Deleted`;
|
|
||||||
|
|
||||||
if (dashCount === 1) {
|
|
||||||
msg = `${dashboards[0].dashboard.title} has been deleted`;
|
|
||||||
} else {
|
|
||||||
msg = `${dashCount} dashboard${dashCount === 1 ? '' : 's'} has been deleted`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
appEvents.emit('alert-success', [header, msg]);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.refreshList();
|
this.refreshList();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -258,47 +258,27 @@ export class BackendSrv {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteFolder(uid: string) {
|
deleteFolder(uid: string, showSuccessAlert) {
|
||||||
let deferred = this.$q.defer();
|
return this.request({ method: 'DELETE', url: `/api/folders/${uid}`, showSuccessAlert: showSuccessAlert === true });
|
||||||
|
|
||||||
this.getFolderByUid(uid).then(folder => {
|
|
||||||
this.delete(`/api/folders/${uid}`)
|
|
||||||
.then(() => {
|
|
||||||
deferred.resolve(folder);
|
|
||||||
})
|
|
||||||
.catch(err => {
|
|
||||||
deferred.reject(err);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
return deferred.promise;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteDashboard(uid) {
|
deleteDashboard(uid, showSuccessAlert) {
|
||||||
let deferred = this.$q.defer();
|
return this.request({
|
||||||
|
method: 'DELETE',
|
||||||
this.getDashboardByUid(uid).then(fullDash => {
|
url: `/api/dashboards/uid/${uid}`,
|
||||||
this.delete(`/api/dashboards/uid/${uid}`)
|
showSuccessAlert: showSuccessAlert === true,
|
||||||
.then(() => {
|
|
||||||
deferred.resolve(fullDash);
|
|
||||||
})
|
|
||||||
.catch(err => {
|
|
||||||
deferred.reject(err);
|
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
return deferred.promise;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteFoldersAndDashboards(folderUids, dashboardUids) {
|
deleteFoldersAndDashboards(folderUids, dashboardUids) {
|
||||||
const tasks = [];
|
const tasks = [];
|
||||||
|
|
||||||
for (let folderUid of folderUids) {
|
for (let folderUid of folderUids) {
|
||||||
tasks.push(this.createTask(this.deleteFolder.bind(this), true, folderUid));
|
tasks.push(this.createTask(this.deleteFolder.bind(this), true, folderUid, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let dashboardUid of dashboardUids) {
|
for (let dashboardUid of dashboardUids) {
|
||||||
tasks.push(this.createTask(this.deleteDashboard.bind(this), true, dashboardUid));
|
tasks.push(this.createTask(this.deleteDashboard.bind(this), true, dashboardUid, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.executeInOrder(tasks, []);
|
return this.executeInOrder(tasks, []);
|
||||||
|
Loading…
Reference in New Issue
Block a user