folder_page_loader.ts 2.1 KB

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