import React, {useEffect, useState} from "react"; import { Button, HStack, Menu, MenuButton, MenuItem, MenuList, Stack, Table, Tbody, Td, Thead, Tr, useToast, } from "@chakra-ui/react"; import Header from "./Header"; import {deleteRecordByPrimaryKey, getSearchQuery} from "./../utils/GenericQueries"; import {useMutation, useQuery} from "@apollo/client"; import {ChevronDownIcon} from "@chakra-ui/icons"; import ConfirmDialog from "../Custom/ConfirmDialog"; import {getSinglePrimaryKey} from "./../utils/CustomeTableUtils"; const PodcastTable = (props: any) => { const toast = useToast(); const {tablename, col, refetchdata} = props; const searchQuery = getSearchQuery(tablename, col); const {loading, error, data, refetch} = useQuery(searchQuery); const {setIsSelected, editRecord, createRecord} = props; const [deleteRecord] = useMutation(deleteRecordByPrimaryKey(tablename, col)); const [itemToBeDeleted, setItemToBeDeleted] = useState(null) const [isDialogOpen, setDialogOpen] = useState(false); useEffect(() => { if (refetchdata) { refetch(); } }, [refetchdata]) function enableCreate(e: any) { setIsSelected(true); createRecord(); } function handleEdit(item: any) { setIsSelected(true) editRecord(item) } function handleDelete(item: any) { setItemToBeDeleted(item); setDialogOpen(true); } function deleteCallBack(shouldItemBeDeleted: any) { setDialogOpen(false); if (itemToBeDeleted == null) return; if (shouldItemBeDeleted) { let primaryKey = getSinglePrimaryKey(col) let deleteObj = { [primaryKey]: itemToBeDeleted[primaryKey] } deleteRecord({ variables: deleteObj }).then(r => { toast({ title: 'Deleted', status: 'success', duration: 3000, isClosable: true, }); refetch(); }).catch(e => { console.log("error ", e) toast({ title: "Error", description: e.message, status: "error", duration: 3000, isClosable: true }) }) } } if (loading) { return
Loading...
; } if (error) { console.log("error ", error); return
Error...
; } if (data) return ( <>
{data[`${tablename}`].map((item: any) => ( )) }
Category Title Publish Date Actions
{item.category} {item.title} {item.publish_date} }> Actions handleEdit(item)}>Edit handleDelete(item)}>Delete
); return
No Data
; }; export default PodcastTable;