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: [
  13. { title: 'Dashboards', url: '/dashboards' },
  14. { title: ' ' },
  15. ],
  16. children: [
  17. {
  18. active: activeChildId === 'manage-folder-dashboards',
  19. icon: 'fa fa-fw fa-th-large',
  20. id: 'manage-folder-dashboards',
  21. text: 'Dashboards',
  22. url: '/dashboards'
  23. },
  24. {
  25. active: activeChildId === 'manage-folder-permissions',
  26. icon: 'fa fa-fw fa-lock',
  27. id: 'manage-folder-permissions',
  28. text: 'Permissions',
  29. url: '/dashboards/permissions'
  30. },
  31. {
  32. active: activeChildId === 'manage-folder-settings',
  33. icon: 'fa fa-fw fa-cog',
  34. id: 'manage-folder-settings',
  35. text: 'Settings',
  36. url: '/dashboards/settings'
  37. }
  38. ]
  39. }
  40. };
  41. return this.backendSrv.getDashboard('db', this.$routeParams.slug).then(result => {
  42. const folderTitle = result.dashboard.title;
  43. ctrl.navModel.main.text = '';
  44. ctrl.navModel.main.breadcrumbs = [
  45. { title: 'Dashboards', url: '/dashboards' },
  46. { title: folderTitle }
  47. ];
  48. const folderUrl = this.createFolderUrl(folderId, result.meta.type, result.meta.slug);
  49. const dashTab = _.find(ctrl.navModel.main.children, { id: 'manage-folder-dashboards' });
  50. dashTab.url = folderUrl;
  51. const permTab = _.find(ctrl.navModel.main.children, { id: 'manage-folder-permissions' });
  52. permTab.url = folderUrl + '/permissions';
  53. const settingsTab = _.find(ctrl.navModel.main.children, { id: 'manage-folder-settings' });
  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. }