contextSummaryGPU.tsx 1.8 KB

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