navModel.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import { Team, NavModelItem, NavModel } from 'app/types';
  2. import config from 'app/core/config';
  3. export function buildNavModel(team: Team): NavModelItem {
  4. const navModel = {
  5. img: team.avatarUrl,
  6. id: 'team-' + team.id,
  7. subTitle: 'Manage members & settings',
  8. url: '',
  9. text: team.name,
  10. breadcrumbs: [{ title: 'Teams', url: 'org/teams' }],
  11. children: [
  12. {
  13. active: false,
  14. icon: 'gicon gicon-team',
  15. id: `team-members-${team.id}`,
  16. text: 'Members',
  17. url: `org/teams/edit/${team.id}/members`,
  18. },
  19. {
  20. active: false,
  21. icon: 'fa fa-fw fa-sliders',
  22. id: `team-settings-${team.id}`,
  23. text: 'Settings',
  24. url: `org/teams/edit/${team.id}/settings`,
  25. },
  26. ],
  27. };
  28. if (config.buildInfo.isEnterprise) {
  29. navModel.children.push({
  30. active: false,
  31. icon: 'fa fa-fw fa-refresh',
  32. id: `team-groupsync-${team.id}`,
  33. text: 'External group sync',
  34. url: `org/teams/edit/${team.id}/groupsync`,
  35. });
  36. }
  37. return navModel;
  38. }
  39. export function getTeamLoadingNav(pageName: string): NavModel {
  40. const main = buildNavModel({
  41. avatarUrl: 'public/img/user_profile.png',
  42. id: 1,
  43. name: 'Loading',
  44. email: 'loading',
  45. memberCount: 0,
  46. });
  47. let node: NavModelItem;
  48. // find active page
  49. for (const child of main.children) {
  50. if (child.id.indexOf(pageName) > 0) {
  51. child.active = true;
  52. node = child;
  53. break;
  54. }
  55. }
  56. return {
  57. main: main,
  58. node: node,
  59. };
  60. }