device.tsx 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import ContextData from 'sentry/components/contextData';
  2. import EventDataSection from 'sentry/components/events/eventDataSection';
  3. import {t} from 'sentry/locale';
  4. import {Event} from 'sentry/types/event';
  5. type Props = {
  6. event: Event;
  7. };
  8. const DeviceInterface = ({event}: Props) => {
  9. const data = event.device || {};
  10. const extras = Object.entries<any>(data.data || {}).map(([key, value]) => {
  11. return (
  12. <tr key={key}>
  13. <td className="key">{key}</td>
  14. <td className="value">
  15. <ContextData data={value} />
  16. </td>
  17. </tr>
  18. );
  19. });
  20. return (
  21. <EventDataSection type="device" title={t('Device')} wrapTitle>
  22. <table className="table key-value">
  23. <tbody>
  24. {data.name && (
  25. <tr>
  26. <td className="key">Name</td>
  27. <td className="value">
  28. <pre>{data.name}</pre>
  29. </td>
  30. </tr>
  31. )}
  32. {data.version && (
  33. <tr>
  34. <td className="key">Version</td>
  35. <td className="value">
  36. <pre>{data.version}</pre>
  37. </td>
  38. </tr>
  39. )}
  40. {data.build && (
  41. <tr>
  42. <td className="key">Build</td>
  43. <td className="value">
  44. <pre>{data.build}</pre>
  45. </td>
  46. </tr>
  47. )}
  48. {extras}
  49. </tbody>
  50. </table>
  51. </EventDataSection>
  52. );
  53. };
  54. export default DeviceInterface;