فهرست منبع

dashboards: fix batch dashboard/folder delete response

Use message returned from backend and use that as alert success response to user
Marcus Efraimsson 7 سال پیش
والد
کامیت
3f3175972e
4فایلهای تغییر یافته به همراه24 افزوده شده و 70 حذف شده
  1. 8 4
      pkg/api/dashboard.go
  2. 6 2
      pkg/api/folder.go
  3. 1 35
      public/app/core/components/manage_dashboards/manage_dashboards.ts
  4. 9 29
      public/app/core/services/backend_srv.ts

+ 8 - 4
pkg/api/dashboard.go

@@ -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, resp)
+	return Json(200, util.DynMap{
+		"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, resp)
+	return Json(200, util.DynMap{
+		"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 {

+ 6 - 2
pkg/api/folder.go

@@ -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, resp)
+	return Json(200, util.DynMap{
+		"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 {

+ 1 - 35
public/app/core/components/manage_dashboards/manage_dashboards.ts

@@ -179,41 +179,7 @@ export class ManageDashboardsCtrl {
   }
   }
 
 
   private deleteFoldersAndDashboards(folderUids, dashboardUids) {
   private deleteFoldersAndDashboards(folderUids, dashboardUids) {
-    this.backendSrv.deleteFoldersAndDashboards(folderUids, dashboardUids).then(result => {
-      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.backendSrv.deleteFoldersAndDashboards(folderUids, dashboardUids).then(() => {
       this.refreshList();
       this.refreshList();
     });
     });
   }
   }

+ 9 - 29
public/app/core/services/backend_srv.ts

@@ -258,47 +258,27 @@ export class BackendSrv {
     });
     });
   }
   }
 
 
-  deleteFolder(uid: string) {
-    let deferred = this.$q.defer();
-
-    this.getFolderByUid(uid).then(folder => {
-      this.delete(`/api/folders/${uid}`)
-        .then(() => {
-          deferred.resolve(folder);
-        })
-        .catch(err => {
-          deferred.reject(err);
-        });
-    });
-
-    return deferred.promise;
+  deleteFolder(uid: string, showSuccessAlert) {
+    return this.request({ method: 'DELETE', url: `/api/folders/${uid}`, showSuccessAlert: showSuccessAlert === true });
   }
   }
 
 
-  deleteDashboard(uid) {
-    let deferred = this.$q.defer();
-
-    this.getDashboardByUid(uid).then(fullDash => {
-      this.delete(`/api/dashboards/uid/${uid}`)
-        .then(() => {
-          deferred.resolve(fullDash);
-        })
-        .catch(err => {
-          deferred.reject(err);
-        });
+  deleteDashboard(uid, showSuccessAlert) {
+    return this.request({
+      method: 'DELETE',
+      url: `/api/dashboards/uid/${uid}`,
+      showSuccessAlert: showSuccessAlert === true,
     });
     });
-
-    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, []);