Tasks.tsx 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import React from 'react';
  2. import { Table } from 'components/common/table/Table/Table.styled';
  3. import TableHeaderCell from 'components/common/table/TableHeaderCell/TableHeaderCell';
  4. import {
  5. useConnectorTasks,
  6. useRestartConnectorTask,
  7. } from 'lib/hooks/api/kafkaConnect';
  8. import useAppParams from 'lib/hooks/useAppParams';
  9. import { RouterParamsClusterConnectConnector } from 'lib/paths';
  10. import getTagColor from 'components/common/Tag/getTagColor';
  11. import { Tag } from 'components/common/Tag/Tag.styled';
  12. import { Dropdown, DropdownItem } from 'components/common/Dropdown';
  13. const Tasks: React.FC = () => {
  14. const routerProps = useAppParams<RouterParamsClusterConnectConnector>();
  15. const { data: tasks } = useConnectorTasks(routerProps);
  16. const restartMutation = useRestartConnectorTask(routerProps);
  17. const restartTaskHandler = (taskId?: number) => {
  18. if (taskId === undefined) return;
  19. restartMutation.mutateAsync(taskId);
  20. };
  21. return (
  22. <Table isFullwidth>
  23. <thead>
  24. <tr>
  25. <TableHeaderCell title="ID" />
  26. <TableHeaderCell title="Worker" />
  27. <TableHeaderCell title="State" />
  28. <TableHeaderCell title="Trace" />
  29. <TableHeaderCell />
  30. </tr>
  31. </thead>
  32. <tbody>
  33. {tasks?.length === 0 && (
  34. <tr>
  35. <td colSpan={10}>No tasks found</td>
  36. </tr>
  37. )}
  38. {tasks?.map((task) => (
  39. <tr key={task.status?.id}>
  40. <td>{task.status?.id}</td>
  41. <td>{task.status?.workerId}</td>
  42. <td>
  43. <Tag color={getTagColor(task.status.state)}>
  44. {task.status.state}
  45. </Tag>
  46. </td>
  47. <td>{task.status.trace || 'null'}</td>
  48. <td style={{ width: '5%' }}>
  49. <div>
  50. <Dropdown>
  51. <DropdownItem
  52. onClick={() => restartTaskHandler(task.id?.task)}
  53. danger
  54. >
  55. <span>Restart task</span>
  56. </DropdownItem>
  57. </Dropdown>
  58. </div>
  59. </td>
  60. </tr>
  61. ))}
  62. </tbody>
  63. </Table>
  64. );
  65. };
  66. export default Tasks;