Skip to content
Snippets Groups Projects
animations.tsx 2.34 KiB
Newer Older
brunoravera's avatar
brunoravera committed
import React from 'react'
brunoravera's avatar
brunoravera committed

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

brunoravera's avatar
brunoravera committed
import { Animation, 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 = ['Titulo', 'Descripcion', 'Fecha de creacion', '']

export type AnimationsProps = {
  patternId: Pattern['id']
}
export const Animations: React.FC<AnimationsProps> = ({ patternId }) => {
brunoravera's avatar
brunoravera committed
  const patternQuery = GetPatternQuery.useQuery({ id: patternId })
  const animations = []
brunoravera's avatar
brunoravera committed
  const tableCaption =
    animations.length === 0
      ? `No hay animaciones disponibles de ${patternQuery.data?.title}`
      : `Animaciones disponibles de ${patternQuery.data?.title}`
brunoravera's avatar
brunoravera committed

  return (
    <TableContainer>
      <Table variant="simple" 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
          {animations.map((animation, index) => (
brunoravera's avatar
brunoravera committed
            <Tr key={`animation-${animation.title}-${index}`}>
              <Td>{animation.title}</Td>
              <Td>
                <Tooltip label={animation.description} hasArrow>
                  <Text isTruncated maxW="sm">
                    {animation.description}
                  </Text>
                </Tooltip>
              </Td>
              <Td>{new Date(animation.creationDate).toUTCString()}</Td>
              <Td>
                <ActionsRow _animation={animation} />
              </Td>
            </Tr>
          ))}
        </Tbody>
      </Table>
    </TableContainer>
  )
}

type ActionsRowProps = {
  _animation: Animation
}
const ActionsRow: React.FC<ActionsRowProps> = ({ _animation }) => {
  return (
    <HStack>
brunoravera's avatar
brunoravera committed
      <Tooltip label={<Text>Ver</Text>}>
        <IconButton
          aria-label="view animation"
          variant="unstyled"
          icon={<Icon as={FaPlay} />}
        />
      </Tooltip>
      <Tooltip label={<Text>Eliminar animacion</Text>}>
        <IconButton
          aria-label="delete animation"
          variant="unstyled"
          icon={<Icon as={FaTrash} />}
        />
      </Tooltip>
brunoravera's avatar
brunoravera committed
    </HStack>
  )
}