MessageItem.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. export 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>
  18. <td style={{ width: 200 }}>{format(timestamp, 'yyyy-MM-dd HH:mm:ss')}</td>
  19. <td style={{ width: 150 }}>{offset}</td>
  20. <td style={{ width: 100 }}>{partition}</td>
  21. <td style={{ wordBreak: 'break-word' }}>
  22. {content && (
  23. <JSONTree
  24. data={content}
  25. hideRoot
  26. invertTheme={false}
  27. theme={{
  28. tree: ({ style }) => ({
  29. style: {
  30. ...style,
  31. backgroundColor: undefined,
  32. marginLeft: 0,
  33. marginTop: 0,
  34. },
  35. }),
  36. value: ({ style }) => ({
  37. style: { ...style, marginLeft: 0 },
  38. }),
  39. base0D: '#3273dc',
  40. base0B: '#363636',
  41. }}
  42. />
  43. )}
  44. </td>
  45. </tr>
  46. );
  47. export default MessageItem;