"use client"; import { TableCell, TableRow, Table, TableHeader, TableColumn, TableBody, Pagination, Dropdown, DropdownTrigger, DropdownMenu, DropdownItem, Input, User, Card, Divider, Chip, ChipProps, } from "@nextui-org/react"; import { Button } from "@nextui-org/button"; import React, { Key, useCallback, useEffect, useMemo, useState } from "react"; import { AddIcon, CreateIconIon, DeleteIcon, DotsYIcon, EyeFilledIcon, EyeIconMdi, } from "@/components/icons"; import Link from "next/link"; import { getAllUserLevels } from "@/services/user-levels/user-levels-service"; type UserObject = { id: number; name: string; levelNumber: string; aliasName: string; parentLevelId: string; provinceId: string; status: string; }; const statusColorMap = { active: "success", paused: "danger", vacation: "warning", }; export default function MasterUserLevelTable() { const [totalPage, setTotalPage] = useState(1); const [masterUserLevelTable, setmasterUserLevel] = useState([]); type TableRow = (typeof masterUserLevelTable)[0]; const columns = [ { name: "No", uid: "no" }, { name: "Name", uid: "name" }, { name: "User Name", uid: "alias_name" }, { name: "Level Number", uid: "level_number" }, { name: "Parent Level", uid: "parent_level_id" }, { name: "Province", uid: "province_id" }, { name: "Status", uid: "is_active" }, { name: "Action", uid: "actions" }, ]; const [page, setPage] = useState(1); useEffect(() => { fetchData(); }, []); async function fetchData() { const request = { page: page, limit: 10, }; const res = await getAllUserLevels(request); const data = res?.data?.data; setTotalPage(Math.ceil(res?.data?.total / 10)); initUserData(10, data); } function initUserData(limit: number, data?: any) { if (data) { console.log(data); const startIndex = limit * (page - 1); let iterate = 0; const newData = data.map((value: any) => { iterate++; value.no = startIndex + iterate; return value; }); console.log("Data ::", newData); setmasterUserLevel(newData); } } const renderCell = useCallback( (masterUserLevel: TableRow, columnKey: Key) => { const cellValue = masterUserLevel[columnKey as keyof UserObject]; const statusColorMap: Record = { active: "success", cancel: "danger", pending: "warning", }; switch (columnKey) { case "no": return
{masterUserLevel.id}
; case "name": return
{masterUserLevel.name}
; case "alias_Name": return
{masterUserLevel.aliasName}
; case "is_active": return (
{cellValue}
); case "actions": return (
Detail Edit Delete
); default: return cellValue; } }, [] ); return ( <>
{(column) => ( {column.name} )} {(item) => ( {(columnKey) => ( {renderCell(item, columnKey)} )} )}
setPage(page)} />
); }