contextSummaryGPU.tsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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 {Event, Meta} from 'sentry/types';
  7. import {defined} from 'sentry/utils';
  8. import ContextSummaryNoSummary from './contextSummaryNoSummary';
  9. import generateClassName from './generateClassName';
  10. import Item from './item';
  11. type Props = {
  12. data: Data;
  13. meta: NonNullable<Event['_meta']>['gpu'];
  14. };
  15. type Data = {
  16. name: string;
  17. vendor_name?: string;
  18. };
  19. type VersionElement = {
  20. subject: string;
  21. value: string;
  22. meta?: Meta;
  23. };
  24. export function ContextSummaryGPU({data, meta}: Props) {
  25. if (Object.keys(data).length === 0) {
  26. return <ContextSummaryNoSummary title={t('Unknown GPU')} />;
  27. }
  28. const getVersionElement = (): VersionElement => {
  29. if (defined(data.vendor_name)) {
  30. return {
  31. subject: t('Vendor:'),
  32. value: data.vendor_name,
  33. meta: meta.vendor_name?.[''],
  34. };
  35. }
  36. return {
  37. subject: t('Vendor:'),
  38. value: t('Unknown'),
  39. };
  40. };
  41. const versionElement = getVersionElement();
  42. return (
  43. <Item
  44. className={generateClassName(data.vendor_name ? data.vendor_name : data.name)}
  45. icon={<span className="context-item-icon" />}
  46. >
  47. <h3>
  48. <AnnotatedText value={data.name} meta={meta.name?.['']} />
  49. </h3>
  50. <TextOverflow isParagraph>
  51. <Subject>{versionElement.subject}</Subject>
  52. <AnnotatedText value={versionElement.value} meta={versionElement.meta} />
  53. </TextOverflow>
  54. </Item>
  55. );
  56. }
  57. const Subject = styled('strong')`
  58. margin-right: ${space(0.5)};
  59. `;