import {DeleteOutlined, EditOutlined, GlobalOutlined, UnorderedListOutlined} from '@ant-design/icons/lib' import {useMutation, useQuery} from '@apollo/react-hooks' import {Button, message, Popconfirm, Space, Table, Tooltip} from 'antd' import {PaginationProps} from 'antd/es/pagination' import {ColumnsType} from 'antd/lib/table/interface' import {DateTime} from 'components/date.time' import {FormIsLive} from 'components/form/admin/is.live' import Structure from 'components/structure' import {TimeAgo} from 'components/time.ago' import {withAuth} from 'components/with.auth' import { ADMIN_PAGER_FORM_QUERY, AdminPagerFormEntryQueryData, AdminPagerFormQueryData, AdminPagerFormQueryVariables } from 'graphql/query/admin.pager.form.query' import {NextPage} from 'next' import Link from 'next/link' import React, {useState} from 'react' import {useTranslation} from 'react-i18next' import { ADMIN_FORM_DELETE_MUTATION, AdminFormDeleteMutationData, AdminFormDeleteMutationVariables } from '../../../graphql/mutation/admin.form.delete.mutation' const Index: NextPage = () => { const { t } = useTranslation() const [pagination, setPagination] = useState({ pageSize: 25, }) const [entries, setEntries] = useState() const {loading, refetch} = useQuery(ADMIN_PAGER_FORM_QUERY, { variables: { limit: pagination.pageSize, start: Math.max(0, pagination.current - 1) * pagination.pageSize || 0 }, onCompleted: ({pager}) => { setPagination({ ...pagination, total: pager.total, }) setEntries(pager.entries) } }) const [executeDelete] = useMutation(ADMIN_FORM_DELETE_MUTATION) const deleteForm = async (form) => { try { await executeDelete({ variables: { id: form.id } }) const next = entries.filter(entry => entry.id !== form.id) if (next.length === 0) { setPagination({ ...pagination, current: 1 }) } else { setEntries(next) } message.success(t('form:deleted')) } catch (e) { message.error(t('form:deleteError')) } } const columns: ColumnsType = [ { title: t('form:row.isLive'), dataIndex: 'isLive', render: live => }, { title: t('form:row.title'), dataIndex: 'title', }, { title: t('form:row.admin'), dataIndex: 'admin', render: user => ( ) }, { title: t('form:row.language'), dataIndex: 'language', render: lang => t(`language:${lang}`) }, { title: t('form:row.created'), dataIndex: 'created', render: date => }, { title: t('form:row.lastModified'), dataIndex: 'lastModified', render: date => }, { title: t('form:row.menu'), align: 'right', render: row => { return ( deleteForm(row)} okText={t('form:deleteNow')} okButtonProps={{ danger: true }} > ) } }, ] return ( , ]} > { setPagination(next) refetch() }} /> ) } export default withAuth(Index, ['admin'])