folder_page_loader.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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' }, { title: ' ' }],
  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 = '';
  41. ctrl.navModel.main.breadcrumbs = [{ title: 'Dashboards', url: 'dashboards' }, { title: folderTitle }];
  42. const folderUrl = this.createFolderUrl(folderId, result.meta.type, result.meta.slug);
  43. const dashTab = _.find(ctrl.navModel.main.children, {
  44. id: 'manage-folder-dashboards',
  45. });
  46. dashTab.url = folderUrl;
  47. if (result.meta.canAdmin) {
  48. const permTab = _.find(ctrl.navModel.main.children, {
  49. id: 'manage-folder-permissions',
  50. });
  51. permTab.url = folderUrl + '/permissions';
  52. const settingsTab = _.find(ctrl.navModel.main.children, {
  53. id: 'manage-folder-settings',
  54. });
  55. settingsTab.url = folderUrl + '/settings';
  56. } else {
  57. ctrl.navModel.main.children = [dashTab];
  58. }
  59. return result;
  60. });
  61. }
  62. createFolderUrl(folderId: number, type: string, slug: string) {
  63. return `dashboards/folder/${folderId}/${slug}`;
  64. }
  65. }