import React, {useState} from "react";
import {useMutation, useQuery} from "@apollo/client";
import {Button, Table, Tbody, Td, Text, Th, Thead, Tr, useToast,} from "@chakra-ui/react";
import CustomEditModal from "./CustomEditModal";
import {deleteRecordByPrimaryKey, getSearchQuery,} from "../utils/GenericQueries";
import {Stack} from "@chakra-ui/layout";
import {getColumnsWithoutForeignkey, getSinglePrimaryKey,} from "../utils/CustomeTableUtils";
import {underScoreToCapitalize} from "../utils/TransformText";
function BabbuTable(props: any) {
const toast = useToast();
const {isModal, title, tablename, col} = props;
const searchQuery = getSearchQuery(tablename, col);
const {loading, error, data, refetch} = useQuery(searchQuery);
const [formdata, setFormData] = useState(null);
//delete row
const [deleteRow, {loading: deleteLoading}] = useMutation(
deleteRecordByPrimaryKey(tablename, col)
);
//modal
const [isAddEdit, setIsAddEdit] = useState(false);
const [isUpdate, setIsUpdate] = useState(false);
const addRecord = () => {
let item: any = {};
for (let i = 0; i < col.length; i++) {
item[col[i].name] = "";
}
setFormData(item);
setIsUpdate(false);
setIsAddEdit(true);
};
const editRecord = (item: any) => {
setFormData(item);
setIsUpdate(true);
setIsAddEdit(true);
};
const deleteRecord = (item: any) => {
if (deleteLoading) {
return;
}
let primaryKey = getSinglePrimaryKey(col);
let deleteObj = {
[primaryKey]: item[primaryKey],
};
let confirm = window.confirm("Are you sure?");
if (confirm) {
deleteRow({
variables: deleteObj,
})
.then((r) => {
refetch();
})
.catch((e) => {
console.log("error ", e);
toast({
title: "Error",
description: e.message,
status: "error",
duration: 9000,
isClosable: true,
});
});
}
};
if (loading) {
return
Loading...
;
}
if (error) {
console.log("error ", error);
return Error...
;
}
if (data)
return (
<>
{isAddEdit == false ? (
{title}
{/*
{getColumnsWithoutForeignkey(col).map((item: any) => {
return | {underScoreToCapitalize(item.name)} |
})}
{data[`${tablename}`].map((item: any) => (
{getColumnsWithoutForeignkey(col).map((mycol: any) => {
return | editRecord(item)}>{item[mycol.name]} |
})}
{
deleteRecord(item)
}}
variant="outline"
colorScheme="red.200"
ml={2}
size="xs"
icon={}
aria-label={'Delete'}
/>
|
))}
*/}
{getColumnsWithoutForeignkey(col).map((item: any) => {
return (
|
{underScoreToCapitalize(item.name)}
|
);
})}
{data[`${tablename}`].map((item: any) => (
{getColumnsWithoutForeignkey(col).map((mycol: any) => {
return (
| editRecord(item)}
>
{item[mycol.name]}
|
);
})}
|
{/* | */}
{/* {
deleteRecord(item);
}}
variant="outline"
colorScheme="red.200"
ml={2}
size="xs"
icon={}
aria-label={"Delete"}
/> */}
))}
) : (
setIsAddEdit(false)}
refetch={() => {
setIsAddEdit(false);
refetch();
}}
/>
)}
>
);
return No Data
;
}
export default BabbuTable;