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. }