Skip to content
Snippets Groups Projects
implementations.tsx 2.7 KiB
Newer Older
bruno's avatar
bruno committed
import React from 'react'

brunoravera's avatar
brunoravera committed
import {
  Text,
  TableContainer,
  Table,
  TableCaption,
  Thead,
  Tr,
  Th,
  Tbody,
  Td,
  Tooltip,
  HStack,
  IconButton,
  Icon,
} from '@chakra-ui/react'
import { FaEye, FaPlay, FaTrash } from 'react-icons/fa'
brunoravera's avatar
brunoravera committed

brunoravera's avatar
brunoravera committed
import { Implementation, Pattern } from 'src/models'
brunoravera's avatar
brunoravera committed
import { GetPatternQuery } from '../patterns/query-builder'
brunoravera's avatar
brunoravera committed

brunoravera's avatar
brunoravera committed
const tableHeaders = ['Nombre', 'Descripcion', 'Fecha de creacion', '']
brunoravera's avatar
brunoravera committed

export type ImplementationsProps = {
  patternId: Pattern['id']
}
export const Implementations: React.FC<ImplementationsProps> = ({
  patternId,
}) => {
brunoravera's avatar
brunoravera committed
  const patternQuery = GetPatternQuery.useQuery({ id: patternId })
  const implementations = [] // todo new endpoint
brunoravera's avatar
brunoravera committed
  const tableCaption =
    implementations.length === 0
      ? `No hay implementaciones disponibles de ${patternQuery.data?.title}`
      : `Implementaciones disponibles de ${patternQuery.data?.title}`
brunoravera's avatar
brunoravera committed

  return (
    <TableContainer>
brunoravera's avatar
brunoravera committed
      <Table variant="striped" size="lg">
brunoravera's avatar
brunoravera committed
        <TableCaption>{tableCaption}</TableCaption>
brunoravera's avatar
brunoravera committed
        <Thead>
          <Tr>
            {tableHeaders.map((header, index) => (
              <Th key={`th-${index}`}>{header}</Th>
            ))}
          </Tr>
        </Thead>
        <Tbody>
brunoravera's avatar
brunoravera committed
          {implementations.map((implementation, index) => (
brunoravera's avatar
brunoravera committed
            <Tr key={`implementation-${implementation.title}-${index}`}>
              <Td>{implementation.title}</Td>
              <Td>
                <Tooltip label={implementation.description} hasArrow>
                  <Text isTruncated maxW="sm">
                    {implementation.description}
                  </Text>
                </Tooltip>
              </Td>
              <Td>{new Date(implementation.creationDate).toUTCString()}</Td>
              <Td>
                <ActionsRow _implementation={implementation} />
              </Td>
            </Tr>
          ))}
        </Tbody>
      </Table>
    </TableContainer>
  )
}
type ActionsRowProps = {
  _implementation: Implementation
}
const ActionsRow: React.FC<ActionsRowProps> = ({ _implementation }) => {
bruno's avatar
bruno committed
  return (
brunoravera's avatar
brunoravera committed
    <HStack>
brunoravera's avatar
brunoravera committed
      <Tooltip label={<Text>Ver detalles</Text>}>
        <IconButton
          aria-label="view implementation"
          variant="unstyled"
          icon={<Icon as={FaEye} />}
        />
      </Tooltip>
      <Tooltip label={<Text>Correr tests</Text>}>
        <IconButton
          aria-label="test implementation"
          variant="unstyled"
          icon={<Icon as={FaPlay} />}
        />
      </Tooltip>
      <Tooltip label={<Text>Eliminar implementacion</Text>}>
        <IconButton
          aria-label="delete implementation"
          variant="unstyled"
          icon={<Icon as={FaTrash} />}
        />
      </Tooltip>
brunoravera's avatar
brunoravera committed
    </HStack>
bruno's avatar
bruno committed
  )
}