customerPlatforms.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import styled from '@emotion/styled';
  2. import {PlatformIcon} from 'platformicons';
  3. import ExternalLink from 'sentry/components/links/externalLink';
  4. import {space} from 'sentry/styles/space';
  5. import ResultGrid from 'admin/components/resultGrid';
  6. type Props = Partial<React.ComponentProps<typeof ResultGrid>> & {
  7. orgId: string;
  8. };
  9. function CustomerPlatforms({orgId, ...props}: Props) {
  10. return (
  11. <ResultGrid
  12. path={`/_admin/customers/${orgId}/`}
  13. endpoint={`/internal-stats/${orgId}/platforms/`}
  14. method="GET"
  15. defaultParams={{per_page: 10}}
  16. useQueryString={false}
  17. columns={[
  18. <th key="name">Project</th>,
  19. <th key="platform" style={{width: 250}}>
  20. Platform
  21. </th>,
  22. ]}
  23. columnsForRow={(row: any) => [
  24. <td key="name">
  25. <ExternalLink href={`/organizations/${orgId}/${row.slug}/`}>
  26. {row.project}
  27. </ExternalLink>
  28. </td>,
  29. <td key="platform">
  30. <PlatformName>
  31. <PlatformIcon platform={row.platform} size={16} />
  32. {row.platform}
  33. </PlatformName>
  34. </td>,
  35. ]}
  36. {...props}
  37. />
  38. );
  39. }
  40. const PlatformName = styled('div')`
  41. display: flex;
  42. align-items: center;
  43. gap: ${space(1)};
  44. `;
  45. export default CustomerPlatforms;