navModel.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { Team, NavModelItem, NavModel, TeamPermissionLevel } 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. permission: TeamPermissionLevel.Member,
  47. });
  48. let node: NavModelItem;
  49. // find active page
  50. for (const child of main.children) {
  51. if (child.id.indexOf(pageName) > 0) {
  52. child.active = true;
  53. node = child;
  54. break;
  55. }
  56. }
  57. return {
  58. main: main,
  59. node: node,
  60. };
  61. }