瀏覽代碼

dashboards: update dashboard/folder url if browser url is not the same as from backend

Marcus Efraimsson 8 年之前
父節點
當前提交
40c83e3e22

+ 6 - 2
public/app/features/dashboard/folder_dashboards_ctrl.ts

@@ -6,13 +6,17 @@ export class FolderDashboardsCtrl {
   uid: string;
 
   /** @ngInject */
-  constructor(private backendSrv, navModelSrv, private $routeParams) {
+  constructor(private backendSrv, navModelSrv, private $routeParams, $location) {
     if (this.$routeParams.uid) {
       this.uid = $routeParams.uid;
 
       const loader = new FolderPageLoader(this.backendSrv);
 
-      loader.load(this, this.uid, 'manage-folder-dashboards');
+      loader.load(this, this.uid, 'manage-folder-dashboards').then(folder => {
+        if ($location.path() !== folder.meta.url) {
+          $location.path(folder.meta.url).replace();
+        }
+      });
     }
   }
 }

+ 6 - 2
public/app/features/dashboard/folder_permissions_ctrl.ts

@@ -6,11 +6,15 @@ export class FolderPermissionsCtrl {
   uid: string;
 
   /** @ngInject */
-  constructor(private backendSrv, navModelSrv, private $routeParams) {
+  constructor(private backendSrv, navModelSrv, private $routeParams, $location) {
     if (this.$routeParams.uid) {
       this.uid = $routeParams.uid;
 
-      new FolderPageLoader(this.backendSrv).load(this, this.uid, 'manage-folder-permissions');
+      new FolderPageLoader(this.backendSrv).load(this, this.uid, 'manage-folder-permissions').then(folder => {
+        if ($location.path() !== folder.meta.url) {
+          $location.path(`${folder.meta.url}/permissions`).replace();
+        }
+      });
     }
   }
 }

+ 8 - 4
public/app/features/dashboard/folder_settings_ctrl.ts

@@ -18,10 +18,14 @@ export class FolderSettingsCtrl {
       this.uid = $routeParams.uid;
 
       this.folderPageLoader = new FolderPageLoader(this.backendSrv);
-      this.folderPageLoader.load(this, this.uid, 'manage-folder-settings').then(result => {
-        this.dashboard = result.dashboard;
-        this.meta = result.meta;
-        this.canSave = result.meta.canSave;
+      this.folderPageLoader.load(this, this.uid, 'manage-folder-settings').then(folder => {
+        if ($location.path() !== folder.meta.url) {
+          $location.path(`${folder.meta.url}/settings`).replace();
+        }
+
+        this.dashboard = folder.dashboard;
+        this.meta = folder.meta;
+        this.canSave = folder.meta.canSave;
         this.title = this.dashboard.title;
       });
     }

+ 4 - 0
public/app/routes/dashboard_loaders.ts

@@ -29,6 +29,10 @@ export class LoadDashboardCtrl {
     }
 
     dashboardLoaderSrv.loadDashboard($routeParams.type, $routeParams.slug, $routeParams.uid).then(function(result) {
+      if ($location.path() !== result.meta.url) {
+        $location.path(result.meta.url).replace();
+      }
+
       if ($routeParams.keepRows) {
         result.meta.keepRows = true;
       }