Files
Users-Wrench/src/components/MyPendingJobs/ParentWaitingTable.jsx
T
2023-09-25 16:58:11 +01:00

202 lines
9.2 KiB
React

import React, { useState, useEffect } from "react";
import transaction1 from "../../assets/images/recent-transation-1.png";
import transaction2 from "../../assets/images/recent-transation-2.png";
import transaction3 from "../../assets/images/recent-transation-3.png";
import LoadingSpinner from "../Spinners/LoadingSpinner";
import { handlePagingFunc } from "../Pagination/HandlePagination";
import PaginatedList from "../Pagination/PaginatedList";
import usersService from "../../services/UsersService";
import DeleteIcon from '../../assets/images/icon-delete.svg'
import DeleteTaskModal from "./DeleteTaskModal";
import SendReminderModal from "./SendReminderModal";
export default function ParentWaitingTable() {
// const transationFilterData = [
// {
// id: 1,
// name: "all",
// uniqueId: Math.random(),
// },
// {
// id: 2,
// name: "send",
// uniqueId: Math.random(),
// },
// {
// id: 3,
// name: "recent",
// uniqueId: Math.random(),
// },
// ];
// const [filterActive, setValue] = useState(transationFilterData[0].id);
// const filterHander = (value) => {
// setValue(value);
// };
const apiCall = new usersService()
let [reloadList, setReloadList] = useState(false) // STATE TO DETERMINE WHEN TO RELOAD THE FAMILY SUGGEST LIST
let [deleteTaskPopout, setDeleteTaskPopout] = useState({show:false, data:{}}) // HOLDS THE INFO OF DELETE TASK POPOUT
let [sendReminderPopout, setSendReminderPopout] = useState({show:false, data:{}}) // HOLDS THE INFO OF SEND REMINDER POPOUT
let [familySuggestList, setFamilySuggestList] = useState({loading: true, data:[]})
const [currentPage, setCurrentPage] = useState(0);
const indexOfFirstItem = Number(currentPage);
const indexOfLastItem =
Number(indexOfFirstItem) + Number(process.env.REACT_APP_ITEM_PER_PAGE);
const currentList = familySuggestList?.data?.slice(indexOfFirstItem, indexOfLastItem);
const handlePagination = (e) => {
handlePagingFunc(e, setCurrentPage);
};
useEffect(()=>{
apiCall.getFamilySuggestList().then(res => {
setFamilySuggestList({loading: false, data:res.data?.result_list})
}).catch(err => {
setFamilySuggestList({loading: false, data:[]})
console.log('ERROR==>Familysuggestlist', err)
})
},[reloadList])
return (
<div className="rounded-2xl bg-white dark:bg-dark-white flex flex-col justify-between">
{/* heading */}
{/* <div className="heading sm:flex justify-between items-center">
<div>
<ul className="flex space-x-5 items-center">
{transationFilterData.map((value) => (
<li
onClick={() => filterHander(value.id)}
key={value.uniqueId}
className={`text-base text-thin-light-gray hover:text-purple border-b dark:border-[#5356fb29] border-transparent hover:border-purple uppercase ${
filterActive === value.id ? "border-purple text-purple" : ""
}`}
>
{value.name}
</li>
))}
</ul>
</div>
</div> */}
{/* content */}
<div className="content min-h-[400px]">
{familySuggestList.loading ?
<div className="h-full flex justify-center items-center">
<LoadingSpinner size='16' color='sky-blue' />
</div>
:
familySuggestList && familySuggestList.length != 0?
<ul>
{currentList.map((item)=>{
// Image
let Image = require(`../../assets/images/family/${
item.banner || "default.jpg"
}`);
return (
<li key={item.uid} className="content-item py-2 border-b dark:border-[#5356fb29] border-light-purple hover:border-purple">
<div className="w-full flex justify-between items-center">
<div className="account-name flex space-x-4 items-center">
<div className="icon w-14 h-14 flex justify-center items-center">
<img src={Image} alt="" className="w-full h-full" />
</div>
<div className="w-full">
<p className="text-xl font-bold text-dark-gray dark:text-white mb-2 capitalize line-clamp-1">
{item.title}
</p>
<p className="text-sm text-thin-light-gray font-medium">
{item.description}
</p>
</div>
</div>
<div className="min-w-[120px] flex justify-start items-end px-2 gap-1">
<button
type="button"
className="p-1 border-2 border-red-400 rounded-md"
onClick={() => {
setDeleteTaskPopout({
show: true,
data: { ...item },
});
}}
>
<img className="min-w-[21px] h-[21px]" src={DeleteIcon} alt='delete-icon' />
</button>
<div className="">
<p className="text-sm font-bold text-dark-gray dark:text-white">
{new Date(item.added).toLocaleString().split(',')[0]}
</p>
<p
className="text-xs py-1.5 w-[50px] tracking-wide rounded-full bg-gold text-white flex justify-center items-center cursor-pointer"
onClick={() => {
setSendReminderPopout({
show: true,
data: { ...item },
});
}}
>{item.status_text}</p>
</div>
</div>
</div>
</li>
)
})}
</ul>
:
<p className="w-full flex items-center justify-center text-xl text-dark-gray dark:text-white">No List Found!</p>
}
{/* Delete Task Popout */}
{deleteTaskPopout.show && (
<DeleteTaskModal
details={deleteTaskPopout.data}
onClose={() => {
setDeleteTaskPopout({ show: false, data: {} });
}}
situation={deleteTaskPopout.show}
setReloadList={setReloadList}
/>
)}
{/* END of Delete Task Popout */}
{/* Send Reminder Popout */}
{sendReminderPopout.show && (
<SendReminderModal
details={sendReminderPopout.data}
onClose={() => {
setSendReminderPopout({ show: false, data: {} });
}}
situation={sendReminderPopout.show}
setReloadList={setReloadList}
/>
)}
{/* END of Send Reminder Popout */}
</div>
{/* PAGINATION BUTTON */}
<PaginatedList
onClick={handlePagination}
prev={currentPage == 0 ? true : false}
next={
currentPage + Number(process.env.REACT_APP_ITEM_PER_PAGE) >=
familySuggestList?.data?.length
? true
: false
}
data={familySuggestList?.data}
start={indexOfFirstItem}
stop={indexOfLastItem}
/>
{/* END OF PAGINATION BUTTON */}
</div>
);
}