folder_page_loader.ts 2.3 KB

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