123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- import React from 'react';
- import { useHistory, useParams } from 'react-router-dom';
- import { ConnectorState } from 'generated-sources';
- import { ClusterName, ConnectName, ConnectorName } from 'redux/interfaces';
- import {
- clusterConnectConnectorEditPath,
- clusterConnectorsPath,
- } from 'lib/paths';
- import ConfirmationModal from 'components/common/ConfirmationModal/ConfirmationModal';
- import styled from 'styled-components';
- import { Button } from 'components/common/Button/Button';
- interface RouterParams {
- clusterName: ClusterName;
- connectName: ConnectName;
- connectorName: ConnectorName;
- }
- const ConnectorActionsWrapperStyled = styled.div`
- display: flex;
- gap: 8px;
- `;
- export interface ActionsProps {
- deleteConnector(
- clusterName: ClusterName,
- connectName: ConnectName,
- connectorName: ConnectorName
- ): Promise<void>;
- isConnectorDeleting: boolean;
- connectorStatus?: ConnectorState;
- restartConnector(
- clusterName: ClusterName,
- connectName: ConnectName,
- connectorName: ConnectorName
- ): void;
- pauseConnector(
- clusterName: ClusterName,
- connectName: ConnectName,
- connectorName: ConnectorName
- ): void;
- resumeConnector(
- clusterName: ClusterName,
- connectName: ConnectName,
- connectorName: ConnectorName
- ): void;
- isConnectorActionRunning: boolean;
- }
- const Actions: React.FC<ActionsProps> = ({
- deleteConnector,
- isConnectorDeleting,
- connectorStatus,
- restartConnector,
- pauseConnector,
- resumeConnector,
- isConnectorActionRunning,
- }) => {
- const { clusterName, connectName, connectorName } = useParams<RouterParams>();
- const history = useHistory();
- const [
- isDeleteConnectorConfirmationVisible,
- setIsDeleteConnectorConfirmationVisible,
- ] = React.useState(false);
- const deleteConnectorHandler = React.useCallback(async () => {
- try {
- await deleteConnector(clusterName, connectName, connectorName);
- history.push(clusterConnectorsPath(clusterName));
- } catch {
- // do not redirect
- }
- }, [deleteConnector, clusterName, connectName, connectorName]);
- const restartConnectorHandler = React.useCallback(() => {
- restartConnector(clusterName, connectName, connectorName);
- }, [restartConnector, clusterName, connectName, connectorName]);
- const pauseConnectorHandler = React.useCallback(() => {
- pauseConnector(clusterName, connectName, connectorName);
- }, [pauseConnector, clusterName, connectName, connectorName]);
- const resumeConnectorHandler = React.useCallback(() => {
- resumeConnector(clusterName, connectName, connectorName);
- }, [resumeConnector, clusterName, connectName, connectorName]);
- return (
- <ConnectorActionsWrapperStyled>
- {connectorStatus === ConnectorState.RUNNING && (
- <Button
- buttonSize="M"
- buttonType="primary"
- type="button"
- onClick={pauseConnectorHandler}
- disabled={isConnectorActionRunning}
- >
- <span>
- <i className="fas fa-pause" />
- </span>
- <span>Pause</span>
- </Button>
- )}
- {connectorStatus === ConnectorState.PAUSED && (
- <Button
- buttonSize="M"
- buttonType="primary"
- type="button"
- onClick={resumeConnectorHandler}
- disabled={isConnectorActionRunning}
- >
- <span>
- <i className="fas fa-play" />
- </span>
- <span>Resume</span>
- </Button>
- )}
- <Button
- buttonSize="M"
- buttonType="primary"
- type="button"
- onClick={restartConnectorHandler}
- disabled={isConnectorActionRunning}
- >
- <span>
- <i className="fas fa-sync-alt" />
- </span>
- <span>Restart all tasks</span>
- </Button>
- <Button
- buttonSize="M"
- buttonType="primary"
- type="button"
- isLink
- disabled={isConnectorActionRunning}
- to={clusterConnectConnectorEditPath(
- clusterName,
- connectName,
- connectorName
- )}
- >
- <span>
- <i className="fas fa-pencil-alt" />
- </span>
- <span>Edit config</span>
- </Button>
- <Button
- buttonSize="M"
- buttonType="secondary"
- type="button"
- onClick={() => setIsDeleteConnectorConfirmationVisible(true)}
- disabled={isConnectorActionRunning}
- >
- <span>
- <i className="far fa-trash-alt" />
- </span>
- <span>Delete</span>
- </Button>
- <ConfirmationModal
- isOpen={isDeleteConnectorConfirmationVisible}
- onCancel={() => setIsDeleteConnectorConfirmationVisible(false)}
- onConfirm={deleteConnectorHandler}
- isConfirming={isConnectorDeleting}
- >
- Are you sure you want to remove <b>{connectorName}</b> connector?
- </ConfirmationModal>
- </ConnectorActionsWrapperStyled>
- );
- };
- export default Actions;
|