folder_page_loader.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. export class FolderPageLoader {
  2. constructor(private backendSrv, private $routeParams) {}
  3. load(ctrl, folderId, activeChildId) {
  4. ctrl.navModel = {
  5. main: {
  6. icon: 'fa fa-folder-open',
  7. id: 'manage-folder',
  8. subTitle: 'Manage folder dashboards & permissions',
  9. url: '',
  10. text: '',
  11. breadcrumbs: [{ title: 'Dashboards', url: 'dashboards' }],
  12. children: [
  13. {
  14. active: activeChildId === 'manage-folder-dashboards',
  15. icon: 'fa fa-fw fa-th-large',
  16. id: 'manage-folder-dashboards',
  17. text: 'Dashboards',
  18. url: 'dashboards',
  19. },
  20. {
  21. active: activeChildId === 'manage-folder-permissions',
  22. icon: 'fa fa-fw fa-lock',
  23. id: 'manage-folder-permissions',
  24. text: 'Permissions',
  25. url: 'dashboards/permissions',
  26. },
  27. {
  28. active: activeChildId === 'manage-folder-settings',
  29. icon: 'fa fa-fw fa-cog',
  30. id: 'manage-folder-settings',
  31. text: 'Settings',
  32. url: 'dashboards/settings',
  33. },
  34. ],
  35. },
  36. };
  37. return this.backendSrv.getDashboard('db', this.$routeParams.slug).then(result => {
  38. const folderTitle = result.dashboard.title;
  39. ctrl.navModel.main.text = folderTitle;
  40. const folderUrl = this.createFolderUrl(folderId, result.meta.slug);
  41. const dashTab = ctrl.navModel.main.children.find(child => child.id === 'manage-folder-dashboards');
  42. dashTab.url = folderUrl;
  43. if (result.meta.canAdmin) {
  44. const permTab = ctrl.navModel.main.children.find(child => child.id === 'manage-folder-permissions');
  45. permTab.url = folderUrl + '/permissions';
  46. const settingsTab = ctrl.navModel.main.children.find(child => child.id === 'manage-folder-settings');
  47. settingsTab.url = folderUrl + '/settings';
  48. } else {
  49. ctrl.navModel.main.children = [dashTab];
  50. }
  51. return result;
  52. });
  53. }
  54. createFolderUrl(folderId: number, slug: string) {
  55. return `dashboards/folder/${folderId}/${slug}`;
  56. }
  57. }