MessageItem.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import React from 'react';
  2. import { format } from 'date-fns';
  3. import JSONTree from 'react-json-tree';
  4. import { TopicMessage } from 'generated-sources';
  5. interface MessageItemProp {
  6. partition: TopicMessage['partition'];
  7. offset: TopicMessage['offset'];
  8. timestamp: TopicMessage['timestamp'];
  9. content: TopicMessage['content'];
  10. }
  11. const MessageItem: React.FC<MessageItemProp> = ({
  12. partition,
  13. offset,
  14. timestamp,
  15. content,
  16. }) => (
  17. <tr key="{timestamp}">
  18. <td style={{ width: 200 }}>
  19. {timestamp ? format(timestamp, 'yyyy-MM-dd HH:mm:ss') : null}
  20. </td>
  21. <td style={{ width: 150 }}>{offset}</td>
  22. <td style={{ width: 100 }}>{partition}</td>
  23. <td key="{content}" style={{ wordBreak: 'break-word' }}>
  24. {content && (
  25. <JSONTree
  26. data={content}
  27. hideRoot
  28. invertTheme={false}
  29. theme={{
  30. tree: ({ style }) => ({
  31. style: {
  32. ...style,
  33. backgroundColor: undefined,
  34. marginLeft: 0,
  35. marginTop: 0,
  36. },
  37. }),
  38. value: ({ style }) => ({
  39. style: { ...style, marginLeft: 0 },
  40. }),
  41. base0D: '#3273dc',
  42. base0B: '#363636',
  43. }}
  44. />
  45. )}
  46. </td>
  47. </tr>
  48. );
  49. export default MessageItem;