UserTeams.tsx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import React, { PureComponent } from 'react';
  2. import { Team } from 'app/types';
  3. import { LoadingPlaceholder } from '@grafana/ui';
  4. export interface Props {
  5. teams: Team[];
  6. isLoading: boolean;
  7. loadTeams: () => void;
  8. }
  9. export class UserTeams extends PureComponent<Props> {
  10. componentDidMount() {
  11. this.props.loadTeams();
  12. }
  13. render() {
  14. const { isLoading, teams } = this.props;
  15. if (isLoading) {
  16. return <LoadingPlaceholder text="Loading teams..." />;
  17. }
  18. return (
  19. <>
  20. {teams.length > 0 && (
  21. <>
  22. <h3 className="page-sub-heading">Teams</h3>
  23. <div className="gf-form-group">
  24. <table className="filter-table form-inline">
  25. <thead>
  26. <tr>
  27. <th />
  28. <th>Name</th>
  29. <th>Email</th>
  30. <th>Members</th>
  31. </tr>
  32. </thead>
  33. <tbody>
  34. {teams.map((team: Team, index) => {
  35. return (
  36. <tr key={index}>
  37. <td className="width-4 text-center">
  38. <img className="filter-table__avatar" src={team.avatarUrl} />
  39. </td>
  40. <td>{team.name}</td>
  41. <td>{team.email}</td>
  42. <td>{team.memberCount}</td>
  43. </tr>
  44. );
  45. })}
  46. </tbody>
  47. </table>
  48. </div>
  49. </>
  50. )}
  51. </>
  52. );
  53. }
  54. }
  55. export default UserTeams;