contextSummaryGPU.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import styled from '@emotion/styled';
  2. import {AnnotatedText} from 'sentry/components/events/meta/annotatedText';
  3. import TextOverflow from 'sentry/components/textOverflow';
  4. import {t} from 'sentry/locale';
  5. import {space} from 'sentry/styles/space';
  6. import {Meta} from 'sentry/types';
  7. import {defined} from 'sentry/utils';
  8. import ContextSummaryNoSummary from './contextSummaryNoSummary';
  9. import Item from './item';
  10. import {ContextItemProps} from './types';
  11. import {generateIconName} from './utils';
  12. type Data = {
  13. name: string;
  14. vendor_name?: string;
  15. };
  16. type VersionElement = {
  17. subject: string;
  18. value: string;
  19. meta?: Meta;
  20. };
  21. type Props = ContextItemProps<Data, 'gpu'>;
  22. export function ContextSummaryGPU({data, meta}: Props) {
  23. if (Object.keys(data).length === 0) {
  24. return <ContextSummaryNoSummary title={t('Unknown GPU')} />;
  25. }
  26. const getVersionElement = (): VersionElement => {
  27. if (defined(data.vendor_name)) {
  28. return {
  29. subject: t('Vendor:'),
  30. value: data.vendor_name,
  31. meta: meta.vendor_name?.[''],
  32. };
  33. }
  34. return {
  35. subject: t('Vendor:'),
  36. value: t('Unknown'),
  37. };
  38. };
  39. const versionElement = getVersionElement();
  40. return (
  41. <Item icon={generateIconName(data.vendor_name ? data.vendor_name : data.name)}>
  42. <h3>
  43. <AnnotatedText value={data.name} meta={meta.name?.['']} />
  44. </h3>
  45. <TextOverflow isParagraph>
  46. <Subject>{versionElement.subject}</Subject>
  47. <AnnotatedText value={versionElement.value} meta={versionElement.meta} />
  48. </TextOverflow>
  49. </Item>
  50. );
  51. }
  52. const Subject = styled('strong')`
  53. margin-right: ${space(0.5)};
  54. `;