folder_page_loader.ts 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. 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. return result;
  56. });
  57. }
  58. createFolderUrl(folderId: number, type: string, slug: string) {
  59. return `dashboards/folder/${folderId}/${slug}`;
  60. }
  61. }