import React, { useState } from "react"; import { useNavigate } from "react-router-dom"; import { handlePagingFunc } from "../Pagination/HandlePagination"; import PaginatedList from "../Pagination/PaginatedList"; import LoadingSpinner from "../Spinners/LoadingSpinner"; import familyImage from "../../assets/images/no-family-side.png"; import { formatDateString } from "../../lib"; import localImgLoad from "../../lib/localImgLoad"; /** * Renders a list of family members that can be managed. * It has its current maximum members at 8 and it comes with pagination and loading spinner functionality. * @returns {JSX.Element} - The rendered component. */ export default function FamilyTable({ className, familyList, loader, popUpHandler, imageServer, }) { const navigate = useNavigate(); const [currentPage, setCurrentPage] = useState(0); const itemsPerPage = Number(process.env.REACT_APP_ITEM_PER_PAGE); const indexOfFirstItem = Number(currentPage); const indexOfLastItem = Number(indexOfFirstItem) + Number(process.env.REACT_APP_ITEM_PER_PAGE); const currentFamilyList = familyList?.slice( indexOfFirstItem, indexOfLastItem ); const handleManageClick = (familyMember) => { navigate("/manage-family", { state: familyMember }); }; const handlePagination = (e) => { handlePagingFunc(e, setCurrentPage); }; /** * Renders a table row for a family member. * @returns {JSX.Element} - The table row component. */ const FamilyRow = ({ firstname, lastname, age, added, last_login, task_count, family_uid, banner, enable_traking, profile_picture, imageServer, username, }) => { // Check for valid dates const addedDate = added ? added.split(" ")[0] : "N/A"; const loginDate = last_login ? formatDateString(last_login) : "N/A"; const key = `family-${family_uid}`; // Assign a unique key const image = localStorage.getItem("session_token") ? `${imageServer}${localStorage.getItem( "session_token" )}/family/${family_uid}` : ""; const trackingStatus = enable_traking === "0" ? "Stopped" : enable_traking === "100" ? "Active" : ""; return (
{`Avatar

{`${firstname} ${lastname}`}{" "} {`[${username}]`}

Added: {addedDate} Last Login:{" "} {loginDate}
{trackingStatus}
{task_count}
); }; return (
{loader ? (
) : ( <> {familyList?.length > 0 ? ( {currentFamilyList?.map((familyMember, index) => { return ( ); })}
Name Tracking No of Tasks
) : (

Add your family, assign tasks, and get the whole team engaged.

Add Family
)} )}
{/* PAGINATION BUTTON */} = familyList?.length} data={familyList} start={indexOfFirstItem} stop={indexOfLastItem} /> {/* END OF PAGINATION BUTTON */}
); }